使用斐波那契数来估算敏捷项目的工作量的原因是什么?

我知道这与测试没有严格的关系,但是测试人员仍然是计划的一部分,了解这一点对估计测试工作量很有用。

评论

是5还是6? 5还是8? 8或13?如果存储桶距离较远,则有助于选择复杂性存储桶,而不是连续数字。这与数字本身无关,它们是“模糊性复杂性概念”的代名词,保持它们“遥远”以避免争论n或n + 1。

按照博士的说法,随着复杂度的增加,分辨率变得越来越难,并且很难在有用的离散级别之间精确地确定难度。斐波那契产生的有用的铲斗尺寸反映了这一点。

#1 楼

它们反映出不确定性的程度随着您向远处看以及具有更多依赖项的较大任务而增加。您可能非常有信心可以在一天内完成,而且至关重要的是,所涉及的因素几乎没有不确定性。因此,很容易地说这应该是3而不是2,或者应该是1而不是2,并且具有相当高的确定性。人类参与其中,并且要考虑许多可变因素。
当您向外看时,在较大的任务上,不确定性会变得更大。
鉴于此,人们了解到,尝试以这种方式准确地预测未来,例如估计一项任务将需要18天而不是17天,这可能是一个困难。愚蠢的努力是因为,在18天之内,您不太可能获得准确做出估计的信息。这就是为什么我们使用斐波那契。当您认为自己的工作成绩为13时,存在很多不确定性,最好将“下一个”工作水平设为21,因为这实际上是您可以提前实际使用的精度。
现实世界中另一个不确定性将来会如何进一步增加的示例-无论您是1天还是2天去购物,都具有很高的确定性。如果您没有牛奶,那又要多1天和2天!但是,今天,您不知道几周后会发生什么情况,对吗?所以这就是为什么它从8跳到13的原因-在这5天内,您将再次需要更多的牛奶,但是您现在无法预测该范围内的哪个特定日期。
了解到您无法准确预测以有用的方式实现未来是我们现在以敏捷方式发展的很大一部分。特别是关于未来。

#2 楼

斐波那契数列只是估算工作的一个例子。一些团队还使用以下序列: br />原因是故事的重点越大,周围的不确定性越大,估计的准确性就越低。

评论


这些都不是指数的(任何两个连续数字之比必须为常数)。第二个是多项式(平方增长)。它们是非线性的,其二阶导数(或等效值)大于零。可能有一个词。

– Peter Mortensen
20 Mar 6 '20 at 14:57

@PeterMortensen:您要查找的单词是“超线性”:它的增长比直线快。

–马可·卡皮塔尼(Marco Capitani)
20 Mar 6 '20 at 14:58



@PeterMortensen:斐波那契数列不采用指数b ^ n的形式,但确实表现出指数增长。本质上,斐波那契级数大约按比例增加(即黄金比例),这意味着您可以使用指数x来近似其增长,这意味着它具有教科书(但近似)的指数增长速度。在数学上不是精确的,但在非数学环境下,其足够接近以至于被称为指数。

–更
20 Mar 6 '20在15:21



@PeterMortensen第二个序列是2 ^ n,根据定义,它是指数的。多项式(平方)的增长将是1,4,9,16,25,36 ...

– fəˈnɛtɪk
20 Mar 6 '20 at 15:58



第一个也是指数的,因为它的下限是2 ^ n

– Pedro A
20 Mar 7 '20 at 2:49

#3 楼

常见的估算方法包括数值大小(如1到10)或大小(如XS,S,M,L,XL,XXL,XXXL或斐波那契数列)1、2、3、5、8、13、21、34等br />
使用斐波那契数列的原因是为了反映估计较大项目时的不确定性。较高的估计值通常意味着该故事在细节上未得到很好的理解,或应分解为多个较小的故事。较小的故事可以更详细地估计。



这是一个太大的问题。


重要的是,团队对规模有共同的认识/>使用它,以便团队的每个成员都对此感到满意。


评论


能否将这解释为估算13与5和8的总和一样困难?

–伴侣Mrše
20 Mar 5 '20 at 8:43

