极狐GitLab 10 年开源研发管理实践:4 个核心步骤突破效能瓶颈

news2024/11/16 18:07:04

目录

研发效能实践的痛点

4 步击破痛点,提升研发效能

1. 明确目标

2. 优化研发流程

➤ 2.1 文档先行

➤ 2.2 可追踪的任务

➤ 2.3 自动化工作流

3. 注重代码质量

➤ 3.1 代码门禁:严格要求,提前报错

➤ 3.2  合并请求:代码变更的最佳实践

➤ 3.3 评审者轮盘:帮你找寻最合适的评审者

➤ 3.4 保证代码质量的其他方式

DevSecOps

Postgres.ai

4. 持续度量研发效能

总结


近日,在稀土开发者大会上,极狐GitLab 资深后端工程师毛超进行了《极狐GitLab 10 年开源研发管理实践》主题演讲,结合「极狐GitLab 效能度量模型」,从人员效能、合并请求、CI/CD 流水线、代码质量、交付核心指标(DORA)等方面介绍极狐GitLab 研发效能管理实践,分享团队如何发现自身问题,不断改进突破研发效能瓶颈,轻松贯通软件研发全生命周期,从而提升研发效率的实践经验。

以下内容整理自本次直播,你也可以点击此处观看视频回放或下载 PPT。Enjoy~

研发提质增效,是每个研发驱动业务增长的软件企业追逐的目标;高效管理软件项目,也一直是管理者的渴望。经过长时间的探索,研发效能领域已经从概念迈向务实,落脚于解决具体痛点和问题的可行方案。

例如《软件研发效能权威指南》一书提出了“研发效能黄金三角”原理:效能平台、效能实践和效能度量,三者相辅相成。

  • 效能实践中的优秀实践可以沉淀到效能平台,效能平台支撑了效能实践的落地;

  • 效能平台产生的大量研发数据形成效能度量中的洞察,效能度量持续观测效能平台中产生的数据;

  • 效能度量中的洞察和分析结果可用于针对性地优化效能实践,效能实践可以为效能度量提供更多的输入,帮助其完善效能度量和指标分析。

图片

今天,我们从研发效能的挑战和研发效能黄金三角展开本次分享。

研发效能实践的痛点

提到研发效能实践过程中的痛点,以下情况司空见惯:

  • 意识到研发效能要提升,却不知如何下手;

  • 研发指标太多了,无法确定核心指标;

  • 开发工作实在太忙,没空做研发效能改进;

  • 研发流程需要大量人工参与,拉低工作效率;

  • 研发用到太多工具,数据过于零散,无法观测;

  • 过于关注代码产出,忽视代码质量,bug 不断。

我认为要解决这些问题,离不开这 4 个核心步骤:明确目标、优化流程、注重质量和持续度量。

4 步击破痛点,提升研发效能

1. 明确目标

研发效能提升是一个广泛的概念,需要解构成具体的可度量的目标,如降低 Bug 缺陷率、缩短产品发布周期、提高代码复用率等,才更明确如何操作。同时,要有进度规划,将长远目标分解成阶段性的短期目标,使之更易落地。

同时,目标不能由高层单方面制定,需要在研发团队充分讨论,建立共识,确保研发、测试、运维等各个角色成员都明确自己的定位,才是有意义的。

2. 优化研发流程

开源开放是 GitLab 和极狐GitLab 的第一文化。在 GitLab 十年的这个开源历程中,累计超过 10 万个 commits,超过 6000 个提交者,极狐GitLab 在开源贡献组织中排名第一。

那么,极狐GitLab 的研发流程是怎样的呢?如下图,大流程上与其他企业大同小异,主要包括迭代管理、需求管理、功能开发、代码审查、发布管理、效能度量几个核心环节,研发团队可以根据相应的流程有序推进研发任务。

图片

特殊的是,极狐GitLab 是一个开源开放的平台,除了企业员工,还有很多社区贡献者参与到产品研发当中,社区贡献者常常会面临以下问题:

  • 社区贡献者如何快速上手?

  • 想贡献但不知道找谁领取任务?

  • 需求忘记打标签,不知道归属哪个团队?

  • 代码写完后,不知道如何合并代码?

  • 开发任务延期,没有及时需求更新状态?

  • 某功能是否已经发布?哪个版本发布?

  • ……

