资讯动态

Coding Agent时代:软件工程基础决定工程师新价值

发布时间:2026/9/6 10:50:32 来源:尧图企业网站定制
1. 技能图更新背后Coding Agent 不是一个新玩具而是一个新工种吴恩达的 AI 工程技能图又更新了。这次更新的核心命题很有意思在 Coding Agent 大规模落地的当下软件工程基础到底还重不重要先说结论不是不重要而是它的存在形式变了从“会写代码”变成了“会判断代码”。如果你期待的是“以后不用学编程了”那可能会失望如果你担心“AI 要取代程序员了”那方向也偏了。真实发生的变化是工作流被重排、能力栈被重排、甚至“工程师”这个角色的日常职责都被重排了。我为什么对这件事这么上心因为过去一年我所在的技术团队已经在真实项目里深度使用 Coding Agent——不是拿它写个冒泡排序演示而是让它参与业务模块开发、测试用例生成、接口联调甚至线上问题排查。走完这一轮之后再看吴恩达更新的技能图很多当初朦朦胧胧的感觉才真正落了地。先说一个大家最容易混淆的点Coding Agent 和之前的 AI 编程助手比如自动补全、代码生成插件根本不是一回事。传统 AI 编程助手的工作模式是“你写一行它补一段”本质是一个超级智能的输入法。它没有任务概念不知道你为什么要写这段代码也不关心这段代码会不会破坏其他模块。它的工作边界就是光标的上下文。Coding Agent 不一样。它是以“任务”为单位工作的。你给它一个目标描述它自己拆解步骤先读哪些文件、改哪些文件、跑什么测试、遇到报错怎么处理、最后如何验证。它具备多文件编辑能力、命令行调用能力、测试执行能力。这意味着它已经不只是“帮你写代码”而是“替你执行一部分工程任务”。这正是吴恩达技能图变化的关键背景。他在新技能图里把整个 AI 工程师的成长路径重新做了分层。最底层的那些东西恰恰是很多人以为“可以不用学”的软件工程基础。我记得吴恩达在一次分享里提过一个观点大意是AI 不会让软件工程消失而是让软件工程变成 AI 时代的核心素养。这个观点当时争议很大因为很多人理解的是“AI 能写代码了那写代码的能力就不值钱了”。但用一年多的实战经验来看吴恩达是对的而且他说得还太客气了——真相是软件工程基础决定了你到底是在驾驭 Coding Agent还是在给 Coding Agent 当测试员。2. 为什么“判断力”取代“敲代码”成为新的分水岭Coding Agent 时代初级工程师最常见的状态是什么是把任务描述写给 Agent然后 Agent 生成代码复制过来一跑好像能跑通就提交了。这个流程听起来效率很高但细想一下这个过程中工程师到底做了什么他只做了一件事确认“看起来没有报错”。但这个“确认”恰恰是最危险的一环。代码能跑通和代码是对的是两个完全不同的概念。我以前带过一个项目一个模块的数据处理逻辑新来的同事用 Agent 生成了一版代码测试用例跑一遍全绿就合进去了。结果上线后某个边界数据触发了一个隐藏问题排查了两个小时最后发现是 Agent 生成的处理逻辑里对空数组的处理方式不符合业务预期。你说这个责任在 Agent 吗不在。Agent 只是忠实地把需求翻译成了代码如果需求本身有隐含条件没有说清楚Agent 没有能力去“体会”你没说出来的那部分。而一个有经验的工程师看到这段代码的时候会本能地问一句如果这个数组是空的怎么办如果这个值是 0 怎么办如果这个调用超时了怎么办这些“本能”就是软件工程基础的产物。吴恩达的技能图里底层依然是那几大块数据结构与算法、系统设计、调试排错、测试策略、版本控制、代码评审。这些内容在十年前是计算机专业学生的必修课在今天依然是必修课但学习的“姿势”变了。以前学数据结构是为了能在面试里手写一个红黑树或者是为了在代码里自己实现一个队列。现在学数据结构是为了在 Agent 生成一段用列表硬写搜索逻辑的代码时你能判断出“这里应该用哈希表数据量大一点性能会差两个数量级”。以前学系统设计是为了能从零画出一套高可用架构图。现在学系统设计是为了把任务拆分成 Agent 能理解、能执行的子任务并判断它给出的方案里哪些地方会在高并发下变成瓶颈。以前学调试排错是为了自己能从堆栈信息里揪出 bug。现在学调试排错是为了在 Agent 告诉你“测试全通过”的时候你还能意识到测试全通过不代表边界条件都覆盖了不代表异常路径都处理了不代表并发场景下没有竞态问题。这个转变的本质是什么是从“生产者”转向“评审者”和“决策者”。敲代码的体力活被 Agent 接管了但“这段代码该不该这么写”“这个方案有没有更好的替代”“这里会不会埋雷”这些脑力活反而成了工程师的核心产出。我见过一个反面案例。有个开发者在没有系统学过数据库索引原理的情况下让 Agent 给一个查询频繁的接口生成优化方案。Agent 给出的建议是加索引。他照做了结果加了三个索引之后写入性能反而下降了一半因为他对覆盖索引、最左前缀这些概念没有概念加了两个冗余索引。这个案例里Agent 错了吗没有Agent 的建议从单条 SQL 的角度是合理的。问题出在工程师没有能力判断这条建议在整体数据库负载下是否合理。这就是软件工程基础缺位的代价。3. 工程化基础设施Agent 发挥能力的前提而不是可选项Coding Agent 能力的上限在很大程度上取决于你给它搭的“环境”上限。我这里的“环境”不只是指硬件环境和模型参数更指一套完整的工程化基础设施版本控制怎么组织、CI/CD 流程是否顺畅、测试覆盖率高不高、日志链路完不完整、代码评审的规范是什么、监控告警能不能在第一时间发现问题。很多团队引入 Coding Agent 之后的第一反应是赶紧让 Agent 多写代码提高交付速度。但做了一段时间之后发现代码量是上去了返工率也跟着上去了。原因很简单Agent 写的代码没有经过足够严格的工程化关卡质量好坏全靠运气。举一个我们团队的真实场景。我们当时让 Agent 帮忙实现一个第三方支付回调的接入模块。Agent 很快生成了主体代码签名校验、订单状态更新、异常重试机制都写了。但我们有严格的 CI 流程代码提交后会自动跑测试、做静态检查、检查代码覆盖率。结果 Agent 生成的这段代码单测覆盖率只有 60%关键的异常分支根本没有走到。如果不是 CI 卡住了那一次提交这段代码很可能就带着隐患上线了。这个例子说明什么说明在 Coding Agent 时代工程化基础设施不是一个背景板而是 Agent 产出的质检防线。没有了这些防线你就相当于让一个写得飞快但偶尔会犯糊涂的实习生直接往生产环境提交代码而且没有任何人做 Code Review。所以我把工程化基础设施理解为“Agent 的上下文和验收标准”。先说“上下文”这部分。Agent 的能力受限于它能“看到”的信息。如果你的项目没有良好的文档、清晰的代码结构、合理的模块划分Agent 接到任务后就像是进了一个杂物间找东西很难快速定位该改哪个文件。反过来如果你的项目结构清晰、命名规范、注释到位Agent 就能高效地理解现有代码生成的代码风格也会更贴近项目整体。再说“验收标准”。我给团队定的规矩是Agent 生成的代码必须通过和人类工程师一样的验收流程——代码评审、单元测试、集成测试、性能检查、安全扫描。这些标准本身就是工程化基础设施的一部分。没有这套标准你无法回答“Agent 这次的产出到底行不行”这个问题。有了这套标准Agent 的输出质量就变成了一个可控变量而不是碰运气。版本控制这块也值得多说一句。我经常看到一些开发者用 Agent 生成代码后不管三七二十一直接把整个工作区的代码一次性提交。这其实是非常危险的习惯。因为 Agent 可能同时改了好几个不相干的文件一次提交会把多个逻辑混在一起后期回溯的时候根本分不清哪次改动的目的是什么。正确的做法是让 Agent 每完成一个独立子任务就进行一次小粒度的提交然后检查 diff确认没有夹带不相关的内容。这个习惯的重要性很多人要到项目回滚或者排查线上问题时才会真正体会——但那时候往往已经晚了。工程化基础设施做得越好的团队Coding Agent 发挥的效用越高这是我在多个项目里反复验证过的规律。4. 同一个团队里有基础和无基础的人三个月后差距有多大光讲道理容易让人觉得空洞。我来说一个我们团队实际经历过的情况。我们是 2024 年年初开始大规模引入 Coding Agent 的。当时团队里有两位背景截然不同的开发我们暂且叫他们小 A 和小 B。小 A 是科班出身数据结构、操作系统、计算机网络这些课程学得都比较扎实毕业后做了三年后端开发。小 B 是半路转行参加了一个为期半年的培训班主要学的是框架的使用方法基础理论相对薄弱。刚引入 Coding Agent 的那个月两人的表现几乎没有差距。甚至小 B 的效率看起来还更高一些——因为他更依赖于 Agent 生成完整代码而小 A 习惯先想清楚再写经常跟 Agent 反复确认方案看起来“磨蹭”了不少。三个月之后差距开始出现了。有一次团队接到一个需求需要把现有系统里的定时任务模块重构一遍以解决任务重复执行的问题。小 A 负责的是订单超时处理任务小 B 负责的是数据清理任务。小 A 的做法是先让 Agent 梳理现有代码里所有定时任务的触发机制然后自己画了一张状态流转图确认问题出在任务没有做分布式锁接着拆解任务让 Agent 分别实现锁机制、任务幂等、异常恢复三块逻辑最后补了一轮并发场景的测试用例。小 B 的做法是直接告诉 Agent“我们有个定时任务会重复执行帮我修一下”。Agent 给出的方案是在方法入口加一个标志位用一个静态变量判断当前是否已经在执行。这个方案在小规模部署下确实看不出问题但一旦扩展到多实例部署静态变量的判定机制就完全失效了任务照样重复执行。你说这是 Agent 的锅吗不是。Agent 理解不了“重复执行”背后的分布式语义它只能基于字面意思给出一个看起来合理的方案。而小 B 的问题在于他没有能力识别这个方案在两个关键场景下的局限。还有一次一个线上接口突然变慢需要定位瓶颈。小 A 通过日志链路定位到是一个数据库查询慢进一步排查发现是 Agent 之前生成的一段代码里用了一条没有命中索引的查询语句并且在一个循环里反复执行了 N 次。小 B 面对同类问题第一反应是把堆栈信息贴给 Agent让 Agent 猜原因。Agent 猜了几个方向都不是症结所在最后折腾了大半天才发现是另一个团队发布的新版本改了接口响应结构导致大量重试请求堆积。这两个案例里小 A 和小 B 的工作效率在前三个月表面上是接近的但工作深度完全不同。小 A 是在利用 Agent 的力量放大自己的工程判断力小 B 是在用一个“超级搜索框”碰运气。三个月这个时间点很关键——前期的小需求、简单需求碰运气的成功率挺高一旦进入重构、排障、性能优化这类需要系统性思维的场景差距立刻暴露无遗。后来我把团队的使用方式调整了一下所有 Agent 生成的关键模块代码必须经过交叉 Code Review审查者重点关注并发、边界、异常路径这三个维度。执行一段时间后代码质量确实有了明显回升但也暴露了一个现实如果团队里没有人具备这些维度的判断力交叉评审也只是走个形式。软件工程基础在 Coding Agent 时代不仅没贬值反而成了放大 Agent 杠杆作用的支点。没有这个支点Agent 的力量越大造成的混乱可能也越大。5. 新技能图的增量部分提示工程、评估方法、安全边界一个都不能少吴恩达这次更新技能图除了保留软件工程底层基础还明显加重了几个新板块的分量。这也是整个技能图最值得琢磨的地方。第一个增量是“提示工程”和“上下文工程”。注意这里说的提示工程不是“跟 AI 说好话”这种段子层面的东西而是一个严谨的结构化技能。比如如何把含糊的业务需求拆解成清晰的任务描述如何提供足够的上下文让 Agent 少走弯路如何在多轮对话里不断收敛方向如何通过示例输入输出来约束 Agent 的行为。有一个很实用的经验写提示词的时候不要只写“做什么”要写“约束条件”。比如“实现一个订单导出功能”这是一个模糊描述。约束条件版本应该是“实现一个订单导出功能支持按时间和状态筛选导出的 CSV 文件需要带表头单次导出数量上限为 5 万条内存占用不可超过 200MB超时时间 30 秒”。Agent 拿到后者生成的代码质量会高一个档次因为它的试错空间被大幅压缩了。第二个增量是“评估与测试”方法论。以前我们评估代码质量靠 Code Review 和测试用例现在还要多一层评估 Agent 生成内容的准确性。这其实是一个 AI 原生时代的新问题——Agent 生成的代码测试通过但业务逻辑理解错了怎么办我现在的做法是“双轨验证”。第一轨是逻辑验证人工审查 Agent 对需求的理解是否正确第二轨是工程验证用测试、静态分析、性能测试来兜底。这两条轨道缺一不可。如果把评估完全交给测试测试通过不代表业务语义正确如果把评估完全交给人工效率又回到了原地。第三个增量是“安全与可靠性”。Coding Agent 时代的安全问题比传统开发更隐蔽。传统开发的漏洞是代码层面的审查代码可以发现。Agent 生成的代码可能引入新的漏洞模式比如不安全的第三方依赖、不合理的权限设计、对用户输入的过滤不彻底等等。如果你不具备安全基础很难在 Agent 产出的代码里发现这些隐患。举一个我们实际踩过的例子。有次团队让 Agent 生成一个文件上传功能Agent 给出的代码里没有限制上传文件类型也没有校验文件大小上限。功能跑起来没有问题但一旦暴露在公网环境攻击者可以上传恶意文件。这就是典型的安全边界缺失。有经验的工程师看到代码的第一眼就会问上传路径有没有做隔离文件类型有没有白名单文件大小有没有限制这些问题的背后都是多年的安全积累。所以吴恩达技能图里新增的内容并不是对原有基础的替代而是在原有基础上叠加的新的能力层。这个结构其实传递了一个非常清晰的信号AI 工程师的成长曲线不是变短了而是变得更多维了。以前可能只要深耕软件工程一个维度现在还需要具备模型认知、数据感知、评估设计、安全判断等多方面的素养。听起来压力很大但换个角度想这恰恰是机会。正因为技能栈变多、变深了单纯的经验积累才有更稀缺的价值。6. 我的建议与其焦虑被替代不如花时间打磨这几项底层能力聊了这么多行业趋势和团队观察最后落回个人层面如果你现在准备入行或者正在行业内最值得花时间打磨的是哪些能力我的排序是这样的调试能力 系统设计思维 测试思维 代码评审能力 快速学习能力。这五项不是按重要性排的而是按“练习性价比”排的。调试能力排第一是因为在 Coding Agent 时代Agent 会不断给你制造“看起来没问题但实际有问题”的代码而定位问题的能力恰恰是从代码到系统的翻译能力。一个优秀的调试者能从一个异常日志快速倒推出整个调用链路上哪个环节出了偏差这种能力在 Agent 生成的代码量越大时越显得珍贵。系统设计思维排第二是因为 Agent 擅长写“局部正确”的代码但不擅长保证“全局合理”。一个模块在孤立环境下看起来没问题放进整个系统里可能就成了瓶颈或者隐患。系统设计思维就是让你具备“站在高处看全局”的视角。测试思维排第三是因为 Agent 时代最大的风险不是“代码写不出来”而是“不知道代码对不对”。如果你能设计出高质量的测试用例覆盖业务的关键路径和异常路径就能有效约束 Agent 的输出质量。换句话说测试能力是你驾驭 Agent 的重要抓手。代码评审能力排第四是因为它和测试思维互补。测试是自动化验证评审是人工判断。两者结合才能构建完整的质量防线。快速学习能力排第五是因为这个领域的变化速度实在是太快了。今天的主流工具三个月后可能就变成了旧版本今天的最佳实践半年后可能就被新的方法论颠覆。保持学习能力才是应对变化最底层的底气。最后分享一个我一直在实践的做事方式让 AI 做执行者让自己做决策者。具体来说我会用 AI 完成重复性高、模板化程度高的编码工作比如接口封装、CRUD 骨架、测试脚手架、数据库迁移脚本这些任务的模式明确错误的影响范围可控。但是对于涉及核心业务逻辑、性能敏感路径、安全边界、数据一致性保障的部分我会自己先把方案想清楚再用 AI 来加速实现。这种分工方式既保证了对 Agent 效率的充分利用又把关键决策牢牢抓在自己手里。用一句话总结我的态度Coding Agent 不是用来替代工程师的它是用来倒逼工程师变得更强的。那些在 AI 时代依然能保持高价值的工程师不是代码写得最快的而是最能准确判断“什么是对的代码”的人。而这种判断力的来源恰恰是你以为“已经没必要学”的软件工程基础。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价