一文看懂研发效能提升

一文,研发,效能,提升 · 浏览次数 : 66

小编点评

**研发效能** **定义:**研发效能是指一个软件研发过程中的效率和能力,它是持续快速交付价值的能力。 **影响研发效能的因素:** * **人:**研发人员的技能、经验和协作能力对研发效能有重要影响。 * **流程:**研发过程中的各个环节的效率和效率都影响研发效能。 * **工具:**开发工具、测试工具等对研发效能也有影响。 **提升研发效能的方法:** * **优化开发流程:**减少开发过程中的沟通和协作障碍。 * **提高测试效率:**通过自动化测试和性能测试减少测试时间。 * **提升代码质量:**通过代码规范和测试提高代码质量。 * **提高代码交付效率:**缩短代码交付周期。 * **建立完善的测试体系:**通过测试驱动开发 (TDD) 确保代码质量。 **如何度量研发效能?** 以下是一些常用的度量指标: * **持续发布能力:**指开发团队能够持续地生产高质量软件的能力。 * **开发效率:**指开发团队每单位时间可以完成的任务数量。 * **测试效率:**指测试团队每单位时间可以执行的测试数量。 * **代码错误率:**指代码中发现和修复的错误数量。

正文

1 什么是研发效能?

对于一个企业来说,最大化企业效能是其必求目标,包括:利润、用户规模、客服满意度、运营效率等。对于自有产品研发的互联网公司来说,研发效能是服务企业效能的重要因素。

一个软件研发的完整流程如下图所示:

从需求提出到交付整个流程中交付期望产品的效率和能力,即研发效能。

2 为何要提升研发效能?

下面从宏观和微观两个例子说明研发效能在我们日常需求交付中的影响:

(1)站在各自视角,效率高效;站在全局业务视角,反应迟缓。

上面这张图反映了单个需求的交付过程。绿色线表示需求正在被处理,红色线表示需求在等待中。工作量不大的需求,交付周期却很长,这是因为大部分时间需求都处于等待状态,可能是由于跨部分也可能是因为前、中、后台对工作优先级处理不同,就会导致需求链路局部最优,总体效率不高,相信很多人会感同身受,这已成为产品交付的普遍困境。

(2)API对接处理

在API接口测试过程中,输入参数的临界值没有妥善处理的问题十分常见,比如某个输入参数是String类型,但是代码实现中没有考虑String变量为null的情况。这类问题通常都会在后期调试或者联调阶段才会被发现,此时再去修复的成本就比较高,修复之后还要考虑回归测试的成本。所以我们可以引入一种机制,去主动扫描获取API入参类型,根据参数类型生成容易出错的取值,用这些取值自动调用API,如果发生500错误或者抛出异常就是发现了问题,这样问题可以更早暴露出来,也对之后的开发工作提升了一定效率。

通过这两个例子可以发现不论是产品交付还是实际的开发工作,效能改进的目标就是:持续快速交付价值的能力。可以理解为传统的开发方式对团队能够持续为用户产生有效价值的效率发起了挑战,需要通过研发效能着眼于长期效果,改变我们的焦点从局部最优,转向关注用户价值,保证全局和系统的优化。

3 如何度量研发效能?

管理学之父德鲁克说:“如果你不能度量它,就无法改进它”。

评价一个组织或者团队持续快速交付价值的能力,需要一些度量指标帮助我们更加深刻认识研发效能,设定改进方向,衡量改进效果。

效能度量回答的根本问题就是:一个组织“持续快速交付价值的能力”怎么样?

任何生产力的提升都离不开三个因素:人、流程和工具,缺一不可。通过下面5个具体指标,或许会对这三个因素有更加深入的理解。

第一:持续发布能力。

发布频率:单位时间内的有效发布次数。

发布前置时间:从代码提交到功能上线所花费的时间,体现了团队发布的基本能力。

第二:需求响应周期。

交付周期时间:从确认用户提出的需求开始,到需求上线经历的平均时长。

开发周期时间:从开发团队理解需求开始,到需求可以上线所经历的平均时长。

第三:交付吞吐率。

单位时间交付用户需求数量:单个团队在单位时间内交付需求的数量。

第四:交付过程质量。

