研发效能度量的挑战

为了有效应对当前充满易变性、不确定性、复杂性与模糊性的互联网大环境,今年年初京东提出了数字化管理的战略方向,通过数字化的技术和管理模式提升组织绩效。在这个背景下,研发效能的提升就成为了很多产品技术部门今年的重要目标,有些部门专门成立了相应的工程效率团队,期望从组织、文化、技术、流程等方面的优化来促进研发效能的整体提升。

然而,究竟什么是好的研发效能?我们如何定义它?其实很少有人能够表达清楚。虽然本质上都是通过一定的工作来生产(研发)产品,但不同于生产制造行业,软件研发效能的度量其实是相对困难的,原因有以下三个:

1.研发过程中的可视性差

涉及到业务、产品、研发、运维等不同职能,多个团队多种角色协作时,任务处理的进度、队列、瓶颈可能很难清晰观察到,以至于项目管理软件中很多任务的进度百分比可能只有参考意义,实际并不准确。

2. 工作切分的随意性

有时管理者会制定一些KPI来度量团队绩效,但就像那句名言所说:你度量什么,就会得到什么。其实这句话只说了一半,另一半是:只是不一定是用你所期待的方式得到。所谓上有政策、下有对策,由于软件工作切分的随意性,也许把一个需求拆成多个小需求,一行代码拆成多行来写,某些KPI指标就被用非预期的方式完成了。

3. 敏捷研发过程中工作是并行的

随着公司敏捷研发模式的持续推进,我们很难再像传统项目管理模式一样清晰界定软件研发的各个阶段,很多情况下不同需求所对应的开发/测试工作都是并行的,产品也是不断迭代、持续演进的,这也对准确度量造成了一定困难。

现有的研发效能度量方式

随着公司日益发展壮大,各体系加起来已经有数万人的研发队伍,在过往的实践过程中,也逐步积累了一些研发效能度量的习惯和指标,但是这些指标从今天的角度来看,似乎存在一些限制和弊端。

1. 以打卡或工时数据进行度量

在缺少其他度量手段或有效度量指标的情况下,把工作时长作为度量指标似乎是顺其自然的。度量团队成员是否按时在项目中开展工作、工作量是否饱满,其实是从人力资源利用率的角度来看待问题的。而实际上,当局部人力资源过度地优化,会造成大量排队、等待以及频繁的工作任务切换,看上去很高的资源利用率不但无法转化为真实的生产力,反而会伤害端到端的生产效率。

2. 以局部产出(代码行或缺陷数)进行度量

代码行或缺陷数其实是对开发、测试岗位很常见的度量方式。而实际上,如果将代码行的产出作为考核KPI,除了会得到一堆臃肿、难以维护的代码之外没有任何好处;如果将研发过程中发现的缺陷数作为考核KPI,自然会形成开发与测试团队之间的『混乱之墙』,除了增加团队之间的隔阂也没有其他好处。

3. 以敏捷研发过程中的一些概念(如故事点数)进行度量

有些采用敏捷研发模式的团队,在使用每个迭代能完成的故事点数或迭代速率来进行度量和考核,而实际上这只是一种容量规划工具(推测需要多久完成工作),绝对数值跟团队紧密相关,但无法进行横向比较,否则又会导致大家玩起数字游戏了。

研发效能度量的正确姿势

通过以上分析可以得知,我们对软件研发效能的度量,应当遵从以下两个基本原则:

1. 聚焦在全局指标而不是局部指标

我们要促进跨越职能和功能,在团队内、团队间彼此高效协作。

2. 聚焦在结果产出而不是某阶段工作输出

我们不应对那些看似繁忙但只产出了一大堆无效工作输出的团队或人员进行奖励,而是引导到那些对促进组织达成目标有实际帮助的工作上去。

根据以上原则,我们确定了从全局性出发,以结果产出为牵引的一系列研发效能度量指标。这些指标也反映出了研发效能改进的关键点,即以端到端的流动效率(而非资源效率)为核心。这里的流动效率是指需求(或用户价值)在整个系统中跨越不同职能和团队流动的速度,速度越快则需求交付的效率越高、交付时长越短。当然这并不是只关注流动效率、不关注资源效率(如工时、资源利用率等),而是在确保前者效率足够高的情况下再逐步提升后者,最终追求的是二者的协同优化。

