代码分析公司发现,AI开发工具在关键编程指标上没有显著优势,尽管其他人报告称代码助手在代码审查方面带来了小幅提升。
在GenAI浪潮中,编程助手是一个显而易见的早期用例,但承诺的生产力提升并未如预期般显著,甚至可能不存在。
许多开发者表示,AI编程助手提高了他们的工作效率,但最近一项研究对其产出进行了衡量,发现并无显著提升。根据提供代码和协作数据洞察的公司 Uplevel 的研究,使用 GitHub Copilot 还引入了41%更多的漏洞。
该研究衡量了拉取请求(PR)周期时间,即将代码合并到代码库的时间,以及 PR 吞吐量,即合并的拉取请求数量。研究发现,使用 Copilot 的开发者在这些方面没有显著改进。
Uplevel 使用其客户生成的数据,将大约800名开发者在使用 GitHub Copilot 三个月期间的产出与使用前的三个月进行了比较。
衡量开发者倦怠
除了衡量生产力外,Uplevel 的研究还考察了开发者倦怠的因素,发现 GitHub Copilot 在这方面也没有帮助。标准工作时间之外的工作时长在使用代码工具的测试组和控制组中都减少了,但在不使用 Copilot 时减少得更多。
Uplevel 的研究是出于对 AI 编程助手普及后所宣称的重大生产力提升的好奇,Uplevel 的产品经理兼数据分析师 Matt Hoffman 说道。今年8月发布的一项 GitHub 调查显示,97% 的软件工程师、开发者和程序员报告使用了AI编程助手。
“我们看到不同的研究显示,人们说‘这对我们的生产力非常有帮助’,但我们也看到一些人表示,‘你知道吗?我反而更多地成了(代码)审查员。’” Hoffman 说道。
GitHub Copilot 的一位代表没有对这项研究发表评论,但指出了一项最近的研究,表示开发者使用该编程助手编写代码的速度提高了55%。
Hoffman 说,Uplevel 团队最初也预计会看到一些生产力提升。
“我们的团队假设是,PR周期时间会缩短,”Hoffman 说道,“我们认为他们会写出更多代码,而且我们实际上认为漏洞率会降低,因为你在使用这些GenAI工具帮助你在发布前审查代码。”
Hoffman 承认,除了 PR 周期时间和 PR 吞吐量外,可能还有其他方式来衡量开发者的生产力,但 Uplevel 认为这些指标是衡量开发者产出的有力标准。
保持关注
此外,Uplevel 并未建议企业停止使用编程助手,因为这些工具正在快速进步。
Hoffman 补充道:“我们听说人们现在更多地成为代码的审查者,而不是过去那样直接编写代码,有时你可能会对生成的代码过于信任,认为它正在执行你期望的任务。你需要密切关注生成的内容,确保它真正符合你的预期。”
在实际工作中,开发团队报告了不同的结果。
Gehtsoft USA 是一家定制软件开发公司,其 CEO Ivan Gekht 表示,他们的开发者在使用基于大型语言模型(LLM)的编程助手时,并未看到显著的生产力提升。Gehtsoft 已经在沙盒环境中测试了这些编程助手,但尚未在客户项目中使用它们。
“理解和调试 AI 生成的代码变得越来越具有挑战性,故障排查的资源消耗如此之大,以至于重写代码比修复它更容易。”——Ivan Gekht,Gehtsoft CEO
他表示:“使用 LLM 提高生产力不仅要求 LLM 在能力上与人类相媲美,还要求用户知道如何最有效地使用 LLM。LLM 不具备批判性思维、自我意识或思考能力。”
Gekht 补充道,写几行代码与全面的软件开发之间有很大的区别。他认为,编写代码就像写一句话,而开发软件就像写一本小说。
“软件开发90%依赖于大脑的运作——理解需求、设计系统、考虑限制和约束,”他补充道。“将所有这些知识和理解转换为实际代码是工作中较为简单的一部分。”
与 Uplevel 的研究类似,Gekht 也认为 AI 助手会在代码中引入错误。AI 生成的代码的每一次新迭代都会因不同部分使用了不同的提示而导致一致性降低。
他说:“理解和调试 AI 生成的代码变得越来越具有挑战性,故障排查所需的资源消耗如此之大,以至于重写代码比修复它更容易。”
效率提升的实例
云服务提供商 Innovative Solutions 的编程助手使用体验则大不相同,该公司的 CTO Travis Rehl 表示,使用像 Claude Dev 和 GitHub Copilot 这样的编程助手,公司的生产力得到了显著提升。公司还使用了自家开发的 Anthropic 集成来监控拉取请求并验证代码质量。
Rehl 观察到,开发者的生产力提升了两到三倍,这体现在开发者工单的完成速度、客户交付成果的周转时间以及通过代码中漏洞数量来衡量的工单质量上。
他还提到,团队最近通过使用编程助手在24小时内完成了一个客户项目,而过去完成同样的项目大约需要30天。
然而,Rehl 认为,关于编程助手的某些炒作——比如声称它们将取代整个开发团队,而不是简单地作为补充或重新塑造开发流程——是不切实际的。他补充说,编程助手可以用于快速替换代码或通过重新设计代码片段来优化代码路径。
他表示:“对编程助手的期望应适当调整,因为它们不会在第一次尝试中写出所有代码,甚至不会写出全部正确的代码,这是一个迭代的过程,正确使用时,可以使开发者的编码速度提高两到三倍。”