2.0 第二部分导论:流动指标
如果说第1部分是衡量的哲学,那么第2部分就是这种哲学与交付本身相遇之处:这些指标描述的不仅是团队把代码从一个想法搬运到一个运行中的系统有多快、多安全,还包括究竟是什么样的价值在这条流水线中流动。本部分围绕流动框架(Flow Framework)组织而成,这是Mik Kersten在其2018年著作《Project to Product》中提出的一个模型,把软件交付当作一条价值流,并为这条价值流赋予了一套共享词汇:四种流动项类型,以及五个把工程活动与业务战略连接起来、非技术利益相关方也能实际使用的流动指标。
选择这个组织框架是刻意为之的。DORA指标(部署频率、交付周期、变更失败率与恢复时间)确实经过研究验证,至今仍是现有证据最充分的交付框架之一,但它们衡量的是流水线的机制,而不是流经其中的内容。一个团队可以发布出色的DORA数字,而其实际交付的价值却在悄悄地漂向返工,或者远离那些保护系统未来的债务与风险工作。本部分完整地涵盖了DORA,但把它放在末尾,作为一个单独的汇总性参考主题(主题 2.10),因为对大多数组织而言,更紧迫、也更常被遗漏的问题,不是”我们的流水线有多快”,而是”我们的流水线究竟在交付什么”。本部分的每个主题,依然遵循第1部分所确立的同一门自律:陈述指标、点出它如何被操纵,并为它配对能够抓住这种操纵的护栏。
对大团队而言,流动指标正是让跨团队比较成为可能、同时又不至于失去对价值的关注的关键。一个平台团队、一个移动端团队和一个数据团队,在日常工作中可能几乎毫无共同之处,但一致计算出的流动速度与流动分布,能让领导层向这三者提出同一个公平的问题:这个团队是否正在交付其当前阶段真正需要的那种价值。企业与政府组织依靠本部分的指标来证明平台投资的合理性、比较相互竞争的现代化努力的回报,并用证据而非轶事来证明,工程能力正按领导层所相信的那样被分配。
本部分各主题
- 2.1 流动框架: 该框架的起源、其价值流模型,以及为什么本书用它,而不是单独用DORA,来组织交付与流动指标。
- 2.2 流动项:功能、缺陷、风险与债务: 该框架的四种类型分类法、其零和的容量分配,以及若被追溯性地应用,分类是如何被操纵的。
- 2.3 流动速度与流动分布: 交付了多少,以及那是什么样的价值,二者始终一并解读。
- 2.4 流动时间与流动负载: 利特尔法则如何证明一条超负荷的价值流在数学上会变慢,而不只是可能会变慢。
- 2.5 流动效率与在制品: 为什么忙碌不等于快,以及限制在制品如何反直觉地提升吞吐量。
- 2.6 周期时间及其构成: 把一次变更的工程时间分解为其构成阶段,让团队确切知道时间究竟去了哪里。
- 2.7 排队论: 流动负载、流动时间、周期时间与在制品背后的数学原理,以及为什么共享资源上的等待时间会在利用率逼近其极限时爆炸式增长。
- 2.8 精益价值流指标: 本部分软件专属指标所源自的经典精益工具包(交付周期、加工时间、周期时间、完成且准确率与节拍时间),以及如何在这两套词汇之间架设桥梁。
- 2.9 拉取请求与代码评审指标: 存在于交付流水线单一阶段内部的指标,以及若使用不慎,它们如何扭曲评审质量。
- 2.10 DORA指标框架: 完整的四个DORA指标,刻意被放在最后,因为它们衡量的是流水线,而不是流经其中的价值。
这些主题如何相互关联
主题 2.1 整体介绍流动框架;主题 2.2 给出其流动项的分类法,主题 2.3 与主题 2.4 之间涵盖其五个流动指标:速度与分布放在一起,然后时间与负载放在一起,负载与时间直接与利特尔法则相连。主题 2.5 到主题 2.7 专门放大流动时间与周期时间背后的机制:流动效率与在制品解释了为什么工程阶段常常比看起来更慢,周期时间把那部分工程时间分解为各个阶段,而排队论以可证明的数学术语,将前面各主题关于负载、等待时间与利用率的所有断言正式化。主题 2.8 退后一步,把这一切追溯回其在经典精益价值流映射中的起源,也就是本部分软件专属指标所据以概括的共同词汇。主题 2.9 涵盖了大多数团队能最快改善的单一流水线阶段。主题 2.10 以完整的DORA指标为本部分收尾,在前面各主题更广阔、面向业务的图景已经呈现之后,把它呈现为一个证据充分、但范围更窄的参考层。
本部分的护栏自律直接与主题 1.2 相连:流动速度从不在没有流动分布相伴的情况下单独报告,而DORA的速度指标始终与其稳定性指标配对,这样团队就无法通过悄悄交付风险更高的代码、或更窄的价值组合来改善一个速度数字。这种配对对这两个框架而言都不是偶然的;它是每个框架的核心洞见,而第6部分的可靠性指标,把这种配对中同样的稳定性那一半,延伸到了代码已经交付之后的生产运营之中。