Graduate: 工作方式

From MobiNetS
Jump to: navigation, search

研究生和本科生期间的工作节奏差异巨大,希望同学们在开始研究生工作之前,有充分的思想准备。

总体而言, 研究生工作存在很大程度的不确定性,而这些不确定性正是我们在科研上更进一步的机会,也是最需要投入时间的地方。 实验室个人的工作节奏尽量保持“五五”原则:50%精力做确定性的事情、50%精力探索不确定的问题。

问题驱动的研究

如果说本科生的本职工作是学习和积累,那么研究生的本职工作则是探索和创新。 本科期间同学们接触的都是经典知识,是经过时间验证的知识;而研究生期间,同学们会不断接触到领域内最新产生的知识,这些知识是没有经过时间检验的,极可能存在不严谨、甚至错误的地方。

研究生期间的工作,就是了解前沿、解决前沿问题、产生新的知识,将本领域继续往前推进一小步。 总体而言,工作节奏分为如下几个部分,请注意这几部分并不是严格的步骤,很多时候好几个方面的工作是同时进行的,切不可教条主义。

了解领域

刚刚开始进入科研的同学首先要做的,就是建立对研究领域(Field)的认识,或者至少是对当前研究主题(Topic)的认识。 具体包括几个任务:

  • 该领域有哪些重要问题,背景和研究目标是什么
  • 该领域/问题 面临哪些重要挑战
  • 相应的问题和挑战已有哪些解决方案
  • 信息积累:至少要积累到以下信息,才算了解了领域的概貌。
    • 开创性工作或经典工作
    • 主要人和团队
    • 主流实验方法和工具
    • 相关开源数据及代码

对于实验室同学来讲,可以参考这里来大致了解实验室的主要研究方向,并且选择具体的方向或主题进行深入。

调研问题

在了解一个领域之后,我们需要寻找一个具体的突破点,或者具体的创新方向/目标。

  • 确定调研方向

哪怕是一个很小的topic,要读完里面所有的文章恐怕也是不可能的。 因此,确定一个具体、可行的调研方向尤为重要。 确定调研方向可以综合考虑自己的研究兴趣、研究课题的前沿程度、课题的实验难度等。

同学们有两个途径来选择调研方向:

  1. 组会:每周组会是我们重要的idea来源,也是同学产生研究兴趣、确定调研方向的重要途径。在组会上务必积极参与、认真思考。
  2. 系统工作中来:有一些偏系统的工作,并非一开始就会有明确的创新方向,这是由于我们还没有深入到系统底层、对于系统设计的动机、进一步优化的方向无法做判断。这种情况则需要在完成系统工作的过程当中不停探索新的方法和方向。
  3. 日常阅读:根据兴趣或者项目需要,在日常文章阅读过程中发现。

一个好的调研方向上,通常有1-3篇最新的顶会文章,或者与最新的底层技术相结合。 这样沿着此方向调研,则更容易产生新颖的、具备影响力的idea.

  • 展开深入调研

确定方向之后,则需要尽快、充分、深入的开展问题调研。 该问题具体研究什么问题,现有工作都是在哪些方面展开的工作,可能存在哪些问题以及改进的方向。

调研过程需要充分理解1-3篇文章,并且通过推导或者实验的方式复现其中重要的工作。 复现的过程可以让我们重新审视这个问题,并且切身体会这个问题可能还存在哪些关键因素没有被挖掘。

发现问题

调研不是目的,目的是发现前沿工作尚存在的问题,以及为什么这个问题至今仍然存在。 总体来说,critical thinking是发现问题永恒的技巧,但是这个技能需要我们不断在发现问题、解决问题的过程当中去提升。

对于研究生来讲,一个技巧性的思维方式是:把所调研的系统想象到真实的场景当中去,就极有可能发现问题。 比如对于优化类的工作,审视一下其中的假设是否合理?优化目标是否体现真实的用户需求?指标的设计考虑是否充分?等等。 又或者系统类工作,工作中用到了哪些数据?这些数据怎么测量的?测量开销有没有考虑?通信过程是否考虑的真实环境的干扰?等等。

发现问题之后,一个更为重要的环节是: 为什么这些问题存在?解决这些问题存在哪些挑战? 这个过程通常需要和导师共同完成,务必注意在有了初步的想法之后,尽快找导师讨论。

在问题和挑战理清楚之后,idea基本就算有雏形了。

尝试解决

在真正解决问题之前,我们针对手头的问题应该先考虑一点:理想状态下,这个问题应该如何解?能达到什么效果? 这个环节不需要考虑自己是否能做到,而是先探索一下工作的前景。

比如理想状态下,我们发现解决这个问题仅能带来很少的收益,那么说明这个问题并不重要,至少在这个场景下并不重要。 这就说明我们之前发现的问题价值不够,需要继续调研。 反之,如果理想情况下能够比原工作有极大的提升,那么说明这个工作具备研究价值,我们可以进一步考虑解决方案。

  • 抓主要矛盾

