程序员进阶之路
关键词: coding, 程序员, 成长, 编程, programming,
前几天在网上看到这篇文章,觉得写得不错,就根据自己的理解,做了一些修改,现与大家分享。一个程序员,从最基本的做做coding,到成为一代宗师,通常需要经过下面六个阶段:
第一阶段
此阶段主要是能熟练地使用某种语言。这就相当于练武中的套路和架式这些表面的东西。一般来说,比较好的入门语言有c/c++、java、delphi和 perl(当然,汇编也是一门相当重要的工具)。就这四门语言而言,我通常只使用c/c++进行开发,这是目前应用最为常见的语言,特别是c,和低级语言 有很多相似之处;java的最大优势在于跨平台性,但是其执行效率确实是一大问题;delphi是数据库开发人员的利器,如果你希望从事erp开发,一定 要学好这门语言(当然,也有c#,不过我没有用过,也就不便评价:-P);至于perl,如果你要使用unix/linux平台,这门语言一定要学会的! 我推荐各位可以看看eckle写的thinking in c++或者是thinking in java入门。这一阶段最好的练习方法是多用最基本的语言写程序,比如用c++的话,除了i/o之外,就不要使用任何的库函数和api了,这样才能尽快的 掌握一门语言的基础。
第二阶段
此阶段能精通基于某种平台的接口(例如我们现在常用的win32 api)以及所对应语言的自身的库函数。到达这个阶段后,也就相当于可以进行真实散打对练了,可以真正地在实践中做些应用。目前,在windows平台下 最好的参考资料当属msdn,上面有绝大多数win32 api的介绍,不过都是e文的(最起码我拿到的版本是),要求有较高的e文能力(大概也就6级的水准吧)。至于库函数,一般在网上很容易找到相应参考资料 的。最好的练习方法就是多写些程序,但和第一阶段不同的是,这一阶段要尽量用api和库函数写。
第三阶段
这个阶段要求程序员深入地了解某个平台系统的底层,具备初级的内功,也就是“手中有剑,心中无剑”。这个阶段要求程序员对os的原理和实现有一定的理解, 最好使用开源平台进行学习,如linux,因为在windows下,所有的细节都是屏蔽的,很难了解到它到底是怎样运行的。这个阶段正是我目前努力的目 标,按照目前的进度,我在今年就应该能够升级到这里了:-)
第四阶级
到达这个阶段的人就不多了,这些人大都是一流的黑客、公司的骨干了,能直接在平台上进行比较深层次的开发。比如能进行vxd(想想当年陈盈豪的cih病 毒)或操作系统的内核的修改。这时已经不再有语言的束缚,惟一的束缚就是你的开发思想,语言只是一种工具,即使要用自己不会的语言进行开发,也只是简单地 熟悉一下,就手到擒来,完全不像是第一阶段的时候学习语言的那种情况。一般来说,从第三阶段过渡到第四阶段是比较困难的,因为很多人的思想变不过来。
第五阶级
前几个阶段就好比独孤求败年轻用的那柄削铁如泥的宝剑和那把玄铁重剑,在一定程度上依赖着武器的威力。但在这个阶段,程序员就如同四十之后的独孤求败, 剑由心生,随便选取一根树枝就能当作威力无穷的宝剑。全局把握、整体设计,包括从内核到外层,这时的程序员已经不是传统意义上的程序员了,或许叫做项目更 合适。如果达到这个阶段,你就可以直接向ms递交申请了,而且一定成功:-P
第六阶级
此阶段也是最高的境界,达到“无招胜有招”。这时候,任何问题就纯粹变成了一个思路的问题,不是用什么代码就能表示的。也就是“手中无剑,心中也无 剑”。此时,对于练功的人来说,他已不用再去学什么少林拳,只是在旁看一下少林拳的对战,就能把此拳拿来就用(就像张无忌学习三十六式龙爪手一样)。这就 是真正的大师级的人物,比如linus,或许gates也能算达到这个境界了吧。这时,Win 32或Linux在你眼里是没有什么差别的。
每一个阶段再向上发展时都要按一定的方法。第一、第二个阶段通过自学就可以完成,只要多用心去研究,耐心地去学习。要想从第二个阶段过渡到第三个阶段, 就要有一个好的学习环境。例如有一个高手带领或公司里有一个好的练手环境。经过二、三年的积累就能达到第三个阶段。但是,有些人到达第三个阶段后,常常就 很难有境界上的突破了。他们这时会产生一种观念,认为软件无非如此,认为自己已无所不能。其实,这时如果遇到大的或难些的软件,他们往往还是无从下手。
现在我们国家大部分程序员都是在第二、三级之间。他们大多都是通过自学成才的,不过这样的程序员一般在软件公司也能独当一面,完成一些软件的模块。但是, 也还有一大堆处在第一阶段的程序员,他们一般就能玩玩VB,做程序时,去找一堆控件集成一个软件。坦白的说,利用控件完成程序本身也是一种很好的开发模 式,但是这样对于程序员自身的提高而言并无任何好处。