在校期曾多次參加省ACM竞赛,蓝桥杯程序设计大赛。曾获山东省ACM程序设计大赛三等奖,蓝桥杯程序设计大赛山东省一等奖。2013年參加在北京大学举行的蓝桥杯程序设计大赛全国总决赛。获全国三等奖。
我当初也曾有过和他们相同的疑问,作为一个过来人,我认为有必要写篇文章把我的心得感受告诉他们,以帮助他们尽量少走弯路。当然。下面内容仅仅是我的个人观点。叙述中难免有偏颇不当或者眼界狭隘之处,仅作參考。
(此文仅仅针对计算机专业)
首先。你须要有这样一个觉悟,尽管考研和就业这两条道路全然不同,可是你的目的地始终仅仅有一个,那就是享受更高的待遇和受到很多其它的尊敬。我能够负责任的告诉你,这两条道路都能够到达这个目的地,所以你不用操心选错道路自毁前程,关键是你喜欢走哪一条,两条道路各有什么特色,以及你该分别如何去走。
假设你没有深刻领悟到我上一段话的意思,建议你最好还是多读几遍,只是最有效的是看全然篇文章之后再回来读一遍。我先解释一下,是这种。一般人遇到这种选择问题,会首先分别罗列出两者的长处,然后比較哪个长处多。可惜的是。两者的长处往往都相同多。以至于难于比較,最后比来比去比的自己头都大了也比不出结果。最后就算勉强选择了一个结果,却还总是心存怀疑。所以,你若想真的得出一个确定的让自己信服的结果,首先要帮助自己跳出上述这个思维的漩涡。这样一来,一个选择问题就变成了一个兴趣问题。
那么这两条道路各自是如何通往目的地的呢?首先说一下考研,考研的人一定要有这种觉悟:我已经具备了一定的开发能力。并且在开发过程中我深刻感悟到了理论学习对于实际开发的重要性,因此,我要通过在校的三年。潜心钻研。用深层次的知识全面武装自己。从本质上拉开自己与一般人的差距,从而增强自己的核心竞争力。
上面段话能够概括为“两个条件。一个目标”。
读研的两个条件,一是已经具备了一定的开发能力,二是已经深刻领悟到了理论学习对于实际开发中的重要性。
两者缺一不可。
假如你没有同一时候具备这两点但又决定考研,我建议你在考上研究生之后迅速让自己具备这两点。否则你读研仅仅只是是瞎混一通,在学习过程中会很盲目,读研价值差点儿为0,不如直接工作。
这两点看似简单事实上不然,就我身边来说已经深刻领悟到理论学习对于实际开发重要性的人屈指可数。
我不知听到过多少人说学习数学和算法感觉对于工作没什么用。
是的,假如你甘心一辈子仅仅做信息管理系统这种简单软件,而且不想去做整个系统的架构师,永远仅仅想负责项目的一小块代码就满足了。这种话。学习数学和算法的确没什么用,只是。你的待遇应该不会特别的高。像模式识别。图像压缩,网络爬虫,巨量数据检索,计算机图形学这些领域,假如你不懂数学不懂算法,那么想要踏足当中无异于天方夜谭,而这些领域。正是待遇高受尊敬的领域。
不用说那些3D大型游戏,就拿一个简单的推箱子游戏来说,假如你不懂启示式搜索算法。你拿什么去实现这个游戏?再简单点。就拿本科毕业生如今用到的数据库的增删查改来说。举个样例,你将一到十万的值依次插入到一个表中,总共须要插入十万条记录,有的写法须要几十秒才干完毕。而有的写法一秒都不用。
数据库中有非常多这种优化算法,假如你没有花时间去学过,那么以后碰到这种效率问题该怎么办呢?假设数据规模再大一点,SQL函数也不能帮你解决,那么全部的问题都得由你自己去编写算法解决。所以。读研的话。能够给你三年的时间去充分研究这些学问,可是假设你从来就没有意识到这些知识在实际开发中的重要性,不知道学来有什么用,没有意识到像线性代数、概率论这些东西在编程中的重要性,那么你就根本不知道该怎么读研。
读研主要靠自学,假设连你自己都找不到方向。那么谁还能帮你?
上面还提到过“一个目的”,这个目的是指你读研后要从本质上拉开自己与一般人的差距。试想一下。一个不是非常优秀的大学计算机专业毕业生干的工作,假设让一个高中生来做,我相信仅仅要经过三个月的集中培训,他差不多能够胜任。那么,你的竞争力在哪里?没有竞争力的人待遇又会怎样呢?这些可想而知。一个读完研究生的人。假设还是不能拉开当中的差距,让前面两种人不管怎样都追赶不上。那么选择读研就是失败的。错误的。
然后再说一下工作这条道路。假设你选择了工作,不代表你就能够放弃理论研究这条道路。
我从一開始就说过,这两个看似全然不同的道路,事实上它们的目的地都是相同的。
既然目标相同,那么这两者所要做的事情以及所要具备的能力应该也是差点儿相同的。早早參加工作的长处是。你能够在领取工资的同一时候。又能积累丰富的实战经验,了解行业的规范,使自己的付出早日收到回报。
尽管你没有踏足一个深奥的领域,可是即使在简单的领域里面。一个元老级的人物。一个对各种技术都应用自如驾轻就熟的人。作用相同是不可小觑的,待遇一样会非常高。
你让一个理论功底深厚的人来做和你相同的工作,他也未必能做到和你相同好。这便是竞争力。只是,你千万不要满足于此。
一个再熟练的建筑工人。他也始终是建筑工人,即使他同一时候具备瓦工、泥工、电焊工的本领,他也始终无法跟一个真正的建筑大师相比。建筑工人想要成为建筑大师,假设你没有在学校中经过系统的理论学习,那么一切就都要靠你在实际工作中利用闲暇时间去自学。
信息时代。你须要学习的不论什么东西都能够从网络或者书店里买到。
假设你非常盲目,我能够给你举些样例,可是由于自身水准有限。给出的建议仅仅是基础性的。比方说你毕业后从事的开发是跟C++有关的。那么你能够首先系统的学习和完好C++方面的知识。买一本《C++ primer》 。看完之后再看《effective C++》 ,在日后工作中重复钻研。有关描写C++框架的书。我感觉《深入浅出MFC》这本书不错。由于这本书不仅让你知其然。更让你知其所以然,满分推荐。
假设你从事的是java方面的工作,那我推荐你读《java编程思想》这本书。主流框架当然是SSH,只是我学得不好。不知道哪本书比較好,你既能够看书也能够看视频学习。
然后是数据库,这方面的书我知道的不多,可是有一本我不得不推荐一下——《收获,不止Oracle》。由于读完你会发现:收获,真的不止Oracle!
然后是数据结构和算法的学习,这方面的书首推《算法导论》。在学习的过程希望你要不断亲手去写程序,去一些OJ站点做上面的习题。然后你能够依据自己所喜欢的领域再进行仔细性的深入研究。
比方你喜欢计算机图形学。就要很多其它的去研究数学方面的东西。
假设你喜欢人工智能,那么你学习的就不光是计算机软件方面的知识了,计算机硬件,甚至哲学、心理学、自然科学,也都是你该探究的领域。
我说这些的目的,是让你明确要在工作中带目的性的深入某一块的东西。
由于人的精力是有限的,你仅仅能选择将某一块做到最好。要在工作中自学事实上是非常难的,全凭自制力。不像读研那样有个安稳的环境。
就我自己而言,上面提到过的这些书,没有一本是我从头到尾能耐心读下来的。不够以后我还是会继续认真去读的。
走得慢总比不会走要好。
介绍完这两条道路,总结一下就是:前者是先重点进行理论学习。然后再在实战经验中慢慢将理论运用进去。后者是先进行实战训练,然后在工作中想往哪块发展再通过自己的努力去学习须要的理论。两条不同的道路,假设你比較有雄心,建议前者;假设你图个安稳。建议后者。我个人比較倾向于前者。有句话叫做“磨刀不误砍柴工”。另一个学历问题我没提到,如今的社会比較重视学历,一个研究生找工作肯定要比本科生easy,并且工资起薪也会高点。只是。你千万不要天真的以为一个学历就能帮你解决一切。假设你研究生阶段没有学到真东西,那么别人三年的工作经验足以把你拉下一大截。反而得不偿失。
如今越来越不敢写东西了,由于每隔半年就会感觉自己半年前写下的东西可吐槽点非常多。此文若有见识粗浅鄙薄之处望请各位见谅!