我们把研发效能度量指标分为三个维度,分别是交付效率、交付质量和交付能力。这些指标的提升需要组织进行管理、技术、协作等多方面的系统性改进。

1. 交付效率

目标是促进端到端、及早的交付,用最短的时间顺畅地交付用户价值。具体可细分为以下指标:

● 需求交付周期:从需求提出,到完成开发、测试、上线,最终验收通过的时间周期。反映了整个团队(包含业务、产品、开发、测试、运维等职能)对客户问题或业务机会的交付速度,依赖整个组织各职能和部门的协调一致和紧密协作;

● 开发交付周期:从需求被研发团队确认,到完成开发、测试,达到可上线状态的时间周期。反映了研发技术团队的交付速度,依赖需求的拆分和管理,开发团队的分工协作;

● 交付吞吐量:统计周期内交付的需求个数 / 统计周期,即单位时间交付的需求个数。需要注意的是,需求颗粒度要保持一定规则,避免需求大小不统一导致的数据偏差;

2. 交付质量

目标是促进端到端高质量交付,避免不必要的错误和返工。具体可细分为以下指标:

● 线上缺陷密度:统计周期内线上或单个版本严重级别Bug数量 / 需求个数;

● 故障恢复时间:线上系统和应用如果发生故障,多长时间可以进行恢复;

● 上线成功率:上线部署成功,上线没有导致服务受损、降级或需要事后补救的比例;

3. 交付能力

目标是建设卓越工程能力,实现持续交付。具体可细分为以下指标:

● 发布频率:单位时间内的有效发布次数。团队对外响应的速度不会大于其发布频率,发布频率约束了团队对外响应和价值的流动速度;

● 发布前置时间:代码提交到功能上线的时长。反映了团队的工程技术能力,依赖交付过程中高度自动化以及架构支撑能力;

度量指标详细定义及计算逻辑如下表所示:

目前京东在研发基础设施的相关工具平台中(包括项目管理、敏捷协作、代码托管、持续集成、部署发布、异常监控等)已经沉淀了大量的研发过程数据信息,我们将会通过以上指标的整合/分析,呈现给团队和管理者更真实有效的研发效能数据,促进研发更有针对性的改进提升。

总结

本文从软件研发效能度量的难点出发,指出了一些现有度量方式的限制和弊端,进而提出软件研发效能度量的正确姿势,即遵循 全局指标 > 局部指标、结果产出 > 工作输出 的基本原则。最后,文章给出了交付效率、交付质量和交付能力三个维度的度量指标集合及计算逻辑。

为了提升公司各职能部门协调一致,持续、快速、高质量交付需求或用户价值的能力,我们需要从当前关注资源效率为主的管理思路,转变为以流动效率为核心、兼顾资源效率的管理模式。以上的研发效能结果性指标可以看做量化诊断问题和有针对性进行改进的抓手,这些都是研发效能提升的基础。当然,在结果性指标的牵引下,还需要一系列更为细节的过程性指标,覆盖研发活动各个阶段的微观度量,这些指标我们将会持续梳理并与大家探讨。

后续还将结合具体的研发管理实践(如敏捷研发和看板方法)与工程实践(代码评审、持续集成和持续交付、部署模式等),配合工具平台的固化和落地,进一步整合研发效能提升的方法、技术和实施路径,也欢迎大家与我们共同探讨并开展合作,共同促进研发效能的提升。

原创: 张乐 京东技术

