研究表明,人工智能可以帮助人们更快地完成部分工作。在对数据的观察性研究中,我们发现人工智能可以将某些任务的速度提高 80%。但这种生产力的提升是否会带来一些弊端呢?其他研究表明,当人们使用人工智能辅助时,他们对工作的投入度会降低,投入的精力也会减少——换句话说,他们把自己的思考工作交给了人工智能。

目前尚不清楚这种认知卸载是否会阻碍人们在工作中提升技能,或者——以编程为例——阻碍他们理解自己正在构建的系统。我们新的研究是一项以软件开发人员为参与者的随机对照试验,旨在调查在工作中使用人工智能的这种潜在弊端。
这个问题意义深远——它关系到如何设计促进学习的人工智能产品、企业应如何制定人工智能政策,以及更广泛的社会韧性等等。我们重点关注编程领域,人工智能工具已迅速成为该领域的标准配置。然而,人工智能也带来了一种潜在的矛盾:随着编程自动化程度的提高和工作效率的提升,人类仍然需要具备发现错误、指导输出结果,并对部署在高风险环境中的人工智能进行监督的技能。人工智能是否能为技能发展和效率提升提供捷径?或者,人工智能辅助带来的生产力提升是否会阻碍技能发展?
在一项随机对照试验中,我们研究了 1) 软件开发人员在有 AI 帮助和没有 AI 帮助的情况下,学习一项新技能(在本例中为 Python 库)的速度有多快;以及 2) 使用 AI 是否会降低他们理解自己刚刚编写的代码的可能性。
我们发现,使用人工智能辅助会导致掌握程度出现显著下降。在一项涵盖几分钟前刚刚使用过的概念的测试中,人工智能组的参与者得分比手动编码组低17%,相当于低了近两个等级。使用人工智能虽然略微加快了任务速度,但这种提升并未达到统计学显著性水平。
重要的是,使用人工智能辅助并不意味着得分会降低。人工智能的使用方式会影响参与者对信息的保留程度。那些掌握程度更高的参与者不仅利用人工智能辅助来编写代码,而且还在编写代码的过程中加深理解——无论是通过提出后续问题、请求解释,还是在独立编写代码的同时提出概念性问题。
研究设计
我们还确保他们至少对人工智能编码辅助有一定的了解,并且不熟悉 Trio,我们任务所基于的 Python 库。
我们将研究分为三个部分:热身;主要任务,即使用编写两个不同功能的代码(这需要理解异步编程的相关概念,这是一项通常在专业环境中学习的技能);以及测验。我们告知参与者任务完成后会有测验,但鼓励他们尽可能快地完成。
我们设计的编程任务旨在模拟人们通过自学教程学习新工具的过程。每位参与者都会收到一份问题描述、一段初始代码以及解决问题所需的概念的简要说明。我们使用了一个在线编程平台,其侧边栏中有一个人工智能助手,可以访问参与者的代码,并在需要时随时生成正确的代码。
评估设计
在我们的评估设计中,我们借鉴了计算机科学教育领域的研究,确定了四种常用于评估编程技能掌握程度的问题类型:
调试:识别和诊断代码错误的能力。这项技能对于检测人工智能生成的代码何时出错以及了解其失败原因至关重要。
代码阅读能力:能够阅读并理解代码的功能。这项技能使人们能够在部署前理解和验证人工智能编写的代码。
代码编写:指编写代码或选择正确代码编写方法的能力。随着人工智能编码工具的进一步集成,底层代码编写(例如记住函数语法)的重要性将不如高层系统设计。
概念理解:理解工具和库背后的核心原理的能力。概念理解对于评估人工智能生成的代码是否使用了符合库预期用途的适当软件设计模式至关重要。
我们的评估主要侧重于调试、代码阅读和概念问题,因为我们认为这些对于监督越来越可能是人工智能生成的代码为重要。

平均而言,人工智能组的参与者完成任务的速度比手工编码组快了大约两分钟,尽管这一差异并不具有统计学意义。然而,测试成绩却存在显著差异:人工智能组在测验中的平均得分为 50%,而手工编码组的平均得分为 67%,相当于近两个等级的差距(Cohen's d = 0.738,p = 0.01)。两组之间得分差距大的是调试题,这表明,如果人工智能阻碍了代码开发,那么理解代码何时出错以及出错原因的能力可能是一个需要特别关注的领域。