用了 AI 写代码之后,我连烂代码都认不出来了

用了 AI 写代码之后,我连烂代码都认不出来了

说个自己的变化。

去年底开始,我日常写代码的方式彻底变了。现在 90% 以上的代码是 AI 写的,我基本只做描述需求、审查结果、微调细节。一开始是强迫自己用,后来是真的离不开了。

效率确实高了。但最近几个项目回过头看,隐隐觉得哪里不对。

人都会选更省力的路

AI 写代码为什么能这么快流行?不是因为它写得多好,是因为它太省力了。

描述一下需求,代码就出来了。跑一下没报错,直接合进去。以前会逐行看的习惯,慢慢就省了。以前会想”这个结构是不是最优的”,现在想的是”能跑就行,下次再说”。

这不是什么意志力问题,是人性。人天生会选阻力最小的路。AI 把写代码的阻力降到了接近零,审查代码的习惯自然就跟着松了。

前特斯拉 AI 总监 Karpathy 前阵子说过类似的事。他用了一个词,Atrophy,衰化。当你大部分时间让 AI 写代码,手动写代码的能力就会慢慢退化。不光是手速变慢,犯的错误类型都变了。以前是语法错误,现在是概念错误。

他还提了个词,Slopacolypse,大量 AI 生成的低质量代码正在涌入各个项目。我自己的也不例外。

局部没问题,整体在下滑

最近几个项目复盘,我发现 AI 写的代码有个一致的毛病:局部逻辑没问题,整体质量在下滑。

比如有个需求,判断文章标题是否合规,规则好几层。有经验的工程师会用责任链模式,每条规则独立封装。AI 怎么写的?if-else 套了四五层。能跑,但三个月后就是技术债。

以前我一眼就能看出这种问题。现在呢?扫了一眼,差点直接合进去了。

这才是衰化最可怕的地方,不是你写不出好代码了,是你认不出烂代码了。

代码衰化:从手速到眼光的转变

怎么防

这是个真实的问题,但也是个系统工程问题,意味着它有方法可以解。

第一,边重构边开发。

AI 写完一段代码,别急着往下走。停下来,看一眼结构,顺手重构。该拆的函数拆出来,该改的命名改掉,该删的冗余删干净。这不是额外的工作量,这就是开发的一部分。AI 负责出活,你负责把关结构。

第二,让测试替你守门。

以前测试驱动开发(TDD)推了很多年,推不动,因为写测试太烦了。现在反过来了。你写验收标准,AI 写测试和实现。测试本身就是一道防线。AI 改了三个文件十几个函数,你未必每行都看得过来,但测试全绿,至少心里有底。

不是自己写的代码,更需要安全网。

第三,从底层提升代码品位。

光重构不够,你得知道什么是”好”。这就是品位的问题。

什么是代码品位?我觉得最核心的一个字:简。好代码的本质,就是用最简单的方式解决问题。AI 写的代码往往不简洁。它喜欢加防御性代码、加多余的抽象层、加你根本不需要的功能。它什么都想覆盖,反而失去了重点。

有品位的工程师看到这种代码,第一反应是删。删到只剩必要的部分,就对了。

品位不是天赋,是你在无数次”这里不对”的判断中磨出来的直觉。前提是你得持续做判断,而不是把判断也交给 AI。

以前写代码拼手速,现在拼眼光

代码衰化不可怕,可怕的是你没意识到自己在衰化。

Karpathy 说 Vibe Coding 够用,但他后来自己补了一个词叫 Agentic Engineering。意思是,指挥 AI 写代码也是工程,也需要架构能力、拆解能力、质量把控。AI 改变了代码的生产方式,但没改变系统的复杂性。

以前写代码是手艺活,现在是监工活。监工的前提是你得比干活的人更懂活该怎么干。

代码能力在变,职责也在变。关注 YannTalk,一起想清楚。