tesseract 提升 速度_京东研发效能提升,从正确地实施度量开始相关推荐

  1. 10000+ 代码库、3000+ 研发人员大型保险集团的研发效能提升实践

    本文共计7354字,建议阅读时间:14~15分钟. ‍ 阅读本文你将获得: 1.金融行业研发效能提升的整体情况 2.金融行业研发效能提升的痛点: 3.研发效能提升实践过程经历: 4.研发效能提升系统方 ...

  2. 研发效能提升 36 计第三课:束水攻沙,持续加快产品交付速度

    摘要: 互联网时代,业务与协作复杂度与日俱增,竞争日趋激烈,提升研发效能已成为软件行业的共同挑战.<研发效能提升和敏捷实施 36 计>是阿里云联合 Teambition 精心打造的系列课程 ...

  3. 做到这4点,才是真正的持续交付| 研发效能提升36计

    简介:全线专栏<研发效能提升36计_持续交付篇>上线啦!本专栏将通过10-20篇文章,系统分享云原生时代,企业如何落地持续交付.本文是该专栏的第2篇. 什么是真正的持续交付? 编者按:全线 ...

  4. 人力节省 50%,研发效能提升 40%,阿里 Serverless 架构落地实践

    作者 | 万佳 嘉宾 | 杨皓然(不瞋) 导读:云的下一波浪潮是什么?杨皓然称"是 Serverless".作为一名阿里老兵,他早在 2010 年即加入阿里云,曾深度参与阿里云飞天 ...

  5. 前端团队研发效能提升的探索与实践

    读者受益 研发效能定义:知道研发效能是什么?(对「研发效能」的定义有一个经得起推敲的参考) 研发效能提升:知道如何提升技术团队的研发效能?(对提升自己所在团队研发效能有一些想法/灵感) 技术的价值:当 ...

  6. 腾讯会议后台研发效能提升之路

    从字面上看,研发效能追求的是"效率",但是脱离目标谈效率是没有意义的.从研发的角度看,软件的意义就是交付用户和客户的所需,从而产生价值.因此,研发效能就是更快地为软件的用户或客户交 ...

  7. 2018-2021,60+篇阿里研发效能提升合集,都在这里了

    今年,研发效能特别火,不少企业的CTO都把研发效能提升作为部门的年度重点.但是,大家都希望提升研发效能,很多却不知道从何开始. 事实上,从2018年开始,云效已经在系统地向业界输出阿里的研发效能提升方 ...

  8. 研发效能提升如何层层推进?

    本文共计字 2468 字,建议阅读时间:5~6 分钟. ‍ 阅读本文您将获取以下两点内容: 1.研发效能提升实践过程中有哪些痛点? 2.研发效能提升系统性方法论:MARI 方法论 ‍ 背景:由信通院云 ...

  9. 「技术人生」第10篇:如何做研发效能提升(即指标体系建设过程回顾)

    01 背景 Aliware 纵观软件研发的发展历程,如果说"业务需求开发"是核心主线的话,那么研发效能建设就是这一核心主线之外最大的一条支线.每个历史阶段的研发效能所面对的主要矛盾 ...

最新文章

  1. PMON failed to acquire latch, see PMON dump
  2. 计算机社团嘉年华的游戏,社团嘉年华,游戏大乱斗!
  3. JavaSE各阶段练习题----多线程
  4. Apache Spark Job的剖析
  5. JAVA语法——自动类型转换和强制类型转换
  6. pytorch 保存、读取 tensor 数据
  7. 搞懂 Vision Transformer 原理和代码,看这篇技术综述就够了(五)
  8. LDA-math-认识Beta/Dirichlet分布
  9. 3Ds max彻底卸载方法
  10. 利用图形制作个人简历,图形与形状
  11. java安卓模拟器和电脑通信_android模拟器与PC的端口映射
  12. 最快的计算机操作,自学电脑操作怎样比较快?
  13. 雷锋微视点:腾讯电商、搜搜、微信将出门独立
  14. 【案例】某市社会治理网格化智慧工作平台建设案例
  15. 什么叫共同富裕,刘强东给老板们打了个样
  16. ff新推荐的关闭办法
  17. 打字测试的手机软件,手机上有什么软件可以练习打字
  18. 网络可视化软件Pajek与向量运算
  19. C# 未找到类型“***”上的构造函数异常原因
  20. php mongodb 批量插入,MongoDB不支持批量插入

热门文章

  1. 3.14 以子类取代类型码
  2. Java反射机制介绍
  3. 设计模式学习笔记(目录篇)
  4. IBM走鹃险胜Cray Jaguar 连任世界最快超级计算机
  5. Centos7.3 格式化和挂载数据盘
  6. css 字符过长...
  7. [转]nodejs深入学(7)理解Buffer
  8. 报错解决——make: *** No targets specified and no makefile found. Stop
  9. ILI9486 和 stm32F407 cortex-M4
  10. netty的使用部署