时间宝贵,估算是关键:如何估算项目

2025-06-10

时间宝贵,估算是关键:如何估算项目

时间宝贵,估算是关键:如何估算项目

在开发人员和产品经理之间,没有比估算更有争议的话题了。

有些人认为估算完全是浪费时间。

还有一些人认为不做估计就继续前进就如同没有目标就继续前进一样。

但他们都同意的一点是,让开发团队做出接近准确的估算是极其困难的。

估计的问题在于,它们几乎总是错误的,因为估计的任务是新的、模糊的和未知的。

几乎每次您认为自己最终能够按时发货时,您的工程团队都会告诉您,他们遇到了一系列意外的错误和问题,而且您无法再次按时发布。

这很令人沮丧,对吧?

我也经历过。

每当我被告知我们不能按时发射时,我的内心都会哭泣,并希望有一种更准确的估计方法。

另一部分,嗯,我不太愿意承认,但它试图合理化地认为估算很像预测未来——有时,只是有时,你会预测正确。很多时候,它就像一只扔飞镖的黑猩猩一样准确。

自Zepel开发伊始,我们一直致力于按时推出新功能,以便团队能够轻松规划、跟踪和交付项目。这意味着,我们需要持续交付价值。

因此,当我们着手寻找估算问题的解决方案时,我们阅读了几篇博客文章,了解了其他团队如何解决这个问题,并自己尝试了几种解决方案。

我们碰到过一些文章,它们提出了一个通用公式,例如:“想想你需要多长时间来构建这个功能,然后将其延长三倍。”

时间宝贵,估算是关键:如何估算项目

图片来源:xkcd

显然,这并不准确。

在尝试各种解决方案的过程中,我们通过惨痛的教训认识到,没有诀窍或捷径,只有必须经历的过程。

以下是我们用来评估项目的四个步骤:

如何更准确地估算的 4 个步骤

1. 分配足够的时间进行估算:

人们想要快速行动。

产品经理希望按时发布新功能,以满足客户的需求。开发人员希望以更高的频率构建和发布无问题的产品。营销人员希望开展多个营销活动来获取用户,并为下一次营销活动快速收集数据。

在这个世界上,人们总是想快速完成任务,因此,一旦分配了任务,人们很容易就想一头扎进去,试图解决问题。

但是,如果您想确保您的团队得到准确的估计,请不要在与团队交谈时就告诉他们截止日期。

当截止日期由高层制定时,通常由不参与开发功能本身的日常复杂问题的业务人员制定,这会导致设定无法满足的不切实际的截止日期。

当开发人员被迫在最后期限前完成任务时,他们很可能不会彻底思考问题,低估问题的复杂性,并提出让经理满意的估算。

时间宝贵,估算是关键:如何估算项目


图片来源:呆伯特

产品经理经常会陷入对一系列功能进行优先排序的陷阱,然后对团队说:“我们需要在下个月底之前交付这个、这个和这个”,而实际上,他们需要四个月的时间才能顺利地构建它,而不会出现任何问题或错误。

当你开始告诉你的团队你将花费接下来的半天时间(取决于你的项目有多大,你可以分配更多的时间)思考这个问题时,你就允许他们清楚地思考所有的复杂性并得出一个合理的估计。

2. 分解:

在项目开始时,你可能对完成项目需要做什么的数据非常少。你估算的任何天数都很可能相差很大。

但是,当您仔细考虑项目的各个方面并将其分解为可操作的小任务时,项目中的不确定性就会减少,并为您提供更准确的估计。

将您的项目分解为更小的、可操作的任务会迫使您弄清楚要做什么,并且在一定程度上甚至可以帮助您思考应该如何执行它。

Joel Spolsky在他的博客文章中讨论了分解任务的重要性:

“当你还没有想过要做什么时,你就不知道要花多长时间。”

〜Stack Overflow首席执行官Joel Spolsky

将项目分解为较小任务时要遵循的一个好的经验法则是进一步分解它们,直到任务估计时间少于 8 - 10 小时。

如果您有需要 16 小时才能完成的工作任务,如果不进一步细分,您很容易误以为这不到一天的工作量,但实际上,16 小时至少是两个工作日。

3. 将任务分组并进行研究:

在开始处理那些通过分解项目成功收集到的、小而易操作的任务之前,请先回顾一下你的所有任务。你会发现,有很多工作可以立即开始,很少有工作看起来模糊不清,还有一些工作看起来像月球的黑暗面一样神秘莫测。

将其分类为:

A.已知任务:

