90%企业在探索的敏捷开发怎么做?极狐GitLab总结了这些逻辑与流程
本文来自:
彭亮 极狐(GitLab) 高级产品经理
毛超 极狐(GitLab) 研发工程师
极狐(GitLab) 市场部内容团队
“敏捷” 是指能够驾驭变化,保持组织竞争优势的一种能力。自 2001 年《敏捷宣言》以来,敏捷及敏捷开发理念逐渐席卷全球。中国信通院《中国 DevOps 现状调查报告(2022)》显示,近 90% 的企业已在不同程度上实践敏捷开发,53.4% 的企业认为敏捷改变了团队人员开发模式,对研发效能提到了积极影响。
应用敏捷开发的组织相比传统组织,具备明显业务优势:
1. 快速交付价值:快速、持续向用户交付有价值的软件产品,赢得市场先机;
2. 灵活响应变化:凭借交付时间短、迭代速度快,有效应对市场变化,降低不确定因素带来的风险。
在当今多变的市场和竞争中,敏捷开发已经成为精英效能组织的制胜之道。
极狐GitLab 敏捷开发逻辑与功能
根据 Gartner 2022 年发布的企业敏捷计划工具魔力象限显示,GitLab(极狐GitLab 是 GitLab 在中国的发行版本,具有和 GitLab 同等的功能,同时兼具众多适合中国本土用户的特色功能)位于挑战者象限。这足以说明 GitLab/极狐GitLab 敏捷项目管理成熟度,其完全能够支撑企业落地敏捷项目管理。(下文均以极狐GitLab 来展示敏捷管理相关功能)

极狐GitLab 敏捷开发项目有一套独特的术语体系,一切以议题(Issue)为核心展开,与基础敏捷开发术语的对应关系如下图:

图中功能基本工作流程如下:
用户故事 → 议题
基础敏捷开发:用户通常会从用户故事开始规划,其定义了一个为用户提供使用价值的功能描述;
极狐GitLab:使用议题来创建用户故事,并提供议题模板,实现用户故事结构和规范标准化。
任务 →(议题)任务
任务表示将用户故事进一步分解成各子任务。
极狐GitLab:用户可在议题描述中创建任务列表,以进一步规划这些单独任务。
史诗 → 史诗(群组)
史诗表示由多个功能组成的更大的用户功能或流程。
极狐GitLab:在群组级别提供了史诗功能,用户可以将多个议题附加到史诗下,以父子层次结构来管理。
产品待办事项(Backlog) → 议题列表 + 标签
基础敏捷开发:用户故事正式进入开发前,通常放入产品待办事项(Backlog)中,根据需求紧迫性和价值等因素决定优先级;
极狐GitLab:创建标签如 “Backlog” 并分配给相关议题,议题列表就能系统收集管理 Backlog,用于查看、跟踪需求和研发进展;也可以创建标签如 “优先级” 为 Backlog 排序。
冲刺(Sprint)→ 里程碑
基础敏捷开发:一个冲刺(Sprint)代表一个时间段,用于完成对应开发工作;
极狐GitLab:里程碑功能和冲刺概念一致,可设置开始日期和到期日期。把议题分配给里程碑,则该议题正式进入对应开发计划中。
估点 → 权重
基础敏捷开发:评估每个用户故事的技术工作量,即估点;
极狐GitLab:用议题中的 “权重” 属性表示预估的工作量。建议将用户故事进一步分解为可交付成果,记录技术计划和架构,再给出具体权重预估结果。该过程可记录在议题中或合并请求描述中,以更好的开展技术协作。
敏捷看板 → 议题看板
基础敏捷开发:使用敏捷看板来分类议题,以诸如准备开发、开发中、QA 中、评审中、完成等阶段为列,可视化所有开发事项进度;
极狐GitLab:议题看板允许用户自定义阶段,并能在阶段之间移动议题,更新工作进度。
燃尽图 → 极狐GitLab 燃尽图 + 燃起图
燃尽图是一种表示剩余工作量的工作图表。
基础敏捷开发:使用燃尽图直观追踪并预测开发工作进度;
极狐GitLab:通过燃尽图 + 燃起图,图形化展示每个里程碑进度情况。
燃尽图展示时间和剩余总体工作量之间的关系;
燃起图进一步补充项目时间与已完成工作间的关系。
以上是极狐GitLab 对应敏捷开发的基础概念,在满足基础敏捷框架的同时,也发展了许多灵活变通的实践思路,希望极狐GitLab 的敏捷开发逻辑,能切实融入团队与企业的敏捷开发流程中。
极狐GitLab 敏捷开发特点与优势
极狐GitLab 敏捷项目管理功能是极狐GitLab 一体化 DevOps 平台重要功能之一,经过众多用户实践,总结出五大优势:
一体化平台,沟通成本低,研发效率高

