给报考同学的劝退信—jyy

很好的一篇文章,分享给大家

https://jyywiki.cn/Letter.md

以下是全文:

给报考同学的劝退信

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

目前我感兴趣的研究方向是编程语言和 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 的研究问题,并找到属于自己的一番天地!

6 Likes

对本科生科研的意见很中肯

蛮中肯的 不过感觉大部分同学缺乏地是真正上手尝试区做 research 但是本科生可能各方面知识还没有培养起来 直接上手做科研其实不是件简单的事儿

楼主是不是计院多呀

我是的

1 Like

研究型本科真的闹麻了。大部分同学本科还是以上课为主,有实验室实习经历的就已经是少数了。然后这个老师还左挑右挑左不满意右不满意。不可否认他说的确实是实话,但是我不禁在想现在读个研究生到底意味着什么——你指望本科生就能做出让你眼前一亮的不水的 paper,这内卷程度真的很吓人。

我现在总有一种错觉,当然也可能不是错觉而是事实:大学要求你生下来就什么都会,生下来就会考试(还是不给你例题的那种),生下来就会写代码,生下来就会刷 LeetCode,生下来就会做科研,生下来就会发文章(按照这位老师的要求,还必须是他这种教授看了不觉得 trivial 的文章)。但是学生凭什么天生就要会做这些?学校是干什么吃的?本科生是以授课为主的,你凭什么要求他们一入学就会搞科研?这位老师说的都是事实,但这些事实让我很不悦。

1 Like

研究生现在不都是就业缓冲区:rofl:
老博认真做科研的也很少了,只能说蒋老师想要的是那些赤心于科研,基础扎实,而非跟随大流仅致力于找敲门砖的人

掌握一门课外的编程语言,要达到什么样的程度呢,说实话现在大部分人学的 C++ 就只能作为一个算法工具,更高级的用法和工程实践太少了,一般也不会想去锻炼