绝对不。将数字视为相对努力的度量,以便您可以在它们之间进行选择。但不要将它们视为可以添加的数学。那就是“ 5个人应在4天之内完成7天”的方法,这种方法在复杂的软件开发领域迅速失败,在软件开发领域中,达到既定目标意味着放弃质量。

–迈克尔·杜兰特(Michael Durrant)
20 Mar 5 '20在10:30



也被称为(神话中的男人月),因为“ 9个女人在1个月内不能生一个孩子”

–迈克尔·杜兰特(Michael Durrant)
20 Mar 5 '20 at 10:31

@MateMrše虽然没有义务13的硬度与5和8的硬度相同,但是如果您的团队可以做到,则很方便。它使分析速度变得更加容易。您可以按照每周的积分数来谈论,而不是一些复杂的向量。就个人而言,我曾在一个团队中工作过,我们选择使用代表工作类型的点颜色。例如,众所周知,调试很难计时,因此我们对它的跟踪与其他任务不同。为什么?因为这样做很方便。

–Cort Ammon
20 Mar 7 '20 at 2:56

#4 楼

在所有这些答案中我都没有看到的一个概念是,在一个简单的1到10的范围内,人们可能会陷入困惑:某个东西是3还是真的是4?如果另一个人认为应该是2而不是3怎么办?

通过使用斐波那契数列,您消除了一些“头发分裂”现象。

#5 楼

破坏者:没有科学的理由。

斐波那契增长很快,因此人们在达到巨大价值之前会有更多选择。因此,它鼓励将工作分解成小块。

如果最小的典型工作需要1个小时,则大块可能需要8、9、10,...,16,甚至32小时。

但是,如果最小的作品需要1个故事点,并且在斐波那契增长,那么大件作品可能只需要8或13或21,并且只要您拉伸34故事点-选择而不是24个选项。

评论


斐波那契并没有指数级增长(尽管在13/21之后接近,接近黄金分割率,约为1.6180339887498948482)。任何两个连续数字之间的比率必须为常数(斐波那契不是这种情况)。大于零的二阶导数(或等效值)并不表示指数。例如,它可以是正方形或三次方(不是指数)。

– Peter Mortensen
20 Mar 6 '20在15:06



讨厌破坏您的剧透,但确实有科学原因。

– Patrick McElhaney
20 Mar 6 '20 at 19:06

@PeterMortensen参见math.stackexchange.com/questions/2981007/…尽管fib不是指数序列,因为没有所需的恒定比率,但是对于足够大的值,有指数函数将其上下限制呈指数增长。您似乎对这两个术语感到困惑。

– Pete Kirkham
20 Mar 7 '20 at 11:57

#6 楼

关于这个刚刚发布。

关键思想

假设您想知道一项任务将花费多长时间。您看一下问题并估计将花费一小时的困难/复杂度。在小时结束时,它还没有完成。您已经意识到有关该问题的某些信息,就好像您从头开始一样。现在所需的时间的合理/最小估计是多少?片刻思考,您意识到这应该是您已经知道的复杂程度加上刚发现的复杂程度。此时旧的复杂度为零,因此您将1和0相加即可得到新的1估计值。以此方式继续,您将获得以下斐波那契数列:

0,1,1,2, 3、5、8、13、21、34、55,...

每个步骤都满足以下黄金分割率,因为该序列产生了最有效的下一个估计值

+ b / a = a / b

或更明确地

new_estimate_of_complexity = new_complexity + old_known_complexity

new_estimate_of_complexity / new_complexity = new_complexity = old_known_complexity

其他问题

但是您问,这是否意味着我总是从头开始?如果我必须告诉他们我认为这将花费8个小时,那么人们会感到不高兴,但现在还要花费13个小时。想了一会儿,就会意识到如果我们只更新时间,那么当我们有8个时,估计13只会再增加5个小时,就好像顺序是相反的。

..., 55、34、21、13、8、5、3、2、1、1、0

相同的逻辑仍然适用。好像我们从这些较高的数字中的一个开始,并且随着时间的推移,我们给出的估计值就较小。

