本文主要介绍了如何度量研发效能,以及AI辅助编程是如何影响效能的,进而阐述如何衡量AI辅助编程带来的收益。
理解度量:有效区分度量指标
为了帮助研发团队更好地理解和度量研发效能,可以将指标分为三类:能力和行为指标、交付效能指标和业务结果指标。该分类有助于从不同维度评估和改进研发工作。
- 能力和行为指标:反映团队的实际工作方式和能力,影响交付效率,可以被改进。例如,单元测试覆盖率、代码扫描问题数、持续集成频次、圈复杂度、解耦度(Decoupling Level)等因素。
- 交付效能指标:反映技术团队的效率,与业务结果有一定相关性,但不直接影响业务结果。例如,速度、吞吐量和质量等因素。
- 业务结果指标:反映真实的经营情况,直接与公司的收入、规模和成本等相关,可以直接用于绩效考核。例如,营收GAAP、毛利、净利、成本及月活跃用户等数据均可作为业务结果指标。
什么是研发效能,如何度量?
研发效能是指软件研发团队持续、快速、高质量交付有效价值的能力。具体来说,包括以下几个方面:
- 做正确事情的能力:即交付有效价值。
- 正确地做事的能力:即持续性、速度和质量三个方面,其中质量是对速度的约束条件,持续性是对速度和质量的一贯性要求。
研发效率的度量
有效的度量能够引导正确的改进行为,决定后续的改进行动。团队的职责范围决定了采用什么样的指标。通常对于技术团队会从以下几个方面进行衡量:
- 效率:速度(流动效率,单个工作项的流速)和吞吐量(资源效率,单位时间内完成的工作项数量)。
- 质量:交付质量,即交付物离开团队之后的质量。
- 员工幸福感:员工幸福感是一个主观性调研指标,与持续性有正相关。
AI辅助编程是如何影响研发效能的?
AI辅助编程以AI为技术手段,提升编程效率,反映的编码的能力和行为。具体可以从以下几个方面衡量:
- 编码效率:开发者的编码时间占比 × AI生成代码占比 = 节省的开发时间比例。例如,员工有30%的时间花在编码上,AI生成了40%的代码,则可以理解为节省了12%的开发时间。
- 代码的缺陷密度:代码的缺陷密度是一个滞后指标,反映代码质量,如千行代码缺陷量。
- 员工编程体验的满意度:员工编程体验的满意度是一个主观指标,反映工具对于员工编程工作的帮助,如工具的易用性和实际工具的使用效果。
编码效率提升
在软件研发过程中,编码效率是影响研发效率的重要因素。除编码效率外,还有许多其他因素对整体研发效率产生影响,主要包括需求质量、协作流程、测试自动化及持续集成/持续交付(CI/CD)的工程能力等。这些因素可归纳为两个方面:个体效率(单点改进)和协作效率(流程改进)。从问题改进的角度来看,可以总结为四个方面:阻塞、返工、负债和失能。
编码时间占比与AI生成代码占比
综合开发行为的提升
开发者的编码时间占比 × AI生成代码占比 = 节省的开发时间比例。例如,员工有30%的时间花在编码上,AI生成了40%的代码,则节省了12%的开发时间。
数据来源显示,受访者花费不到三分之一的时间编写新代码或改进现有代码(32%),35% 的时间用于管理代码(包括代码维护 19%、测试 12% 和响应安全问题 4%),另有 23% 的时间用于会议和管理运营任务
无论选择选项一还是选项二,其背后的方法均为:行为 × 效果 = 效率。一般而言,不必过于追求数据的精确性,因为过于精确的统计可能会引导错误的行为或增加额外的管理成本。统计意义上的准确性就够了,其关键在于能够有效回答一个本质问题,并指导相应的改进。
开发效率提升对整体研发效能的影响
根据利特尔法则(Little's Law),速度 = 在制品数量(WIP) / 吞吐量,换算过来就是吞吐量 = 在制品数量(WIP) / 速度。通过AI方式,可以改变以下几点:
- 交付的速度:单个工作项的速度提升了,吞吐量会增加,在途任务(任务的WIP)也会显著下降。对于待排期需求会是一个很好的消耗,从而减少待排期需求的数量。待排期需求的数量下降,对于整个产品研发的在途需求数(需求WIP)也会下降,进而提升了整体研发速度。
- 交付的确定性:速度提升,对于软件研发在时间上的确定性会有着与之相应的提升。
员工的编码体验的满意度
为了评估智能编码助手对员工编码体验的满意度,可以通过用户调研的方式获取反馈,并发现可以改进的地方。问卷设计需要考虑三个因素:用户画像、用户满意度、用户使用效率。以下是具体的问卷设计示例:
用户画像
- 你有多少年的编程经验?- 不足 1 年。- 1-3 年。- 3-5 年。- 5-10 年。- 10 年以上。
- 你在工作中的主要角色?- 初级开发者。- 中级开发者。- 高级开发者。- 架构师。- 技术经理。- 其他(请说明)。
- 你常用的编程语言有哪些?(多选)- Java。- Python。- C++。- JavaScript。- Go。- Ruby。- PHP。- SQL。- XML。- 其他(请说明)。
- 你使用智能编码助手的频率如何?- 每天多次。- 每天一次。- 每周几次。- 每月几次。- 很少使用。
用户满意度
- 你对智能编码助手的总体满意度如何?(打分 1-5 分,5 分最高)
- 关于使用智能编码助手的一些描述,你的看法是?- 视觉舒适、操作符合习惯。- 没有被打扰的感觉。- 上手成本低、操作流畅。- 愿意采纳生成的建议代码。- 编码问题能够得到有效回答。- 代码和问答生成速度快。- 较少遇到报错。
用户使用效率
- 通过使用智能编码助手,你觉得对你的编码工作效率有多大的提升?(单选)- 显著提升。- 有所提升。- 没有变化。- 有所下降。- 显著下降。
- 回想一下,你使用智能编码助手的场景,下方的描述,你的观点是什么?- 工作更加有成就感。- 编码时更加自信。- 使用熟悉的语言时,效率更高。- 使用不熟悉的语言时,进度更快。- 减少编写重复性代码。- 可以保持编码心流。- 减少搜索引擎使用。
最后,您可能会得到如下方所示的结论:
AI辅助编程的效果如何衡量?
针对“到底使用采纳率合适,还是AI代码生成占比合适”的问题,首先需要明确两者的定义及其计算逻辑:
采纳率
AI代码生成占比
定义
在单位时间周期内,代码补全的采纳次数与推荐次数的比率。具体计算公式为: 采纳率=采纳次数/推荐次数
在单位时间周期内,开发者采纳的AI生成的代码行数与变更代码行数的比率。具体计算公式为:代码生成占比=采纳的AI成生的代码行数/变更代码行数
优点
直观反映工具推荐代码的质量。
可以用来评估工具推荐的有效性。
更直观地反映实际使用的AI生成代码量。
可以排除无效采纳的情况,只关注实际使用的代码。
缺点
推荐次数(分母)由工具本身决定,如果频繁推荐,可能导致采纳率偏低。
采纳次数(分子)不一定代表真正的价值,开发者可能采纳了一些无效或不必要的代码。
需要定期识别代码修改情况,增加了计算复杂度。
需要准确区分哪些代码是AI生成的,哪些是人工编写的。
同时,可能还会有这样的疑问,为什么不使用AI代码生成的入库占比来计算呢?主要原因如下:
- 版本管理工具无法识别:版本管理工具无法区分代码是由AI生成的还是人工编写的。代码提交的作者是提交人本身,而非AI。
- 引入复杂度:追求入库率会导致度量变得异常复杂。追求构建并发到生产环境的数量,引入了更多变量。
因此,建议采用最直观的 AI 生成占比来统计编码行为的效果是一个比较推荐的方式。如果无法获得 AI 生成占比,采用采纳率也是一种可取的方式,但过分追求统计精确性的意义不大。
衡量AI编码工具收益的具体方式
- 为了更好地衡量AI编码工具对效率的影响,可以从以下几个方面进行观测和分析:- 工具使用量:- 开发者数量:统计使用AI编码工具的开发者数量。- 活跃度:统计活跃用户的数量和活跃频率。- 行为:某些能力使用的频次,统计特定功能(如代码补全、单元测试生成、代码注释生成等)的使用频次。- 效果:采纳或有效生成占比,统计采纳的AI生成代码行数占总变更代码行数的比例。
- 开发效率提升:通过观测开发者在使用 AI 编码工具前后的编码效率变化,建立相关性。同时,通过“工具使用的行为 x 效果 ≈ 效率”这个简单公式,来获得对于个人开发效率提升的统计。
- 研发效率的贡献:研发效率涉及多个方面,包括需求质量、协作流程、测试自动化、CI/CD工程能力等,但开发阶段的效率提升对整体研发效率有显著贡献。
- 从系统思考的方式建立因果关系:从整体系统的角度出发,分析各个行为、效率和结果之间的因果关系。找到关键的杠杆点,即能够带来最大效益的改进点。
- 度量原则:度量指标需要回答一个本质的问题,即AI编码工具是否真正提升了开发效率。度量指标应引导正确的改进行动,而非误导。
版权归原作者 soso1968 所有, 如有侵权,请联系我们删除。