Archive ← Prev Next →

D5P312-200417

《研究生学业规划》

(完成于 2020 年 7 月)

【1】前言

话说 2017 年 10 月 11 日我正式决定转专业 CS,此后的人生规划巨作 D5P84 写完之后,直到 2019 年 5 月的一年半里,我都在按着当初定好的方向,用尽手段激励自己,疯狂提升自己的技术能力,也没怎么再思考过自己的人生方向。

虽然在学业上取得了成绩,但大三伊始,长期专注学习的我,人生规划可以说是一塌糊涂,在人生的转折点吃了很多亏:实习不知道怎么找,心态也调整得不好。

幸运的是,我的申研之旅最终圆满结束,2020 年 3 月 21 日,我接受了 Stanford MSCS 的录取。

现在身在美国的我还不确定具体的开学和签证政策如何,包括选课、CPT、合法身份等等。我的研究生之旅当然会受到这些细节的影响,但人生大方向应该是不受影响的;这篇日记就是我对未来之路的详细规划,希望我能好好利用 Stanford 的资源,为自己的发展打下好的基础。

按每学期 700 小时(两年共 6 个 quarter,但我也可能 5 ~ 7 个学期毕业)、暑假 500 小时、两个寒假各 100 小时算,我在研究生期间共有最多 4900 小时可分配时间。时间是一种预算,我希望能是制定出合理分配这 4900 小时的计划。

当然,这个规划的范畴不包括积极社交、吃喝玩乐、写日记、追学霸妹纸等其他重要的活动,虽然这些活动除了日记以外都受到了疫情的冲击 QAQ…

【2】求职

2020 秋招,我的首要目标当然是拿到美帝大公司的 2021 暑期实习。假设没有大的意外,我应该能身在美国参加秋招,并得到 CPT。COVID-19 也许会影响招人的数量,不过由于研究生在校生数量可能大幅减少,竞争也会小很多,对我来说也许也是机遇,这也是我决定不延迟入学的主要原因。2020 年 7 月 19 日,我的 Leetcode 题量突破 400,我对自己的面试水平还是比较自信的。

对于小公司、创业公司,抛开签证的风险不谈,在那工作对我等等软实力要求要高得多:我需要深度理解行业的趋势,了解一些商科的概念,有商业敏感度,能准确判断我所在的公司前景如何,而我不觉得我准备好能应对这样的挑战,所以暂时不会优先考虑,尤其是来年申全职的时候。

如果美国这边申不到满意的公司,那回腾讯或者参加其他国内公司的春招,也是很好的选择。经历了 2020 的春招让我了解到,国内的编程岗位分得很细,大的有算法与开发之分(当然我到现在都没搞懂“开发岗”究竟是怎样一个概念),细分还有 Java/C++/ 前端、CV/NLP 等等,面试考的题目五花八门。相比而言,美国招人不管算法还是开发,一般岗位统一都是 SDE,面试就是 Leetcode 为主,项目经历 / 行为类问题为辅。

另外,和申研一样,求职时我已决定不会签约顾问 / 中介(当然,我可以蹭一些他们的资源)。虽然他们掌握着海量的求职信息,甚至方便的求职工具,我却感觉他们在学员定位和未来规划方面,并不很靠谱,比如某机构 2019 年 1 月强烈不建议我 3 年毕业(D5P268)、12 月反复不建议我申研(D5P274),再比如 979 说去年秋招前某机构严重低估了她的实力。

最后要提醒自己的是放平心态,一方面求职有很多复杂的潜规则,是个极其玄学的事情(尤其是前面提到了不知道形势如何),另一方面它并不是我的优先事项。工作的机会以后有很多很多,但做科研的黄金期,过了研究生就不会再有了——

【3】为什么做科研

早在 3 月中旬规划自己在 CMU MSCS 生活的时候,我就明确了一点:硕士一定要争取发顶会一作,但不一定申请 PhD。现在的我有更充分的理由来阐述自己这样规划的理由。

总结就是,非申博导向的科研既可以让我更开心地读完硕士,理论上也能帮助我进入大厂更核心的组。实际上,我看 Stanford MSCS 有相当多的学生好像都是专心搞科研但最后直接去了业界,所以这条路应该很常见。

