看板方法的核心实践

看板方法是 Jira 精益看板在项目实施落地过程中的指导思想。Jira 精益看板能够有效支撑看板方法的核心内容在项目团队中落地。

看板方法创始人 David J.Anderson 在《看板方法:科技企业渐进变革成功之道》中对看板方法的核心实践进行了高度总结。看板方法具有 6 个核心实践内容:可视化、限制在制品、管理流动、显式化流程规则、建立反馈环路、协作式改进。

本节介绍 Jira 精益看板在落地看板方法核心实践上的具体体现。

可视化

可视化是指实现价值流和工作项的可视化,借助可视化能力实现团队更高效的协同协作。

Jira 精益看板属于平台化工具载体,与物理看板在可视化管理上具有明显差异。物理看板主要以物理白板作为载体绘制价值流,以不同颜色的便签代表工作项。 Jira 精益看板以 Jira 平台为载体,在 Jira 精益看板整体能力的 “活动的Sprint” 页面可以直观地看到价值流以及工作项。

如图11-9所示,我们可以在看板头部从左往右看到整个看板的价值流状态设计。可通过列状态快速识别该状态下有哪些工作项,也可以通过列状态后方的数值获知对应列的工作项数目。通过快速搜索功能,可以筛选出符合搜索条件的工作项并呈现。

image 2023 11 19 20 06 01 415
Figure 1. 图11-9 Jira精益看板的价值流效果示例

Jira 精益看板对单个工作项也进行了出色的可视化设计,如图 11-10 所示。通过工作项便签标识问题类型,可以获知对应工作项属于哪种需求问题类型;通过经办人头像以及经办人的名称,可以获知对应工作项的当前处理人;通过标题概要,可以获知便签所代表的需求;通过 Epic 内容,可以获知对应工作项所属演进方向或模块分类;通过产品负责人,可以获知对应工作项的产品人员;通过已更新时间,可以获知需求最新产生更新的时间(已更新时间在面板配置时也重点考虑选择使用 “需求期望上线时间” 进行替代,这样即可在精益看板上快速获知各个需求的期望交付时间,便于参考这一时间维度优化需求排期);通过列中持续时间天数的原点标识,可以获知需求在对应列的持续时间情况。

image 2023 11 19 20 07 00 008
Figure 2. 图11-10 Jira精益看板的需求工作项便签效果示例

我们可以通过看板快速感知需求在经办人、Epic、需求问题类型、价值流状态等维度上的整体分布情况。

为了更好地打造 Jira 精益看板的可视化效果,提供如下操作建议。

  • Jira 的用户头像不可采用系统默认的空头像,空头像不具备可视化属性,会给团队带来的一定的识别困难。建议每个团队成员采用个人喜欢且有标识性的图片作为头像。

  • Jira 项目的项目标识英文编码在具有项目标识性的同时,编码长度不超过 6 个字母。在编码较长的情况下,Jira 问题编号也较长。必要的简化可增加可视化效果,也便于记忆和手动输入检索。

  • Jira 项目的 Epic 须根据演进需求或所属模块的特点,在命名上具有标识性。当存在多个产品共用一个 Jira 项目的情况时,对 Epic 的有效命名可以降低理解难度,可采用 “产品英文缩写标识-演进需求简称” 的格式对 Epic 命名。Epic 的长度也须适当控制,避免因 Epic 过长而无法在看板的便签中完整展示,建议控制在 10 个字符(含英文)以内。

  • 看板中的工作项概要描述建议有所提炼,避免概要描述以流水账的模式记录。

  • 看板工作项便签中的扩展显示字段在 Jira 精益看板定制案例中选择的 “经办人” “产品负责人” 和 “已更新” 3个字段,可按需进行修改和调整。扩展字段在实际处理工作项时,建议进行有效的填充。

  • 用户可对看板所使用的浏览器进行适当的页面缩放以获得更佳的全局可视化效果。因 Jira 精益看板扩展的价值流状态列较多,在未进行浏览器页面缩放的情况下,我们会看到状态列以及每个列中的工作项存在明显的挤压现象,影响使用体验。建议将看板所使用的浏览器页面缩放至 80%,具体缩放比例可按最优可视化效果自行调整。

限制在制品

