クソコードを書く

プログラミングの学習

IT業界に入り、システム開発を生業とし、技術力を向上するために学習をする。
自分にとってプログラミングは技術の学習の中でも、力を入れて行ってきたものの一つだ。
アルゴリズムオブジェクト指向テスト駆動開発の学習も自分の書くプログラムをシンプルで、構造的で、柔軟なものにするためのものだ。

学習の中で、こんなコードは筋が悪い糞コードで、こんなコードは美しいコードだという基準が生まれる。おそらく、プログラミングを自分なりに学習してきたエンジニアであれば皆持っているものだろう。
そのプログラムに対する基準はとても素敵なもので、自分のエンジニアとしてのプライドであり、自信であり、実績である。
しかしそれが、思いついたものを思いついたままに書くという行為を妨げるものになっていないだろうか。

クソコードを書く

もちろん、業務の成果物としては出来る限りクソコードは書かないほうが良い。
1ヶ月後の自分に迷惑がかかるし、周りのメンバーにも影響するかもしれない。

プライベートな時間を使って何かを作る時、使い捨ての軽く動かしてみるコードを書く時、美しいコードはこうあるべきという基準が手を止める。 クソコードを書く前に、もっと良い実装があるはずと頭の中の引き出しを開け、時間をかけて構成を考える。

もちろん、自分が未熟だから、美しくない実装を思いついてしまうのかもしれない。
だからといって、思いついたコードを書くこともせずに、頭を悩ませるのはもったいない。

クソコードを書くべきだ。

ハッカーと画家」という有名なエッセイ集の一説には以下のようにある。

例えば、大学で私は、コンピュータに手を触れる前に 紙の上でプログラムを完全に理解しなければならないと教わった。 でも私はそういうふうにはプログラムできなかった。 私が好んだやりかたは、紙の前ではなく、コンピュータの前に座って プログラミングすることだった。もっと悪いことに、 辛抱強く全てのプログラムを書き上げて正しいことを確認するなんてことは せずに、私はめちゃくちゃなコードをおっぴろげて、 それを次第に形にしてゆくのだった。 私が教わったのは、デバッグとは書き間違いや見逃しをつかまえる 最終段階の工程だということだったが、 実際に私がやっていたのは、プログラミングそのものがデバッグという具合だった。

随分長い間、私はそのことを後ろめたく思っていたものだ。 ちょうど、小学校で教わった鉛筆の持ち方と違う持ち方をしていることを 後ろめたく思っていたのと同じように。 他のものを創る人々、画家や建築家がどうやっているかを見れば、 私は自分のやっていることにちゃんと名前がついていると気づいていただろう。 スケッチだ。 私が言えるのは、大学で教わったプログラミングのやりかたは全部間違っていた ということだ。 作家や画家や建築家が、創りながら作品を理解してゆくのと同じで、 プログラマはプログラムを書きながら理解してゆくべきなんだ。

クソコードを書くことを恐れてはならない。書きながら、または書いたあとに洗練させていけば良い。
クソコードを書く心はエンジニアにとって大切なものだと思う。

https://www.amazon.co.jp/exec/obidos/ASIN/4274065979/nakazye-22/www.amazon.co.jp