推荐这篇文章。Redis 作者 antirez 的核心论点:控制想法比控制代码更重要。
他认为审查 AI 代码已经"大部分毫无意义"——真正该做的只有两件事:掌控设计,拼命做 QA。
看看这个博客过去的历史。有很多关于用 AI 编程的文章,其中一些可以追溯到 2024 年 1 月。毕竟,我是一个还算受尊敬的开发者。我不需要作为一个寻求关注的老头子留在"圈子里",我最近重新加入了 Redis,现在还在开发一个本地 LLM 推理的开源软件,在社区里受到了不错的欢迎。为什么我继续做这件事——说人们不想听的话?为什么我一直宣布未来的编程默认会是什么样子?因为我感到有一种紧迫感,想降低那些比我更没准备好应对变化的人受到的冲击,他们通常比我年轻,而且不像我,没有预见其中许多事情的发生(在 ChatGPT 出现之前,我就在 2022 年出版了一本书,预示了许多现在已经发生的事情,以及我相信将会发生的事情,所以我觉得我可以说这些而不显得自我中心)。
所以我的做法是一个技巧。人们越来越觉得编程被 AI 彻底改变了,不知道该怎么办,不知道自己是否真的可以用一种完全不同的方式开始编码,不再把代码当作主要的产出。他们觉得在背叛自己的领域。所以我的意图是站出来说"看着我,我会写代码,你知道的,我没有躲在 AI 后面:然而,事情变了,这不是你的弱点,不是你中了 AI 的毒。只是我们的领域正在朝着一个令人难以置信同时又痛苦(但也快乐)的方向演进。"
这就是为什么昨天我在 X 上说,我相信许多程序员现在的影响力比他们本可以达到的要小,因为他们在盯着代码看。我真的相信这一点。请注意,这并不意味着用 vibe coding 的方式直接要最终产品。重点是:如果你掌控了你软件的想法,盯着代码本身是次优的,而且常常毫无意义。 原因如下:
1. 你现在可以生成大量代码,即便不计算 LLM 的代码啰嗦问题(那也大部分是因为你还不能很好地 instruct 它们)。你打算怎么每天审查 5000 行代码?
2. LLM 非常擅长写局部最优的代码,但在大想法上更弱(虽然在改进)。逐函数、逐行地扫描有什么意义?相反,你应该把你心里的设计 prompt 进去,有时候问"那个部分的精确设计是什么?它是怎么工作的?"然后评估它是不是正确的模型。这快得多。
3. 工作日是 8 小时。如果你在读代码,这是一个取舍。你在减少做另一件事的时间——今天你工作中最重要的那部分:问自己"我在用这个软件做什么?我想往哪个方向走?"以及想新想法、新功能、优化技巧。以及做大量的 QA。
掌控想法。记得《人月神话》里的这句话吗?一本 70 年代的书告诉我们关于当前软件时代的东西,比 2000 年到 2020 年间说的很多东西都多。为什么现在抗议 AI 的人,没有被过去十年软件的状态所震惊?我们在最近几年——在 AI 之前——触碰到的 slop 水平是不可想象的。我再告诉你一件事。什么是 slop?用 DwarfStar 我完全自动化地实现了两个 LLM(DeepSeek v4 和 GLM 5.2)的推理:但你自己试试,你会发现你不能只是说"实现 XYZ"然后就看到它能用。你必须理解事情是怎么运作的,什么是最好的设计,如何达到某个性能水平。然后我把实现和其他系统做了对比,检查正确性,发现其他实现有时包含更多错误。我进一步研究,发现本地推理领域充满了微妙的错误,累积起来会损害模型输出——attention 实现中的问题导致上下文超过某个限度后性能滑坡,因为索引 attention 的实现是坏的(比如做了超过应该做的工作),等等。这是一个非常复杂、快速变化的领域,每天都有模型发布,推理图彼此略有不同。对开发者来说,这是一个不公平的游戏。好吧:AI 在这方面的帮助极大。在许多领域,严谨的工程(在设计层面)和测试远好于手写一个 GPU kernel(或逐行读它)。所以我们确定大部分抵抗不是意识形态吗?
Matteo Collina 昨天回复我的推文问我:但你不是说过你会检查 Redis 的所有 AI 生成代码吗?这确实是一个好问题。是的,我做,但这在这一点上是我需要做的事情,但我相信大部分时候是毫无意义的——部分是在 GPT-5.5 发布之后,但现在有了 Fable 和 GPT-5.6 Sol 更是如此。是的:我发现了一些我不喜欢它们被编写的方式,但如果我打开其他 Redis 贡献者写的 Redis 文件,里面有远更糟糕的东西,不是因为他们不是好的程序员,而是因为这是一个品味问题。我写非常干净的代码,因为我希望它是可读的,所以在 Redis Arrays 的实现过程中我做了修改。我现在又在为 Redis sorted sets 的 50% 内存节省优化做同样的事,一个我很快会提交的 PR。但我不觉得这还有用了。没有人应该再盯着这段代码看,而应该只看代码包含的想法。我继续这样做是出于对用户的尊重。Redis 已经是一个被广泛使用的东西,许多程序员会打开文件,手动修改东西。但如果我完全自由,你知道我会怎么做吗?把审查占用的所有时间用来做更多的 QA,想下一个优化思路并应用它,以及用 LLM 写一个 DESIGN.md 文件——用人类语言描述每个数据结构,包含它承载的想法、实现技巧和设计。将来,这比审查代码有用得多。 你想修改 sorted sets?你打开文件,读设计文档,你就拥有了这些想法。你可以打开 agent,用正确的思维模型让它帮你做事。这比审查代码有用得多。
Fable 和 GPT-5.6 对 sorted sets 内存节省的审查,将比我自己的审查发现更多的错误和微妙的竞态条件。然而我还是会做。但对于大多数软件项目,所有这些已经不再有意义。专注于掌控想法。专注于质量、测试、以及对你想要交付的软件有一个清晰的构想。世界变了,这是痛苦的,但同时也充满了机会——去改善一个已经彻底腐烂的软件世界。
我只有一个疑问,关于那些经验不够、无法建立心智模型的年轻程序员。我们不知道他们是否需要深入理解一段代码是怎么工作的,但我相信他们应该学怎么写程序。然而,我不确定检查 LLM 输出是不是他们应该做的正确的事。学一门编程语言,实现一个小解释器、一个小数据库、一个哈希表等等——这可能有用得多。审查某个客户网站的 JavaScript?算了吧,别把时间浪费在那上面。
原文:
#
AIProgramming# #
SoftwareEngineering# #
antirez#