本科期间,我的科研经历加起来不到 400 小时,而且都是打杂,并未做过任何实质性的科研。不过,我对科研的一些基本原则还是有所了解的。比如,观看 Philip Guo 老师的油管和博客,让我对科研的大局观,以及美国 CS 界教授的生活、职业周期、动力和渴望,都有了最初的认识。

腾讯、百度,还有传说中的阿里达摩院,都有专门针对科研人才的项目,他们很看重有科研经历的人,把他们作为顶尖人才。

在我眼中,接受严谨学术训练,可以培养的一些特质包括(1)数学建模能力,(2)搜索、阅读专业性强的论文的能力,(3)追逐前沿技术的能力,(4)创新能力与发散性思维,等等等等。

做科研的另一大理由是可以结识人脉:顶尖大学的 CS 实验室里,都聚集着全世界最优秀的人才,尤其是导师和博士生。即使在实验室里听同学们聊天,也一定会大大开拓自己的眼界。此外,参加学术会议也是认识专家的好机会。

另外值得提及的是,做科研有一定机会能拿到奖学金,免除学费,这也是笔不小的钱了(当然现在实验室经费紧缺,拿奖会困难些,更常见的情况可能是做 TA 拿奖学金)。

当然,科研的工作有时会被批评“脱实向虚”、“不切实际”、“投入回报比低”。这里我引用 Philip Guo 从学术界出发的观点,科研的逻辑就是多探索,谁知道哪些有用哪些没用呢。绝大多数学界的 idea 都是会被淘汰的,甚至可以说大多数文章都是在灌水,而这并不代表它们没有用。

最后,做科研不代表我将来就要成为那方面的专家,目前的我对自己的定位还是成为通用型的软件工程师。这和国内研究生的目标有所不同,前面提到国内公司招人时职责分得很细,比如硕士搞 NLP 的,面试就主要考相关知识。

进入了业界,创新能力确实“不如工程能力实用”,业界需要的工程能力包括计算机基础知识、搜集与处理数据能力、产品思维等等做科研涵盖较少的方面。

因此,“先做工程师再做算法工程师”,我不希望自己把领域定得太细,而是把做科研当成提升综合能力的契机。

【4】PhD or not?

虽说要做科研,但是否以申请 PhD 为导向,对我意味着十分不同的道路。比如理论上说,如果要申博,那我得多勾搭更年长的教授,以求得大佬推荐信,否则的话不用担心推荐信的事情,那多跟着年轻教授或许能收到更多直接指导。

说到这里,我个人并不喜欢美国申博体系里,3 封推荐信这项游戏规则。现在的 CS 学术圈太看重人脉了,如果要赶在 2021 年末申博,我需要在 1.5 年内搭建起强大的人脉网络,这对我太难了…除此之外,硕士前一年半我将有极大的发论文压力,而且大概率得放弃暑期实习,我不想给自己太大压力。

当然,如果不以申博为导向,由于硕士毕业不需要科研,那科研就变成了我“不是必须”的任务,也许让我陷入得过且过的咸鱼状态;为了激励自己,我可以把申博作为形式上的目标。另外,我可以 2022 年毕业先工作(或者继续做 RA,相当于 gap 了),等 2022 年末申请,压力会小很多。

翻看 Stanford NLP 和 Vision 组的硕士毕业生去向,只要读 PhD 的都是超级名校,推荐信的分量应该是最重要的原因之一。但显然我不能指望自己也能进四大 /UW/UIUC 等学校的 AI 项目,它们一共才招多少人啊,我的基础相比那些大神来说差太远了…

不过四大 PhD 真的重要吗?如果只是要一个学位,那显然不需要追求四大;能上美国前 30 的 CS 博士那都是和清北复交的优秀学生谈笑有鸿儒了。

还要考虑的是毕业难度和 PhD 值不值得的问题。对于博士生来说,发 paper 可以说是他们事业的全部,这难度可不是说着玩的,比硕士毕业难多了,如 Philip Guo 所说,发 paper 是一场和全世界最优秀科研人员竞争的游戏。假设是在 Stanford 这样的地方读 PhD,那毕业的压力更是可能大到爆炸:The PhD Grind 多次提到辍学或者 9 年才毕业等读废了的案例。

