不必纠结软件交付度量方法的细节。
译自 Relax About Your DORA Metrics,作者 Steve Fenton。
我们的工作需要一定的精确度,因此我们希望对软件交付指标采取精确的方法是很自然的。有些人甚至可能喜欢一个详细的标准来确定他们的测量结果,以便确保其完全正确。
过分追求精确度是浪费的,它会占用更多时间去做更重要的事情:根据数据采取行动。
DORA 指标 是最流行的 DevOps 指标。DORA 指标所需的精确度很低,而且性能越高,精确度要求越低。一般来说,你只需要大致了解你的性能水平。对于吞吐量指标,度量单位比数值更有意义。
衡量吞吐量是以月、周、天还是小时为单位,这比精确计算数值更重要。如果你每月部署一次,你的下一个里程碑就是每周部署一次。当你的变更前置时间是一周时,你的下一个里程碑就是将其缩短到一天。
无论你每 26 天还是每 30 天部署一次,你实际上都是每月部署一次。这很重要,因为你为了将每月部署时间缩短一两天所做的改进,并不是你实现每周部署所需的改进。
帕累托法则,或 80/20 法则,指出大约 80% 的结果来自 20% 的原因。对于你的改进工作,做一些相对简单的事情,例如添加部署和测试自动化,将带来显著的提升。随着你实践的扩展,你会发现要获得相同回报的投资难度会越来越大。
边际收益的概念来自精英体育。通过对技术和设备进行微小的改进,可以获得累积效应,从而赢得比赛。英国自行车队采用了这种技术,通过在许多领域寻求 1% 的收益,他们在奥运会和环法自行车赛中取得了令人难以置信的连胜。
边际收益 在竞争激烈的环境中可能对你有帮助,但是当你每月部署时,你还没有达到需要寻找边际收益的水平。边际收益解决了帕累托悖论,只有在你完成了所有显而易见的事情之后,才需要考虑另外 80% 来获得下一个改进。
回到自行车示例,如果你的自行车仍然由沉重的钢管制成,最好换成更轻的材料,而不是试图修改空气动力学。你应该专注于 20%,而不是在经常被忽视的 80% 中寻找边际收益。
当你拥有按需部署、低变更失败率以及以小时或分钟为单位的交付前置时间和恢复时间时,如果软件交付仍然是组织的瓶颈,你就可以转向边际收益。
不出所料,如果你能够达到这个水平,对进一步改进的渴望就会减弱。重点通常会转移到其他地方,例如通过与软件用户更紧密地联系来提高新功能的命中率。
要求精确指标的最常见原因是它们即将被不当使用。如果你想根据软件交付性能对团队进行排名,你将需要确保每个团队的测量方式完全相同。如果没有精确度,比较可能不准确。
四个关键的 DORA 指标不能用于此目的。跟踪软件交付性能的目标是改进它。唯一有效的改进比较是跟踪同一团队和应用程序随时间的变化趋势。
当你收集用于改进的指标时,你只需要将它们用于你的回顾会议或持续改进流程。我们的日历系统的一个无意副作用是,季度到月度是三倍的改进。它需要一个有影响力的改变,而且很容易看出它带来的区别。同样,从每月到每周是 4 倍,从每周到每天是 5 倍,然后你按需部署,它就不再是需要关注的领域了。
当你达到高性能水平时,你必须放大以查看整个价值流,以找到最适合改进工作的方向。将你的变更前置时间从 1 小时 20 分钟增加到 1 小时 10 分钟并不是你时间的最佳利用方式。
开始无需任何正式的度量解决方案即可使用 DORA 的四个关键指标。您可以打开快速检查,并使用其中的问题与您的团队开始对话。对于部署频率这样的指标,您可能已经知道自己是按季度、每月还是每周部署。其他指标,例如变更失败率,则需要更多讨论。
在团队围绕定义指标以及如何在尽量减少麻烦的情况下获取数据方面展开思考的过程中,您会发现许多有趣的细节。变更失败是否应该从报告故障时、引入故障时还是首次影响用户时开始衡量?是否能够确定确切的日期和时间?变更的提前期是否包含拉取请求?
虽然我们社区成员对此有强烈的意见,但没有人比您的团队更了解这项工作。您了解事情的工作方式,并且足够聪明,可以协作制定一个易于获取且足以指导改进过程的轻量级定义。
如果您的团队都同意该定义,那么我说您应该做什么并不重要。例如,我坚信拉取请求和代码审查应该包含在变更的提前期内,因为部署流水线中的手动阶段是改进最有成效的目标。如果您的团队不同意,也没关系。
必须允许团队改变其测量方法,以决定哪些方法对他们有用,以及他们改进过程需要什么。他们可能会选择错误的路径,但应用持续改进的团队会随着时间的推移自行纠正。
软件交付是更广泛系统的一部分。您正在处理代码更改,因为有一些价值需要释放。值得引入一些措施,使端到端系统的状态可见,以便您可以确定改进工作的目标。
提前期和周期时间可以帮助您找到瓶颈,了解功能的成功可以为您的业务带来重要知识,以便您不会浪费时间交付对用户无用的软件更改。
当您在 DORA 指标方面取得出色表现时,请花时间寻找新的衡量指标,而不是试图为了没有意义的收益而追求更高的绩效。