作者|我的真书DevOps的4个关键指标(4keymetrics)似乎已经成为可以解释所有软件开发生产力(或研发绩效)问题的“北极星”指标。我们知道收集每一个指标的数据是需要投入成本的,并不是指标越多越好,还需要识别关键的北极星指标。此外,当北极星指标没有达到预期目标时,也需要参考其他星级指标,为团队提供当时的背景,找出合理的改进机会。比如当生产环境中某个用户故事的交付时间北极星指标很长时,可以查看“该用户故事经历的SIT测试次数”是否过多,了解是否是这个原因造成的返工太多。如果不是,那么看看用户故事拆分粒度是否可以优化等。因此,指标的数量和维度需要平衡,足以代表软件开发生产力的关键要素,并且足以为持续改进提供背景。为了更好地推动指标的改进,我们需要平衡的指标。要设计平衡指标,首先需要确定平衡指标应该涵盖的维度。DevOps4个关键指标的维度你可以先看看DevOps的4个关键指标属于哪些维度,然后思考这些维度是否刚好满足度量驱动改进的语境。如果不能完全满足,寻找缺失的测量维度,设计相应的星级指标。DevOps的四大关键指标,在一定程度上反映了“快流”和“好质量”两个维度。“生产环境业务系统部署频率”和“生产环境用户故事交付时间”反映了端到端的价值流动是否快。因为前者越高,流速越快;后者越短,流速越快。“业务系统严重故障修复时间”和“业务系统发布的用户故事严重故障率”反映了交付的软件产品质量是否良好。因为前者越短,用户感知到的故障持续时间越短,质量越好;后者越低,质量越好。缺失的星级指标维度为了找到用来为改进提供上下文的星级指标,一些团队将DevOps的四大关键指标涵盖的“快流”和“好质量”两个维度的指标进行扩展,添加以“迭代完成率”(流程快)、“构建时间”(流程快)、“代码重复率”(质量好)、“测试覆盖率”(质量好)等指标作为星级指标。但是加上这些重要指标,它是否代表了软件开发生产力的关键要素?有什么遗漏吗?我们知道,“个体和交互高于过程和工具”放在敏捷宣言的第一条。在敏捷项目中,体现个体的“个体”和体现团队成员协作的“交互”能否成为代表软件开发生产力的关键要素?在衡量软件开发生产力时,某些团队是否缺少这两个要素及其相应的维度?研究表明,软件开发生产力与开发人员的工作满意度和幸福感高度相关(参见参考文献2和3)。当一个团队忽视其成员的工作“福祉”时,不仅会损害生产力,还会导致脱离接触并导致背叛。人气动漫《中国奇谭》《小怪兽的夏天》第一集中讲述的故事就生动地描绘了这一幕。在“大王洞”工作的小猪妖为了科技创新,用搭档乌鸦的羽毛制作弓箭,却因“不顾上级”受到熊教官的惩罚;被熊教官当猪鬃刷,导致毛变秃;亲眼目睹搭档乌鸦怪因为偷看了国王设下的捉拿唐僧的圈套而被国王所杀。这些遭遇让他彻底失去了工作的“快乐”,最终冒着生命危险,投身光明,阻止了唐僧师徒跌入国王设下的圈套。如何衡量“个体”和“互动”?我们可以粗略地用开发人员(本文提到的开发人员,包括Dev、QA、BA、UX、Ops等)的工作幸福指数来衡量“个体”,用会议效率、知识获取、工具便利性等指标用于沟通和协作以衡量“互动”。此外,软件开发生产力的最终目标是满足用户价值。那么用户对产品的满意度是否是某些团队遗漏的第三个关键要素及其对应的维度呢?BalancedMetrics的5个维度上面提到的一些团队遗漏的3个关键要素及其对应的维度,在GitHub、加拿大维多利亚大学和微软研究院联合撰写的文章TheSPACEofDeveloper2021Productivity中(参见参考资料1)已经被证实。本文提到的SPACE代表了衡量软件开发生产力的五个维度——Satisfaction&well-being、Performance、Activity、Communication&collaboration、Efficiency&flow。这五个维度大致可以对应本文提到的以下五个衡量维度——幸福感(happinessindex、Satisfaction&well-being)、良好的合作(communication&collaboration)、价值标准(Valueeffectiveness、Performance)、快速流动率(价值流率、效率和流量),质量好(过程输出、活动)。从下图可以看出,如果我们仅仅局限于DevOps4个关键指标所涉及的2个维度来设计星级指标,那么将取“快乐、良好协作、准确价值”这3个重要因素考虑到。缺少尺寸。为什么这3个维度很重要?因为团队交付的软件产品是通过“个体”和个体之间的“交互”来交付的。如果把DevOps四大关键指标中涉及的“快流”和“好质量”看成是中间状态的“果”,那么“个体”对应的“快乐”和“交互”对应的“良好合作”的两个维度是“因”。若无“因”,何来“果”?虽然在项目的中后期,“愉快、合作良好”可以与“流量快、质量好”互为因果,但在项目前期,我们可以让“愉快、合作良好”成为通过计划“因果关系”。最后一个“价值标准”维度是所有四个维度最终状态的“果实”,值得我们关注。本着以终为始的原则,我们应该关注“价值标准”之前重点关注“流量快和质量好”这两个维度图:软件开发生产力平衡度量维度之间的关系本文的目的是找到这三个缺失的度量维度,并补充一些其他维度的重要度量指标,从而得到一个平衡的衡量维度和指标,让敏捷团队通过指标来驱动改进。注意以下5个指标维度是比较完整的,但是每个维度下的指标并不包括所有的指标,需要团队做出BalancedmeasurementindicatorDimension1:Happiness(幸福指数)(1)Indicator1:Developer的工作幸福指数。工作幸福指数越高,软件开发生产力越高。你可以每周问每个开发者:“如果你从0到10打分,你推荐给其他开发者加入我们公司从事开发工作的可能性有多大?”维度2:良好的协作(沟通和协作)(2)指标2:开发人员对会议结果的满意度。会议越有成效,沟通和协作就越好,软件开发也就越有成效。你可以每周问每个开发人员:“如果你从0到10打分,你对本周参加的所有会议的有效性的总体满意度是多少?”(3)指标3:开发人员对知识获取的满意度越容易获取所需的知识,包括文档质量和知识共享,软件开发的生产力就越高。您可以每周询问每个开发人员:“从0到10的等级,您对本周知识获取难易程度(包括文档质量和知识共享)的总体满意度如何?”(4)指标4:开发如果工欲善其事,必先利其器。交流和协作所需的工具越多,软件开发的效率就越高。你可以每周询问每个开发者:“如果你从0到10打分,你对本周使用工具和工具平台的便利性的总体满意度是多少?”维度3:价值标准(价值有效性)(5)指标5:用户对产品的满意度用户对产品越满意,软件开发生产力的有效性就越高。你可以每个月询问用户代表:“如果你从0到10打分,你向其他人推荐这个产品的可能性有多大?”维度4:快速流率(价值流率)(6)指标6:生产环境业务系统部署频率当部署和发布不分离时,业务系统在生产环境的部署频率越高,说明业务可以小批量部署,让商业价值更早交付给用户,软件开发的生产力会更高。当部署和发布分离时,业务系统在生产环境的部署频率越高,可以间接反映自动化回归测试、特性切换、蓝绿部署等机制越强,软件的生产力越高发展。每次部署生产环境的时候,问运维人员:“这次部署业务系统生产环境和上次部署间隔多长时间?”(7)指标七:生产环境用户故事交付时间生产环境用户故事交付时间越短,用户故事拆分越合理,中间返工越少,流程间等待越少,生产率越高的软件开发。每次生产上线后,请运维人员统计本次所有上线成功的用户故事的交付时间,即第一行代码提交到代码库到成功上线的时间生产启动。(8)指标8:用户故事经历的SIT测试次数开发者修复SIT测试阶段发现的用户故事缺陷后,应在SIT阶段再次提交给QA进行验证。用户故事经历的SIT测试次数越少,故事的开卡验证等内置质量越好,返工越少,软件开发的生产力越高。每个用户故事通过SIT测试后,请测试人员记录该故事经历的SIT测试次数。(9)指标9:并行工作(Work-In-Progress,WIP)数量开发人员每天并行工作越少,工作切换时间越短,软件开发的生产率越高。你可以每天问每个开发人员:“今天手里并行安排了多少任务?”维度5:质量好(过程输出)(10)指标10:业务系统严重故障修复时间越短,业务系统严重故障修复时间越短,可以间接反映观察运行情况的能力越强生产环境系统的故障响应、切换和回滚机制越强,软件开发的生产力越高。解决生产环境严重故障后,请运维人员统计修复时间,即从故障发生(不是发现)到成功修复或回滚的时间。(11)指标11:业务系统发布的用户故事严重失败率业务系统发布的用户故事严重失败率越低,说明发布的用户故事质量越好,软件开发的生产率越高。每次生产上线后,可以让运维人员统计本次生产中无法正常使用的用户故事占比。(12)指标12:代码审查通过的提交比例代码审查通过的提交比例越高,可能反映代码质量会越好(取决于开发者的代码整洁意识和代码审查质量)。在每次迭代结束之前,可以要求每个开发人员统计提交到主干的提交中通过代码审查的比例。(13)指标13:迭代回归测试用例执行率迭代回归测试用例执行率越高,可能反映业务系统现有功能的缺陷越少(取决于关键业务场景的回归测试质量).在每次迭代结束前,可以要求测试人员统计本次迭代实际执行的回归测试用例,占本应执行的比例。(十四)指标14:迭代回归测试执行时间该指标需要与“迭代回归测试用例执行率”结合使用。当“迭代回归测试用例执行率”为100%并使用自动化回归测试时,那么迭代回归测试执行时间越短,间接表明软件开发生产率越高。在每次迭代结束之前,可以要求测试人员统计本次迭代的回归测试的执行时间。总而言之,衡量软件开发生产力的指标的维度和数量需要平衡,恰好足以代表软件开发生产力的关键要素,并且足以提供持续改进的背景。仅使用DevOps的4个关键指标,而忽略“快乐、良好协作和价值标准”3个维度,将导致团队只关注“快速流动”和“良好质量”这两个中间状态的“成果”.失去了对“快乐和良好协作”这两个“原因”和用户满意度等最终状态的“结果”的关注,就无法看到软件开发生产力的全貌,也很难衡量它.推动改进。
