#はじめに
まず今回この記事を書こうと思った背景について書こうと思います。
自分は現在、エンジニア4年目でスタートアップでPHP(Symfony)を使って自社プロダクト(SaaS)を開発してます。
とは言え新卒からずっとWebの開発をしていた訳ではなくずっと組み込みやAndroidアプリ開発をやってたので、業務で扱うようになったのは今年の7月からです。
7月から3ヶ月、業務でPHPを使ってそこから今の会社に転職してるのでWebの開発経験は3ヶ月半といったところでしょうか。
もともと仕事で扱う前、今年の2月くらいから6月くらいまでは個人でWebの開発をしたり勉強したりしてましたが、業務で扱う開発に役立つのかな?と最近思うようになってこれから未経験からエンジニアになりたいって人や経験が浅いエンジニア向けにこの記事を書こうと思いました。
#個人的に業務でエンジニアが使えるTips・ノウハウ
###まずは、要件(実現したいこと)を把握する
これはノウハウというより前提です!
基本、業務始まっていきなり全部の機能理解しろってことは無いです!
というか無理です!
なのでまずは要件をヒアリングして何をしたいのか開発する前に必ず理解しましょう!
期待動作が分からないのに実装も何もないです。
ここをいい加減にすると全てが崩壊するのでリーダーやマネージャーの時間を確保してちゃんと分かるまで付き合ってもらいましょう。(経験が浅い状態でここが曖昧だと後々思考停止するのできちんとポイントを抑えておきましょう!)
###タスクを細分化する
もし複数機能を同時に依頼された場合、機能単位でタスク分けします。
タスク分けの仕方は人それぞれあると思いますが自分はTrelloなどのツールを使ってチケットを切って管理してます。
この時、そのタスク開始時間と終わった時の終了時間を書くようにすると今後慣れてくると自分の中で作業見積もりがしやすくなっていくのでオススメです!!
###要件実現に関係するコードを読もう
例えば自分の場合、今だとMVCの概念を取り入れたFW(Symfony)を業務で扱ってるので、画面表示でこういう表示を追加したいとかだったらテンプレートとしてtwigを使うので、まず修正対象の画面を描画してるtwigを特定しましょう。その後、その画面の遷移元(ボタン押下するとその画面に遷移する部分)をデベロッパーツールで見てルーティング情報を確認します。(Symfonyならrouting.ymlなど)
そこからどのコントローラーを使用しているかを特定します。
データの中身を見たい時やどの条件文が動いてるかをログを貼りまくって確認します。
自分はPHPなのでvar_dump()やechoをたくさん駆使します。
PHPの場合はコンパイルがないので修正してすぐ画面上で確認できます。
割とここまで理解できれば画面表示系の修正はおおよそこなせるんじゃないかと思います。
機能を理解する上でもっとも早いのはソースコードを読むことだと個人的には考えてるので。。。
###作業中、進める上で不安なことなどが発生した場合、自己解決が難しい場合チャットツールなどで聞いておく
正直、直接聞くのはハードルが高いです。
なのでチャットとかで聞けるならチャットツールを駆使しましょう!!(多分だいたいどこのプロジェクトにもあるはず・・・)
分からないことは業務に携わったばかりなら当然ありますし相手もそれは分かってるはずです。
とは言え質問の仕方や頻度には気をつけましょう。
ここの調整は人によって異なると思うので、さじ加減で調整しましょう!
###作業を進めていく中でメモを取っておく
これかなり大事だと思ってます!
人間、頭の中だけで覚えていられることには限界があります。
なので思い出すための引き出しとして開発用のメモを残しておくといいと思います。
この機能はどこのソースコードが関係しているとかどの操作でこの画面にたどり着けるなどその機能を実現する為に必要な情報ですね。。。
#まとめ
業務で扱う開発で求められるスキルを実際に業務として仕事してる身から簡単に書かせていただきました!
まずはシステムを理解することがエンジニアとして業務をこなす上で必須になってきます。
そのシステムを理解する方法として前提として変数や配列の扱いなど最低限の知識はもちろんそうですが、ソースコードを読めるようになるのは必須です。
最低限の知識があれば、後はログを貼って根気よく追っていけば中身は少しずつ理解できるようになってくるはずです!!
厳密にはもっと色々ありますがこの5つのポイントが抑えられていたら多分業務をこなしていくことはできると思います!(自分がそうなので。。。)
参考になれば幸いです!
Twitterの方でも情報発信してるのでもしよかったらこちらもよろしくお願いします!
https://twitter.com/cube_3110
※他にもこういうTipsやノウハウあるよ〜という強い方いましたらコメント欄にぜひ書いていただけると幸いです!!!