「クソコード」と言われて傷つく人は職業プログラマに向いてない(改訂版)

俺もお前もどうせクソコードしかかけないよ。

というわけで、「これクソコードじゃん」と言われて人格否定だと感じる人はコード書くことを仕事にしないほうがいいと思います。 職業プログラマってのは40年くらい自分が書いたコードに対してクソコードだと言われ続ける仕事ですよ?

「コードには2種類ある。クソコードと、まだクソコードと呼ぶ理由が見つかっていないコードだ。」

時間の流れとは残酷なものです。 良いコードの評価基準は日々変化し、あらゆるコードは経年劣化による腐敗に耐えられません。 いまどんなに頑張って良いコードを書いても、良くて数年、悪ければ3日後くらいには目も当てられないクソコードに成り果てます。

目の前にあるクソコードをクソコードと断じることができるのは、我々が現代のベストプラクティスに関する知見を持ち、 かつそのコードが原因でなんらかの課題が発生していることを認識している、シンプルに言えば神の視点を持っているからです。 クソコードと言う側がやってることは後出しジャンケンなので、勝つことは不可能です。

というような事情により、コードを書き続けている限り長い目で見てクソコードを生産せずに生きることはできません。 プログラマにはこのあたりに関してある程度の開き直りが必要です。

あえて強い言葉を使う必要があるか

『任意のコードはクソコードである』ということをメンバー全員が理解しているのであればクソコードに対してクソコードといってあげる必要はありません。 もし自分がクソコードを生産していることを自覚していないエンジニアがいるならば、はやいうちに分からせてあげるのが先輩の役目でしょう。

「クソコード」という言葉を使う必要があるかどうかについては難しいところですが、優秀なエンジニアにクソな理由を懇切丁寧に説明してもらうのは時間がもったいないので、 クソであることを理解させることが目的であれば言っちゃってもいいんじゃないかなと思います。 (そのかわり、言う側はそのコードがなぜクソなのかを説明できなければいけませんが。)

個人的には、クソコードという言葉が注意深く忌避される世界よりは、気軽にクソコードと言い合える世界のほうがいいなぁと思います。 言っても言わなくてもどうせクソコードですし。こんなに美しい表現をつよつよエンジニアの自虐のためだけに使うなんてもったいない!

それはそれとして、クソコードであることを指摘するだけでは何ら状況は改善しませんので、クソコードという言葉に現状認識以上の役割をもたせてはいけません。 なんらかの改善が求められているシーンでは、クソとだけ言っていてもダメです。

クソコードにもリスペクト

クソコードかどうかと、それまで積み上げてきたコードに対して敬意を払うかどうかは全く別の話です。

僕が仕事で触っているコードは古くは10年以上前にかかれたものであり、もし願いが叶うならばすべて爆発してほしいと毎日思っています。 一方で、会社の事業を10年以上支えてきたことも紛れもない事実です。クソコードでありながら、多くの先人が知恵を絞って積み上げた(はずの)努力の結晶です。

僕はかわいいクソコードたちに毎日感謝しています。

敬意を表するに値するかどうかと、クソコードかどうかはまったく評価軸が異なります。 たくさん働いたえらいコードはえらいですが、クソなものはクソです。 クソコードだからリスペクトしないというのも違うし、リスペクトすべきコードだからクソコードではないというのも違います。

クソコードをクソコードと認めないことはただの現実逃避です。 言い訳はせずに現実と向き合いましょう。

勇気を持ってクソコードを書こう

プログラマという仕事は、知恵を絞ってクソコードを生産しながら、そのコードが少しでも長くできるだけ多くのお金を稼いでくれることを願う仕事です。 クソコードを書くことしかできないのに、「どうせクソコードになるから」と適当なコードを書くことは許されません。

クソコードを書いていることに自覚的でありながら、それでも楽しめる人がエンジニアに向いているんじゃないかなと思います。

share with:
この記事をTwitterで共有
この記事をはてなブックマークに追加