(本文写于飞机上,有啥写啥,内容很乱)
我坐在从广州出差回北京的飞机上,恰好略过武汉上空。向下看去,城市的灯光可以穿透薄的云层,却穿透不了厚的云层,就像水洗过后又晾干的羽绒被一下,东一块西一块的。
有时候不得不感叹,坐没有WIFI的飞机成了一种享受:飞机上没有claude code,没有codex,没有qwen,没有一切AI。我觉得我得到了久违的宁静。
五月份,随着我教会我们老板使用superpowers,整个开发节奏完全就不可把控了。他自己每天用上亿token,产出大量无法review的代码,然后辅以无法review的测试,就这样合入了master。而我在48小时内上线了一个完整的,带数据库,带s3存储,还有相当复杂事务操作的web后端,又用短短半天时间产出了对应的前端。与此同时,整个五月份我在安全核心系统上连续写出了两个bug,无一例外都是相对复杂的coner case,涉及到多领域的融合,当然,有一半代码也是ai写的。
我工作五年以来,从来没有这样连续的犯错。 我想,我可能在AI的浪潮中溺水了。
不知从何时起,我需要在任何领域中寻找一个确定性的东西,我称之为『锚点』。我喜欢确定性的东西:大学的时候,我参加学校的实验班,每个学生都有一篇发论文的机会。2019年,最火的技术是计算机视觉(e.g. yolo)和自然语言处理(e.g. bert),我的同学们大多租着显卡,把现有的模型套到某个场景中去,又或是对网络结构做一些微调,对不同参数单独打磨,训练。但我觉得他们做的都是纯粹的垃圾:使用一个丑陋的深度神经网络,在数学上难以解释的情况下,试图拟合一个你也不知道长什么样的函数,多么的愚蠢啊!而我,我去做了非常传统的强化学习,Q-Learning(现在想想实在是可笑,太可笑了)。我花了大半年的时间,把我的算法证明了一遍:在有限的迭代次数内,这个Q-Learning算法可以收敛到一个还不错的解。现在看来最愚蠢的应该是我:过程是没太大意义的,结果是最有效的。反正搞bert的同学现在已经在美国年薪xxx万了。
虽然我claude code和open code用的还可以,但是我仍然无法在AI coding中寻找到我想要的那个锚点。
有一个算法叫做『AC自动机』,AC是发明这个算法的两个人的名字缩写,和online judge、ACM或OI竞赛上的accept完全没关系。高中打竞赛的时候,我和机房的小伙伴在一起开玩笑的时候就讲,在未来,会不会有一种算法叫『自动AC机』,你把你要解决的算法问题丢给他,跑一边,就可以自动AC题目了。现在这个自动AC机真的来了(也就是LLM)。但是它是不确定的,混沌的黑盒,你永远不知道LLM下一步要做什么。在我看来所谓的SDD,更像是你一句话教不会AI,只好把需求重复很多遍,祈求ai跟随你的想法去做事。这还是在人类脑子清楚的情况下,更多时候人自己也不知道自己想做什么。过去的时候,即便你代码是从CSDN上复制的,你复制过来也要读一遍,因此很多思维上的不清晰与矛盾之处,在Coding这个过程中,经过程序员的思考,就被本质上消解了。但是,在AI Coding中,你永远不会对你写的代码进行深度的思考,大多数人甚至完全不看(过程不看,spec不看,代码不看),而是只关心结果。你虽然可以通过单元测试,集成测试来gating你的结果,但是这些测试的用例一般也是AI来写,对于一些edge case,AI是完全想不到的。当然,人类也想不到,你要是想到了,就会写在提示词里,所以AI在一开始就不会写错了。
说的有点乱,总结一下:在当前这个阶段,无论我们使用什么样的Harness Engineering,AI Coding在大型复杂系统上(如自动驾驶,电商系统)略逊于有经验的初级工程师。它会犯错,犯很多错。
另一个更可怕的点,是AI对工程师的思维和习惯的改变。人类是一个每天摄入2000大卡的生物,摄入完了最好就彻底不动歇着了,这是基因里本来就存在的。因此,有了AI之后,人会迅速地变懒。举个例子,以前的时候,我会精心设计单测的测试用例和测试框架,编写单测的时间一般都是业务代码的两到三倍。而现在我连跑单测都懒得跑,都是写到CLAUDE.md里:commit前注意跑单测。这显然意味着我对业务场景理解能力和对代码细节把控力的显著降低。更可怕的是,这种思维上的懒惰逐渐向上蔓延到设计文档和产品文档上。原先我们讨论一个新的系统设计时,我们会要求组内的同学不要互相交流想法,每个人想法完善后再讨论。这样做是为了避免思维定式:人脑是懒惰的,如果你得到了一个思路,很多时候会一直沿着这个思路走下去,即便这个思路并不是最优的,而过早的相互讨论,容易让整个团队follow同一个想法,陷入某个局部最优的方案中去。但现在,AI很快的就会给出多个思路(有可能每个都不好),人类很容易陷入惰性,完全不思考,或思考的非常浅。在我看来,AI给的设计永远是平庸的,差不多的。但是,在工作中,我们的目标必须是做到极致,这个时候必须有超越业界现有方案的,从范式上创新,甚至偏激的设计方案,这显然是AI无法给出来的。写到这里,我有一个更可怕的想法,AI Coding就像是刷抖音,它快速的给你浅层的,即时的刺激,大脑不断收到短平快的激励,最终会失去深度思考的能力。就像我现在,只有在飞机上才会想到这些,平常完全没有想法。这种情况在2022年以后入学的大学生上更加明显,他们是ai native的一代人:ai出设计,ai出spec,ai出plan,ai写代码,最后ai写出一坨。
(以上是我在飞机上写的内容,写到最后那飞机降落了,不得不停手)
AI Agent的出现完全改变了软件工程的范式,通过AI辅助编码,我可以在72小时内做出来一个完整可用的WEB平台,覆盖常见的增删改查业务,支持复杂的多表join和并发安全,甚至前端我也可以做的非常好看、流畅。这在过去都是想都不敢想的。我虽然上面骂了这么多AI,但是我还是希望能在变革的浪潮之中找到一个新的锚点。对于模型犯错、不理解业务、长程任务效果差的问题,我想再过个一两年,应该会有明显的改善。但是对于人类思考深度的问题,我持非常悲观的态度,未来或许只有非常少一部分人有着独立的深度思考能力了,在日常我们必须有意去训练这些能力。
或许我还要在AI的浪潮中挣扎很长时间,但是我相信,奇点来临之际,锚点也会降临的。

