![]()
关于AI编程工具的炒作很多,开发者在速度和准确性方面确实看到了收益。但当开发者将这些工具作为辅助工具时,他们是否也将一些思考任务交给了AI?
Anthropic的研究人员最近对此进行了测试,研究软件开发人员在有AI辅助和没有AI辅助的情况下学习新技能(学习新Python库)的速度,更重要的是,确定使用AI是否会降低他们真正理解所编写代码的可能性。
研究发现:AI辅助的开发者能够成功执行新任务,但矛盾的是,他们并没有学会新技能。
根据现实世界软件工程师的说法,这并不特别令人惊讶。西北AI咨询公司的Wyatt Mayham表示:"AI编程助手不是通向能力的捷径,而是需要新水平纪律性的强大工具。"
在一项随机对照试验中,52名"主要是初级"的开发人员被分成两组:一组被鼓励使用AI,一组被拒绝使用,执行一个与相对较新的异步Python Trio库交互的简短练习,涉及超越Python流畅性的新概念。选择的工程师熟悉Python和AI编程助手,但从未使用过Trio库。
研究人员随后测试了他们在调试、代码阅读和编写方面的掌握程度,以及理解核心工具和库原理的能力,以帮助评估AI生成的代码是否遵循适当的软件设计模式。
结果显示:使用AI的小组在测验中的得分比手工编码的对照组低17个百分点——即50%对67%,相当于差距近两个字母等级。这发生在测验涵盖他们几分钟前刚刚使用过的概念的情况下。
值得注意的是,掌握程度最大的差距出现在代码调试和理解代码何时不正确以及为什么失败方面。这令人担忧,因为这意味着如果人类的技能形成"首先因使用AI而受到抑制",他们可能不具备验证和调试AI编写代码的必要技能,研究人员指出。
这个70分钟的实验设置得像一个自导教程:参与者收到问题描述、起始代码以及解决问题所需的Trio概念的快速解释。他们有10分钟来熟悉工具,35分钟来执行用Trio编写两个不同功能的任务。剩下的25分钟用于测验。
他们被鼓励使用在线编程平台尽可能快地工作;AI组可以访问边栏嵌入的AI助手,该助手可以在任何时候接触代码并在被询问时产生正确代码。研究人员进行了屏幕录制,以了解参与者在编码或撰写查询上花费了多少时间、他们提出的问题类型以及他们犯的错误。
有趣的是,使用AI并不自动保证较低的分数;相反,是开发者如何使用AI影响了他们保留的技能和概念。
AI组的开发者花费了多达30%的分配时间(11分钟)编写多达15个查询。与此同时,非AI组遇到的错误比AI辅助组更多,主要围绕语法和Trio概念。然而,研究人员认为他们通过自己解决错误"可能提高了调试技能"。
AI组参与者根据AI使用的水平和方法进行排名。那些测验得分低于40%的人严重依赖AI,显示出"较少的独立思考和更多的认知卸载"。这个小组进一步分为:
AI委托者:这些开发者"完全依赖"AI,最快完成任务且遇到很少或没有错误;
"渐进式"AI用户:他们开始时主动提出几个问题,然后演变为完全依赖AI;
迭代AI调试者:他们最初也问更多问题,但最终信任AI来调试和验证他们的代码,而不是澄清对代码的理解。
另一类用户测验得分为65%或更高,他们使用AI进行代码生成和概念查询,进一步分为以下组:
生成代码、手动复制粘贴到工作流程中,然后提出后续问题的参与者。他们在测验中最终显示出"更高水平的理解"。
撰写"混合查询",同时要求代码和围绕代码的解释的参与者。这通常花费更多时间,但提高了他们的理解。
提出概念问题,然后依靠理解完成任务的参与者。他们在过程中遇到"许多错误",但也独立解决了它们。
Mayham强调:"关键不在于开发者是否使用AI,而在于如何使用",他说这些发现与他自己的经验一致。"避免技能退化的开发者是那些主动调动大脑而不是被动接受AI输出的人。"
有趣的是,实验中的开发者意识到自己的习惯。虽然不使用AI的参与者发现任务"有趣"并说他们已经对Trio有了理解,但使用AI的参与者表示他们希望能更多关注Trio库的细节,无论是通过阅读生成的代码还是提示更深入的解释。
研究人员解释说:"具体而言,(使用AI的)参与者报告感到'懒惰',并且'(他们的)理解中仍有很多空白'。"
包括Anthropic自己的研究在内的许多研究发现,AI可以将某些任务的速度提高多达80%,然而,这项新研究似乎表明,有时速度就是速度——而不是质量。研究人员指出,感觉必须尽可能快地行动的初级开发者正在冒着技能发展的风险。
他们说,"AI增强的生产力不是能力的捷径",将AI"积极"纳入工作场所可能对不保持认知参与的工人产生负面影响。研究人员强调,人类仍然需要技能来捕捉AI的错误、指导输出并提供监督。
他们说:"认知努力——甚至痛苦地陷入困境——对培养精通很重要。"
研究人员建议,管理者在部署AI工具时应该"有意识地"思考,以确保工程师在工作中继续学习。主要的大语言模型提供商提供学习环境,如Anthropic的Claude Code学习和解释模式,或OpenAI的ChatGPT学习模式来提供帮助。
从Mayham的角度来看,开发者可以通过以下方式缓解技能萎缩:
将AI作为学习工具:要求代码和解释。用概念问题提示它。他建议:"用它来理解代码背后的'为什么',不仅仅是'什么'。"
验证和重构:"永远不要隐含地信任AI生成的代码。"总是花时间阅读、理解和测试它。通常,最好的学习来自调试或改进AI提供的代码。
保持独立思考:使用AI来增强工作流程,而不是替代思维过程。Mayham说:"目标是保持解决方案的架构师身份,AI充当高效助手。"
他指出,AI驱动的生产力不能替代"真正的能力",特别是在高风险、安全关键的系统中。开发者在采用工具时必须有意识和有纪律,以确保他们不断构建技能,"而不是侵蚀技能"。成功的人不会只是将工作转移给AI,他们会用它来提出更好的问题、探索新概念并挑战自己的理解。
Mayham说:"技能萎缩的风险是真实的,但不是不可避免的。这是一种选择。将会成功的开发者是那些将AI视为学习的苏格拉底式伙伴,而不是委托的黑盒的人。"
Q&A
Q1:AI编程工具会降低开发者的技能水平吗?
A:研究显示会。使用AI辅助的开发者在测验中得分比手工编码的对照组低17个百分点,最大的技能差距出现在代码调试和理解代码错误方面,这意味着他们可能不具备验证和调试AI编写代码的必要技能。
Q2:哪种使用AI的方式能避免技能退化?
A:关键在于如何使用AI而非是否使用。避免技能退化的开发者会主动思考而非被动接受AI输出,他们会要求代码和解释,用概念问题提示AI,手动验证和测试AI生成的代码,并保持独立思考。
Q3:为什么使用AI编程工具的开发者反而技能下降?
A:研究发现,过度依赖AI的开发者出现了"认知卸载"现象,他们将思考任务交给AI,缺乏独立思考。而那些遇到错误并自己解决的开发者反而提高了调试技能,认知努力对培养精通很重要。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.