在估算任务时,如何摆脱霍夫施塔特定律的束缚?
12 回答
如果你能在政治上做到:分小块进行估算,进行小迭代,并将注意力集中在导致与估算的偏差的原因上,以使下一个估算更好。
根据我的经验,造成错误估计的主要原因之一是缺乏实际使用为项目规划的架构的经验。随着事情变得更加具体和清晰,通过调整估算值,估算值会随着时间的推移而变得更好。
错误估计的另一个主要原因是虚假估计。为中标而人为地压低估价。咨询公司打破这个循环的唯一方法是给出良好的估计并赢得足够的项目并交付估计以获得他们达到估计的声誉。足够多的客户会尊重这一点,从而从中做出合理的业务,但建立起来会很困难。
Hofstadter 定律不应该被认真对待——如果它是真实的,如果你考虑到 Hofstadter 定律,每项任务都将花费无限的时间。
- 估计编写代码需要多长时间。
- 乘以 pi。
- 惊讶于这与实际需要多长时间的频率相近。
(这也不算是一种科学的方法,但它是另一种表达正确估计时间有多难的方式。虽然我有时确实使用它......)
:)
编辑:
一种更科学的方法:指定任务的绝对最小和最大时间的时间,例如肯定需要 5 到 30 小时。(划分子任务可能会缩小时间跨度。)你得到一个非常宽的时间跨度,但至少它比猜测更可靠。
虽然“霍夫施塔特定律”有点半开玩笑,但有一些实践可以帮助您,特别是对于首次通过/大型项目估计:
估计相对大小。这意味着你没有说一个项目需要 X 时间,你说项目 A 是项目 B 的两倍,而项目 B 大约是项目 C 的 4 倍。
收集前几轮估算的数据并将其用作基线。因此,当您在估算一个项目时,注意到项目 A 与先前迭代/项目中的项目 B 差不多大,并且您知道项目 B 花费了 2 天,您知道项目 A 很可能需要大约长
使用“群众智慧”来获得更高质量的估计。我在几个项目中使用了Planning Poker,结果相当不错。
如果您想了解更多相关信息,可以先观看 Mike Cohn 的演示文稿(第 1部分和第 2 部分)和/或阅读他的书。虽然这不是最终的估计,但他确实提出了一些好的实践,最重要的是,这些实践背后的推理。
我用骰子。公然。在我的经理面前。通常我使用 3 个标准的六面骰子。
老板: “这需要多长时间?”
我:(翻滚)“大约 11 天。”
老板: “不,认真的。”
我: “哦,说真的。” (滚动)“大约 7 天。”
我也曾经在我的墙上贴过一张海报,上面写着“Deadlines Amuse Me”。从中得到你想要的。
根据过去的表现进行估计,而不是基于最佳情况。这确实需要您跟踪在项目上花费的时间。我不在乎你是否“知道”它只需要“6 周”才能完成,如果你上次用 3 个月完成类似的项目,那么下一次可能需要 3 个月。
为@Yishai +1 - 像 scrum 这样的敏捷方法的好处之一是人们实际上会得到关于他们估计准确性的反馈。
如果你永远不知道自己是否错了,你就永远不会在某件事上变得更好......
我喜欢这种方法:
- 诚实估计任务所需的工作量。
- 将乘数应用于估计。至少 1.5 可能是 2.0。通过将实际工作量与估计工作量进行比较,您将能够计算出真正的乘数。
收集估计的和实际的努力是改进估计的关键。
敏捷估计总是使用“理想时间”,这隐含地考虑了霍夫施塔特定律。所以你不需要捏造。
如果您以员工身份回答...
“哎呀,老板,在一个完美的世界里,这需要X天。让我们给它加个缓冲,我会尽我所能在这段时间内把它给你。如果估计发生变化,我会通知你立即地。”
这是老板耳中的音乐!
如果您以企业主的身份回答...
您只有在陷入困境时才向您的客户提供估算。然后,您使用带有明确免责声明的理想日子,并准备好进行调整,因为您了解霍夫施塔特定律。
如您所知,估计是一门艺术,还有一种子艺术是估计偶然性的艺术。:) 为了正确估计意外事件(通常占总估计的百分比),必须了解风险和缓解措施。基本上,您将某事发生的风险与它可能造成的损害相乘,从而得出一个风险因素。然后,您总结所有风险因素并估计您的总风险。意外事件的范围应该从非常低风险项目的 15%(我从不低于 15% 意外事件)到非常高风险项目的 50%(根据我的经验,除了高于 50% 的意外事件估计之外,很少有客户会这样做)。
Hofstadter 定律只是臭名昭著的自我参照的另一个含义!......微妙的幽默具有深远的影响。事后看来,这条定律证实了每条由逻辑构成的定律/原理/公理都是不完整的(像哥德尔一样),因此即使考虑到这些定律,逻辑也可能永远不会完整。无限感再次是芝诺悖论(乌龟与阿喀琉斯)的戏剧......阿喀琉斯完成比赛的无限时间......等等......这些都是自我参照的万能邪恶的例证,它污染了所有仿射逻辑结构。