夜雨聆风学习资料网

ARTICLE · 1024257

AI 越会写代码,Engineering 越重要

AI 越会写代码,Engineering 越重要

AI 越来越会写代码。

它能生成前端页面、后端接口、数据访问逻辑和测试代码,也能跨越不同技术栈,完成一次看起来相当完整的修改。

于是,一个越来越现实的问题摆在工程师面前:

当 Coding Agent 可以写完大部分代码,人还需要掌握软件工程吗?

Andrew Ng 在 AI Engineering Skills Map 的第二项能力中,给出的答案并不是“软件工程不再重要”。

恰恰相反:

当代码生成变得容易,发现取舍、提供上下文和引导 Agent 的能力,反而会变得更加重要。

代码可以被生成。

但一个系统应该如何设计、如何运行、如何承担后果,不能被默认。

一、代码写完了,系统并没有自动成立

Andrew 将 Software Engineering Fundamentals 概括为五项能力:

  1. Building Full-stack Applications|构建全栈应用
  2. Managing Data|管理数据
  3. Designing System Architectures|设计系统架构
  4. Making Systems Secure and Reliable|构建安全、可靠的系统
  5. 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,人应该如何管理上下文、规划、自治程度、介入时机和验证过程?

相关学习资料

返回首页浏览学习资料