提升研发交付速率,从正确的指标管理开始
每当提及「研发效能」,我们都在谈论什么?
研发效能管理要在保证质量的前提下,思考如何更快地向客户交付价值。在管理实践中,效能度量涉及三大维度:交付速率、交付质量、交付价值。
技术团队对内如何优化开发流程,以提升交付速率和质量?对外如何围绕价值交付,与产品、业务侧同事开展紧密高效的研发协作?在众多急需攻破的效能难题中,Cycle Time 都是极为关键的速率管理发力点。
01 是什么 Cycle Time?
Cycle Time 原是精益生产的专业术语,描述了某个工序制造一单位产品或某过程完成一个工作循环所需的平均完整时间,可以确定机器或工序的生产能力和效率。
在软件研发中,Cycle Time 是指技术团队从头到尾完成一单位研发工作平均需要的时间,即研发工作从进入开发到发布上线所经历的平均时间。
02 为什么应该关注 Cycle Time?
Cycle Time 是反映技术团队工作速率的结果度量指标,可以帮助团队识别障碍、有的放矢地优化改进并实现更快更好的价值交付。
- 更快地响应。 缩短 Cycle Time 的本质是更快地向客户交付价值,响应变化。
- 识别障碍和待改进空间。 跟踪对比多项目或跨周期的 Cycle Time 有助于识别和定位效能瓶颈,便于及时调整优化。
- 及时反馈,避免浪费。 分析优化前后的 Cycle Time 可以快速掌握优化效果,辅助进一步决策,避免长时间的空耗和等待。
- 提供风险预警支撑。 以历史和平均 Cycle Time 为效率基准,在过程管理中为风险预警和进度管理提供数据辅助。
总的来说,研发团队应该持续跟踪 Cycle Time,灵敏地识别开发过程中的效能瓶颈,并通过建立标准、流程优化、任务拆分等持续改进,增强组织敏捷性,提高开发速率,快速交付价值。
03 如何计算 Cycle Time?
前面说到,Cycle Time 表示一单位研发工作经历从「进入开发」到「发布上线」平均需要的完整时间。
为了便于计算,此处定义一单位研发工作为「Git 中的一个工程任务」。在管理实践中,一单位研发工作也可以是一个故事点数、一个用户故事等等。
技术团队需要提前约定开发流程中每个环节「工作开始」和「工作完成」的标准,并确保所有人都为此达成共识。
- 编码时间:DoR 是技术团队需求准入的标准,因此编码时间是「需求符合 DoR 要求,抵达技术团队」到「完成编码,发起 Pull Request 请求」的平均时间。
- 拾取时间:从「发起合并请求」到「代码审查开始」的等待时间为代码拾取时间。拾取时间越短,说明跨职能的技术团队协作越紧密,审查过程越健康。
- 审查时间:一般将「首条评论产生的时间」视作代码审查的起点,而「分支确认合并」则是代码审查结束的标志。
- 部署时间:常以「分支确认合并」为始,以「新代码成功同步到生产环境」为终。
基于清晰统一的节点标准,技术团队就可以计算各个环节的平均工作周期,并通过平均值加总得到 Git 工程任务的 Cycle Time。
同时,结合不同环节的耗时分布和交付数量,技术团队还可以制定流程规范和优化方案,将效能瓶颈逐个击破。
04 如何缩短编码时间,提高效率?
技术团队的编码周期过长,可能有以下原因:
- 需求很复杂:功能复杂、耦合度高、颗粒度大的研发任务通常需要花费更多时间。
- 需求不明确:用户调研或需求分析不到位、产品频繁变更都会拉高沟通成本,多次返工和变更也会影响代码质量和速率。
- 需求太难了:开发人员缺乏项目必备的专业知识,边学边做,或者突现计划外的技术难题都会制约开发效率。
- 流程繁琐混乱:代码提测路径长、被频繁打断而无法专注于代码实现,都是工作流程不优导致的效能瓶颈。
- 重复的机械劳动:代码手动 Commit、人为的消息通知和任务指派也是对技术团队精力和时间的极大浪费。
因此,提高技术团队的编码效率可以从流程规范和优化、自动化工具的投入,和能力提升与培养三个角度入手。
1. 建立流程标准和协作规范,把控准入需求
开展工作的前提是保证技术团队一直在交付最有价值的事情,因此可以采用敏捷开发方法,对需求进行价值排序,确定优先顺序。
第二,同产品团队一起建立协作流程规范,并明确需求准入的标准(DoR),说明含需求粒度、任务拆分和分解、相关的上下文和说明文件等在内的要求。通过加强起点的把控,提升开发速率。
2. 构建内部知识库,将繁复的操作和流程自动化
合理利用优质开源项目、时兴的效率工具与自动化插件,加快代码编写的速度并提高质量,以减轻语法检查、手动提交等事务性工作的压力。
同时,鼓励开发人员积极沟通,定期举办内部知识分享会,促进相互学习;建立代码知识库,收纳相关代码以供检索和复用,避免低效和浪费。
3. 规范开发标准和良好习惯,持续学习
由上至下地推行统一的代码规范,鼓励开发人员遵循最佳实践,例如编写干净、文档齐全的代码和使用一致的编码约定,减少调试和故障排除的时间。
定期组织培训或展开指导,持续了解新技术,学习新知识,尝试新工具。不断精进专业实力的同时,主动扩展知识带宽。
LigaAI 总结一下
Cycle Time 是衡量技术团队开发速率和交付能力的重要指标。在相同的交付质量和价值度量的前提下,更短的 Cycle Time 意味着研发团队能更快地响应市场和需求的变化,更快地向用户交付价值。
Cycle Time 表示研发工作从符合 DoR 并进入技术团队起,到发布上线所需的平均完成时间,与编码、拾取、评审和部署的周期皆有联系。其中,控制好需求准入标准,合理利用新兴技术和项目都有助于缩短编码周期,加快开发速率。
关注研发效能,专注科学管理。LigaAI 将持续分享更多研发效能度量体系的搭建经验,以及度量指标管理方法等干货内容,助力研发团队击碎效能瓶颈。
请持续关注 LigaAI@oschina 帐号,获取更多资讯。
也期待您点击 LigaAI - 新一代智能研发协作平台,在线申请体验我们的产品,与 LigaAI 一起做大做强💪

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Databend query result cache 设计与实现
Databend 在 1.0 中支持了对查询结果集的缓存,大大提高了多次相同查询返回结果的效率。 Query result cache 主要用于处理数据更新频率不高的查询,它通过缓存第一次查询返回的结果集,以便在之后对相同数据执行相同查询时能够立即返回结果,从而提高查询效率。 比如我们有个需求是每隔十秒获取一次销量前 5 的产品,通过以下 sql 执行查询: SELECT product, count(product) AS sales_count FROM sales_log GROUP BY product ORDER BY sales_count DESC LIMIT 5; 在没有 cache 的情况下,每次都需要执行完整的 sql 查询流程,而整个流程可能耗时比较久,但结果仅仅返回5条数据。如果 sales_count 表中的数据更新频率不高,那么通过 cache 可以立即返回之后查询的结果,大大降低了等待时间和 Server 的负载。 整体设计 Query Result Cache 的生命周期 每个被缓存的结果集都会设置一个缓存失效时间(TTL),每次对相同缓存结果集的访问都...
- 下一篇
如何建设私有云原生 Serverless 平台
随着云计算的普及,越来越多的企业开始将业务应用迁移到云上。然而,如何构建一套完整的云原生 Serverless 平台,依然是一个需要考虑的问题。 Serverless的发展趋势 云计算行业从 IaaS(基础设施即服务)到 PaaS(平台即服务),再到 Serverless(无服务器)的发展,经历了一个逐渐从底层到上层,从IT基础设施提供商到应用开发者的转移的过程。 IaaS 时代,云计算提供商主要提供基础设施服务,包括计算、存储、网络等,用户需要自己搭建运维应用。这个阶段主要面向IT运维人员和企业内部的应用开发团队。 随着 PaaS 的出现,云计算提供商开始提供更高层次的服务,包括开发框架、数据库、消息队列等,用户只需要关注应用开发,无需关心底层设施。这个阶段主要面向应用开发者和创业公司,可以大大提高开发效率和降低成本。 而 Serverless 的出现,则更进一步解放了应用开发者的手脚,将服务器管理交给云计算提供商,应用开发者只需关注业务逻辑的实现,无需关心服务器的管理和维护。Serverless的出现使得应用开发更加灵活和高效,也降低了开发和运维成本,因此受到了越来越多的关注。 总...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境