谈「效」风生 | 如何找到现有研发体系的「内耗问题」?

news2025/1/22 12:18:34

#第3期:如何找到现有研发体系的「内耗问题」?#

在上一期《谈到提升效能,我们应该如何下手?》我们聊到开始做研发效能的四个要点:评估现有流程、引入自动化工具、建立度量指标、持续改进。本期就围绕「评估现有研发体系」这个话题,来看看下面两位研发朋友是如何理解相关问题的。

受访者 A:某云厂商 资深技术专家 李工

受访者 B:某通信企业 架构工程师 孙工

无论是什么样的科技企业,研发体系都存在很多问题。两位嘉宾在工作中都对自己所在的研发体系进行过改进工作。那么,评估研发体系要做些什么?

A:当我们开始做评估时,就已经说明研发体系出了大问题,或者说体系已经跟不上业务发展的速度。评估就是一个诊断过程,找到系统的问题是关键,最终目的是为了实现效能“提速”,如何准确地找到问题是关键所在。

简单说一下“找问题”的方法,我们可以从“成本”的角度去分析整个体系。比如,一般来说,随着产品和业务的不断升级迭代,研发团队成员也随之增多,代码规模也应按一定比例增长。实际上我们发现并非如此,反而到了一定阶段,增长速度呈现放缓趋势,这是人员成本扩大的问题。

在不同研发环节上增加相应人员,会造成各个环节之间的沟通成本增加,比如,产品与研发之间、研发与测试之间、功能测试与系统测试之间,都会产生很高的沟通成本,导致研发时间损耗。在研发体系中找到这些“成本问题”,并且解决“成本问题”的核心就是降低体系中的内耗,这也是评估工作的主要方向。

B:周工用”内耗“来解释体系问题很贴切。衡量体系中的内耗,需要建立相应的指标来监控问题的严重性。建立指标,是开始改进体系时首先要做的事,也是未来持续要做的事。

在此不详细说度量指标,只说一下构建指标时我们的一个思路,每个指标下面对应了很多数据,最后我们要做的是对数据进行分析。所以我们既要保证指标是有效的,也要保证数据分析是合理的。

我们常见反映质效关系的指标包括:需求完成数和平均完成时长、人均提交代码量、代码缺陷发现量、缺陷平均修复时长、代码规约扫描、构建次数、发布成功率等等。

以上可能是基础性指标,此外还有更多的延伸指标。我们需要仔细思考我们所找的问题会藏在哪里,再去定指标。例如,团队成员、需求、代码的关系,团队成员有新有老、需求有大有小,代码有多有少,如何定义经验水平、如何定义需求颗粒度,提交的代码缺陷等级与缺陷数量的关系如何。

比如说:两个研发人员提交代码,都出现5个缺陷,第一个人出现了5个之前我们没遇到的缺陷,第二个人出现的是5个我们之前多次出现修改的缺陷,这是人员的能力差异,从指标上可以准确反映。

发现体系中的「内耗问题」之后,接下来要做些什么?

A:我们刨根问底把这些问题找出来,并不急于修正优化。尤其是要重新构建一套提升研发效能的体系时,这些问题将作为一个“参照物”来完善效能的实践,为以后打造平台做准备。

我们知道了内部问题在哪里,问题的严重程度如何。这时开始实践DevOps或DevSecOps来提升研发效能,就不再是停留于理论阶段了,在DevOps或DevSecOps模型下全局切入,从问题入手,“自下而上”地解决问题,再持续改进,从而持续为业务创造价值。

B:接下来不管是做DevOps还是DevSecOps,我们都需要设计新的流程,之前所找到的「内耗问题」,也是我们技术价值流中流动性过慢的问题,从而导致研发非常低效。

构建新的流程,目的是减少需求从代码生产到部署上线的时间,同时提高质量、安全性、可靠性,建立从开发到运维再到安全三者之间更快速、更平滑的流程,从而持续交付高价值。

