相关|麻省理工学院(MIT)研究生学习指导—— 怎样做研究生( 九 )


学习程序设计有很多传统 。 有些人习惯一起写代码 , 这取决于个性 。 还有的人寻找机会直接向有经验的程序员学习 , 或者请他对你的代码进行评价 。 阅读别人的代码也是很有效的方法 。 如果可以向高年级同学要他们的源代码 , 他们可能会有些抱怨 , 说自己的编程风格差极了 , 程序实际上并不能工作云云 。 不管怎么样 , 最后你获得了源代码 。 然后你要仔细地通篇阅读 , 这很费时间 。
通常阅读并完全理解别人代码所花的时间与你自己编程完成的时间是一样多的 , 因此要计划好在你的头一个或者头两个学期用数周的时间去阅读别人的代码 。 你将从中学到很多以前不曾想到在课本中也没有的技巧 。 如果你读到了整篇不可理解没有注释的程序 , 你就会明白不应该如何写代码了 。 在软件工程课里学习到的那些知识在自己的程序设计中很有可能依然有用 。 要给代码加注释 , 使用正确的数据抽象 , 将数据和你的代码隔离开 , 提高可移植性 , 诸如此类 。 经过头几年的学习后 , 就应该写一些自己的标准程序设计模块了 。
任何你感兴趣的东西都可以尝试用程序实现 。 你可以抓住问题的实质 , 在几天之内完成一个功能版本 。 修改已有的程序是另外一种有效的方法 , 前提是你已经写过这样的东西 , 并且确实了解其工作原理 , 优缺点以及效率等问题 。 不像其他通常的程序员相互借阅代码(演示代码例外) 。 虽然可以对代码进行修改满足自己的需要 , 但记住理解别人的代码是很耗时的 , 有时候还不如自己写一个 。 有时候构建一个标准包的工作本身就可以成为一篇论文 。 像论文一样 , 程序也有可能过于追求完美 。 不停重写代码以求完美 , 最大化的抽象所有的东西 , 编写宏和库 , 与操作系统内核打交道 , 这都使得很多人偏离了自己的论文 , 偏离了自己的领域(从另外一方面 , 或许这正是你需要将来谋生的手段) 。
八、导师
导师应该有两种类型 , 教学导师和论文导师 , 由于一些客观原因 , 我们科里的导师身兼两职 , 既是教学导师又是论文导师 。
教学导师的作用是作为系方代表 , 告诉你对你的正式要求是什么 , 如果你的进度慢了敦促你 , 批准你的课程计划等 。 如果一切顺利的话 , 你每年只需要见教学导师两次 , 在注册日那天 。 从另一方面讲 , 如果你遇到了困难 , 教学导师替你向系里反映或者提供指导 。 论文导师是监督你研究的人 , 选择论文导师是你读研期间最重要的选择 , 比选题都重要得多 。 有很多领域的技术方面或者研究过程中的非正式知识 , 只能从导师那里学到 , 在任何教科书上都找不到 。 导师与研究生的关系是非常个性化的 , 你的个人特点必须与导师的配合得很好 , 这样你们才能合作成功 。 不同的导师具有不同的风格 。
下面是一些需要值得考虑的因素(对四医大而言 , 基本上在录取时就确定了导师 , 下面亦可作为与导师交流及课题选择时的参考):
你需要多大程度的指导?有些导师会给你一个定义良好的适合做论文的问题 , 对解决方法进行解释 , 并告诉你如何开展工作 。 如果你陷在某个地方了 , 他们会告诉你如何开展下去 。 有些导师则属于甩手型 , 他们可能对你的选题毫无帮助 , 但是一旦你选好题目 , 他们对于引导你的思路具有非常大的作用 。 你需要考虑清楚自己适合独立工作还是需要指导 。
你需要多大程度的联系?有的导师要求每周与你见面 , 听取你工作进展的汇报 。 他们会告诉你应该读的论文 , 并给你实际的练习和项目做 。 而有些导师每学期与你的谈话不会超过两次 。

推荐阅读