共计 2906 个字符,预计需要花费 8 分钟才能阅读完成。
【新智元导读】2024 年 AI 编程的真实实力揭示!谷歌工程主管 Addy Osmani 为我们带来了 AI 辅助编码在实际开发中的深刻见解。
在 2024 年,AI 编程已经深入各个行业,深刻影响着软件开发的整个生命周期。
然而,令人困惑的是,虽然人们普遍认为 AI 编程效果良好,但我们日常使用的软件似乎并没有显著的进步,究竟是为什么呢?
不久前,Addy Osmani,这位谷歌的工程主管兼亚马逊畅销书作者,分享了 AI 在实际开发中的应用现状。

开发者如何利用 AI?
通常,团队在开发过程中会采用两种主要模式来使用 AI:一是「引导程序(bootstrappers)」,二是「迭代器(iterators)」。这两种方式都能帮助工程师,甚至非技术用户,缩短从构思到实现的距离。
引导程序
这一类工具包括 Bolt、v0 和 screenshot-to-code 等,具有以下特点:
从设计图或初步想法出发;
利用 AI 生成完整的初始代码库;
能够在几个小时或几天内完成工作原型;
侧重于快速验证和迭代过程。
这样的工作流程令人惊叹。例如,一位独立开发者可以借助 Bolt 在短时间内将 Figma 设计转换为有效的网页应用。尽管不符合生产级别的标准,但获取初步用户反馈却绰绰有余。

迭代器
这一类工具主要用于日常开发流程,比如 Cursor、Cline、Copilot 和 WindSurf,虽然效果不如引导程序那样惊艳,但却更加切实际,例如:
完成代码,提供建议;
执行复杂的重构任务;
生成测试用例和文档;
作为问题解决的「结对程序员」。
尽管这两种方式都能显著提升开发速度,但我们也要意识到「天下没有免费的午餐」。
AI 速度的隐性代价
高级工程师在使用 Cursor 或 Copilot 等 AI 工具时,能够在短短几分钟内搭建出完整的功能框架,并完成测试和文档的编写,这如同魔术般迅捷。
然而,仔细观察后会发现,资深工程师在参考 AI 建议的同时,还会:
将生成的代码重构为更小的模块;
添加处理边缘情况的逻辑;
优化类型定义和接口;
添加全面的错误处理机制;
甚至对 AI 提供的架构进行质疑。
换句话说,他们运用多年的工程经验来塑造和限制 AI 的输出。AI 虽然加速了代码的实现,但人类的专业知识则确保了代码的可维护性。

相比之下,初级工程师往往忽视这些关键步骤。他们容易全盘接受 AI 的输出,最终导致所谓的「纸牌屋代码」,表面上完整,但在现实条件下却可能崩溃。
知识悖论
有趣的是,实际上 AI 更能帮助经验丰富的开发者,这一现象多少显得反直觉。
高级工程师能借助 AI 迅速构建想法的原型(理解)、生成基础实现(可改进)、探索已知问题的替代方案等;
而初学者则常常接受不准确或过时的解决方案,忽视关键的安全和性能问题,对于调试 AI 生成的代码也无能为力,最终构建出一个自己不完全理解的脆弱系统。
70% 的难题
非工程师在使用 AI 编码时,常常面临一个尴尬的境地:他们可以出乎意料地快速完成 70% 的工作,但最后那 30% 却极为艰难。

这个「70% 的难题」揭示了 AI 辅助开发的现状,初期如有神助,随后却被现实打击。
实际情况通常是:
尝试修复一个小错误——>
AI 提出一个看似合理的修改——>
这个修改却破坏了其他部件——>
请求 AI 修复新出现的问题——>
又引发两个新 bug——>
形成无限循环。
这个循环对非工程师尤其痛苦,因为他们缺乏专业背景来理解实际问题出在哪里。

