【比特科技/学习心得】决定成为程序员那一刻,该怎么做?

 

你真正决定成为一名程序员之后,那么你就要抓紧时间了!...





前言在你真正决定成为一名程序员之后,那么你就要抓紧时间了,哪怕你才度过“惬意”的大一生活,即将进入大二,你都要抓紧时间。--朱玉祥

首先说一说今年的就业形势。我想说一句话:比你们想象到的糟很多。基本上都是百人之中选一人(毫不夸张),对于“BAT”这样的公司,如果通过笔试,那么恭喜你,你的竞争对手将是西交大、西电的本科生或者研究生。“这有什么,研究生里面也有差劲的”,如果抱着这样的想法,那么祝你好运!


姓名:朱玉祥

学校:陕西科技大学

专业:数学及应用数学

签约单位:去哪儿网

薪资:14000元/月

岗位:开发工程师



有两种人:一种是看到别人找到工作,而自己只能闷头苦脸继续找的人;另一种是自己找到好工作,看别人闷头苦脸找工作的人。想要成为后者那么就脚踏实地去奋斗吧。接下来说一说我的学习经历,值得一提的是,我的学习经历可能比较系统,涉及的面很广,对于精与一道的人(比如对linux内核有深入研究的)可能不太适合,还是建议将自己的知识体系完善起来。

当我回头去看自己学习经历的时候,我觉得最最重要的一点就是:要脚踏实地,基础一定要扎实。具体到两点:语言和操作系统,本文很大一部分都是关于这两点的学习。在这两点的基础之上再学习linux、算法、网络编程等就水到渠成了。
1
对于C编程语言

目前我想应该经历这么几个过程:初学语法、熟悉语法、简单应用、语言进阶、熟练应用。编程语言的学习是一个不断沉淀的过程,切勿急躁好进,再次提醒基础一定要扎实。在语法初学阶段我推荐读《c程序设计语言》这本书。个人总感觉国外的书籍读起来总会给人以启发,我没有读过谭浩强写的书籍,不过大家可以都看看。

读完这本书,你已经一脚迈入了程序员的大门。好吧,总是面对枯燥的程序总该换一换口味,这时候可以看一看操作系统相关的书籍,首先推荐《UNIX环境高级编程》这本书。或许这个阶段读这本书很难,因为涉及到许多linux和操作系统知识,因此这部分需要花费很长时间包括了解linux,安装linux,初识linux环境,逛一逛linxu社区(linux的社区很强大),在不断的了解过程中,你会遇到n多困难,同样你的眼界、知识面会迅速扩大,虽然编程能力可能没什么提高,但解决问题的能力突飞猛进,遇到困难不是一味的问老师,因为你已经学会了搜索引擎,学会了在社区里面学习,学会了查资料。这是一个沉淀的过程,大约会花费一个学期时间。

等了解了一些linux之后,再去看《UNIX环境高级编程》,困惑还是有,但是你依旧可以将这本书读个大概,这本书本来也不建议读一遍,需要多次阅读,但不是连续多次阅读。OK!接下来你就会感觉你的编程能力有些弱了,因为你可能接触到一些大神的代码,感觉自己写的程序就是个渣,没关系,推荐三本书《C和指针》、《C陷阱和缺陷》、《C专家编程》。这三本书对c语言的剖析可谓深入骨髓,但是可能没有相关经验,体会不到,这个时候老师的作用就体现出来了,会将一些重要的知识点讲到,你会有一种恍然大悟的感觉。这才是老师的作用,而不是:老师教自己学。读完之后你就度过了熟悉语法的阶段,对C语言有了一个全面的认识,能够编写一些复杂的代码。但是一旦代码量过多就会感觉到吃力,还是要继续修行,不要着急。
2
C++编程语言

这部分知识个人感觉老师的作用很重要。从C语言到C++语言过渡其实是很不容易的一件事,需要老师丰富的经验再结合自己阅读大量的书籍以及大量的练习,阅读至少四本书,分别是《C++编程思想》上下卷、《Effective C++》、《高质量C++编程指南》、《STL源码剖析》。其实还有一些经典书籍比如:《Boost程序库完全开发指南》等,老师都有提到,一定跟着老师的节奏将这些书看完,相关代码敲一敲,稍微松懈可能到后面就听不懂了。如果有能力将STL以及BOOST库自己全部实现一遍,我是这样做的。另外就是阅读大量的博客了,我会将好的博客附在最后的链接里面。到这一步你就度过了简单应用的阶段,可以用C++库写一些小应用程序。一定要利用好大二的这个暑假,将这些工作在暑假的时间里做完大部分。
3
为语言进阶阶段做准备

