以前ちょっとお高いプライベート・ジムでトレーニングしていたことがあるのですが、筋力トレーニングって「あ、もうだめかも」というところからが勝負で、そこから歯をくいしばってどのぐらい行けるかが、効率よく筋力アップするコツだということを教わりました。
そういった意味では、プログラミング能力に関しても同じことが言えるのかも知れない、と最近思ったのです。
自分が最高だと思ったコードしかコミットしない
過去を振り返って、今いる会社ソニックガーデンに入社したとき、CTOであるmat_akiから、「自分が最高だと思ったコードしかコミットしないで下さいね」などと言われた記憶があります。
「えー、素早く確認してもらいたいときにそんなことこだわっていたら、スピード落ちない?」
みたいなことを言った記憶もあるのですが、
「いいえ。コードのクオリティは落とさないんです。クオリティは落とさずにスピードを上げるんです」
などと言われて「お、おう」と返事を返した覚えがあります。
そもそも自分が最高だと思うコードとは何か?
そもそも自分が最高だと思うコードとは何かを考えようとすると、自分の書いたコードを振り返って、「これが今書ける最高のコードか?」と自問自答することになります。
これを続けると、筋力トレーニングで言う「あ、もうだめかも」と同じように、「もうこれ以上ないでしょー」という考えに至ります。
でも、ここからがスタートなんですよね。
「いや、もっといけるんじゃない?」と思うことが重要で、ここがプログラミング能力の伸びしろなのかな、と思います。
「もっといける」と思わないことには、能力が向上しないんですよね。
そういった意味では、「あ、もうだめかも」というところから、歯をくいしばってどれだけ良いコードをひねり出せるか、これがプログラミング能力を向上させるコツなのでは、と思いました。
もちろん、良いコードをひねり出すためには様々なプログラミングパラダイム、設計手法に通じていることも重要なので、そういったインプットの質も高める必要があります。それと同時に「あと一歩歯をくいしばって上に行く」アウトプットの質を高めることで、もっと上手くプログラミングができるようになるのではないか&できるようになりたいなーと、やたら筋トレで追い込まれたことを思い出しながら、思うのでした。