说到底,读 PhD 就是一场人生的大赌注。二十小几的年轻人,便需要在选方向的时候就能看到很远的未来,看到所在研究方向的发展和应用前景,还要早早选好正确的导师。成功的回报高,失败的风险也高。

说了这么多,目前看,打击我读博积极性的最重要因素,还是来自于美国自身:

2020 年,美帝在抗疫和签证上的一系列神操作,劝退了无数想在美国留下的中国留学生。5 月 29 号的中国学者禁令出台,之后又不断传出学者在海关被盘查刁难的新闻,我才真切意识到,如果我在美国做 AI 方向的 PhD,我的人身自由将会受到严重的限制。设想我读着读着,突然身份出了问题,之前做的工作都要打水漂,那可不是说着玩的!

更要命的是,我了解到无论川宝宝在不在任都会如此。各种 PhD 在美国七八年连一次家都回不去似乎是常态,我和我身边的很多朋友都感慨,不想过这样的生活哎…

当然,我要读 CS PhD 不一定要在美国啊,如果能去清北、上交或者香港,看上去也不错,未来也许可以探索一下这个道路。最后,究竟是否读 PhD,不用着急做决定,毕竟和我同项目的小伙伴也有一半以上都没有决定要不要读博呢。

【5】科研方向

在 CS 科研界,如果我想在硕士阶段达到发 paper 的目标,那么排除掉 system 这类科研周期长的领域、HCI 等小众的或者我并不熟悉的领域,AI 方向无疑是极好的选择:这里的科研探索的空间大,而且项目周期也相对较短。另外,我们项目有约 2/3 的同学都选了 AI track,因此选择 AI 也会得到更多 peer support。

AI 里又有 ML、CV、NLP 等细分领域。目前我对 AI 的认知还处在极其肤浅的阶段,但既然是要选方向,那就必然要在信息不全面的情况下做决定。

按照 458 教我的排除法,三个选项里我首先排除的是 ML theory:我不是很擅长、也不太喜欢纯理论的科研,而是想做与业界联系紧密的研究。其次排除的是 CV,原因有二:

第一,我在旷视实习的朋友说起 CV 工业界和学术界的严重脱钩,很多学界的算法要么在实际应用问题中表现很差,要么没有什么应用价值,感觉这个领域有点火过头了,在短期的将来有可能进入瓶颈(胡说警告)。

第二,我知道的申 CV 方向 PhD 的同学,最后都被拒得很惨,其中当然包括 13 篇 paper 在手的何宜晖大神,这让我得出了 CV 方向目前人才过剩、内卷严重的判断。

于是,2020 年 7 月 4 号,我正式决定入坑 NLP,啃教材、看网课、找组织,从零开始稳步打基础……当然,毕业前发 ACL 只是一个初步的目标,未来可能会视情况调整,CV 也可能最后 turn out 是合适的选择(虽然我每次问别人,似乎都会得到不同的答案)。

我其实甚至不用拘泥于做 CS 的科研:现在无数的领域都需要用到 CS 和数学的方法,有很多综合学科的交叉方向可以探索。我今年在腾讯实习的老板就是学地理信息系统 PhD 毕业的。

【6】结语

这篇日记里提到的各种结论,很多是我整合各种知乎或公号(如夕小瑶)帖子的信息而得出的,而非我自己根据自身经验得出的。这些结论可能很快就会证明不完整甚至不正确,但我会在不断的实践中慢慢地批判继承这些观点。

同样,我的规划也可能再过几个月便要重写一大半,但至少我根据自己目前掌握的信息尽力进行了分析。

做人生道路选择是最重要的技能之一,用一句鸡汤来说就是“选择比努力重要”,因此即使现在定下的方向不完全对,至少我锻炼了思考的能力。

还记得做 Leetcode 第 904 题时,我先是列出了尽可能多的 input 情况,尝试分析着找到一般规律,最后再得出解题方法。想清自己的人生规划,也会经历类似的过程,从搜集信息,到整合信息,最后搞明白自己要达到目标所要走的道路。

最后,作为自我激励:3 年前的我连一行代码都还没写过、除了考 AP 以外几乎一年半没学过数学,到如今则已经走完了这么长的道路。8 月 9 号我就要去斯坦福了,2 年之后,希望硕士毕业的我,积累更多真才实学,真正置自己于不败之地。