TW洞见 | 看板与利特尔法则

利特尔法则(Little’s Law)作为一个非常朴素的原理,为看板方法奠定了一个理论基础,看似简单的公式背后却有其复杂的一面。

一、利特尔法则

利特尔法则的公式是这样的:

平均吞吐率=在制品数量/平均前置时间

举个例子,假设你正在排队买快餐,在你前面有19个人在排队,你是第20个,已知收银窗口每分钟能处理一个人的点餐需求,求解你的等待时间

如果你已经决定要排队,并且站到了队尾,那么在制品数量就是20(个),平均吞吐率是1(人/分钟)。

从你站到队尾的时候开始,一直到你点完餐,这个时间就是你的“前置时间”。

即使我们没有学习过利特尔法则,也可以轻易地算出来:

    1 = 20 / x
    x = 20(分钟)

因为在一段时间之内,保持工作量饱满的话,我们每天能做多少工作基本是一定的,所以吞吐率基本上不会发生太大变化。

如果这个时候我们想缩短平均前置时间,也就是等待的时间,利特尔法则告诉我们:可以通过减少在制品数量来达成这个目标。

在这个例子中,就是减少排队者的数量。

这也很好理解,10个人的队列和20个人的队列,前者需要等待的时间会更短。 [1]

二、限制在制品的意义

如上面所说,在制品数量和前置时间是成正比的,缩短前置时间的最有效手段就是减少在制品数量。

前置时间的增长会导致交付周期变长,这一点基本毋庸置疑。

前置时间的增长会导致交付的可预测性下降,俗话说“夜长梦多”,长时间停留在某一个阶段会带来一些额外的风险。

如果我们的交付周期比需求变化周期更长,那么会有更多的紧急任务,所以交付周期变长会导致更多的紧急任务。

如果我们管理不好紧急任务的插入,会增大我们的在制品数量。

如果交付团队的可预测性很低的话,那么会影响到IT研发组织和业务部门的信任关系,当业务部门无法预测一个需求提交给研发部门什么时候能交付的时候,那么唯一可行的手段就是一次性把要做的事情全部都压给研发部门,直接增大了研发部门的在制品数量。

同时在制品数量的增长会带来的另外一个后果就是故障发现得很晚,这一点在过去三四十年的软件工程方法论中都得到了验证。

发现的故障需要资源和时间来进行修复,带来的就是在制品数量的上升和前置时间的增长。

以上所有的事情我们放到同一张图中,可以看到下面的情况,实线表示两者之间存在因果关系,同时还是正比的,因增大,果也会增大。虚线表示两者之间存在的因果关系是反比的,因增大,果会减小。

因果回路图

而在这众多因素之中,只有在制品数量是我们能够最有效的直接加以干预的。而只有前置时间我们是可以直接观测的。

就像我们正在开车一样,我们踩油门的时候,速度表会发生变化,从60迈到100迈,但我们真正关心的并不是仪表盘的变化,而是真正汽车行驶的速度。

所以我们采用控制在制品数量的手段,通过观测前置时间的变化来观察我们的改进是否有效,但更重要的是整个系统是否正在向着更好的方向迈进。

三、在制品数量是不是越低越好

我们用直觉感受一下,在制品数量如果越低越好,那限制到1怎么样?限制到0怎么样呢?

很显然,在制品数量如果过低的话,团队成员可能会产生空闲的现象,很大一部分产能会被浪费掉,那在制品数量限制到多少是最合适的呢?

我们都知道,一个任务如果2周能完成,两件任务串行,需要的时间是4周,但两件任务并行,绝不是2周能完成,有可能5周的时间都完成不了,所以直觉上在制品数量过高也不能带来产能的上升。

所以一个朴素的原则就是: 团队中每个人在任意时刻,手中只有一件事的时候,效率是最高的。团队的在制品数量低于这个值,会造成产能的浪费,如果高于这个值,会造成前置时间的变长。

那我们再用定量的方式模拟一下吧。

假设我们有一个三阶段的开发流程:分析、开发、测试,平均每张卡片需要4天时间分析、5天时间开发、6天时间测试。

