前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么敏捷估算采用斐波那契数列?

为什么敏捷估算采用斐波那契数列?

作者头像
袁慎建@ThoughtWorks
修改2021-08-13 16:44:14
1.5K0
修改2021-08-13 16:44:14
举报
文章被收录于专栏:程序袁的专栏

我在ThoughtWorks经历的一些敏捷交付项目中,估算方式有采用人天的“绝对”估算,估算值采用的是自然升序序列,比如1、2、3、4、5... 。也有采用复杂度相对估算,估算值有采用自然升序数列的,最多的还是斐波数列(1,2,3,5,8,13,21,34.....,前头去掉了一个1)。我还听过一种相对估算,估算值采用衣服尺寸,比如:S,M,L,XL,XXL,XXL。由于经验匮乏,这种估算我本人只是听说过,实际中没有经历过,但我对这种估算是心存疑虑的...

那为什么斐波那契数列是被使用最多的呢?是因为它是一组神奇的数字吗?是因为它背后有推动者在推动吗?这些原因可能都有吧。

回到估算活动本身,它注定只是一个估计值,通常不可能做到精确,也没必要做到精确。因为软件开发工作不像流水线上固定的工序这么简单,它面临了很多的不确定性,由于这些不确定性的存在,我们只能凭借已有的知识和经验做出一个估算,知识和经验越丰富,估算会越接近实际。所以,估算只是一个帮助我们更好衡量工作、管理项目交付的手段而已。至于那些试图做出“绝对”精确估算的项目通常会吃闭门羹(预留了巨大Buffer行为的不在本文讨论范围内)。

既然是相对精确的估算,那如何区分两个不同对象差别呢?如果两者看起来差不多,反正都是估算嘛,何不用一个数字代表呢,比如,自然升序序列中的4和5,本身两者差异不大,我好像都用4或者都用5也可以,反正也没那么精确,没必要非得说A是4,B是5。所以,为了体现出两个目标对象的相对差异,通常建议是采用能够有较为明显差异的数值。而且这个差异通常是通过半分比凸显出来的 -- 韦伯定律。

韦伯定律,德国生理学家E.H.韦伯通过对重量差别感觉的研究发现的一条定律,即感觉的差别阈限随原来刺激量的变化而变化,而且表现为一定的规律性,刺激的增量(△I)和原来刺激值(I)的比是一个常数(K),用公式表达即K=△I/I,这个常数叫韦伯常数、韦伯分数或韦伯比率。

针对韦伯定理举个例子。给你两个分别为1斤、2斤中的两个铅球,你会较为容易感受到重量的不同,当给你30斤、31斤重的铅球,你就可能就很难区分两个孰轻孰重了,同样是1斤的差值,但差值比例一个是(2-1) / 1 = 100%,一个是 (31-30) / 30 = 3%。

如何更明显体现出两个对象相对的差异,斐波那契额数列就是一个很好的手段,这个数列中两个数差比接近黄金分割0.618(不信,你计算试一试),这个差异(韦伯常数)已经能够很明显体现出差异了。基于此,你也可以采用翻倍序列,比如1、2、4、8、16....,这个差异也很明显,但这种具有翻倍规律的数字可能会让人不禁想问一个问题 -- 这个工作量真的是那个的两倍吗?即便如此,Scrum Alliance创始人Mike Cohn对翻倍序列给与了一定认可。

在你经历的交付项目中,你有用过其他的估算方式吗?期待你的分享~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档