极狐GitLab 敏捷项目管理功能和源代码托管、CI/CD、安全防护等功能在同一个平台上,如上图所示:
-
当产生第三方需求并以 Issue 形式创建时,可同时创建 Merge Request,后续代码变更在此 Merge Request 上进行;
-
一旦有代码提交,就会触发 CI/CD,完成从构建、测试、安全扫描到部署整个流程,从而完成 Issue 和 Merge Request 的一一关联。
这个流程意味着在同一平台上实现了项目管理、源代码托管以及 CI/CD 等,打通了各个环节的数据流。并且,所有人员在同一个平台上进行协作,能够显著降低沟通成本、提升研发效率。
Issue 驱动,简单易用,快速上手
极狐GitLab 敏捷项目管理以 Issue 为基本操作单元,并且 Issue 创建非常方便。
在极狐GitLab 创建 Issue 时,可选择「模版」创建来减少创建相似 Issue 的重复工作;此外,还可以在创建 Issue 的同时,完成以下工作:
-
指派对应人员作为负责人;
-
关联对应史诗,便于整个史诗的管理追踪;
-
使用 Label 标注 Issue 的类型、优先级等,帮助研发人员快速理解 Issue;
-
用 Weight 进行 Story Point 的评估与填写;
-
通过 Due Date 设置完成时间,提醒责任人按照时间线进行研发;
-
工时统计,方便管理人员查看在此 Issue 上花费的时间。
当然,最重要的是可以在 Issue 界面上直接创建 Merge Request,然后基于这个 Merge Request 来进行代码开发。

统一协作环境,研发体验更佳
-
提需求:需求管理方在极狐GitLab 上创建需求之后,研发人员就可以在同一个平台上看到需求的详细情况,根据计划进行研发。
-
了解研发进展:在整个研发过程中,需求管理方可以看到需求进度,而研发人员也能看到需求更新详情,避免双方为了了解彼此工作进展(如需求管理方查看进度,研发人员查看需求详情),而在不同的应用程序间,繁琐的来回切换。
-
明晰研发工作:研发人员可以在 Merge Request 中看到对应 Issue 是哪个,在 Issue 中也可以看到提交的代码在哪个 Merge Request 中。
-
需求调整:如果对于需求有不明确的地方,双方可以以 comment 形式在需求对应的 Issue 下方进行沟通。
同一平台环境中的丝滑协作,大幅提升需求管理方和研发人员的体验。
所见即所得,方便追溯,安全审计更容易
极狐GitLab 上,需求管理(Issue)和代码变更(Merge Request)一一关联,而且所有变更,包括需求的来回沟通(Issue 中以 comment 的形式)、代码变更、审核、准入、安全扫描等都可以看到详细修改情况,如修改人员、修改范围、修改时间等。所见即所得,一切有迹可查,方便追溯,最终让安全审计变得更加容易。
沉淀最佳实践,胸有成竹,高效落地
极狐GitLab 团队就是使用极狐GitLab 项目管理来进行极狐GitLab 自身的敏捷迭代开发,做到了每月一个大版本发布。
这些研发成果已经沉淀为敏捷项目管理最佳实践,诸如 Issue 创建和使用,Epic 和 Issue 关联,燃起图/燃尽图使用等,任何团队都可以通过学习这些最佳实践,快速上手和落地极狐GitLab 敏捷项目管理功能。
极狐GitLab 敏捷开发流程
极狐GitLab 私有化部署版本(Self-managed Version)会在每个月月底固定发布最新版本,SaaS 版则是不定期上线新功能,做到功能开发测试完成即快速部署上线。
同时,极狐(GitLab) 是一家全员远程办公的公司,在自身实践中始终贯彻了敏捷开发的理念,并不是照搬所有敏捷开发方法论,而是结合了自身远程办公模式的特点发展出来的,在工作流程上较为轻量灵活,并且也在不断迭代中。
下面就具体介绍一下极狐GitLab 的敏捷开发流程。
需求收集与创建
极狐GitLab 是月度发版机制,每个月 28 号推出新的 Release。因此,在项目管理过程中,以一个月为时间周期,用 Milestone 进行需求的管理。
-
在每个 Milestone 的中期(也就是月中),产品经理会收集整理各方需求;
-
根据需求大小,以 Epic/Issue 形式来在极狐GitLab repo 下创建好需求;
-
根据需求属性进行 label 标注,比如需求是前端还是后端的,优先级等;
-
最后将其与 Milestone 进行关联。

