第1层 菜鸟程序员
第1层楼属于地板层,迈进这层楼的门槛是很低的。基本上懂计算机的基本操做,了解计算机专业的一些基础知识,掌握一门基本的编程语言如C/C++,或者Java,或者JavaScript,...,都可入门迈进这层。算法
第2层 大虾编程
从第1层爬到第2层相对容易一些,以C/C++程序员为例,只要熟练掌握C/C++编程语言,掌握C标准库和经常使用的各类数据结构算法,掌握STL的基本实现和使用方法,掌握多线程编程基础知识,掌握一种开发环境,再对各类操做系统的API都去使用一下,搞网络编程的固然对socket编程要好好掌握一下,而后再学习一些面向对象的设计知识和设计模式等,学习一些测试、软件工程和质量控制的基本知识,大部分人通过2~3年的努力,均可以爬到第2层,晋升为"大虾"。设计模式
第3层 牛人网络
因为"大虾"们常常被一些疑难问题给卡住,因此有了"大虾"们只好继续学习,他们须要将原来所学的知识进一步熟练掌握,好比以熟练掌握C++编程语言为例,除了学一些基础性的C++书籍如《C++ Primer》,《Effective C++》,《Think in C++》,《Exception C++》等以外,更重要的是须要了解C++编译器的原理和实现机制,了解操做系统中的内部机制如内存管理、进程和线程的管理机制,了解处理器的基础知识和代码优化的方法,此外还须要更深刻地学习更多的数据结构与算法,掌握更深刻的测试和调试知识以及质量管理和控制方法,对各类设计方法有更好的理解等。数据结构
第4层 大牛多线程
从第3层爬到第4层可不像上面说过的那几层同样容易,要成为大牛的话,你必需要能作牛人们作不了的事情,解决牛人们解决不了问题。好比牛人们一般都不懂写操做系统,不会写编译器,不懂得TCP/IP协议的底层实现,若是你有能力将其中的任何一个实现得象模象样的话,那么你就从牛人升级为"大牛"了。socket
第5层 专家数据结构和算法
当大牛们真正动手作一个操做系统或者相似的其余软件时,他们就会发现本身的基本功仍然有不少的不足。之内存管理为例,若是直接抄袭Linux或者其余开源操做系统的内存管理算法,会被人看不起的,若是自动动手实现一个内存管理算法,他会发现如今有关内存管理方法的算法数量众多,本身并无所有学过和实践过,不知道到底该用那种内存管理算法。编程语言
第6层 学者
当"专家"们想继续往上一层楼爬时,他们几乎一眼就能够看到楼梯的入口,不过令他们吃惊的是,楼梯入口处竖了一道高高的门槛,上面写着"创新"二字。不幸的是,大多数人在爬到第5层楼时已经体能消耗过分,无力翻过这道门槛。
第7层 大师
从第6层楼爬到第7层楼,并无多少捷径可走,主要看你有没有足够的能量。你若是能象Hoare同样设计出一个快速排序的算法;或者象Eugene W. Myers同样设计出了一个用编辑图的最短路径模型来解决diff问题的算法;或者象M.J.D. Powell同样提出了一个可以处理非线性规划问题的SQP方法;或者你发现基于比较的排序算法,它的复杂度下界为O(NLogN);或者你发现用栈能够将递归的算法变成非递归的;或者你设计出一个红黑树或者AVL树之类的查找结构;或者你设计出一个象C++或Java同样的语言;或者你发明了UML;...,你就爬到了第7层,晋升为"大师"了。
第8层 科学家
科学家向来都是一个神圣的称号,所以我把他放在了“大师”之上。要成为科学家,你的贡献必须超越大师,不妨随便举一些例子。
若是你象Dijkstra同样设计了ALGOL语言,提出了程序设计的三种基本结构:顺序、选择、循环,那么你能够爬到第8层楼来。顺便说一下,即便抛开这个成果,Dijkstra凭他的PV操做和信号量概念的提出,一样能够进到这层楼。
若是你象Don Knuth同样,是数据结构与算法这门学科的重要奠定者,你也能够进到这层楼来。固然,数据结构和算法这门学科不是某我的开创的,是许多大师和科学家集体开创的。
第9层 大科学家
进入这层楼的门槛一般须要一些运气,好比某天有个苹果砸到你头上时,你碰巧发现了万有引力,那么你能够进到这层楼来。固然,万有引力几百年前就被人发现了,若是你如今处处嚷嚷着说你发现了万有引力,恐怕立刻会有人打110,而后警察会把你送到不正常人类的汇集地去。所以,这里举万有引力的例子,只是说你要有相似的成就才能进到这层楼来。