AI 编写了代码 — 现在开发人员只能修复它
快速阅读: 《印度分析杂志》消息,专家指出,AI虽能加速开发,但也带来障碍。AI有时生成低质量代码,延长提交时间和增加维护难度,尤其对新手开发者更具挑战性。资深开发者认为AI适合处理简单任务,复杂项目仍需人工调整和审查。
人们普遍认为,人工智能驱动的工具能够帮助加速开发人员的工作流程。然而,一些开发人员可能会感到自己像动画电影《赛车总动员》里的闪电麦昆,以赛车闻名,而另一些人却遭遇了比预期更多的障碍和挫折。在一篇博客文章中,Thoughtworks公司的全球AI辅助软件交付负责人布里吉塔·博克勒尔(Birgitta Boeckeler)解释了她在使用Cursor、Windsurf和Cline等工具时,如何不得不介入、修正并引导AI驱动的开发流程,这反而降低了开发速度。那么,她研究结果中的主要收获是什么?其他开发人员对此又有何感受?更广泛地说,在某些情况下,AI辅助编码是否有时会阻碍而非提升生产力?
问题出现之处
博克勒尔首先表达了她对IDE集成最新进展的欣赏。她指出,这些集成让执行测试、现场修复错误以及进行网络研究等任务变得更加简单快捷。随着她逐步进入AI辅助编码会话,博克勒尔发现自己经常需要指导工具并修正其建议,有时甚至完全放弃AI提出的更改。她提到:“我们距离AI自主编写非琐碎任务的代码还有很长的路要走。”
博克勒尔通过将问题归类为三个影响方面来解释问题。首先,它降低了开发速度并延长了提交时间。其次,它给团队在该迭代中的工作流程带来了摩擦。最后,它影响了代码的长期可维护性。她还展示了一张图表,说明了这些限制对她工作流的影响程度。
编码和提交时间
博克勒尔首先面临的一个常见问题是收到无法正常运行的代码。然后她必须决定是自己完成任务还是开始新的AI会话重试,这可能耗费更多时间。此外,观察发现AI会误判问题。她分享了一个例子,其中AI推测Docker构建问题源于架构设置。但实际上,问题是由于复制了为错误架构构建的错误包。Salesforce的技术工作人员库什克·巴加瓦(Koushik Bhargava)告诉AIM:“我尝试解决一些问题时曾多次遇到AI幻觉,浪费了更多时间。通常,我只需进行一次简单的Google搜索就能解决问题。”
打破团队流程
根据博克勒尔的观察,AI关注的是整体目标,而不是功能构建块。她强调,这可能导致在意识到问题之前就浪费大量前期工作。此外,AI被注意到采用蛮力方式解决问题,而不是分析根本原因。这导致解决方案生效滞后。例如,在Docker构建期间遇到内存错误的情景,AI提高内存配置,而不是调查错误的根本原因。她补充说,有时由于人类提供的提示内容不完整,开发人员的工作流程会变得比应有的复杂。
长期可维护性
AI生成的代码缺乏模块化,这使得其复用困难。这是因为AI并不总是拥有项目的整个上下文,这可能成为未来代码维护的隐患。在某些情况下,AI生成的代码过于复杂且冗余过多。相比之下,简洁的代码更易于维护。
那么,有陷阱的速度提升吗?
在与AIM的独家对话中,DBS银行的数据科学家梅胡尔·古普塔(Mehul Gupta)表示:“AI编码无疑提升了我的工作效率。样板代码?几秒钟内搞定。它大大减少了开发时间。”“经过多年编程,我已经培养出一种第六感,知道AI在哪里容易出错。所以AI处理繁琐的任务,我则调整细节,”他补充道。
古普塔强调,即使有这些好处,他也注意到了一个权衡——节省的编码时间往往重新分配给了审查。“AI不擅长处理边界情况,在复杂的项目中,它可能会引入难以察觉的微妙错误。当我使用不熟悉的语言或框架时,风险会增加——AI生成的错误可能非常隐晦,后期调试起来也很麻烦。”他进一步解释说,对于经验丰富的开发人员来说,AI编码工具是重要的生产力助推器。然而,初学者常常发现自己陷入令人沮丧的反复试验循环中,缺乏有效运用它们的基础知识。他指出,尽管AI提升了现有的编程能力,但无法取代这些技能。
(以上内容均由Ai生成)