腾讯张乐:“反内卷”潮流已至,研发效能是软件企业必由之路

目录

Why|“狂飙”踩下刹车,“湖水岩石效应”加速显现

What|效能 ≠ 效率,效能 = 效率 + 有效性

How|研发效能“黄金三角”

e.g.|软件研发效能实践中的“坑”与“解”

1. 忽视重视工程师的声音

2. “迷信”局部优化,忽视全局优化和拉通的重要性

3. “伪”工程实践

AIGC + 研发效能畅想


 

 近日, InfoQ 联合极狐GitLab 组局探讨「研发总是追不上业务需求,除了买工具,还能做什么」腾讯研发效能资深技术专家张乐老师作为嘉宾,分享了关于研发效能的核心要素和实践过程中的“坑”与“解”等精彩内容。本文整理自张乐老师的分享,Enjoy~

“内卷”是这两年的热词,指持续投入资源,但不产生价值的内部竞争。在软件研发领域,风向已经发生变化,我们正在经历一场从“内卷”到“反内卷”的变革,提升研发效能注定是软件企业的必由之路。

Why|“狂飙”踩下刹车,“湖水岩石效应”加速显现

过去一二十年,数字化红利推动一波波增长,互联网、软件行业高歌猛进、快速扩张,用“狂飙”来形容也不为过。

为了更好或更早占领市场,很多企业通过大量堆砌人力、资源和时间,俗称“快、糙、猛”的研发模式,让业务先跑赢,而后置了发展模式是否健康、科学、可持续等问题。

现阶段经济下行,企业经营压力大,不健康的发展方式注定无法长久。因此,众多企业纷纷寻求降本增效。

这个过程类似“湖水岩石效应”:当湖中有很多水,水位很高时,湖中的石块都被水所覆盖,此时即使有很大的暗礁,人们也看不到。但是当水量减少,水面降低时,一些暗礁就暴露出来了。

很多企业已经碰见了这样的“暗礁”,例如相比前两年,人员数量已经翻倍,但交付的业务量和需求量并没有同比增加,甚至下降,因为系统架构越来越复杂,微服务数量越来越多等。这在一定程度上说明,在过去一段时间里,快速增长掩盖了一些真实的问题,即研发效能并没有在上升,可能持平甚至下降。

在这种趋势下,企业已经不能一味地靠堆砌资源来获得工作成果,切实提高工作效率和有效性才是良药,因此,“研发效能”变成了软件企业的核心竞争力。

What|效能 ≠ 效率,效能 = 效率 + 有效性

研发效能究竟是什么?前几年,行业里还缺乏对其的明确定义,比较接近的概念有谷歌的 EP(Engineering Productivity,工程生产力),还有 EE(Engineering Excellence,工程卓越生产力),但是总是没有一个中文词能够达成一个很好的共识。

我在参与翻译 DORA 的 DevOps 年度报告时,遇到了“Software Delivery Optimization Performance”中“Performance”如何翻译的问题。经过与同行的长久探讨,我们发现在业务场景中,它是“绩效”,在软件交付改进与优化的场景,译为“效能”更为妥当。“研发效能”逐渐进入大众视野。 

2021 年 10 月,国内首届卓越工程生产力大会(Excellent Engineering Conference)上,我和数十位研发效能和工程生产力专家发布了“研发效能宣言”,该宣言从业务、流程、技术、数据以及组织视角对研发提升给出了价值观的指导。这既是对敏捷宣言的致敬,也是对我们的信念和价值观的呼吁和声明,代表了我们的立场,以及我们认为对研发效能而言什么才是最重要的。

图片

图片来源:书籍《软件研发效能提升实践》,作者张乐、茹炳晟等

我当时画了一张图,最上面是业务目标,下面有两个要素,左边是“理想的功能和质量”,右边是“理想的工作量”,即我们希望用什么样的代价实现什么样的功能和质量。

“理想很丰满,现实很骨感”,我们会发现理想和现实之间经常存在差距,要么是效率上的差距,要么是有效性上的差距。

图片

所以,研发效能 ≠ 研发效率,研发效能既要关注效率,也要关注有效性,或者说既要关注做正确的事情,也要关注正确的做事情,并追求效率

如一句话来表述研发效能,即研发效能就是更高效(即效率)、更高质量、更可靠、可持续地交付更优的业务价值(即有效性)的能力。对于大型企业而言,还要关注规模化问题,考虑如何管理复杂性。

💡 欢迎点击文末「阅读原文」获取 5 本《中国企业研发高效能白皮书》( CI/CD、ChatOps、企业级软件架构、Code Review、从价值流管理到研发效能管理)完整版合集,开启高效能研发之旅。

