看板方法是用于高效管理软件开发流程的新技术。看板方法源自丰田的“及时生产”(JIT=just-in-time)系统。尽管生产软件是一项创造性活动,与批量生产汽车有所不同,但是生产线管理背后所蕴含的原理仍然适用。
一个软件开发的流程可以看作是一段自来水管道,特性需求从一端进入,经过改进的软件从另一端涌现出来。
在管道内部,存在着各种各样的工序,有的是非正式的临时工序,有的是非常正式的阶段性流程。在本文中,我们假设一个简单的阶段性流程:(1)分析 需求,(2)开发 代码,(3)测试 软件运行正常。
瓶颈的影响
在管道中的瓶颈会限制工作的流动。管道的整体吞吐量被限制为瓶颈的吞吐量。
用我们的开发管道为例:如果测试人员每周只能测试5个特性,而开发人员和分析人员每周能够生产10个特性,整个管道的吞吐量就只有每周5个特性 ,因为测试人员扮演了瓶颈角色。
如果分析人员和开发人员不知道测试人员是瓶颈,那么测试人员的待办工作就会越堆积越多。
影响就是前置时间增加。并且,就如同库存一样,位于管道中的工作会套牢投入的资金、产生与市场的距离、以及随着时间逐渐失去价值。
最终,影响到质量。为了能够跟上进度,测试人员开始抄近路。最终bug被发布到产品中,导致给用户带来问题,从而影响未来的管道产能。
另一方面,如果我们知道哪里有瓶颈,我们就能够重新部署资源来解除它。例如,分析人员可以帮忙测试,开发人员开始进行自动化测试。
但是,我们怎样才能知道在已知流程中哪里是瓶颈呢?而当瓶颈移动后会发生什么呢?
看板方法可以动态显示瓶颈
看板方法难以想象的简单,但却难以想象的强大。最简单的形式的看板系统包括了一个挂在墙上的大白板,上面有许多卡片或即时贴,这些即时贴按列来放置,每列上方有一个数字。
卡片代表了工作项,列代表了开发工序,卡片会从第一步工序流动到最后一步。每一列顶部的数字用来限制每一列最多允许放置卡片的数量。
看板白板的限制大相径庭于其他任何可视化故事板。在流程中的每一步限制在制品(WIP)数量,可以预防生产过剩并动态显现出瓶颈,以便于你可以在达到不可收拾的程度之前找到它们。
样例
下面的白板展示了这样一种情况:开发人员和分析人员正被阻止开展任何新工作,这种情况会持续直到测试人员空出了一个卡片位置并将下一个工作项拉到测试步骤中。这时开发人员和分析人员就会开始寻找能够帮助测试人员减轻负担的方法。
注意,我们已经将一些列分割成了两列,这是为了用来说明正在进行中的项与哪些已经完成并准备好被下游工序拉走的项。你也可以用一些不同的方式来布局白板。这里用的是比较简单的方式。列顶部的限制包含了“doing”(进行中)和“done”(完成)两列。
一旦测试人员完成了一个特性的测试,就会将卡片移走,并且在“Test”列空闲出一个卡片位置。
现在,“Test”列中空出来的位置可以用开发“Done”列中的一个卡片补充进来。这时,“Development”列就会空闲出一个卡片位置,下一张卡片就可以从“Analysis”列中拉进来,其他列也是这样。