你需要一个博士学位么

8 minute read

来自哈佛的教师Matt Welsh为你解答“你需要一个博士学位么?”立志于读博士的每位都应该要思考的一个问题。

译文

自从我从学术界离开投身工业界, 就经常被(通常都是第一年或者第二年的研究生们)问到如果并不打算从事研究,去读一个计算机科学的博士是否“值得”。 毕竟要想在谷歌这种地方找一个工作并不需要一个博士学位(有了它,可能有些帮助)。见鬼的是,很多成功的公司(其中有微软、Facebook)都是由一些从没取得过本科学位的人创建的,更不要提博士学位了。所以说当你可以直接从学校出来(无论是否有学位)谋得一份工作继续你的生活,赚大钱并且做的都是有价值的事情的时候,为什么要花费5到10年经历这么一个劳累痛苦的过程去取得一个PhD学位呢?

读博士不是每个人都适合的,我不推荐大多数人去读。然而,我庆幸自己是取得了博士学位而不是拿到一个本科学位就去工作。首当其冲的原因就是,读博士让我学到了很多很多,而且我学到的大多数,是一个典型的软件工程师工作所接触不到的。 读博士训练你做研究:阅读科研文献,做实验,写论文,做讲座。读博士还教给你如何找出需要被解决的问题。从中,你会获得有一个夯实全面的技术背景,无论读博士,还是让你的工作接受学术同行严格审查的过程–更不用说你的博士论文委员会了。

我认为读博士有点像“大旅游”,一个16、17世纪的传统,年轻人通过游历欧洲,得以大量接触到法国、意大利、德国上流社会,学习艺术、建筑、语言、文学、击剑、马术 – 所有一位绅士如想成为一名有影响的社会成员必须具备的基本文艺技能。读博士是相似的:你大量接触到计算机科学的一个个子领域,成为你博士论文研究领域的世界顶级专家。顶级的博士生项目设置了一个极高的标杆: 大量的课程,教学经验,博士资格考试,论文答辩以及当然对你的研究领域做出突破性的研究贡献。经历这么一个过程将给你无与伦比的技术广度与深度。

我的确觉得读博士对一个软件工程师来说是有帮助的,尤其是哪些想成为技术领袖。只通过工作可以学到很多东西,然而读博士,你不得不去构建一个自己的编译器,或者设计一个新的操作系统,或者从零开始证明一个复杂的分布式算法,都使你对复杂的计算机科学课题有了更深的理解,这可不是通过StackOverflow上的代码示例就可以学到的。

通过读博士我学到的一些重要的东西:

如何阅读与批判研究论文。作为博士研究生(包括教授),你需要阅读数以千记的研究论文,提取他们的主要观点,评判方法与描述,并且将他们的贡献吸收到自己的研究中。从而接触到广泛的CS课题,解决问题的方法,复杂的算法以及系统设计。这不仅是关于从这些文章中获取知识(这相当重要),而且是关于熟悉科学文献。

如何写论文做讲座。对于工程师来说,在技术沟通上做到流畅是非常重要的技巧。我注意到了我共事的有PhD学位和没有的PhD学位的工程师中一个巨大差距。接受过PhD训练的人更能够给出一个清晰良好组织的讲座,并且知道如何描述他们的工作以及将实验结果展示出来。这类人因此更具有影响力。

如何做实验和表述实验结果:我不能再夸大这个有多么重要了。作为一个面向系统的PhD,需要你进行庞大数量的测量以及将这些结果用一个既能扛住同行审阅的批评(为了发表)又能吸引人的方式展示出来。你的方法的每一个方面都会被评判(被你的导师,你的共同作者,你的审稿人)并且你会很快的学会如何做正确的实验,并且正确的做出来。

如何找出需要研究的问题:这也许是Phd训练中最重要的一个方面了。读博士将迫使自己启航去探索人类知识的边界。(Matt Might的漫画很好的展示了这么一点。)我认为一个科学贡献中至少80%是找出了一个值得去研究的问题:一个有趣的,开放的,如果解决了会有影响力的问题。有许多开放的问题是研究社区不感兴趣的(可以比较,用Haskell写一个操作系统内核)。有很多感兴趣的问题已经被解决了一遍又一遍的(试比较,文件系统块布局优化;无线多跳网络路由)。挑一个好的问题是有技巧的,而培养出一个这样的品味正是你是否能成技术领袖的关键技巧。

所以我认为读一个PhD是值得的,尤其是你如果想攻克最困难也是最感兴趣的问题。无论你想在学术界发展,在实验室工作还是做一个更传统的工程师角色,都是值得的。当时正如我的PhD导师喜欢说的,“读博士要花你一栋房子的钱。”(指的是读博这些年的工资损失,尤其是当今,大概可能是好几栋房子的钱了。