敏捷开发方法(二) 看板

概念

重点关注

  • 关注可视化和管理流程
  • 不依赖迭代,提倡持续连续工作流,使得团队保持专注

核心概念

四个主要原则:

  • 从实际开始;专注增量和渐进性改进
  • 尊重现有方法和角色,培养组织各级领导力

六个核心实践:

  • 可视化工作流程
  • 在制品数量(WIP)
  • 工作项流动
  • 明确规则
  • 确保反馈

建立看板

可视化工作流

  • 绘制价值流图:依据团队实际流程,可视化全过程,并通过与上下游协作部门达成共识,进行价值流图向上下游的扩展;
  • 设置输入和输出边界:在设计看板系统的时候要尽早对在制品控制的边界做出决策,对受控范围内的自身团队的工作提供透明度;
  • 分割进行中和已完成,添加必要的缓冲区或等待队列:缓冲或等待队列增大了系统的在制品值,他们将导致前置时间拉长;但是缓冲和队列可以使工作流动变得平滑;
  • 可视化工作项:
    • 可视化价值:上图中的每一个卡片代表一个价值项,它们可以是功能特征、技术任务、缺陷、重构、环境相关等等以开发为中心的一切工作类型;
    • 可视化价值流动:任务卡片所在的列,表示其所处的阶段,价值流是价值项从左至右的流动过程,是信息的产出过程,也是价值增加的过程;
    • 可视化问题及阻碍:价值流动可能会被阻碍,标识阻碍因素(例如用红色卡片对问题和阻碍因素可视化)并推动其解决,促进价值流动;
    • 可视化队列/瓶颈:最终限制系统端到端流量的是系统瓶颈处的流量,必须从解决瓶颈问题开始;

显示化规则

团队看板系统建立之初,一项有价值的实践必不可少,显示化团队工作的规范,规则。显示化流程规则,是指明确定义和沟通团队所遵循的流程规则,从而让团队和利益干系人就工作协议达成一致。

价值项的“流转规则”是看板系统中最典型流程规则,它定义了一个价值项从一个阶段进入下一阶段所必须达到的标准。


图中,给出了某团队其中价值流转规则的实例,例如流程规则2定义了从UE设计阶段进入待开发开发阶段所必须达到的条件。“流转规则”的显式化,让质量内建于各个阶段——这与精益制造中内建质量的思想是一致的。某些团队使用DoD(定义完成标准)做流转规则不失为定义“流程规则”的简便方法,但应该注意的是流程规则可能需要随着团队和流程改进调整。

除“流转规则”外,其它重要的规则也可以或者需要被显式化,如,团队的工作纪律,协作规则、优先级的定义规则,缺陷处理策略,输入节奏,交付节奏等,我们称之为其他规则。

“流程规则”和“其他规则”可以让研发相关活动有序保质的完成。

初始化在制品限额(WIP)

  • 在制品限额: 明确限制流程中每个状态上最多同时进行的任务数,是看板方法中的一个核心机制,如下图所示,列标题上面的数字标识了该阶段允许的在制品的最大数目;
  • 设置在制品限额的目的:
    • 优化价值流动:限制在制品数量,减少了价值项在阶段间的排队等待,缩短了价值从进入系统到交付的时间,加速了端到端的价值流动;
    • 暴露问题:限制在制品数量,让过去被隐藏的问题,如团队协作不良、需求定义错误、开发环境低效、资源分配不均衡等得以显现;
  • 初始化在制品限额:
    • 工作任务的在制品限额应该按照每个人、每个开发结对或每个协同工作的小团队的平均工作项数量来设置,一般而言,限额数值应该控制在1~3人(/结对/团队)范围内比较合适,业内推荐限额设置公式为 2n-1(n为人数/结对数/小团队数);
    • 可以将工作任务一栏和完成队列归在一起,合并计算在制品限额;缓冲区的限额越小越好,但是其大小要确保瓶颈资源得到充分利用,并足以维系系统中的稳定流动;
    • 无需浪费时间试图设定一个完美的在制品限额大小,初始化之后,需要在使用过程中不断的试验进行调整;
  • 在制品限制形成的拉动机制:在制品数目小于在制品限额时,才可以从前一阶段拉入新的工作。上图中,开发阶段的在制品限制数目是14,而实际在制品数目是6,可以拉入新的工作;需求验证阶段的在制品数是3,达到了上限,就不允许拉入新工作

