【拥抱AIGC】应该如何衡量AI辅助编程带来的收益

本文主要介绍了如何度量研发效能,以及AI辅助编程是如何影响效能的,进而阐述如何衡量AI辅助编程带来的收益。

理解度量:有效区分度量指标

为了帮助研发团队更好地理解和度量研发效能,可以将指标分为三类:能力和行为指标、交付效能指标和业务结果指标。该分类有助于从不同维度评估和改进研发工作。

组 1@1x (1)

  • 能力和行为指标:反映团队的实际工作方式和能力,影响交付效率,可以被改进。例如,单元测试覆盖率、代码扫描问题数、持续集成频次、圈复杂度、解耦度(Decoupling Level)等因素。

  • 交付效能指标:反映技术团队的效率,与业务结果有一定相关性,但不直接影响业务结果。例如,速度、吞吐量和质量等因素。

  • 业务结果指标:反映真实的经营情况,直接与公司的收入、规模和成本等相关,可以直接用于绩效考核。例如,营收GAAP、毛利、净利、成本及月活跃用户等数据均可作为业务结果指标。

什么是研发效能,如何度量?

研发效能是指软件研发团队持续、快速、高质量交付有效价值的能力。具体来说,包括以下几个方面:

  • 做正确事情的能力:即交付有效价值。

  • 正确地做事的能力:即持续性、速度和质量三个方面,其中质量是对速度的约束条件,持续性是对速度和质量的一贯性要求。

研发效率的度量

有效的度量能够引导正确的改进行为,决定后续的改进行动。团队的职责范围决定了采用什么样的指标。通常对于技术团队会从以下几个方面进行衡量:

  • 效率速度(流动效率,单个工作项的流速)和吞吐量(资源效率,单位时间内完成的工作项数量)。

  • 质量:交付质量,即交付物离开团队之后的质量。

  • 员工幸福感:员工幸福感是一个主观性调研指标,与持续性有正相关。

AI辅助编程是如何影响研发效能的?

AI辅助编程以AI为技术手段,提升编程效率,反映的编码的能力和行为。具体可以从以下几个方面衡量:

  • 编码效率:开发者的编码时间占比 × AI生成代码占比 = 节省的开发时间比例。例如,员工有30%的时间花在编码上,AI生成了40%的代码,则可以理解为节省了12%的开发时间。

  • 代码的缺陷密度:代码的缺陷密度是一个滞后指标,反映代码质量,如千行代码缺陷量。

  • 员工编程体验的满意度:员工编程体验的满意度是一个主观指标,反映工具对于员工编程工作的帮助,如工具的易用性和实际工具的使用效果。

编码效率提升

在软件研发过程中,编码效率是影响研发效率的重要因素。除编码效率外,还有许多其他因素对整体研发效率产生影响,主要包括需求质量、协作流程、测试自动化及持续集成/持续交付(CI/CD)的工程能力等。这些因素可归纳为两个方面:个体效率(单点改进)和协作效率(流程改进)。从问题改进的角度来看,可以总结为四个方面:阻塞、返工、负债和失能。

编码时间占比与AI生成代码占比

综合开发行为的提升

开发者的编码时间占比 × AI生成代码占比 = 节省的开发时间比例。例如,员工有30%的时间花在编码上,AI生成了40%的代码,则节省了12%的开发时间。

image

数据来源显示,受访者花费不到三分之一的时间编写新代码或改进现有代码(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 分最高)

  • 关于使用智能编码助手的一些描述,你的看法是?

    • 视觉舒适、操作符合习惯。

    • 没有被打扰的感觉。

    • 上手成本低、操作流畅。

    • 愿意采纳生成的建议代码。

    • 编码问题能够得到有效回答。

    • 代码和问答生成速度快。

    • 较少遇到报错。

用户使用效率

  • 通过使用智能编码助手,你觉得对你的编码工作效率有多大的提升?(单选)

    • 显著提升。

    • 有所提升。

    • 没有变化。

    • 有所下降。

    • 显著下降。

  • 回想一下,你使用智能编码助手的场景,下方的描述,你的观点是什么?

    • 工作更加有成就感。

    • 编码时更加自信。

    • 使用熟悉的语言时,效率更高。

    • 使用不熟悉的语言时,进度更快。

    • 减少编写重复性代码。

    • 可以保持编码心流。

    • 减少搜索引擎使用。

最后,您可能会得到如下方所示的结论:

image

AI辅助编程的效果如何衡量?

针对“到底使用采纳率合适,还是AI代码生成占比合适”的问题,首先需要明确两者的定义及其计算逻辑:

采纳率

AI代码生成占比

定义

在单位时间周期内,代码补全的采纳次数与推荐次数的比率。具体计算公式为: 采纳率=采纳次数/推荐次数

在单位时间周期内,开发者采纳的AI生成的代码行数与变更代码行数的比率。具体计算公式为:代码生成占比=采纳的AI成生的代码行数/变更代码行数