此外,我们可以按相同的数量(例如8)缩放序列中的每个数字。 br />
0、8、8(2天),16(四天),24、40(一个工作周),64、104(〜2.5周),168(〜一个月),272, 440(冲刺),...

此缩放数字说明问题解决者需要了解问题的时间和原因。平均而言,对于每个人和每个人来说,8小时通常是最好的起点,因为它在以下所有问题之间取得了平衡:

给出简短估计的风险。
给出冗长估计的风险。
计算中断。
估计问题的复杂性时出错。 br />
不是什么

这与任务的不确定性无关。相反,这与我们所知道的有关。已知的复杂性。

与人的感知无关,但确实会影响我们的感知。是的,13确实看起来确实比8更大,而不是更大。

这与猜测无关,人们在猜测比例因子时通常会假设这一点。显然,确定这个数字可能会更加严格。

缩放与使用诸如2之类的不同倍数是不同的。这将有效地包含斐波那契数列,我们知道这是已知的关于问题的复杂性。其他序列正在对未知和已知进行假设,这就是为什么它们效率低下的原因。
分成较小的故事以重置时钟,既没有必要,也没有好处。任何人都可以使这个问题比实际问题小吗?有人有时间机器,所以我可以补课吗?两个方面都没有。但是,当您重置时钟时,您就隐藏了问题发生的风险。合法估计为8个小时的问题与从440个小时重置后的8个小时是相同的。

参考文献



原始答案< br黄金比例


评论


“想一会儿,您意识到这应该是您已经知道的复杂度加上您刚刚发现的复杂度。此时旧的复杂度为零,因此您将1和0相加即可得出新的1估计值。继续以这种方式,您将获得以下斐波那契数列:“我不明白。斐波那契数列是“旧数字加上之前的数字”。您说的是“旧的复杂性加上刚发现的复杂性”是相同的。为什么您刚发现的复杂度等于您先前对总复杂度的估计?

–JiK
20 Mar 6 '20 at 12:57



#7 楼

Jeff Sutherland(Scrum的共同创始人)在博客文章中回答了这个问题。它起源于美国国防部关于估算的研究。


然后,兰德大学的研究人员研究了估算器可以选择的数字的影响,发现线性序列给出的估算比指数增长的一组差数字。对于那些感兴趣的人,最近有一些数学上的争论。然后,如果要统计上可证明的最佳估计,则问题是要使用的指数级增长序列。斐波纳契数几乎但不是十分指数,并且具有的优点是它是所有有机系统中看到的增长模式。为什么斐波那契数列在自然中会重复?


#8 楼

尚未提及的原因是它很好地支持将任务/用户故事拆分为两个(不相等)的较小故事-将8拆分为5和3,以此类推。
当然,同样的如果将它们组合在一起,则为true(如果数字是连续的)。

评论


一个8也可能分成两个5s或两个3s或一个5和一个2,依此类推。子任务应单独进行估计,而不应强制遵循原始估计。他们可能会花费很多时间,但是如果他们不这样做,您应该不会感到惊讶。

– CJ Dennis
20 Mar 9 '20 at 19:08

#9 楼

我认为主要原因是因为相对尺寸的估算更容易。与之相比,它更大或更小。如果您从远处看不同的建筑物,您可能会说它的大小是原来的两倍,但是要正确确定准确的高度要困难得多。对于敏捷工作,这意味着,如果花了2天,另一种类似的复杂性可能也要花2天。不确定因素。说一批工作需要8个小时,但这并不意味着它会在一天内完成。大概需要两天,因为没有人可以有效地工作8个小时,但是项目经理已经将估算值卖给了昨天期望的客户。估算值越大,风险越高。

现在为什么要使用斐波那契呢?斐波那契数列是自然大小,自然界中的大多数事物都具有这些相对步骤。因此大脑已经习惯了这些比例,因为它们无处不在。例如,您手中的骨头也遵循这种模式,叶子,贝壳等也是如此

#10 楼