这些任务需要你对高效执行所需的所有细节都了如指掌。理想情况下,你知道如何完成这项任务,以及如何在预计的时间内完成它。

B.部分已知的任务:

您对如何执行这些任务有一些了解,但需要指导或需要进一步研究才能自信地执行。

通常,您需要花 15-30 分钟在互联网上查找其他人如何解决这个问题,或者与已经解决过类似问题的其他开发人员交谈。

C.未知任务:

通常,这些任务需要您花费一小时到至少半天的时间来了解所需的技术并思考如何执行它。

时间宝贵,估算是关键:如何估算项目

软件开发绝非只是重复开发那些你已经知道如何执行的东西。它的核心在于找到方法,让不同的工具(API 和库)按照你期望的方式为你工作。这意味着调研在准确估算方面发挥着重要作用。

对所有任务进行分类后,开始研究部分已知任务桶下的任务,然后逐步研究未知任务。

目标是将所有任务移至已知任务存储桶,以便您可以根据有关工作的所有知识进行估算并给出更准确的估算。

4.重新估计:

现在,您的所有工作都归入“已知任务”类别,您将获得更多关于如何执行这些任务的信息,从而更轻松地进行更准确的估算。

我们可以通过查看一个流行的概念“不确定性锥”来更好地理解这一点,该概念指出,您对如何实施项目越不确定,您的估计就越不确定。

时间宝贵,估算是关键:如何估算项目

不确定性锥体。图片来源:InformIT

重新评估任务的额外好处是,您倾向于考虑问题的不同方面,并问自己之前研究时错过的问题。

每次您获得有关如何解决问题的新信息/知识时,您都可以使用它来重新估计并获得准确的估计。

项目估算期间要记住的 4 件事

1. 注意“公正”:

你有没有注意到,你原本以为只需几分钟就能完成的任务,最后却总是耗费大量时间?这些任务通常会导致延误,甚至错过最后期限。

“just”的其他变体包括:

  • 这只是一项小任务。
  • 我只需要 5 分钟就可以修复它。
  • 我应该不会花超过 15 分钟的时间。

这些“普通”的任务最终会成为延迟的主要原因,因为它们通常是在随机对话或站立会议中意外出现的。如果开发人员没有仔细考虑过这项任务,他们就会低估其复杂性,最终给出不准确的估算。

2. 开发人员进行估算,而不是管理人员:

被指派执行该任务的开发人员通常是最能思考实现该功能所需的最细微细节的人。

虽然提出需求的是管理人员,但开发人员最了解他们需要哪些 API 或第三方库,这让他们知道实现该功能需要多长时间。

3. 不要忘记其他任务:

人们很容易忽略那些杂项任务,甚至根本不去想它们,因为它们“只是”杂项任务而已。但是,当你需要检查错误、修复错误、审查代码并部署到生产环境时,你就知道你手头上有很多任务,最终可能会耗费你大量的时间。

4.考虑意外延误:

人们会生病,会去度假,公共假期也时有发生,而病菌就像不速之客一样出现在家庭聚会上。记得根据你的日历和以往的经验,将它们计入最终估算中。

虽然没有完美的数字可以添加到您的最终估算中,但理想情况下您应该能够获取之前项目延迟的平均天数并使用它们来为您提供估算。

结论

当进行估算时,击中靶心是很困难的。

有些人认为这不可能,觉得花时间尝试毫无意义。但许多人明白估算的重要性,并努力尽可能接近目标。

在我们研究、学习和尝试新想法的过程中,我们学到了关于估算的一个重要教训:

估算的问题根本不在于估算本身,而在于对如何解决问题有一个清晰的理解和全面的了解。

开发人员和经理都会在开发过程的不同阶段获取新信息。让每个人都了解最新信息有助于整个团队进行规划、重新评估,并更准确地了解预计的交付时间。

我们还了解到,估算不仅仅是为了帮助团队了解下一个功能的预计发布时间。

在尝试准确估算的过程中,它在我们的头脑中开辟了整个想法和解决方案,使我们能够在更短的时间内构建我们的功能。

如果您与一个由多名团队成员合作按时交付产品和功能的团队合作,那么估算可以帮助预见意外的挑战......

如果您想按时发货,了解意外的挑战是一件好事。

鏂囩珷鏉ユ簮锛�https://dev.to/svikashk/time-is-costly-estimation-is-key-how-to-estimate-projects-3mjf
PREV
Promise 的方法:.all()、.any()、.finally()、.race()
NEXT
如何使用 react-sidebar-ui 为你的下一个 React 项目构建侧边栏