我在美国读CS博士的一些体会
前言:
本文适合于读CS PHD的新生,特别是那些对科研和PHD没啥概念的人。如果你已经发了好几篇TOP CONFERENCE的文章,或者已经有了明确的研究方向,那么就不用往下看了。
背景:
我是转专业的,现在在美国一个中游学校读IT PHD。不过周围的同学和老师基本都是CS下面的,所以应该对CS学生也适合。我现在已经读了5年,不过只发过一些比较差的会议的文章,所以本文主要讲失败的教训,希望有类似情况的同学少走些弯路。另外,我主要是做系统方面的。其他方向(特别是偏理论)的应该不太一样。
中心思想:
读PHD是一件比较辛苦,需要付出很多努力的事情。基本靠自己,不要指望导师能帮多少。
正文:
虽然以前也知道读博士不是一件容易的事情,但是直到自己真正读了之后才有比较深的感受。读博士主要困难的地方是需要面临一个有很多未知的领域,要自己想办法去解决一些新的问题。这个新问题不仅仅是针对你自己,而是针对整个学术圈子来说,也就是说任何人,包括你的老板,都没有一个十分明确的答案。大家都是在摸索中,估计某个方案可行,然后做下去。这也是研究本身的意义所在。由此也引发了很多问题。
首先一个问题是博士到底要读多久?这个本身是没有一个明确的答案的。I-20上写的只是一个估计的时间,实际情况远远没有那么简单。我身边很多都是6年才毕业的,更长的也有。网上看其他人,一般也都是6年左右。读博士不象读硕士,有个明确的时间表,2年或者3年后肯定毕业,除非你犯了什么大错误。博士毕业就难说了。简单的说要通过论文答辩。但是什么样的论文才是博士水平的论文呢?一般来说起码要有一定的贡献,解决了学术界某些问题。但是这个一定的贡献具体就很难说了,也许有的学校或者老板会明确说要发2篇好文章。但是学校里一般不会这么写。另外,啥样的文章算好文章?这些也都很难界定。因此,博士毕业很多时候都是老板说了算,所以也要看点运气。当然,如果你很牛,可以发好多好文章,那么完全不用担心。
其次,我碰到的另外一个问题是做PROJECT和发文章之间的矛盾。CS特别是系统方面,很多导师的FUNDING都是通过申请一些PROJECT得到的。然后找学生来做。比较理想的是PROJECT做完,也可以发一两篇好的文章。但是有时也会有矛盾。对于有的PROJECT来说,最后验收的东西有可能是个PROTOTYPE或者DEMO。而文章并不是硬性要求。
如果刚好导师对文章也不是非常注重的话,这时就要靠学生自己多考虑发文章的事情。我开始的时候对这些就没有很注意。那时觉得老板出钱给我RA,那我就把老板的要求做好贝。结果代码写的很花心血,文章就放在一边了。最后,也写了1,2篇文章并企图发表,但是没能被好的会议录取。
现在我觉得是这样。RA也只是PART-TIME,规定一周也就是20小时,这些时间我可以全力做PROJECT,写代码。但是剩下的时间就要多为自己考虑下发文章的事情了。做PROJECT和发文章还是有一些差别的。
另外,老板的类型有很多种,但是不论那种,都是要靠自己找方向,想新的东西,发文章。我刚开始的时候,由于本身基础不是很好,加上对科研没啥概念,所以那时基本上是老板说啥就干啥。过了一段时间之后,才发现这样是很难毕业的。(当然,也许有的老板是直接指导学生发文章,那是比较好)
我一开始跟的老板不是FACULTY,他主要是申请FUNDING,做PROJECT。虽然有时也让我发表文章啥的,但是总的感觉他对发文章不是非常热衷。加上我也不懂,导致在刚开始的时候犯了一些低级错误。比如第一次投一篇文章的时候,事先的准备工作都没做好,不知道当前的研究已经到了哪个地步。结果发出去后,人家REVIEWER直接说,这个东西已经做过了,然后给了那篇文章的标题。
直到这时,我才知道有人做过类似的东西。实际上,这种错误是完全可以避免的,只要在发文章之前多GOOGLE就可以了。另外还要多看看目标会议中已经发的文章和那些大牛们已经发的文章。我碰到的那个就是在一个同类型的牛会议里已经有人发过了类似的文章。
这个时候我已经意识到要自己想新东西了,但是还是对教授们抱着一些幻想。直到碰到第二个老板。这个老板也算是我们研究中心的。他是ASSISTANT PROFESSOR,所以对发文章还是很热衷的。而且他的想法也很多,经常和我讨论一些新的东西。
我一听,那些想法似乎是比较新,然后就跟着他做一些东西。但是等做深入之后,才发现还有很多未解决的问题。更糟糕的是,很多东西已经被人家做掉了。再做就要超过人家才行。这时再去和老板讨论,发现他也没有啥具体的解决方案。(这个其实也可以理解。)最后的结果就是,做了一半就做不下去了,因为想不出什么地方可以做的比人家更好。
后来,我慢慢发现,这个老板很多时候就是和你讨论下新的可能的方向。也不是说那个方向肯定就好,也不是说那个方向他就有一个完全的新的解决方案。所以最后做什么还是要自己想。另外,有的时候,你想的东西可能老板还不同意,这也正常。比如有可能有人做过,或者他觉得你的想法不够好。这时,你就要想办法说服老板。如果说服不了,那么估计想发文章也难,还是再重新想新的东西吧。
我现在做的东西就是基本上是自己想出来,我感兴趣的方向,同时也说服了老板,让他觉得有意义。开始的时候他也是反对的。不过我不停的和他ARGUE,总算引起了他的兴趣。这之前差不多有半年多的时间都是在找方向,补基础知识。后面做又做了一年多,前一阵才写了一篇完整的文章(中间改过无数次),并且投了出去。不过还在等消息。
做系统方面一个困难的地方就是之前的学习时间很长,要做的东西很多。特别是第一篇文章,也许要做1,2年才行。不过有了这个基础后,后面再做应该会快些。
另外,在东西做好了之后,如何写文章也是一门学问,有很多要研究的地方。
我现在觉得也只能算刚刚入门,没有牛PAPER总觉得底气不足。之前走了很多弯路,写出来总结下,希望以后的同学们能够避免这些错误。
DriverEntry
2010