2012-04-18 70 views
2

我知道这个问题已经被问了几次就在这里/程序员,这是一个相当普遍,典型的问题:估计完成任务的时间

你该如何准确地给出一个任务需要多长时间的估计?

我遇到的问题是Windows中的点击式任务,我可以给出准确的估计值。为了编码新的东西(比如使用我不熟悉的API),我无法估计准确的时间来挽救我的生命。这是一个思考和说出我头脑中第一个数字(天/星期/无论)的例子。对于使用我熟悉的API和我可以立即说我可以开发的应用程序(例如记事本类型应用程序)的代码,我可以给出一个准确的估计。

任何帮助表示赞赏。

感谢

+0

我发现这个网站非常准确,作为估算工具:http://sixtoeightweeks.com/ – bta 2012-04-28 00:10:06

回答

4

专注于件。当你尝试和估计一个高层次的任务时,不仅会令人望而生畏,而且你将无法准确地将所有时间都包含在内。

相反,甚至不要试图猜测总数(不仅它没有用,但它实际上可能会偏倚你对个人任务的估计),而是坐下来试着去思考所有的子任务包括任务。如果那些感觉太大,将它们分解成更小的子任务。

一旦你完成了这个,给每个子任务一个估计。如果它们中的任何一个大于约4小时,则该子任务可能还没有被充分分解。向上添加所有这些子估计值。这是你的估计。

使用这种方法会迫使您推断完成任务所需的实际内容,并且可以让您产生更好的估计。

确保您考虑完成任务所需的非显而易见的步骤。如果您正在编写一段代码,您是否包含编写相关单元测试的时间估计?为了测试代码?为了记录它?

将小时转换为天时,请使用切合实际的期望,即您实际花费的时间有多少。普遍的共识是,开发人员可以在任何给定的8小时工作日内完成4-6小时的工作。这大致符合我的个人经验。

如果您有其他团队成员,您可以尝试一种叫做Planning Poker的技巧。最简单的想法是让团队中的每个成员都能够分别评估每个任务。一旦完成,团队会聚在一起,并比较估计值,寻找大偏差。如果任务不够明确,团队成员拥有其他团队成员没有的相关信息,或者团队成员的不同假设不同,这种情况往往会被揭示出来。

在做您的估计时,请注意您的假设并将它们记录为估算的一部分。假设x,y,& x,任务q应该花费n个小时。假设两个尚未一起测试的第三方框架的兼容性,假设可用开发环境来部署该功能以进行测试,这可能是假设QA工程师可用于测试功能,假设那个任务所依赖的特征z已经准备好了一定的日期......等等我们总是在不知道这些假设的情况下做出大量的这些假设。记录它们会迫使你意识到它们,并允许其他方面验证你的假设是正确的。如果估计结果确实是错误的,那么你就有更多的信息来分析原因。

即使遵循所有这些建议,您仍然会经常做出不准确的估计,但不会感觉太糟糕,因为我们的大脑被硬连接以对抽象任务产生可怕的估计。我们有许多认知偏差会影响我们衡量任务规模和努力的能力。

我建议你阅读这篇文章,甚至更多的信息和建议:

http://blog.muonlab.com/2012/04/12/why-you-suck-at-estimating-a-lesson-in-psychology/

1

我大部分的工作与“小”的持续时间的项目,但东西已经为我工作好是掰开任务分成,我认为我可以实现每一个足够小的子任务大约一天。对于某些项目来说,这意味着只有两个或三个子任务,对于其他项目,这可能意味着几十或几百个。添加一些开销百分比,浪费在非生产性活动上,一些开销用于探索错误的方向,并希望你会得到一个在最终结果合理范围内的数字。

1

我最常做的是打破了任务,小任务。最大的任务不应该超过2天。估计小任务并不困难。每个小任务的测试时间都包含在估算中,所以在项目结束时我不会收到大量未经测试的代码。

如果有高层次的设计,可以将任务分解为小块,否则估计只是一个粗略的猜测,通常是2周,这是大多数开发人员使用的着名的2周;)

在项目结束时增加一些时间来整合稳定bug修复使其成为一个合理的估计。

0

类似于sarnold提及,拆分任务是关键......但如果您不了解所涉及的领域/技术,则可能会更难以将其细化到1天的增量。在你的情况下,我会建议以下(特别是如果这显然不是一个任务,将需要几天时间才能完成):

1)首先,你需要问到左右你的团队/同事们看看他们是否能够点亮一些(或者他们是否使用了相同的API /技术)。如果没有人知道任何事情,那么您将不得不自己承担事实,即您根本没有足够的数据来冒险进行合理的猜测,并且需要花费X天才能进行调查(调查的时间量需要与您正在使用的API /域的复杂性保持一致)

2)在您分配到调查新技术的时间结束时,您应该能够做一个非常基本的问候,世界一小时使用API​​的类型应用程序(编译,链接和正常运行)。到此时为止,您应该有一个很好的位置来确定您的任务是需要几天,几周还是几个月。

3)接下来要做的关键是尽快,确定任何将阻止你的预测的主要障碍/打嗝......这是关键。您可以做的绝对最糟糕的事情是在截止日期前不断地找您的经理/客户,并提到您需要大量额外的时间才能交付。他们需要尽快解决问题,并/或提出B计划。

这就是它......它不是火箭科学,但你基本上提供一个估计,一旦你您可以提供一个,然后确保您根据对预测日期的能力有重大影响的新的,未预料到的事件更新估算值。