为了更准确的速率,重新估算已经完成的故事?

  • Dan Puckett
  • 石永超

2010 年 11 月 8 日

话题:敏捷架构文化 & 方法

最近在 Scrum 开发组的邮件讨论中, Paul Battison 询问在 sprint 结束后,他的团队是否应该重新估算已经完成的故事,以便让团队的速率反映出团队完成故事实际投入的精力。

粗略的共识是什么?不要对已经完成的故事进行重新估算。

因为故事一旦完成,重新进行估算没有多大价值。 Kelly Waters 解释了原因

速率之美在于:统计结果表明,它可以弥补不良估算。对于计划外任务,例如,一个估算为 3 个点的用户故事实际上可能需要 13 个点才能完成——但团队还是只估算为 3 个点。这种结果说明,团队的速率低于预期,意味着团队以后做 Sprint 计划时要以更加实际的目标为根据,要基于团队的实际速率,而实际速率基于他们估算用户故事时的预测。

经过几个 Sprint 后,团队的速率自然会因此调整,以适应那些惯于估计过低或过高的故事估算。速率自己会变得更加准确——没必要事后去做调整,让它与实际一致。

事实上,对已经完成的故事调整估算,不仅没什么用处,更可能是有害的。 Pual Oldfield 写道

……如果你调整 backlog,那么你现在的速率就会变得靠不住。准确预测未来几轮迭代,会有多重要呢?回到一个合理可靠的速率上可能需要相当长的时间。

估算故事的主要意图是决定团队的速率。什么是速率?根据 Scrum 联盟上的描述:

在 Scrum 中,速率是一个团队在一个 sprint 中可以处理的产品 backlog 的工作量。

事后调整估算会降低速率对未来 sprint 的预测能力(通过混合在 sprint 前所做的故事估算和 sprint 结束后对故事的“估算”)。比较解释这两种估算是非常困难的——也许是不可能的。

是否绝对不应该重新估算已经完成的故事?几乎从不需要,但也有例外。 Mike Cohn 写道

一般来说,当原有估算完全一团糟的时候,重新估算是有用的,但你可以看到这种错误很少会发生。(也就是说,如果每个估算都系统地削减为一半,我不会重新进行估算。)其次,当相对大小改变时,你应该重新进行估算。例如,团队发现学习 AJAX 比设想的难易程度要简单一半。我们想要修正估算,因为新的知识告诉我们,对于严重依赖 AJAX 的故事而言,我们的相对估算不太平衡。

一般而言,如果故事已经完成,那么最好不要再去更改它的估算。基于目前你了解的情况,你会非常冲动,想要去修正那些估算,但绝大多数情况下,应该克制这种冲动。

查看英文原文 Re-estimate Completed User Stories for a More Accurate Velocity?

敏捷架构文化 & 方法