私にとっては、Kent BeckがXPで提案するアプローチが好きです(「彼の」アイデアなのか、それとも他の人のアイデアなのかはわかりませんが、最初に聞いたのはここです)。
明日の問題が何であるかを考え出して解決しようとせずに今日の問題を解決することは十分に困難です。
開発者は、存在しない要件のソリューション、発生しないエッジケース、または問題の影響が問題を回避するコストよりもはるかに少ない真の問題でさえ、多くの時間をソリューションに費やすことができます。
これは、ユーザーが本当に望んで使用することになる可能性のある時間です。これらのことの1つが実際に発生するというまれなイベントで発生する不便さをはるかに上回るメリットをユーザーに提供するものです。
ユーザーにとってこの非最適な結果を超えて、この方法での過剰なエンジニアリングの開発者への影響は、サポートや拡張が困難な複雑なコードに及ぶ傾向があります。
だから、私にとってあなたが知っているか、かなり確かなことができるなら、何かが要件であるか、問題を引き起こすだろうし、それを解決しなければならない。
最初に実装したよりも広い要件があったことが判明した場合は、戻ってやり直す必要があるかもしれませんが、ほとんどの場合それが起こらないので、プロジェクト全体で行った総労力は依然として低くなります。