ARTICLE · 1024257
AI 越会写代码,Engineering 越重要

AI 越来越会写代码。
它能生成前端页面、后端接口、数据访问逻辑和测试代码,也能跨越不同技术栈,完成一次看起来相当完整的修改。
于是,一个越来越现实的问题摆在工程师面前:
当 Coding Agent 可以写完大部分代码,人还需要掌握软件工程吗?
Andrew Ng 在 AI Engineering Skills Map 的第二项能力中,给出的答案并不是“软件工程不再重要”。
恰恰相反:
当代码生成变得容易,发现取舍、提供上下文和引导 Agent 的能力,反而会变得更加重要。

代码可以被生成。
但一个系统应该如何设计、如何运行、如何承担后果,不能被默认。
一、代码写完了,系统并没有自动成立
Andrew 将 Software Engineering Fundamentals 概括为五项能力:
- Building Full-stack Applications|构建全栈应用
- Managing Data|管理数据
- Designing System Architectures|设计系统架构
- Making Systems Secure and Reliable|构建安全、可靠的系统
- Scaling and Operating in Production|扩展并运行生产系统

这五项不是软件开发的五个连续步骤,也不是一套成熟度等级。
它们是一张能力地图:帮助工程师识别,Agent 生成的代码将进入怎样的系统,又会带来哪些后果。
二、全栈能力,不是每一层都亲手写

Coding Agent 可以同时修改用户界面、应用逻辑和数据访问代码。
但系统是否真正成立,仍然取决于工程师能否回答一系列跨层问题:
身份如何穿过不同边界? 状态究竟保存在哪里? 同步与异步怎样配合? 数据如何持续保存? 一次改动如何被完整验证?
所以,全栈能力不再只是“每一层都会写”。
更重要的是:
当任何一层发生变化时,知道整个系统会发生什么。
三、代码可以重新生成,数据很难重来

软件建立在数据之上。
代码结构可以被快速重写,数据模型、历史记录、访问方式和隐私义务却很难重新开始。
Agent 可以依据现有结构生成代码,但它未必知道:
一条数据在业务中真正代表什么; 哪些历史关系不能被破坏; 哪些信息必须保留或删除; 哪些访问受到隐私和治理约束。
很多关键上下文,从来没有完整写进需求、代码或文档。
这也是企业使用 AI 时最容易忽略的问题:
Agent 不知道的,往往正是企业没有说出来的。
因此,管理数据不只是选择哪一种数据库,而是保护软件系统中最难重新建立的基础。
四、好架构不是标准答案,而是阶段答案

同一个系统,在不同阶段需要不同的架构。
原型阶段,最重要的可能是速度、简单和快速学习。
第一次进入生产,关注点会转向可靠性、安全性和可运行性。
当规模扩大以后,容量、隔离和效率又会成为新的约束。
因此,架构不是找到一个永远正确的形状。
真正的工程判断是:
知道什么时候,系统必须改变形状。
Agent 可以快速生成一种架构实现,却无法仅凭技术知识判断企业当前最需要优化什么。
决定取舍的,始终是具体的应用场景、项目阶段、风险水平和业务后果。
五、Happy Path 能跑,不代表系统可靠

Agent 很擅长完成正常路径:
请求进入,程序处理,然后返回成功。
但企业系统真正困难的部分,通常隐藏在正常路径之外:
输入不合法怎么办? 外部依赖失效怎么办? 权限越界怎么办? 请求超时怎么办? 一个局部故障会不会拖垮整个系统?
可靠性并不是保证系统永远不失败。
它要求失败能够被发现、被隔离、被恢复,并尽可能在进入生产之前暴露。
AI 可以帮助工程师更早发现问题。
但理解风险、判断优先级、控制影响范围并确认修复结果,仍然依赖安全和工程知识。
六、代码上线,工程才真正开始

当代码进入生产环境,企业还要持续完成一整套工作:
安全发布、运行观察、异常告警、事件响应、容量管理、复盘改进,以及技术债控制。
生产环境不是软件最终抵达的终点,而是一个持续运行的闭环。
Agent 可以生成一次变更。
企业必须承担这次变更进入生产后的全部结果。
七、五项能力背后,是同一个“决策层”

如果把 Andrew 的五项能力重新排列,我们会发现,它们都在回答同一个问题:
系统应该如何取舍?
这里的“决策层”,是「AI进企业」在 Andrew 原文基础上的进一步提炼,并非 Andrew 提出的原始模型。
一个完整的工程决策,可以分成三层。
第一层是应用上下文:
用户是谁、负载多大、风险多高、涉及哪些隐私、项目处于什么阶段,以及失败会带来什么业务后果。
第二层是工程取舍:
延迟、可用性、一致性、可靠性、可维护性、简单性和成本之间,应该如何平衡。
第三层才是 Agent 生成的实现:
代码、配置、测试和基础设施。
Agent 只能优化它已经看见的约束。
软件工程知识的作用,是把隐藏在业务、数据和生产环境中的要求,转化为 Agent 可以执行的明确决定。
所以,工程能力首先不是“知道怎样写”。
而是知道:
这里存在一个必须做出的决定。
最危险的不只是 AI 写错代码。
而是它替企业做出了一个决定,而人甚至没有意识到自己本应参与其中。
八、企业需要升级的,不只是 Coding 效率

如果企业只用代码数量、提交次数和开发速度衡量 AI 的价值,很容易得到一个局部正确、整体危险的结果:
代码产出增加了,工程责任却没有同步升级。
真正需要建设的,是一套能够配合 AI 工作的工程系统:
说清业务与技术约束; 让关键决定可以被看见; 为验证结果留下证据; 明确生产环境的责任归属; 为高风险变化建立必要的审核路径; 形成团队可以共同使用的工程标准。
Coding 正在下沉。
Engineering Judgment 正在上移。
AI 接管越来越多的实现,企业必须承担越来越清晰的判断。
这可能才是 Coding Agent 进入企业以后,软件工程真正发生的变化。
——
AI进企业 · 04 Software Engineering Fundamentals
来源:Andrew Ng,AI Engineering Skills Map 系列 原始内容:Andrew Ng 原帖
下一篇|AI进企业 · 05
Using Coding Agents
当执行可以交给 Agent,人应该如何管理上下文、规划、自治程度、介入时机和验证过程?