有了 AI 之后,基础编程之上是什么

最近一年半做 code review、帮人解决问题,看得多了,大脑中机经常涌现一些想法:现在写代码这件事本身,已经不是初级工程师的门槛了。随便给个需求,AI 都能生成一段能跑的代码。

有时候也会感慨,想当年自己刚刚毕业时看到公司级项目代码,仅仅是阅读理解框架就要花很多时间,更别说要学会实现某个小需求了。有时候遇到难的需求,真的会难受好久,完全没有头绪,也不知道问谁。

最近一两年进入这行的新人,单纯从工作任务角度来看,相比以前的人一定程度上是舒服多了,至少能借助 Agent 生成一些代码(职场上看,有比没有强,做成一个“垃圾”也比啥也搞不出好),也能和 AI 对话来理解需求寻找和调研可能的解决方案,比以前百度看一堆重复的文章最后还云里雾里好。

同样的一个困境也随之而来,在整个经济环境下行,各行各业都有些萧条的情况下,需求也越来越少,不可回避的、挺现实的一个场景,在挑选、筛选人时如何看出真正的水平呢?大家都会 agent 编程,有的人可能更会表达自己,如何辨别真假呢?以前面试完全是考验候选人,现在好像更考验面试官了,如果面试官的知识面、经验不能cover候选人,那么被候选人忽悠也是正常的,如何衡量价值也是一个问题。


这一行的很多人真的太浮躁了,目前的大模型来生成代码,只是一种工具,而有些人真把它当成真AI了,更夸张的很多人会反驳你:“虽然现在还有很多待改善的问题, 后面肯定能解决,按照当前这种速度,它肯定能进化地更强,以后的 token 肯定也会更便宜,就像是水电、刚出来的昂贵的智能机一样”,“目前的 AI 堪比第四次工业革命,现在手写代码就是以前的手工纺织机、马车,AI 就是珍妮机、蒸汽机汽车……”,居然还有人扯“进化”?太离谱了,但凡稍微了解一下预训练生成式语言模型,就不会有这么离谱的言论。

有时候真的很烦一些很xx的言论“没有任何代码基础,用xxx模型,vibe coding了一个xxx”,“没写一行代码,靠xxx做了一个xx”,“家人们,文科专业,用AI做了一个xxx,我将用系列视频讲解制作教程”……如果不是商业化项目产品,AI 越快速生成的,说明这个东西在 Github 上的已经非常成熟了,就像是城市中的人给原始社会的人介绍如何在现代生活,这不是闭眼张口就来嘛?

写代码编程,从来不是一个很高级、门槛很高的事情。在没有大模型生成代码之前,在这行业火热的时候,就连高中生培训一下就能入行。很多敲代码的工作内容也存在许多“复制粘贴“,大模型只是加速的前面这个过程,并没有彻底转变需要编辑代码、运行代码、靠代码运行程序服务的本质。自然语言也没有成为新的实现方式,有的AI狂热信徒把“高级编程语言到自然语言”比作“汇编到高级编程语言”,实在是太滑稽了,更不用说是替代了。

有了 AI Agent 这两年,工作真的有变得轻松嘛?工作时长有缩短嘛?这行业能不加班了嘛?

为什么很多人觉得程序员的工作就是写代码?工作中杂事很多,真正能用来编程的时间如果有一半就不错了,对于喜欢编程的人来说,在工作中如果能安静地没人打扰的编程,就是很舒服了。现在的工作,随着各个公司都提倡降本增效以来,哪个不是“身兼数职”,这个搞一下,那个支援一下,这里需要你,那里也要去解释说明。如果 AI 真的强,先把这些杂事做了吧,让人心累的不是敲代码,而是……

大模型生成代码这件事,我认为就是一个不稳定、不确定的事件,普通人没法很快地、准确地衡量甚至确定自己当前用的模型是不是真的,无法保证这个模型能持续稳定地输出代码、提供解决方案。经常可以看到“最近xxx模型是不是变弱了,xx模型是不是偷工减料了”这类问题,当人无法监督、无法度量AI,只凭借大模型公司他们的一家之言,这件事就让人感到挺虚的。


当然了,AI Agent 也给我带来了非常多的帮助,从最初的 chatgpt,到现在的 claude,从一开始的网页端问答,到现在使用 cursor、codex 这类 agent 工具,工作效率上是有了极大的提升,帮助我解决了很多工作中的难题,如果没有它们,我都不知道怎么艰难、花很多时间经历来度过。

言归正传,其实一开始写这篇文章的目的,只是想写在 AI 时代的编程应该要注意哪些问题。

我把这一年看到的问题捋了一下,大概能分成四类,写出来记录一下,这也是大模型迭代的历史见证材料吧。


第一类:设计和代码质量

以前写代码慢,是因为得先想清楚怎么设计。现在 AI 一下子就能给一大段实现,看着挺好,跑起来也没问题,但是慢慢会发现,这些代码普遍缺一样东西——结构感

具体表现是什么呢?重复的逻辑到处堆,该抽象的地方没抽象,复用意识很弱。每次任务来了,就像是一个新的熟练工来这个工程兼职几天,活干完就走,也不管之前做的啥样,也不管未来可能有什么影响。AI 本来就是”你让它干啥它就干啥”,它不会替自己操心这段代码半年后好不好维护。

有几个容易被忽略的点:

  • 测试写得偷懒。现在很多人是 AI 写代码、AI 写测试,测试通过就默认没问题了。但 AI 默认只测你说的那个场景,边界情况、异常路径基本不会主动覆盖。测试代码看着写的多,其实都是正常路径,一堆坑没测到。
  • 安全意识缺失。权限校验、输入校验、敏感信息处理,AI 不会主动加,除非你明说。功能测试也测不出来,等出问题往往已经是线上事故了。
  • 不管成本,只管跑通。AI 给的方案经常是”正确但费”——全表扫描、重复请求、内存占用大,反正能跑就行。这块得靠自己有意识去判断,不然一堆”能用但很贵、用不到还有副作用”的代码会悄悄溜进生产环境。