为了简化计算,我们把分析、开发、测试三个阶段设一个总的在制品数量限制。[2]

模拟看板

当我们有1个分析人员、1个开发人员、1个测试人员的时候,会得到下面这个结果:

WIP

平均前置时间

平均产能

1

15

0.07

2

15

0.13

3

18

0.16

4

24

0.16

5

29

0.16

6

35

0.16

7

41

0.16

8

47

0.16

9

52

0.16

10

58

0.16

折线图

这个实验可以重复,有兴趣的同学可以自己写代码重复一下。

结论

  1. 减少在制品数量可以缩短前置时间,但前置时间的缩短是有极限的,就像我们不可能让10个妈妈在1个月之内完成怀孕的全过程一样。
  2. 增加在制品数量可以提升平均产能,但平均产能的提升是有极限的,1个人每天8小时的产能再想提升只有加班加点。
  3. 最短的前置时间和最大的平均产能不可并存,在“平均每人手头有一件事”的时候,在制品数量稍微小一点,可以达到最短的前置时间,在制品数量稍微大一点,可以达到最大的产能。至于各个组织如何选择,看自己的需求了。

[1]: 道理看似很简单,但放在软件研发领域就变得非常复杂,我们需要平衡需求和产能之间的关系,控制队列长度实际上就是在控制期望和承诺。在尊重事实的前提下,我们尽量让队列的长度变短,不去承诺不切实际的东西。 ↩

[2]: 所谓“排队”,实际上软件开发真正的“收银窗口”就是最终交付的环节,在这个环节之前的所有需求其实都是一个队列,队列的末尾就是我们最近承诺的一个需求。所以一旦我们承诺了无法立刻着手的需求,那么就会产生极大的浪费。 ↩

原文发布于微信公众号 - 思特沃克(ThoughtWorks)

原文发表时间:2015-03-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏黄成甲

怎样成为解决问题的高手(连载四)

在上一篇我们讲了系统思维——透过框架来理解世界的思维方式。这一篇我们继续学习构建框架:自下而上提炼框架。在介绍自下而上提炼框架前,我先补充一些基础、常用的思考工...

27520
来自专栏深度学习计算机视觉

软件测试正交测试法 举个例子

正交实验法的介绍 正交试验法是研究多因素、多水平的一种试验法,它是利用正交表来对试验进行设计,通过少数的试验替代全面试验 在一项试验中,把影响试验结果的量...

3K60
来自专栏逍遥剑客的游戏开发

LowPloy风格的模型导入

36440
来自专栏AI启蒙研究院

简单的巡线机器小车

31720
来自专栏大数据文摘

12月的音乐可视化笔记:我从TOP2000歌曲中,分析了这几年流行音乐的变化趋势

19020
来自专栏星流全栈

编程语言盛宴:IEEE Spectrum最新排行,大数据类是赢家

14530
来自专栏PPV课数据科学社区

教你用大数据做年终总结,提升逼格

一份好的年终总结可以回忆过往,继往开来,痛改前非;可以减轻没有完成前年设立之目标的内疚感;更可以成为给予自己新的一年可以重新做人的假象。可谓是居家旅行、自我麻痹...

31540
来自专栏IT派

要想学机器学习,先科学把妹!

导语:小编今天就让大家放松一下,明天再推技术文章,昨天七夕看到了一篇“好”文章,其实我只是单纯地觉得这些名字太高大上了,爱因斯坦把妹法- -。另外,小编Tom邀...

44190
来自专栏华章科技

谷歌背后的数学原理

在如今这个互联网时代, 有一家公司家喻户晓——它自 1998 年问世以来, 在极短的时间内就声誉鹊起, 不仅超越了所有竞争对手, 而且彻底改观了整个互联网的生态...

10030
来自专栏AI科技大本营的专栏

前几日刷屏号称强过谷歌翻译的DeepL,经实测的结果是......(文末送书)

作者 | Yiqin Fu 最近一个德国的 AI 创业公司 DeepL 很火。他们说自己的机器翻译在盲测中秒杀竞品。DeepL 支持“英德法西意荷波”七种语言,...

33960

扫码关注云+社区

领取腾讯云代金券