优点

  • 直观反映工具推荐代码的质量。

  • 可以用来评估工具推荐的有效性。

  • 更直观地反映实际使用的AI生成代码量。

  • 可以排除无效采纳的情况,只关注实际使用的代码。

缺点

  • 推荐次数(分母)由工具本身决定,如果频繁推荐,可能导致采纳率偏低。

  • 采纳次数(分子)不一定代表真正的价值,开发者可能采纳了一些无效或不必要的代码。

  • 需要定期识别代码修改情况,增加了计算复杂度。

  • 需要准确区分哪些代码是AI生成的,哪些是人工编写的。

同时,可能还会有这样的疑问,为什么不使用AI代码生成的入库占比来计算呢?主要原因如下:

  • 版本管理工具无法识别:版本管理工具无法区分代码是由AI生成的还是人工编写的。代码提交的作者是提交人本身,而非AI。

  • 引入复杂度:追求入库率会导致度量变得异常复杂。追求构建并发到生产环境的数量,引入了更多变量。

因此,建议采用最直观的 AI 生成占比来统计编码行为的效果是一个比较推荐的方式。如果无法获得 AI 生成占比,采用采纳率也是一种可取的方式,但过分追求统计精确性的意义不大。

衡量AI编码工具收益的具体方式

  • 为了更好地衡量AI编码工具对效率的影响,可以从以下几个方面进行观测和分析:

    • 工具使用量

      • 开发者数量:统计使用AI编码工具的开发者数量。

      • 活跃度:统计活跃用户的数量和活跃频率。

    • 行为某些能力使用的频次,统计特定功能(如代码补全、单元测试生成、代码注释生成等)的使用频次。

    • 效果采纳或有效生成占比,统计采纳的AI生成代码行数占总变更代码行数的比例。

  • 开发效率提升:通过观测开发者在使用 AI 编码工具前后的编码效率变化,建立相关性。同时,通过“工具使用的行为 x 效果 ≈ 效率”这个简单公式,来获得对于个人开发效率提升的统计。

  • 研发效率的贡献:研发效率涉及多个方面,包括需求质量、协作流程、测试自动化、CI/CD工程能力等,但开发阶段的效率提升对整体研发效率有显著贡献。

  • 从系统思考的方式建立因果关系:从整体系统的角度出发,分析各个行为、效率和结果之间的因果关系。找到关键的杠杆点,即能够带来最大效益的改进点。

  • 度量原则:度量指标需要回答一个本质的问题,即AI编码工具是否真正提升了开发效率。度量指标应引导正确的改进行动,而非误导。

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

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

相关文章

【C++入门篇 - 3】:从C到C++第二篇

文章目录 从C到C第二篇new和delete命名空间命名空间的访问 cin和coutstring的基本使用 从C到C第二篇 new和delete 在C中用来向系统申请堆区的内存空间 New的作用相当于C语言中的malloc Delete的作用相当于C语言中的free 注意:在C语言中,如果内存不够…

【数学分析笔记】第5章第1节 微分中值定理(1)

5. 微分中值定理及其应用 5.1 微分中值定理 5.1.1 极值与极值点 【定义5.1.1】 f ( x ) f(x) f(x)定义域为 ( a , b ) (a,b) (a,b), x 0 ∈ ( a , b ) x_0\in(a,b) x0​∈(a,b),若 ∃ O ( x 0 , ρ ) ⊂ ( a , b ) \exists O(x_0,\rho)\subset(a,b) ∃…

web基础-攻防世界

get-post 一、WP (题目本质:get与post传参方法) 用 GET 给后端传参的方法是:在?后跟变量名字,不同的变量之间用&隔开。例如,在 url 后添加/?a1 即可发送 get 请求。 利用 hackbar 进行…

岩石分类检测数据集 4700张 岩石检测 带标注 voc yolo 9类

岩石分类检测数据集 4700张 岩石检测 带标注 voc yolo 9类 岩石分类检测数据集 (Rock Classification and Detection Dataset) 描述: 本数据集旨在支持对不同类型的岩石进行自动分类和检测,特别适用于地质勘探、矿物识别、环境监测等领域。通过使用该数据集训练的模…

Python画图|多图共享X轴和Y轴

【1】引言 在python画图的众多场景中,存在多图对应X轴和Y轴可能一致的情形。 为此,尝试找到相关方法,不仅可以将代码写得更简洁,也更节省电脑内存,是提升工作效率的可选之路。 【2】官网教程 点击下方链接&#xf…

制造已然走出国门,数据如何走向全球?

1 行业趋势和背景 1.1 海外全球化——由中国制造到中国品牌全球造的全球化布局 为实现资源的最优配置、效率的最大化,现在越来越多的制造业企业,凭借着自己的品牌力和技术能力,进行全球化布局,加速从原来的“中国制造”到“中国…

EISS_2024企业信息安全峰会:《货拉拉信息安全实践》学习笔记

EISS_2024企业信息安全峰会:《货拉拉信息安全实践》 企业安全目标设定和安全框架企业信息安全组织和机制技术体系建设方法信息安全指标建设构建安全数据和体系技术体系支撑合规治理安全融入企业体系内建文化,外建生态 企业安全目标设定和安全框架 要点&a…

