👋

ソフトウェア設計をどうやって学ぶか

2021/06/13に公開

設計の勉強方法に正解はなさそう

僕は設計を学ぶ上で、勉強する方法を色々と調べてみましたが、おそらく正解はない。

自分が最終的に目指したいところ・どうなりたいのかは明確にする事で順序付けて勉強することは可能かもしれない。

自分が目指すべき状態になるために何が今足りていないのかを把握するところが一番最初にすることではないかなと思った。

プロと呼ばれる人たちは自分の頭で考えて試行錯誤した結果、自分なりの答えが出しているはずだ。

大切なのは勉強方法ではなく、試行錯誤をしてみる事で到達した自分の答えを持つ事かなと言うのが僕なりの現時点での考えだ。

結果的に同じ答えになるかもしれないし、別の答えが出るかもしれない。大切なのは自分なりの考察を持つこと

同じ事を何度も書いているのは自分自身が正解を求めていたからだ。

良い設計なんていうのは状況に応じて変わりそうなので、自分自身が柔軟に対応していけることが大切かなと思います。

1年後どうなりたいか(目標設定)

プロダクトに関われる人材になりたいとか色々考えていましたが、一旦そんな事は置いときます。

ソフトウェア開発者として仕事を任せてもらえるようになりたい
まかせるのは誰目線かというと自分をサポートしてくれる人たちから見てです。

今までは行き当たりばったりな実装をしていました。困った事にどうにかなってしまうので、自分がある程度出来る開発者だと勘違いしてました。

僕自身そんな無責任な人と仕事はしたくないし、そうなりたくない。

今の会社(ミライトデザイン)に入って、自身のスキルの低さを思い知らされる事が日々ありますが、そんな環境でも心が折れず何とか頑張っていられるのは仲間がサポートしてくれるからです。

今の自分に足りてないかなと思うもの(課題整理)

これはただのプランニングでこの通りにするかはわからない。
ただ無計画に色々勉強するよりかは、ある程度方針を決めることにした。

一度読んだ事ある本もあるけれど、根本的に勉強の仕方が良くなかったので全然覚えてないw
時間はかかるけど、1つ1つ噛み砕いて理解するまで丁寧にやっていこうと思う。

良いコードが何かを説明できない

設計の入り口に入る前に、実装レベルで良いものを知ることからはじめる。
日々自分が実装する時に何を意識しないといけないのかを学んでいく。

まずはリーダブルコードを読んでみてアウトプットしてみる。

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック

設計をするための原理原則を知らない

原理とは「物事を成り立たせる根本的な決まり」
原則とは「共通の決まり」

結果には原因があるように、良い設計と呼ばれるものは共通のルールがある。
それを知ろうと言う話。

知らない事を知らないから過ちに気づくことが出来ない。過ちに気づくにはルールを知るしかない。

世の中の大半の人はモノづくりにおいて、悪いものを作ろうと思って作っている訳ではないと思う。
してはいけない理由を知らないだけだと思います。

そんな考えに至ったわけで良い設計をするための原理原則を学んでいこうかなと思った。

原則を学ぶための参考書籍は次のものを使う。
これらを深堀りしてアウトプットしていこうと思う。
記事書いたらまたリンク貼っていく。

読むリスト

  • プリンシプル オブ プログラミング3年目までに身につけたい一生役立つ101の原理原則
  • 現場で役立つシステム設計の原則 ~変更を楽で安全にするオブジェクト指向の実践技法
  • アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技

読み終わったもの

実践 JUnit――達人プログラマーのユニットテスト技法(テストに関する知見)

Discussion