当程序员开始“少用 AI 写代码”,这不是复古,而是在补一门迟到的基础课

一场“少用 AI 写代码”的实验,刺中了当下开发者最真实的焦虑
在“AI 正把编程变成已解决问题”的高调叙事里,一位长期做 AI 智能体的工程师,反而决定停下来,去布鲁克林手写代码。Miguel Conner 在 2026 年 4 月写道,自己回到美国后没有立刻投入工作,而是进入 Recurse Center——一个位于纽约的全职编程 retreat——用 6 到 12 周时间,尽量不靠大模型,把 Transformer、Python 基础、Unix 技能和计算机分层理解重新补一遍。
这件事我认为很重要,因为它不是“反 AI”,而是对 AI 编程热潮的一次校准。Conner 不是传统意义上排斥新工具的人。恰恰相反,他过去两年一直在巴塞罗那的 Aily Labs 做 AI agent,早期搭过网页搜索 agent,也研究过 DeepSeek R1、Meta Llama 3、Ai2 Olmo 3 这类模型论文,属于很早一批把 LLM 真正用进生产环境的人。正因为站在一线,他才更清楚地看到一个矛盾:代码代理能让你更快交付,但如果你自己并不真正知道要什么,它也会很乐意替你做一堆未经审视的假设。
我更在意的是,这不是个人学习偏好的小事,而是今天大量开发团队都在面对的能力结构变化。AI 让写代码越来越像“提出需求、审核结果”,可软件工程从来不只是生成代码。系统边界怎么划、异常链路怎么想、性能瓶颈在哪、训练作业为什么不稳定、GPU 利用率为什么上不去,这些都很难靠一句 prompt 自动补齐。Conner 的选择,实际上是在追问一个更尖锐的问题:当 AI 帮你写得越来越多,你是不是反而更不懂你自己维护的系统?
真正重要的,不是手写代码本身,而是重新夺回“理解权”
Conner 给自己定的目标很具体:从零训练一个 LLM,手写 Transformer;减少对文档和 LLM 的依赖,提升 Python 直觉;补上自己没有系统受过计算机科学教育留下的空白。六周下来,他已经完成了斯坦福 CS336《Language Modeling from Scratch》的第一份大作业——这是一个 50 页的作业说明,包含 tokenizer、GPT-2 风格架构、超参数实验和 OpenWebText 约 90 亿 token 训练等内容。他和搭档还在 Tiny Stories 数据集上做了学习率 sweep,一个 1700 万参数模型在 A100 上训练约一小时,高学习率会明显带来不稳定。
这些细节为什么重要?因为它们说明这不是“摆拍式苦修”。手写模型、自己跑 ablation、自己踩训练不稳定的坑,本质上是在重新建立工程直觉。今天很多开发者会使用 Cursor、Claude Code 或 Copilot,但对注意力机制、内存访问、batch size、学习率、tokenization 这些底层约束并没有真正感觉。工具越聪明,越容易让人误把“可调用”当成“已掌握”。这背后说明,AI 最擅长压缩的是产出时间,不一定是认知路径。
对开发者而言,这种差别会直接影响职业天花板。初级开发者可能因为 AI 获得前所未有的效率红利,但也更容易停留在“会拼装,不会诊断”的阶段。资深工程师则相反,他们往往能把 AI 当杠杆,因为自己知道哪里该信、哪里该拆、哪里必须亲自验证。Conner 在文中提到,他在 Aily 遇到的优秀程序员,通常也恰恰是优秀的 AI 使用者。这一点比“是否手写”更关键:AI 不会均匀地放大所有人,它优先放大那些本来就有判断力的人。
对企业客户来说,这同样是现实问题。AI 辅助编程确实可以缩短原型和迭代时间,但当团队核心代码越来越多地由模型生成,而团队成员对代码库理解变浅时,维护成本、故障排查时间和知识传承风险都会上升。市场上很多公司现在看到的是“交付变快”,还没完整感受到“长期维护债务”的反噬。
这股反向潮流,和行业主流并不矛盾,反而是同一枚硬币的两面
过去一年,AI 编程工具的路线越来越清晰。Cursor 把代码生成、上下文检索和 agent 模式做成了主流工作流;GitHub Copilot 从补全工具走向更主动的编程助手;Anthropic 和 OpenAI 则不断强调 agent 化的开发体验,试图把“写函数”进一步升级为“委托任务”。在这种主流叙事里,程序员越来越像审核者、编排者,甚至产品意图的翻译者。
Conner 的实践看上去像逆流而上,其实和行业主流并不冲突。历史上每次高层抽象兴起,都会同步引发一轮“补底层课”的需求。云计算普及后,懂网络、存储和 Linux 的工程师反而更值钱;深度学习工程化之后,懂 CUDA、算子优化和分布式训练的人始终稀缺;今天 LLM 应用爆发后,最抢手的也不是只会调 API 的人,而是能处理数据、评测、推理性能、系统可靠性的人。
这里可以做一个横向对比。过去十几年,软件行业经历过“低代码/无代码”多次浪潮,每次都伴随“程序员会不会消失”的讨论。但真实结果是,低门槛工具扩大了应用边界,却没有消灭复杂系统。现在 AI 编程也有类似的一面:它显著压缩了样板代码和试错成本,却没有让复杂性本身消失。一个 agent 能帮你生成 CRUD、补测试、写脚本,却未必替你承担架构决策、性能预算和线上事故的责任。原文里没展开的一点是,Conner 能做这场 retreat,本身依赖于他此前已经有生产环境经验、接触过 A100 这类 GPU 资源、并进入了 Recurse Center 这种高密度同伴环境。市场现实是,大多数开发者并没有这样的时间和条件。
也正因此,我不认为“以后大家都该少用 AI 多手写”会成为主流工作方式。真正会成为主流的,更像是一种分层:能外包给 AI 的部分继续外包,但一旦进入模型训练、推理优化、系统边界、线上稳定性这类核心环节,手上的基本功会重新变得昂贵。
真正的变量,不在于你用不用 AI,而在于你有没有能力在没有 AI 时继续推进
Conner 在 Recurse Center 的收获,很多并不来自“大项目”,而是来自看起来很小的动作:和有 10 多年 Python 经验的人结对编程;忘了语法时不先 Google,也不先问 LLM,而是直接开终端敲一个最小例子验证;参加 Unix/CTF 训练,补终端和安全常识;在 1983 年的 Apple IIe 上用 BASIC 写 fizzbuzz;在 Vim 里手敲一个单层感知机。这些事单独看都不惊人,但它们共同指向一种能力:在工具失灵或上下文不足时,开发者是否还能靠自己的认知把问题往前推。
这恰恰是今天最容易被忽略的风险。AI 编程工具最大的问题,不是会不会犯错,而是它会用一种过于顺滑的方式掩盖你的理解缺口。代码能跑,测试能过,demo 能演示,不代表你真的掌握了这套系统。尤其在模型、数据管线、并行训练、GPU profiling 这类问题上,错误往往不是语法级的,而是策略级、性能级和系统级的。Conner 已经开始做 CS336 的第二份作业,要分析 GPU profiling 并用 Triton 实现 FlashAttention2;这类工作就是典型例子——你可以让模型给你一个版本,但如果你不理解显存访问和 kernel 行为,你很难判断它到底是“能运行”,还是“真优化”。
普通用户短期感受到的,也许只是 AI 产品更新更快、功能更多;但背后的工程团队如果越来越依赖自动生成,而减少了对系统机理的理解,最终买单的可能是稳定性、隐私和产品寿命。对创业公司来说,这会变成一个预算决策:是把有限的人力都押在更快发布上,还是留出时间让团队真正消化技术栈?对招聘市场来说,面试也会越来越难。企业不太可能再满足于“你会不会用某个 AI 工具”,而会追问“如果不给你助手,你能不能定位问题、解释原理、做出取舍”。
所以,这件事不重要的地方也很明确:它不是在证明手写代码比 AI 写代码更高贵,也不是宣告行业要回到没有 Copilot 的年代。真正的变量在于,一个开发者在 AI 时代究竟是在积累判断力,还是只是在积累更快的外包习惯。前者会越来越值钱,后者则可能在工具继续进步时,被进一步稀释。
“手写一遍”的价值,最后还是要回到生产环境里检验
Conner 说,自己之后还会回到把 agent 上线、跑 eval 的工作里,只不过会带着一整套新的技能回去。我认为这才是这篇文章最成熟的地方:他不是把 retreat 当作技术乌托邦,而是当作生产环境前的一次能力校准。编程 retreat 的意义,不是逃离现实,而是为了更好地应对现实。
不过,它的限制同样清楚。不是每个工程师都能抽出 6 到 12 周去做这种高强度补课,也不是每家公司都愿意为“长期能力建设”埋单。行业最终不会因为几位工程师重新手写模型,就放慢 AI 编程工具的普及速度。相反,Cursor、Claude Code、Copilot 和更多 agent 化开发平台只会继续渗透。
因此,更实际的结论是:团队和个人都要重新定义“会编程”这件事。未来的优秀工程师,既要能驾驭 AI,也要能在没有 AI 时保持清醒;既能接受自动化带来的提速,也知道哪些地方不能交出去。手写代码的价值,不在浪漫,而在校验。它像一次压力测试,测的不是代码能不能生成,而是你到底懂不懂自己在做什么。