极狐GitLab 需要解决这个社区贡献者特殊的问题,才能保证友好的产品研发和开源体验,鼓励更多社区贡献者持续加入。

极狐GitLab 的解法是什么?就是要保证所有的事情有据可查,同时尽可能减轻人工参与。具体措施总结为如下 3 点:

图片

➤ 2.1 文档先行

极狐GitLab 使用多种工具进行文档建设,例如 Handbook,knowledge share,issue 等,记录十分详尽,确保所有参与者都可参考文档来推进工作。

➤ 2.2 可追踪的任务

只有可追踪,才能可度量。极狐GitLab 将迭代计划、开发任务、合并请求、代码审查等都开源出来,在极狐GitLab 平台统一管理,所有开源贡献者可见。下一个Milestone 什么时候结束,开发者如何贡献,匹配哪个需求等一系列问题都能找到答案。

➤ 2.3 自动化工作流

很显然,复杂的人工操作会让人望而却步。所以极狐GitLab 尽可能增加自动化流程,减轻人工重复劳动,让开发者专注于研发创新;管理者只需要关注研发价值的流动性,并快速、稳健的推进价值落地。

极狐GitLab 自动化工作流包括:

  • 监控议题状态,自动提醒团队成员完善信息:

图片

  • 监控代码合并流程,自动提醒团队成员进行代码评审:

图片

  • 定时发送通知,提醒团队成员完成任务:

图片

  • 自动生成研发报告,为研发度量打下基础:

图片

随着未来 AI 能力的注入,JiHuBot 将参与更多的工作。

3. 注重代码质量

在软件吞噬一切的时代,代码质量就是软件质量的基础,不仅影响软件运行效率和安全性,还影响研发团队的生产力

对于开源软件而言,一个 10 年工作经验的人可以贡献代码,一个刚参加工作的人也可以贡献,因此,开源项目更应注重代码质量。并且我认为,不做代码门禁和代码评审,那么代码质量就是由技术水平最低的人决定的

极狐GitLab 通过编码规范、代码审查、持续集成、自动化测试覆盖、重构等关键实践,保证代码质量。

➤ 3.1 代码门禁:严格要求,提前报错

极狐GitLab 会在代码提交之前做一系列的检测,包括提交消息检查、代码规范检测、推送前检查等。通过这些检查,在提交代码之前就把问题暴露出来并解决,后续工作就会轻松很多

➤ 3.2  合并请求:代码变更的最佳实践

一次 Git push 不等于一次代码变更。极狐GitLab 有一个概念叫做合并请求( Merge Request,等同其他平台的 Pull Request),即把一堆代码做一个打包,然后合并到某一个特性分支或者主干分支上。

其中,代码其实只是一部分,我们需要引导团队和社区同学,提供更多更详细、更丰富的资料,包括完整的上下文、修改前后的截图、数据库改动与否、测试覆盖率如何、流水线运行情况、强制少于 20 个文件修改等,这才是一次完整的代码变更。

➤ 3.3 评审者轮盘:帮你找寻最合适的评审者

除了上文提到机器人可以帮助做代码评审,极狐GitLab 也做了一个评审者轮盘应用,把所有具有评审资格的人列出来,按照不同团队、不同时区、当前状态以及当前任务量等信息,找到合适的代码评审人。

代码评审的核心关注点有哪些呢?包括:

  • 完善的介绍,详细的开发任务列表;

  • 可靠的、可阅读的代码;

  • 是否有更简单的解决方法;

  • 是否引入了不必要的外部依赖;

  • 有足够的自动化测试覆盖;

  • 前端、后端、数据库代码审查是否通过;

  • 流水线是否通过;

  • 是否通过安全评审。

那么如何心平气和且有效地完成一次代码评审呢?建议:

  • 不要下命令,而是问问题(如:rename 成 user_id 会不会更好一点?);

  • 不清楚就发问(如:我不太明白,能否解释一下这段逻辑?);

  • 代码共有,而不是几个人的(如:不用「你的代码」,用「这段代码」);

  • 不要用攻击的词语(如:这段代码太傻了,性能很差);

  • 详细清楚的表达,不要含糊其辞(如:不用「这段不好,需要改一下」);

  • 不要挖苦讽刺(如:大家快来看呀,这段代码真好,上线之后肯定出名)。

