简单 OCR 了一下,排了个版:
Q. 如何成为jyy的研究生?(a.k.a.劝退信)
A…然后,我对招收同学的唯一标准是“会编程”。这主要包括:
能够较为熟练地、在手册和互联网的指导下使用Shell 和常用的命令行工具(例如tmux、正则表达式等)理解 Git的核心概念,能够良好了解并遵循开源软件开发的流程,例如正确使用gitignore、使用Markdown撰写文档、维护Github Pages等。掌握一门Python这样的脚本 语言,能够简化日常工作掌握一门“课外”的现代编程语言(现代C++/JavaScript,Haskell,Kotlin,Scala, Rust.…),并能作为主力编程语言使用。一个并不必要但巨大的加分项是你不惧怕中等规模的代码项目(例如 CPython,OpenJDK,Linux Kernel,…)。你不需要了解它们的全部,但你如果能不畏惧地调试它们,并能从中理出一些头绪,这已经很了不起了!
除此之外,如果你在某件事情上认为自己做得十分出众 地好,你就很可能拥有能够作出了不起工作的潜力:在课堂之外,写过一个你认为十分了不起的代码、独立解决过一个你认为十分困难的问题、在一门非常有挑战性 的课程上取得好成绩等。你不妨考虑一下你在大学期间认为最“了不起”的一件事,然后我们可以聊一聊。
最后,我也要很抱歉(无奈)地告诉大家,今天的学术界 惊人的内卷,因此导师招人也必须满足“利益最大化”,把课程丢上网己经算是最大程度的“做慈善”了:学生一方面是被培养的对象,另一方面(更重要的)也是导师解决困难的研究问题或者完成项目的打手。只有目标匹配,导师的付出才有回报,而“学习曲线过长无法产出”的学生对于我们来说是非常难受的“负资产”。
对于博士生:你的竞争对手是全世界某个研究领域里最聪明的一些人(和一些最勤奋的卷王)。我已经得过两次 ACMSIGSOFT Distinguished Paper Award (对软件工程领域来说.就是TopConference里<10%录用的相对比较好的论文),并且很多次擦肩而过(例如比别人手慢一步),因此我尽量会保证每一篇投出去的论文都满足 自己对Award Quality的定义——它要使领域专家也感到很cool,为此,而你必须首先成为领域专家。在我们的课题组,你会得到有挑战性的真问题,但同时你也需要真正“不惧怕困难、渴望做出了不起的工作去改变世界”。请三思而行:选定了方向,你人生的相当一段时间 就赔进去了,绝非儿戏。
对于硕士生:根据先前的经验,除非你在本科阶段受过非常良好的训练,并且自身素质极为优秀,在时间线的压力下让硕士生承担研究课 题会使导师身心俱疲。本质上,硕士生的诉求是“出去工作’,而课题组的诉求是“完成科研任务”。因此,对于硕士生,我们更多的会安排一些事务性的工作,或是工程项目一部分,最后拼凌成毕业设计。因此,我们不建议”先读个硕士观望一下要不要读博士”,因为我们对硕士生通常不会进行严格、旷日持久的科研训练,而是直接拿来当马仔。
以下是一些常见的误区:“我现在还不太会,但我会努力学习”:很遗憾,无论导师是否尽职尽责,研究生总体来说还是带有交易的成分。一方面,无论你的导师给你画了多大的饼,用“给导师劳动”换取“导师的指导”都是在所难免的。另一方 面,我更希望导师和学生站在平等的合作者位置,并且 我非常喜欢能够据理力争挑战我观点的学生。因此,只有在你的兴趣领域和导师研究方向完全一致时,你才能 获得最大的效果。“我能力很强、参加了很多竞赛”:我自己是竞赛出身(ICPC World Finalist)、参加过数学建模 也目睹过其中各种不靠谱的黑幕,也受过一点理论计算机科学的训练。竞赛给我的意义是看到更广阔的理论计算机科学天地,并且看到自己和其他人在解题能力上的差距。〝我发表了论文/专利/软著,我有过良好的科研训练”:我对论文的标准是“教会你的大/小专家同行一些不 trivial的事情”。据我近年观察,很多发表的论文都是减分项。相比于发表了“错误”论文或是在大创项目里学会 了一本正经胡说八道的同学,我更偏好能耐心读论文和写代码的“一张有潜力的白纸。科学研究是脚踏实地的,前人所做到的(内卷程度)可能远比你想象得要大,认真读了了4年博士依然没有论文的也大有人在,完全不必急功近利。
无论如何,都祝你去挑战真正fundamental的研究问题,并找到属于自己的一番天地!
Thanks,
Yanyan Jiang 蒋炎岩