用了半年 AI 编程,我发现变的不是代码,是脑子

0 阅读12分钟

前几天改一个老项目的接口,我打开编辑器,手指放在键盘上,然后愣了一下。

我发现自己不是在想"这个函数该怎么写",而是在想"我该怎么跟 Claude 描述这个需求,它才能一次做对"。

就是这个瞬间,我意识到:用了大半年 AI 编程工具,变化最大的不是代码产出量,是我的脑子。

写代码确实快了,但这不是最重要的事。我思考问题的方式被改了。这篇文章聊聊这种变化到底是什么。

太长不看版

  1. AI 编程最大的改变不是效率,是思维方式:从"怎么实现"转向"怎么描述清楚"
  2. 你的第一编程语言正在变成自然语言,写好 prompt 比写好代码更难
  3. 开发者角色在变:从写代码的人变成审代码的人,对专业能力要求更高了
  4. 放弃对每一行代码的控制欲,反而能获得更强的系统掌控力
  5. METR 研究打脸:开发者觉得自己快了 20%,实测反而慢了 19%
  6. AI 生成的代码表面干净,隐性技术债却在悄悄堆积
  7. 有些编码直觉确实在退化,得有意识地保持手写练习
  8. AI 编程真正值钱的地方在于:它逼你想清楚再动手

第一个变化:我的"编程语言"换了

写了十几年 Java,我从没想过有一天,"把需求说清楚"会比"把代码写对"更重要。

但现在就是这样。深度使用 Claude Code 之后,我每天花在自然语言上的时间越来越多:写 prompt、写 CLAUDE.md、写 Skill 定义、写需求描述。代码反而成了 AI 的输出物,不再是我的直接产物。

以前拿到一个需求,脑子里立刻开始"翻译":这个功能要几个类,哪里需要接口抽象,数据库表怎么设计,API 路径怎么规划。从业务语言到技术实现,一条路走到底。

现在我的第一反应变了:我怎么描述这个需求,AI 才能准确理解我要什么?

听起来好像只是换了一个翻译对象。但这两种"翻译"需要的能力完全不一样。

写代码是精确的语法映射:你知道 for 循环怎么写,知道 HashMap 和 TreeMap 的区别,确定性的知识,练多了就熟。

给 AI 写需求是意图的精准传达:你得把脑子里模糊的"我大概想要这样"变成清晰的、没有歧义的描述。这要求你先想清楚自己到底要什么。说实话,很多时候我们代码写得飞快,恰恰是因为没真想清楚。

Andrej Karpathy 去年初提 "vibe coding" 的时候说:"我只是看东西、说东西、运行东西、复制粘贴东西,然后它基本就能跑。"

听着随意,但他描述的是一种新的分工:开发者负责"想"和"说",AI 负责"写"和"改"。在这个分工下,想得清楚、说得明白,就是你最值钱的能力。

我自己的感受是,prompt 写得好不好,直接决定了 AI 编程的产出质量。同一个需求,模糊地说"帮我写个用户管理模块"和详细描述"需要一个 RESTful 的用户 CRUD 接口,用 Spring Boot 3.x,JPA 做持久层,包含分页查询和按角色筛选,返回 DTO 不暴露密码字段",AI 给你的东西天差地别。

以前觉得"需求不清"是产品经理的问题。现在发现,很多时候首先是我自己没想清楚。

第二个变化:我不写代码了,但我更懂代码了

乍一看矛盾,但这是我这半年最真实的感受。

MIT Technology Review 在一篇调查报道里用了一个说法:开发者正在从"创造者心态"转向"法医审计者心态"。2026 年的核心技能不是写一个快排算法,而是看着 AI 生成的快排,瞬间发现它用了一个不稳定的基准值。

这要求更高的专业水平。

我自己的体验也是这样。AI 生成的代码有一个"阴险"的特点:它看起来特别完美。格式整齐、注释到位、变量名规范、逻辑看起来清晰。正因为这种表面的完美,bug 反而更难被发现。