创建物理看板


使用看板

使用看板进行协调

可视化控制和拉动

  • 首先,在制品限额。即我们看到的每一个栏目上标示的限制数字。我们要控制在那个栏目下区域卡片的数量,不能超过在制品限额的数量。例如图四中UE(2)栏目的在制品限额=2,当前没有卡片在那个区域,我们可以从输入列中拉入2张卡片到UE栏目,并开始UE设计工作。
  • 其次,拉动策略。当我们要从输入列中拉入卡片时候,需要根据拉动策略,如工作项类型,到期日,工作项在队列中停留的时间,以及优先级选择合适的卡片到UE栏目。拉动并不是随便拉动,需要根据拉动策略选择工作项。
  • 最后,工作项受阻和延期。根据进入队列的时间和实际日期对比,可以判断出某个工作项是否长期滞留或者受阻。一旦工作项受阻,需要将受阻问题卡片黏贴到这个工作项上以作标示。受阻问题卡片常见表现为,前置工作项卡片,管理问题卡片,或者缺陷卡片。团队需要优先排除受阻问题。让受阻工作项流动起来。

每日站立会

  • 每日站立会是看板管理中的一项活动,聚焦在工作项的流动性问题的协调和解决。会议的组织者一般是项目经理或产品经理,参与人员为一为包括,业务,需求,设计,测试和看板上参与价值流产生和传递的干系人。
  • 站立会的步骤一般是组织者先进行看板的走读。所谓看板的走读,即从后往前,从右到左逐一检查栏目下空间的工作项卡片,主要关注在制品限额是否已经到达上限和受阻和延期的工作项。组织者针对看板的受控项提出问题。然后团队成员简短讨论产生问题的原因,解决方案,并承诺何时可以解决该问题。另外,针对影响流动的其他并未在看板上展示出来的问题组织需要相关人员会后讨论,并协助最终把问题解决。
  • 这种关注流动性问题的站立会,可以让更多人参与进来,同时不会导致会议时间持续过长,我们建议站立会大约15分钟左右。
  • 另外,看板每日站立会来源与Scrum敏捷开发过程中的每日站立会,由于看板上关注了价值流转换中每个人的具体的工作项,每个工作项都可以看到当前的负责人,所以不必再让每个人讲述,昨天做什么,今天计划做什么,遇到了什么障碍类似的问题。需要特别注意的是工作项卡片上必须标示了当前工作项的负责人

调整在制品限额

  • 如果一开始将在制品限额设定得过低,这时候团队可能会发现,在看板墙上可以看见大量代表问题的阻碍项,过小的在制品限额意味着几乎每一件事情都会变得举步维艰,许多人会无事可做而处于空闲状态;例如:开发队列的在制品限额我们设定为4,但是我们有5个开发人员,这样的在制品限额就有可能造成开发人员的产能剩余,工作闲置;
  • 相反的,如果在制品限额设定得太高,那就不能起到在制品限额的可视化问题及预警作用,可能直到问题失控才会引起大家的重视; 例如,下图中开发队列的在制品限额我们一开始设定过高(14),开发的队列不断输入,过了一段时间之后,我们会发现过多的开发造成了等待队列的大量堆积,整个看板系统的流通遇到瓶颈,在这种状况出现之前,我们就应该通过合理的在制品限额来暴露问题
  • 对于能力比较强且有较高成熟度的组织,由于预期之外的问题很少,所以可以考虑采用约束较为严格的在制品限制规则,对于成熟度较低的组织,把在制品的限制规则设得比较宽松为好,开始时,设得大一些,通过创建持续改进的驱动力,将其逐步调低,所有的在制品限额都需要通过看板系统不断的试验进行调整;
  • 在有了相对合适的在制品限额后,可能会有一些意想不到的变异性因素会导致上游步骤变成一个临时瓶颈,看板系统在该处的在制品限额会让整个工作流停下来解决该处的瓶颈,避免系统产生赌塞和过载,当障碍被排除时,系统便可重新恢复流动;

建立交付节奏

交付节奏是指以固定频率交付可用软件的模式。稳定交付节奏十分重要,定期交付有利于建立信任,缺乏可预测性会破坏信任。同时能够引导团队能够围绕交付目标开展工作,并降低了每次交付的协调成本,提高工作效率。

