😸

実装が速い・遅いとは何か?

2024/06/22に公開

昔、新卒1年目の子が「〇〇さんの実装が速くて僕も速く実装できるようになりたいです。」と言っていたことがありました。
そこで「実装の速い・遅い」ってなんだ?と思ったので、私なりに言語化してみました。

コーディング速度の限界

人がキーボードを叩く速度には限界があります。さらに、現在ではGitHub Copilotのようなツールもあるため、コメントを書いてTabを連打するだけで動くコードが生成されます。

つまり、〇〇さんの実装が速いのはコーディング速度だけが要因ではないのです。
コーディング速度は一定の習熟度に達するとそれ以上速くなることはありません。
3ヶ月 ~ 1年くらい毎日コードを書き続ければ、不自由なくコードが書けるようになり、コーディング速度という点で経験年数の差は生まれにくいです。

コーディングは実装の1プロセス

では、実装のどの部分で差が生まれるのでしょうか。それは、実装前の準備、情報整理、調査、事前の設計、スケジューリング(見積もり)の部分です。
〇〇さんがキーボードに手を伸ばして1時間後にプルリクエストを出しているからといって、「実装時間が1時間」というわけではありません。キーボードに手を伸ばす前のプロセスやコミュニケーション、メモ、リサーチに時間をかけているのです。

コーディングは清書のようなもの

コーディングは、準備してきたことの清書に近い作業です。
私の場合、コーディングの時が一番頭を使っていない気がします。

すぐにコードを書き始めるタイプの人は、書き始めてからが長く、書いたコードを何度も修正したり試行錯誤したりすることが多いです。さらに、書いている途中に試行錯誤して使われないコードを量産することもあります。プログラムが一筆書きのようになり、メソッドの責務の境界が曖昧で、プロセス化されていないことも多いです。「たぶんこういうことが想定されるので〜」といった想像で実装することもあります。

実装を速くするコツ

実装を速くするコツは、コーディング前後の作業や段取りの解像度を上げることです。

あと、そもそも論ではありますが、
実装が速い・遅いというのは本質的ではありません。速度だけを考えるのは少しズレているかもしれません。基本の質を上げることで、結果として実装の速度も速くなるのです。

経験から学んだこと

私もジュニア時代は、実装前後のプロセスを気にせずに「秒速でキーボードに手を伸ばす」エンジニアでした。たくさんの失敗や無駄な遠回り、不必要に長引くレビューを経験しました。この文章も半分は自戒の念を込めて書いています。

一発で答えを出そうとしない

ちなみに、ここでいう「実装が速い人」の書くコードが決して無駄なく一発で正解を叩き出しているわけではありません。動かしてみないとわからないことも多くあります。実装は、設計したものが要件をちゃんと満たせているのかを検証するためのプロセスとも言えると思います。
何かが欠けている場合は、それを調査し、再度コードを書く。
このように、実装は検証のためのプロセスであり、一発で答えを出そうとしないことも大切です。
だからと言って、「これが正解かわからないからとりあえずコード書こう!」とすぐに思いつきでコードを書き始めるのも悪手です。バランスが難しいですね。

Discussion