以前自己写的代码像手写笔记,潦草的地方自己心里有数。AI 生成的代码像印刷品,排版精美,但错别字藏在里面,得逐字校对才能抓到。

Anthropic Claude Code 的负责人 Boris Cherny 说过:"这才是模型真正在编程,而不仅仅是在谈论编程。"反过来,开发者也得真正在审代码,而不是扫一眼就过。

这种审计能力,只有你对系统有深入理解才管用。你得知道这段代码在整个系统中的位置,判断异常处理够不够完备,预见高并发下会不会出问题。这些判断力不是 AI 能替你长的,是你这些年写代码攒下来的经验在起作用。

AI 编程不是让开发者"不需要懂代码了"。它把要求从"能写"提到了"能判断"。

第三个变化:我学会了放手

这个变化最反直觉。

以前我会纠结变量名用 userList 还是 users,反复调整循环的写法,为了一个函数的参数顺序琢磨半天。十几年养成的习惯,我一直觉得这是好事。

用 AI 编程之后,这习惯成了障碍。

你越想控制每一行代码,就越容易陷入和 AI 的拉锯战。它生成的代码风格可能和你不一样,你改了它又改回来,来回折腾。IndeVets 的 CTO Nico Westerdale 用 AI 生成了 10 万行代码,他总结的经验是:放弃对单行代码的控制权,把注意力放到整体架构上。

我现在的工作方式跟半年前完全不同。以前是边想边写,打开编辑器就开干。现在大量时间花在"开工前":

  • 先和 AI 充分对话,敲定设计方案
  • 把接口契约、命名规范、目录结构定义清楚
  • 写好 CLAUDE.md 和 Skill,让 AI 理解项目上下文
  • 然后放手让 AI 执行,我只盯关键节点

有点像从程序员变成了技术经理。你不再亲手写每行代码,但精力都花在真正重要的决策上,对系统的掌控力反而更强了。

开源开发者 Armin Ronacher 的经历类似。他现在 90% 的代码是 AI 生成的,但花了好几个月反复试错才找到有效的工作方式。关键不是会用工具,而是知道什么时候该信任 AI,什么时候该自己接管。

不舒服的真相:效率可能是一场幻觉

思维方式的变化聊完了,该说点让人不太舒服的事。

非营利研究机构 METR 做了一项实验:让有经验的开发者自评 AI 对效率的帮助,然后做客观测试。结果是:开发者自认为快了 20%,实测反而慢了 19%。

image.png

软件咨询公司 Substantial 的开发者 Mike Judge 看到这个研究后,自己做了六周对照实验。每次接到任务就抛硬币,正面用 AI,反面手写。结果 AI 让他的中位速度慢了 21%,跟 METR 的数据几乎一样。

他说了一句让我印象很深的话:"你记住了中大奖的时刻,却忘了坐在老虎机前投币的两个小时。"

确实,有些任务 AI 能带来 20 倍提速,比如生成样板代码、写测试、处理重复性工作。但也有些任务,AI 把你带进兔子洞,花了大量时间纠缠,最后还不如自己写。人的记忆有选择性偏差,赢的时刻记得清清楚楚,输的时候自动过滤了。

Judge 还做了一个分析:如果 AI 编程工具真的让开发者效率飙升,那 GitHub 上的新项目数量、新应用注册量、视频游戏发布量应该出现明显增长。他花了几百美元分析所有公开数据,发现哪条曲线都是平的。

"增长曲线在哪里?"他问。

还有一个让我警觉的事:有些编码能力确实在退化。

游戏基础设施开发商 Companion Group 的工程师 Luciano Nooijen 在工作中重度使用 AI 工具,有一次做个人项目没有 AI 辅助,发现曾经信手拈来的操作变得笨拙了。他自己说:"我觉得自己好蠢,以前靠直觉就能做的事变成了需要手动操作的笨活。"

