私は、ソフトウェア開発における日常的な作業の量は、無視できないとはいえ、比較的小さく、そしてそうあるべきであり、これがソフトウェア推定の基本的な問題であると確信しています。
この結論に至った経緯を説明し、議論に重大な欠陥があるかどうかを教えてください。
高精度で推定できるのは、以前に行われたことを意味する日常業務です。研究と創造性を含む他のすべての種類の作業は、少なくとも+/- 20%の精度では、実際には推定できません。
ソフトウェア開発とは、繰り返し作業を避けることです。その基本原則の1つはDRYです(繰り返さないでください)。プログラマーが繰り返し作業をしていることに気づいたときはいつでも、この繰り返しを回避する抽象化を見つける時が来ました。これらの抽象化は、繰り返しコードを関数に抽出したり、ループに入れたりするような単純なものにすることができます。また、ドメイン固有の言語を作成するなど、より複雑にすることもできます。いずれにせよ、それらの実装には、研究(これを以前に行ったことはありますか)または創造性が伴います。
これらの2つのポイントから、上記の結論を導き出します。
実際、私はこの関係が他のすべての議論、ブログ投稿、またはソフトウェア推定に関する記事で言及されていない理由をかなり長い間疑問に思っていました。理論的すぎますか?私の仮定は間違っていますか?それとも、ささいなことですが、なぜ私が知っているほとんどの開発者は、+ /-20パーセント以上の精度で見積もることができると信じているのですか?