如果你是一只程序猿或者致力成为一只程序猿,请问下自己:“我真的热爱技术吗?”,如果不热爱请迅速逃离这个行业!如果爱,那就放开尽情爱吧。
结合自己的经历和理解,这里和大家讨论下程序猿技术练级攻略,“攻略”的话题有点大了,这里只是浅谈,如有错误,欢迎大家一起讨论。
1. 基础知识的重要性
构建“技术栈”犹如修炼一部“少林”高深武功。为什么必须是少林的武功?因为“天下武功皆出少林”,我们学习的技术因该是一通百通,且不可是旁门左道。另外修炼技术特别像修炼少林功夫,需要日积月累扎扎实实学习和练习。
这里和大家分享一段真实的故事。
研究生一年级参加了一次学术交流会,学院请到了南京大学徐家福先生,可能很多小朋友不认识徐老先生,可从以下链接了解到:
http://bbs1.netbig.com/thread-2848617-1-1.html
这里借用二楼楼主的评论:
“在我国计算机软件领域素有“南徐北杨”之说,“南徐”就是指南大的徐家福,“北杨”就是指北大的杨芙清。这两位堪称我国计算机软件领域的奠基人、泰斗、绝代双侠。”
学术交流会开始了,徐老先生并不像一般的交流会开场,好多专家打开PPT一顿狂读,而是以问答的形式展开,第一个问题便是“什么是计算机?”,what?结果好多专家都没有回答好,哈哈,是很多很牛的专家。后来回顾了中国软件发展史以及中国软件史上的大事情,具体的好多记不清出了,只记得最后一个问题。一个同学抢到了提问的机会,问到“怎样学好计算机软件?”,徐老先生微微一笑,用手撑着撑着桌子拿起粉笔在黑板上写了12字:“基础概念,基础概念,基础概念”。大家能感受到这12字的份量吗?只要领悟到并且做到这12个字,你将受用终生。因为很多年的工作经历告诉我,这12个字可以解决工作中所有的技术难题。
2. 请珍惜大学计算机基础课程
很多人说大学里的计算机课程都没有什么用,如果你有这种想法,说明你的层次还不够!如果你是一名学生并且学习了以下课程,请好好珍惜,用心去学。
《数字电路技术》:会看一般的电路设计图,懂得常见译码器、触发器原理,最后在实验室动手设计一下基本的加法器。
《计算机系统结构》:熟悉CPU、RAM/ROM、BUS、DISK设计原理,至少要理解程序是怎么运行的,比如从磁盘上加载程序到内存,cpu从内存加载指令到寄存器,CPU指令周期,指令流水线设计,CPU缓存原理。
《汇编语言》:熟悉常见指令,理解数据在寄存器中的变化,数据流在各个器件间的移动。
以上三门课程基本可以决定一个软件工程师从事软件开发的深度,对驱动程序开发感兴趣的同学一定好好学习这些课程。
《操作系统原理》:具体来说应该是UNIX/LINUX操作系统原理,所有软件的鼻祖,线程、进程的概念,进程、线程调度算法,地址空间的概念,内存管理,文件管理等等,慢慢地你会发现所有的软件设计都离不开这些基础。
《数据结构和算法导论》:程序员的任督二脉,不多说了。
《计算机网络基础》:TCP/IP网络协议栈,无论是移动端、PC端、后端,天天都在用,不懂网络的程序员世界将变得非常渺小。
这些课程就是少林武功的心法,但是理解心法需要反复练习招数,可惜我们的教育现状是天天讲心法,没有像样的招数。杨过当年出道全真教,赵志敬只教心法,结果弄得杨过天天郁闷;现在好多在校大学生程序猿或许有点杨过的影子,解决办法只有一个:自己学招数!
下面的招数来了,就怕你学不过来,真是太多了!
3. 程序猿技术练级攻略
N多年前有幸看到了耗子哥这篇文章,写的太TDM的好了,分享给大家:
多年来我就是按照上文的指导一步步过来的,感觉天天都在进步。建议大家把coolshell上的文章全读了,并且去一步步实践,N年后你会由衷感谢这篇文章的。
这里顺便提一句,由于自己太笨,windows好多概念我都学不懂,而且打心里不喜欢windows的文化(可能没缘分),所以windows方向我是彻底放弃没学。
4. 热爱并持续学习Unix/Linux文化
强烈建议每个程序员都要读一下 《Unix编程艺术》,每次读这本书都一种感觉:理解UNIX文化,技术变得很简单;每次遇到设计上的问题时,我也总是翻一番这本书,往往都能找到答案。
如果你想成为一名程序猿,并且windows学不会(windows 很多无聊的技术:.NET/COM/C#/MFC......),请回归Unix方向,从基本的Shell命令学起,学习C语言UNIX系统发开,掌握常见的系统调用,熟悉Unix IPC方式,好好研究socket编程。
现在发现好多好多东西都是从Unix世界里来的,掌握了Unix你就掌握了软件设计的灵魂,找到了技术源头。
以上就是要和大家分享的内容,再次感谢耗子哥那篇分享,受用无穷。最后希望大家一起学习,一起进步。
网友评论