有经验的开发者在遇到 bug 时,能够依靠多年的模式识别能力推断出潜在原因和解决方案。如果没有这种背景知识,就如同在用不完全理解的代码「打地鼠」。
学习悖论
还有一个更深层次的问题是,让非工程师使用 AI 编码工具,实际上可能会阻碍他们的学习。
虽然生成的代码能运行,但开发者却不了解其基本原理,这导致他们错过了学习基本模式、未能培养调试技能,也无法进行架构决策的推理,而这些代码又需要后续的维护和扩展。
因此,这些开发者不断依赖 AI 来解决问题,而不是提升自身的处理能力。

非工程师使用 AI 编码工具的最佳方式或许是采用「混合模式」:
1. 利用 AI 进行快速原型设计;
2. 花时间理解生成代码的工作机制;
3. 学习基本的编程概念及 AI 的应用;
4. 逐步建立知识框架;
5. 将 AI 视为学习工具,而非单纯的代码生成器。
然而,这需要耐心与持续的努力,与许多人使用 AI 工具的初衷恰恰相悖。
这个「70% 的难题」表明,当前的 AI 并未达到许多人希望的水平。最后 30% 的工作(将软件转变为可生产、可维护的状态)仍然需要真正的工程知识。
最佳实践
Addy Osmani 观察了多个团队,归纳出一些最佳实践方法:
「AI 初稿」模式
未来 AI 辅助开发的全新视角
利用 AI 生成初步实现;进行人工审查与模块化重构;加强错误处理机制;编写详尽的测试用例;记录重要的决策过程。
「持续互动」模式
针对每项特定任务开启新的 AI 对话;确保上下文简洁清晰;定期检查并提交修改;保持紧密的反馈环节。
「信任并验证」模式
基于 AI 生成的初始代码进行手动审查,特别关注关键路径;对边缘案例进行自动化测试;定期开展安全审查。
AI 的未来潜力究竟如何?
尽管面临诸多挑战,作者对 AI 在软件开发领域的未来持乐观态度。关键是充分挖掘 AI 的独特优势:
迅速推进已知模式的实现,AI 如同一位耐心无比的编程伙伴,能够以极快的速度输入代码。
探索创新的可能性,AI 在快速构建想法原型和测试不同方案方面展现出色,犹如一个沙盒,便于我们迅速实验各种概念。
自动化日常任务,AI 显著减少了在模板和常规编码上耗费的时间,从而使我们能够专注于更具挑战性的问题。

若您刚开始接触 AI 辅助开发,作者建议先从小规模的项目入手。
将 AI 应用于那些非耦合、界定明确的任务,仔细审查生成的每一行代码,逐步扩展功能。
在此过程中,保持模块化:将所有内容拆分为小型关键文件,确保组件之间的接口清晰,记录模块的边界。
此外,信任自己的经验至关重要:AI 应被视为加速工具,而非您的判断的替代品,若感觉不对劲应随时质疑,并始终维护自己的工程标准。
智能体的崛起
进入 2025 年,AI 辅助开发的格局正经历深刻的转变。尽管现有工具已改变了原型设计与迭代的方式,但我们正站在更为重要的变革前沿:智能体(Agent)软件工程的崛起。

智能体系统不仅能够回应指令,还将以更强的自主性进行规划、执行和迭代解决方案。
例如,Anthropic 的 Claude 具备使用计算机的能力,或 Cline 能够自动启动浏览器并执行测试。
在调试过程中,智能体系统不仅会给出修复建议,还能:
主动识别潜在问题、启动和运行测试集、检查 UI 元素并截取屏幕、提出并实施修复方案、验证解决方案的效果。
下一代工具将无缝集成视觉理解(如 UI 屏幕截图、模型、图表)、自然语言对话及环境交互(浏览器、终端、API)。

未来的 AI 不会取代开发人员,而是成为一个越来越强大的协作者,既能主动出击,又能尊重人类的指导与专业知识。


AI确实加快了开发速度,但初级工程师可能会忽略重要的代码优化和安全性问题,建议在培训中加强这些内容。