【来源】《中国计算机学会通讯》第7期《专栏》
【作者】钱辰, 美国肯塔基大学助理教授。主要研究方向为计算机网络、软件定义网、移动计算和分布式系统。
我为什么鼓励你读博士
看过《水浒传》的朋友都知道,梁山的一百单八将因为各种理由加入了水寨,走上了劫富济贫、替天行道的路。我2006年从南京大学本科毕业以后,耳闻目睹了数百位计算机专业的博士(生),他们选择读博士的理由可以说比梁山好汉更为复杂。
就拿我自己来说,我从小就对编程不感兴趣,高中毕业时一心想报的志愿是数学或者物理专业,但被做数学教授的父亲逼着填报了计算机专业——他出于很多理由,不想让儿子走他的老路。后来我听说计算机专业居然也有一种不需要编程的职业——做教授!从此我对做教授无限向往,于是坚持读完了博士。
我的硕士生导师倪明选教授(现任澳门大学副校长)曾经有一位及门高弟,在倪教授问其为何读博士的时候回答:“我妈妈要求我拿到博士学位,我博士毕业以后就去赚钱。”这位传说中的师兄如今已是国内某著名IT公司的高层领导。
与形形色色的读博理由相对应,这些博士(生)人生的道路也各不相同。有成为国内外大学教授者,有在公司做技术骨干者,有做一般的工程师者,也有读博期间遇到困难及时退学去工作者,也有苦苦支撑到毕业然后去工作者。当然,他们都比梁山好汉们的结局好得多了。
经常有朋友或者学弟学妹问我:“你觉得读博士好不好?”“你觉得我是否应该读博士?”这些都是相当难回答的问题。
而我们在选择是否读博的时候,往往是对这个专业还没有足够的了解,比如大三、大四时。在中国学生中有一种典型的“羊群效应”:如果周围同学(尤其是学习标兵们)都在准备出国或准备在国内读博,那大家都会效仿,觉得读博很有面子。如果大家都说读博没意义,即使对科研感兴趣的同学,也可能会因为面子问题而不去读博士。
10年前,我也曾经与同学一起去面试微软的工程师职位,甚至宝洁的销售经理职位。现在想想,那些职位既不是我所长,也不是我的兴趣所在,可当年我又如何去判断呢?
我想通过对一些博士人生道路的回溯分析,给计算机专业的学生一些建议,帮助他们选择是否要读博士,鼓励他们通过独立思考来选择自己的道路。
对于读博士的一些误解
年轻学生由于消息渠道不灵通,或者没有得到正确的指导,对读博士有一些误解。
这个看法是完全错误的,如同“演员只有非常有表演天赋的人才能当”一样是个伪命题。你如果认为大家心目中的学术大牛都是绝顶聪明的人,就好比说经常出现在新浪首页或者微博热搜的那几位明星的演技都非常好一样。
在我所认识的博士中,做出顶级科研的并不都是同辈中超级聪明的人,也不一定是平均成绩点数(Grade Point Average, GPA)最高的人,更不一定是参加ACM编程竞赛的高手们,而恰恰是那些有耐心有毅力坚持去钻研的人。
很多博士生只要选好导师,选好研究方向,肯花费时间,都能做出顶尖的研究。有很多在海外学术圈颇有建树的学者和我私下交流的时候说他们当年的学习成绩并不好。
▌2.“科研穷三代,读博毁一生。”
这句话在其他领域或许是对的,但在计算机领域就是错的。在计算机领域,通过读博挣钱的大有人在!计算机学科的特性就是科研与产业结合得非常紧密。尤其是最前沿的科研,对产业有很大的推动作用,并产生经济利益。
一个典型的例子就是谷歌的创始人佩奇和布林都是博士生,也出自博士家庭。虽然他们没读完博士就去创业了(布林自称现在在职读博士),但是如果他们没有读博,那将很难开创出谷歌的核心技术。
目前业界大数据系统的宠儿Spark,就是由加州大学伯克利分校的教授和博士们开发的。首席开发者马泰扎·哈里亚(MateiZaharia)即使有挣大钱的机会,也没有完全放弃麻省理工学院的教职。
在网络技术领域,目前业界关注的核心“软件定义网络”也是教授和博士们在大学里开发出来的。谷歌、威睿(VMware)、 Databricks (Spark)、Nicira (OpenFlow)以及无数顶尖技术公司雇佣了数以千计的计算机专业毕业的博士,因为博士通常比其他雇员更接近核心技术。
如果你想实现自己的技术梦想并挣大钱,读博士是一个很好的选择。“读博就得走清贫的人生道路”是没有任何道理的。
▌3. “科研做的东西大部分都是废纸,对实际一点帮助都没有。”
这种观点在计算机领域也是不正确的。计算机科学并不是屠龙之技。今天几十亿人都离不开的计算机网络的原型就是从加州大学洛杉矶分校发展起来的,我的师爷(我导师的导师)莱昂纳多·克莱洛克(LeonardKleinrock)教授在阿帕网(ARPANET)项目中开发了互联网的雏形,并在1969年发送了互联网的第一个数据包。
20世纪70年代,我的导师、美国工程院院士林善成(Simon Lam)教授在他的博士论文中分析了解决链路层冲突的方法,最后被以太网采用,融入到我们的生活中。
林教授在90年代开发了安全套接层(SSL)的第一个实现系统,如今安全套接层被运用到每台电脑和手机的浏览器中。不仅是计算机网络,几乎每个计算机领域的技术都被科研引领着。
按照加州大学伯克利分校博士后研究员钱学海博士发表在《中国计算机学会通讯》(CCCF)上的文章1所说,计算机体系结构这些年的发展,都与该领域四大学术会议上的论文密不可分。
另一方面,虽然很多论文在现实世界不一定能体现直接价值,但是在写文章的过程中,你能学到很多东西,比如提出问题、解决问题、语言表达的能力,这些都让人受益无穷。
▌4.“博士毕业还不如本科生和硕士生好找工作。”
其他专业可能会出现这样的情况,因为很多事情并不需要博士学历的人去完成,本科学历便绰绰有余,但在计算机领域这种观点是错误的。
美国的先进科技公司往往对计算机专业的博士求贤若渴,因为博士掌握着先进的科技,能为公司带来经济利益。
我最近访问英特尔总部时,英特尔的研究人员便提到,在20年前英特尔还招聘硕士进行研究,然而最近英特尔基本只招聘博士。
在美国,如果一位博士的科研领域正好是公司所需要的,那么很多公司会开出15万美元的年薪和公司股份来求贤。
这种情形目前在国内还并不常见,原因可能是国内的一些公司目前还处在模仿阶段而不是创新阶段。
随着国内技术水平的不断提高,越来越多的公司也会渴求掌握科研本领和核心技术的计算机专业博士,估计在五年以内情况就会好转。
博士能学到什么
读博士不仅是学习知识和技术,也能培养其他职业技能。读博所收获的并不仅是那几页论文,还有写论文过程中学到的东西。对于中国学生来说,工作中并不缺乏解决问题和编程的能力,而是欠缺表达和沟通能力。
比方说你有一个想法能让公司某软件的性能提升一倍,那么你需要说服公司高层领导,让他认为你的想法是有意义的、值得投入资源去开发。
实现这个目标所需要的能力是中国学生一直欠缺的,但是可以通过读博得到锻炼。
▌1.把握公司高层领导和用户的需求的能力
如果公司高层领导对某软件的性能完全不感兴趣,你当然就不能提出提升软件性能的想法。你要知道公司目前最需要什么技术和产品。这个能力并不是天生就有的,而是慢慢揣摩、锻炼出来的。
在读博过程中,你必须知道你的导师喜欢和擅长的课题,摸透审稿人喜欢的表述方法和结果。这都是你极好的锻炼机会,因为在读博的时候,允许失败;但是在职场上,失败的代价非常高。
▌2.语言表达能力
我在香港学习期间,与我相熟的刘云浩教授(现任清华大学软件学院院长)反复强调表达能力的重要性。
作为一个科研工作者,你要写出能说服别人的论文;作为一个软件工程师,你要写出能体现你贡献的技术文档;作为一个项目负责人,你要写出好的项目申请书和总结报告,让公司知道你的价值。
很多中国学生的语言表达能力很弱,这与外语水平并不是非常相关,而是由于没有经过写作的准确性和逻辑性训练。而读博写论文的过程就能培养逻辑表达能力。
▌3.克服困难的能力
被别人拒绝很伤自尊。作为天之骄子的大学生,除了追求异性,恐怕很少遭受被人拒绝的经历。而残酷的职场里到处充满拒绝的情形。如何能够以正确的心态来面对这些事情,也是可以通过读博来训练的。
当第一次投稿的论文被无情拒绝后,很多学生都非常愤怒和羞愧。甚至有不少聪明的学生在论文被拒几次之后,一气之下放弃了搞学术。
其实,论文被拒稿原因并不一定是你的工作做得不好,很可能只是差了一点运气和工作的完整性。在职场里,求职和升职也可能会被拒绝,原因也并不一定是自身的不足。读博能帮助你认识和理解这些事情,并以平常心来面对挫折。
什么人适合读博士
我认为读博士并不需要天生的特殊能力或者后天的条件。我们平常所说的能力,诸如编程、数学和英语,都只能叫做读博士的催化剂,而不是发生化学反应的“反应物”。所以,问题并不是“什么人适合读博士”,而是“什么人不适合读博士”。
▌1.没有耐心的人不适合读博士
一个计算机专业的博士,需要在自己的研究方向上成为世界级的专家。没有人能在短时间内成为专家,即使我们看到有些博士生在第一年或第二年就发表了顶级论文,但他们其实并没有从总体上完全理解该方向,选题有可能是靠导师帮忙,甚至就是导师指定的。
大部分重要的工作,尤其是涉及系统的领域(比如操作系统、网络、分布式系统、体系结构、编程语言),并不是在短时间内就能做出成果的。一篇重要的系统方面的论文,通常需要花费近一年的时间去做实验与写作,而之前知识的积累则需要更久。
文章发表之前的一段时间是最难熬的,大部分失败的博士生都是跌倒在了这个阶段。而能够熬过这个阶段的,不论之前的背景如何,大部分都能继续发表更多的论文。“耐心”是读博最重要的条件。
▌2.不欣赏科学和技术的人不适合读博士
一个成功的计算机博士要懂得欣赏(或者至少愿意欣赏)他人发表的优秀成果,欣赏教科书上的经典设计,欣赏自己或者导师提出的重要问题和解决办法。如果你对科技完全不欣赏,那么是不可能做出好的科研成果的。
读博士需要注意什么
▌1.选择合适的导师
导师与一个博士生的命运休戚相关。相同条件的两位博士生如果遇上不同的导师,可能会产生截然不同的命运。
每个导师的背景不同,手上的资源也不同,而他愿意给学生的资源数量也不同。
假如某资深教授A的资源为10,某年轻教授B的资源为5。但是A教授有一个10个学生的庞大实验室,能给你的资源只有1;而B教授仅有你一个学生,给你的资源可以是5。显然B教授是更理想的选择。当然实际情况并不是如此简单。
比如在美国,通常资深和年轻教授的资源差距不大。在中国,资源差别可能很大——当然目前这种差距在逐渐缩小。也有可能你在同门中表现突出,资深教授特别中意你,能给你8个资源。
还有可能年轻教授长袖善舞,与许多同行和工业界的关系非常紧密,这时他的资源反而超过资深教授。因此如何选择导师,绝对不是看资深与否或者脾气好不好这么简单。
▌2.选择合适的课题
同领域里可以选择的课题有天壤之别。有些课题没有研究价值。有些课题很难,即使认真做了,也不一定能做出好的成果。
我的建议是,博士生应该经常阅读顶级会议的论文。即使课题组历史上从没在顶级会议上发表过论文,即使导师不做要求,即使你不在顶级会议上发表论文也能毕业,你还是要去了解。否则研究容易和现实脱节,自然不会得到认可。
博士之后的职业选择
我认为读计算机专业的博士是一个“进可攻退可守”的选择。因为在计算机领域,学术界和产业界联系紧密,任何一行都离不开计算,读博士的职业选择相当多样化。
我在德州大学的博士师兄师姐们有的成为常青藤大学的终身教授,有的成为贝尔实验室的主任,有的成为谷歌公司的项目负责人,也有的成为初创公司的创始人。
我在香港科技大学的博士师兄师姐们有的成为摩根大通银行(JPMorgan Chase)的副总裁,有的成为国内名校的新贵,有的在公安部研究所担任重要职务。计算机专业的博士即便职业选择再不如意,也很少有为生计烦恼的,在其他专业的人看来这些人都是各行菁英。
如果你没有虚度光阴,在读博士过程中学到的知识在未来的职业生涯中都会发挥作用。
如果你的优势是写论文,你可以选择成为大学教授;如果你的优势是解决技术难题,你可以选择成为公司的研究员;如果你的优势是编程,你可以成为软件工程师;如果你的优势是建模,你可以加入金融公司等。
计算机专业的知识都是实用性的,这是计算机专业一个得天独厚的优势。即使读博的过程非常不如意,也可以及时跳出“止损”,社会不会把你当成一个失败者,公司依旧非常欢迎博士退学者——因为他们也学到了技术。
如果说一百零八位好汉在踏上梁山的那一刻就注定了此生命运坎坷,那么与之相反,读计算机专业的博士却可以保证你未来的生活,并且在此基础上会有多样性的选择来发挥你的优势。
相关阅读: