首页 > 编程语言 >AI 辅助编程的效果如何衡量?

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

时间:2024-10-31 18:17:57浏览次数:6  
标签:编码 AI 代码 编程 衡量 研发 效率

作者:耘越

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

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

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

AI 辅助编程的效果如何衡量?_开发效率

  • 能力和行为指标: 反映团队的实际工作方式和能力,影响交付效率,可以被改进。例如,单元测试覆盖率、代码扫描问题数、持续集成频次、圈复杂度、解耦度(Decoupling Level)等因素。
  • 交付效能指标: 反映技术团队的效率,与业务结果有一定相关性,但不直接影响业务结果。例如,速度、吞吐量和质量等因素。
  • 业务结果指标: 反映真实的经营情况,直接与公司的收入、规模和成本等相关,可以直接用于绩效考核。例如,营收 GAAP、毛利、净利、成本及月活跃用户等数据均可作为业务结果指标。

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

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

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

研发效率的度量

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

  • 效率: 速度(流动效率,单个工作项的流速)和吞吐量(资源效率,单位时间内完成的工作项数量)。
  • 质量: 交付质量,即交付物离开团队之后的质量。
  • 员工幸福感: 员工幸福感是一个主观性调研指标,与持续性有正相关。

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

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

  • 编码效率: 开发者的编码时间占比 × AI 生成代码占比 = 节省的开发时间比例。例如,员工有 30% 的时间花在编码上,AI 生成了 40% 的代码,则可以理解为节省了 12% 的开发时间。
  • 代码的缺陷密度: 代码的缺陷密度是一个滞后指标,反映代码质量,如千行代码缺陷量。
  • 员工编程体验的满意度: 员工编程体验的满意度是一个主观指标,反映工具对于员工编程工作的帮助,如工具的易用性和实际工具的使用效果。

编码效率提升

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

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

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

AI 辅助编程的效果如何衡量?_开发效率_02

数据来源显示,受访者花费不到三分之一的时间编写新代码或改进现有代码(32%),35% 的时间用于管理代码(包括代码维护 19%、测试 12% 和响应安全问题 4%),另有 23% 的时间用于会议和管理运营任务。

综合开发行为的提升

程序员在开发阶段不仅写代码,还包括调试、测试、信息检索等工作。因此,在每项工作中是否有提升点,以及提升了多少,可以形成如下的计算公式:

AI 辅助编程的效果如何衡量?_编码效率_03

这里设定一个假设基线,即在没有 AI 工具的情况下,单位工作量的成本是多少。该基线一般在企业内有相关统计数据,如果没有,则可以参考行业统计数据。此外,还需考虑在每个开发行为中,AI 提升效率的同时是否会产生额外成本,例如接受代码后仍需进行修改,这可能会影响手工基线的准确性。

无论选择选项一还是选项二,其背后的方法均为:行为 × 效果 = 效率。一般而言,不必过于追求数据的精确性,因为过于精确的统计可能会引导错误的行为或增加额外的管理成本。统计意义上的准确性就够了,其关键在于能够有效回答一个本质问题,并指导相应的改进。

开发效率提升对整体研发效能的影响

根据利特尔法则(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 辅助编程的效果如何衡量?_开发者_04

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

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

AI 辅助编程的效果如何衡量?_编码效率_05

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

  • 版本管理工具无法识别: 版本管理工具无法区分代码是由 AI 生成的还是人工编写的。代码提交的作者是提交人本身,而非 AI。
  • 引入复杂度: 追求入库率会导致度量变得异常复杂。追求构建并发到生产环境的数量,引入了更多变量。

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

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

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

  • 工具使用量:
  • 开发者数量:统计使用 AI 编码工具的开发者数量。
  • 活跃度:统计活跃用户的数量和活跃频率。
  • 行为: 某些能力使用的频次,统计特定功能(如代码补全、单元测试生成、代码注释生成等)的使用频次。
  • 效果: 采纳或有效生成占比,统计采纳的 AI 生成代码行数占总变更代码行数的比例。
  • 开发效率提升: 通过观测开发者在使用 AI 编码工具前后的编码效率变化,建立相关性。同时,通过“工具使用的行为 x 效果 ≈ 效率”这个简单公式,来获得对于个人开发效率提升的统计。
  • 研发效率的贡献: 研发效率涉及多个方面,包括需求质量、协作流程、测试自动化、CI/CD 工程能力等,但开发阶段的效率提升对整体研发效率有显著贡献。
  • 从系统思考的方式建立因果关系: 从整体系统的角度出发,分析各个行为、效率和结果之间的因果关系。找到关键的杠杆点,即能够带来最大效益的改进点。
  • 度量原则: 度量指标需要回答一个本质的问题,即 AI 编码工具是否真正提升了开发效率。度量指标应引导正确的改进行动,而非误导。

通义灵码一周年,福利大放送!

1)【一周年数据报】看年报,领机械键盘、手办、加薪水杯、T 恤等万份盲盒。

