近年来,生成式 AI 编码助手如 GitHub Copilot 等工具被广泛推广,号称能够提高开发者的生产力,减少开发时间。然而,最新研究表明,这些工具的实际效果可能不如预期,甚至在某些情况下可能导致代码质量下降和工作效率降低。
原文链接:https://shenisha.substack.com/p/are-ai-coding-assistants-really-saving
作者 | Shenisha 翻译 | 郑丽媛
近期,一项研究对“AI 编码工具能够提升开发者生产力”的说法提出了质疑,结果显示:使用 GitHub Copilot 反而导致 Bug 增加了 41%,突显其代码质量堪忧;尽管对照组和实验组的工作时长都有所减少,但使用 GitHub Copilot 的开发者的倦怠感和工作压力并未因此减少;此外,开发者还需花费更多时间审查 AI 生成的代码,一定程度上抵消了其潜在节省的时间。
综合看下来,AI 编码工具对开发者生产力的影响似乎微乎其微。
调查了 800 名开发者,Uplevel 指出:GitHub Copilot 无功无过
在开发者社区中,围绕 AI 编码助手是否真正提升生产力的讨论仍在继续。虽然有些公司报告称 AI 工具带来了显著的生产力提升,但也有一些公司发现这些工具引入了更多错误,并使调试过程变得更加复杂。尤其是初级开发者,即便有 AI 工具的帮助也难以达到高级开发者的效率。
编码工具是生成式 AI 崛起的早期应用之一,但分析公司 Uplevel 的一项最新研究表明,预期的生产力提升可能被高估了,甚至根本不存在。Uplevel 通过分析编码和协作数据发现,使用 GitHub Copilot 导致了错误率上升 41%。
在《生成式 AI 能否提升开发者生产力》报告中,Uplevel 提到:“这表明 Copilot 可能对代码质量产生了负面影响。工程主管可能需要调查带有 Bug 的拉取请求,并为负责任地使用生成式AI实施保障措施。”
研究衡量了拉取请求(PR)周期时间(将代码合并到仓库所需的时长)以及 PR 吞吐量(即合并请求的数量),结果发现,使用 GitHub Copilot 的开发者在这些指标上并未显著改进——这些发现来自 Uplevel 的研究报告,其旨在回答以下三个关键问题:
使用 GitHub Copilot 是否能帮助开发者更快地编写代码?
GitHub Copilot 是否能帮助开发者产出更高质量的代码?
GitHub Copilot 是否能缓解开发者的倦怠感?
Uplevel 分析了其客户的数据,对比了约 800 名开发者在采用 GitHub Copilot 前后三个月的表现,得出了以下两个主要发现:
(1)效率指标无显著变化
“当比较有无测试情况下的PR周期时间、吞吐量和复杂度时,GitHub Copilot 对开发者既无帮助也无阻碍,也未提高编码速度。尽管其中一些指标具有统计学意义,但这些变化对技术结果并无实际影响——例如,PR 周期时间仅减少了 1.7 分钟。”Uplevel 在报告中指出。
(2)减轻职业倦怠感
Uplevel 的“持续在线”指标(该指标用于追踪超出常规工作时间之外的工作时长,是检验职业倦怠感的先行指标)在两组中都出现了下降。然而,使用 GitHub Copilot 的开发者下降了 17%,而不使用该工具的开发者则下降了近 28%。
GitHub 发布的研究结果,得出了不同结论
“Uplevel 的研究动机是源于对 AI 编码助手将成为主流这一说法感到好奇。”Uplevel 的产品经理兼数据分析师 Matt Hoffman 说。相比之下,GitHub 于 2024 年 8 月发布的一项研究发现,97% 的软件工程师、开发者和程序员报告称他们正在使用 AI 编码助手,且其他研究也有类似发现。
GitHub 的研究报告指出,超过 97% 的受访者在工作中曾使用过 AI 编码工具。然而,对于公司是否积极鼓励或允许使用这些工具,所占比例较小,且这一比例因地区而异。以下是该调查的一些关键发现:
● 生成式 AI 在软件开发领域的浪潮持续增长。此次调研覆盖了 2000 名参与者,几乎所有人(超过 97%)都曾经以某种形式使用过这些工具,无论是在工作中还是工作之外(尽管并非所有公司都正式认可其使用)。
● 尽管许多受访者表示其所在公司对 AI 技术持开放态度,但仍有改进空间。调查数据显示,在不同市场中,59% 至 88% 的受访者表示“他们的公司积极鼓励或允许使用这些工具”。
● 软件开发团队正在逐渐认识到 AI 编码工具的更多好处,包括创建更安全的软件、提高代码质量、生成更好的测试用例,以及加快新编程语言的学习过程。这些改变为开发者节省了大量时间,让他们能够投入到更具战略意义的任务当中。
GitClear 的研究人员还发现,像 GitHub Copilot 这样的 AI 工具主要建议添加新代码,较少推荐更新或删除代码,这往往会导致冗余代码的产生。此外,他们还观察到“代码反复修改”现象的急剧增加,也就是说代码被频繁修改——通常这是代码质量不佳的表现。
“每次迭代生成的 AI 代码越来越不一致,因为不同部分是基于不同提示而生成的。结果就是,代码变得越来越难以理解和调试,导致故障排查耗费大量资源,有时重写代码反而更加容易,”一位用户指出,AI 目前还未能提升生产力。
谨慎采用 AI 编码助手的策略
GitHub Copilot 等 AI 工具的引入提出了几个重要问题:AI 是否能帮助开发者更快地工作?它能否提高代码质量并防止职业倦怠?对此,Uplevel 在报告中回应:“对于当前的群体来说,答案是否定的。然而创新正在迅速发展,GitHub 发现 Copilot 提高了开发者的满意度。”
总体来说,工程领导可能需要以一种谨慎的态度来考虑如何采用 Copilot:
设定具体目标:明确将 GitHub Copilot 整合到团队工作流程中的预期成果。比如你希望实现哪些具体改进?
提供团队培训:进行初步培训,解释在什么情况下应该或不应该使用 GitHub Copilot,并建立保障措施以确保正确实施。
继续尝试生成式 AI 的应用:确定 Copilot 表现出色的具体应用场景,并优化能带来最佳效果的提示词。在整个组织内分享成功的策略,以便复制成功经验。
监控技术效率指标:进行 A/B 测试,以收集客观量化的数据,评估 AI 是否真正提高了开发者的生产力,并帮助实现运营目标。