什么是看板?
看板是一个日语术语,它表示招牌或广告牌。 丰田汽车公司一位名叫 Taiichi Ohno 的工业工程师开发出看板,以提高制造效率。
虽然看板是为制造而创建的,但软件开发也存在许多相同的目标,例如提高流量和吞吐量。 软件开发团队可使用看板指导原则和方法更快地提高其效率并向用户提供价值。
看板原则
采用看板需遵守一些可能与团队以前的方法不太相同的基本做法。
可视化工作
了解开发团队的状态和工作进度可能很有挑战性。 工作进度和当前状态通过视觉来呈现时更易理解,而不是作为工作项列表或文档来显示。
工作可视化是看板主要通过看板面板来解决问题的关键原则之一。 这些面板使用按进度组织的卡片来传达总体状态。 将工作可视化为面板上的不同状态的卡片有助于轻松了解项目当前所处位置的总体情况,并确定可能影响工作效率的潜在瓶颈。
使用拉取模型
从历史上看,利益干系人通过将工作推送到开发团队来请求功能,且通常期限紧张。 如果团队必须走捷径从而在规定时间范围内提供功能,质量就会受到影响。
看板侧重于保持一致的质量水平,而在考虑完成工作之前必须满足这些质量水平。 为了支持此模型,利益干系人不会对已满负荷运转的团队推送工作。 相反,利益干系人会向积压工作添加请求,以便某一团队在有剩余容量时将其拉入自己的工作流。
施加 WIP 限制
由于频繁且成本高昂的上下文切换,尝试同时处理过多工作的团队可能会降低工作效率。 团队非常繁忙,但工作却没有完成,从而导致不可接受的超高提前时间。 限制团队一次可处理积压工作项的数量有助于突出焦点,同时减少上下文切换。 团队当前正在处理的项目被称为正在进行的工作 (WIP)。
团队会决定 WIP 限制,或是一次可处理的最大项目数。 一个纪律严明的团队会确保不超过自己的 WIP 限制。 如果团队超过 WIP 限制,他们会调查原因并努力解决根本原因。
度量持续改进
为了实践持续改进,开发团队需要一种方法来度量有效性和吞吐量。 看板面板提供工作流中各工作状态的动态视图,以便团队可针对流程开展试验,并更轻松地评估对工作流的影响。 采用看板进行持续改进的团队会使用提前时间和周期时间等度量值。
看板
看板面板是用于实施看板做法的工具之一。 看板面板可以是物理面板,也可以是显示按列排列的卡片的软件应用程序。 典型的列名称有待执行、正在执行和已完成,但团队也可自定义名称以匹配其工作流状态。 例如,团队可能更喜欢使用新建、开发、测试、UAT 和完成。
基于软件开发的看板显示对应于产品积压工作项的卡片。 卡片包括指向其他项目的链接,例如任务和测试用例。 团队可以自定义卡片,以包含与其流程相关的信息。
在看板面板中,WIP 限制适用于所有正在进行的列。 WIP 限制不适用于第一列和最后一列,因为这些列表示尚未启动或已完成的工作。 看板面板通过吸引对超出限制的列的关注,从而帮助团队保持在 WIP 限制范围内。 然后,团队可确定一系列操作来消除瓶颈。
累积流图
基于软件开发的看板面板的一个常见补充是一种被称为累积流图 (FDA) 的图表。 CFD 演示了一段时间内每个状态中的项目数,且通常跨越数周。 水平轴显示了时间线,而垂直轴则显示积压工作项目的数量。 彩色区域表示卡片当前所处的状态或列。
对于识别随时间推移的趋势,包括推进速度中存在的瓶颈和其他中断问题,CFD 尤其有用。 良好的 CFD 可显示团队处理某一项目时出现的一致上升趋势。 如果团队在 WIP 限制范围内工作,图表中的彩色区域则应大致平行。
一个或多个彩色区域的膨胀通常表示团队流中出现瓶颈或障碍。 在以下 CFD 中,显示为绿色的已完成工作非常平整,而显示为蓝色的测试状态则正在膨胀,它表示可能存在瓶颈。
敏捷开发中的看板和 Scrum
虽然在敏捷开发的概念下无甚冲突,但 Scrum 和 Kanban 却大相径庭。
- Scrum 侧重于固定长度的冲刺,而看板则是一种连续流模型。
- Scrum 已定义角色,而看板不定义任何团队角色。
- Scrum 使用速度作为关键指标,而看板则使用周期时间。
团队通常会同时采用 Scrum 和看板的某些功能,从而帮助他们更有效地工作。 无论他们选择哪些特征,团队始终能够审视和调整,直到他们找到最适合的特征。 团队最开始应注重简化,且不忽视定期向用户提供价值的重要性。
带 GitHub 的看板
GitHub 通过项目板(经典)提供看板体验。 这些面板可帮助组织和确定针对特定功能开发、全面路线图或发布清单的工作的优先级。 可自动执行项目板(经典)以将卡片状态与关联的问题和拉取请求进行同步。
带 Azure Boards 的看板
Azure Boards 为 DevOps 规划提供了全面的看板解决方案。 Azure Boards 提供跨 Azure DevOps 的深度集成,同时也可作为 Azure Boards-GitHub 集成的一部分。
- 有关详细信息,请参阅使用 Azure Boards 来规划和跟踪工作的原因。
- 学习模块选择软件开发的敏捷方法在 Azure Boards 中提供了动手实践看板体验。