《「研」磨记》读书笔记
最近在微信读书上看了一本书《「研」磨记》,讲的是作者攻读博士学位的一些经历,有一些启发,特此做一些笔记。
背景介绍
作者本科和硕士毕业于麻省理工学院电子工程与计算机科学专业。虽然作者父母没有强迫他读博,但是父母移民的经历,父母朋友的经历,以及母亲在加州大学洛杉矶分校终身教职和父亲在企业45岁被解雇的对比,让给作者带来了深远的影响。
除此之外,作者在本科及硕士阶段也在企业做过实习工作,对于企业有一些负面印象。原文说道:
虽然我已经学过很多专业技术技能,但我发现,日复一日的工作让我思维麻木呆滞。我的同事同样对工作缺乏热情,并且认为公司里没有事业晋升那种吸引人的前景。
作为对比,他还说道:
因为我觉得工程实习很无聊,而本科时候,我担任教研助理的那段时光非常享受,我就把未来职业目标定为去高校做教学以及科研。
作者在麻省理工申请了五年制本硕连读学制,并因为发表了两篇文章,获得毕业最佳论文,同时有导师的推荐信,获得了斯坦福大学的博士录取。同时作者说:
还有,我还非常幸运地赢得了闻名遐迩的NSF和NDSEG研究生奖学金(它们各自只有5%的通过率)。这两项奖学金可以完全支付我六年博士生涯中的五年学费,还免除了我做基金资助项目的义务。
这样一个背景,去攻读博士学位,看起来是自然而然的。
博一 坠入谷底
在迷茫的博一,作者跟随导师Dawson做揭错软件Klee,具体任务是在Linux驱动代码中寻找bug。在这里,作者得出了博士和之前本科阶段的一些差异。
我在一个陌生的领域做研究,缓慢前行,所以和本科阶段的科研相比,想要寻求帮助实在是难多了。那时答案非常明确,现在却不仅如此。由于组里只有我一个人尝试将Klee运用于设备驱动代码,我的同学也不可能给我提供任何指导。
所以想要得到其他人的具体帮助其实很难,在经历了各种波折和打击以后终于做出了一些成果。
于是就这样,我继续被“研”磨了几个星期,最后终于可以让原版的Klee分析937个Linux设备驱动并发现55个新错误(驱动开发者通过邮件确认了其中32个)。
但是因为时间紧迫,准备匆忙,最终提交的论文也没有通过审核。作者为了换个环境,申请并得到了Google的实习工作。因为作者的导师实际并不负担作者的读博费用,而且作者也已经厌倦了当前导师分配的项目,所以在实习开始的日子里,作者选择了闭关思考, 导师也没有什么意见。作者最后得出了一些感想:
现在想想,在读博期间这么早就单飞是个很糟糕的决定。人们可能觉得单飞特别浪漫,把单飞的画面想象成,一个学者独身一人,啜一口拿铁,时不时在笔记本上空白处涂鸦。恰恰相反,想要真正搞科研,闭门造车是不可能的。技术革命需要智力、历史、甚至物质上的基础(例如实验室设备)。其实我真应该在闭关的几周里和Dawson多交流交流,积极点,和其他教授、高年级学生合作。但是当时我烦得不行,对所谓的小组“研究食物链”泄气不已。因为处在食物链低端的博一新生,总得做最艰苦最乏味的研究工作。面对这些乏味的苦力,最终我还是逃之夭夭了。
博二 造梦空间
作者在Google实习的经历很愉快,在结束实习之后的给导师的信中写道:
从这个暑假和以前的工作经验中,我已经意识到,除非我对某个课题抱有强烈的热情,并且想要拥有它,否则我就很难坚持继续下去。因此,我急切地想要找到基于两者交叉点的项目,既让我热衷,又是教授和整个学术界认为值得研究的的项目。
作者在拜访本科阶段认识的一些教授得到一些建议。
后来和他们见面谈话时,这些教授大致都告诉了我同一件事:一定要积极和教授讨论,以找到你们彼此都感兴趣的研究项目;不论如何,都不要躲在自己的小世界里。之后的五年时间证明,这条看似浅显的建议,的确是金玉良言。正是因为听从了这条建议,我的博士生涯才能画上圆满的句号。
并且据此联系到了斯坦福的一位教授Scott,并阐明了自己想要做软件质量度量领域工作的想法。作者也做了充分的准备工作:
为了这次谈话,我准备了三个明确的想法,并准备好了如下台词,想在谈话中引出他们:1.存在的问题是什么?2.我建议的解决方案是什么?3.我可以用什么方法来做实验,使结果令人信服,可以证明上述解决方案的有效性?
后来的事情是,作者和Scott的学生Joel一起工作了一段时间,并且在HCI领域发表了一篇个人作为二作的文章。虽然不是完全作者自己发表的,但是对于提升个人信息有很大的帮助。作者说道:
然而,我从这段经历中学到了很多,包括如何进行科研,和如何撰写学术论文。最重要的是,看到这个项目最终成功结项,文章也投中了声名显著的顶级会议,我心满意足。对比博一时的Klee项目,那个让我挥汗如雨,却文章最终被拒的窘境,和Joel的这个项目的过程和结果,真像天堂。
后来作者继续和导师Dawson在实证软件度量领域合作,并且根据Linux内核的一些统计数据进行实验分析。作者写道:
我们见面时,我通常先给他展示通过分析得出的图表,之后他会提一些更抽象的建议,比如说“啊,图的这个部分看上去很奇怪,为什么?你把这部分数据如此这般分离出来,然后再深入挖掘一下。”数年后,我才知道这种工作方法在各个学科领域的计算科学科研人员中,非常常见;我为了写博士论文,开发工具,来避免这种普遍的工作方法的低效。但是回溯那段时光,我完全没有如此长远的眼光:我只是想发现一些有意义的东西,成文发表。
虽然进展还算不错,但是这个领域很难发表论文,原因作者也谈到了。
在试图发表论文时我们遇到这些麻烦的深层根源在于,这个研究项目属于实证软件度量(有时也被称作是实证软件工程)领域,而我们并不是这个领域的圈里人。在我和Dawson刚刚开始涉足这个领域时,很多其他学校和实验室的研究团队们已经开始做着类似的工作了。
作为对比,作者提到了之前和Joel, Scott合作的项目。
相反的是,我和Joel、Scott一起完成的论文发表起来就比较顺利,因为Scott是圈内人士,之前在我们提交的那个人机交互会议上发表过很多文章,也审阅过很多文章。当然,成为圈内人,并不意味着我们的论文就不会被人那么严格地认真评审(这样就太不公平了)。但是,Scott可以利用他的经验,用最合评审人员口味的方法,展示我们项目的研究动机和发现,因此,提高了论文被录用的概率。
博三 重蹈覆辙
在博三的时候,作者选择重新加入导师Dawson领导的Klee项目中。
经过这样的事后反省,我现在能明白,项目失败,是因为参与者之间志不同道不合。可惜当时,我没有足够智慧预见这样的失败结果。其实,我当初决定以助研的身份重新加入Klee项目,就是因为我想让那些在这个领域里发过文章的师兄和老师带带我。在前一年我在人机交互项目中辅佐Joel(一个高年级博士生)和Scott (一位教授)的经历告诉我,我当初应该这么做。因为Joel和Scott的项目结果卓著,我们发表了一篇高水准的论文,甚至获得最佳论文提名这样的殊荣。
同时,作者还和之前Joel, Scott的经历做了对比,得出了一些关键的结论。
那么这两次经历之间的区别是什么呢?简单地说,区别在于,不论是Cristi还是Dawson,他们都并不急于发表文章。由于他们一起已经发表了不少关于Klee的论文了,和我一起合作一篇关于交叉校验的论文,对他们来说只是锦上添花,而不是雪中送炭。Cristi正处在博士的最后一年,并不需要再发表任何文章就可以顺利毕业,而Dawson也已经拥有终身教职,所以他也不着急发表。相反地,Joel在读博中期,急需发表作为博士论文中的第一篇文章,而Scott也只是助理教授,只有大量发表论文才能为他赢来终身教职。这两段全然不同的经历教会我,在共事之前,深入了解未来共事者的动力与动机是非常重要的。
虽然道理是这么说,但是实际的工作确是难上加难。
博三过半,我和我很多同学一样,进入了瓶颈期。现在,我没有动力每天坚持去实验室搞科研,没日没夜地“研磨”一个模糊的、超专业的问题,周边的人没人理解,也并不在乎。这样日复一日,我们感觉与世隔绝,孤独不已。导师和师兄有时能给些泛泛的大面上的指导,但是,他们很少可以和我们一起坐下来,理清所有乱七八糟的细节。
但是这里也体现了作者的自律。
为了顶住拖延症,我为自己做了严格的计划,合理安排作息。我尝试“微观管理”(“micromanage”)自己的时间,设置了容易实现的目标,每天努力,希望最终能取得激动人心的结果。但是,每天看不到明显的进展时,想要充满干劲地继续科研,真的非常困难。
作者和Dawson的另一个博士生Peter在Klee-UC项目又花费了大量的时间和经历,但是结果还是不尽如人意,而且关键是导师Dawson都失望了。所以结果很糟糕。
尽管Peter和我在这两个月里用尽全力,但还是感到,我们真的在一个Dawson很在意的项目上让他失望了。Peter灰心丧气,换了导师,不久后干脆放弃攻读博士。组员的离开,无情地打碎了我的幻想,我决定,永久退出Klee项目。
在此之后,Dawson终于招募到了一个合适的博士生人选,并最终完成了Klee-UC开发并发表了论文。因为这个项目前后共参与了四个博士生,有两个中途离开,作者自己退出,只有最后这个博士才算成功了。作者在这中间看到了教授和博士生之间的利益关系。
然而,从教授的角度看,Klee-UC是一个激动人心的成就!由于Dawson已经有了终身教职,他永远不会有失掉工作的危险。事实上,设立终身教职这一职务目的众多,而其中很重要的一点,就是让教授可以无视风险,尝试新奇的研究设想。然而,这个特权的黑暗面便是教授经常会让学生“研磨”有风险、成功率低的项目。因为导师是学生的衣食父母,资助攻读博士的费用,学生常常无法拒绝导师的这种项目。幸好,我的工资是由奖学金支付的,我退出Klee项目的决定,便做得容易些。
作者继续说道:
我这样说,并不是单单针对Dawson或是Klee。在很多劳动密集型的科研和工程研究项目中,具有终身教职的教授和博士生之间常常会出现这种利益冲突。通常,教授拥有一笔研究经费和一些泛泛的科研想法(比如Klee-UC或是交叉校验的想法)。之后他们招几个学生,建议学生把自己的点子变成现实,这样的工作成果可能(但并不总是)可以作为他们毕业论文的一部分。没有大量的学生劳动,就不会有实在的研究结果,更不会有文章发表。
研和工程研究项目中,具有终身教职的教授和博士生之间常常会出现这种利益冲突。通常,教授拥有一笔研究经费和一些泛泛的科研想法(比如Klee-UC或是交叉校验的想法)。之后他们招几个学生,建议学生把自己的点子变成现实,这样的工作成果可能(但并不总是)可以作为他们毕业论文的一部分。没有大量的学生劳动,就不会有实在的研究结果,更不会有文章发表。
上面这种其实是教授和博士生之间永恒存在的利益矛盾,只是有些地方明显有些地方不明显罢了。作者在这里还对后续Dawson及其博士生的遭遇做了评论,具体就不展开了。
作者在博三期间还申请了微软研究院的实习职位,而且收获颇丰。
2009年夏,博三结束之后,我立即前往位于华盛顿州西雅图的微软研究院(Microsoft Research)总部做实习生。那是我一生中最有趣,最有效率的夏天:通过实习,我不仅发表了三篇顶级会议论文,更重要的是,这个夏天让我找到了做博士科研的动力
博四 再整旗鼓
作者在博四的时候投入到一个叫IncPy的项目中,以便继续做实证软件度量的研究工作。作者说道:
虽然我内心被这新的兴奋与热情填得满满,但是,由于我想摆脱传统学术研究的束缚,在没有教授帮助的情况下做全新的、未被证实的项目,内心深处还是有恐惧的。因为在教授的热情与传统学术界的帮助下发文章更加容易,我系里的绝大多数博士生都在做他们导师或者其他教授感兴趣的项目。但是,即便没有教授做后盾,我也认为IncPy能够成为一个可以发表的科研项目;过去三年失败的研究经历已经给了我足够伤疤,我也大概获得了一些科研的直觉,能感觉到哪种想法能够成功。事实证明,相信我当时的这个直觉,成为了我博士生涯中重要的转折点。
也就是说,作者还在追寻自己的研究兴趣。这也是因为作者的资助经费不来源于导师,所以可以自己选择研究方向,同时接收导师的一些泛泛的指导。作者在这里已经开始为自己答辩委员会物色人员,但是没有实质进展。
作者通过IncPy项目准备给一个研讨会投一篇论文,并且在规定时间完成了实验和论文。在这里作者写道:
通过这个经历我发现,为自己寻找和设置短期的任务完成期限益处很大,这么做,在剩余的博士生涯中,也让我受益匪浅。原因是,有了任务完成期限,我就可以更好地集中精力。如果没有这些自己设立的截止日期,我很容易陷入科研乏味的陷阱中,向乏味投降,无休止地拖延下去。
虽然IncPy项目没有有实质的进展,但是作者也收获了一些东西。
那时的我,仍然对如何毕业没有清晰的想法,但是,至少我已经开始掌控我自己的研究计划,而不是仅仅跟着做别人的研究项目了。我很高兴,能够在过去的一年里把IncPy从一个想法变为一个半可行的工具,真正帮助了3个从网上下载它的陌生人。由于教授们重视理论创新远大于实际运行实施,这小小的成就对我毕业毫无帮助。但这点成就,仍然为我博士第四年画上个令我满意的句号
博五 马力全开
博五是作者高产的一年,就像作者之前说的那样,博士的最后答辩论文只是之前所有论文的汇总和综述,所以重要的是在此之前发表足够多的论文,而博五就是这集中爆发的一年。
2010年9月,博五开始时,我仍然没有任何成果可以放到博士论文里,毕业,真是八字还没有一撇。但那时,我大多数同学都已经发表了至少一篇和毕业论文相关的一作会议论文。由于我还没有发表过这样的论文(那时IncPy的论文还在被审着),我有点担心,可能要拖七年甚至八年才能毕业。
然而,接下来的十二个月里,我以第一作者的身份发表了四篇会议论文和一篇workshop论文。这些论文都给我博士论文铺路来了。毋庸置疑,博五是我最高产的一年。那时,我精神高度集中,但求毕业。
上面是事后的总结,看似轻松,其实当时作者心里还是很没有底的。
2010年夏中,我有条不紊进行着IncPy项目,也努力奋斗,争取在九月的截止日期之前提交一篇论文。但我知道,单有IncPy项目还是不够支持整个博士论文。因此,除了努力赶上九月的提交日期,我还花了些时间来计划下个一个研究项目。
我真希望自己可以冠冕堂皇大义凛然地说,那时驱使我自己疯狂头脑风暴的动机是纯粹的科研热情;但是,实话实说,真正的动机是恐惧,我害怕不能在合理时间范围内毕业。这种恐惧驱使我努力科研,逼自己想出新的研究思路,发表论文。我深知论文发表周期的长短:有时一篇文章要花上两到三年才能发表。因此,如想六年毕业,我这一年就必须投几篇论文出去,祈祷至少能中两篇。当时,我时间非常紧迫,因为全额奖学金这学年之后就没有了。奖学金没有之后,我要么找个教授资助我,这样的代价是面临一系列限制(比如再次去做Klee项目),要么就一直作助教,更加延迟毕业期限。时光飞逝,我心急如焚。
即使离博士毕业还有不到两年的时间,作者还是在自己的领域找一些具体问题来分析和解决。
2010年7月9日,在我想到IncPy原始研究思路的整整一年后,我想到了一个相关的点子。激发我想到这个点子的原因也是计算研究者在进行数据分析时,遇到的真实问题。我发现,研究者写程序时经常非常草率邋遢,而且有种为写程序而写程序的态度。于是,这些程序经常在没产出任何分析结果的情况下,因为某种特别愚蠢的原因莫名其妙崩溃,让人挫败无比。我想,也许可以通过改变Python编程语言的运行时环境(解释器)来避免程序崩溃,使得这些草率写就的程序多少生成一些结果,而不是什么都不生成。
同时,作者在这个时候对在著名研究机构任职已经不抱有希望,而且希望尽快写完论文毕业,所以心态上有些放松和释然。经过一波三折,论文终于被录用了。就像那句话说的:有心栽花花不开,无心插柳柳成荫。
2010年10月,我有两篇论文待提交。此时,由于我还未发表任何一篇和毕业论文相关的文章,我已经完全放弃了成为教授的愿望,这是因为,那些富有竞争力,想要在计算机学术圈里取得教职的博士生同学们此时已经发表了好几篇值得称道的一作论文。除非奇迹发生,我不可能在著名的研究型大学里得到教职。因此,我只想在保证简历不是太难看的前提下,做点科研,但求毕业。
结果,奇迹,而且是坏奇迹,竟然发生了:IncPy和SlopPy两篇论文都被拒了。我很失望,但并不意外。因为我已经习惯了收到论文拒信的感觉。论文审稿人给我了对不少合理批评,所以我觉得,解决了这些问题,再提交这些论文,被录用的可能性就会变大。
最重要的是,我阐述IncPy的方式很容易让对我的研究哲学感到不“友好”的学者产生厌恶。理论上,在评审科技论文时,人们只应该重视它的客观优点。但事实上,很多审稿人是带着主观思想和哲学倾向来审理论文的。我因此彻底重写了论文的引言部分,意在赢得更多友好的审稿人的认可,然后再把它投到次一级的会议里去,来增加被录取的概率。我的计划成功了:再次投稿之后,2011年初,虽然评价平平,但是IncPy论文还是被大会接受了。
同时作者在另外一个领域也有所突破,也就是软件执行的可重复性,而这涉及到科学研究中的一个很广泛存在现象。
实验科学的基石之一,就是同事间能互相重现彼此的研究成果,并且通过比较,对他们进行验证和延展。过去十年中,越来越多分布在不同领域的科学家,开始编写计算机程序,分析数据,创造实验成果。每年发表的几千篇论文,都是由数字和图表支持的定量研究发现。但是,现代科学中有个不能直说的遗憾,也就是真正重现或验证任何一个成果,都不太可能。这是因为,研究者几乎无法获得支持这些发现的原始计算机代码和数据集。结果是,很多含有重大错误的论文,不管是诚实的错误还是赤裸裸的欺骗,都成了业界经典。这些带有谬误的论文推出的结论甚至使得一些人失去了生命。最近几年,科学界中的改革派,比如Fernando,致力于推广计算科学的可重现性实验,让学者意识到其重要性。
作者分析了这背后的一些非技术和技术原因,而后者就是自己有所作为的领域。
为什么可重现性在实践中这么难以达到?有些求胜心极强的科学家故意隐藏他们计算机代码和数据,意在打压潜在对手。尽管大多数科学家还是愿意分享他们的代码和数据,但是最主要的技术障碍在于,仅仅获得别人的代码和数据并不足以重现他们的实验。每个人的代码都需要一个非常具体的环境来运行他们。任何两台电脑,即便它们运行着相同的操作系统,代码运行环境仍然会有细小差别,也许不太能相互兼容。因此,如果你把你的代码和数据发给同事们,他们很可能还是没办法重现你的实验。
作者为此创造了一个新的工具CDE,而且在和导师讨论的过程中将这个想法应用到更广阔的领域。最终,作者把这个作品发布到网上,并且收获了很好的效果。
Philip Guo,斯坦福学者,开发了一个叫CDE的工具。CDE自动打包Linux程序和所有的依赖关系(包括系统级别的程序库,字体等)。因此,其省去了设置程序库及程序版本,处理依赖关系的繁琐,使得Linux程序可在另一台Linux电脑上运行。这名学者已经上传了二进制文件,源代码和截屏。通过这些,CDE对大型集群/云端部署和程序分享似乎都很有用。
24小时内,Slashdot论坛的那个帖子里已有几百条回复。同时,我收到了数十封来自世界各地Linux爱好者的邮件,他们都已经下载并试用过CDE。来信中不乏热情洋溢的赞扬,比如:“我只想告诉你,你太牛了!你的创意真的给我留下了非常深刻的印象。我会把它宣传到我的在墨西哥Tijuana的Linux社区。”这些来自真实用户的,尚未过滤的随性赞扬对于我意义重大。这比任何研究者对我之前论文的赞扬还要有意义。
作者没有就此罢休去研究其他领域,而是在CED项目上投入了更多的精力,并获得了很多的成功,包括世界各地很多不同领域人员的反馈,以及到Google做了一次Tech Talk,而且为此收到了Google的实习机会。
作者在博五这一年投入多收获也多,他说道:
博五这一年,我不得不小心翼翼,分配时间给四个项目(IncPy,SlopPy,CDE和ProWrangler),创造新思路、实现原型、提交论文、修改论文,然后重新提交论文,每个项目都是如此。这四个项目所属的会议截稿日期贯穿了整个一年。即使花了很多时间来小心呵护CDE,但我也不得不在某个会议截止日期临近时,把重心转移到这个项目上。2011年夏,通过一轮轮论文评审后,我所有的四个项目都成功发表了。于是,我轻松了,计划终于完成,毕业论文也似乎有点眉目了。
博六 完美落幕
作者的论文数量基本是满足了毕业的要求,剩下就是寻找论文答辩委员会的人员。而且这一年,作者也基于当前的现状做了一些很重要的决定。
在Google开始最后一个暑期实习时,我希望花三个月来全心全意完善CDE,不想其他。然而我还是很焦急,因为我还不能保证回到学校后就能顺利毕业。我还需要一星灵感的火花。最终,它真的来了,从我想象不到的地方迸发出来了。
2011年夏,我最终决定,毕业后“退出”学术界。我不知道我要从事什么职业,但我也不想在大学里找工作,最后拿到终身教职。
做这个决定,有两个主要原因:首先,我觉得,目前我的文章发表记录不是那么给力,不足以支持我在名校里找到一份令人尊重的教职。几个月之后,当我看到几名发文情况比我好的同学也没有拿到教职工作时,我这信念更加坚定了。当然,我可以尝试继续做几年博士后,发表更多论文,再次申请教授一职。
作者继续说:
而迫使我作出决定的第二个原因,也是更重要的一个原因,使念博士后对我来说,失去了意义:我喜欢的研究方向并不很容易拿到基金资助。当今学术界并不太接受我喜欢的研究方向,因此我拉不到资助。没有科研经费,就不能给我的学生发钱。没有愿意卖命的学生,就不太可能发出好的论文。每年发不出好论文,也就不可能拿到终身教职。即使拿到了,也需要新的项目拨款,发给新的学生助研费做项目。对于在学术界的人来讲,这个循环周而复始,不会停止。由于研究兴趣与基金资助机构感兴趣的方向不吻合,我不想硬着头皮说服他们给我赞助。那段想说服论文审稿人接受我论文的时光告诉我,找资金这件事,只会难上加难。想想这些基金项目的审核人,这些手里掌管数百万美元,想把钱拨给在计算机科学领域里做主流研究的研究者。在他们心中,我的科研项目,完全不主流。
其实,这几年来,我一直在考虑,我是不是该离开学术界。现在回想,我已经有了强有力的理由退出学术界:在明白计算机界“学术游戏”的规则后,我不想继续玩下去了。我给一个刚当上助理教授的朋友发过一封email,里面总结了我的感受:“在近5年里,我发现我希望当一个研究的看客,而不想当自己不停创造研究。我发现,要扮演后者这样的角色,压力实在太大。
由于我母亲是名成功的教授,我父亲在学术界也颇有威望,面对他们,我实在对自己的决定难以启齿。我觉得他们不能真正理解我做出这些决定的根源,担心他们会觉得,我其实是想放弃科研,也低估了自己的能力。实际上,成为教授并不是我多年来的真正目标。人们都说,进入学术界的好处是拥有创新的自由。讽刺的是,我离开学术界的决定,反而让我挣脱了自由给灵魂上的枷锁。我博士最后一年里找工作的时候,我变得更有创造力了,继续追求我真正的理想。
作者因为一次机缘巧合找到了最后一位答辩委员会成员,并且说道:
上天给了我很多机会,我很幸运。但是如果没能主动去抓住这些机会,我也就不会踏上最后一年的冒险之旅。如果两年前Robert没有告诉我圣何塞研讨会,如果我没在这个研讨会上提交,展示我的IncPy论文,如果Margo不喜欢我的论文,没把我介绍给Elaine,如果我没和Elaine接触,如果我没主动地在去年夏天展示CDE的会议上和Margo打招呼,如果她没有热情地回复我的邮件,又如果我没有冒险地向她提出我的修改方案,没有这一连串的如果,我可能仍在斯坦福,苦苦寻觅,想找到最后一个项目和答辩委员会成员。
作者在波士顿的哈佛大学做了四个月的访问学者,并且完善自己的论文和项目成果,并开始了一个新的项目Burrto。作者在这里概括了博士毕业论文的一些观点。
对于完成博士毕业论文,有个流行的观点,即:一个学生,有个伟大念头一闪而过,产生了一些有启发性的创新想法,之后在几百杯拿铁和卡布奇诺的陪伴下,花几年时间写一篇伟大的论文。但是事实上,科学和工程学的领域中,这个观点非常不确切:所谓“写作”博士论文,仅仅是整合几篇已发表的论文,使之成为一篇完整的文章,再加上介绍性和总结性的段落。对工科生和理科生来讲,当他们真的坐下来“撰写”博士论文时,他们已经经历了多年汗水的洗礼,所有工作都已经就绪了。
在我们系里,若一名博士生的导师竖起大拇指允许他开始撰写毕业论文,这名博士生读博生涯中最重要的里程碑也就竖起来了。这个手势说明,这学生已经做了足够的科研,通常在同一个大主题发表了两到四篇会议论文,因此,有资格几个月后毕业。
最后,作者完成了自己的博士毕业论文,并给出了摘要内容。
接下来,我花了两个月把发过的论文整合成一篇230页的毕业论文,名字叫做Software Tools to Facilitate Research Programming。以下是毕业论文的摘要:
研究编程,是一种以通过写程序来洞察数据为目标的编程活动。在科学,工程,商业,财会,公共关系,新闻界有数以百万计的教授,以及无数学生和计算机爱好者,都把研究编程视为平时生活的一部分。
本文旨在理解研究编程所遇到的独特的挑战。此外,本文发现通过使用一些辅助技术,可以使提高研究编程人员的编程效率。这些技术包括动态程序分析、混合式自发推荐系统和操作系统级别的追踪技术。
本文概括了研究编程过程的特点,表述了研究编程人员所面临的典型挑战,并展示了五个可以解决这些关键问题的软件工具:1.)ProWrangle,一个交互图形工具,可以帮助研究编程人员在作分析前,重新组合数据格式,并清洗数据。2.)IncPy,一个Python解释器,可以缩短数据分析脚本周期,并帮助编程人员管理代码和数据依赖关系。3.)SlopPy,一个Python解释器,可以自动使现有脚本具有容错性,因而也能缩短数据分析脚本周期。4.)Burrito,一个基于Linux的系统,可以帮助程序员组织、标记和回忆以前的实验发现。5.)CDE,一个软件打包工具,可以方便研究人员部署,归档和分享研究数据。这五个工具结合在一起,可以帮助研究编程人员卸下数据管理的负担,进而更快地迭代实验过程,甚至可能更快地洞察数据。
作者在写这篇回忆录的时候,偶然发现了自己之前写的一些东西,最终反映在了毕业论文的内容上,也算是善始善终了。
在准备写这回忆录时,我翻看了以前的很多研究记录。一天,我找到以下关于我感兴趣的主题的片段:
“可以研究面向非软件工程师的开发工具。很多科学家、工程师和研究院都会因工作需要编写程序——他们不会关心规约、模型检查等;他们只想要实用的、轻量级的、概念上简单的工具,让他们随时都能快速选择和使用。”
让人惊讶的是,这份笔记写于六年前,也就是2006年,我到斯坦福念博士前的夏天。这博士旅程,很长,很曲折,也很难以预测。但走完这段旅程后,我无比感激,因为我把这么广的主题,这么多年来我众多兴趣中的一个,变成了一篇博士毕业论文。没有好运气,上进心,旁人慷慨的洞察和帮助,和上万小时的“研”磨,我不可能完成这篇论文,也不可能这样,走完我的博士生涯。
作者总结
作者看到博士毕业后当不上教授的本质。
因为大多数博士毕业生没办法得到和他的导师一样的职位:终身教授。原因其实就在于,没那么多教职工作可以申请。
但是人们自然而然地会问,为什么还会有那么多人去读博呢,作者给出了一个可能的答案。
答案因人而异,但一个可能的答案是,博士项目给那些想逼迫自己超越心理极限,并最终变得更强的人提供了一个安全的环境。
作者举了自己的例子。
比如,我的博士六年,让我变得比我刚进大学的时候更聪明、更能干、更坚强;我精神更集中、更有创造力、更有口才、更有远见、更职业、效率更高。(注意,在这我有两个警告:并不是每个博士生收获同样多,很多人在挣扎中疲惫不堪,也有很多人不念博士也学到了这些。)
最后,作者自己总结了读博士的20条心得。因为篇幅限制,这里只摘录其中几条。
3.寻找相关信息:读博生涯教会我,在需要完成某项任务时如何有效高速地找出最相关的信息。和传统的课堂学习不同,博士研究没有教科书,没有讲义,也没有老师提供的确切答案。而我所需要的信息有时在一篇研究论文中,有时在一份古老的代码中,有时在一个名不见经传的网站中,有时甚至隐藏在一个人的脑海中,这时我就需要找到这个人并向其求助。
5.遵守游戏规则:作为博士生,我在学术界里就是刀俎上的鱼肉,根本没资格修改所谓“学术规则”。具体来说,我的论文一次次被退稿,惶恐不安,但我别无选择,只能从这过程中不断学习,尽最大努力让自己适应学术出版圈的规则。然而,在后半段读博生涯中,我学到了既保持自己科研项目的独特性和创造性,又遵守所谓“规则”的方法。最后,我发表了文章,顺利毕业。为此我感到非常欣慰。
12.走出失败阴影:科研期间失败是不可避免的。我前三年做的事情都没有被写入毕业论文,而我后三年尝试走的路,很多都最终被证明是死胡同。研究生院对我来说,是个练习从失败中走出来的好地方,这是因为,这时失败,代价没有正式工作失败所付出高。
18.真情实意感谢:这些年,我学会了怎样感谢那些帮助过我的人。虽然拿到博士学位,主要还是靠自己的默默努力,但如果没有同事们的无私帮助,我也没有办法把这段路自己走完。而且,当人们发现他们的建议或者反馈能帮别人获得成功时,会很快乐。因此,只要可以,即使只是一封简单的感谢邮件,我尽量肯定每个人给予我的帮助。
20.奋斗需刻苦,也需聪明:这本书叫做《“研”磨记》,因为不花上一万小时坚持做无趣的奋斗,想成为“博士”简直没门。这段旅程教会我,没有汗水和努力,一个创新的思路永远只是空想:经常去办公室,静下心,坐下来,努力工作来取得细小但是扎实的进步,时而休息调整心情,再次投入工作,这样的循环,周而复始,长达两千天。但是,聪明地努力和刻苦奋斗同样重要。有的学生,盲目埋头苦干,却得不到好的结果,非常令人遗憾:因为他们有可能用不明智的角度考虑研究问题,或者使用错误工具,亦或者,做了无用的苦工。聪明地努力需要远见、直觉,还有,不耻于寻求帮助。
一些读后感
在微信读书上偶然看到的这本书,几乎是一口气读完的。作者还特意在最后描写了几类人群的反馈,其中一种就是没有继续念博士而选择工作的人。他写道:
对于那些没有读博而是直接工作了的人,他们感谢我帮他们证实了不去研究院校进修博士学位是一个正确的选择。一名即将成为工程师的大学毕业生这样写道:“当我决定一生想要从事的事业的时候,我有两个选择,成为一名教授或者专家。各种因素导致了我后来所做的决定,但是最主要的一个原因是,我不认为我可以将科学研究所具备的努力和奉献精神融入到我的生活,而牺牲我世俗和非学术性的部分。我一直在想我的选择正确与否,而你的书已经告诉我那样的生活会是怎么样,所以,我觉得我做了正确的选择。”
诚然这满足了我们这类人窥视读博是什么样的一种心理,但是更深层次地还带给了我一些启发。比如如何思考和解决问题,如何探索一些未知领域,如何在出现困难或者挫折的时候想法方法。记得刚工作大概4-5年的时候,有一阵特别不想上班,就是那种硬着头皮上的感觉。后来通过各种调节,心理暗示,在工作中寻找乐趣,主动将工作内容向自己感兴趣方向引领等各种手段,慢慢地缓解过来,直到彻底消除。
作者说的那句“博士项目给那些想逼迫自己超越心理极限,并最终变得更强的人提供了一个安全的环境”,其实前半句对很多人都适用,因为不去挑战自己,很难有所成长,很难变得更强。博士是校园提供的一个安全环境,而选择工作迈入社会是更加有挑战的环境。想一想,博士项目是花钱买经验,工作是赚钱的同时买经验,一个是甲方,一个是乙方,哪一个会更轻松。
当然,读博士可以去高校就职,但是现在“青椒”也是各种竞争,非升即走,很多人也很难放弃学位到公司任职。反过来直接就业没有这种选择的焦虑,只能一直往前走,现在也是各种内卷,AI替代的乌云也笼罩在头顶上。各有各的难处,选择了没有回头路,就继续吧,仅以自勉。
参考阅读
作者个人主页:
本书英文原版:
https://www.ie.tsinghua.edu.cn/__local/E/49/D3/DC2FDCE5B1CE93A12B9DBF58C83_64034E68_D7B4D.pdf
作者个人简历: