程序员柠檬橙总结了程序员的十大层次,快来看看你能到第几层?
第一层:菜鸟。
了解一些基本知识,掌握一门编程语言,例如C、C++。
第二层:大虾。
熟练掌握一门编程语言,掌握STL的基本实现和使用方法,掌握多线程编程基础知识,掌握一种开发环境,再对各种操作系统的API都去使用一下。
第三层:牛人
以熟练掌握C++编程语言为例,除了学一些基础性的C++书籍如《C++Primer》,《EffectiveC++》,《ThinkinC++》,《ExceptionC++》等之外,更重要的是需要了解C++编译器的原理和实现机制,了解操作系统中的内部机制如内存管理、进程和线程的管理机制,了解处理器的基础知识和代码优化的方法,更深入地学习更多的数据结构与算法,掌握更深入的测试和调试知识以及质量管理和控制方法,对各种设计方法有更好的理解等。
第四层:大牛
要能做牛人们做不了的事情,解决牛人们解决不了问题。比如牛人们通常都不懂写操作系统,不会写编译器,不懂得TCP/IP协议的底层实现,如果你有能力将其中的任何一个实现得象模象样的话,那么你就从牛人升级为"大牛"了。
第五层:专家
专家需要做基础研究,在计算机里,最重要的就是"计算"二字,程序员要做基础研究,主要的内容就是研究非数值"计算"。软件需求、设计、测试、调试、评估、质量控制、软件工程等本质上属于非数值计算的范畴,甚至芯片硬件设计也同样牵涉到非数值计算。
第六层:学者
学者所做的事情,通常都是在前人的基础上,进行一些小的优化和改进,例如别人发明了链式基数排序的方法,你第1个发现使用一定的方法,可以用数组替代链表进行基数排序,性能还能得到进一步提高。
第七层:大师
你如果能象Hoare一样设计出一个快速排序的算法;或者象EugeneW.Myers一样设计出了一个用编辑图的最短路径模型来解决diff问题的算法;或者象M.J.D.Powell一样提出了一个能够处理非线性规划问题的SQP方法;或者你发现基于比较的排序算法,它的复杂度下界为O(NLogN);或者你发现用栈可以将递归的算法变成非递归的;或者你设计出一个红黑树或者AVL树之类的查找结构;或者你设计出一个象C++或Java一样的语言;或者你发明了UML...你就爬到了第7层,晋升为"大师"了。
第八层:科学家
如果你象Dijkstra一样设计了ALGOL语言,提出了程序设计的三种基本结构:顺序、选择、循环,那么你可以爬到第8层楼来。顺便说一下,即使抛开这个成果,Dijkstra凭他的PV操作和信号量概念的提出,同样可以进到这层楼。
第九层:大科学家
如果你能够彻底解决自然语言理解(机器翻译)这门学科中的核心问题,或者你在人工智能或者机器视觉(图像识别)方面有突破性的发现,那么你同样可以轻易地晋升为“大科学家”。
第十层:大哲
看了这层楼的名字“大哲”,可能不少人已经猜到了这层楼的秘密,那就是你的成果必须要上升到哲学的高度,你才有机会能进到这层来。
看了这么多,你到了第几层?