我对程序员的等级划分

程序员的等级

程序员这个行业在世人眼中已经从原来的高科技人才变成了烂大街的“码农”或者“码工”。之所以出现这种现象,至少部分原因是由于低层次的程序员太多了。所谓低层次,并非指新手,很多老手也是这样。很多程序员没有自己的正确的发展方向,从来也没有意识到程序员应该有什么发展方向,以至于从业很久了还停留在最低层次上。

本文将对程序员的等级层次进行讨论,共同探寻程序员的发展道路,以期对年轻人有些许帮助,对初学者的前进方向有一点参考作用,则我就甚感欣慰了。

本文纯粹为本人一家之言,不当之处甚至错误观点在所难免,欢迎各位同行拍砖讨论,欢迎各位专家不吝斧正。

第1级 算法
算法是程序的灵魂,算法能够化腐朽为神奇,变不可能为可能。自然语言理解、模式识别、机器翻译、优化、预测、机器学习,这些无一不是算法。当然,这些算法是相对比较高深的算法,不太容易掌握,其他一些更基础和简单的算法,如排序、查找、最短路径等,也能在程序中起到画龙点睛的作用。
有一些任务,没有算法,任你精通N门语言、熟悉M种框架、有L年编程经验,也一样束手无策,无计可施。举最简单的一个例子,手写数字识别程序,如果没有一点模式识别的算法,只是依靠普通的编程思路,根本不可能编写出有任何意义的程序,根本不知道程序要如何写。但是有了模式识别的算法,则此任务变得很简单了。

其他的比较实际的例子,如验证码识别、疾病分布预测、无人机飞行控制、机器翻译、二维材料优化等,也都是算法应用的很好的例子。

2003年做过一个程序,那里刚开始编程,完全没有算法的概念,代码是乱七八糟堆到一起凑出来用户要求的功能,仅此而已。程序的一个功能是出报表,当时复杂报表大约需要20分钟才能出来,用户感觉太慢,问能否优化一下。我采取了另外一种方法,一个很简单的小技巧,将报表生成速度缩短到2秒。现在看来,这很勉强刚刚够一个算法,但是却很好的解决了问题。

能够掌握和设计算法的程序员是最高级的程序员。其他任何程序员,在这种程序员面前,都是浮云。一个做高级算法的程序员,让他转行做其他任何一种程序员,都无比轻松,但反之却太难。

下面的内容还没有写完,先列个提纲。

2设计

良好的设计思想能够编写出优雅的程序。同一个程序,让不同的人来做,也许都能够实现其功能,但是,优秀的设计和拙劣的设计甚至完全没有的设计,程序在可扩展性、可维护性却相差何止十倍百倍。

3底层

4熟练

5其他

以上各个知识是综合在一起,难以分开的。并非说一个程序员,主要做某一方面的工作,真实情况更多的是,一个程序员可能会用到上面1234知识当中的任何一种。

以上标准也不是专门针对最尖人才来说的,对于水平不太高的人,也是如此。例如一个程序员能设计和实现不太复杂的算法,另外一个程序员不会设计算法,但是熟悉底层,那么我个人认为前者又高于后者。

版权所有:基础软件工作室。作者:孙继磊。邮箱:sun.j.l.studio@gmail.com。
本文首发于 http://www.cnblogs.com/FoundationSoft。文章转载请保持此版权信息并注明出处。

posted @ 2011-10-19 10:19  基础软件  阅读(5762)  评论(0编辑  收藏  举报