設計初心者が頑張って デザインパターン勉強した話

607 Views

March 31, 22

スライド概要

設計ができない!と嘆く未経験入社ソフトウェアエンジニアが、オブジェクト指向設計の考え方を身に付けるためにチームの先輩方の力を借りながらGoFのデザインパターン23パターンを勉強した話です。

profile-image

嘆きの未経験入社エンジニア

関連スライド

各ページのテキスト
1.

発信活動の初心者や設計の初心者が 頑張って壁を乗り越えたLT大会 設計初心者が頑張って デザインパターン勉強した話 きゃべ(kamikawa_m) 2022.3.30 1/ 12

2.

アジェンダ 1.エンジニア歴半年、設計ができない 2.デザインパターン勉強してみた 3.うまくいかない……のでやり方変えてみた 4.エンジニア歴9か月、転機は訪れる 5.まとめ 2/ 12

3.

エンジニア歴半年、設計ができない ⚫ 入社後、新人研修を終えて業務配属、半年近く経過 ⚫ プログラミング未経験の状態からC#・WPFを学習し、基礎的 なコードの読み書きはできるようになってきた。 しかし… ⚫ 業務で開発を行うには実装力が依然不足している。 ⚫ 設計の経験がなく、設計力がまったく足りていない。 ⚫ 現状では設計業務は担当できず、もちろん設計の議論にもつ いていけない。 一日でも早く活躍できるようになりたい! バリバリ設計できるようになりたい! 3/ 12

4.

デザインパターンとの出会い 「GoFのデザインパターンについてクラス図とコードを作成し ながら学習し、オブジェクト指向設計の知識・技術を獲得 する!」 ⚫ 1つのパターンについて、以下の方法で学習する。 設計 題材とするパターンに沿った設計を考えてクラス図に 起こす。 実装 クラス図を元に、実際に動くプログラムを作成する。 レビュー 作成したクラス図とプログラムをレビューしていただく。 23パターン分繰り返して経験を積む 4/ 12

5.

デザインパターン勉強してみた ⚫ GoFのデザインパターン23パターンすべてについて、クラス図と サンプルコードを作成 ↑実際に作成したInterpreterパターンのクラス図(左)と実装したアプリケーション(右) ⚫ 参考書籍のサンプルコードの変数名を変えただけの設計にせず、自分で 設計を考える ⚫ 2日に1回のペースでチームの先輩にレビューをお願いする。 →しかし、ここで新たな課題が発覚 5/ 12

6.

うまくいかない! ■理想的な進め方 ⚫ 参考書籍のサンプルコードの変数名を変えただけの設計にせず、 自分でサンプルの題材や設計を考える ⚫ 2日に1回のペースでチームの先輩にレビューをお願いする。 ■実際 ⚫ 自己学習だけではパターンの理解が進まず、自分で設計を考 えることも、それを実装することも難しい。 ⚫ 上記のことから、学習・設計・実装にそれぞれ時間がかかるため、 2日に1回のレビューの頻度を維持できない。 設計・実装力をつけたいのに、 設計・実装力がないせいで進まない 6/ 12

7.

やり方変えてみた ■対策① 設計・実装について、チームの先輩にペアプロをお願い した。 ・ 自力でできない設計・実装について、アドバイス・サポートをいた だきながら進めることで学習効率をアップ ・ WPFを使って実装する場合はMVVMで作るなど、仕事で使う 設計の考え方も交えて学習 ・ 「WPFの依存関係プロパティを使ってみる」など、C#やWPFで 書いたことのなかった技術要素を取り入れながら実装することで、 設計の学習と同時に実装スキルの向上も図る 7ヶ月間で166hの学習、7052行を実装 7/ 12

8.

やり方変えてみた ■対策② レビューを設計完了時・実装完了時の2回実施に変更 →設計(クラス図作成)完了時点で成果物や設計の理由を確認 していただくことで、方向性の誤り・理解不足の検出や軌道修正 を早い段階で行えるようになった。 →レビューの回数が増えたことで、対策①のペアプロによる効率アッ プも含めて2日に1回のレビュー頻度を維持できるようになった。 設計 レビュー 実装 レビュー 合計34回のレビューを実施 8/ 12

9.

集大成としてのアウトプット ⚫ デザインパターン学習で自分が間違えていた点、理解度に不安がある点、 追加で学習した点などについてまとめ、社内で技術記事として投稿した。 →「悪戦苦闘!デザインパターン」と題して5本の技術記事を執筆、投稿。 記事を書いたことで理解があいまいだった点を解消、より理解が深まった! ⚫ 学習した内容をもとに、社内・社外のLT大会で発表を行った。 →9/30のエンジニアたちの「〇〇完全に理解した」Talk #21に登壇。 発表時のタイトルは『デザインパターン学習で得た知見』。 発表後のフィードバックで、デザインパターンを全部学習したことを驚かれ、 「すごい!」と褒めていただいた! 設計 レビュー 実装 レビュー アウト プット アウトプットしたことで頑張ってよかった!と思えました 9/ 12

10.

エンジニア歴9ヶ月、転機は訪れる 今までは… ・設計の議論には全くついていけず、質問もできなかった。 ・会議中は黙って聞いていることしかできなかった。 「聞いていても何もわからない、自分は会議に参加している 意味がない。」と、非常に悔しい時期が続いた デザインパターン学習後のある日… ・ある日の議論中、設計に気になる点を見つけ、手を挙げた。 ・「的外れだったらどうしよう」と思いつつも発言してみたところ、 「確かに問題があるね」となり、自分の指摘が正しかったことがわかった。 チームメンバーの中で誰より早く指摘したことも褒められた! 「まだまだ頑張っていけるかも!!」と思えた 10/ 12

11.

結果 課題 Before After ①設計の 経験を積む 設計の経験がない。 23パターン分の 設計の経験を積んだ! ②実装力を 向上する 時間をかけても設計を コードに落とせない。 説明もできない。 自力で実装し、レビュー で考えを説明できること が増えた! 発言できない。 そもそも、議論に ついていけない。 設計の議論中に設計の 問題点に誰より早く 気づいて発言できた! ③設計の議論が できるようになる 学習を通して大きく成長できた 11/ 12

12.

まとめ ⚫ 課題に対するアクションは、同じチームの先輩方からご提案いた だいたり、機会をいただいたりしたものが大半である。多大なご 協力をいただいたおかげで学習をしっかり進めることができた。 ⚫ 設計については何にもわからない、実装も経験が少ないところ から学習を進め、集大成として社内・社外発表まで行えたこと はエンジニアとして頑張っていくうえでの自信につながった。 ⚫ 設計力・実装力ともにまだまだ不足を感じるが、学習したこと を活かしながら、経験を積んで活躍できるように今後も頑張っ ていきたい。 学習を通して得た設計の知識や考え方を 活かせるように、これからも頑張っていきます! 12/ 12