在极狐GitLab 要进行一次合并请求是不容易的,需要满足如图最低的合并请求要求:

图片

极狐GitLab 将 Pipeline 用了到极致,现在一个 Pipeline 包含 9 个阶段,拥有 400+ 任务,积累了 23 万 + 自动化测试,平均运行时间为 1 小时

这不是一朝一夕就能完成的,而是从 Day one 开始就一直坚持以自动化测试驱动的方式去保证代码质量,才能累积到这个数据。而且,这只是代码修改的 Pipeline 还没有涉及到部署、运维等一系列流程。

➤ 3.4 保证代码质量的其他方式

除了自动化测试,极狐GitLab 还运用多种方式保证代码质量,如:

  • DevSecOps;

  • 数据迁移脚本验证;

  • 创建临时验证环境;

  • 预检测 UI 测试。

DevSecOps

以 DevSecOps 为例,这是极狐GitLab 围绕 CI/CD Pipeline 构建的核心能力之一,即在代码变更的过程中,应用各种安全测试发现相应的安全问题或质量问题,提前解决这些问题,实现安全左移。

极狐GitLab DevSecOps 的设置也非常简单易用,只要在流水线定义文件中 Include一些已经定义好的模板,就会在流水线中自动加上相应的扫描任务,比如依赖项扫描、容器镜像、SAST、DAST、敏感信息扫描等。

图片

Postgres.ai

极狐GitLab 还集成了 Postgres.ai 应用,它的作用包括:

  • 定期脱敏部分 prod 数据,生成测试数据集;

  • 与机器人对话就可以运行 SQL 语句,并能分析运行效率获得相应的改进建议;

  • 在合并代码前验证数据迁移脚本的正确性和运行效率。

比如社区同学提交了一个代码变更,改动了 DB schema 的一个内容。那我们就要用测试数据库跑一下变更脚本,看看有没有破坏数据库的完整性或者正确性;或当社区同学修改了一个比较关键的数据查询或一个模型的查询语句时,也可以通过 Postgres.ai 机器人对话,去分析查询语句在数据集上运行结果,然后告诉我们它的性能如何,以及改进条件是什么。

在我看来,管理者应该始终追求这种卓越的工程实践,这是保证质量的基础。

4. 持续度量研发效能

如下图,是我总结的软件项目管理框架,包括了软件研发的方方面面。

图片

极狐GitLab 作为一款开源软件,在效能度量上具有特殊性:对于社区,我们更多的是整体发展,但是对于极狐GitLab 团队,就需要看团队的研发效能如何了。基于这个特殊需求,极狐GitLab 自研了一个紧扣中国本土需求的,基于极狐GitLab 的一站式企业 DevOps 智能分析管理平台——极狐星 TowerFox,能够同时对接多个极狐GitLab 实例,提供从数据驾驶舱、效能管理、项目分析到合规管理的一体化解决方案,能够全行业、多场景、全软件生命周期的满足企业研发管理需求。

不藏了!极狐GitLab 向你介绍一位研发效能「六边形战士」

此前,我们进行了研发效能管理主题直播,从研发效能管理痛点出发,分享了研发效能管理 7 步走与GDAI 经典方法,还有基于「蔚来」、「 某新医药企业」等客户案例,希望给大家提供实践指南。👉错过直播?快收藏详实回顾!Get「研发效能管理」7 步实践指南与案例剖析

这里简单展示一些不同纬度的效能管理:

  • 组织层面:展示组织关键数据,提升团队竞争动力

图片

  • 项目层面:聚焦项目关键指标,引入「极狐星项目成熟度」模型评估

图片

  • 交付速率:展示需求管理相关数据

图片

  • 交付能力:依据 DORA 指标、CI/CD指标

图片

  • 交付质量:展示代码评审和代码质量数据情况

图片

  • 人员效能

