什么是敏捷估算,为什么要做敏捷估算?

作为一名敏捷教练,一个被问的非常多的问题就是“在敏捷中如何做估算?”。于此同时我也观察到,很多团队错误的在使用“敏捷估算”技术。在谈如何正确的使用敏捷估算前,让我们先看看什么是敏捷估算,并且为什么要使用敏捷估算。

Prediction is very difficult, especially about the future.

预测非常难,特别是对未来的预测。

Niels Bohr 尼尔斯·玻尔
什么是敏捷估算,为什么要做敏捷估算?

看起来很明显的是,我们在某件事上花越多的时间,我们就会得到更好的结果,是么? 或许是的,但是我们通常仅仅需要投入一些就能得到一个足够好的结果。我们可以想象一下,在我们开始写任何代码前,我们需要提前搞清楚整个系统,花费大量的时间对任务,问题,风险以及项目依赖关系做调研和估算,然后得出项目的“交付时间”。但是结果是那些花在估算上的努力,仅仅得到的是边际报酬并且最终变成负的。为什么?因为“过拟合”[人工智能/机器学习/数学],意思是我们越多的尝试和挖掘一件事情,我们会看到更多并不存在的相似之处。并且更少的对随机跟不确定做出解释。最终造成的结果是,我们十分确信我们的估算,但是最终错得很离谱。

下面这张图标表达了估算精确度与估算投入的关系。纵轴是估算精确度,横轴为估算投入。

什么是敏捷估算,为什么要做敏捷估算?

可以看出,无论我们投入多少,估算永远无法达到最高的精确度。并确无论投入多少在估算上,估算永远只是个估算。不会有额外的投入得到个完美的估算。同时我们也可以看到,仅仅需要一点点投入,我们就可以达到近50%的精确度。最后,还需注意到精确度还会随着估算投入的投入而下降,过多的估算投入有可能带来了更低的精确度。

基于这一理论,敏捷估算技巧被设计成更加快速(相比传统估算技巧)并且故意与精确度做了权衡。我们的目的并不是更好的学习去预测未来,或者是更擅长估算。而是我们认可估算本身一项是不产生价值的活动,并且投入越少越好。

绝大部分敏捷估算都使用的相对单位。我们并不直接给出小时/天/美金的精确估算。而是使用“点数”(或称用户故事点数)或者只是定性的标签,简单的比较我们要估算的对象。这个利用了人类比较善于事物之间的相对比较的能力并且避免用具体概念(小时/天/美金)估算带来的复杂度与争论。

尝试使用相对更少的估算投入得到一个相对足够好的估算。并且利用敏捷开发中快速迭代的好处,我们可以延后估算直到我们有了更多的知识与信息。在每个迭代周期后,我们都可以对之前的估算进行修正。

一些敏捷估算的技巧:

  • 计划扑克,广泛的用于估算少量的任务(2-10个),常用于迭代开发过程中或计划会议,单个团队内。
  • 快速斐波那契数列,一种非常高效的估算技巧。常用于项目开始时对待办列表内大量事项(50-500)进行估算。
  • 水桶系统,类似于计划扑克,团队将待估算事项放入不同标号的“水桶”内。相比计划扑克,可适用与更多的参与者与更多的待估算事项(50-100)。
  • 体恤衫尺寸,用体恤衫的尺寸(XS,S,M,L, XL)来标示事项,可用于估算大量事项。
  • Ordering protocol (排序协议),事项被随机的放置在从“低”到“高”的标度内,每个参与者轮流进行排序操作(改变事项的位置,或更高或更低,并简要讲述理由或跳过)。

近来更有一些学者提出更加激进的想法 #noestimations (不做任何估算)。 这篇文章里不做展开讨论,有兴趣的可以进一步了解一下。最后给出一个我个人的敏捷估算原则,相对没那么激进。

最小化估算投入胜于更精确的估算。

发布者:Cary Bao,转转请注明出处:https://tobeagile.cn/2019/11/04/%e4%bb%80%e4%b9%88%e6%98%af%e6%95%8f%e6%8d%b7%e4%bc%b0%e7%ae%97%ef%bc%8c%e4%b8%ba%e4%bb%80%e4%b9%88%e8%a6%81%e5%81%9a%e6%95%8f%e6%8d%b7%e4%bc%b0%e7%ae%97%ef%bc%9f/

(1)
上一篇 2019年10月30日 上午11:39
下一篇 2019年11月5日 下午9:12

相关推荐

发表评论

登录后才能评论