90年代盲棋课:AI编程的启示
What my dad taught me about AI coding in the 90s

90年代夏天,父亲教我下盲棋,让我明白高手靠的不是死记硬背,而是对棋局关系的深刻理解。如今,随着LLM在编程领域的爆发,软件工程师正面临类似挑战。许多人沉迷于'vibecoding',只提需求不看代码,但这无法构建持久软件。真正的强者,如同盲棋大师,需在脑海中构建清晰的代码模型,理解抽象逻辑与API接口间的战术关系。即便不亲手写每一行代码,也要保持对系统的掌控力。那些早已具备这种深度思维能力的程序员,将在AI时代如鱼得水,驾驭Claude Code等工具,实现前所未有的效率飞跃。
但我要论证的是,定义一位强大盲棋选手的技能,与那些能在Claude Code终端前游刃有余、既不阅读也不编写代码的程序员所拥有的技能,是完全相同的。
HN 评论区
45- simonw
我对盲棋与提示 LLM 之间的这种类比并不完全信服。
在盲棋中,你能获得关于棋盘状态的确定性信息:你对棋盘模型的每一次心理更新都可以非常精确,并且在任何时间点你都能掌握完整状态。
而 LLM 众所周知是非确定性的,即使温度设为零,你仍然无法准确预测权重下一步会将你带向何方。
我想,如果你采用一种几乎逐行口述代码的提示风格,确实能更接近确定性,但到了那一步,这个编程代理更像是一个打字助手。
编程代理的生产力优势在于,当你学会如何将简短的提示——比如“添加测试用例,覆盖注册表单,检查成功路径和所有失败状态”——转化为更大的改动时,才能真正释放出来。
如果你对结果完全盲目,很快就会得到一个你无法 100% 理解的系统。用盲棋的术语来说,你将不再知道棋盘上每一枚棋子的位置。
- dzonga
今天是周日——我没空把事物分门别类。
有“写代码”这件事——写代码去做点什么,可能是一个游戏,也可能是一个移动文件的工具,诸如此类。其本质是一个封闭领域。AI 在这里完美无缺——如果出错了,影响几乎为零或根本不存在。
然后是“软件工程”——这既是艺术也是科学。你处理的是经验法则。没有什么东西是被编码或写下来的,但有一种直觉,让你感觉某事是否“对劲”。这个领域是无边界的。如果在这里出错,后果在所有维度上都是灾难性的。写代码只是软件工程的交付手段,而非实际工作本身。在这里使用 AI 毫无用处。
但我们却不断看到这类文章——我想,这只能说明这个行业有多肤浅。
- qbane
我不认为这个类比能走得太远。盲棋真的成了那种每个人都该学会以享受国际象棋的“生产力趋势”吗?普通棋手真的因为高手能下盲棋而被取代了吗?
- yipinwong
类比在抽象层面才有效,我们必须按字面意思接受这个国际象棋的类比。一旦人们深入探讨国际象棋与现实生活之间的差异(确定性 vs 非确定性),就无法领会作者想要传达的教训了。
记住,类比不是现实本身。所有的类比在某个点都会失效。
- tikimcfee
我真的很喜欢这个观点,因为我觉得人们往往忘记了一点:当你写代码时,存在一个大于零的时间 T,在此期间你其实并没有在写代码,而是在做一件叫“思考”的事情,哈哈。我发现很多时候,我坐在屏幕前盯着看,文字开始模糊,我在脑海里思考一切事物之间的联系,并不太担心具体的实现细节或字节如何移动,而是思考代码的结构和实际流程的本质。XKCD 有一幅非常精彩的漫画描绘了这一点:一个人坐在电脑前,脑海中浮现出关于正在编写内容的精美思维云团,这时有人走过来跟他说了一句话,整个云团瞬间消散。如果我没理解错这篇文章,我认为这正是一个非常合理的类比。大脑中确实会发生某种过程,或许涉及神经权重,这种“非执行”状态正是创造力和解决问题的发生地,通过将高层概念映射并拼接在一起,而无需具体担心行级细节。这些细节当然还会出现,实现可能永远是最重要的,但我完全赞同这一观点!