現役エンジニアが、現場で駆け出しエンジニアを育ててみて思うところあり④
こんにちは、引きこもりのHisashiです。
前回、「現役エンジニアが、現場で駆け出しエンジニアを育ててみて思うところあり③」で、#非エンジニアと要件定義からリリースまでやってしまおうの、設計フェーズのお話をしました。
今回は、実装フェーズのお話をしたいと思います。
プログラミングスクールのプログラミングと、現場のプログラミングとの違いを、どのように理解してもらうか?
実装フェーズに入ったときは、どちらかというとハンズオン的なトレーニングを重視しつつも、想定されるケースをシミュレーションしながら進めました。
例えば、
・この実装は今はこれでいいけど、○○のような要求が顧客からあった場合、どのように修正するのか?
・Modelにゴリゴリロジック書いてあるけど、○○機能が拡張された場合、影響範囲はどうなるか?
・DIを使っていないケースと使っているケースで、どのように拡張性が変わるのか?
…といった感じで、現場さながらの環境(特にソースレビュー)で鍛えることにしたのです。
プログラミングスクールや独学では、
① 教科書やメンターの言ったとおりに実装する
② 完成!わーい(ここで終了)
で終始していましたし、彼もその傾向がありました。
ところが、現場のエンジニアはかなり厳しい環境で仕事している人が多いと思います。
従って、彼がいつ外部のプロジェクトに参加しても最低限の仕事ができるように、あえてレビューや要求レベルを厳しくしたのです。
成功した点
プログラミングをする上で大事なお作法(マインド?)が身についた、のが大きかったです。
駆け出しエンジニアレベルは、ソースコードの読み書きレベルでも一苦労ですが、それでもあえてリーダブルコードレベルのソースの書き方を要求しました。
◆リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック(Amazon)
https://amzn.to/3bcO61r
特に、
・変数名、関数、クラス名、名前空間の命名規則
・読みやすいコードと読みにくいコードの違い
を徐々に理解してもらい、実際のプログラミングに活かしてもらえたのはよかったと思っています。
失敗した点
設計フェーズから随所にみられていたのですが、「経営陣の要求に関して彼自身の技術向上スピードが追い付かない」といった問題が徐々に顕在化しました。
特に、SQLとModelとの関係性への理解や、フロントエンドの技術(Janascript / jQuery)が、要求レベルと大きな差があることがわかりました。
本来であれば、SIer企業の研修のように、じっくりと課題をやらせて成果物をチェックすべきだったのですが、プロジェクトにコミットを優先しすぎてしまい、基礎教育がおろそかになってしまったのが痛い反省点です。
基礎教育とプロジェクト内教育を並行で進める方がよい?!
ただし、彼自身実装フェーズは比較的楽しんでやっていたところもありました。今以上により基本的な技術力を身に着ければ、彼自身の仕事の選択肢も広がるのではないかな?と思ったりしました。
そのためにも、基礎教育をじっくり行う必要がありますが、
・企業内で研修体制が取れない
・そもそも、アサインしているエンジニアにそんな時間がない
といった根本的な問題があると思います。
今後は、基礎教育とプロジェクト内の教育をどうバランスをとっていくか?が、経営陣や彼にとって大きな課題になりそうです。
次回は、試験フェーズについて振り返ってみようと思います。
この記事が気に入ったらサポートをしてみませんか?