限制在制品,是不是很扯淡:看板认证课学员作品

2021-03-11 09:00:00
敏捷助理
原创
224
摘要:如何限制在制品?


在制品限制到底是神马?

在制品就是Work in Progress的缩写。顾名思义,WIP就是团队正在做的工作项的数量。在制品(WIP)限制设置了工作流的每种状态下可以并行的最大工作量。

在制品限制其实就是在特定的时间里有多少工作项(也就是看板上的卡片)在活动的一种约束。虽然一般来说,在制品限制用于管理团队看板的能力,但是这样一种约束是可以被用于个人、团队甚至组织层级的。在制品限制可以被用在看板整个“进行中”的部分,或者用于泳道,或者泳道和列一起来用也未尝不可。使用在制品限制没有什么特别的方法,可以参考的一个通用规则是“需要有所约束”。这就强迫我们基于优先级、时间敏感度和不同项目延期所带来的开销作出取舍的决定。如果一个团队从来没有达到过在制品限制的上限,说明他们的WIP限制定的太高了。

为什么要限制在制品

因为在制品限制可以更轻松地识别团队工作流程中效率低下的地方。在价值流动出现阻塞的时候,瓶颈就清晰可见。如果没有在制品限制,那么我们可以遇到如下问题:

一:工作上下文切换的浪费

同一个时间,越多的在制品任务,意味着越多的上下文切换,在工作切换之间就会产生浪费。如下图所示,极端情况下,在团队只工作在一个任务上的时候是没有任何任务切换带来的浪费。但是如果同时存在四个任务,那么任务间切换带来的浪费将会是巨大了。


二:反馈时间变长

在聊这个问题的时候我们先来看看利特尔法则,利特尔法则是排队理论的基础,它定义了WIP和吞吐量和周期时间直接的关系。理解了利特尔法则,也就理解了在看板方法中为什么要限制在制品。

利特尔法则

利特尔揭示了在一个商店中平均顾客人数、顾客的到达率和在商店中的平均等待时间之间的关系。看起来有点平淡无奇的公式,但是我们可以将其视作看板的基础。

利特尔法则可以用下面的公式来表示:

L = λ W

其中参数的含义如下:

L = 商店中平均顾客人数
λ = 顾客的到达率
W = 商店中的平均等待时间

我们举个例子来说明下这个公式。比如客户到达率是每小时20人(λ),他们平均在商店里停留0.25个小时(W)。这意味着在任意时间我们可以在商店中看到的平均顾客数量为5个人(L)。

L = 20 * 0.25 = 5

下面这个星巴克里排队的图可以很生动的解释这个排队理论:


利特尔法则在看板团队中的应用

如我们所熟悉的那样,在看板方法中我们使用了其他的概念:在制品,吞吐率和周期时间。我们来看看利特尔法则怎么用的。

WIP = Throughput * LeadTime

其中参数的含义如下:

WIP = 在制品 = L
Throughput = 吞吐率 = λ
LeadTime = 周期时间 = W

WIP是团队正在工作的工作数量。在我们实际的软件开发中,这个数量可以是卡片、用户故事、场景或者其他类似的工作项。


我们可以把吞吐率放到这个公式里来时因为利特尔法则有个基本的假设,就是这是个稳定的系统。这里的吞吐率就是是需求交付出去的速率,在一个稳定的系统中,它跟利特尔原始公式中的到达率是一样的。比如说每星期五个story就是一个吞吐率。

周期时间指的是一个需求在系统中花费掉的时间,比如说如果一个story从开始到结束用了20天,那么它的周期时间就是20天。这个公式其实可以灵活运用,比如说我们可以用“订单周期时间”来衡量从客户下单开始的时间,或者“开发周期时间”,用来衡量工作在这个工作项上的时间。

从上面的说明和公式我们可以很轻易的看出来:

如果想增加吞吐率,那么就需要限制WIP

如果想加快进度,比如减少周期时间,同样还是需要限制WIP

否则对于一个具体的需求来说,如果不限制在制品,那么我们获得反馈的时间将会变得更长,这很不敏捷。而通过降低在制品数量,就能很快的缩短交付周期,加快交付节奏。

