Peter Steinberger合并了我的第二个PR的那天晚上,我坐在电脑前愣了很久。

Peter是OpenClaw的创始人。在欧洲开发者圈子里是传奇人物,卖过上亿欧元的公司,写了二十多年代码。他亲手点了那个绿色的Merge按钮,把一个中国文科生用AI写的代码并进了他的项目。那个按钮变绿的瞬间,我的MacBook屏幕亮度好像都跳了一下。

我当时的第一反应是困惑。我完全不懂代码。我不知道这个PR里的十五行Python具体做了什么。我只知道用户从邮件里复制API密钥的时候经常带上看不见的空格,然后花几个小时怀疑自己复制错了。解决方案就是加一行trim。

十五行代码,影响几千个用户。

这是视角胜利。

看得太清楚的代价

认知科学里有个概念叫"知识的诅咒"——一旦你掌握了某种知识,你就很难再站到不知道的人的角度去思考。

写了十年代码的工程师,打开一段AI生成的代码,大脑会自动运转:变量命名不规范、缩进风格不统一、这个地方应该用策略模式、那个函数太长需要拆分。这些判断都对。但每一次判断都是一次干预,每一次干预都是一次微操。累积起来,他把AI拉回了自己的认知框架里。

AI选择那条"不规范"的路,经常有它的理由。也许工程美学上不够优雅,但在速度或对需求的理解上,可能比工程师预设的方案更好。

不会代码的人没有这个问题。他们看不懂代码,没法微操。他们被迫只能给目标,然后放手。

你有什么资格告诉梵高用什么笔触?

这句话听起来刺耳,但逻辑成立。如果AI在某个领域的能力已经远超你,至少在速度和广度上远超你,那你逐行修改它的输出,是在用一个更低的标准去覆盖一个更高的标准。

还有一层。技术开发者身上有一种几乎是本能的冲动——看到一个不完美的工具,第一反应是从头自己写一个。程序员社区推崇"自己造"的精神,用别人的框架是"依赖",自己写的才是"真正理解"。这在UNIX哲学盛行的年代是美德。但在AI时代,这种本能变成了陷阱。我见过工程师花三周写一个部署脚本,因为"市面上的CI/CD工具不够灵活"。三周后脚本写完了,产品还没上线。

两层滤镜叠在一起——既要审查代码质量,又要亲手造轮子——把80%的时间花在了20%的价值上。

我给AI下达的那条指令,到今天我觉得依然是我做过最聪明的决定之一:"尽量改动最少的代码量,但对用户体验的提升要尽可能大。"

我不知道什么代码是好代码。但我知道什么体验是烂体验。我不会找Bug,但我会找痛点。我是用户。

一个工程师的自白

直播里我问Will:"你觉得你用Claude的方式,最大的问题是什么?"

他想了一下说:"我太知道代码应该怎么写了。每次Claude给我一个方案,我会下意识地去审查。这个写法效率高不高?命名清不清楚?有没有edge case没覆盖?审查完改完,Claude变成了一个听我指挥的初级程序员。但它本来可以是一个跟我水平差不多的同事,甚至在某些地方比我强。"

他顿了一下:"我一直在纠正AI。但也许AI那些'不规范'的写法里,有些东西是我十年经验没覆盖到的。我不知道。因为我在它展开之前就把它关掉了。"

这是一个写了十年代码的人,用了一年AI之后说出来的话。

我听完觉得这很像一个老问题的新版本。工匠时代向工业时代切换的时候,最优秀的手工匠人是最后接受机器的人。他们的手艺太好了。亲手做的每一件产品都比早期机器做的精致。但机器的产量是他们的一千倍。坚持手工的人赢了品质,输了规模。等到机器的品质追上来,连品质这个论据也站不住了。

Will的代码审查能力,就是他的"手艺"。它很好。但当AI的代码能力以月为单位在跳跃式提升的时候,用自己的手艺去规训AI,是在给自己的上限画线。

诚实的部分

我必须说一段诚实的话。

我放手容易,是因为我在技术领域是白纸,没有沉没成本。我拿到AI写的代码,看不出好坏,只能看结果。跑得起来吗?用户体验流畅吗?问题解决了吗?这种"无知"碰巧是对的,但它是运气,不全是智慧。

对写了十年代码的工程师来说,"松手"意味着承认自己的手艺在贬值。这是身份问题。

你花了二十岁到三十岁最好的十年,每天十二个小时打磨一门手艺。它定义了你是谁,你的自尊,你的朋友圈,你的薪资,你看世界的方式。然后有人告诉你:现在你要放下这个东西,用一种你觉得"不对"的方式工作。

这跟让一个钢琴家改弹电子琴差不多。技术上可以做到。心理上是一场小型死亡。

所以当我说"不懂代码的人用AI比工程师强"的时候,我说的是在目前这个特定的时间窗口里,有一种结构性的优势属于外行。这种优势来自无知,没有东西需要放下。但这种优势会消失。一旦技术专家完成了心理上的切换,真正接受AI是合作者而非工具,他们的深度理解加上AI的执行力,会比我这种纯外行强太多。

Peter合并那个PR的时候,他留了一句评论。大意是这个改动很小但很有用。

他没问我会不会写代码。代码在那儿,问题解决了,用户不再卡在一个看不见的空格上。这就够了。

区别不在于你知不知道代码。在于你能不能在该放手的时候放手。而在这件事上,什么都不知道的人,暂时领先。