我现在每周会抽一些时间纯手写代码,不用任何 AI 工具。就像运动员再厉害也得做基础体能一样,编码的肌肉记忆需要维护。

还有一个容易被忽视的问题:AI 生成的代码正在制造隐性技术债。

代码质量分析公司 GitClear 的数据显示,2022 年以来代码的复制粘贴量大幅上升,代码重构量反而在下降。Sonar 的研究发现,AI 生成代码中超过 90% 的问题属于"代码异味",表面上看不出 bug,但在长期维护中不断制造麻烦。

Sonar 的 CEO Tariq Shaukat 说了一句话:"容易发现的问题正在消失,留下的都是更复杂的、需要很长时间才能发现的问题。你几乎是被哄进了一种虚假的安全感。"

这句话让我后背有点凉。

还有一点没展开但值得提一句:个人开发效率的提升不等于团队效率的提升。一个人用 AI 写代码快了,但生成的代码量涌进 Code Review 流程,反而把上游的高级工程师堵住了。这个问题比较大,改天单独聊。

那真正的超能力到底是什么?

说了这么多不舒服的事,是不是说 AI 编程不值得用?

不是。我觉得它是我职业生涯中遇到的最有价值的工具。只是它的价值不在大多数人以为的地方。

用了半年,我发现 AI 编程给我的不是"写代码更快",而是几个认知层面的变化:

我学会了提前想清楚再动手。因为 AI 逼着你把模糊的想法变成精确的描述,这个过程本身就是思维训练。以前我经常"边写边想",代码写到一半才发现设计有问题。现在我必须提前想清楚,否则 AI 生成的东西就会跑偏。

我开始看到更大的图景。不再埋头于实现细节之后,注意力自然会抬起来。我现在花更多时间思考模块之间的边界、数据流的走向、错误处理的策略。这些原本容易被"赶工"挤掉的思考,现在成了工作的核心部分。

我审代码的眼光变利了。大量审查 AI 生成的代码,让我对"好代码"和"看起来好的代码"的区分越来越快。有点像资深编辑看稿子,看多了,哪里不对劲一眼就感觉到。

MIT 教授 Max Tegmark 提出了一个叫 "vericoding" 的概念:开发者只需要给出规格说明,AI 生成代码的同时还能提供数学证明,保证代码完全正确。"你不需要碰代码,甚至不需要看代码。"

这还是未来的事,但方向已经很清楚了:开发者的核心竞争力正在从"实现能力"往"定义能力"上迁移。定义清楚你要什么,比亲手写出来更值钱。

给不同阶段的你一些建议

如果你还没开始用 AI 编程:

  • 别追求效率提升,先习惯"把意图说清楚"这种思考方式
  • 从小任务开始:生成测试、写样板代码、解释陌生代码
  • 注意:AI 在你不熟悉的领域反而可能帮倒忙,因为你判断不了它的输出对不对

如果你已经用了一段时间:

  • 做一次对照实验,客观评估 AI 到底帮了你多少
  • 警惕认知偏差,别只记住"中奖时刻"
  • 定期纯手写代码,保持基本功
  • 花时间写好项目级的上下文文档(CLAUDE.md、Skill 等),这比优化单条 prompt 更有长期价值

如果你是技术管理者:

  • 别只盯着代码产出量,GitClear 的数据已经说明了:产量上去了,质量不一定跟得上
  • 先把编码规范、设计模式、Code Review 流程理顺,AI 工具会放大你的工程文化,好的坏的都会被放大
  • 关注技术债的隐性增长,尤其是代码异味类问题
  • 开发者只有 20%-40% 的时间在写代码,要提效得看整个工作流

AI 编程不是从一种技术栈切换到另一种技术栈,它改变的是你看待问题和解决问题的角度。

半年用下来,写代码快不快这件事我已经不太在意了。我在意的是:我想问题比以前更清楚了,表达需求比以前更精准了,审代码比以前更有底气了。

这些变化,比多写几行代码值钱得多。

Niko-白色版.png