图片

  • 合规审计:比如针对代码泄露场景进行告警提示,展示审计事件,自动审计告警

图片

以上示例供参考,管理者应该根据团队目标,设计度量体系并定期评估和调整,持续改进

总结

我们将 DevOps 体系总结为“道法术器”,如 《企业 DevOps 成功之路》所言:DevOps 不能简单认为是一种工具、方法、技能或组织结构,DevOps 体系是结合所有这些元素来建立一个价值流水线的过程,使业务更快地交付和运营,并能更快地应对变化

图片

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

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

相关文章

Netty 入门指南

文章目录 前言Netty介绍Netty发展历程Netty核心组件实现HTTP服务器总结 前言 上文《BIO、NIO、IO多路复用模型详细介绍&Java NIO 网络编程》介绍了几种IO模型以及Java NIO,了解了在网络编程时使用哪种模型可以提高系统性能及效率。即使Java NIO可以帮助开发人员…

【java】【maven】【高级】MAVEN聚合继承属性等

目录 1、模块开发与设计 2、聚合 2、继承 3、属性 4、版本管理 5、资源配置 6、多环境配置 7、多环境开发配置 8、跳过测试 9、私服 前言:maven的高级使用包含分模块开发与设计、聚合、继承、属性、版本管理、资源配置、多环境配置、多环境开发配置、跳过…

软件测试缺陷报告

缺陷报告是描述软件缺陷现象和重现步骤地集合。软件缺陷报告Software Bug Report(SBR)或软件问题报告Software Problem Report(SPR) 作用:缺陷报告是软件测试人员的工作成果之一,体现软件测试的价值缺陷报…

如何知道企业是否办理过等保备案?哪里可以查询?

对于等保政策细节,大家还存在很多疑问,例如有人在问,如何知道企业是否办理过等保备案?哪里可以查询?今天我们就来简单聊聊,仅供参考。 如何知道企业是否办理过等保备案? 一般企业办理过等保备案…

RISC-V基础指令之shift移动指令slli、srli、srai、sll、srl、sra

RISC-V的shift指令是用于对一个寄存器或一个立即数进行位移运算,并将结果存放在另一个寄存器中的指令。位移运算就是把一个操作数的每一位向左或向右移动一定的位数,得到一个新的位。RISC-V的shift指令有以下几种: slli:左逻辑位…

8.3 作业

整理思维导图 2. 递归实现&#xff0c;输入一个数&#xff0c;输出这个数的每一位 #include <myhead.h> void fun(int t) {if(t 0) return;fun(t/10);printf("%d\n",t%10); } int main(int argc,const char *argv[]) {int t1623809; fun(t);return 0; } 3.递…

虹科方案 | 虹科AR助力汽车产业降本增效!

虹科AR远程解决方案 将高性能的Vuzix AR眼镜与工业远程软件相结合&#xff0c;一线员工使用AR眼镜呼叫专家&#xff0c;由远程专家进行诊断并给出建议&#xff0c;支持一线员工与远程专家实时语音视频交互、AR标注指引、发送文件图片并进行会议录制&#xff0c;帮助一线员工解放…

Linux--对同一个文件分别执行r和w指令,其得到的fd一样吗?

代码&#xff1a; #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>int main() {int fdopen("log.txt",O_WRONLY|O_CREAT|O_TRUNC);printf("fd_w: %d\n",fd);fdopen("log.txt",O_…

关于账号安全的一些思考

0x01-提升账号安全的目的 注册账号是大多数作弊场景的第一步&#xff0c;例如交易场景的生单、营销场景的秒杀活动等都需要账号的参与。其次账号相对于设备、支付卡等能够给唯一标识用户的资源中具备更好的主动权&#xff0c;因此提升账号安全能力是有必要的。 0x02-问题分析…

TikTok数据分析 | 用好超店有数,生意增长快人一步

TikTok在东南亚崛起之快令人叹服。 在东南亚第一大经济体印度尼西亚&#xff0c;超过200万小商家入驻了TikTok的电商平台&#xff1b; TikTok Shop 以6.9亿美元的收入市场份额超越Lazada成为越南第二大电商平台&#xff1b; 2023年泰国TikTok Shop的销售额一路猛涨&#xff…

