给报考同学的劝退信

同学你好!在每年的申请季都会收到相当多的申请 (也有一些看起来是海投的模板申请),所以我首先给所有希望加入课题组同学统一的公开回复,其中包括一些可能对你有 (劝) 用 (退) 的信息,也可以帮助你初步判断自己读研的定位。此外,我们有统一的招生流程,通常会在招生季启动,请按照此流程完成申请。

目前我感兴趣的研究方向是编程语言和 AI 技术在计算机系统工程中的应用。部分原因是,我有很多精力需要被迫投入到 “软件定义的泛在操作系统” 项目,另一方面原因是我希望每一个工作都能在实际系统中有切实的价值。因此你在我的论文列表中看到的论文不完全代表我的研究方向。(某种程度上,我希望做的每一个工作都是 first paper 或是 last paper,因此并不很想在同一个 topic 上再发表一篇 incremental 的工作。)

招生标准

我对招收同学的唯一标准是 “会编程”。这主要包括:

  • 能够较为熟练地、在手册和互联网 (和大语言模型/Copilot) 的指导下使用现代化的终端、Shell 和常用的命令行工具 (例如 tmux、正则表达式等) 和 IDE
  • 理解 Git 的核心概念,良好地了解并遵循开源软件开发的流程和编码规范,例如正确使用 gitignore、使用 Markdown 撰写文档、维护 Github Pages 等
  • 掌握一门 Python 这样的脚本语言,能够简化日常工作
  • 掌握一门 “课外” 的现代编程语言 (现代 C++/JavaScript, Haskell, Kotlin, Scala, Rust, ...),并能作为主力编程语言使用。了解它们背后的原理 (如虚拟机实现) 是一个加分项

一个并不必要但巨大的加分项是你不惧怕中等规模的代码项目 (例如 CPython, OpenJDK, Linux Kernel, ...)。你不需要了解它们的全部,但你如果能不畏惧地调试它们,并能从中理出一些头绪,这已经很了不起了!

上面的这些要求隐含了一点:你能够找到 “正确” 的方式训练自己、了解世界的前沿在哪里,而不局限于课堂。除此之外,如果你在某件事情上认为自己做得十分出众地好,你就很可能拥有能够作出了不起工作的潜力:在课堂之外,写过一个你认为十分了不起的代码、独立解决过一个你认为十分困难的问题、在一门非常有挑战性的课程上取得好成绩等。你不妨考虑一下你在大学期间认为最 “了不起” 的一件事,然后我们可以聊一聊。

我也要很抱歉 (无奈) 地告诉大家,今天的学术界惊人的内卷,因此导师招人也必须满足 “利益最大化”,把课程丢上网已经算是最大程度的 “做慈善” 了:学生一方面是被培养的对象,另一方面 (更重要的) 也是导师解决困难的研究问题或者完成项目的打手。只有目标匹配,导师的付出才有回报,而 “学习曲线过长无法产出” 的学生对于我们来说是非常难受的 “负资产”。

对于博士生,你的竞争对手是全世界某个研究领域里最聪明的一些人 (和一些最勤奋的卷王)。我认为水 (哪怕是 CCF-A 类) paper 太无聊了。我希望每一份工作都带有 “groundbreaking” 的属性:解决一个全新的重要问题,或是能给旧重要问题的解决带来重要的影响——当然,能不能做出来完全看运气;只是如果没有这个目标,就连 “一般” 的工作也做不出来了。事实证明,我的合作者们都过得相当辛苦。我希望投稿的每一份工作都能使这个领域最顶级的专家也感到很 cool,为此,而你必须首先成为领域专家。因此你会得到有挑战性的真问题,但同时你也需要真正 “不惧怕困难、渴望做出了不起的工作去改变世界” 才能坚持下去。请三思而行:选定了方向,某种程度说这就是地狱模式,而且我们有很多失败的先例。

对于硕士生,根据先前的经验,除非你在本科阶段受过非常良好的训练,并且自身素质极为优秀,在时间线的压力下让硕士生承担研究课题会使导师身心俱疲。本质上,硕士生的诉求是 “出去工作”,而课题组的诉求是 “完成科研任务”。因此,对于硕士生,我们更多的会安排一些事务性的工作,或是工程项目一部分,最后拼凑成毕业设计。作为交换,在完成任务的前提下可以得到更多的自由时间。

常见误区与劝退

以下是一些常见的误区:

  • “先读个硕士观望一下要不要读博士”:对我们来说,这是一个不存在的选项 (现在南京大学计算机系在推免时也分开了硕士和博士)。科研的入门训练是极为艰苦且漫长的。对硕士生,我们选择直接拿来当马仔。
  • “我现在还不太会,但我会努力学习”:很遗憾,无论导师是否尽职尽责,研究生总体来说还是带有交易的成分。一方面,无论你的导师给你画了多大的饼,用 “给导师劳动” 换取 “导师的指导” 都是在所难免的。另一方面,我更希望导师和学生站在平等的合作者位置,并且我非常喜欢能够据理力争挑战我观点的学生。我们期望我们的同学在对计算机世界的认识、阅读、写作方面没有明显的短板,例如知道世界顶级名校名课 (包括研究生课) 的水准并能跟上。
  • “我能力很强、参加了很多竞赛”:我自己是竞赛出身 (ICPC World Finalist),也是教练。从我的观察,大部分同学都没能迈过从 “业余选手” 到 “职业选手” 的门槛——给你更多的时间,能解出非常困难的题目。如果你接受过一点理论计算机科学的训练,就会发现竞赛作为一种 “竞技体育”,其实是性价比极低的。
  • “我发表了论文/专利/软著,我有过良好的科研训练”:我对论文的标准是 “教会你的大/小专家同行一些不 trivial 的事情”。据我近年观察,大部分申请者发表的论文都是减分项。相比于发表了 “错误” 论文或是在大创项目里学会了一本正经胡说八道的同学,我更偏好能耐心读论文和写代码的 “一张有潜力的白纸”。科学研究是脚踏实地的,前人所做到的 (内卷程度) 可能远比你想象得要大,认真读了 3-4 年博士依然没有论文的也大有人在,完全不必急功近利。

无论如何,都祝你申请顺利,去挑战真正 fundamental 的研究问题,并找到属于自己的一番天地!