こんにちは、しょごです。
ふと振り返ってみると、バックエンドエンジニア業を始めてもうすぐ10年が経とうとしています。
思えば高校時代にバンド活動にハマり、大学でネットゲームに現を抜かしていて。こいつぁやばいと思い、1.5年多く行ってしまった大学を卒業後、急いでハローワークに走った日々を思い出すと、なんでちゃんとやっておかなかったんだろう、とうなだれてしまいます。
そんな中、どんな風に開発してるの?と聞かれたことがありましたので、今回は新人エンジニアに向けてエンジニアとしての成長するためのメソッドをまとめてみました。
エンジニアとして成長するための6つメソッド
1. 開発は設計を実装以上にしっかり行う
めっちゃ基本中の基本です。
最初に、完成させたい最終目標に向けて、開発に必要な機能・仕様をまとめます。時にはそれらの設計図として、基本仕様書、詳細設計書、画面設計書、DB設計書などをまとめたり、作成環境によってはサーバ設計書、ドメイン設計書etcとあれこれ用意するときもあるかもしれませんね。
要はこれから作るものをどのように組み上げるかをまとめるお仕事ですね。
ココが一番大事な部分! ココをしっかりやらないと色々ボロが出ることになります。
というか、設計が開発の半分以上を占めていると言っても過言ではないのではないでしょうか。ぶっちゃけた話、実際にコード書くことは人に任せてもいいレベルです。
昔の「プログラマー」と呼ばれた人は流れ図作って設計して、コードを紙に書いてたんですよ。それを「キーパンチャー」って人に渡して叩いてもらうっていう。
2. 動きを細かくイメージする
設計する上で必要なのは仕様をまとめあげ、それを実現するためのアルゴリズムを考えることですね。行動と動作によって現象が発生し、そこから得られる結果までをひとつの流れとして捉える力が必要になります。
たとえば自動販売機でジュースを買う、という流れを考えてみましょう。
- お金を入れる。
- 入れられたお金がいくらか判別し、カウントする。
うまく読み込めなかった場合は返却して再度投入を促す。 - 入れられたお金がジュースの金額に達したかチェックする。
- 購入可能金額に達していた商品に、購入可能フラグを付与する。
- 購入可能フラグが付与された商品を選択した場合、商品を排出し、同時に在庫チェックを行う。
- 排出後、投入金額の差で余りが生じた場合、おつりとして排出する。
とか、そんなんでしょうか。
動きにすると数秒で結果までたどり着くものですが、実際に流れを見てみると意外と工程があるものです。
ただこちらはあくまでも、正常動作の一部でしかありません。他にも、想定できる不備の洗い出しとそのチェック機能や、想定できない操作が行われた場合のエラー処理などを考慮することで、より強固なシステムを構築する必要があります。
また、ちょっとしたロジックを作るうえでも、スタートとゴールまでをイメージしてから実装するのとしないのとでは、構築するまでにかかる時間が違います。実装時に悩む時間が発生して手が止まる、っていうことを少なくできますからね。
3. お客様の隠れた要望・悩みを考慮する
そもそも新しくモノを作る・作り直す場合、現時点で不満がある、改善したいことがあることが大前提です。
それをヒアリングして考察し、機能や仕様によってお客様の抱える問題を解決することも大事だと思います。そのため、ウチがシステム開発するときに「こんな機能が欲しい」という要望をいただいた際、
- 今までどうだったのか
- 不満や悩みはないのか
- どうしたいのか
- よりお客様がラクな方法はないか
- どういったことをお客様が望んでいないか
などを考えて、ディレクターとミーティングを重ねたり、時には直接お客様とお話しています。
せっかく作るからには、使っていただいた際に「これはよくなった」「これは助かる」といったご意見をいただきたいですからね。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。