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

目录

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,一经查实,立即删除!

相关文章

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

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

电力智能监控系统

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

固定资产卡片乱怎么管理

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

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

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

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

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

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

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

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

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

算法笔记 二叉搜索树

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

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;在设备管理器中可以看…

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

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

计算机网络的故事——HTTP报文内的HTTP信息

HTTP报文内的HTTP信息 文章目录 HTTP报文内的HTTP信息一、HTTP 报文二、请求报文及响应报文的结构三、编码提升传输速率 一、HTTP 报文 HTTP报文是由多行&#xff08;CRLF作换行符&#xff09;数据构成的字符串文本&#xff0c;HTTP报文可以分为报文首部和报文主体两部分&…

深度学习笔记

1. 代价函数(cost function)与误差函数(loss function)之间的关系&#xff1a;&#xff0c;其中J为代价函数&#xff0c;L为误差函数&#xff0c;Y为标签矢量&#xff0c;A为根据样本计算矢量。 2. 代价函数J对w和b的导数&#xff1a;推导过程&#xff0c;误差函数以交叉熵 为…

Java“牵手”京东商品价格数据,京东商品历史价格数据接口,京东API接口申请指南

京东平台商品历史价格接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取京东商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片&#xff0c;历史价格&#xff0c;现在的价格等详细信息 。 获取商品价格接口API是一种用于获…

Unity 安卓(Android)端AVProVideo插件播放不了视频,屏幕一闪一闪的

编辑器运行没有问题&#xff0c;但是安卓就有问题&#xff0c;在平板上运行就会报错&#xff1a; vulkan graphics API is notsupported 说不支持Vulkan图形API,解决方法&#xff1a;把Vulkan删除掉

Laravel 表单验证器的常用的2种使用方法

1、使用控制器的 validate 方法进行参数验证 场景一&#xff1a;前后端未分离 /*** 保存一篇新的博客文章。** param Request $request* return Response*/ public function store(Request $request) {$this->validate($request, [title > required|unique:posts|max:2…

Vue/React 项目部署到服务器后,刷新页面出现404报错

问题描述&#xff1a;在本地启动项目一切正常&#xff0c;部署到服务器上线后出现BUG&#xff0c;项目刷新页面出现404。 起初以为是自己路由守卫或是token丢失问题&#xff0c;找了一圈终于解决了 产生原因&#xff1a;我们打开vue/react打包后生成的dist文件夹&#xff0c;可…

论文开题:成功之门的五大关键策略

研究生、博士生、学者或任何从事研究的人都会面临一个不可避免的环节——论文开题。这一阶段不仅定义了接下来研究的方向&#xff0c;还可能影响到整个项目的成功与否。那么&#xff0c;如何确保你的开题过程能够无瑕通过&#xff0c;还能打动评审人呢&#xff1f;本文将揭示论…

MEMS传感器的原理与构造——单片式硅陀螺仪

一、前言 机械转子式陀螺仪在很长的一段时间内都是唯一的选项&#xff0c;也正是因为它的结构和原理&#xff0c;使其不再适用于现代小型、单体、集成式传感器的设计。常规的机械转子式陀螺仪包括平衡环、支撑轴承、电机和转子等部件&#xff0c;这些部件需要精密加工和…

文件包含漏洞利用的几种方法

文章目录 安装环境启动环境漏洞花式利用蚁剑连接图片马读取敏感文件&#xff08;hosts&#xff09;读取该网站的php源码 代码审计 安装环境 安装phpstudy&#xff0c;下载MetInfo 5.0.4版本软件&#xff0c;复制到phpstudy目录下的www目录中。 打开phpstudy&#xff0c;访问浏…