Scrum使用固定时间盒sprint来获得稳定的节奏,一般1-4周。迭代开始时候,确定代办项,然后开始一系列的分析,设计,开发,测试,重构等活动,这些活动都要基于假设代办项粒度足够小,并假设上述一系列活动都可以在时间盒内完成。

看板方法抛弃了固定时间和概念,把优先级排序,开发,交付等活动分离开来,分别对待这些活动,允许每种活动根据自身特性来调整节奏。同时看板方法更倾于更频繁的交付节奏,甚至可以支撑随需或者临时交付。

看板对于交付节奏的处理,主要把创建故事或需求条目的时间点与交付频率分离开。当准备交付时,其他工作仍然处于进行中状态。即输入节奏和交付节奏分离。好处显而易见,由于故事优先级排序活动参与人与交付活动参与人可能有不同,协调活动也不一样,按照各自的节奏和方式工作效率更高。

确定交付节奏并非一件容易的事,交付需要付出协调成本和事务成本,同时要考虑带来的市场价值。频发发布可以降低市场风险但会增加发布成本。假设50人团队,一次发布需要抽出10人投入3天来完成一次代码的交付,那么2周一次发布频率可能带来的成本较高。所以选择怎样的发布频率要根据实际情况来定义。

看板使用过程中,会逐渐形成适合团队的发布频率,也要不断提升效率提升交付节奏。

建立输入节奏

  • 输入节奏:与参会干系人达成共识的定期召开会议的时间间隔,会议中按照优先级来选择代办请求项,填充到持续工程的输入队列中以便开发,通常我们也把这种活动叫做优先级排序节奏;
  • 确定优先级排序节奏:节奏固定的优先级排序:通过与参加优先级排序决策的所有干系人达成一致的以合适的频率定期召开会议,建立优先级排序节奏;一般的建议是,这种会议越频繁越好,这样,输入队列就会越小,从而使系统中的浪费越少,在制品越少,前置时间越短,与此相关的成员和组织间就会更频繁的开展协作;要努力寻找开销最小且最为有效的可能的协调方案,合理情况下,越频繁举行的优先级排序会议越好;
  • 随需或临时性的优先级排序:以固定频率定期召开优先级排序会使事物成本及协调成本逐步降低,而对于会议的效率和节奏都很高的高成熟度组织,可以选择随需或者临时进行的优先级排序;

度量看板

度量和管理工作流

看板系统是可预测的,专注于保持系统的顺畅流动。物理看板可以提供基本的度量数据,包括在制品数量,前置时间等,同时可基于累积流图进行分析和障碍的解决。电子看板为管理提供了更多的度量数据,为团队的管理和报告提供支撑。

度量元

度量方法

累积流图


  • 左面的斜线是累积已经开始的价值项(如用户需求)数目;
  • 右面斜线是累积完成价值项的数目;
  • 两条斜线的垂直距离表示某个时刻已经开始但还没有完成的价值项数目,也就是在制品数量;
  • 两条斜线的水平间距表示价值项从开始到完成的平均前置时间,也就是从概念到交付的响应时间,它是价值流动效率的一个重要衡量;
  • 在制品数量与周期时间成线性关系:在制品数量减少,带来平均前置时间缩短,即流量速率的提升;
  • 斜线的斜率反应的是价值流量速率,也就是每周(或固定时间段内)可以交付的价值项数量,这里的价值可以是故事点数、功能点数等等,团队或组织的目标是要持续提升交付速率;
  • 可以识别工作中的瓶颈:在开发的流程中,我们可以将其中每个不同环节(分析、实现、测试、部署、完成)的工作项数量用不同*颜色的带状区域可视化出来,观察一下,是否有一个区域的在变窄,同时在流程中相对于这个环节之前的环节正在变宽(说明队列正在增长,如下两图示例),如果我们看到了这种情况,我们就在吞吐量最低的地方找到了瓶颈,着手去解决它。

准时交付率

通过将预估前置时间和实际前置时间进行对比,展示的是团队的可预测水平,度量一个工作项是否能够如期或者提前交付,估算的准确性是表明系统是否高效运行的一个信息指示器;我们也可以通过度量最近月份以及年度的准时交付率,来判断团队交付能力趋势的提升

初始质量

缺陷意味着成本,它会影响看板系统的周期时间和流量速率,度量缺陷与在制品总量和流量速率的趋势是有意义的,我们期望看到缺陷率越来越低,同时周期时间和流量速率不断提升