很多同学希望一开始就朝着终极目标前进,想把工作漂漂亮亮地一口气完成。 事实证明,绝大部分情况下,这是不可行的。

因此,我们在尝试解决这个环节,需要理清哪些因素是我们一定要考虑的,先把其他变量或因素固定下来, 只考虑必须要考虑的少量因素,最低限度实现我们的想法,看看是否符合预期。 如果没问题,再继续深入。

  • 确定问题场景和解决问题的方向

同一个问题,在不同的场景下可能会呈现完全不同的状态。 因此,我们在尝试解决问题时,一个重要任务是同时探索我们的想法,或者我们发现的问题, 在何种场景下最成立,这种场景是否符合实际的系统场景。 从而确定我们要在怎样的背景下继续深入解决该问题。

验证问题

在经过反复尝试之后,我们需要验证我们的方法是否在目标场景下真实有效。 此时,就需要把我们之前忽略的因素重新加入进来,让仿真更加逼近于真实的场景; 或者将相关的仿真代码,烧写到真实的网络节点上,来看真实环境的实验中结果是否符合我们的预期。

需要说明的是,当不符合我们预期的时候,千万不要紧张,而是需要深入到数据,探寻其中的原因。 可能是实验做的有问题,也可能是之前的设计有问题,也可能是参数调节不合适。 我们只需要通过数据挖掘其中的问题,并且想办法解决它即可。 这个过程就再次会涉及到前面的调研、尝试的过程。 经过几次反复的迭代,我们的idea会打磨的更加完善,提出的方法和理论也更加能够解决真实场景产生的各类问题。

论文撰写

论文不是目的,而是总结成果的形式。 一篇好的论文一定是建立在工作出色的基础上。

关于论文撰写我们单独维护了这个页面来介绍,同学们如果有任何心得也可以把自己的内容更新上去。

Deadline驱动

Deadline是第一生产力
                                  ——鲁迅

我们所有人都想进步,都想变得能够胜任工作。 但是生活有太多其他的事情把我们往主线之外吸引,最终导致碌碌无为。 所以我们所有的科研工作,一定有一个明确的文章投稿的deadline。 这就意味着,工作从调研,到最后的文章写作,均需要在deadline之前完成。

一开始同学们因为不了解自己的能力、不了解哪些环节会浪费时间,导致deadline往往完不成。 因此我们这里给大家一个参考,希望同学们作为参考,严格执行。

  • 每年的投稿周期

会议投稿有明确的Deadline,期刊则通常没有(Special issue会有)。 这里列举网络领域重要的会议时间分布。

Q1 Q2 Q3 Q4
SigComm, MobiCom, MobiSys, IWQoS, EWSN, UbiComp#3 SenSys, RTSS, ICNP, WWW, UbiComp#4 INFOCOM, NSDI, IPSN, UbiComp#1 ICDCS, SECON, MobiHoc, UbiComp#2
  • 工作各环节耗时分析

绝大部分同学,最终会在Related work和Evaluation两个部分花掉超出预期的时间。

  1. 其中Related work主要靠阅读积累,在问题调研的过程当中就需要把相关的参考文献,以及问题的发展脉络梳理清楚。
  2. Evaluation则是涉及实验。在开始深入一个问题时,就应当首先评估这个工作应该如何做实验、是否可验证、实验成本等问题,否则容易眼高手低,前面逻辑理的很好,结果却做不来实验。不仅如此,实验应该做好充分的失败的心理准备,提早动手,发现实际当中的问题。

不仅仅对控制进度有作用,对于及时发现idea存在的问题也具有重要作用。

多线程工作

研究生阶段,要尽快适应多线程的工作方式。 很可能一方面有专利在写,另一方面又有实验要做,而与此同时,还有文章要写作,而且下周还要准备组会的PPT。

在这方面,没有特别多技巧性的东西,事情总要一件件完成。 希望同学们尽快熟悉这样的工作节奏, 逐渐调整自己的时间分配和工作方式, 充分利用时间,把每个线程都完成好。

用好导师

导师是研究生最宝贵的资源,除导师这个因素之外,其他诸如知识、方法、技术等均不是读研才能获取的资源。 因此,如何利用好导师这个资源,尤为重要。

导师往往是一对多的工作模式,每个人与导师沟通的时间是有限的,因此,一定要在合适的时机找导师交流恰当的问题,才能最大程度帮助自己提升,最终把导师的东西吸收消化,变成自己的能力提升。

总得来说,能在网上找到或者能够在同学那里问到的问题,都不值得问导师。 这样的问题对导师来说是一种时间浪费,对于自己也没有吸取到导师的经验或能力。 比如强化学习是什么原理,有哪些工具等,应当自己想办法搞清楚,而不应该问导师。

那什么时候应该寻求导师的帮助呢? 简单来说,在遇到“开放性”问题时,应该毫不犹豫地找导师讨论。 比如问题方向的探讨、现有工作缺陷的评价、解决方案的设想、实验验证的方式等等。 这些问题,导师才真正能够起到指导的作用,起到授人以渔的效果。