昊梵体育网

吴恩达(Andrew NG):Agentic Coding 时代,软件工程的基本功变了吗? 即使你用编程 Agent 帮你写出全部代码,理解软件工程的基础仍然很重要——它能帮助你在需要权衡取舍时引导你的 Agent(或者至少让你意识到存在哪些取舍)。即使你在做 AI 应用开发,AI 的核心逻辑也往往嵌套在一个更完整的软件系 ​

吴恩达(Andrew NG):Agentic Coding 时代,软件工程的基本功变了吗?

即使你用编程 Agent 帮你写出全部代码,理解软件工程的基础仍然很重要——它能帮助你在需要权衡取舍时引导你的 Agent(或者至少让你意识到存在哪些取舍)。即使你在做 AI 应用开发,AI 的核心逻辑也往往嵌套在一个更完整的软件系统中运行,而一个有经验的工程师会主动去塑造这个系统。

只会 vibe coding、不懂基础的新手能做出简单的应用,但这往往会带来问题:编程 Agent 可能在延迟、可用性、一致性、可靠性、可维护性、简洁性和成本这些维度上做出糟糕的权衡。大多数情况下,开发者自己都不知道这些权衡的存在,因此也不知道如何引导 Agent 做出适合自身应用场景的正确决策。

以下这封信基于我们对"AI 工程技能"的研究,总结了软件工程师最重要的知识领域。它要求你在这五个方向具备能力:全栈应用开发、数据管理、系统设计、安全与可靠性、生产环境的扩展与运营。

1. 全栈应用开发

Agentic coding 让很多原本只专注某一角色的开发者(比如前端或移动端)有机会扮演更宽泛的全栈角色。编码 Agent 可以协助你不熟悉的开发环节,但了解整个技术栈的实际运作方式依然至关重要。

熟练的开发者理解前后端系统的核心组件和关键概念:UI 组件、缓存、页面渲染、API 的选择与设计、认证鉴权、状态与会话管理、异步处理、数据持久化、测试、安全性和无障碍访问。

2. 数据管理

数据值得特别重视,因为它是构建一切软件的底层基石,而且一旦选定就很难改动——就算有 Agent 帮忙,迁移也不容易。

懂得管理数据的开发者能够分析数据的访问模式,并据此决定存什么、存多久。他们能选择合适的模型和存储类型(关系型表、文档数据库、键值存储、图数据库等),而这直接决定了系统的速度、可扩展性、可用性、可靠性和成本。他们理解事务和并发的原理,确保数据干净、一致、时效准确。在需要时,还能保障隐私、合规和治理要求。同时知道如何管理数据的完整生命周期。

随着应用的演进,你也得随之调整数据架构。数据管理的决策需要大量人为提供的上下文信息。你的 AI 系统会从你的数据源获取输入上下文,如果数据架构选得不好,AI 就会出现"不知道自己不知道"的情况。这也是为什么需要懂行、擅长 AI 工程的工程师来做正确的选择——也就是你。

另外,为 Agent 而不是传统软件或人类来构建数据基础设施,这是一个快速演进的领域,你需要随着行业实践不断更新自己的方法论。

3. 系统设计

理解了全栈各个组件之后,你才能更有判断力地决定如何把各部分组装在一起。好的系统设计需要先搞清楚目标是什么——用户量多大?对延迟有多敏感?成本控制是否关键?——然后才能在前后端部署边界、系统拆分粒度、应用状态存放位置、架构选型(单体还是微服务)等方面做出合适的决策。同时还要选择技术栈(编程语言、运行时框架、前后端框架、数据技术方案),有些时候需要通过实验评估多个方案后再拍板。

更重要的是,没有一劳永逸的架构。初期做原型用的简单架构未必是首个生产系统的最优解,首个生产系统的架构也不会一直适用到规模化阶段。做出这些判断需要你对软件组件和应用场景都足够熟悉,才能设计和持续演进合理的架构。

4. 安全和可靠性

要做到系统可靠,就得掌握验证手段:单元测试和集成测试怎么搭配、用什么框架、覆盖率达到多少。你还需要围绕故障做设计——比如 API 被限流了怎么办?如何做优雅降级?怎么最小化一次故障的影响范围?

此外,安全也在向前移。越来越多的开发者开始采用"安全左移"的思路,在开发生命周期早期就考虑安全问题,而不是先写代码再回头加固。就像所有开发者在向全栈发展一样,现在许多开发者也要兼顾一部分安全工作。你可以用 AI 工具扫描代码漏洞、检测依赖的供应链注入风险、审查云配置的攻击面,但这些活儿要做好,还是需要有一定的安全知识储备。

5. 生产环境中的扩展与运营

要为真实用户提供服務,你就必须把软件部署到生产环境中。了解软件开发流程(SDLC)会很有帮助——不仅包括构建和测试,还包括部署环境配置、发布策略选择、CI/CD 自动化部署、以及对 IaaS 的理解。

上线后还要搭建可观测性体系、设置告警、处理线上事件。要让应用真正扛住用户量增长,你得理解真实负载情况,掌握服务端扩容、流量负载均衡的方法,必要时通过分片、索引、副本等手段改造数据基础设施,或者对架构进行更大范围的调整。此外,版本控制、代码审查、依赖维护和债务管理等编码规范习惯,也帮助你持续地迭代和维护系统。

写在最后

Coding Agent 改变了我们构建软件的方式——这一点毫无疑问,即便不含任何 AI 组件的软件也是如此。一些编程知识,比如死记语法细节,正在变得不重要。但最终,那些深刻理解软件工作原理的开发者,一定会比只凭直觉 vibe coding 的人表现得更好。

除了 AI 之外,掌握软件工程基本功还能帮你认清"软件能做到什么、做不到什么"——这是你使用编程 Agent 时的关键判断依据。这个话题我会在接下来的两封信里继续展开。

how i ai 程序员