当前位置: 华文星空 > 知识

读 CS PhD 之前没有工业界经历真的没关系吗?

2019-09-21知识

我觉得我在怀疑人生的时候,也有和你一样的困惑,我觉得题主描述的基本上我全中。我才刚刚开始 PhD student 生涯,我是做 system 的,之前也没有任何工业界的经历,到目前为止做过关于 research 的事情就是 debug 和跑实验,对 research 还没有产生出什么自己的想法,所以夜里睡觉辗转反侧的时候,常常会怀疑人生。

在读 paper 或者听 talk 的时候,我心里就会一直想:这个东西真的会有人用吗,为什么现在工业界不用这个东西,现在工业界在用什么,为什么我无法理解这个 motivation,工业界现在真的有遇到这个问题吗,工业界现在遇到的问题是什么……有时候我会觉得,是不是因为我从来没有在工业界待过,所以导致我不知道现在广泛使用的解决方案是什么,能解决什么样的问题,有什么不足……如果我连现有的解决方案都不知道,如果我连需要解决的痛点是什么都不知道,如果我连问题在哪都不知道,那我又怎么样开新坑做 research 呢?

我觉得这么下去不行,我需要跟工业界接触一下,于是新学期开头第一次跟我老板开会之前,我就在想怎么跟我老板提出我想去工业界实习一下的想法。谁知开会的时候,我老板竟然主动问我要不要去实习,让我十分惊喜。他说,你要是想去 MSR,我有好多人可以给你介绍,而且申请的流程也简单,你跟 researcher 聊聊天他们想要你就行了,而且去 MSR 的话比较容易出 research 的成果;你要是想去 Google 的话,我就只能给你介绍去一个组了,而且他们 Google 申请的流程很麻烦,要走一趟正规的流程,包括 code interview,而且 Google 相对来说比较不容易产出 research 成果。所以你想去哪个?

我心想,老板都这么贴心地帮我把这两个选项的优劣列清楚了,这不是非常一目了然吗。所以我选 Google!(?????)因为我的想法是,我现在才第一年,还没有 publication 的压力,所以我可以选择去一个重视 engineering 但是不一定能有很好 research 产出的地方,这样离真正的工业界稍微近一点。后面的实习再去 MSR 多搞搞 research。

说到这里,我就想到了其实我在开始 PhD student 之前确实还是有个机会能够进入工业界的。在拿到 PhD school 的 offer 之后,一般来说会有 campus visit 的机会(见我之前的知乎文章:前言、UMich、Cornell、UW、UCSD)。在我 campus visit 的时候,有位教授就约我出来吃了个晚饭,说你知道吗 PhD offer 是可以 defer 一年的,不如你来跟我们创业吧。创业的头一年最重要,有很多很有挑战的事情,不如你来我们这里干一年,把这些有趣的事情都做了,然后一年后再开始读 PhD。票子,有的,股份,也会有的,都不比其他创业公司低。当时我觉得这位教授说这话的时候确实利益相关太大了,我怕有诈,所以也就没仔细考虑 defer 的可能性,不管是去这位教授的公司或者去其他公司。

其实现在想一想,包括之前跟 defer 了一年的 @张震 大佬聊了聊,我觉得大家确实还是可以认真考虑一下 defer 的(当然还是要注意一下各个 PhD school 关于 defer offer 的政策,跟小秘确认一下,比方说有的学校就白纸黑字写着说:如果是因为要出去工作的话就不允许 defer)。你想,出去工作了一年,有了钱,之后当 PhD student 的生活就会过得更滋润一点;见过了钱,你就知道自己最起码该值多少钱,不会因为钱的问题对要不要读 PhD 产生动摇;看到了工业界技术上、管理上、商业上、人际关系上的一些复杂的现象,就不会对工业界产生一些不切实际的幻想;意识到了一些痛点或者难题,这或许就会启发自己找到 PhD 奋斗的方向,成为潜在的 research topic;知道了公司、商业、技术是怎么运作的,在读 PhD 期间看待问题或许也能多些角度,更加深入……

不过反过来说,我又会想,要是当真我 defer 了 offer 去工业界干了一年,我真的能得到上面幻想的这些好处吗?或许我所做的就是码代码,顶多熟悉了常用的 software stack 的配置、使用以及坑在哪里;或许我会意识到一些难题,但这些难题从 research 的角度上看又没有价值,甚至别的公司已经有了成熟的方案只是我不知道;或许尽管我是公司的第10号员工,但是大佬们开会、商量发展的方向、见投资人的时候都不会叫上我,因为我只是一个普通的优秀 engineer;或许尽管我已经是一个比起同龄人强无数倍的程序员了,但是公司还有第5号员工是从某耳熟能详的大企业挖来的拥有20年经验的资深架构师,所以实际上我只是码着我被安排好的代码,并不能自己设计整个技术栈,甚至不能和资深架构师讨论不同方案的优劣;或许我想要学习一下怎么创业、公司是怎么运作的,但是我整日忙于码代码,大佬们又不带我,每天累得要死,回家就想做饭、睡觉,根本没有空来看看这些关于经济、金融、创业、管理或者其他类别的书……

我开始反思,不去工业界就不能知道问题在哪吗,就不能知道 state of the art solution 吗? 读论文啊! 我真的去广泛地读论文了吗? 没有。 经典的论文读了吗? 没有。 刚刚开完的会的论文读了吗? 没有。 哪怕是 summary,别人嚼过的东西,包括 The Morning Paper,甚至是知乎,读了吗? 没有。 那在你有限的少得可怜的读过的论文里面,你了解他们的 motivation、要解决的问题、怎么解决的、好在哪里、不好在哪里、为什么能被会议收入吗? 不记得,不清楚,没想法。 好好好,读别人的 paper 不行,那你对你自己手头的项目有什么想法吗? 没有,老板让干啥我就干啥。 那你别的啥都没干,是不是把时间都花在码代码上面了,我也不是说码代码不好,就随便问问? 对不起,也没有,就写了几百行 Python code…… 那你一定是花了不少心思在上课上面吧,我知道你们一二年级的 PhD student 还是要上课的? 好像也没有,project 是队友全程 carry 的,reading assignment 扫两眼论文再概括一下前面回答了的同学的答案。 那看来你一定花了不少时间在 social 上面吧,我知道对 PhD 来说 social 是很重要的? 没有,每天就学校家里两点一线,周末再去买个菜。 或许你有了女朋友所以不是那么需要 social? 求求你别说了,连朋友都没有哪有女朋友…… 那……那你这个 PhD 已经读了半年了……你都做了些啥?…… 大概……大概看完了 The Americans, Season 1 2 3 4 5 6 还有 The Expanse, Season 1 2 3……话说 Amazon Prime 真是好啊,学生有优惠然后又有这么多好看的剧…… 我看你就是条咸鱼吧?

当然,以上有很大的开玩笑的成分,我也并没有这么不堪(逃

总结一下,我想说的就是: 有工业界经历,对于读 CS PhD 当然是一件好事;没有也没关系,实习可以补回来,research project 跟工业界合作也可以补回来。如果收了 offer 还没有 accept 同时又有很好的工作机会,可以认真考虑一下 defer;如果你像我一样已经开始读 PhD 了,那就不要为自己不思考不干活不努力找借口了。