AI 提效神话破灭?开发者实测效率反降 19%!
大型语言模型(LLM)在软件开发领域的应用前景一直备受瞩目。AI 公司纷纷标榜其代码生成能力,声称能显著提升程序员的生产力和效率。然而,一项最新的研究却给这种乐观论调泼了一盆冷水:在实际的开源软件开发中,AI 工具的引入反而导致开发者效率下降了 19%。
研究揭示:AI 并非万能灵药
由 METR(Model Evaluation and Threat Research)进行的这项随机对照试验,招募了 16 位经验丰富的开源开发者,他们在各自熟悉的代码仓库中完成了 246 项维护任务,涵盖 bug 修复、新功能开发和代码重构等。研究人员将这些任务随机分配给两组:一组允许使用 AI 工具(如 Cursor Pro 和 Anthropic 的 Claude),另一组则完全禁止使用 AI 辅助。
为了保证实验的公平性,研究人员在任务分配前对每项任务的预计耗时进行了预估,并以此作为平衡任务难度的依据。此外,代码审查人员的反馈修改时间也被纳入最终的评估体系中。
预期与现实的巨大反差
在实验开始前,参与研究的开发者们普遍认为 AI 工具能将任务耗时缩短 24%。即使在完成任务后,他们仍然坚信 AI 提升了他们 20% 的效率。然而,实际数据却显示,使用 AI 辅助的任务完成时间反而比未使用 AI 的任务慢了 19%。
这一结果无疑颠覆了人们对 AI 代码生成能力的固有印象。那么,问题究竟出在哪里?
时间都去哪儿了?
为了深入探究效率下降的原因,METR 的研究人员分析了一部分开发者的屏幕录像数据。他们发现,AI 工具确实减少了开发者在编写代码、测试/调试以及信息检索上的时间。然而,这些节省下来的时间,最终却被以下几个方面所抵消:
- AI 输出审查: 开发者需要花费大量时间来检查 AI 生成的代码,以确保其正确性和可靠性。
- AI 提示工程: 为了获得符合要求的代码,开发者需要不断地调整和优化 AI 提示,这本身就是一个耗时的过程。
- AI 生成等待: AI 生成代码需要一定的时间,尤其是在处理复杂任务时,等待时间会更长。
- 额外开销: 屏幕录像显示,开发者在使用 AI 工具时,还存在一些额外的“闲置/管理”时间。
研究数据还显示,开发者对 AI 生成代码的采纳率并不高,只有不到 44% 的代码能被直接采用而无需修改。这意味着,大部分情况下,开发者需要对 AI 生成的代码进行大量的修改和完善,这无疑增加了额外的工作量。
复杂性是 AI 的绊脚石?
METR 的研究结果似乎与其他一些声称 AI 能提高编码效率的基准测试和实验相矛盾。然而,研究人员指出,这些基准测试往往侧重于代码行数、任务完成量等指标,而这些指标并不能真实反映编码效率。
此外,许多现有的编码基准测试都基于合成的、算法可评分的任务,这与实际的软件开发环境存在很大的差异。METR 研究中的开发者们反映,他们所维护的代码仓库通常历史悠久(平均 10 年以上)且代码量巨大(超过 100 万行),这使得 AI 难以理解代码库中蕴含的“隐性知识或上下文”,从而限制了 AI 的作用。
研究人员认为,对于那些对代码质量要求极高,或者存在大量隐性需求(如文档、测试覆盖率或代码格式规范)的项目来说,当前的 AI 编码工具可能并不适用。因为在这些场景下,人类开发者需要花费大量的时间来学习和掌握这些隐性知识,而 AI 却无法做到这一点。
AI 的未来:仍有改进空间
尽管 METR 的研究结果给 AI 在软件开发领域的应用前景泼了一盆冷水,但研究人员仍然对 AI 的未来充满信心。他们认为,如果 AI 工具能够提高可靠性、降低延迟,或者通过提示工程或微调等技术生成更相关的输出,那么它们仍然有可能提高开发者的效率。
事实上,已经有初步证据表明,Anthropic 最新发布的 Claude 3.7 在某些情况下能够正确实现研究中涉及的若干代码仓库的核心功能。
总而言之,METR 的研究表明,在某些复杂的、真实的编码场景中,AI 的作用可能存在很大的局限性。AI 编码工具想要真正发挥其潜力,还需要在可靠性、效率和智能化方面不断提升。
案例分析:AI 在不同场景下的表现
为了更深入地理解 AI 在软件开发中的实际表现,我们可以结合一些具体的案例进行分析:
- 简单脚本编写: 对于一些简单的脚本编写任务,AI 往往能够快速生成可用的代码,从而显著提高开发效率。例如,使用 AI 快速生成一个用于批量重命名文件的脚本,或者生成一个简单的 Web 服务器。
- 重复性任务: 在处理一些重复性的任务时,AI 也能发挥其优势。例如,使用 AI 自动生成大量的测试用例,或者自动完成代码的格式化和 Linting。
- 复杂系统开发: 然而,在面对复杂的系统开发任务时,AI 的表现往往不尽如人意。例如,在开发一个大型的电商网站时,AI 难以理解业务逻辑和系统架构,从而难以生成高质量的代码。此外,AI 还可能引入一些潜在的安全漏洞,给系统带来风险。
因此,在实际应用中,我们需要根据具体的场景选择合适的 AI 工具,并将其与人工开发相结合,才能真正实现效率的提升。
数据佐证:AI 代码质量仍需提升
除了 METR 的研究之外,还有许多其他的研究也表明,AI 生成的代码质量仍有待提高。例如,一项对 GitHub Copilot 的研究发现,Copilot 生成的代码中存在大量的错误和安全漏洞。另一项研究则发现,AI 生成的代码往往缺乏可读性和可维护性,给后续的维护工作带来困难。
这些数据都表明,AI 编码工具目前还处于发展阶段,其生成代码的质量和可靠性仍有待提升。因此,在使用 AI 编码工具时,我们需要保持谨慎的态度,并对其生成的结果进行仔细的审查和测试。
结论:理性看待 AI 的作用
AI 在软件开发领域的应用前景广阔,但我们不能盲目迷信 AI 的能力。我们需要理性看待 AI 的作用,认识到其局限性,并将其与人工开发相结合,才能真正实现效率的提升。同时,我们也需要不断关注 AI 技术的发展,期待未来 AI 编码工具能够克服当前的不足,为软件开发带来更大的变革。