夜雨聆风学习资料网

ARTICLE · 993909

吴恩达《AI工程技能地图》深潜:软件工程基础

吴恩达《AI工程技能地图》深潜:软件工程基础

吴恩达《AI工程技能地图》深潜:软件工程基础

——代理式编程时代,软件工程基本功如何变化?五大核心能力解析

核心速览:吴恩达(Andrew Ng)发布《AI工程技能地图》系列之"软件工程基础"篇。核心观点:即使你用编码 Agent 写所有代码,理解软件工程基础依然至关重要——它是你"驾驶"编码 Agent 的舵盘,决定你能否引导 Agent 在延迟、可用性、一致性、可靠性、成本之间做出正确权衡。文章提出软件工程基础的五大核心能力:构建全栈应用、管理数据、设计系统架构、让系统安全可靠、规模化与生产运维。

一、引言:为什么用了编码 Agent,还要懂软件工程?

一个直击灵魂的问题:当编码 Agent 能写出所有代码时,软件工程基本功还有用吗?

吴恩达的回答是:不仅有用,而且是必需的。即便你让编码 Agent 代写全部代码,理解软件工程基础依然是引导 Agent 做出你想要权衡的前提——甚至,是你"知道存在哪些权衡"的前提。

此外,当你构建 AI 应用时,AI 核心往往是通过一个更广泛的软件应用来承载的。这个应用本身,需要你去参与构建、去塑造。

二、不懂软件基础的"Vibe Coding":危险的权衡盲区

一个不懂软件工程基础的初学者,用 Vibe Coding(随性编程)也能做出简单的应用。但问题在于:这常常导致编码 Agent 在延迟(latency)、可用性(availability)、一致性(consistency)、可靠性(reliability)、可维护性(maintainability)、简单性(simplicity)和成本(cost)之间做出糟糕的权衡。

原因很简单——这位开发者根本不知道这些权衡的存在,自然也就不会去引导 Agent 针对自己应用的上下文做出正确决策。

三、软件工程基础的五大核心能力

基于吴恩达团队对 AI 工程技能的研究,软件工程中最值得掌握的知识,要求你具备五项能力:

1. 构建全栈应用(Building full-stack applications)
2. 管理数据(Managing data)
3. 设计系统架构(Designing system architectures)
4. 让系统安全可靠(Making systems secure and reliable)
5. 规模化与生产运维(Scaling and operating in production)

四、技能一:构建全栈应用

Agentic Coding(代理式编程)让许多过去只做单一专精角色的开发者——比如前端开发者、移动端开发者——得以承担更宽广的全栈角色。编码 Agent 可以帮你处理开发流程中你不那么熟悉的环节。

但关键在于:理解全栈究竟如何运转,依然重要。

熟练的开发者理解前端与后端系统的关键组件与概念,包括:

- UI 组件
- 缓存
- 页面渲染
- API 的选择与设计
- 认证
- 状态与会话管理
- 异步处理
- 数据持久化
- 测试
- 安全
- 可访问性

五、技能二:管理数据

数据值得特别关注,因为它是软件的地基——相对难以改变(即便有 Agent 帮你做迁移)。

当你懂得管理数据,你能够:

- 思考访问模式(access patterns),据此决定存什么、存多久;
- 识别正确的数据模型,选择合适的存储类型(关系表、文档、键值、图)与基础设施——这直接影响速度、可扩展性、可用性、可靠性与成本;
- 理解事务、并发,确保数据干净、一致、新鲜;
- 在必要时保障隐私、治理与合规;
- 管理数据生命周期。

随着应用演进,你还要懂得让数据架构随之演进。管理数据需要大量由人提供的上下文——你的 AI 系统将从你的数据源获取输入上下文,如果数据架构选得糟糕,AI 就会"不知道自己不知道什么"。 这正是需要既有相关上下文、又精通 AI 工程的人——也就是你——出手干预的原因。

如何为 Agent(而非仅面向传统软件或人类)构建数据基础设施,也是一个快速演进的领域,你需要随着领域发展不断调整最佳实践。

六、技能三:设计系统架构

当你理解了软件与数据全栈的主要组件,你就更有能力决定如何把它们组装起来。

好的系统设计,要求你先理解软件的意图——多少用户?延迟有多重要?成本有多重要?——然后才能做出选择:

- 应用平台
- 前端与后端的边界
- 系统分解(decomposition)
- 应用状态放置
- 架构粒度(单体 vs 微服务)

你还要选择技术栈(编程语言、运行时、组件/前端/后端框架、数据技术)——有时需要通过运行实验评估选项,再最终敲定。

更进一步,正确的架构是一个移动的目标,取决于项目所处的阶段:快速原型阶段的简单架构,未必适合第一个生产系统;生产系统跑起来之后,随着应用规模化,架构可能还要再变。做出这些决策,需要你对软件组件与应用上下文都有深入的技术理解,才能设计出——并持续演进——更好的权衡架构。

七、技能四:让系统安全可靠

构建可靠系统,你要知道如何制定测试策略来验证系统正确性:单元测试与集成测试各占多少、用什么测试框架、覆盖率定在什么水平。

你还要懂得围绕可能的故障做设计——如何处理故障(比如 API 触发限流)、构建优雅降级(graceful degradation)、把故障的爆炸半径(blast radius)最小化。

此外,与其先写软件、之后再补安全,"左移(shift left)"运动正把安全工作提前到生命周期更早的阶段(在传统项目时间轴上更靠左的位置)。就像所有开发者都在向全栈开发者进化一样,许多开发者现在也同时兼任着部分安全工程师的职责。

如今你可以用 AI 工具扫描代码漏洞、检查依赖中是否存在供应链注入、审查云配置的攻击面。但要做好这些,你依然需要一定的安全知识。

八、技能五:规模化与生产运维

要服务真实用户,你必须知道如何把软件部署到生产环境。你需要懂得执行软件开发生命周期(SDLC)——除了构建与测试,还包括:

- 配置部署环境
- 决定发布策略
- 应用部署自动化(CI/CD)
- 理解基础设施即服务(IaaS)

生产运维要求你部署可观测性(observability)工具、设置告警、管理事故(incident)。最后,要让应用规模化,你应当理解真实负载,知道如何扩展服务器、做负载均衡、调整数据基础设施(通过分片、索引、复制),或通过架构调整让系统适应规模。

最后,掌握版本控制、代码审查、依赖维护、技术债务管理等编码最佳实践,能帮助你让系统持续演进。

九、结语:理解软件如何工作,比记忆语法更重要

编码 Agent 已经改变了我们构建软件的方式——包括那些完全不含 AI 组件的软件。编码知识中的一部分,比如记忆语法,正在变得过时。

但那些深刻理解软件如何工作的开发者,依然会远远胜过那些不理解就 Vibe Coding 的人。

理解软件工程基础(再加上 AI),还能帮你搞清楚软件能做什么、不能做什么——这决定了你如何使用编码 Agent、如何塑造构建(shaping the build)。吴恩达表示,这些话题将在后续文章中继续展开。

#AI工程#软件工程#吴恩达#AndrewNg#AgenticCoding#编码Agent#全栈开发#数据管理#系统架构

来源信息
原文推文(Andrew Ng @AndrewYNg):
https://x.com/AndrewYNg/status/2093388974194872781

原文 X Article《AI Engineering Skills Map: Software engineering fundamentals》:
https://x.com/i/article/2093384274372419585

发布于 2026-08-28,数据统计:224 回复 · 1319 转发 · 8357 点赞 · 13000 收藏 · 91.2万 浏览

相关学习资料