こんにちは、あだちマン(@h2tomohiroo)です。
未経験からエンジニアを目指す人にとって、実際の現場のエンジニアの仕事の進め方について紹介します。
担当案件が割り振られる
まずは担当案件が割り振られます。
多くの場合は、ディレクターとなる方から、非常にざっくりとした仕様や実現したい機能の内容が伝えられます。
この時点では、「割とすぐにできそうかな?」「あ〜なんか大変そうな案件だな..」といった感じの印象を持つ感じです。
割り振られた時と、実際にコードを見ながら実装はじめたときギャップがかなりあるので注意が必要です。
詳細な仕様を決定
案件が割り振られたら、ざっくりと伝えられたやりたいことや機能の仕様の詳細を考えます。
具体的に期待する挙動など文字に書き起こしたり、場合によっては写真などを使って画面のUIを資料に落として決定します。
ここの仕様の詳細を決定していないと、後から 「あれ、そんな機能は依頼していないのだけど、、、」 「ここはこうして欲しかった...」 ということが起こってしまうので、最初の段階で正確に決めておきましょう。
ソースコードを確認して現状を把握する
仕様が決まったら、現状のソースコードを確認し、どこをコードをどうやって改修するかを調査します。 (場合によっては、仕様を決定する前にソースコードを確認しながら仕様を決定していきます。)
スクールでプログラミングを学んでいる時と違うのは、0からコードを書き足すのではなく、既に動いているソースコードをいじって改修することが多くなることです。
コードを改修することで、他の機能への影響を考える必要があり、かなり気を使って開発をする必要があります。
このソースコードを確認する作業に実際、かなりの時間がかかるケースが多くあります。
ここのソースコードの確認によって、その後の改修の方針が変わってくるので、ここのソースコードの確認は非常に重要です。
実現するためにはどんな実装が必要か検討する
現状のソースコードを正しく把握したら、どんな実装をしたら、期待する実装になるかを考えます。
自分の場合は、機能や実装する内容に分解して、実装する作業を整理してから実装していました。
実装する
実装の方針の大枠を決定したら、いよいよコードを書いていきます。 コードを書く中で、もちろん分からないことが多々出てくるので、とりあえずググりまくります。 ある程度ググってもわからない場合も多いので、そんな時は先輩エンジニアに直接質問したり、Slackで質問したりします。 実際にコードを書き始めると、最初は想定しなかったようなことが判明したり、コードの書き方がわからなかったりしますが、 周りの人の力を借りながら進めましょう。
テスト環境に反映して挙動を確認
実装が完了たら、期待する挙動になるかをテスト環境で試します。
テスト環境に反映させて、自分の目で挙動に問題がないか確認します。
ソースコードレビュー
ここまできたら、Githubにコードをあげて、先輩エンジニアの方にコードチェックをしてもらいましょう。
より綺麗な書き方や、自分では気付かないような視点でフィードバックをもらえるので、とても勉強になります。
人によってフィードバックが色々と異なるのも、勉強のうちになります。
テスト
ソースコードレビューが終わったら、テスターという、プロのテスト確認の方に、バグがないか入念にチェックしていただきます。
エンジニアだけでは見落としがちな点まで、実際のPCやスマホを使って挙動を確認してもらいます。
バグが0ということは、なかなかないので、テストしてもらった後は、軽微なバグから重度なバグまで、修正することになります。
リリース
テスターの方のチェックが完了したら、いよいよリリースです。
リリース日はある程度、曜日などで固定されている場合が多く、自分の会社では特定の曜日の決まった時間にリリースを実施していました。
リリース後の本番環境での確認
リリース後も油断はできません。
テスト環境で確認したとはいえ、本番にリリースしたら、本番だけでは上手く挙動しない場合もありえます。
本番にリリース後にも再度挙動のチェックを行って問題ないか、を開発者もテスターの方も双方で確認していきます。
一つの案件・プロジェクトをリリースするのに、数週間〜数ヶ月かかる
これまで紹介したように、一つ機能をリリースするのにも長い工程を踏む必要があります。
案件によっては数ヶ月以上の案件も決して珍しくありません。
全体の流れを把握して、リリース日までに開発を完了させるには、スケジュールのコントロールがかなり大事です。
最初は、開発だけで手一杯になってしまうので、あまり1人で悩まずに周りの人に手助けしてもらいながら開発を進めることをお勧めします。