我坚信,软件开发中的日常工作量(即使应该忽略不计)相对较小,而且应该相对较小,这是软件估算的基本问题。
让我描述一下我如何得出这个结论,并告诉我该论证是否存在严重缺陷:
可以高精度估计的只是例行工作,这意味着以前已经做过。涉及研究和创造力的所有其他类型的工作都无法真正估计,至少不能以+/- 20%的准确度估算。
软件开发就是要避免重复的任务。它的基本原则之一是干燥(不要重复自己)。每当程序员发现自己在做重复的工作时,就该找到避免这种重复的抽象了。这些抽象可能很简单,例如将重复的代码提取到函数中或放入循环中。它们也可能更复杂,例如创建特定领域的语言。无论如何,实施它们都将涉及研究(以前有人做过吗?)或创造力。
从这两点我得出以上结论。
实际上,我已经想了好一阵子了,为什么在其他所有有关软件评估的讨论,博客文章或文章中都没有提到这种关系。太理论了吗?我的假设错了吗?还是太琐碎了-但是,为什么我所知道的大多数开发人员都相信他们可以以+/- 20%或更高的精度进行估算?