斯坦福 CS146S 去年秋天第一次开课,今年秋天第二次开课,而 Mihail Eric 把大纲改掉了一大半。原因在于编码智能体这一年里变强得太多:去年还算前沿的内容,今年已经成了默认前提。

这门课叫《The Modern Software Developer》,讲的是 AI 原生开发。Mihail Eric 是斯坦福的兼任教授,同时在 Monaco 担任 AI 负责人;他既教书,也每天亲手使用这套东西。这期对话出自 AI Engineer 播客的百万订阅特辑,录制时间在 CODE Summit 前一周,主持人提到今年大会的三个主题:对抗“slop”(低质生成物)、system one 模型,以及把重写整个代码库的野心放大。

对谈里最锋利的一句判断,是他对学生说的:门槛抬高了,你不能再以 L3 的水平入场。 这句话往前推一步,就是整门课存在的理由。

1. 一门课从想法到开课花了十个月,然后一年就被推翻一半

事情的起点是 2024 年 11 月。那时编码智能体还是早期版本,但已经能明显感觉到开发者的工作方式在剧烈变化,完成工作的速度也完全不是一个量级。问题是方法论散落在各处,全是零散博客、零散帖子;真想搞明白怎么做,只能自己在网上拼。

于是他有了一个念头:能不能把这些东西整理成一门正式的课程。他找了 Chip 请教——Chip 在斯坦福教 Designing Machine Learning Systems,他很大程度上借鉴了那门课设计课程的方式。接下来是院系流程:写提案,向委员会论证这门课有存在的必要。前后九到十个月,2025 年秋第一次开课,学生反响很好,Business Insider 还专门写了一篇关于这门课的报道。

到今年,自主编码智能体的进展超出了所有人的预期,他觉得是时候再来一遍、把内容重新刷一遍了。

2. 去年是巡览,今年是原则

回想去年那一版,编码智能体早就存在,但整个行业还处在“每家公司攻占软件生命周期的一个环节”的阶段:代码评审有专门的智能体,spec 设计有专门的智能体,SRE 也有。其中一些公司今天还在,但那时课程的重点是“这里、那里,你都能用上编码智能体”,本质上是一次全景巡览,一次穿过整个软件开发生命周期的奥德赛,核心目的是让学生知道这些东西存在。

今年不一样,一些原则开始沉淀下来。细致的上下文工程是一条,认真做设计与架构来承接复杂任务又是一条。前一版课程教的是“世界变了”,这一版教的是“变了之后该怎么做事”。

3. 它并不替代算法课,它教的是毕业后怎么变得有用

有一件事他讲得很清楚:这门课不面向编程初学者,也并不试图替代传统计算机科学教育。算法那类课程反而是他的课的前置要求。它的定位是一门实践者的课——学生毕业或即将进入职场时,如何成为团队里产出最高的那一类人。

这个定位有现实来源。在 Monaco 他面对的是超大型代码库;除此之外,他还帮很多公司梳理他们巨型代码库的设计。这些经验不是从论文里读来的,是从“一个仓库几十万行、几十个人同时改”的现场里长出来的。

4. 地板抬高了:入门不再等于 L3

开学第一周、第一堂课,他讲的就是这句话:每一家公司都需要你,但地板高得多。 借用 Google 的职级打比方,光有 L3 的水平已经不够;你几乎要一进公司就接近资深工程师的水准。

但他没有把基础扔掉。软件工程的内核仍然重要——系统是怎么被搭起来的,这些设计里存在哪些权衡,这些判断依然是人类应该占据的位置;至于剩下的实现细节,可以越来越多地交出去。他把这条界线画在“理解系统”和“写完代码”之间,而不是画在“用人”和“用 AI”之间。

5. “大部分学生是完蛋的”,以及那个开放问题

对谈里有一句被主持人自己称作“说出来是为了辣、但其实真心相信”的判断:大部分学生是完蛋的,只有一部分会变得极其有价值。斯坦福的孩子不用担心,他们来自斯坦福;真正的问题是“美国其他地方的学生怎么办”。

Mihail Eric 的回应是承认这是个开放问题,并补了一句观察:教育体系的动作太慢了。一门课从提案到开课要九到十个月,而它要教的那个东西,九到十个月就换了一代。这中间的落差,不是靠某一位老师勤奋就能填上的。

6. 大纲的保质期问题:把做智能体的人请进课堂

主持人问得很直接:你教的是一门“正在改变一切”的课,那你怎么给课程内容定截止日期?

他的回答是“作弊”——直接把做编码智能体的人请到课堂上来讲。这不是临时打的补丁,而是从第一版就定下的结构。他给自己的定位很克制:一个实践者,把在行业里做事、跟很多人聊天得来的洞见汇总起来。但他不认为也不该认为自己掌握全部答案,那样是傲慢。前沿上的人看到的东西比他还远,那就请他们把自己的判断摆到桌面上,让学生直接问。

这样做的代价是课程永远不完全固化,有一部分内容天然带着动态性,是 feature,也可能算 bug。但他相信有些东西会留下来。至于像 Boris 这样的人,总会有他不知道的东西——那就请他来讲。

7. 把 Claude Code 拆成两百行:理解比调用更值钱

主持人点出了一个区别:这类课很容易变成只有一排名字——某某来讲了一节,某某又来讲了一节。而 Mihail Eric 会真的动手做出东西来,比如把 Claude Code 拆解成两百行代码。没有人要求他这么做,也没有人会为了这个来给他站台;但如果你想在一个真正能用的框架里教清楚基本原理,想让学生获得的是工作级的理解而不是名词记忆,这就是必须做的事。

这门一年改掉一半的课,本身就是这个行业的一个注脚。工具每隔几个月换代一次,能留下来的不是某个提示词技巧,而是对系统与权衡的理解。也正因为如此,他才把入门线抬到了资深的位置——教的越是被加速的东西,打底的部分越不能省。

Latent Space 作者:智顶顶