How|研发效能“黄金三角”

如何落地研发效能?在调研了国内外多家公司后,我发现他们无外乎都在关注研发效能的三个维度:效能平台、效能实践和效能度量。因此,我把这三部分整理成模型,称为研发效能「黄金三角」。

图片

图片来源:书籍《软件研发效能提升实践》,作者张乐、茹炳晟等

研发效能黄金三角彼此独立,又相互关联:

  • 效能实践中的优秀实践可以固化、沉淀到效能平台;反过来,效能平台支撑效能实践的落地;

  • 效能平台产生的大量研发数据形成效能度量中的效能洞察;反过来,效能度量持续观测效能平台产生的数据,进行下钻和深入分析;

  • 效能度量中的洞察和分析结果可以用于针对性优化效能实践;反过来,效能实践可以给效能度量更多的输入,帮助其完善度量指标集和分析方法。

通常企业研发效能不高的原因,是没有做好「黄金三角」,例如:

  1. 效能实践上,忽视了软件工程最根本方法,包括管理维度如需求分析等,工程维度如单元测试、Code Review、代码分支模型等。很多人更愿意去看框架或者编程语言内容,但对于架构怎么设计,高内聚、低耦合怎么做等问题研究不足。我认为这些基本功非常重要,而且是效能提升的关键点。

  2. 效能平台上,没有用好工具。我们常说的“道法术器”中的“器”指的就是工具,没有工具,很多事做不了;没有用好工具,例如把敏捷工具用成文档记录工具,把持续集成工具用成批量触发器等,没有结合场景有效应用工具,也将收效甚微。

  3. 效能度量上,缺乏以数据驱动进行持续改进。我们应该正确区分过程指标、结果指标;恰当运营推广让指标真正发挥价值,而不是变成一个“内卷”工具;基于数据客观的基础上,进行场景指标洞察和效能分析,直指研发痛点和根本问题和根本原因。

e.g.|软件研发效能实践中的“坑”与“解”

研发效能在实际落地过程中,确实有很多“坑”,举几个常见问题和大家分享:

1. 忽视重视工程师的声音

我们经常看到,一些企业研发效能的优化方向是面向管理者的,如制定各种流程规范、强化项目和研发过程管理、出具各式各样的度量报表、使用各种绩效管理手段等,当然这些也很有价值,但有时忽视了为研发过程中最庞大的群体——工程师提供服务,用一套繁杂的规范去“框住”所有人,往往适得其反。

研发效能的提升要拥抱开发者体验,给工程师提供更明确的目标、更优秀的研发工具、更精简的协作流程,但千万不要过度控制,而要倾听工程师的声音,尊重和发挥个体智慧,这样才能获得更大的创造力和创新力。

2. “迷信”局部优化,忽视全局优化和拉通的重要性

研发效能并不缺乏单点能力,各个领域都有很多不错的垂直能力工具,但是把各个单点能力横向继承与拉通,从一站式全流程的维度设计和规划的研发效能平台还比较少。

这样的话,工程师很容易在某个具体单点里做局部优化。在研发效能提升初期,局部优化的效果还是可见的,如将编译时间从 10 分钟缩短到 2 分钟,将部署成功率从 95% 提升到 98% 等,但局部优化效果会随着时间流逝递减,并且从整个研发过程来看,其效果可能是微乎其微,导致看似热火朝天的研发工作,可能只是虚假繁忙。

进入深水区后,能够带来效率大幅度提升的往往是全局优化。所以不要忘记首先考虑全局优化,而不是局部优化;从整体看问题,而不是局部看问题。

3. “伪”工程实践

我们看到很多工程实践是为了做而做,而不是从本质上认可工程实践价值,比较典型的例子就是代码评审和单元测试。

很多企业在推行代码评审和单元测试,但过程中往往走偏:代码评审变成一个流程,实际评审质量无人问津,评审人的评审不算工作量,也无需承担任何责任等,效果可想而知。

我们缺的不是工程实践,而是工程实践的深度,不要用“伪”工程实践滥竽充数。

和大家分享一个数据,腾讯今年发布的《2022年腾讯研发大数据报告》中统计到,2022年,腾讯总计完成 262 万次代码评审,相比 2021 年增长 21.8%,代码评审参与率达到 74.6%,即 3/4 人参与代码评审。当然,参与率高不代表做得好,因此我们新增了一些指标来看产生了多少有价值的沟通:代码评审千行评论数为 15.3 个,也就是说参与代码评审的每 1000 行代码,就有 15 个评论。这说明代码评审这件事,我们是在实实在在地做,而不是表面功夫。

