AI Engineering Skills Map: Software engineering fundamentals

原文地址:https://x.com/AndrewYNg/status/2093388974194872781

有了可代理化编程(agentic coding),软件工程基础发生了什么变化?即使你让 coding agent 写所有代码,也要懂软件工程才能做得对。它能帮助你给代理下达正确指令、做对 trade-off,也能让你在做决策前知道“有哪些 trade-off”。

当你在构建 AI 应用时,AI 的核心通常通过更完整的软件系统体现出来。你往往要参与这套系统的构建和“塑造”。软件工程基础是你能这样做的基础。

一个没打好基础的 vibe coder 可能能写出能跑的简单应用,但常常会把代理推向错误的权衡:如 latency、可用性、一致性、可靠性、可维护性、简单性和成本。问题不在于你不知道怎么写代码,而在于你不知道该提出什么约束。

这篇文章把这次 AI 工程调研里最重要的软件工程基础整理成五块:

  1. 构建全栈应用
  2. 管理数据
  3. 设计系统架构
  4. 打造安全可靠系统
  5. 扩展与生产运维

1. 构建全栈应用

Agentic coding 让过去更偏前端或移动端的开发者也能参与更完整的软件开发。coding agent 确实能帮你补齐一些不熟悉的部分,但你仍要理解前后端系统到底怎么运转。

有经验的开发者会理解全栈里关键组件和概念:UI 组件、缓存、页面渲染、API 的选择与设计、鉴权、状态与会话管理、异步处理、数据持久化、测试、安全性和可访问性。

2. 管理数据

数据是软件的基础,而且设计不当后续很难改。你懂数据之后,才能判断访问模式(access patterns),决定该存什么、存多久。

你会选择合适的数据模型和存储类型(关系型、文档型、键值、图数据库)以及配套基础设施。它会直接影响速度、扩展性、可用性、可靠性和成本。你还要理解事务和并发,保持数据的清晰、正确和及时更新;并在需要时做好隐私、治理和合规。

随着应用迭代,你也会让数据架构同步演进。是否改模型、改访问路径、改缓存方案,都要你来定。

AI 系统会从你的数据源拿上下文。如果数据架构选错,AI 会“有盲点”——不知道自己不知道什么。这个时候,必须有人用 AI 工程能力和业务语境来把这一层对齐。给 Agent 建数据基础设施,而不仅是给传统软件,仍在快速变化,需要持续迭代。

3. 设计系统架构

你理解全栈和数据后,才更能把模块拼起来。好架构要先看软件目标:有多少用户?延迟要求如何?成本上限是多少?

然后决定前后端边界、系统拆分、状态放在哪里、架构粒度(单体 or 微服务)。也要选择栈(语言、运行时、前后端框架、数据技术),有时还要先跑实验再定。

架构不是一次性答案。用于 MVP 的架构和第一版生产架构常常不同;系统上量后又会继续调整。这个迭代过程,需要你把软件能力和业务背景结合起来。

4. 打造安全可靠系统

可靠系统离不开测试策略。你要知道单测和集成测试怎么配,选哪些框架、要测到什么深度。

你还需要围绕失败设计系统:API 触发限流时怎么降级,故障如何隔离,如何把故障影响压到最小区域。

安全也在左移。不是软件写完再补安全,而是把安全前置到流程里。现在很多开发者也承担一部分安全职责,常用 AI 扫描漏洞、检查依赖供应链注入、复核云配置攻击面。

工具能给你提示,但最终仍是工程判断把工具建议落地为正确决策。

5. 扩展与生产运维

要服务真实用户,软件必须上生产。你得理解完整的软件开发生命周期(SDLC):不仅是开发和测试,还包括部署环境配置、发布策略、CI/CD 自动化和 IaaS 选型。

生产运维要有可观测性:日志、监控、告警和事故处理。要支撑大规模访问,你要读懂真实负载,掌握扩容、负载均衡,以及通过分片、索引、副本或架构调整来扩展数据层。

长期看,版本控制、代码评审、依赖维护和技术债治理这些“流程动作”,决定系统能不能持续演进。

结语

Coding agents 改变了我们的写码方式,也在影响非 AI 软件开发。背诵语法、拼接模板这样的“手工经验”正在变得不是最关键的竞争优势。

真正懂软件本质的人,仍然更有优势。软件工程基础能帮助你判断“软件能做什么、不能做什么”,并决定你如何用 coding agent、以及如何真正参与“定义产品”。