How have software engineering fundamentals changed with agentic coding? Here is our AI Engineering S...
TL;DR · AI 摘要
软件工程基础在代理式编码时代仍为核心,AI工程技能地图强调全栈能力、数据管理与系统设计的重要性。
核心要点
- 全栈开发能力是AI时代工程师必备技能,需掌握前后端系统关键组件。
- 数据管理需关注存储类型选择、生命周期控制及隐私合规要求。
- 系统架构设计直接影响软件的可扩展性、可靠性和成本控制。
结构提纲
按章节快速跳转。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- AI工程技能地图
- 全栈开发
- 前端组件/后端架构/API设计
- 异步处理/安全机制
- 数据管理
- 存储类型选择
- 数据生命周期
- 系统可靠性
- 可用性保障
- 一致性控制
金句 / Highlights
值得收藏与分享的关键句。
AI代理可能在缺乏人工指导时做出不良的延迟、可靠性与成本权衡。
数据存储类型选择(关系型/文档型)直接影响系统可扩展性与查询效率。
隐私合规要求需贯穿数据生命周期管理全过程,而非仅限于存储阶段。
Andrew Ng 在 X 上的推文: "智能体编程如何改变了软件工程的基础?这是我们关于软件工程基础的 AI 工程技能地图。https://t.co/cnRLj43DLs" / X
@AndrewYNg
智能体编程如何改变了软件工程的基础?这是我们关于软件工程基础的 AI 工程技能地图。
$
AI 工程技能地图:软件工程基础
智能体编程如何改变了软件工程的基础?即使你使用编码智能体来编写所有代码,理解软件工程基础对于引导智能体做出你想要的权衡决策(或至少知道存在哪些权衡)仍然至关重要。此外,当你构建 AI 应用时,AI 核心通常通过更广泛的软件应用来体现,而你可能需要参与构建或塑造这个应用。
那些不了解软件工程基础却盲目编码的初学者可以创建简单的应用,但这往往会导致编码智能体在延迟、可用性、一致性、可靠性、可维护性、简洁性和/或成本等方面做出糟糕的权衡决策。在这种情况下,开发者甚至不知道这些权衡的存在,因此无法引导智能体为应用的具体场景做出正确决策。
本文描述了我们对 AI 工程技能的研究结果,说明了软件工程中最重要的知识要点。这要求开发者具备以下能力:
- 构建全栈应用
- 管理数据
- 设计系统架构
- 保障系统安全与可靠性
- 生产环境下的扩展与运维
构建全栈应用。智能体编程使许多原本从事特定角色(如前端开发或移动开发)的开发者能够承担更广泛的全栈角色。编码智能体可以帮助你处理不太熟悉的开发环节,但理解全栈实际运作原理仍然至关重要。熟练的开发者了解前端和后端系统的关键组件与概念,包括 UI 组件、缓存、页面渲染、API 选择与设计、身份验证、状态与会话管理、异步处理、数据持久化、测试、安全性和可访问性。
管理数据。数据需要特别关注,因为它是软件构建的基础,且相对难以更改(即使智能体协助迁移)。当你掌握数据管理时,可以分析访问模式并据此决定存储内容及保留时长。你可以识别合适的数据模型,选择适当的存储类型(如关系表、文档、键值对或图结构)和基础设施,这反过来会影响速度、可扩展性、可用性、可靠性和成本。你理解事务处理、并发控制,并知道如何确保数据的清洁性、一致性与实时性。在需要时,你能够确保隐私保护、治理规范和合规性。你了解如何管理数据生命周期。
随着应用程序的演进,你也知道如何同步演进数据架构。决定如何管理数据需要大量人工提供的上下文信息。你的AI系统将从数据源获取自己的输入上下文,因此如果数据架构选择不当,AI系统将无法意识到自身的知识盲区。这就是为什么需要具备相关上下文知识和AI工程技能的专业人员(也就是你)进行干预,才能修正这些问题。为智能体而非传统软件或人类构建数据基础设施的领域也在快速发展,你应该随着领域演进持续调整最佳实践。
设计系统架构。当你理解软件和数据全栈的主要组成部分后,就能更好地决定如何将这些模块组合在一起。优秀的系统设计需要明确软件的预期功能(用户规模?延迟重要性?成本重要性?等),从而在应用平台选择、前后端边界划分、系统解耦、应用状态存储位置以及架构颗粒度(单体架构 vs 微服务架构)等方面做出决策。你还将选择技术栈(编程语言、运行时环境、组件/前端/后端框架、数据技术)——有时需要通过实验评估不同选项后再做决定。
此外,正确的架构是一个动态目标,取决于项目阶段。你最初为快速原型选择的简单架构可能并不适合构建首个生产系统,而随着应用规模扩大,这个架构本身也可能需要调整。做出这些决策需要深入理解软件组件和应用上下文,从而设计并演进架构以实现更优的权衡。
构建安全可靠系统。要构建可靠系统,你需要知道如何制定测试策略验证系统正确性:单元测试与集成测试的组合比例、使用的框架以及覆盖率等级。你也知道如何围绕潜在故障进行设计——如何处理故障(如API触发限流)、构建优雅降级机制、最小化故障影响范围。此外,"左移"(Shift Left)安全理念正在将安全工作提前到开发周期早期(传统项目时间轴左侧)。正如所有开发者都在向全栈开发者转型,许多开发者现在也承担了部分安全工程师的职责。你现在可以使用AI工具扫描代码漏洞、检查依赖项中的供应链注入风险、分析云配置中的攻击面。但要做好这些工作,仍然需要具备一定的安全知识。
生产环境的扩展与运维。要服务真实用户,你需要知道如何将软件部署到生产环境。了解软件开发生命周期(SDLC)的执行方法将带来显著优势,除了构建和测试外,它还包括部署环境配置、发布策略决策、部署自动化(CI/CD)实施,以及对基础设施即服务(IaaS)的理解。
在生产环境中运行需要部署可观测性工具、设置告警并管理事件。最后,要扩展应用,需要了解实际负载情况,并掌握如何扩展服务器、实现负载均衡以及调整数据基础设施(通过分片、索引、复制等技术),或通过架构调整使系统具备扩展能力。最终,理解版本控制、代码审查、依赖维护等编码最佳实践,以及如何管理技术债务,有助于持续改进系统。
编码代理改变了我们构建软件的方式,包括那些不包含任何AI组件的软件。一些编码知识——例如记忆编码语法——正在变得过时。但那些深刻理解软件运行原理的开发者,远远优于那些仅凭直觉编写代码而不理解其原理的开发者。
理解软件基础(除AI之外)还能帮助你判断软件能做什么和不能做什么。这使它们成为使用编码代理和构建系统时的重要背景信息。我将在未来的文章中进一步探讨这些内容。
/$
5:23 PM · Aug 28, 2026
1.1M
Views
310
1.5K
8.8K
14K