需求分发与认领
极狐GitLab 研发团队会在 Milestone plan meeting 上进行 Issue 分发和认领。
-
研发人员根据自身所在的团队和负责模块进行 Issue 的主动认领;
-
认领完成后,进行 Issue 进一步确认,参与人包括产品经理,测试和研发人员,讨论诸如 Issue 详情是否描述清楚、是否需要进一步的拆分(拆分成更小的 Task)、Label 标注是否正确、Milestone 关联是否正确等;
-
信息明确后,进行 Story Point 估算,并将估算值填写到 Issue 的 Weight 中。

以上流程完成,即可认为研发人员认领 Issue 成功。
需求正式研发
Milestone 正式开始后,研发根据自己认领的 Issue 进行研发,在 Issue 页面上创建 Merge Request,并基于此 Merge Request 进行后续代码编写、提交。整个完成了需求(Issue)和代码变更(Merge Request)一一关联。
代码提交之后会触发 CI/CD Pipeline,需要确保提交的代码是经过 CI/CD Pipeline 流程验证的,比如代码风格检查、编译、测试、安全扫描等。如果有问题就需要及时进行修复,直到 CI/CD Pipeline 运行成功。

同时,每一个 Merge Request 都指派了对应的 Code Reviewer,只有相应 Code Reviewer 对代码变更进行 Review 并审批以后,才可由 Maintainer 将 Merge Request 合并到主分支。

Milestone 回顾会
Milestone 结束后,团队召开 Milestone Retrospective Meeting,对于上个 Milestone 的研发情况进行回顾,总结做得好的地方,复盘有缺失的地方。整个过程可使用极狐GitLab 燃尽图/燃起图,如下图:

此外,还可以配置极狐GitLab 专属的效能管理功能,查看对应的数据:

另外,极狐GitLab 研发团队还在使用极狐GitLab 自行研发的研发效能产品进行效能度量,在每月一次的 retro 会议中回顾团队整体绩效,如查看项目的新增提交、新增合并请求、成功流水线次数、项目活跃度等关键数据,拉齐团队宏观认知。
以「持续集成流水线」和「合并请求」为例:
-
通过「持续集成流水线」运行情况,衡量团队 CI/CD 能力。

- 极狐GitLab 任何代码修改都要经过代码审查才能合并进入主干分支,通过「合并请求」度量,可以看到「平均评审时长」和「平均评审人数」,督促团队坚持代码评审,提升代码质量。另外,从「平均开发时长」也能看出开发人员对开发任务的切分是否合理。