这是一个方便的数学序列,其增长近似指数且不太陡峭
这是唯一的数学序列,可以将任务分为2个任务,其估计值是序列中的前两个数字,例如拆分可以重复进行,直到所有子任务的大小都为1


评论


@Flater counter nitpick:这是唯一的序列,按照我的回答中的规定,可以重复进行拆分,直到所有子任务的大小都为1。

–波西米亚风格
20 Mar 8 '20 at 18:21

#11 楼


II,我想请您在阅读之前真正尝试回答/估计我提出的每个问题。这个答案的目的恰恰是使您了解人们在不知道确切答案时会如何估计某些东西。没有比您自己的头脑更好的老师了。



因为它反映了人类如何本能地思考事物

哪个数字恰好在1到9 ?


大多数人会说5,因为5-4 = 1和5 + 4 =9。


似乎很明显,对吧?但是,当您看到没有受到普通教育“污染”的人(例如,儿童和偏远的部落成员)时,您会注意到他们都同意您错了。


他们的推理是3在1和9之间,因为3/3 = 1和3 x 3 = 9,这反映了我们认为它是5的原因,但是它使用乘法和除法,而不是加法减去。


这里的解释比我能提供的要好得多。但是,我将举一个这样的例子:

我将向您介绍三个人。百万富翁,亿万富翁和亿万富翁。如果考虑他们的财富,您会直觉地说亿万富翁坐在他们中间,对吗?

这是一个有趣的事实:如果您总结一下钱的数量,就需要给1000个百万富翁,使每个人都成为亿万富翁,而您决定将这笔一次性款项提供给(原始)亿万富翁,那只会使他们成为一个亿万富翁。
知道这一点,您对这些数字的解释应该有所变化,并且应该更直观地理解这三个数字彼此之间不是等距的。 >如果您仍然不相信,那么另一种思考方式是:


百万秒是12天

十亿秒是31天年


查找之前先进行猜测。我会花钱,使您做出的任何真实猜测都太低了。


*一兆秒是316个世纪


一般来说,当以初始值的百分比表示时,人类更有能力估计值的增/减;这实际上是对数标度所做的。

今天在股市上损失了十亿美元的亿万富翁,将与在股市上损失了50万美元的百万富翁一样沮丧。我们认为这是相等的,因为两个数字都代表原始值的50%,因此它成比例地相等。

但是,当您单看货币数额时,它们远不相等。它们相差三个数量级,这实际上与您没有区分我今天早上买的是50美元还是50,000美元的杂货一样。

这种人类对数思维的直观行为是为什么估计是对数(呈指数增长)而不是线性(呈恒定步长增长)的根本原因。不应忘记为什么将其称为估算值:我们吐口水是因为很难正确地估算出它。开发并非自然而然的直觉,准确地预测开发是开发中最困难的部分之一。给人类一种天生就能理解的工具(对数刻度),意味着他们可以将更多的精力集中在他们应该考虑的事情上:计划的开发工作。任何具有指数增长的序列都可以。但这是我的直觉猜测,斐波那契的指数增长(即黄金比率)在指数增长的过多与过少之间达到了自然平衡。

#12 楼

迈克·科恩(Mike Cohn)在他的《敏捷估算与规划》一书中说,他最初使用1、2、3、5、8、13、21作为序列,直到客户对他说:“您必须非常有信心将大小准确估计为21不是20或25英寸。他意识到21太精确了,因此将其更改为模糊的值20。
8大于5且小于13。它远大于3且小于20。一些团队使用其他序列,例如加倍:1、2、4、8、16,但是,在我看来,这太精确了。似乎声称16几乎是8的两倍。我更喜欢修饰的斐波那契数列的模糊性。如果一项任务是8任务的两倍,那么它可能是20任务,因为我们倾向于低估而不是高估。它还允许“大50%”,因此比8大50%是13,又稍微膨胀了。
我发现斐波那契数列在精度和模糊性之间具有适当的平衡。但是,斐波那契数列只是一个用于估计每个任务大小的序列。显然,每个团队都应该使用适用于它的价值观。如果您发现其他顺序对您的团队更有效,请使用它。