缺陷创建和修复时间分布:缺陷能够持续和及时的被发现,并在发现后尽快修复。

缺陷库存:开发过程控制缺陷库存量,让那个产品始终处于接近可发布状态,这是持续交付的基础。

第五:交付质量。

无论是单位时间问题数目还是线上问题解决时长都是在强调系统可用性。

这5组指标,来自于阿里资深技术专家团队提出,从流动效率、资源效率和质量三个方面讲述了一个完整的故事,回答了组织持续交付价值的能力如何这个核心问题。其中,持续发布能力和需求响应周期这两组指标反映价值的流动效率;吞吐率反映资源效率;交付过程质量和对外交付质量这两组指标共同反映质量水平。

4 如何提升研发效能?

首先来看一个问题:为什么现在各大互联网公司都开始关注“研发效能”?

软件正在吞噬世界。过去20年互联网从无到有,未来,任何一家企业的业务都会构建在互联网的基础上。软件交付能力成为企业的核心竞争力,研发效能成为企业的共同挑战。

一方面,随着竞争的加剧,业务对研发效能的期望越来越高;另一方面,随着互联网向产业纵深的发展,产品和协作的复杂度越来越高,研发效能有下降的趋势,这是期望和理想的差距,也是研发效能提升必须要解决的问题。

在推行研发效能的早期阶段,通常可以采用自上而下的策略,从一个工程实践中的实际痛点小事入手,以解决问题为提升研效的目标,这个阶段我们追求的是“短平快”,问题逐个击破。这些问题包括但不限于:

  • 本地编译时长消耗大
  • 本地测试困难,测试环境准备复杂且耗时
  • 自动化测试用例维护成本高
  • 测试数据准备困难
  • 研发后期代码提交集中,缺陷数激增
  • 性能缺陷在研发后期发现,修复成本高
  • ……

进入中后期阶段,回到软件研发领域,从全局切入进而优化工作。在引入敏捷解决方法之前,先来看一个度量图表:

上图中,横坐标是日期,横坐标上方红色竖条代表这一天发现缺陷数量;横坐标下方绿色竖条代表当天解决的缺陷数量;橙色曲线代表缺陷存量。图中左右两个部分比较了两种交付模式。

左半部分,即小瀑布开发模式。在迭代前期,团队集中设计开发,引入缺陷,但为及时验证解决。缺陷一直隐藏在系统中,直到后期测试和集成阶段,缺陷集中爆发,带来大量的返工、延期和交付质量问题。

右半部分,即持续交付模式。在整个迭代过程中,团队以小粒度需求为单位开发,持续地集成和测试它们,即时发现和解决问题。缺陷库得到控制,系统始终处于接近可发布状态。

实际上,持续交付模式与敏捷开发原则十分相近,敏捷=价值观+原则+一系列符合价值观和原则的方法。敏捷团队迭代周期为两周,通过透明、协作、有纪律性的持续改进,是的如那件一直处于可工作状态,每个迭代都能将软件部署到类似生产环境中,并向用户演示。通过敏捷方法,可有效避免“小瀑布”问题,按照需求粒度优先级排序,将需求拆分为能够独立测试的需求,在整个流程中发现问题可以及时解决并进行复盘总结。

从个人角度来看,必须从实际出发,从原则出发,从个人转变为关注价值流动:待开->设计->开发->开发自测->代码评审->测试->完成。不断地学习新的开发技能,从而提升自己的开发效率。

从团队角度来看,团队文化是团队成员共同认可的价值观和行为准则,良好且有效的文化是保障团队高效产出的关键部分,文化价值观的贯彻执行是保证一个敏捷团队高效工作的制胜宝典。当然,任何措施若涉及个人利益,必然会有坏味道产生,只能看这个措施是否能引导团队往正确的方向走,是否利大于弊。

感谢阅读。

参考资料:

[1] 腾讯技术工程 https://zhuanlan.zhihu.com/p/202972178?utm_source=tuicool

[2] 过河卒冲http://www.360doc.com/content/20/0915/11/31263000_935733089.shtml

[3] 阿里云云栖号 https://zhuanlan.zhihu.com/p/57029968

[4] huver2007 https://blog.csdn.net/huver2007/article/details/103260847

[5] 研发效能提升和敏捷实施36计 https://www.sohu.com/a/340050349_612370

