如题所述
程序员八个段位等级你的等级?
1、菜鸟
迈进这层楼的门槛是很低的。基本上懂计算机的基本操作,了解计算机专业的一些基础知识,掌握一门基本的编程语言如C/C++,或者Java,或者JavaScript,...,均可入门迈进这层。如计算机专业毕业生,大量的通信、自动化、数学等相关专业的转行人士。
这类人员不管是不是计算机科班出身,基础如何,他们对编程有着特殊的爱好,他们可能会是一些很有前途的学生或实习生
他们完全是靠热情和承诺来编程。兴趣永远是最好的老师,也是最好的一件事,因为兴趣而引发的热情通常会让这些程序员成为“骨干程序员”
2、大虾
从第1层爬到第2层相对容易一些,以C/C++程序员为例,只要熟练掌握C/C++编程语言,掌握C标准库和常用的各种数据结构算法,掌握STL的基本实现和使用方法,掌握多线程编程基础知识,掌握一种开发环境,再对各种操作系统的API都去使用一下,搞网络编程的当然对socket编程要好好掌握一下,然后再学习一些面向对象的设计知识和设计模式等,学习一些测试、软件工程和质量控制的基本知识,大部分人经过2~3年的努力,都可以爬到第2层,晋升为"大虾”
3、牛人
由干"大虾"们经常被一些疑难问题给卡住,他们只好继续学习,将原来所学的知识进一步熟练掌握。以软件设计来说,光懂结构化设计、面向对象设计和一些设计模式是不够的,还要了解软件架构设计、交互设计、面向方面的设计、面向使用的设计、面向数据结构算法的设计、情感化设计等,否则是很难进到这个楼层的。当然除了上面说的知识外,大虾们还需要去学习各种经验和技巧。
4、大牛
从牛人进阶成为大牛并不容易,就像是百分制,到及格线比较轻松,但是60分到80分就会更难了。要成为大牛的话,你必须要能做牛人们做不了的事情,解决牛人们解决不了问题。比如牛人们通常都不懂写操作系统,不会写编译器,不懂得TCP/IP协议的底层实现,如果你有能力将其中的任何一个实现得象模象样的话,那么你就从牛人升级为"大牛"了。要成为"大牛"并不是一件简单的事情,需要付出比牛人们多得多的努力,一般来说,至少要看过200~400本左右的专业书籍并好好掌握它,除此之外,还得经常关注网络和期刊杂志上的各种最新信息。
5、专家
当大牛们真正动手做一个操作系统或者类似的其他软件时,他们就会发现自己的基本功仍然有很多的不足。这个时候就要求他们会进行基础研究,主要的内容就是研究非数值"计算"。
非数值计算可是一个非常庞大的领域,不仅时下热门的"多核计算"与"云计算"属于非数值计算范畴,就是软件需求、设计、测试、调试、评估、质量控制、软件工程等本质上也属干非数值计算的范畴,甚至芯片硬件设计也同样牵涉到非数值计算。如果你还没有真正领悟"计算"二字的含义,那么你就没有机会进到这层楼来。
6、学者
当"专家"们想继续往上一层楼爬时,他们会发现专业性的学习对于他们来说是很简单的,拦路虎是“创新”。像上面提到的,想要在专家的基础上更近-步,就需要产生自己的知识和思想。
但学习的都是一样的东西,怎么去创新呢?古人有一句话“温故而知新”,也就是工作当中说到的“复腐以查找为例,并不是去天天盯着那些复杂的查找结构和算法进行研究,你需要做的是将二分查找、哈希查找、普通二叉树查找等基础性的知识好好地复习几遍。
7、大师
成为大师必须要有较大的贡献。首先解决问题必须是比较重要的,其次你要比前辈们在某方面有一个较大的提高,或者你解决的是一个全新的以前没有解决过的问题:最重要的是,主要的思路和方法必须是你自己提供的,不再是在别人的思路基础上进行的优化和改进。
如,像Hoare一样设计出一个快速排序的算法;或者像Eugene W.Myers一样设计出了一个用编辑图的最短路径模型来解决diff问题的算法:或者像MJ.DPowell一样提出了一个能够处理非线性规划问题的SQP方法:甚至设计出一个像C++或Java一样的语言......
8、科学家
科学家向来都是一个神圣的称号,要成为科学家,你的贡献必须超越大师,不妨举一些例子。如Diikstra设计了ALGOL语言,提出了程序设计的三种基本结构:顺序、选择、循环,他是可以被称为科学家的。类似的还有:
Don Knuth,奠定数据结构与算法这门学科的基础:巴科斯,发明Fortran语言,提出了巴科斯范式,对高级程序语言的发展起了重要作用;