这就要讲到“如何最大程度优化工作流”的事了。简单说我们通过使工作可视化、限制在制品数、减小批量大小、减少交接次数、持续识别和改善约束点、消除价值流中的困境和浪费,持续地优化全局目标,实践这些方法论上程序来设计改进我们的流程。

再提一点,提升研发效能也是一个组织性问题,我们找到问题、构建新的体系的同时,也要在组织层面推动。推行和管理研发效能的人,很大程度上不是研发人员,有的甚至会导致多个团队之间产生矛盾,所以一开始也需要从组织架构进行改变,来支撑研发效能的提升。

本期两位嘉宾分享的内容涉及的知识点比较广,简单总结如下:

1. 评估研发体系,需要找到造成现有体系流动性过慢的「内耗问题」。

2. 通过构建度量指标,并对指标进行科学的数据分析,来深度挖掘体系内存在的「内耗问题」。

3. 挖掘到「内耗问题」后,可以准备实践DevOps或DevSecOps,根据「流动原则」设计优化新的工作流。

4. 组织架构也需要随之变化,来支撑研发效能的提升工作。

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

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

相关文章

二次创业接地气、强内功,三只松鼠从一棵树出发重造“人设”

民以食为天,自古以来,“吃”都是一门浅显与深奥并存的生意。产业链看似简单:种、收、制、卖,却足以令众多企业为之前赴后继十年、百年。 三只松鼠,正在这条变革的道路上砥砺前行。自去年4月开启全面转型以来&#xff…

C++ 赋值运算符重载

赋值运算符重载 运算符重载: C为了增强代码的可读性,可以对 运算符 进行重载,运算符重载 就是具有特殊函数名的函数,这个函数也具有返回值类型,函数名字和参数列表,它的返回值和参数列表的形式和普通函数…

基于SAM的二次开发案例收集分享

一、AnyLabeling[1]——制作人:vietanhdev AnyLabeling LabelImg Labelme Improved UI Autolabeling AnyLabeling软件是一个集成了YOLO、Segment Anything模型(AI支持)的高效数据标注工具,它可以通过点击目标的方式完成目标检…

商业银行财富管理“智能原生”能力呈阶梯化,AI助力商业模式趋向多元化发展

易观:金融业的财富管理从经营角度来看,是“客户与渠道管理场景运营产品研发”三位一体共同构建以客户为中心,数据驱动的业务经营体系。其中,“客户与渠道管理”是将客户利益作为核心目标,通过升级用户体验、客户全生命…

获奖名单公布|香港BlockBooster x Moonbeam黑客松圆满收官

Moonbeam基金会赞助的”Into the Socialverse”主题的BlockBooster黑客松于近日落幕。该活动由BlockBooster、OKX、Gitcoin和OxU香港区块链俱乐部联合主办,共有22个开发团队参赛。经过多位评委的严格筛选,3支优秀团队脱颖而出,获得Moonbeam基…

zookeeper集群命令使用

1.zookeeper脚本使用(地址填写集群中任意一个主机地址) 连接客户端命令行 /etc/zookeeper/zookeeper/bin/zkCli.sh -server 10.1.60.112:2181 启动zookeeper服务 /etc/zookeeper/zookeeper/bin/zkServer.sh start 停止zookeeper服务 /etc/zookeeper/zookeeper/bin/zkServer…

春风吹,战鼓擂,忆享科技-云服务事业部春季员工关怀活动集锦,温情相伴

前言 时序更替,忆享科技又迎来新的一年。回顾2022,忆享科技在风雨中前行,实现了一次又一次的突破。在这2023年春暖花开,万物复苏的美好季节,忆享科技怀抱着它满满的关怀向大家走来!春季云服务事业部开展了五…

推动科技企业成长,开源网安受邀参加数字经济企业孵化器建设座谈会

近日,为更好地做好数字经济孵化器的孵化培育工作,推动数字经济孵化器和入驻企业高质量发展,高创公司召开数字经济企业孵化器建设座谈会。高新区工委委员、管委会副主任贺菲出席会议,开源网安合肥公司总经理菅志刚受邀参加本次座谈…

vue生命周期代码示范--Vue基本介绍--MVVM-示意图--数据渲染--事件绑定--修饰符--组件化--和全部代码示范

