找一位朋友,将你最近的想法说给他听。这既可以提高交际技巧,又能检验自己的思路。
七、程序设计
并不是所有自己研究领域的论文都包含代码,而且本领域的很多重量级人物从来没有写过一个重要的程序。但是为了掌握自己研究的工作原理,你必须会程序设计。不仅仅是很多计算机研究工作需要编写代码,学会程序设计还能带给你什么是可计算的什么是不可计算的直觉。
当然,学习一门语言并不能等同于学习程序设计;自己的程序设计包含的一些技术与那些在系统程序设计或者应用程序设计中用到的大不相同。开始学的时候,可以先看看Abelson和Sussman的《Structure and Interpretation of Computer Programs》,并做一些练习。这本书与自己所研究的程序设计本质上并不相干,但是包含了一些相同的技术。最后,进行实际的程序设计,而不是阅读,才是最好的学习程序的方法。
学习程序设计有很多传统。有些人习惯一起写代码,这取决于个性。还有的人寻找机会直接向有经验的程序员学习,或者请他对你的代码进行评价。阅读别人的代码也是很有效的方法。如果可以向高年级同学要他们的源代码,他们可能会有些抱怨,说自己的编程风格差极了,程序实际上并不能工作云云。不管怎么样,最后你获得了源代码。然后你要仔细地通篇阅读,这很费时间。通常阅读并完全理解别人代码所花的时间与你自己编程完成的时间是一样多的,因此要计划好在你的头一个或者头两个学期用数周的时间去阅读别人的代码。你将从中学到很多以前不曾想到在课本中也没有的技巧。如果你读到了整篇不可理解没有注释的程序,你就会明白不应该如何写代码了。在软件工程课里学习到的那些知识在自己的程序设计中很有可能依然有用。要给代码加注释,使用正确的数据抽象,将数据和你的代码隔离开,提高可移植性,诸如此类。经过头几年的学习后,就应该写一些自己的标准程序设计模块了。
任何你感兴趣的东西都可以尝试用程序实现。你可以抓住问题的实质,在几天之内完成一个功能版本。修改已有的程序是另外一种有效的方法,前提是你已经写过这样的东西,并且确实了解其工作原理,优缺点以及效率等问题。不像其他通常的程序员相互借阅代码(演示代码例外)。虽然可以对代码进行修改满足自己的需要,但记住理解别人的代码是很耗时的,有时候还不如自己写一个。有时候构建一个标准包的工作本身就可以成为一篇论文。像论文一样,程序也有可能过于追求完美。不停重写代码以求完美,最大化的抽象所有的东西,编写宏和库,与操作系统内核打交道,这都使得很多人偏离了自己的论文,偏离了自己的领域(从另外一方面,或许这正是你需要将来谋生的手段)。
八、导师
导师应该有两种类型,教学导师和论文导师,由于一些客观原因,我们科里的导师身兼两职,既是教学导师又是论文导师。
教学导师的作用是作为系方代表,告诉你对你的正式要求是什么,如果你的进度慢了敦促你,批准你的课程计划等。如果一切顺利的话,你每年只需要见教学导师两次,在注册日那天。从另一方面讲,如果你遇到了困难,教学导师替你向系里反映或者提供指导。论文导师是监督你研究的人,选择论文导师是你读研期间最重要的选择,比选题都重要得多。有很多领域的技术方面或者研究过程中的非正式知识,只能从导师那里学到,在任何教科书上都找不到。导师与研究生的关系是非常个性化的,你的个人特点必须与导师的配合得很好,这样你们才能合作成功。不同的导师具有不同的风格。
下面是一些需要值得考虑的因素(对四医大而言,基本上在录取时就确定了导师,下面亦可作为与导师交流及课题选择时的参考):
你需要多大程度的指导?有些导师会给你一个定义良好的适合做论文的问题,对解决方法进行解释,并告诉你如何开展工作。如果你陷在某个地方了,他们会告诉你如何开展下去。有些导师则属于甩手型,他们可能对你的选题毫无帮助,但是一旦你选好题目,他们对于引导你的思路具有非常大的作用。你需要考虑清楚自己适合独立工作还是需要指导。
你需要多大程度的联系?有的导师要求每周与你见面,听取你工作进展的汇报。他们会告诉你应该读的论文,并给你实际的练习和项目做。而有些导师每学期与你的谈话不会超过两次。
你能承受的压力有多大?有些导师施加的压力是很大的。
听取导师意见的认真程度如何?大多数导师会相当正式地建议你的论文题目。有些导师是值得信赖的,他们给出的建议,如果按照执行,几乎肯定会做出一篇可接受的论文,如果不是令人兴奋的论文的话。有些导师则一下子抛出很多思路,大部分是不切实际的,但是有一些,或许会导致重大突破。如果选了这样的一位导师,你首先得把自己当作一个过滤器。
导师提供了什么类型的研究组?有些教授会创造环境,把所有的学生聚集在一起,即使他们做的不是同一个项目。很多教授每周或者每两周与自己的学生们会面。这对你有用么?你能与教授的学生和睦相处么?有些学生发现他们更能与其他教研组的学生建立良好的工作关系。
你想参与大的项目么?有些教授将大系统分解,每个学生负责一部分。这给了你与一组人讨论问题的机会。有些论文项目包含了多个研究领域,需要你与两个以上的教授建立密切的工作关系。虽然你正式的论文导师只有一位,但是有时候这并不反映实际情况。
导师愿意指导其研究领域之外的论文题目么?你是否能与导师一起工作,比你做什么本身更重要。推理方面的教员指导过视觉方面的论文。但是有些教员只愿意指导自己研究兴趣领域内的论文,这对于那些欲获得终身职位的年轻教员来说尤其如此。
导师愿意并且能够在会议上推荐你的工作吗?这是导师工作的一部分,对你将来工作意义重大。上述这些因素,不同学校的情况很不相同。
研究生研一结束或研二学年开始阶段,必须找导师对你的论文进行指导,下面是一些诀窍。查阅实验室的研究总结,其中有一页左右的篇幅描述了每个教师以及很多研究生目前在做什么。如果你对某些教师的研究工作感兴趣,查阅其最近的论文。在第一学期,与尽可能多的教师交谈,去感受他们喜欢做什么,他们的研究和指导风格是什么。与预期导师的研究生交谈,要保证与导师的多个学生交流,因为每位导师在与不同的学生交流时有不同的工作方式和交流效果,不能被一个学生的看法所左右。很多教师所在研究组的会议对新同学都是公开的,这是非常好的了解导师工作方式的途径。不要由于交流不好,浪费时间在自己并不想做的项目上。不要完全依赖你的导师,要建立自己的网络,找一些能定期评审你的工作的人是很重要的,因为研究时很容易走火入魔。网络中的人可以包括自己实验室或者外单位的研究生和老师。实验室中有些同学只是名义上由导师指导,这对于那些独立性很强的人来说很好。除非你确保自己没有导师也行,且有牢靠的支持网络,否则就不要这么干。
九、论文
做论文将占据研究生生活的大部分时间,主要是去做研究,包括选题,这比实际的写作耗
时更多。硕士论文的目的是为做博士论文练兵。博士水平的研究如果没有准备好的话,是很难进行的。硕士论文最本质的要求是展示自己的掌握程度:你已经完全理解了本领域最新进展,并具备相应的操作水平。并不需要你对本领域的最新知识有所拓展,也不要求发表你的论文。但我们实验室的论文总是比较大气的,因此很多硕士论文实际上都对本领域的发展做出了显著的贡献,大约有一半都出版了,这并不一定是好事情,很多人精力都集中于硕士的工作,所以我们也有这样的名声:硕士论文的质量往往比博士论文高。这有悖于硕士工作本来是为博士研究做准备的原有目的。
论文的另外一个因素是所做研究要对领域有所贡献,至少需要两年,这使得研究生学习时间之长令人难以忍受。现在或许你感受不到匆忙,但当你已经在实验室呆了七年后,你肯定迫不及待地想逃出去。硕士从入学到毕业平均时间是两年半,如果某个硕士生的题目过于庞大,可将之分解,一部分来做硕士论文,另一部分给博士生作博士论文。想要了解硕士论文研究是什么样的,读几本最新的硕士论文。记住比较好的论文是那些出版的或者成为技术报告的,因为这标志着该论文被认为是扩展了领域的最新知识——换句话说,他们的论文远远超出了硕士论文的水平。还要读一些通过的但是没有出版的论文。博士论文必须对最新知识有所拓展,博士论文的研究必须具备可出版的质量。
选题是论文工作中最重要最困难的部分:好的论文题目不仅能够表达个人观点,而且可与同行交流。选择题目必须是自己愿意倾注热情的,其远景是你愿意作为一个科学家的理由,是你最为关注的目标。或许你想造一台可与之交谈的计算机,或许你想把人类从计算机的愚蠢使用中拯救出来,或许你想展示万物都是统一的,或许你想在太空发现新生命。远景观点总是比较大的,你的论文并不能实现你的远景,但是可以朝着那个方向努力。
做论文时,最困难的就是如何将问题缩减至可解决的水平,同时规模又足以做一篇论文。题目太大太虚了,你会发现需要不断的缩小题目的范围。选题是一个渐进的过程,会持续到你宣布论文已经完成那一刻为止。实际上,解决问题通常比精确地描述问题要容易得多。如果你的目标是一个五十年的工程,那么合理的十年工程是什么,一年的呢?如果目标的结构庞大,那么最核心的部件是什么?如何最大程度的了解核心部件?一个重要的因素是你可以忍受多大程度的风险。在最终的成功和风险之间需要权衡。
好的论文选题要有一个中心部分,你确信肯定可以完成,并且你和你的导师都同意这已经满足毕业要求了。除此之外,论文中还有多种扩展,有失败的可能,但如果成功了,会增加论文的精彩程度。虽然不是每一个论文选题都符合这个模式,但值得一试。有些人觉得同时在多个项目中工作可以在选题的时候选择可以完成的那个,这确实降低了风险。另外一些人则愿意在做任何工作之前,选一个单独的题目。
可能你只对某个领域感兴趣,这样你的选题范围就狭窄得多。有时候,你会发现系里的老师
没有一个人能够指导你选择的领域,可能还会发现好像那个领域没什么很自然的选题,反而对别的领域有好想法。硕士选题比博士选题更难,因为硕士论文必须在你所知不多没有足够自信时就完成。博士选题需要考虑的一个因素是是否继续硕士阶段所研究的领域,可能拓展或者作为基础,或者干脆转到另外一个领域。待在同一个领域事情就简单了,可能只需要一到两年就毕业了,特别是如果在硕士阶段的工作中已经发现了适合做博士论文的题目。不足之处在于容易定型,改换领域则能增加知识的宽度。
有的论文题目很新奇,有的则很普通。前者开创了新领域,探索了以前未曾研究过的现象,或者为很难描述的问题提供了有效的解决方法;后者则完美地解决了定义良好的问题。两种论文都是有价值的,选择哪一种论文,取决于个人风格。
无论选什么样的题目,必须是前人未曾做过的。即使是同时有人做的工作,也不好。有很多东西可作,根本无需竞争。还有一种常见的情况,读了别人的论文后感觉很惊慌,好像它已经把你的问题解决了。这通常发生在确定论文题目过程中。实际上往往只是表面类似,因此将论文送给某个了解你的工作的高人看看,看他怎么说。另外,每个论文的“将来的工作”部分,是很好的论文题目来源。
选好题后,你必须能够回答下列问题:论文的论点是什么?你想说明什么?你必须分别有一句、一段、五分钟的答案。如果你不知道自己在干什么,别人也不会严肃对待你的选题,更糟糕的是,你会陷在选题——再选题的圈子里而不能自拔。开始作论文研究后,一定要能够用简单的语言解释每一部分的理论和实现是如何为目标服务的。记住,一旦选好了题目,你必须与导师就论文完成的标准达成清晰的一致。如果你和他对论文具有不同的期望,最后你肯定死得很惨。必须定义好“完成”的测试标准,像一系列的能够证明你的理论和程序的例子,这是必须做的,即是你的导师并不这么要求。如果环境发生了根本的变化,测试也要随之改变。用实例检验是最简单的测试方式。做论文的过程中,有很多浪费时间的方式,要避免下列活动(除非确实跟论文相关):语言表达的设计;用户接口或者图形接口上过分讲究;发明新的形式化方法;过分优化代码;创建工具;官僚作风。任何与你的论文不是很相关的工作要尽量减少。一种众所周知的“论文逃避”现象,就是你突然发现改正某个操作系统的BUG是非常吸引人也很重要的工作,此时你总是自觉不自觉的偏离了论文的工作。要记住自己应该做些什么(本文对于部分作者来说就属于论文逃避现象)。
十、研究方法论
研究方法学定义了什么是科研活动,如何开展研究,如何衡量研究的进展,以及什么叫做成功。不同的方法论定义了不同的研究学派。方法是工具,使用即可,不要让他们来使用你,