交互流程图设计软件都有哪些?

交互流程图是设计行业信息流、观点流或组件流的图形代表。但是市场上应该如何选择各种交互流程图软件呢&#xff1f;如何使用高质量的交互流程图软件来绘制高端氛围的高档流程图&#xff1f;今天&#xff0c;小边给您带来了十个超级实用的交互流程图软件&#xff0c;我希望能帮…

8-3作业

思维导图 递归实现&#xff0c;输入一个数&#xff0c;输出这个数的每一位 #!/bin/bashif (( $# < 1 )); thenexit 1 finum$1function print_digits {if (( $1 < 10 )); thenecho $1elseprint_digits $(( $1 / 10 ))echo $(( $1 % 10 ))fi }print_digits $num 递归实现&…

Word导出高清PDF

通过word导出pdf清晰度较高的方法_word如何导出高分辨率pdf_Perishell的博客-CSDN博客通过打印机属性设置&#xff0c;让word打印出比较高清的pdf_word如何导出高分辨率pdfhttps://blog.csdn.net/weixin_45390670/article/details/129228568?ops_request_misc%257B%2522reques…

【Spring】(一)Spring设计核心思想

文章目录 一、初识 Spring1.1 什么是 Spring1.2 什么是 容器1.3 什么是 IoC 二、对 IoC 的深入理解2.1 传统程序开发方式存在的问题2.2 控制反转式程序的开发2.3 对比总结 三、对 Spring IoC 的理解四、DI 的概念4.1 什么是 DI4.2 DI 与 IoC的关系 一、初识 Spring 1.1 什么是…

GoogLeNet卷积神经网络-笔记

GoogLeNet卷积神经网络-笔记 GoogLeNet是2014年ImageNet比赛的冠军&#xff0c; 它的主要特点是网络不仅有深度&#xff0c; 还在横向上具有“宽度”。 由于图像信息在空间尺寸上的巨大差异&#xff0c; 如何选择合适的卷积核来提取特征就显得比较困难了。 空间分布范围更广的…

性能测试jmeter连接数据库jdbc(sql server举例)

一、下载第三方工具包驱动数据库 1. 因为JMeter本身没有提供链接数据库的功能&#xff0c;所以我们需要借助第三方的工具包来实现。 &#xff08;有这个jar包之后&#xff0c;jmeter可以发起jdbc请求&#xff0c;没有这个jar包&#xff0c;也有jdbc取样器&#xff0c;但不能发起…

Mysql面试突击班索引,事务与锁

Mysql面试突击班索引&#xff0c;事务与锁 1.为什么Mysql要使用B树做为索引而不用B树 B树能显著减少IO次数&#xff0c;提高效率B树的查询效率更加稳定&#xff0c;因为数据放在叶子节点B树能提高范围查询的效率&#xff0c;因为叶子节点指向下一个叶子节点B树采取顺序读 2.…

Mac直接使用Visio和MythType的解决办法

Mac使用 Visio 的三种解决办法及 Mac直接使用 MythType 的办法 今天终于在某种契机下解决了 Mac 下最大的不足&#xff0c;不能直接使用 Visio 和 MythType【2023年08月03日20:03:32】 摘要 众所周知在 mac 下无法直接使用 Visio 和 MythType&#xff0c;这导致我们&#xff0…

SSL 证书过期巡检脚本 (Python 版)

哈喽大家好&#xff0c;我是咸鱼 之前写了个 shell 版本的 SSL 证书过期巡检脚本 &#xff08;文章&#xff1a;《SSL 证书过期巡检脚本》&#xff09;&#xff0c;后台反响还是很不错的 那么今天咸鱼给大家介绍一下 python 版本的 SSL 证书过期巡检脚本 &#xff08;完整代码…

什么是跨链 DeFi?

跨链 DeFi 是指存在于多个不同区块链生态系统之间的金融应用程序生态系统&#xff0c;可以在彼此之间无缝交换数据和通证。 Web3 生态系统已经变得多链化&#xff0c;存在于数百个区块链、二层网络、应用链和其他环境的去中心化应用繁荣发展。虽然多样化的区块链生态系统的推出…