每个软件团队都有一个完成工作的流程,规范化该流程(即创建为工作流)使其结构清晰、可重复并且可扩展,能够帮助团队更高效地完成工作。本文将介绍如何逐步构建一个好的敏捷工作流。
没有人喜欢“流程”,但没有“流程”,不成方圆。
一、什么是敏捷工作流
敏捷工作流是指敏捷团队在开发过程中,产品从构思到开发经历的一系列阶段。每个软件团队都有一个完成工作的流程,规范化该流程(即创建为工作流)使其结构清晰、可重复并且可扩展,能够帮助团队更高效地完成工作。在 PingCode,我们采用迭代的方法进行工作流管理,因为它可以帮助我们更快地实现目标。我们通过敏捷工作流管理获得了非常多的收益,因此也希望帮助您成为专家。
二、要如何建立基础的敏捷工作流
1.从简单工作流开始尝试
团队要从简单的工作流程开始实施,千万不要花费数周时间去设计一个过于复杂的工作流,通常复杂的工作流程的理解和采用都需要非常高的成本,更不用说让团队快速适应了。对于软件团队,我们可以从几种基本工作流状态开始,比如:
- 待办:尚未开始的工作
- 进行中:团队正在进行的工作
- 代码审查:已完成并等待审核的工作
- 已完成:完全完成并符合团队对完成的定义的工作
在工具中,通过建立类似的流程,我们能清楚地看到工作状态从一个状态流向另一个状态。
一些软件团队的工作流程中也会包含其他的状态,来帮助他们更准确地跟踪工作,比如:
- 质量检查:工作已完成,等待测试人员审查。
- 准备合并:已经过审查的代码,准备合并到主分支或发布分支。
敏捷项目中,工作流中的不同状态可能并非由不同的人处理,因为随着敏捷团队的成熟,从设计一直到交付的整个过程中,开发人员技能和所需要完成的工作都可能是跨职能的。
Tips:“健康的工作流程需适应团队的需求,偶尔的痛苦是正常的,但不会长期痛苦。”
2.选择适合的工作流工具
工作流承载工具的选择是重要的。因为每个团队由于项目、技术栈和工作方法的不同,他们的工作流程也可能不同,这也是为什么要选择可以灵活配置工作流的工具。对许多团队来说,为了适应特定的工具需要舍弃他们原有的工作风格,这可能会导致团队成员抗拒使用该工具,并加剧团队的抵制心理,降低生产效率,这是我们都应该避免的局面!
3.优化敏捷工作流程
当你在基本工作流程有一定收获和经验之后,并准备根据项目尝试自定义建立一些复杂的工作流时,请为团队流程中的每种工作类型创建状态。例如:评审、设计、开发、代码审查和测试是不同的环节,可以是单独的状态,这样做可以清楚地传达一件工作处于哪个阶段。
项目状态也可以与组织的其他人共享,以及非团队成员可能有兴趣指标是什么。例如,设计良好的工作流程可以回答以下问题:
- 团队完成了哪些工作?
- 积压的工作是在不断增加还是在被持续解决?
- 每个状态下有多少项目?
- 是否存在阻碍团队发展的瓶颈?
- 完成一项任务平均需要多长时间?
- 有多少工作项第一次没有达到质量标准?
4.保持工作流稳定
优化工作流程的下一步是确保整个工作流的稳定。比如:敏捷看板方法中的在制品限制规定了特定环节下任务的最小和最大数量,这能确保每个环节都有足够的任务来保持团队正常运作,又不会因为处理优先事项而无法聚焦。强制在制品限制可以让团队及时的发现哪些进程会阻碍了流水线中的整体工作。同时,随着团队围绕在制品限制不断进行优化,需求吞吐量也将会增加。
三、扩展工作流程的挑战
拥有多个敏捷团队的组织会在建立自己的工作流时会面临一些挑战。因为团队通常希望优化自己的工作流程以反映其独特的流程和文化,这很好理解。但采用不同工作流的团队在同一个项目里工作时往往令人很头痛。
所以,一起工作的敏捷团队可以从使用相同的工作流程中受益,使用相同的工作流程可以使敏捷团队之间的工作协同更容易,因为他们使用相同的规则来定义和交付工作。创建一个通用流程通常需要多个团队的妥协,这样,他们将相互学习,最终得出更好的工作流程。
比如我们自己就是使用 PingCode,来实现团队之间的工作流共享,但在他们各自的敏捷看板上可以有不同的展示视图,这种可灵活配置的可视化能力,在建立统一工作流的方式下也保持了一定的个性化。
无论您的工作流程是什么样的,开发过程都应该是敏捷的,需要经常在团队回顾时讨论过程问题,并随着团队文化和组成的变化对工作流程进行动态调整。