96

在估计敏捷软件开发中用户故事的相对大小时,团队成员应该将用户故事的大小估计为 1、2、3、5、8、13……。所以估计值应该类似于斐波那契数列。但我想知道,为什么?

Wikipedia 上对http://en.wikipedia.org/wiki/Planning_poker的描述中包含了神秘的一句话:

使用斐波那契数列的原因是为了反映估计较大项目时固有的不确定性。

但是为什么较大的项目应该存在固有的不确定性呢?如果我们进行更少的测量,意味着如果更少的人估计相同的故事,不确定性不是更高吗?即使在较大的故事中不确定性更高,为什么这意味着使用斐波那契数列?有数学或统计原因吗?否则,使用斐波那契数列进行估计对我来说就像是 CargoCult 科学。

4

6 回答 6

79

斐波那契数列只是指数估计尺度的一个例子。使用指数尺度的原因来自信息论。

我们从估计中获得的信息比估计的精度要慢得多。事实上,它以对数函数的形式增长。这就是较大项目的不确定性较高的原因。

确定指数尺度(归一化)的最佳基数在实践中是困难的。与斐波那契标度相对应的基数可能是最佳的,也可能不是最佳的。

这是对数学证明的更详细解释:http ://www.yakyma.com/2012/05/why-progressive-estimation-scale-is-so.html

于 2014-07-22T10:36:25.223 回答
40

在斐波那契数列的前六个数字中,有四个是素数。这限制了将任务平均分解为更小的任务以让多人并行工作的可能性。这样做可能会导致一种误解,即一项任务的速度可能与从事这项工作的人数成正比。2^n 系列最容易出现此类问题。斐波那契数列实际上迫使人们一一重新估计较小的任务。

于 2012-02-21T11:44:15.370 回答
17

根据这个敏捷博客

“因为它们的增长速度与我们人类可以感知到有意义的幅度变化的速度大致相同。”

对对。我认为这是因为它们为本质上非常高级的早期规模调整(不是范围界定)练习(确实有价值)增添了一种合法性(斐波那契!数学!)。

但是您可以使用 T 恤尺码获得相同的结果......

于 2012-08-24T05:51:11.680 回答
15

你肯定想要一些指数的东西,这样你就可以用恒定的相对误差来表达任意数量的时间。您估计的精度也很可能与您的估计成正比。

所以你想要一些东西:a)整数 b)指数 c)简单

现在为什么用斐波那契而不是 1 2 4 8?我的猜测是,这是因为斐波那契增长较慢。它在 goldratio^n 中,并且 goldratio=1.61...

于 2012-02-20T14:10:10.580 回答
7

斐波那契数列只是项目规划扑克中使用的几种数列之一。

很难准确估计大型工作单元,如果您的数字过于“现实”,很容易陷入数小时与数天的讨论中。

我喜欢http://www.agilelearninglabs.com/2009/06/story-sizing-a-better-start-than-planning-poker/的解释,即斐波那契数列代表一组我们可以直观区分的数字它们之间的大小不同。

于 2012-02-20T14:11:34.477 回答
4

我使用斐波那契有几个原因:

  • 随着任务变得越来越大,细节变得越来越难以掌握
  • 任务估计是团队中任何人完成任务的小时数
  • 并非团队中的每个人都对特定任务拥有相同数量的经验,因此也增加了不确定性
  • 人类对更大且可能更复杂的任务感到疲劳。虽然对于计算机来说,复杂两倍的任务需要双倍的时间才能解决,但对于开发人员来说可能需要更多的时间。

当我们将所有不确定性加起来时,我们不太确定实际应该是多少小时。如果我们可以判断这个任务是否比我们已经估计过的另一个任务更大/更小,那么最终会更容易。随着我们增加任务的规模/复杂性,不确定性的影响也会被放大。我很乐意为一项看起来是我之前估计的 5 小时的两倍大的任务估计 13 小时。

于 2012-02-22T16:54:19.173 回答