技術学習と語学学習の共通点
みなさんこんにちは、aki-kawa(@gukellsikakatan)です。
普段はSES企業で働いているエンジニア3年目です。
技術の勉強と語学(英語)の勉強を趣味としていて、濃い勉強をするためには共通点があるなと感じたので、発信しようと思います。
細かいところまで突き詰めて理解する
よく言われていることではあるかもしれませんが、正直これに限るかなと思います。
新しいことを勉強すると、必ずわからないことがたくさん出てきます。
英語の勉強をしていたら、わからない単語が出てきて、それを英語の辞書で調べると、さらにわからない単語が出てきて、またそれを調べて、、、を繰り返します。
技術の勉強も同じです。
エンジニア1、2年目の頃、私はとことんこだわりました。
わからない言葉が出てきたらそれをベースにとことん調べました。
例えば、
DDDってなんだろう?ってなった時に
ググったら以下が出てきます。
DDD は Domain-Driven Design (ドメイン駆動設計) の略で、ソフトウェア開発における設計手法の一つです。業務知識を基盤に、ソフトウェアを設計し、ビジネス要件を直接コードに反映させることで、ソフトウェアの価値を高めることを目指します。
じゃあ次、ドメイン駆動設計ってなんだろうと調べます。すると以下がでます。
ソフトウェア開発において、業務知識(ドメイン知識)をソフトウェア設計の中心に据え、ドメインモデルを構築し、ビジネス価値を最大化することを目指す設計手法です。つまり、ソフトウェアが扱う業務領域(ドメイン)の知識を深く理解し、それをコードに忠実に反映させることで、ビジネスニーズに最適なシステムを構築することを目的とします.
次に、ドメインがよくわからないので、ドメインを調べます。
ソフトウェアが解決しようとしている、ユーザーの知識や影響力、活動の領域のことを指します。 例えばオンラインショッピングシステムの場合、商品管理や顧客注文処理などがドメインに当たります。 ソフトウェアが扱う特定の問題や関連する業務の領域と言い換えても良いでしょう
ドメイン駆動設計はについてはかなり難しいため、なかなか概念が理解できませんでした。
そこで使用するのは本です。
「現場で役立つシステム設計の原則 ~変更を楽で安全にするオブジェクト指向の実践技法」
https://amzn.to/4lUvcie
こちらの本を読むとかなり理解力が上がりました。
ドメイン設計とデータ中心設計の何が違うのかを本質的かつ実践的に理解できる本でした。
さらに、この本の中でわからないところがあればCHAT-GPTを使って検索をします。
これを繰り返すと、細かいところまで突き詰めて理解するができるようになります。
さらにこの勉強方法のすごいところは、複利的に知識が広がっていくところです。
DDDについて理解しようとすれば、必然的に他のアーキテクチャの言葉が出てきます。
データ中心設計との違いを理解するためには、データ中心設計についても理解しなければいけません。
そして、私が働くSES企業の案件の多くはこの「データ中心設計」でシステムが構築されています。
現場の知識とデータ中心設計の知識、さらにDDDの知識が繋がる瞬間でもあります。
このように習得した知識が無限に広がっていくのです。
最初はかなり大変な作業です。なんせ、ところん細部までこだわって、わからない単語をなくしていくのですから、かなり根気はいります。
でも、1年、2年と継続していけば、これはかなりの力を発揮するものだと思います。
これはどの学習においても同じかなと思っています。
皆さんもぜひ、とことんまでこだわる学習をして、技術力を高めていきましょう。