8 月 2 日,程序员 Ankur Sethi 在博客上提了个反主流的建议:用 AI 写代码,别复制粘贴,把 AI 生成的代码亲手敲进编辑器。他给 AI 下了道死命令——只准在聊天框里展示代码,不准直接改文件。这篇短文当天在 Hacker News 上拿到 363 分、300 条评论,是当日第二大讨论帖。
图:这场争论的现场,标题下方就是吵成一团的评论区。来源:news.ycombinator.com
评论区迅速分成两派。「这是戒不掉 AI 的人发明的新式祈祷。」「保持身材的最好方法,是跟在车后面走路。」「这建议蠢得离谱。」骂的人不少,支持的人也很多。有一条评论被反复引用:「以前我们知道,转管理岗的程序员代码会生锈。现在,我们全都成了管理岗。」
他欠了一笔「理解债」
先说他为什么要这么干。Sethi 有十几年写代码的经验,也用 AI 助手。让 AI 自由发挥,一段功能几分钟就写完。可他越来越不对劲:代码进了仓库,理解却没进脑子。功能是上线了,他自己却讲不清它是怎么工作的。
他管这叫认知负债(cognitive debt)——欠下的理解债。等哪天要改这段代码,他得重新问 AI「这段是干嘛的」。像学生考前翻抄来的作业,发现一个字都看不懂。
他也不是没试过常规做法。如今程序员的标准动作是:机器人提代码,人逐行审查。但几百行过度防御、注释糟糕、藏着细微错误的代码,读起来毫无乐趣。他在博客里说:替老板上班,捏着鼻子也能忍;自己的项目绝不忍——个人项目的乐趣来自过程,来自亲手写出的每一行。
这个困境有科学注脚。MIT 一项研究让 54 名大学生分组写作文:一组用 ChatGPT 辅助,一组用搜索引擎,一组纯靠自己。脑电监测显示,AI 组的大脑神经连接最弱;写完几分钟后让他们复述刚写的作文,AI 组也最差——他们甚至不太觉得自己写了这篇作文。工具代劳越多,大脑参与越少。至于这是否等于「变笨」,研究只提示「值得警惕」,没说死。
图:MIT 研究(Kosmyna 等)的脑电数据——外部工具介入越多,大脑连接越弱。来源:brainonllm.com
Sethi 的应对办法,是给 AI 立规矩。他在项目说明文件里写:我想理解进入这个项目的每一行代码;除非我明确要求,你不准创建、编辑、移动或删除任何文件;所有修改建议,在聊天框里展示,由我亲手输入;连安装依赖、运行命令,也得我来执行。让 AI 当顾问,不当代笔。
重打一遍,到底在练什么
方案听着笨:AI 在聊天框里生成代码,他一行行敲进编辑器,敲到不懂的地方就停下来查文档,或者让 AI 解释。他自称效率从「10 倍速」降到「2 倍速」——换来的是每行代码都经过自己的手和眼。
这背后是条老规矩。八九十年代学编程的人都有印象:书上的示例代码,前辈不让复制粘贴,要求亲手敲一遍、跑通、再改改。一代程序员就是这么从杂志上把代码一行行敲进电脑的。手动输入天然强迫人慢下来:敲到哪一行,眼睛就看到哪一行,脑子里就得过一遍「这行在干嘛」。
敲键盘的肌肉记忆,会把代码的结构刻进手指;下次写同类功能,手比脑子先想起来。
敲的过程还顺带做了一次审查。他说自己更容易发现 AI 的幻觉和坏设计——手在动,脑就转,毛病藏不住。敲完一遍,脑子里有了一张「代码地图」:每块功能在哪、改哪里要动哪里,清清楚楚。下次给 AI 下指令,也知道该怎么说了。评论区有人试过更极端的版本:作家亨特·汤普森年轻时把海明威的小说全文手打一遍,就为了感受大师行文的节奏。重打代码,道理相近。
反对的人说得也有理
吵得最凶的一条评论来自 f311a:重打代码就像重抄微积分答案,练的是记忆,学不到直觉。抄的人知道每步怎么写,却不知道当初为什么这么想,也不知道还有别的解法。他的建议正相反——自己先写,再让 AI 优化。
这派的支持者不少。有人讽刺:按这个逻辑,程序员该手动重打编译器生成的汇编代码;有人说「瓶颈很少是打字」,重打把时间花在低价值动作上;还有人提醒,这么干会被同事贴上「慢」的标签。支持派则搬出研究:被动消费「语法正确但语义空洞」的输出,学习过程会被破坏——看得懂每个字,不等于学会了。
| 支持重打派 | 反对重打派 |
|---|---|
| 抄作业=没学会,重打=真理解 | 重抄答案练记忆,不练直觉 |
| 慢下来才能发现 AI 的幻觉 | 瓶颈不在打字,浪费时间 |
| 肌肉记忆加代码地图,改起来快 | 自己先写、再让 AI 优化,更高效 |
| 老规矩:学编程就该亲手敲 | 工具就该解放人,去做更重要的事 |
两派的分歧,本质是同一个问题的两面:AI 代劳之后,你的能力是长了,还是锈了?支持派怕锈,反对派嫌「重打」防锈的方式太低效——让 AI 做设计、人做执行,同样是防锈的办法。
不写代码的人,也欠着这笔债
这场争论看着是程序员圈的事。其实所有用 AI 干活的人都站在同一个路口:让 AI 写年终总结,你还会不会自己写?让 AI 做 PPT、填表格,你的表达和数据能力还剩多少?「AI 代劳后自己没长进」,是这次技术浪潮给所有人的问题,程序员只是第一批撞上的人。
不写代码的人,可以借这场争论里的三个办法。第一,让 AI 出草稿,自己动手改成自己的话——改的过程就是理解的过程。第二,让 AI 出大纲,细节自己填。第三,学评论区那条高赞建议:干完之后,让 AI 出题考考你,答不上来的地方,就是债还没还清的地方。
重打到底是不是最优解,300 条评论没吵出共识。Sethi 自己都承认,这法子「低效得有点滑稽」。但这场争论留下一个值得带走的提问:**当工具快 10 倍的时候,你拿什么换理解?**这个问题,AI 替不了任何人回答。笔者也没有答案,只能说:跑得快的人别忘了,路终究要自己走。
参考链接:
- Ankur Sethi: Prevent cognitive debt by manually retyping LLM-generated code
- HN 讨论 (item?id=49153374)