YAGNI~それ要らなくね?

発端は善意だったと思う。それは分かってる。ただ、いまね、それはたぶん無駄なんだ。

はじめに

YAGNI は ヤグニ で You aren't gonna need it で 『たぶんそれ要らなくね?』です。

必要なのか?不要なのか?

不要なことをするのは無駄、それは明らかなことです。ただ最初から物事に「不要」のラベルがついていることは稀でしょう。それなので、私たちはそれが必要なのか不要なのかの判断をしなければいけません。ときにはその結論をもって誰かを説得する必要があるかもしれません。

洞察なのか?憶測なのか?

いっけん不要に見えてじつは必要、そのようなこともあるでしょう。判断が必要な場面ではその 発端が「洞察なのか」「憶測なのか」 を見極めなければなりません。そのときに使える問いかけが『たぶんそれ要らなくね?』なのです。耐えられれば洞察、耐えられなければ憶測です。

最初が肝心

不要なものに手を出すと、そのときの時間を無駄にするだけではありません。未来に渡って無駄は無駄を生み出し続けるのです。ソフトウェア開発の現場における典型を紹介します。

共通レイヤー

共通レイヤーを作りました。モチベーションは以下の通りです。

  • いくつかのモジュールに共通点が見えたので共通化しよう
  • 将来の機能拡張を先取りしておこう

もしそれらが憶測であったらどうでしょう。

  • 同じに見えたが、各々のモジュールには差異があった
  • 予想が外れた、そのような機能は結局必要とされなかった

憶測にもとづく共通レイヤーは無駄でした、しかしそれだけではすみません。これからずっとあらゆる新規開発の前に立ちはだかり、要件に対応するための改造が加えられ続けます。そしてアプリケーションの複雑度は増大を続け、最後には、もうだれも触れないコードができあがります。

それ要らなくね?

『たぶんそれ要らなくね?』と問いかけることがきっと大事です。私たちは自信過剰になるべきではありません。事前でも事後でも良いので問いかけましょう。さらには、その問いかけを通じて、良かれと思って何かを始めた当初の「善意」に立ち返りましょう

おわりに

組織においても、『たぶんそれ要らなくね?』の問いかけができない組織は、無駄なポジションや無駄な人間を生んでしまう非人間的な組織です。勘や憶測らしきものが問いかけに封をしてしまっていないか点検が必要です。

最後までお読みいただきありがとうございました。

備考

不要なプロセスとか、儀式のような会議とか、会社の中にもいろいろあると思うのですが、多くのことの発端は「善意」だったと思うのです。先人の善意に立ち返りたいです。

初出は note です。