这类问题的共同点:**AI 优化的目标是”跑通”,不是”写好”**。这个判断力,还是得靠人。

第二类:系统协作和环境适应

这是我觉得最难被 AI 替代的一类能力。原因很简单:跨系统联调、环境迁移这些事,靠的是对具体环境的了解——网络配置、权限设置、版本差异、公司内部平台那些没写进文档的隐性规则。这些东西 AI 压根不知道,它的训练数据里没有,你的上下文里也很难塞得下。

有时候自己也无法提前想到,只有出了问题才恍然大悟。我自己都不知道的具体细节,AI 怎么可能替我想到?如果它偶尔能想到,说明这个问题是必要的,很多人犯过。AI 替人想到细节也不是一件好事,每次都这样做,就会让人烦躁:总是考虑一些对我来说无关紧要的细节(浪费token,浪费我时间去纠正),统计下来就几次能让我满意。

具体体现在三个地方:

一是跨系统排查能力。工程和工程之间、工程和内部平台之间出了问题,这种排查经常是”证据不全,得自己去挖”的活儿,跟 AI 擅长的”输入输出明确”的问题完全是两回事。这时候 AI 给你的建议,有时候听着挺有道理,其实是在瞎猜,反而会带偏你的判断。

二是本地能跑、线上出问题。这本质是环境不一致——依赖版本、隐藏的本地状态、写死的路径,这些东西 AI 写代码的时候默认”当前环境能跑就行”,根本不会考虑到”这段代码换个环境会不会崩”。这些问题新手是重灾区,一旦代码报错出现在 AI Agent 之外的地方,就手足无措了。

三是部署这个大坑。多语言、多平台、多依赖,这是所有前面问题的”总爆发地”。写代码变快了,但部署的复杂度一点没降,只是被”写得快”这个假象给盖住了。很多团队现在的感受是:AI 让写代码简单了,结果上线反而更难了——因为债都攒到最后一步了。我就遇到过,新人用 Agent 写了一个基于 Vue FastAPI 的前后端工程,只能跑在本地的 windows电脑,却不知道怎么部署到 Linux 上。

这一类能力,说实话没什么捷径,只能是真刀真枪踩过坑,才能长记性。

第三类:能用 AI 干活,但不懂原理

这条我觉得是最值得警惕的,因为它短期内根本看不出问题,是那种”温水煮青蛙”式的能力空心化。

表现是:能用 AI 完成基本任务,但代码怎么跑起来的、原理是什么,心里没数。一旦报错,排查起来完全没头绪,因为压根没建立过对这段代码的心智模型,只是”验收”了 AI 给的结果。这跟以前”抄网上代码但不懂原理”是一个性质,只不过现在被 AI 放大了很多倍,规模更大、频率更高。

跟这个连着的还有两个问题:

  • **分不清”能跑”和”对”**。以前初级和高级的差距主要在”写不写得出来”,现在这个差距正在往”能不能一眼看出这段代码写得对不对”迁移。这是一种新的能力——自己不用动手,但得能审、能挑错、能判断这方案合不合适。很多人分不清 AI 给的方案”能跑”和”合适”是两码事。
  • 对 AI 的确定语气太信任。AI 回答问题时语气通常很自信,哪怕是错的。排查问题的时候尤其容易踩这个坑——AI 可能给一个听着很合理、实际是编出来的原因,你要是没有”多问一句为什么”、”回去查查原始文档”的习惯,很容易就被带偏了。

这类的核心是:AI 能干活,但替不了你理解思考。理解这件事,只能自己一点点消化吸收。

第四类:协作和沉淀

这两条不完全是技术问题,更多是习惯问题,但因为 AI 让写代码变快了,反而更容易暴露出来。

一是需求转译能力被弱化。以前写代码慢,倒逼自己动手前多想一下,跟上下游多对齐几遍。现在写起来太快了,容易跳过”确认清楚”这一步,出了问题才发现是理解错了需求。这其实是能力被 AI 掩盖了,不是被增强了。

二是变更记录跟不上改动量。AI 辅助下改动效率变高了,但如果没养成写清楚 commit message、PR 描述的习惯,改动量一大,回溯问题就很难——因为”为什么这么改”这个信息,本来应该沉淀在记录里,而不是靠人脑记。

很多人总是习惯不写文档,同时也厌恶别人的工作不写文档。以前是懒,现在有了 AI,也没改变太多,我见过有的工程是 AI 生成的,但就是没有 README,你要是问他,他就回复你“你让AI阅读生成一个呗”。


写在最后

这四类问题归总起来:AI 拉平了”写出能跑的代码”这件事,但完全没有拉平”理解系统、对结果负责”这件事。这个落差,也是现在很大的风险点。

如果非要说一个应对思路,我觉得是这样:设计和质量这块,多靠 code review 逼自己想清楚;系统协作这块,没有捷径,只能多接触真实的环境和故障;原理理解这块,得养成”讲得出来”的习惯,不能只会”跑得起来”;协作沉淀这块,就是别让 AI 的”快”骗了自己,该对齐的还是要对齐,该记的还是要记。

写这些不是想否定 AI,AI 确实让很多事情效率高了很多。只是效率高了之后,责任心和判断力这两样东西。现在一听到同事说“AI生成AI测试AI修复,管不了怎么多了,还看啥,随便搞搞差不多了,还手动编程,都啥时候了”,就觉得挺无语的,一到验收时候,他负责的模块各种问题。