Christian Vos 是 Rood Mitek 的创始人,同时也是荷兰国际合作银行的Microsoft .NET 顾问。在最近的一篇博文中,他建议将敏捷团队的“完工定义(Definition of Done)”分成理想版本和当前版本,以便扩展完工定义,进而提高成熟度和能力。他提到,团队的能力和成熟度是它使用两个版本的原因。
Vos 将完工定义的理想版本和当前版本定义为:
完工定义的理想版本定义了交付一个成品增量从开发直到部署进生产环境所需的所有步骤。不需要任何进一步的工作。完工定义的当前版本定义了团队在一次冲刺中有能力执行的步骤。
Vos 建议将完工定义的两个版本都展示在墙上,以增加透明度。团队和产品经理可以不断努力,缩小完工定义两个版本之间的差距。
将两个版本都展示在墙上可以为产品经理建立透明度。它体现了团队当前的能力,并显示了可以改进的地方。团队可以定期地试着用完工定义理想版本中的步骤扩展完工定义的当前版本。扩展完工定义实际上意味着能力和成熟度的提高。
Vos 写道,由于敏捷团队成熟度和能力的欠缺,完工定义并没有包含交付可用于生产环境的代码所需的所有步骤。通常,当一个冲刺完成时,还有个别事项没有完成。对于未完成的工作,问题是它会在每个冲刺中累积,许多团队都是通过引入额外的、专门做发布准备的冲刺来处理未完成的工作。
许多团队都是通过引入所谓的“强化冲刺(hardening sprints)”或“发布冲刺”来解决这一问题。比如,把这些冲刺用于创建部署包、解决一些剩下的 Bug、做一些最后测试等等——所有使软件可用于生产环境的事项。当团队定义了完整的完工定义并付诸应用,所有未完成的工作都会在冲刺中完成,不需要发布冲刺。
Vos 提到,一个好的完工定义会对以下几点有帮助:
- 获取反馈以及改进产品和流程
- 更好的发布计划
- 赋予燃尽图意义
- 最小化延期风险
- 提高团队能力和灵活性
- 为利益相关人员建立透明度
Net-A-Porter 的敏捷教练 David Lowe 支持定义两个完工定义版本的观点。
我认为,这是一个聪明的主意:至少它承认团队知道还应该做什么。当然,如何向着理想努力就是另外一回事了。
类似地, The Motion Studio Multimedia Productions 公司的所有者 Wouter Tengeler 建议创建独立的用户故事。
我会建议增加可以补足当前 DoD 和目标 DoD 之间差异的故事,以使(技术)债务可视化。我会选择增加一个编写用户使用手册的故事,只为了使任务透明化,这样,每个人都知道还有事情要做。当团队成熟了,就可以将编写使用手册写进 DoD。
在最近的一篇博文中, Atlassian 产品市场专员 Dave Meyer 说明了如何使用 JIRA 在一段时间内管理完工定义。
完工定义是一个活的文档,应该定期修订。由于团队在努力改进,所以随着时间的推移,你可以使你的做法更严格。不删除或修改选项,而只是简单地禁用。禁用一个选项,选项会继续留在 JIRA 中,但不会出现在问题中。这样就可以保留一段时间内的 DoD 记录。
查看英文原文:**** Improving Process with Two Definitions of Done
评论