上周和一个做了八年后端的朋友吃饭,他说了句让我印象很深的话:“今年上半年我写的代码量,还没去年一个季度多,但做的事一点没少。”他所在的小组这半年接了两个AI辅助开发工具,组里几个年轻人开始用自然语言生成接口代码,老家伙们则是把AI当结对编程搭子。同一个团队,已经开始出现两种完全不同的工作方式——有人还在逐行敲代码,有人已经在“指挥”AI干活了。
这正是我想聊的事:未来两年,软件工程这行的分工会被AI重新切一遍。我的判断很直接:程序员正在分化成两种职业——一种是用AI把代码写得更快更好的人,另一种是替团队管好AI、设计智能系统的人。前者本质上还在“写代码”,但写的方式变成了审核、修正和串联AI产物;后者干脆从“写代码”转成“管 AI”,代码只是沟通媒介,真正产出的是智能行为。
这篇文章不是纯趋势预测,而是我结合近半年在一线项目里的观察、和几支团队交流后整理的判断。尤其适合正在纠结该往哪个方向使劲的程序员,也适合准备调整团队分工的技术管理者。
1. 代码变便宜了,程序员的“手艺”正在失去定价权
1.1 从“手写代码”到“审核AI代码”,工作重心发生了转移
聊一个很多人忽略的事实:过去二十年,编程工作的定价权一直绑在“写”这个动作上。谁能更快地把脑子里想清楚的逻辑变成能跑的代码,谁就值钱。但AI把这个公式打碎了。
Copilot、Codex、Claude Code这些工具出来后,生成代码的成本直线下降。我自己试过,一个常规的CRUD接口,以前至少小半天,现在用AI生成骨架加接口文档,十分钟内能出第一版。我花的时间大头不再是“写”,而是“审”——审它有没有用错库、有没有漏掉边界条件、有没有把业务规则理解反。
这不是某个公司独有的现象,而是工具能力突破后必然会出现的结构重排。就像Excel出来之后,做账的人不需要再从零画表格;AI出来以后,写代码的人不需要再从零敲语法。问题是,当“写”这个动作便宜了,程序员靠什么吃饭?我的答案很明确:靠判断力、领域理解和工程纪律。这三点恰恰是AI最难替你做、也最值钱的东西。
1.2 为什么下一步分化的不是技能,而是职业
很多人以为这只是“每个人多用点AI工具”的问题,但我在实际观察中看到的是更深的分化:同样是程序员,日常工作的核心对象开始不一样了。
第一类人依然在“写代码”的语境里,但他们写的是AI的产物——给AI下约束、审AI的diff、重构AI生成的烂代码、补上AI漏掉的测试。他们的对象是“代码”,但生产方式变成了“人审AI产”。
第二类人干脆换了一个对象:他们不再跟函数和类打交道,而是跟模型、向量库、提示词、评估集打交道。他们的产出不是一个模块,而是一个“会干活的行为系统”——RAG问答机器人、自动填单Agent、代码审查Agent。这类人在做的事情,本质上是“管AI”。
这两种工作需要的知识重合度越来越低,薪资逻辑和晋升路径也开始分叉。所以我说“分化成两种职业”,不是标题党,是我看到的真实趋势。接下来的篇幅,我会把这两条路分别展开,再给一些判断自己该怎么走的方法。
1.3 一个反直觉的结论:越会写代码的人,越不会被AI取代
一个反直觉的现象是:在AI辅助开发普及最快的团队里,最焦虑的不是资深工程师,反而是工作三到五年的骨干。原因不复杂——资深工程师的基础足够扎实,能很快把AI从“生成器”变成“加速器”;而中间层的工程师,过去赖以生存的“快速实现已知功能”的能力,恰好是AI最擅长的部分。
换句话说,AI先吃掉的是技能金字塔的中段,而不是塔尖。这也解释了为什么分化会变成“职业”级别的趋势:中段岗位要么往上走变成判断力更强的审核者,要么往旁边走变成更懂AI调教的工程师,原地不动等着被工具抹平的人,最后会发现自己的不可替代性越来越薄。
2. 第一类人:把AI当成编译器,卖的是判断力
2.1 这类人的日常:提示、审核、重构、加固
先说第一类人的工作方式。用一句话概括:他们把AI当成一个随时在线的生成编译器,但自己依然是最终负责人。
你可以想象一个典型的上午:需求澄清之后,工程师先在心里把系统设计拆成几个模块,然后打开AI工具,输入一段包含约束的提示——语言、框架、依赖库、边界条件、性能要求,一次性说清楚。AI给出第一版实现后,真正的重头戏才开始:逐段读diff、检查逻辑漏洞、找出AI“想当然”的地方、补测试用例、然后集成到主分支。
这个流程里最值钱的技能,已经悄悄变成了“diff阅读速度”。你不再需要像以前那样一行行把代码敲出来,但你需要很快看出AI生成的代码哪里不对。这不是玄学,是可以刻意练出来的:我见过一个老工程师审AI生成的Redis数据导出工具,十分钟内就发现AI调用了一个未来版本才有的方法,因为他对这个库的API演进史非常熟。换一个基础不扎实的新人,这段代码可能就带着隐患上线了。
我自己的经验是:让AI干活之前,先给它画好栅栏。提示词里不仅要写“实现什么”,还要写“不能怎么做”。比如让AI写一个定时任务模块,我会明确约定:不允许引入新的消息队列依赖、错误必须记录到指定日志管道、任务失败要有重试和退避机制。这些约束看着啰嗦,但它决定了AI输出的是“工程代码”还是“demo代码”,能省掉后面大量返工。
2.2 留在这个方向,必须守住的三条底线
我上半年和一些团队交流时,见过不少“AI依赖症”的苗头,这里必须给想留在第一类方向的同行提个醒。
底线一:你必须能脱离AI写代码。手感不能断,断三个月再捡回来真的会生疏。AI是加速器,别让它变成拐杖。我见过一位同事,过去半年几乎所有代码都靠AI生成,遇到一次AI服务故障,他对着一个空文件发了半小时呆——这就是手感退化的代价。
底线二:AI生成的代码,必须经过测试和review才能上生产。这条绝对不能省,尤其是在支付、权限、数据迁移这类场景里。AI模型再强也只是“概率性正确”,它不知道你的业务上下文。凡是让AI代码直接进主干、不补测试的团队,我基本都能预见到两周后的线上事故。
底线三:对依赖和API的版本保持警觉。AI最擅长“编造”不存在的库函数或版本号,这种幻觉经常出现在看似正常的代码里。养成交叉验证的习惯:官方文档、类型定义、包管理器的版本记录,三样至少查两样,再放行。把这条变成肌肉记忆之后,你审查AI代码的速度和质量都会上一个台阶。
3. 第二类人:把AI当成团队成员,卖的是系统化调教能力
3.1 从命令式调试到概率性调试
再说第二类人。这批人做的事情,表面上也是“写代码”,但核心对象完全变了:他们不再面对确定的函数逻辑,而是面对一个概率性的行为系统。最典型的场景就是RAG问答机器人和多步骤Agent。
传统软件工程里,调试是确定性的:断点、堆栈、变量值,一步步往前推就能定位问题。到了AI系统里,这一套几乎全部失效。你没法给大模型打断点,也没法“单步执行”它的推理过程。你能拿到的证据变成了三类:输入样本、输出结果、运行痕迹(trace)。问题不是“哪行代码写错了”,而是“哪个prompt设计不合理”“哪块召回内容误导了模型”“哪个Agent步骤没有兜底”。
我做过一个内部知识库问答机器人,功能跑通很容易,真正折磨人的是它的“失败模式”——十个问题里九个回答得漂亮,剩下一个它自信地给出错误结论,而且格式流畅、语气笃定,非技术同事根本看不出来那是错的。这类问题用传统debug手段无解,只能靠评估体系去兜:把已知的失败类别固化成语料集,每次改动模型或prompt后回归一遍,再通过引用溯源和“无法从给定材料得出结论”的拒答模板,把风险压在可控范围内。
3.2 管AI的技术栈:评估、可观测性、成本与防护
给想往第二类走的同学一个全景图,管AI不只是写prompt,它是一套完整的系统工作。我把它拆成四块:
评估:离线评估集是地基。你至少要准备一两百个“问题—期望答案/期望行为”的样本,覆盖正常问题、边界问题、坏输入三类。每次改模型、改prompt、改召回逻辑,都要拿这套集子回归。在线侧则需要用户反馈、点赞点踩、延迟和成本监控。
可观测性:传统日志体系不适用于AI系统。你需要给每一次LLM调用、每一步Agent动作、每一次工具调用打trace,至少要能看到:模型当时看到了什么上下文、最终采纳了什么工具、token消耗是多少。没有这层记录,出了问题你连复现都做不到。
成本:模型调用的边际成本远高于普通函数调用。一条实用的做法是分层用模型:简单的意图分类用便宜的小模型,复杂的生成任务才用贵的大模型;同时做好缓存和上下文压缩,把token消耗压下去。这个意识和传统工程里的性能预算一样重要。
防护:AI系统的外部攻击面和内部失控面都更大。输入侧要过滤注入,输出侧要有安全护栏,Agent能触达的工具必须最小授权,高风险动作要加人工审批节点。一句话,你不能把Agent的权限给得比实习生还大。
我拿传统工程和AI工程做过一个直接对照,贴在下面供参考:
| 维度 | 传统软件工程 | AI系统工程 |
|---|---|---|
| 调试对象 | 确定性代码逻辑 | 概率性模型行为 |
| 主要证据 | 断点、堆栈、日志 | 样本、评估集、trace记录 |
| 质量保障 | 单元测试 + CI/CD | 评估集 + 护栏 + 在线监控 |
| 常见故障 | 逻辑bug、空指针、并发问题 | 幻觉、越权、语义漂移 |
| 扩展瓶颈 | 计算资源与架构设计 | 上下文长度、成本、延迟 |
4. 两条路的真相:护城河、门槛与职业风险对照
4.1 两种职业的对照表
把两条路放在一起对比,看得更清楚:
| 对比维度 | 第一类:AI加速的软件工程师 | 第二类:AI系统工程师 |
|---|---|---|
| 核心产出 | 高可靠、可维护的软件系统 | 稳定、可控、可评估的智能行为 |
| 主力工作 | 需求分解、架构决策、AI代码审查 | 模型选型、数据与RAG、评估、Agent编排 |
| 入门门槛 | 扎实编码基础 + 审查与重构能力 | LLM原理基础 + 工程骨架 + 大量实验经验 |
| 成长曲线 | 靠项目深度,一年一个台阶 | 靠实验密度,几个月看到明显差距 |
| 主要风险 | 中段“实现型”工作被AI批量吞掉 | 模型迭代太快,今天的技术栈半年后过时 |
| 薪资趋势 | 资深溢价上升,中段岗位收缩 | 新岗位爆发但泡沫大、方差大 |
4.2 我的真实判断:哪个方向更容易被淘汰
很多人会问我哪条路更稳。我的真实判断是:短期内第一类更稳,长期看第二类上限更高,但两条路都有各自的淘汰机制。
第一类人面临的风险是“中段塌缩”。如果你只是把AI当成打字增强器,自己既不懂深层原理、又不练审查能力,那么三到五年内你的岗位价值会持续缩水。反过来,如果你能在业务领域扎得很深,同时保持很强的“AI产出把关”能力,你反而会因为单人产出大幅提升而变得更抢手。
第二类人的风险是“方案过时”。我见过太多人追着热点学,上一个项目还在做纯prompt优化,下个月模型更新后那套技巧就失效了。真正能留下来的AI工程师,不是因为会某个框架,而是掌握了评估方法、数据敏感度和系统设计能力——这些底层能力不随模型换代而贬值。
所以我一直不建议大家“梭哈”式转行。最稳妥的姿态是:保住你现有的工程基本盘,拿出两到三成精力深度做AI实验项目。积累半年之后,你自然会对这两条路有体感,那时候再决定主攻方向。注意,这跟那些鼓吹“人人都要立刻转AI工程师”的说法是完全不同的策略——因为绝大多数人真正的护城河,其实还在原来的领域里。
5. 站在岔路口的人,怎么判断自己该往哪边走
5.1 先回答四个问题,再谈选择
每次有朋友问我该选哪条路,我都会先让他回答四个问题,比直接推荐方向靠谱得多。
问题一:你更享受把复杂逻辑理清,还是让AI变聪明?这是最本质的区分。第一类人享受“把一团乱麻整理成清晰模块”的确定感;第二类人享受“通过数据、例子和规则让系统表现越来越好”的实验感。前者讨厌失控,后者能容忍失控。
问题二:你能接受不确定性吗?AI系统永远有随机性。同一个prompt,温度调到0也会因为上下文微调产生不同输出。如果你习惯了“要么对要么错”的确定逻辑,硬转第二类会很痛苦。
问题三:你的业务领域知识积累有多深?第一类人的定价权很大程度来自领域理解——你懂金融结算、懂供应链、懂音视频处理,你就能审得比别人准。第二类人如果缺乏具体业务场景,很容易沦为“什么都能做但什么都做不深”的杂家。
问题四:你现在的团队更需要哪种人?现实一点讲,中小型团队急需的是“一人能顶一个小分队”的第二类人;而大公司成熟业务线更需要能把AI稳定嵌入现有系统的第一类人。跟着需求走,成本最低。
5.2 三个月双向实验法
光想没用,我给很多人推荐一个“三个月双向实验法”,成本低、反馈快。
第1到4周:强制自己在日常开发中全程使用AI辅助,同时背一份审查checklist——每段AI代码必须人工过一遍边界条件、依赖版本、异常路径。记录你每天的时间分配:如果发现大部分时间都花在“判断和纠错”上,而不是“写”上,说明你对第一类工作有天然适配。
第5到8周:挑一个真实的业务场景,从头搭一个最小AI功能——比如企业内部知识库问答、工单自动分类、或者一个只能调两个工具的Agent。从模型选型、数据准备、评估集设计到上线监控完整走一遍。这个过程里你会直观体验到“概率性系统”带来的痛苦和乐趣。
第9到12周:停下来问自己三件事:哪个阶段让我更有成就感?哪个阶段我做起来比别人快?哪个阶段我愿意在加班时主动多做?答案指向哪边,你接下来的重点就在哪边。
5.3 不同资历的人,调整重点不一样
顺带说一下不同资历阶段的调整策略。
刚入行两三年的同学,我的建议是别急着站队。先把“看懂AI代码”的能力练扎实——能拆解一段AI生成的代码、能指出其中的隐患,这比能用prompt问出一段能跑的代码值钱得多。基础不牢就冲第二类,很容易变成空心砖。
三到八年、正在业务里扛事儿的骨干,最适合做双向实验。你们既有工程手感又有业务上下文,是最容易在这个分化期拿到红利的人群。别等公司安排,自己先在业余项目里把两类工作各滚一遍。
资深架构师和技术管理者,你们的优势是系统思维。我的建议是主动把AI能力纳入你的架构设计视野,比如把“模型调用是否有降级方案”“Agent失败如何重试”当成一等公民来考虑。这一类人真正缺的不是技能,而是对AI系统工程的理解深度。
6. 我最近半年踩过的坑:AI工作流没有那么丝滑
6.1 坑一:AI Agent“静默完成”引发的回归事故
我在一个重构项目里让一个Agent批量修改日志模块,它返回了“已完成”的状态,三个文件也确实是绿的。当时我犯了个典型错误:只看了测试用例通过就合入了主干。结果第二天线上告警,日志级别被静默改掉了,一个序列化错误处理器也被Agent当成“无用代码”删了。测试为什么没拦住?因为现有测试根本没覆盖那条异常路径。
这个坑给我的教训非常直接:“AI完成”不等于“任务完成”。之后我给Agent工作流加了两道闸:第一道,Agent每完成一批修改必须输出一份“我改了什么、为什么改”的摘要,人必须过目;第二道,合入前必须跑一遍包含边界用例的回归集,而不是只看单测绿不绿。现在这套机制已经成为我所有AI辅助重构的标配。
6.2 坑二:提示词里缺少验收标准,代码“形似神不似”
另一个高频坑是提示词太“软”。我让AI实现一个优惠券过期判断功能,它确实写了过期检查,但用的是服务器本地时区,而业务的这个判断必须走订单归属门店的时区。为什么没实现对?因为提示词里压根没写这条验收标准。
后来我总结出一个原则:写提示词之前,先写验收标准。就像写用户故事一样,把Given/When/Then列清楚——给定什么前置条件、当什么动作发生、系统应该给出什么结果。验收标准写清楚了,AI输出的偏差率会大幅下降,更重要的是,你拿着标准去review时心里有谱,不会因为“看起来差不多”就放过去。
6.3 坑三:自信但错误的知识库回答
前面提过的知识库问答机器人,让我吃够了“自信幻觉”的苦头。系统对接的是内部维基文档,有一个回答在引用产品流程时张冠李戴,把旧流程当成了当前标准。最坑的是它语气特别肯定、格式特别规范,要不是我恰好熟悉那块业务,根本不会发现。
针对这类问题,我现在的做法有三条:所有回答必须附引用来源;增加一个“材料支撑度”检查,答案核心论断无法从给定文档中推出时,必须换用拒答模板;线上保留用户纠错入口,定期把纠错数据喂回评估集。这套组合不能说百分百堵住幻觉,但能把“自信且错误”的比例压到可接受范围。做AI系统的同行一定要记住:幻觉不可怕,可怕的是没有兜底。
6.4 一个一线可复用的AI工作流模板
把这一年多试错的结果收敛一下,我现在的一线工作流基本稳定成这个模板,分享给你们直接抄作业:
- 人写需求拆分和验收标准,明确“做什么”和“不能做什么”。
- 给AI划定边界:语言、框架、依赖版本、禁止使用的API。
- AI生成实现,人过diff,补测试,重点查边界条件和异常路径。
- 集成、压测、上线,加上可观测性日志和关键指标监控。
- 每周回顾一次:哪些步骤AI已经能稳定做好,哪些步骤必须人亲自把关。
说句实在话,这套流程对速度的提升不是十倍的戏剧效果,而是三到四倍,但质量的稳定性比之前更好了——因为AI帮我扛掉了大量机械性实现,我腾出来的时间全花在了最该花的地方:边界条件、数据一致性、上线之后的行为观察。对我来说,这就是“程序员分化”这件事最具体的答案:无论你选哪条路,最后拼的都是“谁能用AI把业务结果做得更稳”,而不是“谁的prompt更花哨”。这话放两年后回头看,应该还是成立的。