目录 Vue 基本介绍 官网 git 地址: MVVM-示意图 解读 MVVM 思想(上图) 下载官网 简单的代码示例方便理解 Vue 数据绑定机制分析! 注意事项和使用细节 数据单向渲染 基本说明 应用实例 注意事项和使用细节 数据双向绑定 应用实例 ​编辑代码实现 代码综合-单…

带头双向循环链表--数据结构

魔王的介绍:😶‍🌫️一名双非本科大一小白。魔王的目标:🤯努力赶上周围卷王的脚步。魔王的主页:🔥🔥🔥大魔王.🔥🔥🔥 ❤️‍&#x1f…

Rocket 框架基础

Rocket v0.5 DOC Rocket是Rust的一个web框架,它使编写快速、安全的web应用程序变得简单,而不会牺牲灵活性、可用性或类型安全性。 类型安全 从请求到响应,Rocket确保您的类型有意义。样板免费 把时间花在编写真正重要的代码上,让…

Amazon S3 对象存储Java API操作记录(Minio与S3 SDK两种实现)

缘起 今年(2023年) 2月的时候做了个适配Amazon S3对象存储接口的需求,由于4月份自学考试临近,一直在备考就拖着没总结记录下,开发联调过程中也出现过一些奇葩的问题,最近人刚从考试缓过来顺手记录一下。 S3对象存储的基本概念 …

Unity Camera -- (4)探索不同类型的镜头

不同类型的镜头会呈现出不同的氛围和感觉,通常镜头的类型和相机聚焦方式和位置相关。本节我们来看看一些常见的不同类型的镜头。 广角 广角镜头通常在画面中包含更多的环境。观众接受到的是通常从远处拍摄的范围更广的视觉信息。 1. 工程窗口中,在Scene…

04/27课后作业(Qt)

widget.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);this->setWindowTitle("文件管理"); }Widget::~Widget() {delete ui; }//字体按钮对…

Spring Boot——@Autowired属性注入问题

🎈 Autowired问题 当我们在使用Autowired属性注入时,会发现idea提示Field injection is not recommended ,译为:不推荐使用属性注入   要想了解Spring和idea之所以不推荐使用Autowired属性注入,首先就要先了解Spring常用的注入方式:简单类型注入、集…

基于Redis的分布式限流详解

前言 Redis除了能用作缓存外,还有很多其他用途,比如分布式锁,分布式限流,分布式唯一主键等,本文将和大家分享下基于Redis分布式限流的各种实现方案。 一、为什么需要限流 用最简单的话来说:外部请求是不可…

ArcGIS Pro拓扑

地理数据库拓扑帮助确保数据完整性。拓扑的使用提供了一种对数据执行完整性检查的机制,帮助地理数据库中验证和保持更好的要素表示。 拓扑是点、线和多边形要素共享几何的方式的排列布置。拓扑的用途包括以下几个方面: (1)限制要…

模型服务,支持渲染多张输出图片|ModelWhale 版本更新

清明时节雨纷纷。晚春的雨季中,ModelWhale 迎来了新一轮的版本更新。 本次更新中,ModelWhale 主要进行了以下功能迭代: • 新增 模型服务多图输出渲染(专业版✓ 团队版✓ ) • 优化 门户成果交流展示(团队…

Java异常机制

异常概念 异常是程序在运行期发生的不正常的事件,它会打断指令的正常执行流程。 设计良好的程序应该在异常发生时提供处理这些不正常事件的方法,使程序不会因为异常的发生而阻断或产生不可预见的结果。 Java语言使用异常处理机制为程序提供了异常处理的能…

卡尔曼滤波简介 —— 一维卡尔曼滤波

原文:The alpha - beta - gamma filter (kalmanfilter.net) 一维卡尔曼滤波 在本章中,我们将在一个维度上推导出卡尔曼滤波。本章的主要目标是简单直观地解释卡尔曼滤波的概念,而不使用可能看起来复杂和令人困惑的数学工具。 我们将逐步推进…