如何处理霍夫施塔特定律?
在估算任务时,如何摆脱霍夫施塔特定律的束缚?
When estimating tasks, how does one break from the grip of Hofstadter's law?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
在估算任务时,如何摆脱霍夫施塔特定律的束缚?
When estimating tasks, how does one break from the grip of Hofstadter's law?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(12)
如果你可以在政治上:进行小块估计,以小迭代进行工作,并将注意力集中在导致估计偏差的原因上,以使下一个估计更好。
根据我的经验,错误估计的主要原因之一是缺乏实际使用项目规划的架构的经验。 随着事情变得更加具体和清晰,通过调整估计,随着时间的推移,估计会变得更好。
错误估计的另一个主要原因是虚假估计。 为了赢得投标而人为地压低估价。 咨询公司打破这一循环的唯一方法是提供良好的估算,赢得足够的项目,并兑现估算,从而赢得达到估算的声誉。 足够多的客户会尊重这一点,并从中创造出合理的业务,但建立起来将很困难。
If you can politically: Estimate in small chunks, work in small iterations, and focus attention on what caused the deviation from the estimate to make the next estimate better.
One of the major causes of bad estimates in my experience is the lack of experience actually using the architecture planned for the project. By adjusting the estimates as things become more concrete and clear the estimates get better over time.
The other major cause of bad estimates is bogus estimates. Estimates kept artificially low to win a bid. The only way a consulting firm can break that cycle is give good estimates and win enough projects and deliver on the estimates to earn a reputation that they hit their estimates. Enough clients will respect that to make a reasonable business out of it, but building that up will be hard.
霍夫施塔特定律并不意味着要被认真对待——如果它确实如此,那么如果考虑到霍夫施塔特定律,每项任务都将花费无限多的时间。
Hofstadter's Law is not meant to be taken seriously --- if it were true to the letter, every task would take an infinite amount of time if you took Hofstadter's Law into account.
(这也不能被视为一种科学方法,但它是表达正确估计时间有多么困难的另一种方式。不过,我有时确实会使用它......)
:)
编辑:
更科学一点的方法是:指定一个任务的绝对最短和最长时间的时间,例如肯定需要5到30个小时。 (分成子任务可能会稍微缩小时间跨度。)你会得到一个非常宽的时间跨度,但至少它比猜测更可靠。
(This is also not to be taken as a scientific method, but it is another way of expressing how hard it is to correctly estimate time. I really use it sometimes, though...)
:)
Edit:
A method that is a bit more scientific: Specify a time for the absolute minimum and maximum time for a task, for example that it will definitely take between 5 and 30 hours. (Divide into subtasks to possibly narrow the time span somewhat.) You get a very wide time span, but at least it's more reliable than a guesstimate.
虽然“霍夫施塔特定律”有点开玩笑,但有一些实践可以帮助您,特别是对于首次通过/大型项目估计:
相对大小估计。 这意味着您不是说某个项目需要 X 时间,而是说项目 A 是项目 B 的两倍大,项目 B 大约是项目 C 的 4 倍。
从之前的估算轮次中收集数据并将其用作基线。 因此,当您估算项目时,并注意到项目 A 与上一次迭代/项目中的项目 B 大约一样大,并且您知道项目 B 花费了 2 天,您就知道项目 A 很可能需要大约 2 天的时间。 long
使用“群体智慧”来获得更高质量的估计。 我在几个项目中使用了Planning Poker,结果相当不错。
如果您想了解更多信息,可以先观看 Mike Cohn 的演示文稿 (第 1 部分 和第 2 部分) 和/或阅读他的 预订。 虽然这不是最终的估计,但他确实提出了一些好的实践,最重要的是,提出了这些实践背后的推理。
While "Hofstadter's Law" is a bit tongue-in-cheek, there are a couple of practices that can help you, in particular for first-pass/large item estimation:
Estimate in relative sizes. Meaning you don't say that an item takes X time, you say that an item A is twice as big as item B, and that item B is about 4 time as large as item C.
Gather data from previous estimating rounds and use it as a base line. So that when you are estimating a project, and notice that item A is about as big as item B from a previous iteration/project, and you know that item B has taken 2 days, you know that item A will most likely take about as long
Use "wisdom-of-the-crowds" to get higher quality estimates. I've used Planning Poker in a couple of projects and the outcomes are rather good.
If you want to know more about this you can start by watch Mike Cohn's presentation (Part 1 and Part 2) and/or read his book. While it's not the end-all,be-all of estimation, he does present some good practices and best of all, the reasoning behind the practices.
请参阅循证调度。 已经对其一些陷阱进行了讨论
See Evidence-Based Scheduling. There is already a SO discussion of some of its pitfalls here.
我用的是骰子。 公然。 在我的经理面前。 通常我使用 3 个标准六面骰子。
老板:“这需要多长时间?”
我:(滚动)“大约11天。”
老板:“不,说真的。”
我:“哦,说真的。” (滚动)“大约7天。”
我的墙上也曾经贴过一张海报,上面写着“最后期限让我很开心”。 从中获取你想要的。
I used dice. Openly. In front of my manager. Typically I use 3 standard six-sided dice.
Boss: "How long is this going to take?"
Me: (rolls) "About 11 days."
Boss: "No, seriously."
Me: "Oh, seriously." (rolls) "About 7 days."
I also used to have a poster on my wall that said "Deadlines Amuse Me". Take from that what you will.
您的估计基于过去的表现,而不是最佳情况。 这确实需要您跟踪在项目上花费的时间。 我不在乎你是否“知道”只需要“6周”就能完成,如果你上次花了3个月完成一个类似的项目,那么下次你可能会花3个月。
Base you estimates on past performance, not on best case scenarios. This does require you keep track of time spent on your projects. I don't care if you "know" that it will only take "6 weeks" to finish, if it took you 3 months to complete a similar project last time, it will probably take you 3 months the next time.
@Yishai +1 - 像 scrum 这样的敏捷方法的好处之一是人们实际上得到了关于他们估计的准确性的反馈。
如果你永远不知道自己是否错了,那么你永远不会在某件事上变得更好......
+1 for @Yishai - one of the benefits of an agile methodology like scrum is that people actually get feedback on the accuracy of their estimates.
You're never going to get better at something if you never know if you're wrong...
我喜欢这种方法:
收集估计和实际工作量是改进估计的关键。
I like this method:
Collecting the estimated and actual efforts are key to improving your estimates.
敏捷估算总是使用“理想时间”,这隐含地考虑了霍夫施塔特定律。 所以你不需要捏造。
如果您以员工的身份回答...
这对老板来说是美妙的!
如果您以企业主的身份回答......
您只会在陷入困境时才向客户提供估计。然后您会利用带有明确免责声明的理想日子并准备好进行调整因为你知道霍夫施塔特定律。
Agile estimation always uses "ideal hours" which implicitly takes into account Hofstadter's law. So you don't need to fudge.
If you're answering as an employee ...
That is music to a boss's ears!
If you're answering as the business owner ...
You only give estimates to your customers when backed into a corner. Then you use ideal days with clear disclaimers and be ready to adjust because you're aware of Hofstadter's law.
如您所知,估计是一门艺术,并且有一种子艺术是估计偶然性的艺术。 :) 为了正确估计意外事件(通常占总估计的 %),必须了解风险和缓解措施。 基本上,您可以将某件事发生的风险与其可能造成的损害相乘,得出风险系数。 然后,您总结所有风险因素并估计总风险。 应急费用的范围应为风险极低的项目的 15%(我从来不会低于 15% 的应急费用)到极高风险的 50%(根据我的经验,除了高于 50% 的应急费用估计之外,很少有客户会这么做)。
Estimating is an art, as you know and there is a sub art that is the art of estimating contingency. :) In order to properly estimate contingency (generally a % of a total estimate), one must understand risks and mitigations. Basically, you multiply the risk of something happening with the damage it can do to come up with a risk factor. Then, you sum up all your risk factors and estimate your total risk. Contingency should range from 15% for very low risk projects (I never go below 15% contingency) to 50% for very high risk (it has been my experience that very few customers will except a higher than 50% contingency estimate).
霍夫施塔特定律只是臭名昭著的自我参照的另一个暗示!……这种微妙的幽默具有深远的影响。 事后看来,这条定律证实了每一个由逻辑构成的定律/原理/公理都是不完整的(类似哥德尔),因此即使考虑到这些定律,逻辑也可能永远不会完整。 无限感又是芝诺悖论(乌龟与阿喀琉斯)的戏剧……阿喀琉斯完成比赛的无限时间……等等……这些都是自我引用污染的无所不能的邪恶的例证全仿射逻辑结构。
Hofstadter's law is just another implication of how notorious self-referencing is !..... the subtle humour has far reaching effects. In hindsight this law confirms that every law/principle/axiom which is structured by logic, is incomplete (Godel like), thus even taking such laws into concern, the logic may never be complete. The sense of infinity is again a play from Zeno's paradox (turtle vs. Achilles).... infinite time for Achilles to complete the race ....etc .... these are illustrations of the omnipotent evil of self referencing which contaminates all affine logical structure.