正是在这样的敏捷开发流程下,极狐GitLab 能够保持月度发版,诞生至今已连续发行 23 个版本。
朝着更卓越、更贴合用户需求的极狐GitLab 不断进化的同时,我们也在帮助越来越多的来自千行百业的客户落地敏捷开发,成就精英效能组织。
相关文章:
90%企业在探索的敏捷开发怎么做?极狐GitLab总结了这些逻辑与流程
本文来自: 彭亮 极狐(GitLab) 高级产品经理 毛超 极狐(GitLab) 研发工程师 极狐(GitLab) 市场部内容团队 “敏捷” 是指能够驾驭变化,保持组织竞争优势的一种能力。自 2001 年《敏捷宣言》以来,敏捷及敏捷开发理念逐渐席卷全球。中国信通院《…...
LeetCode-257. 二叉树的所有路径
目录题目分析递归法题目来源 257. 二叉树的所有路径 题目分析 前序遍历以及回溯的过程如图: 递归法 1.递归函数参数以及返回值 要传入根节点,记录每一条路径的path,和存放结果集的result,这里递归不需要返回值,代…...
测试用例该怎么设计?—— 日常加更篇(下)
😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:【Austin_zhai】 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。…...
Java基础:接口
1.接口的概念 当不是所有子类, 而是多个子类都包含一个方法时, 为了代码书写规范性, 可以用自定义的接口来统一该方法的书写规范. 所以接口可以看作是一种书写规则. 接口是对行为的抽象 抽象类一般是书写在父类当中, 接口是单独书写的, 不是一种类 2.接口的定义和使用 3.接口…...
vuex基础入门:uniapp实现用户登录授权实战
1.背景 vuex是数据共享方案之一,本文以微信小程序登录授权为例介绍一下vuex常用属性state、getters、mutations、actions. 2.基于uniapp实现微信小程序登录授权流程 1.凡是需要用户登录授权信息的页面创建时created方法中需要判断用户是否登录,需要使用本地缓存的token调用服务…...
Windows系统从权限维持角度进行应急响应
一、基本介绍 红队攻击者在对目标进行渗透利用后通常都会进行权限维持,以达到持续利用的目的。而作为防守方进行应急响应时,应该如何与技术高超(jiaohuajianzha)的攻击者斗智斗勇呢?或许可以通过本文可以找到答案。以…...
什么是DNS解析?如何提升DNS解析安全?
DNS解析是保障网站正常运行的一项重要服务,DNS解析出现故障,就会导致网站无法被访问或者被劫持到其他的站点,对业务正常开展造成很大影响,因此网站管理人员要高度关注DNS解析的安全,才能确保网站的正常运转,…...
电路学习笔记
电源部分 2s锂电池 6.4v-8.4v INA180A2IDBVR 电流检测放大器 OUT ADC1_CH0 to ESP32 可能功能:电源电流监测 稳压/电压监测 OUT ADC1_CH1 to ESP32 降压至2.046v-2.686v并通过电容保持稳定 可能功能:降压模块,电压监测 LDO ASM1117-3.3 低压差线性…...
C# 数据结构
目录 一、介绍 二、数组 三、List(列表) 四、Dictionary(字典) 五、Queue(队列) 六、Stack(栈) 七、Hashtable(哈希表) 结束 一、介绍 数据结构是计…...
powerjob的worker启动,研究完了这块代码之后我发现了,代码就是现实中我们码农的真实写照
这是一篇让你受益匪浅的文章,代码即使人生。 worker启动比server启动要复杂一些,毕竟worker是要实际干活的,工欲善其事必先利其器,所以需要准备的工具还是不能少的,server对于powerjob来说,只是一个调度用的…...
配置Qt Creator
前言 为了使Qt Creator更像您最喜欢的代码编辑器或IDE,您可以更改键盘快捷键、配色方案、通用高亮显示、代码片段和版本控制系统的设置。 检查生成和运行设置 Qt Creator是一个集成开发环境(IDE),可以用来开发Qt应用程序。虽然您可以使用Qt Installer…...
C++-类和对象(下)
C-类和对象(下)一,const成员函数二,再谈构造函数1,初始化列表2,explicit关键字三,static成员四,友元(friend)1,全局函数做友元2,类做友…...
什么是仓库管理?
仓库管理包括仓库日常运营所触及的准绳和流程。从较高的层次上讲,这包括接纳和组织仓库空间、布置劳动力、管理库存和完成订单。放大来看,你会发现有效的仓库管理触及到优化和集成这些过程中的每一个,以确保仓库操作的一切方面协同工作&#…...
对话系统学习概述(仅够参考)
对话系统(仅够参考) 目录对话系统(仅够参考)背景类人对话系统的关键特征1、知识运用2、个性体现3、情感识别与表达数据集评价方式评价的一些指标训练模型需要的资源任务型对话系统预训练最新研究进展参考文献背景 对话系统一般包括…...
免费CRM客户管理系统真的存在吗?不仅有,还有5个!
免费CRM客户管理系统真的存在吗?当然有! 说到CRM客户管理系统,相信很多企业并不陌生,是因为CRM客户管理系统已经成为大多数企业最不可或缺的工具。但是对于很多小微企业和个人用户来说,购买和实施CRM的成本仍然难以承…...
C#开发的OpenRA使用自定义字典的比较函数
C#开发的OpenRA使用自定义字典的比较函数 字典是一个常用的数据结构, 因为它采用键值对的方式来保存数据, 这样非常方便程序里进行数据一对一的映射。 比如通过文件名称查找到文件对象,又者通过socket对象找到缓冲区对象。 由于字典是采用HASH算法,所以它的查找时间是非常快…...
DHCP协议
DHCP协议 文章目录DHCP协议DHCP作用及特点DHCP服务IP分配的三种方式DHCP协议中的报文类型DHCP服务工作流程抓包参考动态主机配置协议 DHCP(Dynamic Host Configuration Protocol),提供了一种 插网即用的技术。DHCP是一个应用层协议。当我们将…...
C语言进阶——自定义类型:枚举、联合
🌇个人主页:_麦麦_ 📚今日名言:如果不去遍历世界,我们就不知道什么是我们精神和情感的寄托,但我们一旦遍历了世界,却发现我们再也无法回到那美好的地方去了。当我们开始寻求,我们就已…...
背景透明(opacity vs background)
最近在做项目的时候,遇到透明度的相关设置。 常用的背景透明设置可分为两种,分别是: 一是给background设置透明度。二是利用opacity属性。 在跳了一些坑之后,本人更推荐给background设置透明度,为什么呢?…...
华为OD机试 - 最小施肥机能效(Python)| 真题+思路+考点+代码+岗位
最小施肥机能效 题目 某农场主管理了一大片果园,fields[i]表示不同果林的面积,单位:( m 2 m^2 m2),现在要为所有的果林施肥且必须在 n 天之内完成,否则影响收成。 小布是果林的工作人员,他每次选择一片果林进行施肥,且一片果林施肥完...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