三:质量下降

同时进行太多的任务,一是会造成团队的赶工,人总是希望把自己的任务清掉,赶工带来的一定是质量的牺牲;同时太多任务也会让团队模糊了优先级的概念,可能会出现较少客户价值的功能被先实现,造成浪费;太多的任务还会带来集成、测试和反馈的滞后,这会造成质量的下降,增加缺陷数量,从而进一步降低效率。

四:缺乏激情

看板上的任务多了,总有空闲的任务放到看板上,一定会削弱团队去解决问题和阻塞的欲望。团队不会蜂聚在一个任务或者目标上,也不会分享任务,更不会创造一个鼓励合作的环境出来。有的只是一个类似于特性工厂的工作组。长此以往,团队就会缺少激情和动力。

既然不限制在制品会有这么多的问题,那么让我们开始限制WIP,也就是所说的“STOP starting START finishing”


如何限制在制品

一:通过价值流来计算

我们知道,我们的看板是通过价值流映射以后打造出来的,那么同样的我们可以通过价值流映射的数据来计算WIP的限制。



从这张价值流图上我们可以看到增值时间为16天,而非增值时间为9.5天。那么团队的价值流动效率就是16/(16+9.5)= 63%。假定人数为10,我们可以用这么一个公式来计算WIP数量:

总WIP= 团队人数/团队流动效率 =10/63% = 16。也就是说看板上所有的WIP大概是16个。

这样我们就计算出来在看板上每个阶段应该有多少WIP。

二:通过看板上的元素来定义

比如我们可以通过团队人数来定义:WIP=团队人数;WIP = 团队人数*2, WIP = 团队人数*1.5等等。也可以根据泳道来限制:每条泳道最多可以有多少WIP,这种方法的好处是可以根据不同泳道的优先级来定义WIP,让优先级更高的泳道占有更多的资源。也可以用看板上的列来限制WIP,我们方法一里的计算就是根据列来做出限制的,不过我们可以不通过计算,通过团队里拥有不同技能的人的数量来大概分配这个WIP限制。甚至我们还可以用组合的方式,比如结合泳道和列来一起限制WIP。

WIP限制的调整

WIP限制定下来以后可以做出调整吗?答案当然是肯定的。我们一开始定的WIP限制不管是计算出来的也好,还是大概根据人数泳道定出来也好,可能不一定完全符合团队的实际工作状态,在工作中也可能会发生增加或者减少或者合并工作某些工作步骤的情况,这种情况下也需要对WIP限制作出相应调整,团队人数发生变化,团队技能发生变化等同样也带来调整的必要。回顾会是一个调整的好时机。怎么知道到了调整的时候了呢?下图是一个清晰的示例:


如图所示,如果我们发现人总是处于闲置状态,说明我们的WIP限制定的太低了,反之如果任务总是处于闲置状态,那么说明WIP限制定的太高了。

限制在制品的反模式

WIP限制会根据需要提高,因此团队不会再遇到任何限制。(“技术债务”)。WIP可以调整,但是不是随意调整,尤其是为了团队拿任务的限制而做出调整更是不可取。

每个人的小本本上都有一个很大的“影子任务”,以掩盖他们原本空闲的时间。看板的打造就是将每个人的小本本变成大家的大本子,除了看板上应该不存在其他任务。

团队成员无所事事,等待更多工作投入,而不是蜂拥而至。WIP的限制的使用是为了让团队聚焦价值流动,鼓励合作而不是只扫自家门前雪,不管他人瓦上霜的。

与改善工程实践或团队流程相比,优先考虑将更多的人/小时投入瓶颈。瓶颈是需要被暴露出来的,而不是通过人力掩盖。优先要做的是看看瓶颈上有什么可以改进的,否则我们会一直重复昨天的故事。

和所有的敏捷实践一样,WIP限制也是知易行难,在实际工作中的尝试和调整当然必不可少,本文一切理论只是起点不是终点。
联系我们
联系人: 柴老师
电话: +86 185 1045 6582
Email: clientservice@hardenx.cn
地址: 北京市海淀区善缘街1号立方庭1-105