ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Coding Agent时代,为什么软件工程基础依然是硬通货?

Coding Agent时代,为什么软件工程基础依然是硬通货? 1. 从一张技能图说起Coding Agent 时代风口变了但地基没塌吴恩达更新 AI 工程技能图这件事在开发者圈子里讨论度很高。有人看完第一反应是“完了我学的软件工程是不是白学了”也有人觉得“看吧连吴恩达都说要会用 Coding Agent那我还啃什么编译原理”。说实话这两种理解都有点偏。先看这张技能图到底说了什么。它把 AI 时代的工程师能力拆成了四层从下往上分别是软件开发基础、系统设计、AI 工程、Coding Agent 使用。很多人只盯着最上面那层“Coding Agent 使用”觉得这才是新鲜货前面的老三层都不重要了。但恰恰相反最下面那层“软件开发基础”——也就是我们常说的编程语言、数据库、测试、代码库这些——依然被放在最底层也依然是最重的那个底座。为什么一张技能图能引起这么大动静因为吴恩达在这个领域有足够的影响力他的判断某种程度上代表了业界对 AI 编程趋势的主流认知。而这张图背后真正尖锐的问题是当 AI 能自动写出越来越多的代码我们这些靠写代码吃饭的人核心竞争力到底转移到了哪里软件工程这样一门传统学科在 Coding Agent 时代是被架空了还是换了种方式变得更值钱了这篇文章我想抛开那些浮在表面的焦虑把这张技能图拆开揉碎结合我自己在实际项目里用 AI 编程工具的体验聊聊软件工程基础在新的技术周期里到底扮演什么角色。也会给正在纠结“要不要补基础”“怎么补基础”的开发者一个我认为比较务实的参考路径。2. 技能图更新背后的信号不是推翻而是重新排序2.1 四层结构里每一层都在回答一个问题吴恩达这份技能图的四层结构信息量其实比表面看起来要大得多。我自己的理解是它不只是列了一份“该学什么”的清单而是重新定义了 AI 时代工程师的能力模型每一层都在回答一个具体的问题。第一层“软件开发基础”回答的是“你懂不懂代码本身”。这一层包括了编程语言、数据结构、数据库基础、测试方法、代码库操作。说白了就是传统软件工程教育里的核心内容。第二层“系统设计”回答的是“你能不能搭出靠谱的系统”。当代码量上来了并发、缓存、消息队列、分布式架构这些设计能力就会成为分水岭。第三层“AI 工程”回答的是“你懂不懂模型和应用如何结合”。提示词、RAG检索增强生成、微调、Agent 架构、AI 推理链路这些都是这一层的范畴。第四层“Coding Agent 使用”回答的是“你能不能高效地指挥 AI 帮你写代码”。注意一个细节第四层在最上面但它的权重不是最高的。吴恩达在这张图里传递的信号很明确——会调教 Coding Agent 确实是新技能但这东西是金字塔尖不是空中楼阁。没有底下三层的支撑最上面这层根本立不住。2.2 和上一版技能图对比变的不是核心而是辅助如果你看过吴恩达早前版本的 AI 工程技能图会发现这次更新最显著的变化是增加了“Coding Agent 使用”这一层并且把软件开发基础从原来笼统的“底层能力”做了更显眼的保留。这个变化很容易给人一种“Agent 编程成为主角了”的错觉但仔细想一下真正被推到台前的东西仍然是那一堆看起来没什么惊喜的“老知识”。我自己判断这次的更新与其说是一次技能体系的“升级”不如说是一次“重新排序”。原来我们写代码是先学基础、做设计、然后手动编码AI 只是偶尔用来补个全或者查个文档。现在的工作流变成了先理解需求、做系统设计然后通过 Coding Agent 快速生成代码草案再靠自己的工程能力去审查、测试、修正。于是“使用 Agent 的能力”被提到了台面上但它挤压的不是软件工程基础的位置而是压缩了“手动敲代码”这个环节的时间占比。打个比方这就像驾校里原来教你怎么手动挡换挡现在考试改自动挡了。换挡这个动作变得不重要了但交通规则、路况判断、安全意识这些东西反而因为你可以把更多精力放在驾驶本身而变得更重要了。软件工程基础的价值恰恰是在 Agent 接手了机械性编码之后才更加凸显出来的。3. Coding Agent 到底改变了什么写代码的活少了判断的活多了3.1 从“亲手实现”到“指挥-审查-纠错”的工作流迁移我在真实项目里用 Coding Agent 已经有一段时间了。说实话它确实改变了我的日常开发节奏。以前写一个新模块从搭框架到写核心逻辑再到处理边界情况可能要大半天。现在我用 Agent 生成初版代码速度快得惊人几个文件的功能代码几十秒就出来了。但这里有个关键的转变以前我的工作重心是“把代码写对”现在我的工作重心变成了“判断 Agent 写出来的代码对不对”。这个看起来只是工作重心的偏移实际上是对能力要求的一次大换血。举个例子。我最近做一个数据清洗模块要求对输入的多源异构数据做字段映射、去重和标准化处理。如果用传统方式写我会一行一行地推敲逻辑。现在我把需求描述给 Agent它很快给出一版实现。粗看逻辑完整但仔细检查发现三个问题一是字段映射那里硬编码了列名没有考虑上游表结构调整的情况二是去重逻辑里的排序规则和业务预期不一致三是异常处理的粒度太粗数据格式出错时不能定位到具体来源。这三个问题每一个都需要我对业务逻辑和系统边界有足够的理解才能发现并修正。换句话说Agent 帮我节省了敲击键盘的时间但把所有需要“判断”的工作都留给了我。AI 编程工具的真实价值不是让我这种有经验的开发者失业而是把我们从机械编码里解放出来让我们有更多时间去做那些真正需要经验、判断力和系统思考的事情。前提是我们确实具备这些能力。3.2 提示词里的“判断力”是普通人最容易忽略的环节吴恩达在讲解 Coding Agent 使用技巧时专门讲到了提示词的重要性而且他特别强调了一个词——judgment判断力。他举的例子很有代表性当你让 LLM 生成代码时有一个提示词模板其中包含一个关键要求请对每个代码块提供准确且必要的注释并在代码中添加清晰且很少的错误处理逻辑。他建议把这句话放到提示词里让模型知道你的期望从而减少生成垃圾代码的概率。我一开始觉得这有什么特别的后来在实践中发现这个细节恰恰是决定一次 AI 编程效果好坏的分水岭。同样的需求新手可能只会说“帮我写一个用户登录接口”老手则会给出完整上下文技术栈是什么、数据库表结构长什么样、鉴权方式用什么方案、需要哪些异常处理、输出的字段格式是什么、性能要求是什么。Agent 拿到这两种提示词生成的东西完全不是一个水平。更重要的在于提示词的撰写过程本身就是一次需求分析和系统设计的过程。你需要想清楚边界条件、输入输出、异常场景才能把需求描述得足够清楚。这个过程本质上就是软件工程训练中一直在培养的“抽象能力”和“分析能力”。那些觉得会了两句提示词就能当工程师的人迟早会在真实项目的复杂性面前栽跟头。3.3 Agent 是放大器不是替代品我给不少团队做过 AI 编程的咨询和培训有一个越来越强烈的感受Coding Agent 本质上是一个放大器。你本身的工程能力越强AI 编程工具放大出来的效果就越夸张。反过来如果你本身的工程基础很薄弱它能放大的就是你制造混乱和 bug 的速度。同样一个需求让一个有五年经验的工程师和一个刚培训三个月的新手分别用 Agent 来做结果差距可能比人工写代码还要大。为什么因为工程师知道怎么拆解需求、怎么设计模块边界、怎么测试验证新手只会让 Agent 生成一段代码然后发现跑不通再让 Agent 改陷入无尽的“生成-报错-修改”循环最后被 AI 生成的一堆互相冲突的代码淹没。这就是我常说的“垃圾进垃圾出”在 AI 编程时代的升级版——你输入的是模糊不清的需求描述得到的就是需要反复返工的混乱代码。而输入清晰、有结构、有深度的问题描述依赖于你对业务、对系统、对技术栈的透彻理解这些理解全部来自长期的软件工程基础训练。4. 为什么软件工程基础依然是不可替代的硬通货4.1 “看着代码觉得不对劲”的能力只能靠基础训练获得如果你问我在 AI 编程时代软件工程基础带给我最大的帮助是什么我的回答不是某个具体的算法或者设计模式而是一种“看着代码觉得不对劲”的直觉。这种直觉听起来玄学但实际作用巨大。有一次我审查一个 Agent 生成的用户权限校验模块表面上看逻辑很完整但我在读代码的时候总觉得哪里不对。仔细复盘发现它在校验用户角色时用的是字符串拼接的方式而且没有对拼接后的内容做白名单校验。如果角色名称被恶意构造理论上可能绕过权限限制。这种问题不写单元测试可能永远不会暴露但一旦上线就是安全事故。为什么我能一眼看出这个问题因为我对认证授权体系有足够的了解知道常见的攻击模式知道“不要相信任何用户输入”这条铁律。这些知识不是 AI 教给我的也不是提示词工程能替代的而是我在长期的软件工程实践中一点点积累起来的。这种积累在 Coding Agent 时代不仅没有贬值反而因为“审查 AI 生成代码”成为核心工作变得比以往更重要了。4.2 调试和解决问题算法思维是最后的救命稻草另一个被低估的基础能力是算法思维。很多初学者觉得有了 AI 之后连 LeetCode 都不用刷了反正让 AI 写就行。但他们忽略了一个场景当程序性能出现问题时你不能简单地对 Agent 说“帮我优化一下”因为 Agent 不掌握你的完整上下文也不了解你的数据分布特征。你需要能自己定位瓶颈所在是某个嵌套循环复杂度太高还是数据库查询没有走索引还是内存中缓存了不该缓存的数据。定位问题的过程要求你具备扎实的算法和数据结构知识。举个实际例子。我做一个日志分析系统时Agent 生成了一段处理函数功能上完全正确但处理 100 万行日志时耗时长达 40 秒。我用性能分析工具一看发现它在一个循环内反复对同一个长列表做 count 操作时间复杂度是 O(n²)。我修改为预计算哈希表时间复杂度降为 O(n)处理时间直接降到 1 秒以内。这个过程Agent 帮不了我因为它不理解我的数据规模也不理解性能指标要求。问题定位和方案判断完全依赖我的算法功底。那些觉得算法没用的人大概率还没有遇到过真正的性能瓶颈或者在遇到瓶颈时连怎么向 Agent 准确描述问题都做不到。算法思维的价值在 AI 生成代码变得廉价之后反而成为了区分普通开发者和优秀工程师的隐性门槛。4.3 数据库和系统设计Agent 能生成表结构但不能帮你做架构决策再看技能图里的系统设计层。Agent 可以快速生成建表语句、接口定义甚至微服务骨架但它无法替代你思考业务的核心逻辑订单系统的状态流转怎么设计才能支撑后续退款和售后流程商品库存和订单扣减之间的一致性怎么保证用户量增长到百万级时单库单表还扛得住吗这些都是典型的系统设计问题是软件工程基础训练的核心内容。Agent 能按你的要求生成一个高并发下用 Redis 做缓存的代码框架但它不能告诉你什么时候该用缓存、缓存失效策略是什么、缓存和数据库的一致性怎么解决。这些决策需要你对业务特征、数据访问模式、运维成本有全局判断。我从多年的项目经验中体会到系统设计能力是软件工程基础中最难通过短期训练获得的部分因为它要求的是大量项目经验的积累和对业务的理解。在 Coding Agent 时代做架构决策的人更加稀缺因为代码生成的效率提升了但系统层面的问题不会自动消失。反而因为代码产出速度变快架构选型和系统拆分的错误会被放大得更快。4.4 可维护性与代码审查AI 时代更需要“人味”最后一个容易被忽视的点是代码的可维护性。AI 生成的代码往往功能正确但风格和结构千奇百怪甚至不同请求生成同一模块的代码结构完全不同。在真实项目中代码是给团队其他成员看的是需要长期维护的不是生成完就完事的。代码可读性、模块化程度、注释规范、命名风格、依赖管理这些都是软件工程基础中的基本功。有了 Agent 之后代码审查的重要性不仅没有降低反而升高了。你需要有能力通读 Agent 生成的代码判断它的结构是否清晰、是否易于测试和扩展、是否符合团队规范。这要求你对优秀代码有足够的审美标准而这种标准只能通过大量阅读和编写优质代码来建立。我在团队里推行了一个原则Agent 生成的代码必须经过严格的 code review 才能合入主分支review 的标准和人工代码完全一致。这个原则的效果很好既保证了代码质量也培养了团队成员的审查能力。它验证了一个事实Coding Agent 改变的是代码的生产方式没有改变代码质量的评价标准而质量标准正是软件工程基础教给我们的东西。5. 实操指南Coding Agent 时代我们到底该怎么学软件工程5.1 调整学习路径把基础课学得更“活”一点说了这么多基础重要可能有人要问那到底怎么学总不能还是旧时代那套从 C 语言语法啃到操作系统原理吧。我的观点是基础课还是那些基础课但学习方式可以也应当与时俱进。以前学数据结构是反复手写链表、二叉树、排序算法理解它们的工作原理。现在学数据结构除了理解原理可以再加上一步用 Coding Agent 生成实现代码然后审查它的实现看看有没有优化空间。这样你不但理解了原理还顺便练习了“审查 AI 代码”这项新核心技能。学数据库时也是类似思路。先理解事务的 ACID、索引的底层原理、锁的机制然后让 Agent 帮你写一个复杂查询你再分析它的执行计划判断有没有索引失效的风险。以工程实践为导向来学基础比纯啃书效率高得多也更贴近实际工作场景。我给一个比较实用的学习原则先独立完成一个项目的核心模块再让 Agent 重写一遍对比两者的设计思路和实现差异。这个过程能同时锻炼基础能力、审查能力和对 AI 代码的判断能力。比单纯刷课或者单纯跑 Agent 都有效。5.2 打造一套自己的“Coding Agent 工作流”想高效使用 Coding Agent不能每次都是“开个对话框扔一句需求等结果”而是需要建立一套稳定的工作流。我自己的流程一般是四步第一步需求拆解。先把需求拆成较小的模块每个模块写明输入、输出、约束条件和验收标准。第二步上下文组装。把与当前任务相关的代码、数据表结构、接口文档整理出来作为上下文提供给 Agent。第三步生成与审查。让 Agent 生成代码后逐行审查关键逻辑重点看边界条件、异常处理和安全性。第四步测试与迭代。把生成代码纳入测试框架跑一遍根据测试反馈让 Agent 修正。这套流程不是教条它本质上就是在 Coding Agent 时代实践软件工程基础的要求需求分析、系统设计、代码审查、测试验证一个环节都没有少只是手动编码被 Agent 加速了。另外分享一个提示词的小技巧给 Agent 设定角色并不是“你是一个精通 Python 的工程师”这么简单——更有效的做法是给它描述具体的工程上下文和代码规范。比如“这是一个 Django REST Framework 项目Python 3.11数据库用 PostgreSQL错误处理统一返回 JSON 格式的 error 字段日志用结构化输出。请为以下需求提供代码实现”。这比空泛地设定角色能大幅提升生成代码的质量。5.3 用“教 AI”的方式检验自己的理解程度有一个非常有效的自检方法我觉得值得推荐如果你能清晰地向 Coding Agent 描述一个问题让它生成出符合预期的代码说明你对这个问题的理解是到位的。反过来如果你描述了半天Agent 生成的代码总是不对这时候先别急着怪 Agent先问问自己是不是需求没想清楚。这个方法本质上是把“费曼学习法”用在了和人机协作上。以前我们通过给别人讲题来检验自己的理解现在可以通过给 AI 写提示词来完成同样的检验。提示词写得越清楚说明你的思路越清晰对软件工程知识的掌握越扎实。反过来提示词写得含糊暴露的是你对问题理解的含糊。我在带新人时经常用这个方法。一个新人如果能把需求描述得让 Agent 一次就生成出可用代码说明他已经具备了不错的分析能力。如果他反复描述Agent 一直生成不对那通常不是 Agent 的问题而是他自己根本还没想明白需求。这个评估方法在团队招聘和新人培养中很实用。5.4 什么时候“手写代码”依然是更好的选择虽然 Coding Agent 很强但我也要说句实在话它并不是万能解药。有些场景下手写代码依然是更优选择。第一个场景是核心算法和性能敏感代码。比如一个实时数据处理链路里的核心算子手写和调优的空间很大依赖 Agent 生成再用笨办法改反而不如自己写。第二个场景是涉及复杂业务规则的逻辑。业务规则往往隐含了大量领域知识Agent 缺少对业务上下文的理解容易生成“功能对但业务语义不对”的代码这时候需要人来主导实现。第三个场景是那些需要深度调优的故障排查和问题修复。Agent 能帮你定位问题但最终修复方案往往需要你对系统全局有深刻理解这种场景最适合人类工程师发挥判断力。所以说“Coding Agent 时代还需要会手写代码吗”这个问题答案不是简单的“要”或者“不要”。更准确的说法是你不需要再花大量时间写那些重复性高的增删改查代码但在真正关键的地方你的手写能力决定了你的上限。6. 常见误区和踩坑实录那些“被 AI 坑了”的瞬间6.1 误区一“提示词越长生成代码越准”一个非常普遍的误解是提示词写得越长越详细Agent 生成的结果就越准确。我实测下来这个认知不完全对。提示词过于冗长反而会引入大量无关信息让模型混淆重点甚至“过度设计”——明明只需要一个简单的排序功能它给你生成一个引入三个依赖的复杂方案因为你在提示词里提到了“高可用”“分布式”这些词。更合理的做法是把提示词拆成三个层次核心需求一句话说明白关键约束用列表说清楚可选的优化点放在最后。这样既给了模型足够的上下文又不会干扰它的判断。6.2 误区二“Agent 生成的代码都是对的只管复制粘贴”这可能是初学者最容易踩的坑。Agent 生成代码表面上看起来逻辑完整但它在业务语义、安全边界、性能表现上常常存在隐性缺陷。我前面提到的权限模块问题、字段映射硬编码问题都是这类缺陷的典型表现。正确的心态是把 Agent 当成一个能力很强但经常犯错的初级工程师它给出的代码必须经过严格的审查和测试才能合入。团队里的资深开发者其核心价值正在于有能力把关这最后一关。6.3 误区三“会不会用 Agent 决定职业高度基础无所谓”这个误区甚至很多工作了三五年的开发者都有。他们看到一些短视频和文章鼓吹“会写提示词的应届生打败十年经验老程序员”就真的开始怀疑基础能力的价值。但我从招聘和带团队的经验来看实际情况完全相反。具备扎实软件工程基础的工程师在使用 Agent 时更快、更准、更稳因为他们的判断力、问题定位能力和设计能力是 AI 无法替代的。而不具备这些基础的开发者即使高频使用 Agent产出的也大多是表面光鲜、内核脆弱的东西。长期来看基础能力才是职业发展的护城河AI 工具只是放大这个护城河的杠杆。6.4 踩坑实录一个让我印象深刻的线上事故最后分享一个真实案例。上半年我们上线一个促销系统当时为了追求速度让 Agent 生成了部分逻辑代码。审查时我看得不够仔细有一处价格优惠计算的逻辑看起来正确但没注意到它在“满减”和“折扣券”同时生效时的叠加顺序不对导致结算价格和预期不符。上线后发现营销费用超支紧急修复用了整整一个下午损失不小。复盘时发现这个 bug 不是因为 Agent 代码有语法错误而是业务规则本身就复杂Agent 无法从零散的描述中还原出完整的业务逻辑。但作为审查者我没有把这个业务场景的规则梳理清楚没有写出覆盖该用例的测试这是更深层的问题。这个经历给我的教训是AI 编程时代你自己对业务和系统的理解依然是质量的第一道防线。Agent 能帮你写代码但不会帮你想清楚业务规则、边界条件和系统约束这些是软件工程基础中“需求分析”和“系统设计”能力发挥作用的地方也是我们再怎么强调基础都不过分的原因。7. 最后的想法技能图里有答案但答案要靠自己写出来吴恩达更新的这份技能图我建议所有做技术的人都认真看一遍不是为了追热点而是为了看清自己所在的位置。四层结构从下到上其实是一个从“硬技能”到“软技能”、从“基础知识”到“工具使用”的递进关系。每一层都是在下一层的基础上叠加的而不是替代关系。我个人的体会是Coding Agent 时代最稀缺的不是会写代码的人也不是会写提示词的人而是既懂软件工程基础、又会利用 AI 工具放大自身产出的人。这类人有一个共同特征他们不焦虑 AI 会取代程序员因为他们清楚地知道AI 取代的是那些不会思考的编码动作而不是能够思考的工程师本身。如果你正处在学习技术的过程中我的建议很朴素不要因为 Coding Agent 的出现而跳过基础阶段。相反把它当成一个随时可用的助手在学基础理论的同时用 Agent 来加速验证你的理解、拓展你的实践。一边学一边用用起来发现问题再回到基础里去寻找答案这种循环迭代是当前环境下成长最快的方式。这条路没有捷径但在 AI 的加持下速度和深度都可以比前人走得更远。
返回列表