AI 工程师的崛起:从翻译转向架构
传统的软件工程师形象是蜷缩在键盘前,细致地编写每一行代码,进行数小时的调试,并优化每一个循环。几十年来,这种“翻译”过程——将概念性解决方案转化为语法正确的实现——一直是开发者的主要活动。
然而,一种具有启发性的新观点正在出现:即实际的代码输入从未是这项工作的“有趣”或最有价值的部分。相反,软件工程的真正本质在于决策过程——架构、抽象和问题解决。随着 AI agent 变得越来越能够处理实现细节,工程师的角色正在从代码的生产者转向系统的评估者。
翻译的代价
对于许多经验丰富的开发者来说,编写代码感觉就像是为了让想法变为现实而支付的代价。样板代码、空值检查和标准模式的重复性本质往往感觉像是肌肉记忆,而不是智力刺激。当概念性工作——决定系统在出错时应如何表现,或者复杂性应驻留在何处——在几秒钟内完成时,随后的数小时输入工作仅仅是一种翻译练习。
通过利用 AI agent 来处理这种翻译,工程师可以进入“全 AI 工程师”模式。在这种工作流中,主要活动转向:
- 架构设计: 定义系统的高层结构和原语。
- 审查: 仔细阅读 diffs 并拒绝那些解决错误问题的实现。
- 反驳: 反对那些不符合项目长期目标的模式。
- 规范说明: 为 agent 编写详细的规范说明。
在这种范式下,关键技能不再是语法的熟练程度,而是品味。品味是识别糟糕设计、发现即将崩溃的负载支撑假设,并知道该坚持什么、该放手什么的的能力。
“氛围编程”的危险
这种架构方法与某些人所称的“氛围编程”(vibe-coding)之间存在显著区别——即在没有严格审查或理解的情况下让 agent 生成代码的行为。氛围编程是危险的,因为它会导致生产环境变得不可预测,且在凌晨 3 点时无法进行调试。
真正的 AI 工程需要更高水平的审查。评估代码可以说比编写代码更难;审查者必须在更多事情上保持正确,且速度更快,通常在上下文较少的情况下。工程师必须将 agent 保持在“短绳”约束下,确保每一行代码都经过审查,并且每一个测试都是有意义的,而不是“虚假”的覆盖率。
反方观点:萎缩与收窄
虽然向 AI 驱动的编排转向是解放了某些人,但它在工程社区引发了激烈辩论。一些关键的担忧已被提出:
1. 认知萎缩
许多人认为,阅读代码不如编写代码。人们担心,通过停止“动手做”,工程师将失去深入理解语言细微差别的能力。正如一位批评者所指出的,如果你停止从实际编程理解的角度去思考代码,你就是在为失败做准备。
2. 解决方案空间的收窄
有一种理论认为,在问题开始时与 LLM 交互会收窄解决方案空间。工程师不再是制定独特的、定制化的解决方案,而是可能开始仅仅标记看起来错误的东西,并从 LLM 生成的备选方案菜单中进行选择。这可能导致“中等思维”(mid-thinking),即工程师的大脑被训练得像 LLM 一样思考,从而可能导致次优的架构。
3. “最慢的 IDE”问题
从务实的角度来看,一些开发者认为,用自然语言描述微小的修改是极其低效的工作方式。使用 LLM 来重命名一个项目中的变量可以比直接打开文件并手动操作慢得多。在这些 cases 中,AI 变成了“一个具有更高延迟和更低精度的冗长且有损的接口”。
结论:新的工程身份
向 AI 驱动开发的转型迫使人们面对职业身份的冲突。多年来,“开发者”的身份一直与编写代码紧密相连。如果这种身份取决于工具栈,那么它是脆弱的。
然而,如果身份转而与解决问题的能力和创造价值的能力挂钩,那么工具就变得无关紧要了。辩论的核心最终在于,手动编码的“代价”是一种构建领导 AI 所需品味的必要纪律,还是一个最终可以被抛弃的负担。对于拥有十年经验的高级工程师来说,这种转型可能是一种解放;对于新手来说,在从未编写过 for-loop 的情况下实现那种“品味”的路径,仍然是一个开放的、或许令人担忧的问题。