52-「その場しのぎ」が長生きしてしまう

プログラマが知るべき97のこと」の52個目のエピソードは、暫定ソリューションに関する話です。暫定ソリューション(その場しのぎ)とは、本来は遵守すべき規約やプロセスに従わずに急ごしらえで作成したソリューションのことです。時間に追われ不具合を直すために行儀の良くないパッチを当てる事もそうですが、設計の段階で捨てる予定のモックがいつの間にか採用されて使わざるをえなくなるような事も含むでしょう。暫定ソリューションが生まれる要因は時間が十分に確保できない事にあります。言い換えれば、暫定ソリューションは十分な時間をかけて満足するレベルに達していない事が多く、結果として改修や拡張が困難になるのです。
暫定ソリューションの最大の問題は既成事実化することです。「とりあえず作ったもの」であっても、ユーザにとって役に立つのであれば、無理に変更する価値はほとんどありません。先が見えない中での暫定ソリューションは、さらなる暫定ソリューションを生みだします。そして、気付くと巨大なレガシーコードとなり、最終的にはレジェンドコードとなるのです。こうなってくると設計の問題を認識できるようになりますが、それでも「その場しのぎで良いから対応してくれ」と言われるのが現実です。
それではどのようにして暫定ソリューションを回避すべきでしょうか?このエピソードで紹介されている3つの方法の中では2番目の暫定ソリューション修正の優先度が上がる体勢作りが現実的で理想的なスタンスだと思います。暫定ソリューションを全く作らないことは現実的ではありません。特に売り込みをかけている段階では、必要以上に時間もお金もかけることができません。問題はそのソフトウェアが認められ開発も軌道に乗り始めた時期です。タイミングが難しいですが、早い段階で再設計やリファクタリングをしなかった為に破綻したプロジェクトというのは良く耳にします。作った負債はなるべく早く返済し、借金をゼロに近づけるのが理想です。
また、「その場しのぎ」の続く文化は成長を阻害します。毎度「その場しのぎ」が続くと、「どうせ、今後もその場しのぎで対応するんだから、設計しても意味がない」という空気が生まれます。そんな開発チームが良い物を作れるでしょうか?品質への高い意識は、結果としてプログラマのスキルを高めます。各プログラマが負債を早く返す意識と、それを後押しするような開発体制をひくことが重要なのです。
技術的負債の話にもありましたが、暫定ソリューションは返さなくてはならない借金であるという事を忘れないようにしましょう。借金ですから利子もあることも忘れずに。

プログラマが知るべき97のこと

プログラマが知るべき97のこと