估时 — 是对完成任务、开发功能或实现整个项目所需工作量的量化评估。在移动开发中,估时用于规划冲刺、确定成本和管理客户期望。根据 Project Management Institute, 2024 的数据,项目早期阶段的估时误差可能达到100%,这使得估时成为开发中最困难的学科之一。
要点
估时(源自英语 estimate——评估)——是对完成任务所需时间或工作量的预测。在移动开发中,估时以小时、天、故事点或货币等价物表示。估时的目的不是精确预测,而是为决策减少不确定性。
估时 — 带有误差容限的预测。承诺(commitment)— 在特定日期前完成任务的保证。区别至关重要:估时说的是“可能5天”,承诺说的是“5天内完成”。管理者常常混淆这两个概念,将估时变成了无权犯错截止日期。
估时过程与其结果同样重要。当团队讨论任务评估时,隐藏的需求、依赖关系和风险都会显现出来。即使最终数字不准确,讨论也能让所有参与者理解任务。因此,集体评估方法(Planning Poker)比个人方法更有效。
存在几种估时方法,每种适用于不同的项目阶段和详细程度。方法的选择取决于可用数据和所需的准确性。
| 方法 | 类型 | 准确性 | 何时使用 |
|---|---|---|---|
| Planning Poker | 专家集体 | 高(冲刺中) | 评估冲刺任务 |
| T-Shirt sizing | 专家快速 | 中等 | 初步评估史诗 |
| 类比评估 | 基于历史 | 中等 | 过去类似的任务 |
| Three-point (PERT) | 概率 | 中上 | 高度不确定的任务 |
| 参数模型 | 公式 | 取决于数据 | 同质可衡量的任务 |
Planning Poker — Agile中最流行的评估方法。每位开发者获得一副斐波那契数列卡牌(1、2、3、5、8、13、21)。讨论任务后,所有人同时展示卡牌。如果评估不一致——给出最低和最高评估的开发者解释其逻辑,然后进行重新投票。该方法消除了权威的影响,提供更准确的评估。
T-Shirt sizing — 按T恤尺寸进行粗略评估:XS、S、M、L、XL、XXL。该方法用于在早期阶段快速评估大型任务(史诗),此时细节尚不明确。随后,每个此类任务被分解并在Planning Poker中评估。T-Shirt sizing每个任务耗时5-10分钟,但仅提供量级估计。
PERT使用三种评估:乐观(O)、悲观(P)和最可能(M)。最终评估按公式计算:(O + 4M + P) / 6。该方法考虑了不确定性,比单一评估更真实。PERT对于高风险或新技术的任务特别有用。
估时准确性取决于项目阶段和已知信息的数量。评估进行得越早,误差容限就越大——这是正常的,应在规划中考虑。
不确定性锥(Cone of Uncertainty)— 描述随着项目推进,估时误差容限如何降低的模型。在概念阶段,误差容限为400%(任务可能需要1到4个月)。在冲刺阶段——20%(1-1.2个月)。了解这一模型有助于避免在早期阶段要求精确评估。
相对评估(以故事点为单位)比绝对评估(以小时为单位)更准确,因为人们更擅长比较任务而非估算时间。“这个任务比那个复杂两倍”——这比“这个任务需要8小时”更可靠。相对评估不依赖于特定开发者,在更换执行者时仍保持准确性。
通过系统方法、集体讨论和过去错误分析可以提高估时准确性。有几种经过验证的实践。
任何评估超过2天的任务都应分解为子任务。原则:如果任务无法以50%的准确性评估,说明它太大。将其分解为可理解和可评估的步骤。分解后,总评估通常比原始评估大1.5-2倍。
记录评估历史并与实际成本比较。例如:“评估为3个故事点的任务平均需要4天,而不是2天”。使用团队velocity进行预测:如果团队每个冲刺完成20个故事点,不要计划30个。分析过去评估的准确性是培养估时技能的最佳训练。
锚定 — 心理效应,即第一个提出的评估会影响所有参与者。为避免锚定,在Planning Poker中所有人同时展示卡牌,而不是轮流展示。校准 — 定期将评估与实际结果核对:经过10-20个冲刺后,团队通过反馈学会更准确地评估。
每个任务都包含隐藏风险:开发者生病、API问题、需求变更。在评估中添加风险调整因子:高风险任务——乘数1.5-2,低风险——1.1-1.2。透明地向客户展示考虑了哪些风险以及它们如何影响期限。
估时中的错误在大多数团队中重复出现,无论其成熟度如何。了解这些错误是纠正它们的第一步。
最常见的错误——基于最佳场景的评估:“如果一切顺利,3天就能完成”。实际上,没有什么是一帆风顺的:bug、关于需求的问题、依赖任务。解决方案:基于最可能的场景评估,而不是最乐观的。使用PERT来考虑变异性。
当管理者说“周五前需要”时,开发者会下意识地将评估调整到这个截止日期。压力下的评估总是被低估,导致延期。解决方案:评估应先于截止日期,而不是相反。团队先评估,然后各方商定期限。
任务复杂性(需要多少思考)和时间(需要多少操作)——是不同的度量。一个任务可能简单但耗时(编写10个屏幕的代码)。或者复杂但快速(在遗留代码中找bug)。故事点通常评估复杂性,而时间则根据团队velocity推导。
开发者不会连续8小时专注于一个任务:会议、代码审查、帮助同事、行政事务占用了30-50%的工作时间。上下文切换应在估时中考虑:实际上开发者每天只编写3-4小时代码。
常见问题
开发——是高度不确定的创造性过程。与每一步都明确的建筑或制造业不同,在IT中每个任务都是独一无二的。未知的未知因素(unknown unknowns)——不准确的主要原因。即使经验丰富的团队在30-50%的评估中也会出错。这是正常的,应在规划中考虑。
故事点更适合冲刺规划,因为它们是相对的且不依赖于执行者。小时用于合同和外部报告是必要的,但准确性较低。最佳组合:任务用故事点评估,期限通过团队velocity转换为日历天数。
对于未知技术的任务,首先使用Spiko(有时间限制的研究)。研究之后,团队了解了复杂性,可以给出切合实际的评估。在常规评估上增加2-3倍的乘数,并预留50%的缓冲以应对不可预见的困难。
展示分解——将任务分解为子任务,每个子任务有评估。解释时间的构成:开发、测试、代码审查、文档。提供替代方案:缩小范围、简化功能或分阶段进行。未经需求变更,切勿降低评估。
重新评估在任务出现新信息时是必要的:发现了额外需求、找到技术限制或优先级改变。在冲刺内,任务不会重新评估——重点是完成。在冲刺之间,backlog在梳理过程中重新评估。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。