静下心来 研究生阶段的计划

Posted by zixuan-zhang on September 3, 2014

研究生入学过去3天了,现在已经是货真价实的研究生在读了。今天英语分级考试刚刚完事,暂时没有紧急的事情了,我觉得很有必要思考下接下来该走的路了。

研究生有三年的时间,离找工作只有两年的时间了,因此我把期限设定为两年。我希望两年后,我可以达到:

  1. 编程能力极大提高
  2. 工程能力独当一面
  3. 具有扎实的数学功底
  4. 英语水平达到可以去国外生活的水平

过去一段时间,我直接或间接的接触了更多的人,了解了他们做过的或正在做的事,视野更加开阔了,对于未来的路的方向,以及怎样走这条路也有了更加清晰的认识。其中,对我影响比较深是BYVoid。最近在网上流传的阿里星面试跟踪详情,也着实的刺激了一把,在佩服的同时,更多的是对自己的一些期许。Byvoid是和我的同届人,我希望两年后,我可以达到他目前的水平,我希望能把落后时间控制在两年。

经过了前一段时间的实习,我体验互联网公司中实际开发的流程,在开发过程中对一个开发者有着什么样的需求。长时间的实习对我自身的提高有很大帮助,我会写一篇详细的博客来介绍,但是其中最重要的是经过了实习,让我更加明确了自身发展的目标,换句话说,我知道了我应该具有什么样的素质来可以在实际的工作中脱颖而出,我应该具有什么样的素质来可以找到有着decent工作。那么,我应该有什么样的素质呢?其实上面已经讲过了:

优秀的编程能力。

这一点不用说了,对于做程序员来说,这是最最最重要的了。我想,能够体现编程能力的对数据结构和算法的掌握了吧,因此需要熟练掌握常用的数据结构和算法。

独当一面的工程能力。

我之所以把工程能力和编程能力分为两个部分,我觉得还有有些区别的。编程能力更强调基础能力,而工程能力更加专一些,更加强调实践能力。比如对于编程语言C/C++、Java、Python,Web技术,Android编程这些技术的掌握就算是工程能力。

在编程语言方面,我希望能够精通C/C++(较为低层次、面向过程、高效)、Java(面向对象、有强大的库)、Python(易于掌握、非常喜欢、效率较低)、Shell语言,Linux工程必须要精通的及一门函数式编程语言(不是特别了解)。

其他技术的掌握,会在研究生阶段做项目的过程中去锻炼,可能会涉及数据库技术(SQL,Oracle)、Android编程、海量数据处理(Hadoop)。毕业前,我希望能有至少5个做的非常好的项目经历。

在学校学习工作之外,我打算有一些好的idea,自己做开源项目的开发。现在已经有一些idea,是基于自己生活的需求,打算做成Android应用,但是不够成熟。

总的来说,以前编程都是小打小闹,上不了台面,希望两年后,我能够几个拿得出手的项目,希望做出来的东西能够让足够多的人使用,能使一些人的生活越来越方便。这样的简历才好看。

扎实的数学功底。

数学是计算机学科的基础。我不需要把所有数学都学透,只希望在和计算机密切相关的 离散、线代、概率等方面下些功夫;只希望我在做相关工作的时候,不因数学功底差而受阻碍。数学能力决定着编程水平能够达到的最高度,这一点还有有体会的,在做一些ACM题的时候,确实能体会这一点。我不会集中一段时间去学习数学基础,只会在用到或将要用到的时候去补充下知识。

足够应付实际应用的英语能力。

英语真的非常非常重要。查阅英文资料需要用到(Reading),写paper需要用到(Writing),以后去外企实习、工作需要用到(Listening & Speaking),看美剧需要用到。。。

研究生三年大体规划

上面提到了未来的两年内,我需要达到的目标。研究生有三年的时间,但距离找工作只有两年的时间,因此,我只有两年的时间来完成我的目标。接下来就进行大体的规划。

未来的三年,我将在中国科学院大学度过,但每年都不尽相同。

  1. 研一:国科大雁栖湖校区集中学习。
  2. 研二:软件所基础软件实验室项目研发。
  3. 研三:求职,毕设,下一阶段的过度。

研二、研三距离较远,在这主要规划下研一阶段的生活。

在这个学年,必要的事情是在雁栖湖校区进行集中的学习。这也是进行系统的学习最好的时间阶段。我希望,在这个学年,除了集中学习外,能够再增加一次实习经历。由于之前在海豚浏览器实习过,我希望这次的实习经历可以去大一点的公司(为了镀金),最好是MS、IBM等实力外企,也可以是Baidu、Alibaba这些国内顶尖的互联网公司。

所以,研一其实可以分为两个阶段:

集中学习

这个阶段集中在上半学年,也就是2014年秋季学期。在集中学习的的阶段,我的主要工作是上课,学习基础知识。因此我有足够的时间进行系统的学习,可以全方位的提高各方面的能力,比如:英语、编程(算法)、数学。

因此,在这个学期,我定下的目标如下:

  1. 大幅度提高算法能力。
  2. 大幅度提高英语词汇量。
  3. 学习一些数学知识辅助学习算法。
  4. 能够own或co-own一个开源的项目,并不断完善。一个项目足够了!

其实,以上的目标一方面是为了两年后的工作,一方面也是为了接下来的校外实习。

在这个阶段,我主要的目的是提高算法方面的能力。算法分析、设计是一个优秀的程序员非常非常重要的素质。我会采用如下几个措施来提到自己的算法能力:

  1. 阅读学习算法导论。虽然《算法导论》是一本非常难啃的书,但是不能否认是算法方面的圣经。将本书在半年内看完真的不现实,我打算用半年的时间将书中大部分重要的章节学习完。在学习的过程中,参考网易公开课:算法导论;参考斯坦福课程。学习算法导论,我会在本博客上详细记录学习过程。
  2. 练习ACM题。用作ACM题来巩固算法学习,进行实际的coding。我打算一周做两道ACM题。
  3. 关注一些算法问题,自己思考解答。比如待字闺中的微信公共账号,经常发布一些有趣的题。 在提高英语词汇量方面,我打算用两个月的时间背一本GRE词汇。

数学、项目暂时没有特别的规划。

校外实习

根据国科大和软件所的政策,估计这是找工作前唯一一次实习了。在经过了2014秋季学期的算法集训后,我觉得自己的素质可以应付一般的实习面试了。因此,我希望这次实习应该找个非常有含金量的实习工作。一方面是实习单位尽量是实力雄厚的公司,一方面自己做的工作内容页尽量更加有使用价值。

规划待定。。。

秋季学期需要做的事

上面在整体上写了研究生阶段的大体规划,下面总结一下本学期常规的事:

  1. 上课学习、写作业。
  2. 学习算法,编程,做ACM题。
  3. 看书:《算法导论》、《暗时间》、《数学之美》。
  4. 经营博客。这个学期可能除了一些自己的思考外,大多数的文章会围绕算法来展开吧。
  5. 锻炼身体,尽量做到两天一运动(羽毛球、长跑12圈)。

Creative Commons License
This work is licensed under a CC A-S 4.0 International License.