SOTA Sync
全部文章
Agent 设计2026-09-05

Agent 写代码后,更需要软件基本功

Andrew Ng 总结 AI 工程师必须掌握的五类软件能力:全栈、数据、架构、安全可靠性与生产运维。

当 Coding Agent 可以完成大部分代码,软件工程基本功还重要吗?Andrew Ng 给出的答案是:更重要了。

Agent 能把需求迅速变成代码,但它不会自动知道业务最在意什么。一个缺少软件基础的新手也能通过 VibeCoding 做出简单应用,却很容易让 Agent 在延迟、可用性、一致性、可靠性、可维护性、简洁性和成本之间做出错误取舍。更麻烦的是,开发者可能根本不知道这些取舍存在,也就无从纠正 Agent。

AI 应用也不只是一颗模型。真正交付给用户的产品,通常还包含前端、后端、数据、权限、部署和运维。即使 AI 是核心能力,它也必须通过一套完整的软件系统表达出来。因此,工程师的角色正在从“亲手写出每一行代码”,转向“理解系统并塑造 Agent 的决策”。

基于 AI Engineering Skills Map 的研究,文章把关键的软件工程能力归纳为五类。

#从专门岗位走向全栈视角

Agentic Coding 让原本专注前端、移动端或其他单一方向的开发者,有机会承担更广的全栈工作。Agent 可以补足不熟悉的环节,但开发者仍要理解整条链路怎样运转。

这包括 UI 组件、缓存与页面渲染,也包括 API 的选择和设计、身份认证、状态与会话管理、异步处理、数据持久化、测试、安全和无障碍。重点不是每个方向都亲手实现到专家水平,而是知道组件之间如何相互影响,出现问题时应该检查哪一层。

当 Agent 提议一种实现时,全栈视角能帮助开发者判断:逻辑应该放在前端还是后端,状态应该保存在客户端、服务端还是数据库,一次请求应同步等待还是异步处理。没有这些概念,Agent 给出的第一个可运行方案很容易被误当成正确方案。

#数据是最难返工的基础

数据需要被单独重视,因为它是软件的地基,而且通常比代码更难改变。即使 Agent 能协助迁移,错误的数据模型、缺失的历史记录和混乱的访问方式,仍会长期限制系统。

工程师要先理解访问模式,再决定保存什么、保存多久,以及选择关系表、文档、键值或图等哪种存储方式。这些选择会同时影响速度、扩展性、可用性、可靠性和成本。事务、并发、数据质量、一致性、新鲜度,以及隐私、治理和合规,也都属于同一个生命周期问题。

对 AI 系统来说,数据架构还有额外含义:模型和 Agent 的输入上下文本身就来自数据源。如果数据组织方式选择错误,AI 甚至不知道自己漏掉了什么。纠正这种盲区需要人提供业务背景,而不是继续增加 Prompt。

随着应用发展,数据架构也要跟着演进。面向 Agent 的数据基础设施仍在快速变化,不能把为传统软件或人工查询设计的最佳实践原样照搬,而要持续根据 Agent 的读取、检索和执行方式调整。

#架构不是一次性选型

理解软件全栈和数据之后,下一步是决定如何把各部分组合起来。好的系统设计从约束出发:有多少用户,延迟有多重要,成本上限在哪里,系统失败会造成什么后果。

这些条件决定应用运行在哪个平台、前后端边界如何划分、系统怎样拆分、状态放在哪里,以及应该使用单体还是微服务。语言、运行时、前端与后端框架、数据技术,也应该根据实际目标选择;必要时先用实验比较,再做决定。

正确架构还是一个移动目标。适合快速原型的简单方案,未必适合第一版生产系统;能够支撑早期用户的设计,规模扩大后也可能需要改变。架构能力不只是画出组件图,而是随着项目阶段变化,持续做出更合适的取舍。

#安全和可靠性必须提前设计

可靠系统需要明确的测试策略:单元测试和集成测试如何搭配,使用什么框架,覆盖到什么程度。还要提前考虑失败路径,例如外部 API 触发限流时如何处理,哪些能力可以降级,怎样把一次故障的影响范围压到最小。

安全也不能等软件写完再补。Shift Left 的思路,是把安全工作提前到开发生命周期更早的位置。随着开发者走向全栈,他们也在承担一部分安全工程职责。

AI 工具可以扫描代码漏洞、检查依赖中的供应链风险,并分析云配置暴露的攻击面。但工具只能发现候选问题;要判断风险是否真实、修复是否破坏系统,以及哪些边界必须防守,仍然需要安全知识。

#真正的软件要能上线、运行和扩展

为真实用户提供服务,意味着开发者必须理解生产环境。完整的软件开发生命周期不只有构建和测试,还包括配置部署环境、选择发布策略、使用 CI/CD 自动化,以及理解 IaaS 等基础设施能力。

上线之后,需要建立可观测性、设置告警并处理事故。规模增长时,则要根据真实负载扩容服务器、做负载均衡,并通过分片、索引、复制或架构调整扩展数据系统。

版本控制、代码审查、依赖维护和技术债管理同样重要。Agent 可以快速生成新代码,如果缺乏这些约束,代码增长速度越快,系统失控的速度也可能越快。

#被淘汰的是语法记忆,不是工程判断

Coding Agent 已经改变了所有软件的构建方式,不只影响带有 AI 功能的应用。记忆具体语法之类的知识正在变得不那么重要,但深刻理解软件如何运行的人,仍然会明显胜过只靠 VibeCoding 的开发者。

软件基本功还能帮助工程师判断一件事能否实现、应该怎样实现,以及代价是什么。未来的优势不再来自手工输入更多代码,而来自向 Agent 提供正确上下文、发现隐藏约束,并在多个可行方案之间做出符合应用目标的选择。