另外在工具上我们也做了很多优化,可以看到在 Code Review 页面上花的时间多久,加载时长如何,是否方便做评审等,真正服务于工程师。

💡 欢迎点击文末「阅读原文」获取 5 本《中国企业研发高效能白皮书》( CI/CD、ChatOps、企业级软件架构、Code Review、从价值流管理到研发效能管理)完整版合集,开启高效能研发之旅。

AIGC + 研发效能畅想

AIGC 浪潮翻涌,将给各行各业带来颠覆。在研发效能领域,已经有一部分生产级 AIGC 能力,在当前的软件开发专业分工和流程基础之上,去增强每一个环节,即 X + AI。

例如基于注释生成代码,基于代码生成注释,解读代码,被测代码生成测试代码;通过大模型做需求分析、竞品调研、完善格式化需求文档、辅助编写用户故事、生成验收条件等,已经相对落地,可以直接使用。

效果如何呢?我们看到在一些局部领域里,X + AI 能获得 20~50% 甚至更高的效能提升。但如果想有颠覆性突破,例如把当前软件开发的模式或范式进行根本性重构,这种方式可能难以实现。

我畅想在未来,人可能更重视一头一尾:

  • 一头:人成为一个需求的提出者和一个任务的分发者,中间过程由大模型重构掉设计、开发、验证性的工作;

  • 一尾:人去做结果的判断。大模型的本质是基于概率,和我们追求确定性的结果之间,还要找到一个平衡点。

“反内卷”潮流已经悄然而至,中国企业正在高效能研发的路径上快速前进,研发效能将成为企业核心竞争力,你准备好了吗?

💡 为了解读市场中具有代表性的高效能研发解决方案,极狐 GitLab 联合 InfoQ 研究中心,以中国企业研发高效能为研究对象,发布了 5 本《中国企业研发高效能白皮书》( CI/CD、ChatOps、企业级软件架构、Code Review、从价值流管理到研发效能管理),期待可以帮助中国企业研发团队获得高效能方法论、工具、最佳实践的新认知。

欢迎点击此处获取 5 本《中国企业研发高效能白皮书》完整版合集,开启高效能研发之旅。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/68698.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 按钮的AcceptButton和CancelButton属性

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System

使用iCloud和Shortcuts实现跨设备同步与自动化数据采集

在如今的数字时代,跨设备同步和自动化数据采集对于提高工作效率和便利性至关重要。苹果的iCloud和Shortcuts App为我们提供了强大的工具,可以实现跨设备同步和自动化数据采集的功能。本文将详细介绍如何利用iCloud和Shortcuts App实现这些功能&#xff0…

Vue3 使用 echarts

echarts 是百度基于 JavaScript 实现的一个开源可视化图表库,主要特点就是可视化类型丰富、动画炫酷、使用简单。 这个教程就简单演示如何在 Vue 3 项目中使用 echarts。 1、导入 echarts import * as echarts from "echarts";2、初始化 echarts 并设置…

day55 动规.p15 子序列