我们需要进一步理解操作系统,起初我个人在操作系统方面读了三本书,《现代操作系统》这可以说是一本讲解操作系统历史和哲学的书籍,需要慢慢理解,不断回头看,甚至我有读过两遍,操作系统知识总体来说比较抽象,在前面对linux的摸索和语言的熟悉的基础上去理解,其实是很有意思的。我经常会为操作系统中的相关设计而震撼,至今我都认为“操作系统是世界上最伟大的软件”,从未动摇。还有一本优秀的书籍《操作系统精髓与设计原理》(朋友推荐),这两本书籍择一本即可,读完这本书我觉得意犹未尽,因为只有概念性的东西,总感觉很轻浮,《linux内核设计与实现》这本书会稍稍深入一些,在要深入的话就去看看内核源码吧《linux内核0.11源码注释》,我看过一部分还是很不错的。完了吗?这时候我觉得就应该重新读一读《UNIX环境高级编程》这本书了,相信学了这么多东西应该对其中的内容理解80%以上了。

接下来很重要的一本书籍《深入理解计算机系统》,个人经验是经历了前面这些知识的沉淀,阅读这本书是水到渠成的事,不会有太多困难,如果有困难那么就需要亡羊补牢了。因为这本书本身就是编程语言和操作系统的一个浓缩和进阶,建议将里面的汇编代码亲自实践一下。读完这本书,你就对语言在操作系统层面有了深入理解,这部分大概需要花费一个学期时间。

看完上面的内容是不是觉得一学年学的东西太多了?是,所以我们一定要抓紧时间,还是那句话不要急躁。上面说的都是我真实经历过的。大三上学期我们要完成的工作就是进一步学习linux(shell脚本等)。
4
网络编程

网络编程推荐两本书籍《TCP/IP详解》卷一、《UNIX网络编程》,要想在接下来的学习阶段没有太大障碍,这两本书建议仔细阅读,后者的代码最好都敲一敲,实验一下,可以去网上下载代码作为参考。学完之后,基本上所有基础东西就学完了,我们可以开启开源项目了,这部分随自己喜好就好,推荐几个开源项目libevent(参考书籍《linux高性能服务器编程》)、memcache、nginx(这个代码的质量非常高,强烈建议),这个阶段大约花费一个学期。需要强调的一点,初次接触到大型项目,我们一定要坚持,结合linux脚本以及相关工具,去坚持将这些源码看一看,过程可能会有些痛苦,但是受益匪浅。
5
面试准备

这么早?是的,我们是为四月份左右的实习以及内推做准备。刚开学的时候我们需要将自己学过的东西做一些总结和查漏补缺,这一点也很重要,将其整理成文档放在手机里面可以随时查看。然后就是刷题,以及阅读相关面试宝典,有人说我已经学了这么多,知识已经很扎实了,还要刷题?对,而且很重要,这阶段做的好不好直接关系到面试是否顺利。至少需要刷一个月以上的题目,很值得。如果内推没有机会,那么之后你会有两个多月的时间继续准备。

关于算法,在面试的时候非常重要,可以在学习阶段的任何时候进行,也可以在刷题的时候进行,推荐书籍《算法导论》,很难的一本书,对于算法复杂度的证明可以略过,但是对于算法很有启发,建议一看。

好了,学了这么多,付出这么多努力,你应该对自己充满信心,凭自己实力去面试吧,当然面试失利也不要灰心,运气也占很大一部分,谁都不敢说他就没有一点知识上的缺陷。

我相信有些人读完了整篇文章都不知道在说什么,那么就用一句话总结一下:

将上面的蓝色标示的书籍读完并理解,你就是大神!

最后祝大家学习顺利,都能够找到好工作!

附上一些网站:

http://coolshell.cn/                            酷   壳

http://blog.csdn.net/v_july_v              算   法

http://blog.csdn.net/russell_tao          陶   辉


    关注 西安比特教育


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册