首页 > 代码库 > 考研与就业——答学弟学妹问

考研与就业——答学弟学妹问

考研与就业——答学弟学妹问
    文章作者:孙金田,鲁东大学软件工程2010级学生,在校期曾负责ACM竞赛的相关组织工作。在校期曾多次参加省ACM竞赛,蓝桥杯程序设计大赛,曾获山东省ACM程序设计大赛三等奖,蓝桥杯程序设计大赛山东省一等奖,2013年参加在北京大学举行的蓝桥杯程序设计大赛全国总决赛,获全国三等奖。   

    我该考研还是就业?考研或者就业之后做什么?很多学弟学妹们会问我这两个问题。我当初也曾有过和他们同样的疑问,作为一个过来人,我觉得有必要写篇文章把我的心得感受告诉他们,以帮助他们尽量少走弯路。当然,以下内容只是我的个人观点,叙述中难免有偏颇不当或者眼界狭隘之处,仅作参考。(此文只针对计算机专业)

 首先,你需要有这样一个觉悟,虽然考研和就业这两条道路完全不同,但是你的目的地始终只有一个,那就是享受更高的待遇和受到更多的尊敬。我可以负责任的告诉你,这两条道路都可以到达这个目的地,所以你不用担心选错道路自毁前程,关键是你喜欢走哪一条,两条道路各有什么特色,以及你该分别怎样去走。

如果你没有深刻领悟到我上一段话的意思,建议你不妨多读几遍,不过最有效的是看完全篇文章之后再回来读一遍。我先解释一下,是这样的,一般人遇到这种选择问题,会首先分别罗列出两者的优点,然后比较哪个优点多,可惜的是,两者的优点往往都同样多,以至于难于比较,最后比来比去比的自己头都大了也比不出结果。最后就算勉强选择了一个结果,却还总是心存怀疑。所以,你若想真的得出一个确定的让自己信服的结果,首先要帮助自己跳出上述这个思维的漩涡。这样一来,一个选择问题就变成了一个兴趣问题。

 那么这两条道路分别是怎样通往目的地的呢?首先说一下考研,考研的人一定要有这样的觉悟:我已经具备了一定的开发能力,而且在开发过程中我深刻感悟到了理论学习对于实际开发的重要性,因此,我要通过在校的三年,潜心钻研,用深层次的知识全面武装自己,从本质上拉开自己与一般人的差距,从而增强自己的核心竞争力。

 上面段话可以概括为“两个条件,一个目标”。读研的两个条件,一是已经具备了一定的开发能力,二是已经深刻领悟到了理论学习对于实际开发中的重要性。两者缺一不可。假如你没有同时具备这两点但又决定考研,我建议你在考上研究生之后迅速让自己具备这两点,否则你读研只不过是瞎混一通,在学习过程中会非常盲目,读研价值几乎为0,不如直接工作。

 这两点看似简单其实不然,就我身边来说已经深刻领悟到理论学习对于实际开发重要性的人屈指可数。我不知听到过多少人说学习数学和算法感觉对于工作没什么用。是的,假如你甘心一辈子只做信息管理系统这样的简单软件,并且不想去做整个系统的架构师,永远只想负责项目的一小块代码就满足了。这样的话,学习数学和算法的确没什么用,不过,你的待遇应该不会特别的高。像模式识别,图像压缩,网络爬虫,巨量数据检索,计算机图形学这些领域,假如你不懂数学不懂算法,那么想要踏足其中无异于天方夜谭,而这些领域,正是待遇高受尊敬的领域。不用说那些3D大型游戏,就拿一个简单的推箱子游戏来说,假如你不懂启发式搜索算法,你拿什么去实现这个游戏?再简单点,就拿本科毕业生现在用到的数据库的增删查改来说。举个例子,你将一到十万的值依次插入到一个表中,总共需要插入十万条记录,有的写法需要几十秒才能完成,而有的写法一秒都不用。数据库中有很多这样的优化算法,假如你没有花时间去学过,那么以后碰到这样的效率问题该怎么办呢?如果数据规模再大一点,SQL函数也不能帮你解决,那么所有的问题都得由你自己去编写算法解决。所以,读研的话,可以给你三年的时间去充分研究这些学问,但是如果你从来就没有意识到这些知识在实际开发中的重要性,不知道学来有什么用,没有意识到像线性代数、概率论这些东西在编程中的重要性,那么你就根本不知道该怎么读研。读研主要靠自学,如果连你自己都找不到方向,那么谁还能帮你?

