0%

如何避免计划谬误

前些日子读了一篇 blog,原文是 We’re terrible at predicting time, so do these things instead,内容就是如何克服我们人类不擅长估算时间这一个缺点。

估算不准分两种,悲观的乐观的。悲观的也就是实际用时比计划用时要少,这在工作中我感觉还可以接受,比如上个项目我有两次估算的时间就超出了我的预计,原本以为两天才能完成的数据迁移结果一晚上就完成了,原本以为一个星期才能做完的新需求没想到一天就实现了。这种情况还算好的了,毕竟能将整体预期缩短,还能给自己一个惊喜。

另一种估算自然就是乐观估计了,也是绝大多数的人会犯的错误,心理学上的术语叫「计划谬误」,也叫「规划谬误」。提出这个术语的心理学家认为,我们在做时间的预估时往往会忽略掉以往的历史数据,而单单将注意力集中在即将开始的工作上。这个心理学家指出造成计划谬误有两个关键因素:

  1. 没有将过去类似工作的完成时间纳入考虑
  2. 假设不会遇到任何造成延期的情况

上个月我加入了一个远程创业团队,为期七天的试用期中的最后一个任务是,根据设计图来实现一个页面及其交互。负责人分配给我的时间是8个小时,但我最后完成却用了15个小时。这个例子好像对计划谬误的说明并不是那么准确,因为制定计划的是负责人而不是我,负责人并不了解我的工作速度。但是他也对一些未知情况没有做到一定的预估,比如切图和标注的不完整,还有几个交互上的 API 并没有支持。因为这个任务的延期(其实理论上并没有延期,虽然我没有在8小时内完成这个任务,但是8小时只是预估时间,真正的deadline是两天内,所以我是在deadline之前完成了),以及之前的一个任务上沟通不到位,结果就是试用期结束后团队和我解除了合作。😞

下面就简单说一下避免计划谬误的六种方法。

1. 使用历史数据

也就是利用过往的类似工作经验作为参考进行评估。这个方法的前提自然是要先有一定的经验积累,我认为这也是能够准确预估工作量的基础,经验的多少和估算的准确度是成正比的。

如果是一个人单打独斗的话,比如独立开发者或者独自负责一个项目的话,那么文中推荐的方法是使用计时跟踪 app 来统计自己的任务完成用时。我个人使用的是番茄工作法,不过更多的是让自己集中注意力,统计用时倒是次要的。

2. 让别人来帮忙评估

当局者迷,我们往往会错误地评估自己的项目,但是我们对别人的项目却能做到刚好的预估。所以找一个朋友或者同事来帮忙就是一个非常简单的方法,但是这个朋友和同事最好有着不逊于你的工作能力和经验。

3. 估算出一个范围

原文里引用了美国国防部长拉姆斯菲尔德的一段名言:

据我们所知,有‘已知的已知’,有些事,我们知道我们知道;我们也知道,有 ‘已知的未知’,也就是说,有些事,我们现在知道我们不知道。但是,同样存在‘未知的未知’——有些事,我们不知道我们不知道。

当评估一个任务或者一个项目的时候,应该做到将所有的可能性考虑在内。由于「未知的未知」的存在,增加了评估的不确定性。这里又引出了一个概念,[Cone of Uncertainty](Cone of Uncertainty),直译过来的意思就是「不确定性锥」,也有的人管这个叫做「不确定性雪糕筒」,可能因为这个东西比较像冰激凌奶油下面的筒吧……其实这东西的样子如下:

这个东西用来表示估算的范围,简单地来说就是,将估算时间的四分之一作为最小值,将估算时间的四倍作为最大值,两个值之间的范围就是一个比较合理的估值。那我的例子来算的话,那预估的开发时间就是2小时~32个小时,2小时显然是个不合理的值,所以如果得出的范围明显不合理的话,可以就直接取四倍的最大值,留出足够的时间去解决「未知的未知」。

4. 三点估算法

所谓的三点估算法就是先计算出三个预期:

  1. 最好情况下的预估时间
  2. 最坏情况下的预估时间
  3. 最可能实现的预估时间

因为我们总是乐观地去估算工期,所以第一种的最好情况下的预估时间一般就是我们第一直觉给出的时间。第三种的最可能实现的预估时间可能是基于相似项目的历史数据得出的。第二种的最坏情况下的预估时间就是将可能遇到的问题和延期等等因素都考虑入内得出的结果。

接下来,我们要做的就是简简单单地求这三个数值的平均数,得出的结果就是一个可行性比较高的预估时间了。

5. 计算你的 fudge ratio

Fudge 就是如下图那样的乳脂软糖,我吃的不多,记忆中是非常粘牙的一种糖,而且超级甜。

但是这个 fudge ratio 我看中文世界里并没有对应的概念,也没有一个统一的翻译,那我姑且就翻译成「软糖率」吧。这个比率其实就是用来修正你的估算时间的,那这个比率是怎么算出来的呢?还是基于历史数据,那我的例子来说,预计用时是8小时,但是我实际用时是15小时,那我的 fudge ratio 就是 15/8 = 1.875,所以如果我下一个任务的预计用时是12个小时的话,那实际用时应该接近 12 × 1.875 = 22.5 个小时。同理,如果 fudge ratio 小于1的话,那么实际用时就会比最初的预估用时要少。就像我在上面提到的,历史数据和经验是准确估算的基础。

6. 在一天中心情低落的时候进行估算

心理学家认为生物钟不仅可以控制我们一天中何时精力充沛以及何时专注,还会控制我们感受到创造力、消极情绪以及消极情绪的时刻。

经过调查研究,大多数人会在一天的中间,刚吃完午饭的时候进入到情绪的低谷,这时候乐观的心态也会达到最低值,而这却恰恰有助于做出更实际的时间估算。

每个人的生物钟都是不一样的,夜猫子和早起的鸟他们感受到低潮的时刻肯定是不一样的。大多数人是起床后六个小时就会达到心情的低谷,不过你也可以等到注意力涣散或者疲惫的时候再去进行估算。

最后

估算也是一个不断迭代的过程,只有积累了大量的历史数据才可以得到比较准确的预估时间。对自己的能力有一个量化的评估是很重要的,尤其是像我这样的自由职业者。自己的项目看似时间很充沛,但是项目时间拖长了也就失去了兴趣和动力。做外包的时候,如果不能很好的估算工期的话,要么就是直接接不到活,要么就只能是延迟交付。

欢迎关注我的其它发布渠道