- 392.判断子序列 cpp class Solution { public: bool isSubsequence(string s, string t) { vector<vector<int>> dp(s.size() 1, vector<int>(t.size() 1, 0)); for (int i 1; i < s.size(); i) { for (int j 1; …

电力智能监控系统

电力智能监控系统依托电易云-智慧电力物联网&#xff0c;利用计算机、计量保护装置和总线技术&#xff0c;对中、低压配电系统的实时数据、开关状态及远程控制进行了集中管理。该电力监控系统可以为企业提供"监控一体化"的整体解决方案&#xff0c;主要包括实时历史数…

前端缓存方法有哪些?cookie有哪些属性?

这里写目录标题 前端缓存方法有哪些&#xff1a;cookie有哪些属性&#xff1f; 前端缓存方法有哪些&#xff1a; Browser Cache&#xff08;浏览器缓存&#xff09;: 当浏览器请求一个资源&#xff08;例如图片、CSS、JS 文件&#xff09;时&#xff0c;它会首先检查自己的缓存…

python中字典常用函数

字典常用函数 cmp(dict1,dict2) &#xff08;已删除&#xff0c;直接用>,<,即可&#xff09; 如果两个字典的元素相同返回0&#xff0c;如果字典dict1大于字典dict2返回1&#xff0c;如果字典dict1小于字典dict2返回-1。 先比较字典的长度&#xff0c;然后比较键&#x…

固定资产卡片乱怎么管理

固定资产卡片是记录公司固定资产信息的重要工具&#xff0c;如果管理不善&#xff0c;容易造成卡片混乱、数据错误等问题。 为了避免这种情况的发生&#xff0c;可以采取以下措施&#xff1a;  建立完善的资产管理制度&#xff0c;明确固定资产的分类、标准和使用情况&#x…

Hadoop -HDFS常用操作指令

1.启动HDFS hadoop/sbin/start-dfs.sh2.关闭 HDFS hadoop/sbin/stop-dfs.sh3. 在HDFS中创建文件夹 #老版本 hadoop fs -mkdir -p path #新版本 hadoop dfs -mkdir -p path4.查看指定目录下内容 hadoop fs -ls [-h] [-R] path hadoop dfs -ls [-h] [-R] ptahpath 指定…

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书山东师范大学图书馆

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书山东师范大学图书馆

客户忠诚度和保留率:不良方法的陷阱

良好的客户忠诚度和保留策略是任何电子商务业务成功的关键因素。但当出现问题时会发生什么&#xff1f;您可以采取哪些措施来鼓励忠诚度并减少客户流失&#xff1f;继续阅读以了解不良客户忠诚度和保留实践的后果。 忠诚度和保留率低下的后果 客户不满意和高流失率 客户忠诚…

如何在Mac电脑上安装WeasyPrint:简单易懂的步骤

1. 安装homebrew 首先需要确保安装了homebrew&#xff0c;通过homebrew安装weasyprint可以将需要的库都安装好&#xff0c;比pip安装更简单快捷。 安装方法如下&#xff1a; /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)&qu…

苹果微信聊天记录删除了怎么恢复?果粉原来是这样恢复的

粗心大意删除了微信聊天记录&#xff1f;有时候&#xff0c;一些小伙伴可能只是想要删除一部分聊天记录&#xff0c;但是在进行批量删除时&#xff0c;不小心勾选到了很重要的对话&#xff0c;从而导致记录丢失。 如果这时想找回聊天记录该怎么办&#xff1f;微信聊天记录删除…

算法笔记 二叉搜索树

二叉搜索树&#xff08;Binary Search Tree&#xff0c;简称 BST&#xff09;是一种数据结构&#xff0c;用于存储具有可比较键&#xff08;通常是数字或字符串&#xff09;的元素 1 结构特点 节点结构&#xff1a;每个节点都有一个键和两个子节点&#xff08;左子节点和右子…

服务器管理系统是什么

服务器管理系统是什么 服务器管理系统&#xff0c;是在操作系统下对操作系统的服务器软件及其相关软件进行二次设置的管理软件&#xff0c;是运营商管理域名、服务器、企业邮局、数据库等服务器主机类产品的一个网站平台&#xff0c;以达到快捷实现域名、服务器主机、企业邮局…

Wrist PPG数据集

Wrist PPG数据集通常是指采集自腕部&#xff08;手腕&#xff09;的光学心率传感器数据集&#xff0c;用于监测心率、心律变异性和其他生理信号。PPG代表光学脉搏波形&#xff0c;它是通过测量皮肤表面的光反射来获得心率信息的一种非侵入性方法。这些数据集通常用于研究心脏健…

elementUI textarea可自适应文本高度的文本域

效果图; 通过设置 autosize 属性可以使得文本域的高度能够根据文本内容自动进行调整&#xff0c;并且 autosize 还可以设定为一个对象&#xff0c;指定最小行数和最大行数。 <el-inputtype"textarea"autosizeplaceholder"请输入内容"v-model"te…

NVIDIA CUDA Win10安装步骤

前言 windows10 版本安装 CUDA &#xff0c;首先需要下载两个安装包 CUDA toolkit&#xff08;toolkit就是指工具包&#xff09;cuDNN 1. 安装前准备 在安装CUDA之前&#xff0c;需要完成以下准备工作&#xff1a; 确认你的显卡已经正确安装&#xff0c;在设备管理器中可以看…

MFC 与 QT“常用控件”对比

1、 常用控件 MFC QT 1.静态文本框/标签 CStatic QLabel 按钮 CButton包含了3种样式的按钮&#xff0c;Push Button&#xff0c;Check Box&#xff0c;Radio Box 4种不同的类 2.按钮&#xff1a;推动按钮 Push Button(同一个类CButton) QPushButton 3.按钮&#xf…

【从0学习Solidity】2. 值类型详解

Solidity极简入门: 2. 值类型 博主简介&#xff1a;不写代码没饭吃&#xff0c;一名全栈领域的创作者&#xff0c;专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构&#xff0c;分享一些项目实战经验以及前沿技术的见解。关注我们的主页&#xff0c;探索全栈开发…