上面还提到过“一个目的”,这个目的是指你读研后要从本质上拉开自己与一般人的差距。试想一下,一个不是很优秀的大学计算机专业毕业生干的工作,如果让一个高中生来做,我相信只要经过三个月的集中培训,他几乎同样可以胜任。那么,你的竞争力在哪里?没有竞争力的人待遇又会如何呢?这些可想而知。一个读完研究生的人,如果还是不能拉开其中的差距,让前面两种人无论如何都追赶不上,那么选择读研就是失败的,错误的。

 然后再说一下工作这条道路。如果你选择了工作,不代表你就可以放弃理论研究这条道路。我从一开始就说过,这两个看似完全不同的道路,其实它们的目的地都是相同的。既然目标相同,那么这两者所要做的事情以及所要具备的能力应该也是差不多的。早早参加工作的优点是,你能够在领取工资的同时,又能积累丰富的实战经验,了解行业的规范,使自己的付出早日收到回报。虽然你没有踏足一个深奥的领域,但是即使在简单的领域里面,一个元老级的人物,一个对各种技术都应用自如驾轻就熟的人,作用同样是不可小觑的,待遇一样会很高。你让一个理论功底深厚的人来做和你同样的工作,他也未必能做到和你同样好,这便是竞争力。不过,你千万不要满足于此。一个再熟练的建筑工人,他也始终是建筑工人,即使他同时具备瓦工、泥工、电焊工的本领,他也始终无法跟一个真正的建筑大师相比。建筑工人想要成为建筑大师,如果你没有在学校中经过系统的理论学习,那么一切就都要靠你在实际工作中利用闲暇时间去自学。信息时代,你需要学习的任何东西都可以从网络或者书店里买到。如果你很盲目,我可以给你举些例子,但是因为自身水准有限,给出的建议只是基础性的。比如说你毕业后从事的开发是跟C++有关的,那么你可以首先系统的学习和完善C++方面的知识,买一本《C++ primer ,看完之后再看《effective C++ ,在日后工作中反复钻研。有关描写C++框架的书,我感觉《深入浅出MFC》这本书不错,因为这本书不仅让你知其然,更让你知其所以然,满分推荐。如果你从事的是java方面的工作,那我推荐你读《java编程思想》这本书。主流框架当然是SSH,不过我学得不好,不知道哪本书比较好,你既可以看书也可以看视频学习。然后是数据库,这方面的书我知道的不多,但是有一本我不得不推荐一下——《收获,不止Oracle》,因为读完你会发现:收获,真的不止Oracle!然后是数据结构和算法的学习,这方面的书首推《算法导论》,在学习的过程希望你要不断亲手去敲代码,去一些OJ网站做上面的习题。然后你可以根据自己所喜欢的领域再进行细致性的深入研究。比如你喜欢计算机图形学,就要更多的去研究数学方面的东西。如果你喜欢人工智能,那么你学习的就不光是计算机软件方面的知识了,计算机硬件,甚至哲学、心理学、自然科学,也都是你该探究的领域。我说这些的目的,是让你明白要在工作中带目的性的深入某一块的东西。因为人的精力是有限的,你只能选择将某一块做到最好。要在工作中自学其实是很难的,全凭自制力,不像读研那样有个安稳的环境。就我自己而言,上面提到过的这些书,没有一本是我从头到尾能耐心读下来的。不够以后我还是会继续认真去读的。走得慢总比不会走要好。

 介绍完这两条道路,总结一下就是:前者是先重点进行理论学习,然后再在实战经验中慢慢将理论运用进去。后者是先进行实战训练,然后在工作中想往哪块发展再通过自己的努力去学习需要的理论。两条不同的道路,如果你比较有雄心,建议前者;如果你图个安稳,建议后者。我个人比较倾向于前者,有句话叫做“磨刀不误砍柴工”。还有一个学历问题我没提到,现在的社会比较重视学历,一个研究生找工作肯定要比本科生容易,而且工资起薪也会高点。不过,你千万不要天真的以为一个学历就能帮你解决一切,如果你研究生阶段没有学到真东西,那么别人三年的工作经验足以把你拉下一大截,反而得不偿失。

 现在越来越不敢写东西了,因为每隔半年就会感觉自己半年前写下的东西可吐槽点很多。此文若有见识粗浅鄙薄之处望请各位见谅!