テックキャンプ卒の弱々エンジニア日記

エンジニアとして働く中での学びをちょっとでも記録していきます。

コーディングする前に考えるべきこと

先日、上司から「コーディングする前に何をどのくらい考えていますか?」と聞かれて エンジニア歴2年半のくせにタジタジしてしまったので改めてコーディングする前に何を考えるべきか 考え直してみたいと思います。

「その機能は本当に必要?」

真にプロとはどういうことだろうか......と考えてたところこんなツイートを見つけました。

私の考えるプロとはまさにこのツイートのような提案できるエンジニアであることです。

  • 本当にその機能がないと実現できないか
  • その機能がユーザ体験が向上するのか(既存実装と齟齬がないかなど)

ただ作るのではなく、本当にそれが必要であるかを自分なりに考えて もしもっと良い案があれば提案できるようになるべきと思います。

「その機能のエッジケースってなんだっけ?」

私が実際にしてしまったミスとして、実装を進めながら考えいると「あっ、このケースに対応しようとするとなると結構変えなきゃいけない!!」なんてことがたまにあります。 要件はあくまで要件であって、細かい仕様からはエンジニアでしっかり精査すべきです。

例えば、顧客選択のフォームが選ばれたら、その顧客に紐づく支社だけが選択できるようにしたいとします。

この場合考えたいのは、「もし支社から選択された場合は、顧客は自動入力されるべきか?」 「選択されている支社に対して紐づかない顧客が選ばれたら支社のフォームはどうしようか?」 などなどさまざまなパターンが考えられます。 実装する前にこうしたエッジケースは洗い出しておいた方が良さそうです。

(このときに状態と境界も意識できるといいかも)

「意識すべきことを減らす」

コードを書く前(書いている最中)に考えておきたいことは、 意識すべきことを減らすということです。

例えば、「Hello, World」と出力するプログラムに日本語対応をしてほしいという要望があります。 そうなると、ifで条件分岐が発生します。さらに中国語、スペイン語....と増えていけば意識すべきことが増えていきます。

状態の種類が増えると、 意識を向けなくてはいけないものが指数関数的に増えていきます。 それはまさにバグのもとです。

既存実装を見ながら、 今回の機能に必要最低限な状態だけを用意するようにして実装を進めていくべきです。

参考になった記事

この辺の記事がとても参考になりました tech.tabechoku.com