门店展台客流量摄像机功能:准确计数、行为分析、客流趋势预测

在车展展厅中,门店展台客流量摄像机发挥着至关重要的作用,其功能涵盖准确计数、行为分析和客流趋势预测等多个方面。 一、车展展厅应用客流统计方案原因 1. 评估展会效果:准确了解每个展台的客流量,判断展会的吸引力和热度&#…

Linux相关概念和易错知识点(14)(进程终止、进程退出、退出信息)

1.进程终止 &#xff08;1&#xff09;错误码 对于程序常见错误信息&#xff0c;C/C提供了信息解释&#xff0c;保存在<string.h>&#xff0c;使用strerror(错误码)就可以查询 错误信息成立的前提是错误码要和错误信息匹配&#xff0c;我们需要结合C/C给我们的错误码来…

极狐GitLab X 某轨道交通控制系统龙头企业,助力业务研发敏捷化

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 60天专业…

java多态-cnblog

java多态 细分的重载会增加代码量&#xff0c;降低易用程度 定义一个类&#xff0c;继承所有类的对象&#xff0c;根据向上转型可以让每个类的对象都调用初始类的方法&#xff0c;在方法中设置判断&#xff0c;不同的对象导致方法做不同的事&#xff0c;这就是多态 写一个灯…

计算机的错误计算(一百一十九)

摘要 用错数解释计算机的错误计算&#xff08;一百一十八&#xff09;中的错误计算。 计算机的错误计算&#xff08;一百一十八&#xff09;给出一个循环迭代 用C语言或Java编程计算&#xff0c;则 均是错误结果。 下面用错数解释其出错原因。 首先&#xff0c;将迭代看作 …

SSM(5)(动态sql <if>、<where>、返回主键值)

返回主键值&#xff1a; 方法一&#xff1a; useGeneratedKeys 为ture 声明 返回主键 keyProperty 表示要返回的值 封装到对象的属性中 但是这一种方法不支持Orcal数据库。 <insert id"save2" parameterType"com.findyou.entity.User" useGenerated…

【JVM系列】深入理解Java虚拟机(JVM)的核心技术 :从静态到运行时的秘密(三、Java常量池揭秘)

文章目录 【JVM系列】深入理解Java虚拟机&#xff08;JVM&#xff09;的核心技术 &#xff1a;从静态到运行时的秘密(二、Java常量池揭秘)1. 基本概念2. 常量池分类2.1 运行常量池2.2 静态常量池2.3 字符串常量池 3. String 类3.1 创建String对象的两种方式和区别3.2 字符串的特…

【Unity】背景图片随着背景里面内容大小而变化

今天制作项目里面的设置界面和暂停界面时&#xff0c;发现两个界面有很多重复部分&#xff0c;所以直接做一个界面就行了&#xff0c;但是两个界面的背景大小会有变化&#xff0c;图片在下面 这个是游戏暂停界面的&#xff0c;设置界面和这个界面有很多重复地方&#xff0c;仅仅…

Spring事务的1道面试题

每次聊起Spring事务&#xff0c;好像很熟悉&#xff0c;又好像很陌生。本篇通过一道面试题和一些实践&#xff0c;来拆解几个Spring事务的常见坑点。 原理 Spring事务的原理是&#xff1a;通过AOP切面的方式实现的&#xff0c;也就是通过代理模式去实现事务增强。 具体过程是…

【网页设计】CSS Part2

目标 能使用 emmet 语法能够使用 CSS 复合选择器能够写出伪类选择器的使用规范能够说出元素有几种显示模式能够写出元素显示模式的相互转换代码能够写出背景图片的设置方式能够计算 CSS 的权重 1. Emmet 语法 Emmet语法的前身是Zen coding,它使用缩写,来提高html/css的编写速…

java继承-cnblog

类的继承 继承本身 一个类要继承另一个类需要使用关键字extends 关键字extends的使用 class a extend b{}由于java只支持单继承&#xff0c;所以同时继承多个父类是错误的 在创造子类对象时&#xff0c;会先执行父类的构造方法&#xff0c;再执行子类的构造方法 举例说明 …

用 logfire 提高应用的可观测性

Logfire是由 Pydantic 团队打造的平台, 还有供 app 使用的 library, 我们经常提到对应用要做 LMT(Log, Metrics, Trace), Logfire 可以用来收集、存储、分析和可视化日志数据和应用性能指标。通过集成日志和度量&#xff0c;Logfire 提供了一个统一的界面来管理应用程序和系统的…

Windows环境mysql 9安装mysqld install报错:Install/Remove of the Service Denied!

Windows环境mysql 9安装mysqld install报错&#xff1a;Install/Remove of the Service Denied! 解决方案&#xff1a; 控制台/批处理命令窗口需要以系统管理员身份运行。 mysql数据库环境配置和安装启动&#xff0c;Windows-CSDN博客文章浏览阅读920次。先下载mysql的zip压缩…