看板与敏捷的关系
看板与敏捷的关系是,看板是敏捷开发的一种方法。看板方法实际上可以说是精益产品开发的重要实践,与其他敏捷方法相比,它具有更强的可实施性,提升端到端价值交付能力,更好支持系统的改进。而且它也可以和很多其他敏捷方法无缝连结。
1. 什么是看板
关于看板的定义这里引用一下David Anderson一段话。
KanBan is an approach to change management that employs a Kanban system onto an existing process context in order to provoke evolutionary and incremental change.
这句话意思就是说,Kanban可以被引入进任何开发框架去支持和推动持续性软件开发,不管你的开发模式是Agile的还是传统的开发方式。这个一种软件开发流程管理的方法,保证软件的持续集成并且不让你的开发团队超负荷。很程序猿是不是应该很喜欢听到这句 “不让你的开发团队超负荷”。 根据团队能力,限定WIP(work in progress)的tasks数量。
2. 为什么看板
1)可视化你的工作流程。所有的task的进度会全部显示Kanban上,每一个人都可以一目了然了解进度和流程。
2)限制WIP中的tasks数量。一般情况下,这个数量是等于Team中的developer数量。
3)管理并优化流程。当WIP中的某一个task完成时,在ToDo中的优先级较高的task会被移到WIP中,这也是为什么当一个项目中需要经常更改优先级时,会选择Kanban的原因。
4)量化开发周期。
5)缩短开发周期。这个其实可以理解为发现问题,解决问题,从而找到更科学的方法提高开发效率。
6)变push system (just in case) 为 pull system(just in time)。新的case只能在team有能力情况下再开始。
建立看板系统的3个实践:
1)可视化价值流:产品开发中的价值流是不可见的,这样也就很难管理和优化。为此,看板方法首先要让工作和工作流可视化。
首先可视的是用户价值,产品开发的目标也是交付用户价值,工作也应该从用户的角度来组织,图片中每个蓝色的卡片代表一个用户的价值,典型的是一个可以验证,可以交付的用户需求。
接下来是用户价值端到端的流动过程,这里的端到端是指价值提出到价值交付的整个过程。
最后所有问题和瓶颈也都要可视化,问题指的是阻碍价值流动的因素,包括需求不明确,技术问题,外部依赖等。而瓶颈包括价值积压等。
2) 显示化流程规则
价值流动过程也是团队协作交付价值的过程。为了更好的协作,团队还需要明确价值流转的规则。如下图所示,流转规则是价值从看板上一列到下一列必须达到的目标。
显示化指的是明确并达成共识,这点和可视化不能混为一谈。
所谓显示化流程规则只明确价值流转和团队协作的规则并达成共识。这个也是团队改进的基线,团队可以进行修正。
3)控制在制品
在制品(WIP)指的是在某一环节内所有的工作–包括进行和等待的。上图中红色数字就是在制品。
环节内在制品数目小于这个数目的,可以从上一个环节拉入新的工作,否则不允许拉入。
控制在制品数量可以是环节内并行工作降低,当个工作项的完成加等待时间缩短,工作项从进入看板到交付的时间也会缩短。因此,加入用户价值的流动。
而且更重要的是,控制在制品数量可以帮助团队暴露问题和瓶颈。如果测试的在制品数目达到上限,就不能在拉入新的工作了,团队应该聚焦于完成当前的工作,及时处理出现问题,如果测试这里长期积压,那么说明这个地方已经成为了团队工作的瓶颈,更早的暴露问题所在。