本文转载自公众号:精益软件互联网之家
看板方法(Kanban)是近年来最热门的敏捷和精益开发方法。越来越多的案例表明,它能够改善协作、优化管理,显著提高交付速度、质量和灵活性。看板开发方法的规则简单,但其有效实施依赖于对原理的理解、对原则的坚持和实践的应变。本文将整体介绍看板方法的起源、原理和基本实践。
看板源自精益制造。尽管具体实践不同,看板开发方法和精益制造中的看板原理是一致的。从精益制造出发,可以帮助我们更好地理解看板的本质。
精益制造是上世纪50年代起,从丰田公司实践中演化出来的,又被称为“丰田生产方式”。1990年麻省理工的James P. Womack等几位教授提炼总结了丰田的实践,出版《精益生产方式——改变世界的机器》一书,精益制造的概念开始为世人所认识和效仿,直至今日,它仍然是最先进的制造方式,是制造业共同追求的目标。
看板(Kanban)一词来自日文,本义是可视化卡片。如 图,看板工具的实质是:后道工序在需要时,通过看板向前道工序发出信号——请给我需要数量的输入,前道工序只有得到看板后,才按需生产。看板信号由下游向上游传递,拉动上游的生产活动,使产品向下游流动。拉动的源头是最下游的客户价值,也就是客户订单或需求。
丰田推行精益制造(丰田生产方式)和看板实践,取得了巨大成效。它既带来直接经济结果,又带来深层次的文化和思想变革。精益是制造业的革命,是继大规模生产之后的全新范式。精益思想的影响早已超越制造领域,精益服务、精益医疗,甚至精益行政都被广泛实践,产品开发也不例外。然而,开发和制造特点不同,决定无法照搬精益制造的实践。产品开发需要从自身特点出发,发展完备的实践体系。
精益产品开发概念出现于上世纪90年代,2000年后逐步成熟。这中间起到推动作用的代表人物有Mary Poppendieck,Don Reinertsen 和 David J. Anderson等。他们促进了精益思想和产品开发特征的结合。
Mary Poppendieck是精益软件开发的早期推动者,她的思想在敏捷软件开发社区被广泛引用,2003年到2010年,Mary和他的丈夫 Tom Poppendieck先后在三本书中总结了这些思想,并提出了操作建议。Don Reinertsen致力揭示产品开发流的本质,并提出相匹配的原则方法。在2010年出版的“The Principles of Product Development Flow”一书中,Don提炼了精益产品开发的175条原则,这可能是迄今为止对产品开发最本质和深入全面的阐述。但面对175条原则,从哪里开始是一个问题。
2006年在Don Reinertsen的启发和鼓励下,David J. Anderson 最早在软件开发中应用看板实践,其后不断完善,形成了看板开发方法,这是精益产品开发走向适用和普及的重要里程碑。看板的推广速度超过任何其它敏捷开发方法,Version one的调查报告显示看板是增长最快的敏捷实践,2011年使用了看板的敏捷团队占24%,2010年这个数据是18%。
2010年David在他的著作”kanban – Successful Evolutionary Change for Your Technology Business”一书中,详细介绍了看板的价值、原则和实践。书中总结了看板开发方法的五个核心实践,它们是:可视化工作流、过程规则显式化、限制在制品数量、度量和管理流动、以及协同改进。接下来,我们将以这五个实践为线索,介绍看板开发方法的概貌。
3. 看板的五个核心实践
产品开发的加工对象——信息——是抽象和不可见的,这提高了价值流的管理难度。看板开发方法把可视化工作流作为基础实践,先让价值和价值流动具体可见,然后才是管理和优化。下图是看板开发方法中的一个典型可视化案例,被称为看板墙(Kanban wall)。
图中的每个卡片代表一个价值项,如:功能需求、缺陷、技术概念验证等。它们所在的列,表示其所处的阶段。这些价值项,每经过一个阶段(图中的列)都会产生新信息,价值得以增加。例如,需求经过分析阶段,注入了新信息,价值更高。价值流是价值项从左至右的流动过程,是信息的产出过程,也是价值增加的过程。
价值流动可能会被阻碍。比如,编码因对第三方接口错误而无法进展;测试因没有设备而停滞。图中,红色卡片是对问题和阻碍因素的可视化。标识阻碍因素并推动其解决,促进价值流动。
最终限制系统端到端流量的是系统瓶颈处的流量,改善端到端的价值流,必须从解决瓶颈问题开始。发现看板墙上的瓶颈并不困难,找到最长的队列就可以了,这就和交通系统的瓶颈处总是出现长长的等待车队是一个道理。上图中的队列出现在测试处,不难看出测试是价值流动的瓶颈。
价值、价值流,以及问题和瓶颈的可视化,是改善价值的起始,也是其它看板实践的基础。
显式化流程规则,是指明确定义和沟通团队所遵循的流程规则。价值项的“流转规则”是看板开发方法中最典型流程规则,它定义了一个价值项从一个阶段进入下一阶段所必须达到的标准。下图给出了某团队其中一项流转规则的实例,定义了从分析阶段进入开发阶段所必须达到的条件。
“流转规则”的显式化,让质量内建于各个阶段——这与精益制造中内建质量的思想是一致的。除各个“流转规则”外,其它重要的流程规则也可以或者需要被显式化,如,团队的协作规则、优先级的定义规则等。
流程规则显式化更重要的意义在于,它是“持续改进”的出发点和结果的载体。没有显式化的规则作为依据,讨论改进就没有基础,而变得主观和随意。改进的结果通常也需要落实到显式的流程规则当中,让改进稳步进行,避免低效的反复。显式化规则不是为了限定团队的工作方式,而是为了帮助团队更好的改进。这就像丰田的生产现场必须有明确操作规程,但如果这个操作过程长时间没有变化也同样是一个问题,因为持续改进是精益思想的核心之一。
3.3 核心实践3:限制在制品数量
限制在制品数量是看板开发方法的核心机制。如下图所示,列标题右面的数字标识了该阶段允许的在制品的最大数目(进行中和完成的价值项的和)。在制品数目小于这个数字时,才可以从前一阶段拉入新的工作。图中,分析阶段的在制品限制数目是3,而实际在制品数目是2,可以拉入新的工作。测试阶段的在制品数是3,达到了上限,就不允许拉入新工作。
限制在制品数量形成一个与精益制造类似的拉动机制。一个环节有空余的能力(在制品数目未达上限)时,从上游拉入新的工作,拉动的源头是最下游的交付或客户需求。与产品制造类似,通过拉动系统可以:
1) 加速价值流动:限制在制品数量,减少价值项在阶段间的排队等待,缩短了价值从进入系统到交付的时间,加速了端到端的价值流动。
2) 暴露问题:限制在制品数量,让湖水岩石效应产生作用。它让过去被隐藏的问题,如团队协作不良、需求定义错误、开发环境低效、资源分配不均衡等得以显现。
许多号称使用“看板”的团队,并没有限制在制品数量,他们当然也不会得到上述收益。精益制造通过看板向上游传信号,拉动生产。而看板开发方法通过限制在制品数量形成拉动系统,缺乏这一核心机制就不成其为看板,对此,Corey Ladas 这样描述 “复印的美元不再具备货币的内涵,因此不再是钱;同样,缺少在制品数量限制的看板墙,也不能叫看板”。在制品数量的限制值及其演化,将在以后的文章中讨论。
3.4 核心实践4:度量和管理流动
快速、顺畅的价值流动是看板开发方法的目标。快速流动带来快速的价值产出和快速反馈,它对业务成功至关重要;顺畅流动,意味着稳定和可预测的价值交付能力,这与流动的绝对速度同等重要。
度量为改善价值流动提供方向参考,同时为改善的结果提供反馈。看板开发方法没有定义特定的度量方法,累积流量图是实际应用较为普遍的一种。下图是一个典型的累积流量图,左面的斜线是累积已经开始的价值项(如用户需求)数目,右面斜线是累积完成价值项的数目。两条斜线的垂直距离表示某个时刻已经开始但还没有完成的价值项数目,也就是在制品的总计数量。两条斜线的水平间距表示价值项从开始到完成的周期时间,也就是从概念到交付的响应时间,它是价值流动效率的一个重要衡量。斜率反映的是价值交付速率,也就是每周可以交付的价值项数量。
累积流量是一个综合的价值流度量方法,可以通过它得到不同维度的信息。例如,我们设想限制在制品的数目,可以缩短周期时间、而对交付速率影响有限。但实际效果如何还要通过事实来检验,通过实验和度量,图中的数据基本验证了这一假设,让改进更有方向,结果更可衡量。同样的数据有不同的呈现方式,周期时间图基于相同的数据,它突出了在制品数目和周期时间的变化趋势,以及两者的关系。从图中可以看出,周期时间的降低略滞后于在制品数量的降低,这符合精益理论,因为只有在积累的队列被处理完后,对交付周期的改进才能够显现出来。而周流量图反应的是系统流量(每周交付价值的数量)的变化趋势,为改进提供了信心。
以上只是一个度量实例。度量不是目的,而是管理和优化价值流的手段。对于特定的组织,度量什么应该由目标和现状决定。
3.5 核心实践5:协同改进(Improve Collaboratively)
应用可视化、限制在制品数量、以及价值流度量,能够暴露产品开发中的问题和瓶颈。但发现问题还不够,重要的是如何去解决它们,对此看板开发方法给出了两个建议——团队协作和应用科学方法和模型。限制在制品数目本身就能够激发协作,例如在前面的看板墙,可能会出现以下的顺序场景
1) 测试遇到问题(如输入质量太差)而被阻塞 ,在制品数量达到上限
2) 因在制品数量达到上限,根据规则,测试不能从上游(实现)拉入更多的工作
3) 实现阶段已完成的工作无法进入下游测试环节,实现阶段的在制品数量很快也达到上限
4) 实现要想开始更多的工作,就必须关注下游的问题,并做出反应,如提高本环节的输出质量,或者是给予帮助
5) 实现和测试的协作使价值流动更加顺畅
上图是”kanban – Successful Evolutionary Change for Your Technology Business”一书的封面插图,它反映了发生在看板墙前面的协同改进。看板开发方法的基本假设是:产品开发的目标不是单个环节效率的最大化,而是端到端价值流的提升。看板通过拉动机制暴露了限制价值流动的瓶颈,并激发团队协作,改善价值流动。
解决瓶颈问题的方案可能在瓶颈处,如临时加班、分配更多资源、或相邻环节的支持等。但很多时候解决瓶颈问题的方案在别处,例如提高瓶颈之前环节的输出质量,调整职责分配,甚至是重新设计工作流。
对于偶然出现的问题,只需要临时性解决方案。如突发性高负荷,可以通过暂时的相互支持解决。而对于系统性问题,如持续的负荷不均衡,则需要长期的方案和更加系统和科学的模型指导,如系统思考、精益思想、排队论等,这些模型本身不属于看板方法的一部分,但它们让长期的改进有章可循,以后的文章,我将中深入地探讨其中的一些模型。
David J. Anderson这样定义看板开发方法:
“看板定义了一种增量式、渐进地改变技术开发和组织运营的方法。它的核心机制是限制在制品数量的拉动系统,通过它暴露系统运作(或流程)的问题,并激发协作以改进系统。”
这当中的核心是,看板并不是一个开发框架或流程,而是引领变革的方法。每个组织有自己特点,所面对的市场,使用的技术不同,经历和所处的阶段不同,他们值得也应该拥有适合自身特点的方法流程。
看板的实施正是从组织流程现状出发,首先可视化实际工作流并显式化流程;在此基础上,限制在制品数量形成拉动系统以暴露系统问题和瓶颈,度量价值流动以发现改进机会;并通过团队的协作,不断改进和演化出合适的流程、方法,实现一个高效、顺畅的产品开发价值流。
适应组织的具体情况,和发现合适的变革路径,这两点是敏捷实施的最大困难,看板给出了被证明可行的方案。这可能是看板能够在国外社区迅速推广并成功运用的原因,而在国内,看板这方面的价值还远未被认识和发掘。
作者介绍:
何勉,拥有超过14年的行业经验,承担过产品开发中的各类角色,拥有丰富的项目管理和团队管理经验,先后负责和管理过软硬件开发、测试及过程改进团队,国内最早的精益和看板方法的实践者传播者,综合应用各类方法推动组织的敏捷实施和互联网化改造。InfoQ《解析精益产品开发》系列文章的作者,Agile China 2013大会主席。
联系客服