Alt text: 程序员站在岔路口,面对传统代码编辑器和AI助手界面的选择,体现AI时代的分水岭时刻2024年的最后一天,Redis之父Antirez在博客里写下一句话——
"我现在花在实际编写代码上的时间不到10%。"
不是因为他偷懒,而是因为说这话的人,曾经把"手写代码"当作信仰。他写Redis用的是C,一门最硬核的语言;他调试过无数竞态条件、死锁、内存泄漏;他在系统编程的黑暗森林里摸爬滚打了几十年。这样一个人,居然说自己不怎么写代码了。
更戏剧的是,他曾经强烈反对AI。不是技术上的质疑,而是价值观层面的抵触——他甚至把这种愤怒写进了小说,希望AI经济崩盘、体系瓦解。可到了2024年末,他"彻底反水"了。
为什么?
事实打败了立场。你可以讨厌一样东西的社会后果,但你不能在智力上欺骗自己。当他真正把AI扔进系统编程的高摩擦地带——TCP死锁、纯C写推理引擎、架构对齐——他发现过去被认为高度依赖人类经验的任务,如今AI能在短时间内完成。
这不是"AI会不会取代程序员"的口水战,而是一个更残酷的事实正在浮现:
"写代码"在当前技术环境下,已不再是主要价值锤点。
程序员的价值锚点,正在发生一场静悄悄的迁移。而大多数人还没意识到,自己站在了分水岭上。
一、Antirez的"打脸实验":当系统编程也能被几小时碾压
你可能会说:"不就是生成个能跑的小玩意吗?我也会用ChatGPT写几行脚本。"
这正是大多数人的认知停留点。他们讨论的是"Hello World",而绕开了真正的战场——系统编程、竞态条件、死锁、性能边界。这些曾经是“老派大神”的护城河。
Antirez的体验之所以震撼,正是因为他把AI扔进了这些"高摩擦地带"。结果不是"可用",而是"离谱"。
TCP死锁、时序问题、极难复现的bug
想象一下过去的场景:你盯着GDB的乱码,在黑暗里摸索,靠经验、直觉、耐心一点点逼近真相。而Antirez的描述是:他把问题交给Claude,AI自己迭代、自己检查进程状态、自己改到通过。人类在旁边的角色更像“批准者”。
纯C写BERT推理库
这不是简单的语法翻译,而是跨学科难题:既要懂模型结构,又要懂底层实现与性能权衡。Antirez给出的数字是:AI五分钟写了七百行左右,性能只比PyTorch差一成多。
这意味着"知识+样板+常见优化路径"这一整类工作,被直接压缩到分钟级。
复现RedisStreams内部架构设计
更恐怖的是,AI不只是"写",甚至可以在你给定文档后"对齐"你的设计意图,把架构产出得像你自己写的一样。
这里的关键不是AI有多聪明,而是它把过去"需要大量手工劳动的环节"自动化了。
Antirez说得很直白:
“逐行雕琢代码,在今天成了最不重要的部分。”
二、编程的核心从"敲键盘"迁移到"提供心理表征"
Alt text: 系统编程的高摩擦战场,展示TCP死锁、编译器错误、调试器等复杂技术元素的抽象可视化过去我们把程序员想象成工匠:掌握语法、工具和库,然后把需求翻译成代码。
AI出现后,最先被抽走价值的正是这一层——翻译层。
你是不是也有这种体验?很多工作其实不难,难的是"启动成本高":配置环境、查文档、拼API、写样板、处理边角料。这些事情单独都不难,但加起来就让人烦躁。
AI在这些地方是显著的效率提升。
工程师的角色开始迁移:
你不再主要输出代码。你输出的是:上下文、约束、审美、设计、风险判断。你把这些"只有人类脑子里才有的东西"注入给模型,然后让模型去做苦力。
这就是Antirez所说的自己从工匠变成"操作员"。
这里有个常被误解的点:很多人把"会写提示词"当成新门槛。其实提示词工程师这个概念很虚。
真正的分水岭不在提示词,而在你是否能提供高质量的心理表征(mental representation)——也就是你对系统的内在模型:
你知道什么能做、什么不能做;你知道哪里容易炸;你知道性能和一致性的交换条件;你知道这段代码为什么要这样写而不是那样写。
AI不是把门槛变低,而是在重塑门槛:语法门槛降低,系统理解门槛提高。
三、AI的本质:它是插值引擎,不是发明引擎
Antirez对AI的定义很尖锐:插值引擎、白痴学者。这套定义能解释为什么AI有时像神,有时像废物。
在"训练数据包络线"内,AI博学、熟练、高效。但一旦需要外推,需要发明新算法、新结构、突破既有范式,它就容易崩。
这也解释了Antirez的另一个实验失败:把Selvespace的GUI从一个版本移植到另一个版本,几百行的移植任务,按理说是"翻译工作",结果AI失败了。
为什么?因为这不是语法替换,而是状态管理逻辑重构:生命周期变了、信号机制变了、跨几百行的隐式依赖需要人类理解并重新组织。对于插值引擎来说,这属于"深层结构变形",它很容易写着写着就删除大段代码、陷入循环修补、产出看似合理实则不一致的拼接物。
反过来,如果是"包装器/绑定层"工作,比如C映射到Rust,AI就非常强:逻辑不需要发明,只需要严格对齐;写错也没关系,编译器会告诉你哪错了,你把错误回灌给AI,修到对为止。
AI适合做"无聊过滤器"(Toil filter),不适合做"未知开荒者"。
四、真正的陷阱:生产性挫折消失,内脏式理解被抽空
Alt text: 插值引擎vs发明引擎对比图,左侧展示AI在训练数据包络线内的强大能力,右侧展示在需要创新时的局限如果你只看效率,你会觉得世界变好了:活更快了,学习成本更低了,原本懒得做的小工具也变得可行。
但Antirez提出了一个更隐蔽也更可怕的悖论:
当AI抹平痛苦,它也抹平了你变强的路径。
想想你的成长过程:系统编程里的很多理解不是"看文档"得到的,而是被痛苦喂出来的——你和编译器搏斗、盯着GDB的乱码、为了一个竞态条件通宵、为了内存对齐反复试错。
烦吗?烦。
但那种对bug的嗅觉、对风险的本能反应,正是工程师真正值钱的地方。
如果AI把挫折感一并消除,会出现一种新物种:沙上建筑师。他们拥有代码的所有权,却失去对代码的智力控制权。
平时看不出来。一旦遇到万分之一概率的竞态条件在生产环境炸掉,你会直接跌入**"调试悬崖"**:
你面对一台以你名义建造、但你并不理解的机器。你没有直觉,不知道从哪里下手,也没有办法判断AI给你的修复到底对不对。那时候灾难就不是"慢一点",而是"直接崩"。
或许更危险的,不是AI会写错,而是人类会在长期依赖中失去内脏式理解。
五、行业的新分层:提示员 vs 操作员
Alt text: 调试悬崖概念图,程序员站在悬崖边面对难以理解的代码和错误信息,体现失去智力控制权的危机Antirez的判断可以用两个角色概括:
提示员(The Prompter):把AI当替代者:"你写吧,我看看能不能跑。"
这种人短期爽,长期最危险——他们的能力被锁死在模型的平均值里。一旦遇到非典型问题、深层调优、架构创新、边界故障,他们会崩。更残酷的是,他们也最容易被下一个更强的模型直接淘汰。
操作员(The Operator):把AI当动能武器:对准高摩擦、低价值的垃圾时间——样板代码、绑定层、测试数据、一次性脚本——把它们清空。然后把省下的脑力砸向真正困难的地方:架构、调试、性能、分布式一致性、系统边界。
一个想让AI替代自己,一个踩着AI往上爬。区别就在这里。
六、一种值得尝试的生存策略:用AI消除劳役,但保留工作
Antirez给了两个很实操的建议:
Alt text: 提示员vs操作员对比图,左侧是能力曲线平缓的被动提示员,右侧是能力持续上升的主动操作员方法一:拒绝"一句流",把隐性约束写成显性契约
别再说"帮我写个XXX"。你要把你的品味强行注入进去:内存对齐、禁止递归、错误处理风格、性能目标、线程模型、数据结构选择理由。
你越清晰,AI越像顶级施工队;你越模糊,AI越像胡说八道的热心网友。
方法二:坚持"人在回路中",对抗理解幻觉
一个很笨但很有效的习惯:不要让AI直接改文件。你手动搬运代码、逐段粘贴、逐段审查。这个物理过程强迫你的大脑扫描每一行,戳破"我好像懂了"的幻觉。
AI的速度会诱导你放弃审查,因为审查是慢的。但恰恰是慢,才是你保留理解的方式。
七、最后的判断:写代码不再神圣,但构建依然神圣
我们需要承认一个事实:"手写代码"曾经是一种仪式,带着工匠精神和人类触感。它让人上瘾,因为它满足控制欲,满足"我掌控一切"的快感。
但务实的分析必须超越怀旧。
你通宵写代码,到底是为了享受打字,还是为了让系统跑起来?真正的价值更应聚焦于构建,而非仅关注敲击键盘的过程。
AI递给你的不是轮椅,也不是王座,而是一根登山杖。它会让你走得更快,但也会让你更容易摔死——如果你放弃了对地形的理解。
所以每个工程师都该经常自问一句:我现在使用AI的方式,是在退化,还是在进化?