[6] 书籍参考:《持续交付》,《研发效率破局之道》

作者:京东零售 李泽阳

来源:京东云开发者社区 转载请注明来源

与一文看懂研发效能提升相似的内容:

一文看懂研发效能提升

# **1 什么是研发效能?** 对于一个企业来说,最大化企业效能是其必求目标,包括:利润、用户规模、客服满意度、运营效率等。对于自有产品研发的互联网公司来说,研发效能是服务企业效能的重要因素。 一个软件研发的完整流程如下图所示: ![](https://storage.jd.com/shenden

一图看懂CodeArts Inspector 三大特性,带你玩转漏洞管理服务

华为云漏洞管理服务CodeArts Inspector是面向软件研发和服务运维提供的一站式漏洞管理能力,通过持续评估系统和应用等资产,内置风险量化管理和在线风险分析处置能力,帮助组织快速感应和响应漏洞,并及时有效地完成漏洞修复工作,更好地应对潜在的安全威胁。

Vue源码学习(六):(支线)渲染函数中with(),call()的使用以及一些思考

好家伙, 昨天,在学习vue源码的过程中,看到了这个玩意 嘶,看不太懂,研究一下 1.上下文 这段出现vue模板编译的虚拟node部分 export function renderMixin(Vue) { Vue.prototype._c = function () { //创建标签 return

[转帖]一文看懂家庭宽带光纤是如何入户

目前,家庭宽带普遍实现了光纤入户,入户光纤一般在弱电箱的位置,家庭装修需要预埋网线,才能在后期流畅的使用网络。下文对网线预埋、网线选择、组网方式三个方面说一说。 一、光纤如何入户 1、光纤如何入户 入户光纤是不用家庭用户操心的,运营商在小区附件,一般部署了分光箱等。装机员会从分光箱拉一条皮纤到房子的

[转帖]一文看懂 .dockerignore

https://dhcp.cn/k8s/docker/dockerignore.html#dockerignore-%E8%AF%A6%E7%BB%86%E4%BB%8B%E7%BB%8D 一文看懂 .dockerignore 在 dockerfile 同级目录中创建名为 .dockerignore

[转帖]一文看懂eBPF、eBPF的使用(超详细)

https://zhuanlan.zhihu.com/p/480811707 eBPF(extended Berkeley Packet Filter) 可谓 Linux 社区的新宠,很多大公司都开始投身于 eBPF 技术,如 Goole、Facebook、Twitter 等。 eBPF 究竟有什么

[转帖]一文看懂mysql数据库事务隔离级别

概述 我们都知道除了MySQL默认采用RR隔离级别之外,其它几大数据库都是采用RC隔离级别。那为啥mysql要这样设置呢?其实是MySQL为了规避一个数据复制场景中的缺陷,而选择 Repeatable Read 作为默认隔离级别。不过不同数据库实现方式还是不太一样。 Oracle仅仅实现了RC 和

文件系统(九):一文看懂yaffs2文件系统原理

liwen01 2024.07.07 前言 yaffs 是专为nand flash 设计的一款文件系统,与jffs 类似,都是属于日志结构文件系统。与jffs 不同的是,yaffs 文件系统利用了nand flash 一些特有属性,所以在数据读写擦除和回收上都有较大的差异。 关于jffs2文件系统的

算法金 | 一文看懂人工智能、机器学习、深度学习是什么、有什么区别!

大侠幸会,在下全网同名[算法金] 0 基础转 AI 上岸,多个算法赛 Top [日更万日,让更多人享受智能乐趣] 引言:走进智能的世界 曾经,人工智能(AI)是科幻小说中的概念,与飞船、外星人并肩而立。 然而,随着时间的推移,AI不再仅仅是幻想的产物,它已经成为我们日常生活中不可或缺的一部分。 在A

文件系统(六):一文看懂linux ext4文件系统工作原理

liwen01 2024.06.09 前言 Linux系统中的ext2、ext3、ext4 文件系统,它们都有很强的向后和向前兼容性,可以在数据不丢失的情况下进行文件系统的升级。目前ext4是一个相对较成熟、稳定且高效的文件系统,适用于绝大部分规模和需求的Linux环境。 ext4它突出的特点有:数