限制在制品一方面减少团队过载,以更好地实现项目事项的流动交付,另一方面充分暴露团队协作、资源分配等各类问题,为进一步改进流程提供着力点。

在制品是指需要完结才能交付最终客户价值的半成品,在 Jira 精益看板案例中,除了处于已上线状态的事项属于完成的成品,处于其他价值流状态列的事项皆属于在制品。

如图11-11所示,Jira 精益看板已经可视化显示了每个价值流状态列对应的工作项数目,同时也支持设置状态列最大工作项承载数目,当超出最大工作项承载数目时,对应列的列头会以红色标识警示超出限制。

限制在制品对于团队来讲并不意味着可以做更少的工作,而是指减少并行处理的工作。从整体效果来讲,限制在制品帮助我们在周期时间内更迅速地完成更多的工作。

并行处理的工作越多,团队成员在工作项之间上下文切换的频次就越高,每一次上下文切换对于整个交付流程来讲可能都是一种浪费,成员在这种情形下无法聚焦于单项工作,从而不利于快速交付工作。

image 2023 11 19 20 10 46 844
Figure 3. 图11-11 Jira精益看板的在制品数目警示

在制品较多时,容易产生批量交付的情况,在批量交付的场景下,不利于缺陷问题的快速反馈,由此带来的缺陷修复成本也较高,引入的质量风险也较高,不利于工作事项的快速流动。更多的在制品意味着更多的风险与开销,风险在于团队不能快速应对变化,成员更容易被周遭环境的变化所影响;开销在于更多的并行工作意味着更多的协调成本,由此会产生更多的新工作,成员的时间和精力被更多的协调工作所占据。总之,限制在制品能够使我们所处理的工作事项获得更快的流动和更短的前置时间。

为了更好地实现限制在制品,提供如下操作建议。

  • 建立团队对限制在制品的认知。

  • 将限制在制品应用于需要的状态列。限制在制品无须对所有列的在制品进行限制,可按照职能参与方进行分解,如产品侧可对“需求-产品设计中”中的在制品数目进行限制,而无须强制限制“需求-待评估”“需求-待评审”阶段的在制品数目。建议当对应的状态列包含“需求-产品设计中”“开发-设计中”“开发-开发中”“开发-自测中”“测试-测试中”价值流状态时,重点考虑所归属状态列的在制品设置。

  • 在制品数目可在实践中持续优化。我们限制在制品,并不是说在制品越少越好,在制品在过少反而会引起人力资源的闲置。建议各职能方根据对应项目下的人力规模进行预估,如产品侧成员2人,可设置“需求-产品设计中”状态列的最大在制品数量为4,后续再根据实践效果进行优化和调整。

  • 控制在制品的规模。我们提及更多的是对在制品的数目进行限制,实践中也需要对在制品的规模进行必要的控制。当我们的需求属于一个重大功能时,若未对此需求进行必要的拆解,将其直接流动到开发侧,则开发团队也会存在因为这个单一需求而过载的情况。建议这种规模较大的需求在流动到“开发-设计中”环节时,务必进行必要的拆解,拆解后的小需求尽可能满足局部交付。

  • 及时处理限制在制品后暴露的问题。借助看板的可视化能力,我们能够很容易地识别每个状态列的在制品情况。当“开发完成-待测试”出现明显的在制品堆积时,我们可判断测试资源是否在当前团队中达到瓶颈,从而评估并调整已有工作或申请增添资源以缓解在制品的堆积。

管理流动

管理流动旨在实现工作项在价值流各环节中的顺畅流动,持续快速地交付最终价值。 Jira 精益看板的可视化能力能够帮助我们获知整体工作项的流动情况。

Jira 精益看板针对工作项的流动情况建立了可视化的持续天数标识,如图11-12所示,持续天数标识表示工作项所在状态列的周期。持续天数标识的点数越多(点数越多,越靠后的点的颜色越明艳),对应工作项在该列中停留的时间越久。当鼠标指针移至持续天数标识区域时,会提示具体的停留天数。由此,我们可以借助工作项的持续天数标识掌握对应工作项的流动情况,对整体看板中流动停滞或阻碍的需求进行必要的评估和处理。

image 2023 11 19 20 12 47 964
Figure 4. 图11-12 工作项持续天数标识