2)【有奖征文测评】机械键盘、华为智能手环等丰厚礼品等你来拿!

点击此处,看年报,开盲盒!本文主要介绍了如何度量研发效能,以及 AI 辅助编程是如何影响效能的,进而阐述如何衡量 AI 辅助编程带来的收益。

标签:编码,AI,代码,编程,衡量,研发,效率
From: https://blog.51cto.com/u_13778063/12418249

相关文章

  • Python SQLite数据库编程
    Python内置 SQLite库直接使用,简单,适合初学者。做更复杂软件,建议重新选用数据库从例子开始:示例代码:#导入模块importsqlite3#连接数据库,返回连接对象conn=sqlite3.connect("D:/my_test.db")#调用连接对象的execute()方法,执行SQL语句#(此处执行的是DDL语句,创......
  • 一个AI模型统治所有机器人
    原文链接:RoboticControlModule:OneAIModelforAnyRobot-IEEESpectrumAnewmodelcanoperatevirtuallyanyrobotdesign,includingarms,quadrupeds,anddrones一个新模型几乎可以操作任何机器人设计,包括机械臂、四足机器人和无人机 UCBerkeley/CarnegieM......
  • 开启AI外挂,三款谁用都事半功倍的智能AI工具
    在这个数字化时代,AI以前所未有的方式改变了我们的生活和工作模式。为了在职场中保持竞争力,掌握利用AI工具已经成为一项必不可少的技能。今天介绍三款能够显著提升工作效率的AI工具,帮助大家在职场中事半功倍,轻松工作,顺利摸鱼。文思助手:助力高效写作对于那些需要频繁撰写文案......
  • AI翻译工具:企业文档翻译的高效引擎
    在全球化趋势日益增强的今天,语言障碍往往成为企业扩展国际市场的一道门槛。招募更多的语言人员,常常会占用太多的人力成本,这时候人们就需要一些智能工具的帮助。苏哒智能翻译一体机应运而生。这款工具凭借其卓越的性能与精准度,正逐步成为企业文档翻译中的高效引擎,解决了多个实际......
  • 就业市场变革:AI时代,我们将如何评估人才?
    内容概要在这个充满变革的时代,就业市场正被人工智能(AI)技术深刻改变。随着技术的进步,传统的人才评估方式逐渐显示出其局限性。例如,过去依赖于纸质简历和面试评估的方式在快速变化的环境中难以准确识别真实的人才潜力。在AI的帮助下,企业能够更高效地进行人才评估。借助数据分析......
  • 网络编程-计算机网络三要素
    1.计算机网络三要素网络编程:使用编程语言实现多台计算机的通信网络编程三大要素- ip地址:网络中每一台计算机的唯一标识,通过IP地址找到指定的计算机- 端口:用于标识进程的逻辑地址,通过端口找到指定进程。- 协议:定义通信规则,符合协议则可以通信,不符合不能通信,一般有TCP协议......
  • 网络编程-OSI模型
    OSI模型OSI是opensysteminterconnection的缩写,译为“开放式系统互联”。OSI模型把网络通信的工作分为7层,从下到上分别是物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。OSI七层网路模型和TCP/IP四层网络模型的对比。网络模型:就是进行数据封装的。当另一台计算机......
  • 网络编程-socket
    1.什么是socket?socket的意愿是“插座”,在计算机通信领域,socket被翻译为“套接字”,他是计算机之间进行通信的一种约定或者一种方式,通过socket这种约定,一台计算机可以接受其他计算机的数据,也可以向其他计算机发送数据。我们把插头插到插座上就能从电网获得电力供应,同样,为了远程......
  • AI智能分析视频分析网关区域人数不足检测算法:智能监控的新篇章
    在当今社会快速发展的背景下,公共场所如购物中心、交通枢纽、教育机构等地的人群聚集现象越来越普遍。如何高效地管理和控制这些区域的人流,保障安全的同时提升服务水平,成为一个迫切需要解决的挑战。传统的人流统计方法,例如人工计数或基础的传感器技术,常常因效率低和准确度不足而受......
  • Python GUI编程 tkinter编程
    tkinter编程思路比喻对于tkinter编程,主要用两个比喻来描述,重点理解容器、组件和布局管理器。 第一个,作画。我们都见过美术生写生的情景,先支一个画架,放上画板,蒙上画布,构思内容,用铅笔画草图,组织结构和比例,调色板调色,最后画笔勾勒。相应的,对应到tkinter编程,那么我们的显示屏就是支......