2025-07-30

必要になったらやれば良い vs 今やらないと一生やらない

私は基本的に「必要になったらやれば良いじゃん」という強めのYAGNI派閥なのだが、一方で「それって一生やらないから今やろう」という意見もそれなりに聞く。そのたびにモヤモヤしていたのだけど、最近わりと自分の中で整理できたので駄文を書く。

まず、自分は腕力があるタイプなので「必要になったらやれば良いじゃん」と思ってしまうのだが、一般的に腕力があるエンジニアは少ないので大抵の組織において「必要になったらやれば良いじゃん」のハードルが高い。

例えば軽いリファクタリング系のタスクであってもバックログに積まれっぱなしで本流の開発と並行してサブタスクをやる余裕はほとんどのチームにおいて無いのである。いわゆる改善デーのような本流の開発以外のサブタスクを集中的にやる期間を設けたとしても優先度が他のタスクに負けてしまい、腕力の総量不足も相まって「一生やらない」ことになってしまう。おそらく「それって一生やらないから今やろう」の主張の人はこういった経験が強いのだと思うし、シニアエンジニア=腕力タイプというわけではないので、シニアかどうかに限らずこういった意見はあるのかもしれない。

というわけで、理想的にはYAGNIは良いと思っているし、これからの考え方としてもベースに置きつつも、現実的には開発リソースは有限かつそこまで高くないのが常なので少し過剰かもしれないけど今やっておく、が実は後々良い結果をもたらすこともあるのかもしれないし、その主張も理解できるかもなぁと思ったのであった。(とはいえ過剰な設計が保守性など後々悪い結果をもたらすことが多いと経験上感じるので、そのあたりと折り合いを付ける必要はある)

また、この件に限らず「自分が手を動かすなら」ではなく「他の人が手を動かすなら」とかそういう視点で考えるとチームで認識を揃えるときにもう少し現実的な落とし所が見つかるのかもなぁと思っていたりする。