news 2026/9/6 10:50:23

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Coding Agent时代:软件工程基础决定工程师新价值

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 时代依然能保持高价值的工程师,不是代码写得最快的,而是最能准确判断“什么是对的代码”的人。而这种判断力的来源,恰恰是你以为“已经没必要学”的软件工程基础。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/6 10:47:07

ML-KWS-for-MCU源码评测:Cortex-M关键词唤醒架构与移植指南

把 ARM 官方开源的 ML-KWS-for-MCU 工程完整拆了一遍,从源码静态评测到整体架构梳理都做了一份记录。这个项目在边缘AI圈子里其实挺有名,但大多数资料只讲“怎么跑demo”,很少有人说清楚代码内部是怎么组织的、哪些地方容易踩坑。这篇文章把整…

作者头像 李华
网站建设 2026/9/6 10:46:30

通达信九转公式全解析:源码、原理与多周期实战用法

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/6 10:46:02

2026常德化工产品成分分析检测排名 TOP5 CMA 资质提供含量检测、纯度检测、元素分析 联系方式推荐

常德化工产品成分分析检测市场近年来机构林立、良莠不齐,化工企业、新材料厂商、日化生产工厂、橡塑制造业以及食品医药企业在研发质检时,稍有不慎便会筛选到无正规资质的检测机构,出具的成分分析报告不具备法律效力,无法通过市场…

作者头像 李华
网站建设 2026/9/6 10:45:23

RISC-V自定义指令实战:从编码设计到GCC/binutils/Spike全流程适配

1. 先弄明白一件事:自定义指令要从源码跑到CPU要过五道关卡 我最近一个项目需要在RISC-V核上做信号处理加速,标准ISA里翻遍了都找不到一条合适的乘累加指令,于是决定走自定义扩展这条路。刚开始我以为工作量重心在RTL编写上,结果真…

作者头像 李华
网站建设 2026/9/6 10:42:39

实时性能监控系统构建:从基础概念到生产实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/6 10:40:17

RK3588同源多任务调度实战:共享NPU与帧池的高效部署

做 RK3588 边缘 AI 最头疼的,往往不是单路模型跑不快,而是多路任务一起上时互相打架。这篇是这个系列的第 3 篇,前两篇我们把 RK3588 上的模型部署链路、单路视频的推理加速都过了一遍,这一篇专门聊聊“同源多任务调度”——也就是…

作者头像 李华