当我从大学毕业获得计算机科学学位的时候,我就想继续学习并获得博士学位。但是,我又想作为一个软件开发者去参与工作,所以我在这一行中工作了五年之后,又回去念了一年的博士学位,在作为博士生的一年时间里,我发觉我更喜欢专业的软件开发。尽管这已经是多年以前的事情,但我觉得这里面我学到的一些经验现在仍然适用。
为什么要取得博士学位?
喜爱学习。我享受于学习计算机科学的每一分钟。我一直都很喜欢数学和电脑,并且我在查尔姆斯理工大学的硕士课程就包括了大量的数学课程和计算机课程(软件和硬件),以及常见的工程课程例如物理和力学。有这么多出色和聪明的理念:拉普拉斯变换,控制理论,信号处理,纠错码,堆排序,排队论,等等。因为所有这些学习的东西是如此有趣,因此为了能继续了解这样有趣的内容,我觉得我有必要继续去念博士。
别人会认为你很聪明。想去做博士的另一个原因做是为了显示自己有多聪明。在现代薪资体系中,学历是收入的另一个标准(尽管你需要花费数年才能获得博士学位)。
博士学位的具体情况
在用了五年时间为移动电话交换机开发软件之后,我决定是时候回去深造了,于是我去了瑞典隆德大学的通信系统系开始我的博士学位。他们的其中一个研究领域是拥塞控制算法,这很适合我,因为它适用于电信系统的同时大量应用了数学。他们也搞软件开发研究,这是额外的加分点。
除了回顾一些数学和排队理论,和上博士学位的课程外,我不得不决定研究方向。由于目的是发布结果,那么主题必须是尚未被研究过的。但是这里的问题是,没人期待结果如何(至少据我所知是这样的)。我结束了在分布式系统的研究,包括一些模拟。但是,我的感觉是,我研究问题在某种程度上是为了有内容可发表。
博士工作的第三部分(除了上课和研究之外)是教学。虽然我只是排队论课程的助教,但它让我意识到在大学任教需要花费多少的时间和精力。
在瑞典,你是被大学录用来做博士的,因此学校会支付你薪水。这听上去挺不错,但并不如你在行业中工作得到的多。在其他方面,我又回去做了一次学生。虽然当我在念硕士的时候我真的很喜欢做学生,但第二次去做真没多少乐趣。所以在做了一年的博士学生之后,我决定这不适合我,于是又回到了爱立信工作,担任一名软件开发人员。主要的原因是我觉得我的工作变成了编造问题,而不是工作于真正需要解决的问题,以及还有薪资更低,又被当作了一个学生,当然最重要的是软件开发比我在念博士期间做的程序有趣得多了。
我学到的经验教训
你没有必要成为学生的身份去学习。这是我最明显的教训,而且令人难以置信的是,我花了这么久的时间才明白这一点。在回到大学之前,我以为这里才是“真正”学习的地方。在之前我工作的五年时间里,总的说来,我并没有花多少时间来学习更多有关软件开发的内容:我学习了我使用的语言和工具,但仅此而已。
在做博士期间,我买了一本《Code Complete》,是它使我睁开了蒙蔽的双眼,让我意识到有多少学习软件开发的途径。它不仅有很多研究的例子、关于编程各个方面的调查,而且它还有关于软件开发很长一串的参考书单。这使我意识到,即使你不去上大学的课程,也可以保持不断地学习。
现在,许多年以后,得益于如 Coursera 和EDX 这样的 MOOC 供应商,你甚至可以在业余时间攻读实际的大学课程。我抓住了这个机会,接受了第一批中的一门课程,“Introduction to Databases”,以及其他。
博士学位不会让你变得聪明。虽然的确有很多的聪明人获得了博士学位,但也有很多很多的聪明人并不具有博士学位。于是我意识到,是不是博士并不是聪不聪明的标记。同样的,能不能相出巧妙的点子和是不是博士无关。
变得泯然于众。我发现当我带着博士头衔和其他人接触的时候,我变得非常谦逊。也就是说,我还不如以前能给人留下深刻的印象。我试图不论学历地来评估一个人。我合作过也见过形形色色的人,聪明的和没那么聪明的,聪明和学位不相关。
狭窄化的问题 vs. 大范围的问题。研究人员通常研究那种很窄的问题。例如:给定某个到达分布和良好准则,那么最优的拥塞控制策略是什么?虽然这些都是要学习和理解的重要内容,但是我更感兴趣那些大范围的“是什么导致软件成功”的问题。以电话交换机为例,为了成功,它必须在很多方面都执行良好。它必须有足够的能力,但是不能崩溃,它必须很容易配置,它必须很易于寻找故障,等等。拥塞控制只是众多问题中的一部分,只给出这个问题的解决方案是不够的。
我意识到我更享受工作于大型软件系统所要面对的挑战,即必须每个方面都做到位,而不是研究一个很窄的细节性问题。
拥有用户的快感。当我启动博士程序的时候,我才发现有用户的重要性。研究于我自己选择的问题,而没有任何人热切地等待着结果,真的让人特别提不起劲,相比之下,工作在有着许许多多用户的系统上,那就别提有多兴奋了。我添加的功能和我修复的 bug 将对很多人产生直接的影响,我真的很怀念那样的感觉。
选择的价值。由于我在开始博士之前已经工作过一段时间了,所以我知道选择是什么。我的意思是,大多数人在拿到硕士学位之后立即去读博士,意味着,他们不知道非学术界的工作是什么样子的。在大多数情况下这可能无所谓,但有时知道你错过了什么很重要。
结论
我很高兴我尝试过做过博士,但我也很高兴,我在一年后选择了离开。做一个专业的软件开发人员让我更有幸福感。而且,我很高兴这并不意味着学习的结束。与此相反,我依然可以学习很多有趣的领域,并且有大量的学习资源可用。