我们可借助快速搜索能力来快速了解需求流动的情况。如建立近一天更新问题的快速搜索条件,可以快速可视化呈现最近一天产生状态流动行为或问题内容更新的工作项。

为了实现 Jira 精益看板的管理流动能力,提供如下操作建议。

  • 限制在制品的数量与大小。已在 11.2.2 节进行阐述,此处不再赘述。

  • 限制批量流动,实现持续交付。批量流动是对看板上 3 个以上的需求同时由某相同状态流动切换至相同的另一种状态,如需求统一由“需求-待评估”状态迁移至“需求-产品设计中”状态,或者统一由“准备好-待开发”状态迁移至“开发-设计中”状态。这种批量流动模式会对稳定的流动和可预测性带来影响,同时也会造成人力资源在过程处理中产生局部空闲或局部过载的情况。如开发人员已完成需求开发任务,需要等待需求任务积累到指定数量,才能处理新的需求任务,这样开发人员的等待就是人力资源的闲置。当需求任务统一进入开发过程,开发人员在有限的时间下并行兼顾多项需求任务,容易产生人力资源过载。

  • 质量内建,减少浪费。质量是整个交付过程都需要关注的重要指标。质量内建是指在交付过程的每个环节或每个职能都对所负责的过程及交付进行质量把控,避免把质量把控的压力倾斜至测试环节或测试人员身上。质量内建是有效减少返工的重要手段,更是增强有效流动的必要条件。

  • 可产生必要的等待,按需集中处理“需求-待评审”状态的工作项。有效的流动背后,我们需要追寻更高效的流动。有的等待是因为人力资源受限,加上需要对在制品进行控制所产生的,如处于“准备好-待开发”状态的需求开发任务需要等待满足可处理条件时,才能进入后续的处理;而有的等待恰好是为了集中进行统一处理,在“需求-待评审”环节产生必要的等待,反而能够提升团队间的协作和减少工作打断。

  • 使用看板组织每日站会,关注整个组织的流动情况。流动需要项目团队的全员参与,如果团队中的每个人仅对自己负责的任务进行流动状态管理,是无法有效提升协作效率的。团队协作的前提是信息资源的透明、共享和传递。借助精益看板的高度可视化能力,能够实现项目团队掌握需求全局、整体需求的阶段变化或沟通并解决阻碍问题,从而提升团队的工作效率和效果。

  • 提升后方主动性,牵引流动。我们对于流动的理解,更多偏向于前方环节的人主动把已经满足交付条件的需求推给后方环节。而精益看板则期望实现后方环节基于需求的紧急程度、进展情况,拉动前方环节进行协同交付,这样有利于改善后方职能团队的被动接受意识,作为后方职能也能主动参与项目的整体交付。

显示化流程规则

显示化流程规则旨在明确工作项价值流的处理或状态切换须遵循的规则。通过显示化流程规则,实现拉通、引导或约束整体交付流程。

价值流状态列的设置呈现了工作项的流转规则,每个价值流状态列都蕴含着相关的迁入准入标准。利益干系人和团队需要就流程规则的使用达成一致。比如 “准备好-待开发” 状态的准入需要产研测对需求的理解达成一致,没有明显的需求产品设计问题,从而减少低质量需求或尚未讨论的需求混入该阶段。

关于 Jira 精益看板的显示化流程规则,提供如下操作建议。

  • 重点关注跨职能状态的规则设置。精益看板中的需求从开始的填充到最终的交付验收,经历了多个职能角色的协作和过渡。当需求的处理过程在职能角色间切换时,如果直接处理人发生变更,更容易存在交接协同的问题。显示化流程规则的实践,重点关注跨职能状态的规则设置和达成共识。在笔者的实践中,产品人员与开发人员之间的“准备好-待开发”跨职能状态、开发人员与测试人员之间的“开发完成-待测试”跨职能状态,不仅是对应需求状态的切换,更需要上游职能角色交付适当的文档材料便于下游职能角色处理。

  • 规则设置嵌入质量内建原则。在笔者的实践中,在“需求-待评审”“开发-自测中”阶段重点进行了质量内建原则的嵌入。其中“需求-待评审”阶段要求产研测三方对产品侧设计交付的产物进行评审,“开发-自测中”阶段则要求开发人员对即将交付测试的产物进行自测。

建立反馈环路

建立反馈环路旨在实现过程问题的闭环处理,通过反馈环路建立发现问题与解决问题的渠道,以优化并提升精益看板或项目处理的执行效果。

关于建立反馈环路的实践,提供如下操作建议。

  • 开展日常精益晨会。精益看板毕竟只是一个工具,在精益晨会上借助精益看板的可视化能力对已有进度、项目过程、目标协同信息进行共享和讨论,构建流动能力。精益晨会是精益看板持续落地和不断优化与改进的源泉。

  • 开展阶段性项目回顾。精益晨会聚焦于时效性较强的项目,如最近一天内的工作进展,对于阶段性或周期性的项目总结,更需要开展阶段性的项目回顾复盘。如在 Sprint 关闭时点前后,组织 Sprint 工作整体审视回顾,或两周、1个月等固定频次进行项目执行工作的整体审视与回顾。通过阶段性的项目回顾复盘,提升组织成熟度,实现组织持续改善行动的能力。

  • 以度量数据建立流动和效能感知。我们可基于 Jira 平台原生提供的报表能力度量和感知指定项目或指定周期内的项目整体流动情况。借助度量数据更立体更完整地感知整体流动和效能情况,需要建立埋点和进行必要的基础开发,可通过附录B的效能度量示例进行了解。

协作式改进

协作式改进旨在引导团队根据自身情况、项目情况进行必要的优化,实现看板方法的持续演进。

可视化、限制在制品数量,能够暴露产品交付中的问题和瓶颈。只发现问题还不够,重要的是如何去解决它们。有时解决瓶颈的方法可能是临时加班、分配更多的资源等。很多时候解决瓶颈需要提高瓶颈之前环节的输出质量,甚至是重新设计工作项的价值流。

对于偶然出现的问题,一般只需要临时性的解决方案,如应对突发性高负荷,可以暂时分配更多资源。而对于系统性问题,如持续的负载不均衡,则需要长期的方案和更加系统、科学的模型指导。精益软件开发的 7 个原则是一个典型的指导模型,该模型本身不属于看板方法的一部分,但它让长期的改进有章可循。

关于精益软件开发的 7 个原则,提供如下解读。

  1. 消除浪费

    在应用程序开发中,浪费是指不会给客户带来任何商业价值,并且不会提高正在开发的产品的质量或加快项目的发布时间。

  2. 增强学习

    软件开发是一个不断发现、不断学习的过程,在这个过程中会涌现出很多新的知识和信息,充分利用这些信息将帮助团队把软件做得更好。通过尽快交付,快速获取信息,能有效增强我们对未知事物的理解。不要过早框定自己,保持灵活性,以便获取新知识。

  3. 尽量延迟决策延

    迟决策意味着在获得足够的信息之前,不要草率下决定,或者在不得不做出决策的时候(影响业务目标时)再下决定。决策尽可能基于充分的信息分析,而不是依赖于对这些信息的假设。如果提前做出决定,意味着必须做各种假设,这将造成一定的风险,譬如在需求不清晰的时候给出项目的时间估计;在没有充分调研的情况下决定采用某种技术。与延迟决策配套的是快速响应的能力,如果做不到快速响应决策,是无法延迟决策的。这也意味着系统的架构设计要能容纳变化,高内聚、低耦合。

  4. 尽快交付

    尽快交付能够使客户更早看到产品,使产品更快投入市场,更早回收产品价值。尽快交付缩短了用户对产品的反馈循环,避免创造客户不需要的内容。尽快交付还可以暴露价值交付流程中存在的问题,促使这些问题得到妥善解决。

  5. 授权团队

    工作在一线的人最了解实际情况,他们知道现在发生了什么,知道当前情况下的最佳应对方法。要让他们熟知每天使用的工具、流程、规则以及背后的原因,完全具备足够的知识提出改进意见。获得授权的团队会产生更强的动力和更好的创造力。

  6. 质量内建

    在开发过程中,要求软件生命周期之间参与的各个角色都需要实时对软件的质量负责。确保软件在交付到下一环节前有质量保证。其核心目的就是减少因为质量问题导致的返工。

  7. 着眼整体

    整体的表现,通常受制于各局部之间的协调配合。对局部的优化,有时候会影响整体的协调一致,若局部优化不能带来整体的改善,就是没有价值的。