AI 编码效率反思:研究揭示开源开发者效率降低 19% 的真相

1

大型语言模型在各个行业的应用前景备受瞩目,尤其是在软件开发领域,AI 工具被寄予厚望,许多公司都宣称 AI 能够显著提高编码效率。然而,一项最新的研究却给这种乐观论调泼了一盆冷水:针对经验丰富的开源软件开发者,AI 辅助工具的使用实际上导致了工作效率的下降。

这项由 METR(模型评估与威胁研究中心)进行的随机对照试验,招募了 16 位在特定开源代码仓库拥有多年经验的开发者。研究人员跟踪了他们在 246 个日常维护任务中的表现,包括 bug 修复、新功能开发和代码重构。一半的任务允许开发者使用 AI 工具,如 Cursor Pro 和 Anthropic 的 Claude,另一半则禁用 AI 辅助。为了保证两组任务难度相当,研究人员在任务分配前对每项任务的预期完成时间进行了预估,并将修复代码审查反馈所需的时间也纳入了整体评估。

AI快讯

研究结果令人惊讶。参与研究的开发者们最初预计 AI 工具能将任务完成时间缩短 24%,任务完成后,他们仍然认为 AI 提升了 20% 的效率。但实际数据却显示,使用 AI 辅助工具的任务比未使用 AI 的任务平均慢了 19%。

AI 辅助的效率权衡

为了深入探究效率下降的原因,METR 研究人员分析了一部分开发者的屏幕录像数据。他们发现,AI 工具确实减少了开发者在编写代码、测试/调试以及信息检索上的时间。然而,这些节省下来的时间被另外三个方面所抵消:审查 AI 生成的代码、编写 AI 提示词以及等待 AI 生成结果,还有屏幕录像中显示的空闲/管理时间。

数据显示,开发者对 AI 生成的代码的接受度并不高,只有不到 44% 的代码未经修改就被采纳。绝大多数开发者表示需要修改 AI 生成的代码,而代码审查占据了 AI 辅助任务总时间的 9%。

AI快讯

复杂代码库的挑战

表面上看,METR 的研究结果与其他一些表明 AI 工具能提高编码效率的基准测试和实验相矛盾。但值得注意的是,许多此类研究通常以代码行数或已完成的任务/代码提交/pull request 的数量来衡量生产力,而这些指标并不能准确反映实际的编码效率。

此外,许多现有的编码基准测试侧重于为测试而设计的合成算法任务,难以与真实代码库上的工作相提并论。METR 研究中的开发者表示,他们所维护的代码仓库普遍较为复杂(平均拥有 10 年历史和超过 100 万行代码),这限制了 AI 工具的效用。研究人员指出,AI 无法理解代码库中重要的隐性知识或上下文,而开发者对代码库的高度熟悉程度反而提高了他们的编码效率。

研究人员认为,当前的 AI 编码工具可能不太适合对质量标准要求极高,或存在大量隐性要求(如文档、测试覆盖率或代码格式规范)的场景,而人类需要花费大量时间才能掌握这些要求。虽然这些因素可能不适用于许多涉及较简单代码库的实际场景,但它们可能会限制 AI 工具在复杂、真实场景中的影响。

AI 的未来潜力

尽管如此,研究人员对 AI 在编程领域的未来发展仍然保持乐观。他们认为,如果能够提高 AI 系统的可靠性、降低延迟并提供更相关的输出(例如通过提示词优化或微调等技术),那么 AI 工具仍然可以提高开发者的效率。他们还表示,初步证据表明,最新版本的 Claude 3.7 已经能够正确实现某些代码仓库中问题的核心功能。

总而言之,METR 的研究有力地证明,AI 在编码任务中的作用可能存在显著的局限性,尤其是在复杂的、真实的编码场景中。我们需要更理性地看待 AI 在软件开发中的潜力,并不断探索如何优化 AI 工具,使其更好地服务于开发者。

案例分析:AI 在开源项目中的应用瓶颈

为了更深入地理解 AI 在开源软件开发中面临的挑战,我们可以分析一些具体的案例。例如,在修复一个存在多年的复杂 bug 时,开发者不仅需要理解相关的代码逻辑,还需要了解 bug 的历史、相关的讨论和已有的修复尝试。这些信息往往分散在不同的文档、邮件和代码提交记录中,AI 工具很难将它们整合起来。

此外,开源项目通常有严格的代码风格和测试要求,AI 生成的代码可能不符合这些要求,需要人工进行修改。更重要的是,开源项目的开发往往依赖于社区的协作和沟通,AI 工具无法参与到这种协作中来,也无法理解社区的文化和价值观。

数据佐证:AI 辅助编码的实际效果

除了 METR 的研究之外,其他一些数据也表明 AI 辅助编码的实际效果并不像人们想象的那么美好。例如,GitHub Copilot 是一款流行的 AI 编程助手,它可以根据开发者的输入自动生成代码。然而,一些开发者发现,Copilot 生成的代码质量参差不齐,有时甚至会产生错误或安全漏洞。

Stack Overflow 是一 Stack Overflow 是一个程序员问答社区,其中 AI 生成的答案的质量也备受争议。一些用户发现,AI 生成的答案虽然看起来很专业,但实际上却存在错误或误导性信息。这表明,AI 在理解复杂问题和提供准确解决方案方面仍然存在局限性。

行业洞察:AI 编码工具的未来发展方向

尽管当前的 AI 编码工具存在一些局限性,但它们仍然具有巨大的潜力。为了充分发挥 AI 在软件开发中的作用,我们需要重点关注以下几个方面:

  1. 提高 AI 的代码理解能力:AI 需要更好地理解代码的语义和上下文,以便生成更准确、更可靠的代码。
  2. 增强 AI 的协作能力:AI 需要能够参与到软件开发的协作过程中,与开发者进行有效的沟通和协作。
  3. 优化 AI 的代码生成质量:AI 需要生成符合代码风格和测试要求的代码,减少人工修改的工作量。
  4. 加强 AI 的安全保障:AI 需要避免生成包含错误或安全漏洞的代码,确保软件的质量和安全。

通过在这些方面不断努力,我们可以让 AI 编码工具真正成为开发者的得力助手,提高软件开发的效率和质量。

结论:理性看待 AI 在软件开发中的作用

AI 在软件开发领域具有巨大的潜力,但同时也面临着许多挑战。我们需要理性看待 AI 在软件开发中的作用,既要看到它的优势,也要认识到它的局限性。只有这样,我们才能充分发挥 AI 的作用,推动软件开发行业的进步。

未来的 AI 编码工具将更加智能化、个性化和协作化,它们将能够更好地理解开发者的意图,生成更符合开发者需求的代码,并与开发者进行更有效的协作。这将极大地提高软件开发的效率和质量,为软件开发行业带来新的发展机遇。