上周我让AI帮忙排查一个线上偶发队列堆积的问题,它一口气给了五个方向,我照着试了三个,都是错的,第四个试起来成本太高,第五个其实是我自己想到的。同一周,我的一个同事用AI把部门内部的一个数据清洗工具从设计到上线两天搞定了,按我的经验,这活儿以前至少得两到三周。同样的工具,差别可以这么大,这让我不得不认真琢磨一个问题:AI程序员到底会革谁的命?革我们自己的吗?
这个话题最近在技术社区里讨论得很凶。有人拿AI生成代码当段子讲,说它写出各种离谱的函数;也有人靠AI一个人撑起一整个小项目,日子过得相当滋润。两个极端摆在一起,很多人是分裂的:一边在焦虑,一边在观望。所以这篇文章我不想聊太虚的,就把我自己用AI写代码的真实体验、观察到的岗位变化,以及我现在实际在用的应对策略,全部摊开来讲。
1. 我用AI写代码的真实体验:它到底在哪个段位
1.1 顺手的场景:样板代码、测试补全、临时脚本
先说它用得特别顺的地方,否则对AI也不公平。
第一类是样板代码。记得有一次要做一组FastAPI的CRUD接口,六个资源表,每个都要写增删改查、分页、鉴权校验,以前这种活最少要一个下午加一个晚上,还要复制粘贴改字段名,改到眼花。现在我把数据模型往对话里一贴,告诉AI按项目里现有的分层风格生成,它几十秒就能把六个接口文件全部写完,字段名、类型注解、状态码全对齐,我只需要过一遍逻辑,改几处业务细节就合入。这种任务本质上是"大量模式化输出",AI做得又快又整齐。
第二类是补测试。我手头有个老模块,日志里面有几个分支条件常年没人覆盖,我让AI先读源码,再按已有的测试框架风格补齐用例,它把正常路径、异常路径、边界值全部列出来,还顺手把mock数据写好了。我只需要补充几条业务特有的脏数据案例。单测覆盖率从63%提到了89%,这个数字以前靠人力去磨,没两三个迭代磨不出来。
第三类是临时脚本和数据处理。内网日志导出之后要做字段抽取、去重、排序、统计分布,以前我会写个Python脚本,每次大概要花半小时到一小时。现在直接把样本贴给AI,描述清楚我要什么,它给我生成脚本,我改改路径和正则就跑。遇到不满足的地方,直接把报错贴回去,它迭代几版也就能用了。
在这些场景里,AI几乎是"降维打击"。它不会累,不会漏写重复的字段,也不会不耐烦。作为有经验的人,我能清晰感觉到:流水线性质的工作正在快速失去存在的意义。
1.2 翻车的场景:多文件耦合、环境依赖、隐蔽的边界条件
但如果你以为AI已经能独立负责一个生产系统,那距离还很远。我遇到过的翻车案例可以写一长串。
最典型的一次是让AI给支付回调接口加幂等处理。它给我的方案是:在数据库里加一个订单号唯一索引,写入前先查一下。这个方案在教科书层面完全正确,但它完全没有考虑我们的生产环境:回调服务是多实例部署的,查询和写入之间有时间窗,两个实例同时收到重复回调,就会同时查到"不存在",然后同时写入,唯一索引此时确实能拦住后写入的请求,但先写入的请求里可能还要执行异步通知、更新缓存、刷新对账表等一堆副操作。如果直接用AI给的方案,日志里会多出一堆表面罕见、实际必然偶发的异常报警。最后我还是把原来手写的分布式锁方案捞出来改造了一遍。
另一个例子是排查ES数据倾斜。系统里有几个索引的写入量不均衡,我拿集群配置和分片设定丢给AI,它一口气给了七八条建议,从调整分片数到改路由规则都有。猛一看每条都专业,但仔细一推,它完全不知道我们的业务分片键是用户ID,而且头部用户占了接近四成流量,单纯的调整分片数量解决不了倾斜,要改的是写入端的哈希策略。AI不掌握这些业务上下文,它的建议就只能在"通用层面正确",到了具体系统里,很可能把你带沟里。
说到最坑的,是那些和环境强相关的问题。有一次AI给我生成了一段grpc客户端重连代码,逻辑看着没问题,编译也通过,但部署之后发现它对健康检查的处理完全错误,会跳过初始连接失败后的退避逻辑,导致服务雪崩。这种问题只有在真实流量下才会暴露,AI在它的训练语料里根本找不到我们公司这台网关的配置细节。
1.3 我的结论:AI是个高配实习生,不是资深架构师
经历多了之后,我给AI贴了个角色标签:高配实习生。
这个类比很贴近实际。实习生的优势是知识体系新、执行力强、给一个定义清楚的任务很快能交出像样的东西。但实习生的短板也很明显:对系统全貌没有感知,不知道存量代码里为什么这里加了个奇怪的if,不知道某个边界条件是上次线上事故留下的教训,更不知道怎么在多个约束条件之间权衡取舍。
所以我现在带AI工作的方式,和带实习生非常像:我会给它足够清晰的上下文,会把大任务拆成它能够理解的小模块,会要求它先讲思路再动手;等它给出结果之后,我会做严格的review。我不会因为AI给出一版看起来合理的代码就放松警惕,因为我知道,它不懂我们的业务,不懂我们踩过的坑,更不会为线上事故承担责任。
想明白这一点之后,我反而不太焦虑了。AI让"编码"这个动作变得便宜,但系统设计、边界判断、风险识别这些真正的工程能力,依然稀缺,甚至因为AI降低了产出代码的成本,这些判断力的价值比以前更高了。
2. AI革的不是程序员的命,是岗位结构的命
2.1 软件开发全流程中,AI的介入度分布
我试着把软件开发的完整链路列了一遍:需求澄清、方案设计、任务拆分、编码实现、代码评审、测试验证、发布上线、监控排障、架构演进。AI在里头的介入程度差异极大。
| 环节 | AI当前的介入程度 | 对人工能力的要求变化 |
|---|---|---|
| 需求澄清 | 低,能帮忙整理会议纪要、列出疑问点 | 人工必须更懂业务,否则需求本身就是错的 |
| 方案设计 | 中低,能提供候选方案,但缺少取舍依据 | 需要人来定边界、做技术选型、评估成本和风险 |
| 任务拆分 | 中,能按模板拆Epic和Story | 拆分颗粒度和依赖关系需要人来判断 |
| 编码实现 | 高,能生成大量可编译的代码 | 从写代码变成审代码、改代码,仍然要懂底层原理 |
| 代码评审 | 中高,能发现明显的坏味道和空指针风险 | 重点审查语义、并发、业务规则等AI发现不了的问题 |
| 测试验证 | 高,能生成单测和简单的集成测试 | 测试场景设计仍然依赖对业务流程的理解 |
| 发布上线 | 中,写CI/CD脚本很熟练 | 灰度策略、回滚方案、变更风险需要人拍板 |
| 监控排障 | 中低,能帮忙分析日志模式,但定位根因仍需人主导 | 系统全貌的掌控能力越来越值钱 |
| 架构演进 | 低,能列举架构风格,但做不了长期决策 | 业务预判、成本权衡、组织协同,这是核心竞争力 |
这个表我反复看过很多次,真正被AI大幅挤压的,其实是"编码实现"环节。但编码实现从来不是程序员的全部价值,甚至多年来被严重高估了。当编码成本趋向于零时,链条上其他环节的价值占比会被重新放大,这就是我所说的岗位结构变化。
2.2 初级编码岗在收缩,"指挥AI的工程师"在增长
我自己近半年明显感觉到招聘市场的风向变化。以前团队招人,常规路径是招初级工程师做执行层,写接口、修bug、补测试,慢慢培养系统认知。现在不一样了,这类"纯执行型"岗位的需求在收缩,不是业务不需要人,而是这些活AI补上了大半。不少团队在招人时开始明确要求"能熟练使用AI协作开发",这不是噱头,是成本压力倒逼的结果。
我也观察到一个很有意思的现象:以前做内部工具,至少得拉两三个人,一个前端一个后端外加测试,因为内部工具的业务逻辑不复杂,但涉及界面、存储、权限、部署这些边角料,量大管饱。现在呢,我一个同事用AI十几天就把一个运营后台从零到一搭完了,报表、权限、审批流全都有。他原来是个不怎么写前端的人,硬是靠在对话里描述组件结构,把React页面搭出来了。
这意味着,过去四五个人的"草台班子"能干的事,现在一两个人加AI也能干。当一个团队需要的人变少,但每个人承担的职责范围更宽时,岗位结构自然就变了。不是程序员消失了,而是"纯代码工人"的位置消失了,取而代之的是"会指挥AI、会兜底、会拍照板"的复合角色。
2.3 "一个人的现代开发团队"不再是段子
以前说"一个人一个团队",多少有点戏谑,现在正慢慢变成现实。我一个自由职业的朋友,最近一个人接了三个中小型外包项目,他把自己的流程固定下来:先跟客户聊需求,回来把对话记录丢给AI做需求文档,再自己把关键流程画出来,让AI按模块生成代码,每个模块生成后他自己build、跑测试、看日志,有问题把报错贴回给AI迭代。遇到AI反复改不对的,他才会打开源码自己下手。
他说了一句话我印象很深:"我现在用的不是AI唯一的本事,是它当个好用的外包团队;而我自己的活变成了项目经理加架构师加测试负责人。"
这种模式能不能承接大型复杂系统?短期内很难,因为大型系统真正的难点在组织协作、数据一致性、灰度演进这些系统性约束上,AI给不了"默认最优解"。但大量中小型业务场景确实会被这种模式覆盖掉,这已经足够改变整个行业的用人结构了。
3. 当AI能写代码,程序员的核心竞争力开始迁移
3.1 从"把需求翻译成代码"转向"定义真问题"
过去很长一段时间,程序员的日常就是"接需求、做分解、写代码、交付"。这套模式下,最重要的是把业务方的语言准确翻译成技术实现。但现在,AI把"翻译"这个动作的成本打了下来,真正的瓶颈变成了:需求本身是不是对的?
举个我经历过的例子。业务方提了个需求,说"我们要开发一个数据分析平台,展示各渠道的投放转化情况"。放在以前,这就是一个明确的功能点,排期开发就行。但现在你必须先问一句:为什么业务方需要一个平台?他跟你说这件事背后的真实诉求可能是"投放经理每天要手动从三个后台导出数据做表格,太慢了"。那解决方案根本不是一个"数据分析平台",而是一张每天早上自动推送到群里的汇总报表,一天就能上线。你要是直接去做平台,两周后大概率发现业务方用了一周就不用了。
定义真问题的能力来自领域知识,来自跟业务方的深度沟通,来自对数据指标的敏感度。这些AI很难替代,因为问题在展开之前,是一团模糊的、带着情绪和场景的碎片信息,AI没有参与你说的那句"我觉得这个数据不太对"之前的语境。
3.2 从"实现功能"转向"决策与担责"
AI写代码,这件事本身已经不需要太多讨论。可代码上线之后出了问题,是AI还是人为事故?答案肯定是人。我们团队就发生过一次因为AI生成的代码引起的事故。
当时有个同事让AI优化一段字符串解析逻辑。AI给了一个看起来很精妙的正则表达式,在处理常规字符时速度提升明显,但上线后灰度环境出现了一批超长特殊字符请求,CPU直接飙到100%。幸亏有灰度开关,我们在十分钟内回滚了。事后排查发现,AI选的这个正则存在灾难性回溯问题,它没有在生成的代码里提示任何风险,因为它不知道我们的请求长度分布,也不知道我们的安全红线。
从那次之后,我们团队立了个规矩:AI生成的每一段代码,都必须经过"需求反推+边界条件审查+上线观测"三道人工关卡。这个规矩不是让我们的效率变低了,恰恰相反,它逼着每个工程师在做AI产出物审查时,必须真正理解代码意图。原来的"实现功能"工作,变成了"决策:这段代码可不可以上"和"担责:出了问题我认"。
这才是值得程序员投入的领域。技术判断力、风险评估、灰度策略、回滚预案、安全生产,这些责任AI承担不了,但它是整个系统的安全保障。
3.3 从"码农"转向"业务翻译官+系统医生"
我认识的工程师里,被裁或者转岗的,很少是因为AI太强,更多是因为他们除了实现能力之外,没有别的优势。反过来,那些最能扛事的人,都是"既能读懂业务、又能诊断系统"的复合型人才。
做一个"业务翻译官"的意思是:你能把业务方的模糊诉求,翻译成清晰的技术方案,再翻译回去让业务方确认,保证双方在同一张图纸上干活。做一个"系统医生"的意思是:线上出了问题、性能出现瓶颈、数据对不上了,你能在最短时间内找到根因并给出治疗方案。这两类角色都需要长期积累的系统全貌认知和行业领域知识,不是翻翻文档就能学的。
最近身边不少朋友在搜各种Python和AI课程资料包,有人甚至下载了上百G的视频,但三个月过去还是只会跑教程里的示例。这里我想多说一句:资料本身不是能力,把资料变成你自己的项目、解决一个真实问题,才是能力。真正的成长路径不是再囤一百个教程,而是拿手头最头疼的问题去和AI一起解决,解决完复盘,AI推荐什么新思路就去查什么,这种"问题驱动"的学习效率,比把课程从头刷到尾高得多。
4. 未来三五年,什么样的程序员会被"革命"
4.1 只会把需求翻译成代码的执行者
说得直白一点,AI最擅长替代的,就是那种"你给我充分明确的需求、我把它变成代码"的执行者。这类工作不需要对业务负责,不需要做技术选型,甚至不需要理解系统全貌,只需要把接口定义翻译成实现。以前这是很多初级程序员的日常,也是大量外包和内部工具开发的常态。
我曾见过一个很典型的场景:一个同学每天的工作就是按照PRD写REST接口,联调,再改字段,再联调。他做了三年,简历上写的技术栈很全,但对业务逻辑没有任何决策权。这样的人在AI加入之后,被替代的风险是最高的,因为AI写接口的速度和准确率已经不亚于两年经验的人。
如果你发现自己就是这种状态,我建议立刻开始改变工作方式。下一次接到需求时,多问一句:为什么要这个接口?这个接口在业务链路里处于什么位置?有没有其他方式可以实现同一个业务目标?把这些问题养成习惯,你才可能在AI时代建立起保护自己的护城河。
4.2 拒绝更新工作方式、坚持"手写一切"的人
和前面那种人相反的另一个极端,是坚决不用AI的"原教旨主义者"。他们认为AI写的代码不可控、有安全风险、不如自己写的稳。我承认这些担忧有道理,但用"拒绝"来应对变革,和当年拒绝从汇编转向高级语言的人一样危险。
我以前也坚持过一段时间,觉得手写代码是基本功,用AI是"偷懒"。后来有一次加班到凌晨三点,反复调试一个字符编码问题,第二天把同样的问题丢给AI,它五分钟就指出了原因。从那时候我开始反思:基本功是让你能判断AI输出的质量,而不是让你事事亲力亲为。
趋势已经很明显:未来团队里,一个人用AI就能顶过去两个人用传统方式的产出,老板算账算得很清楚。坚持"手写一切",可能不再是美德,而是团队里的效率瓶颈。
4.3 把AI神话或妖魔化的人
还有一类人容易被"革命",就是那些对AI抱有不切实际期待的人。有人觉得AI马上就能彻底替代程序员,于是不再积累技术深度,等着被淘汰;有人觉得AI什么都做不了,于是完全无视它的存在。这两种心态在极端时候都会让人停止真正的学习。
我更愿意把AI看作一个能力放大器和效率杠杆。它能让一个本来只会写业务代码的人,快速补上前端、运维、数据分析的能力;也能让一个资深工程师从大量琐碎工作中解放出来,把时间投入在更复杂的系统决策上。关键在于,你要有足够强的底层能力去驾驭它,而不是被它带着走。
4.4 给自己做一次"被革命风险"自测
我给自己设计了一套问题清单,每隔几个月会重新过一遍,你可以拿着它对照自己的状态:
- 你是否长期只会写固定几种CRUD接口,从不主动接触系统其他模块?
- 你最近一次理解业务方的真实诉求,而不是直接照单接需求,是什么时候?
- 如果你的代码被AI生成的版本替换,你能说出哪些地方是AI必然做不好的吗?
- 你是否能画出你所在系统从客户端到数据存储的完整请求链路?
- 线上出问题时,你的第一反应是找日志、看监控、定位根因,还是等着别人给你结论?
- 你是否知道系统中最大的性能瓶颈在哪个环节?
- 你最近半年有没有主动学习过一项和AI无关的技术?比如网络协议、数据库引擎、分布式一致性?
- 你是否能把一个业务需求拆成可以并行推进的小任务,并评估每项任务的风险?
- 你有没有自己拍板过的技术方案?如果有,你是否为这个决定承担过后果?
- 你对当前行业的业务数据指标、核心成本结构了解多少?
这些问题不一定都有标准答案,但它们指向同一个方向:你到底是一个只提供执行的零件,还是一个能定义问题、承担责任的核心角色。前者很容易被替代,后者随着AI普及会越来越稀缺。
5. 我现在在用的应对策略,可能对你有用
5.1 让AI进入日常节奏,而不是偶尔"上网问一下"
很多人用AI的方式是"遇到bug才去问一下",这种用法只能拿到零散的答案,价值非常有限。我的做法是把AI嵌入到整个研发流程的每一天。
一个典型的工作流是这样的:接到需求后,先让AI根据对话记录生成需求清单和验收标准;确定之后,让AI基于历史代码风格输出两到三版候选方案,我选择或合并其中一版;方案定了之后,让AI生成代码骨架、接口定义、mock数据;拿到骨架后我自己搭建业务关键逻辑,再让AI补齐边界分支和测试用例;合入前用AI做一次代码审查,把可疑点逐条过掉;最后让AI起草变更说明和复盘文档。
这一套流程走下来,AI承担了大量上下文转换的成本,我只需要在关键节点做判断。它让我每天真正动手敲键盘的时间减少了很多,但产出的系统质量和稳定性反而提升了,因为我有更多时间在"思考"而不是在"敲字"。
5.2 刻意去做那些"AI做不好但业务很痛"的事
要让自己不可替代,最重要的策略不是和AI拼它擅长的东西,而是去做它不擅长的事。
我自己会刻意接这类的任务:跨系统数据一致性问题、老系统的存量技术债梳理、核心链路压测与性能调优、跟业务多方对齐指标口径、处理线上紧急事故的指挥和复盘。这些工作的共同点是,要么需要大量的领域知识和沟通协调,要么需要在极端压力下做高风险的判断,AI在这些场景里只能提供一些参考信息,最终的决定和责任都在人身上。
我也建议你在团队里主动认领这类"脏活累活"或"模糊地带的活"。这类活不容易出漂亮成果,但它们在建立你的不可替代性方面,效果远超多写一万行CRUD。
5.3 建立"AI输出审计"的肌肉记忆
最后一条,也是我用血泪教训换来的:任何AI生成的东西,都必须经过审计。我给自己定了三个固定动作:
第一,需求反推。拿到AI代码之后,先不看代码本身,闭上眼睛回忆原始需求,然后问自己:这段代码真的能满足这个需求吗?这样做能先拦掉一批"答非所问"的输出。
第二,边界条件审查。专门列出那些"正常情况下不会发生但发生了就会出事"的输入:空值、超长字符串、并发重复请求、下游服务超时。我习惯直接让AI先分析这段代码在这些条件下会怎么表现,再人工核对它说的对不对。
第三,安全与资源使用检查。主要看AI生成的正则、循环、SQL查询、文件操作代码,会不会在大数据量下出现资源耗尽或无限重试。这个环节别省,因为AI默认不会考虑流量峰值和异常请求分布。
我还养成了一个习惯:要求AI在给出代码时同时给出一小段"思考过程",说明它为什么这么设计。不是为了欣赏它的逻辑,而是方便我在review时快速定位它忽略了什么。把它想成一个实习生,你会怎么看它的思路,就怎么审查AI的方案。
说到底,AI程序员革不革我们的命,单看标题是个开放式问题。我的答案已经很明确了:AI会淘汰一部分岗位,也会让另一部分人的价值指数上升,分水岭不在技术多牛,而在你是否愿意改变工作方式、是否真正理解业务、是否敢为自己的决策担责。革自己的命,在我理解里,不是把自己变成会写代码的AI,而是把自己变成能和AI配合得最好的那个人。我现在每天的工作方式,已经和两年前完全不同了;我可以确定的是,站在原地等答案,一定不是选项。