新人エンジニアが生き残る術
「新入社員が開発現場に出て最初の3か月間に立ち向かわなければならない問題」
https://menta.work/post/detail/14347/49DgYeyRhaw6WeBDqJgF
の続きをお話させていただきたいと思います。
プログラマーはいきなり手を動かしてはいけない
こちらは自走力がある人が陥りがちかと思いますが
プログラマーは仕様を完全に理解して、
成果物のアプリケーションが頭の中で完全にイメージできるまで
コードを書いてはいけません。
目的の成果物まで最短でたどり着けなければなりません。
このフェーズを疎かにするとリカバリが物凄く大変です。
自分が実装したコードは、他の実装者からコールされたりします。
関係者を巻き込み、開発チームの負担を増大させることになります。
下記の3つのポイントを意識してください。
要件の全体を俯瞰する視点を意識し、仕様上の矛盾点に気付く。
専門用語などの理解が不足している箇所・理解したつもりになっていた箇所を確認する。
ある部分の処理の実装方法がわからない。
上記の3点を速やかにクリアにする必要があります。
「ある機能の仕様が確定するのが随分先になります。」
と言われることがあります。
しかし、その機能の呼び出し先である周辺の実装は行っていく必要があったとします。
数十人、数百人体制のプロジェクトでは日常的に発生する問題です。
答えはクラスモジュールの抽象化ですが、外観だけを定義し内部の実装を先送りにする
初学者にとっては少しトリッキーとも言えるプログラミング手法があります。
詳しくは、「着任後も学習しなければならないことは何か?」で申し上げたいと思います。
実現方法がわからない仕様に関しては、
「私が担当している○○機能と同じような実装はありますか?」
と開発チームリーダーから聞き出して、参考になるソースコードを入手しましょう。
基本的に新人には「類推が効く」仕事を振っているので、落ち着いて対処しましよう。
入社前に行っていた学習や、入社後の研修時の学習範囲外の問題にどの程度ぶち当たるのか?
下記の3つのポイントに絞って解説させていただきます。
コーディング規約等の様々なルールを守る必要がある。
開発ツール「GIT」「Redmie」「CI」を学ぶ必要がある。
巨大プログラムに対峙した際に、うまく扱えない。
「開発ツール」は新人研修時にも指導いただける可能性が高いですが
いざ現場に入って実務行ってみると、理解の浅さが露頭する事も
あるかと思います。
個人開発では馴染のない事柄かもしれません。
チーム開発ではプロジェクトを円滑に進めるうえで必須事項となります。
先んじて予習しておけば同期を抜き出せるかもしれません。
「規約」に関してですが、コーディング規約1つとっても
そのルールは数百から数千存在する場合があり、1つでも
ルールを守っていないプログラムが存在すると納品物として
認めてもらえないこともあります。
一部ですがコーディング規約の例を提示します。
・100行以上のプログラムコードを書いてはいけない。
・関数の引数が7つ以上存在してはいけない。
・変数名・関数名はネーミングルールが存在する。
・同じ処理が複数個所に存在してはいけない。
・深いネスト構造を持ってはいけない。
・テスト時に、必ずすべての処理を通っていることを確認する必要がある。
コーディング規約が守られているかどうかチェックされる
「コードメトリクス」「コード静的チェック」「カバレッジ計測」によって
コーディング規約が守られているかどうかチェック
されますので、気を引き締めて業務を遂行してください。
巨大プログラムに対峙の仕方ですが
新人の頃は、長い長いプログラムを作成してしまい
頭のワーキングメモリーを使い切ってしまい
「自分には向いていないんだ」
「私は頭が悪いんだ」
と思ってしまう、新人を何人も見てきました。
プログラムコードは可能な限り小さく小さく作っていくことが大事です。
処理を完結に表現できるように、入力(引数)と出力(戻り値)を決めて
関数として抽出しましょう。
プログラムコードを人が読みやすくする手法は山ほどありますが
代表的なパターンを紹介します。
長くなってしまったので、続きは次回とさせていただきます。
最後までご高覧いただきまして有難うございました。
関連記事
プログラミングでもっとも大事な事
https://menta.work/post/detail/14347/9BSOoOhvVU3D3IwUNjGF
オブジェクト指向プログラミングのメリット・デメリット
https://menta.work/post/detail/14347/slgw1gZRzsEYS7sllBgO
新入社員が開発現場に出て最初の3か月間に立ち向かわなければならない問題
https://menta.work/post/detail/14347/49DgYeyRhaw6WeBDqJgF