程序员的十层楼 (第一、二、三层):
http://blog.sina.com.cn/s/blog_496316280100e998.html
程序员的十层楼 (第四、五层):
http://blog.sina.com.cn/s/blog_496316280100e99d.html
程序员的十层楼 (第六、七层):
http://blog.sina.com.cn/s/blog_496316280100e99g.html
程序员的十层楼 (第八、九层):
http://blog.sina.com.cn/s/blog_496316280100e99m.html
程序员的十层楼 (第十层):
http://blog.sina.com.cn/s/blog_496316280100e99n.html
程序员的十层楼 (第十一层):
http://blog.sina.com.cn/s/blog_496316280100e99q.html
自西方文艺复兴以来,中国在自然科学方面落后西方很多,软件领域也不例外。当然现在中国的许多程序员们对此可能有许多不同的意见,有些人认为中国的程序员水平远落后于西方,有些则认为中国的程序员个人能力并不比西方的程序员差,只是整个软件产业落后而已。
那么,到底中国的程序员水平比西方程序员水平差,还是中国有许多优秀的程序员达到或超过了西方程序员同等水平呢?要解决这个问题,必须先知道程序员有多少种技术层级,每个层级需要什么样的技术水平,然后再比较中国和西方在各个技术层级的人数,就可以知道到底有没有差距,差距有多大。
当然,对于如何划分程序员的技术层级,不同公司或不同人会有不同的划分标准,下面的划分仅代表个人的观点,如有不当之处,还请砸板砖予以纠正。
第1层 菜鸟
第1层楼属于地板层,迈进这层楼的门槛是很低的。基本上懂计算机的基本操作,了解计算机专业的一些基础知识,掌握一门基本的编程语言如C/C++,或者Java,或者JavaScript,...,均可入门迈进这层。
在这层上,中国有着绝对的优势,除了从计算机专业毕业的众多人数外,还有大量的通信、自动化、数学等相关专业的人士进入这一行,此外还有众多的其他专业转行的人士,人数绝对比西方多出甚多。并且还有一个优势就是我们这层人员的平均智商比西方肯定高。
没有多少人愿意一辈子做菜鸟,因为做"菜鸟"的滋味实在是不咋的,整天被老大们吆喝着去装装机器,搭建一下测试环境,或者对照着别人写好的测试用例做一些黑盒测试,好一点的可以被安排去写一点测试代码。当然如果运气"好"的话,碰到了国内的一些作坊式的公司,也有机会去写一些正式的代码。
所以,菜鸟们总是在努力学习,希望爬更高的一层楼去。
第2层 大虾
从第1层爬到第2层相对容易一些,以C/C++程序员为例,只要熟练掌握C/C++编程语言,掌握C标准库和常用的各种数据结构算法,掌握STL的基本实现和使用方法,掌握多线程编程基础知识,掌握一种开发环境,再对各种操作系统的API都去使用一下,搞网络编程的当然对socket编程要好好掌握一下,然后再学习一些面向对象的设计知识和设计模式等,学习一些测试、软件工程和质量控制的基本知识,大部分人经过2~3年的努力,都可以爬到第2层,晋升为"大虾"。
中国的"大虾"数量和"菜鸟"数量估计不会少多少,所以这层上仍然远领先于西方。
大虾们通常还是有些自知之明,知道自己只能实现一些简单的功能,做不了大的东西,有时候还会遇到一些疑难问题给卡住,所以他们对那些大牛级的人物通常是非常崇拜的,国外的如Robert
C. Martin、Linus
Torvalds,国内的如求伯君、王志东等通常是他们崇拜的对象。其中的有些人希望有一天也能达到这些大牛级人物的水平,所以他们继续往楼上爬去。
第3层 牛人
由于"大虾"们经常被一些疑难问题给卡住,所以有了"大虾"们只好继续学习,他们需要将原来所学的知识进一步熟练掌握,比如以熟练掌握C++编程语言为例,除了学一些基础性的C++书籍如《C++
Primer》,《Effective C++》,《Think in C++》,《Exception
C++》等之外,更重要的是需要了解C++编译器的原理和实现机制,了解操作系统中的内部机制如内存管理、进程和线程的管理机制,了解处理器的基础知识和代码优化的方法,此外还需要更深入地学习更多的数据结构与算法,掌握更深入的测试和调试知识以及质量管理和控制方法,对各种设计方法有更好的理解等。
学习上面说的这些知识不是一挥而就的,不看个三五十本书并掌握它是做不到的。以数据结构算法来说,至少要看个5~10本这方面的著作;以软件设计来说,光懂结构化设计、面向对象设计和一些设计模式是不够的,还要了解软件架构设计、交互设计、面向方面的设计、面向使用的设计、面向数据结构算法的设计、情感化设计等,否则是很难进到这个楼层的。
当然除了上面说的知识外,大虾们还需要去学习各种经验和技巧。当然这点难不倒他们,现在出版的书籍众多,网络上的技术文章更是不胜数,然后再去各种专业论坛里泡一泡,把这些书籍和文章中的各种经验、技能、技巧掌握下来,再去学习一些知名的开源项目如Apache或Linux操作系统的源代码实现等。此时对付一般的疑难问题通常都不在话下,菜鸟和大虾们会觉得你很"牛",你也就爬到了第3层,晋升为"牛人"了。
看了上面所讲的要求,可能有些大虾要晕过去了,成为牛人要学这么多东西啊!要求是不是太高了?其实要求一点也不高,这么点东西都掌握不了的话,怎么能让别人觉得你"牛"呢?
需要提一下的是,进入多核时代后,从第2层爬到第3层增加了一道多核编程的门槛。当然要迈过这道门槛并不难,已经有很多前辈高人迈进了这道门槛,只要循着他们的足迹前进就可以了。想迈进这道门槛者不妨去学习一下TBB开源项目的源代码(链接:http://www.threadingbuildingblocks.org/),然后上Intel的博客(http://software.intel.com/zh-cn/blogs/)和多核论坛(http://forum.csdn.net/Intel/IntelMulti-core/)去看看相关文章,再买上几本相关的书籍学习一下。
在国内,一旦成为"牛人",通常可以到许多知名的公司里去,运气好者可以挂上一个架构师的头衔,甚至挂上一个"首席架构师"或者"首席xx学家"的头衔也不足为奇。有不少爬到这层的人就以为到了楼顶了,可以眼睛往天上看了,开始目空一切起来,以为自己什么都可以做了,什么都懂了,经常在网络上乱砸板砖是这个群体的最好写照。由此也看出,国内的牛人数量仍然众多,远多于西方的牛人数量,在这层上仍然是领先的。
也有不少谦虚的"牛人",知道自己现在还不到半桶水阶段。他们深知爬楼的游戏就像猴子上树一样,往下看是笑脸,往上看是屁股。为了多看笑脸,少看屁股,他们并没有在此停步不前,而是继续寻找到更上一层的楼梯,以便继续往上爬。
分享到:
相关推荐
本书《程序员十层楼》通过对程序员技术能力的细致划分,提出了一个包含十个层次的程序员技能体系,以帮助读者更清晰地了解和定位自己的技术水平。在这一体系中,作者周伟明从自身丰富的软件开发经验和对程序员职业的...
在IT行业中,程序员被视为一座不断攀升的“十层楼”,每一层都代表了程序员的不同阶段和技能水平。这个概念形象地描绘了程序员的成长路径,激励着我们不断学习和提升自己。下面,我们将详细探讨这十层楼的具体内容,...
### 程序员十层境界详解 #### 第一境界:初学者 在这个阶段,程序员刚刚踏入编程领域,对各种编程语言如C/C++、Java、JavaScript等有初步的了解。这一阶段的重点在于掌握基本的语法和编程逻辑,能够编写简单的程序...
### 程序员的十层楼:技术成长之路 #### 第一层:菜鸟阶段 - **定义**:作为程序员职业生涯的起步阶段,菜鸟通常具备基本的计算机操作技能,并且掌握了一门或多门编程语言(例如C/C++、Java、JavaScript等)的基础...
第一层:初学者 这一层次的程序员刚刚接触编程,对编程语言和基本概念有初步认识。他们通常会学习一种或几种主流的编程语言,如Python、Java或C++,并尝试通过编写简单的程序来理解和实践编程思维。 第二层:码农 ...
#### 第一层:初学者 处于这一层次的程序员通常是刚入门的新手,对于编程语言如C/C++、Java、JavaScript等有一定的了解,但缺乏实际项目经验。他们需要学习如何编写简单的程序,并理解基本的数据结构与算法。此阶段...
### 程序员编程艺术 第一~二十七章集锦与总结 #### 知识点概述 《程序员编程艺术》是由July及其团队——编程艺术室共同创作的一部旨在提升编程技能与解决问题能力的作品集。从2011年4月14日开始创作直至2012年4月3...
第一层:菜鸟 这是程序员入门的阶段,门槛较低,主要要求掌握计算机基础知识和一门编程语言,如C/C++、Java或JavaScript。中国在这一层次拥有显著优势,不仅有大量计算机专业的毕业生,还有来自通信、自动化、数学等...
- **第一章**:左旋转字符串 - **第二章**:字符串是否包含及相关问题扩展 - **第三章**:寻找最小的k个数及其后续篇章 - **第四章**:现场编写类似`strstr/strcpy/strpbrk`的函数 - **第五章**:寻找满足条件...
路由器、网桥和中继器分别工作在 OSI 的第三层、第二层和第一层。 六、计算机硬件与运算逻辑 机器数的补码和原码表示中,对零的表示可能不唯一。在 4 位有符号定点补码数据表示中,状态寄存器的 Z、N、V 标志位可以...
在IT行业中,一份精心制作的简历是求职者打开成功之门的关键。对于程序员而言,简历不仅需要展示技术能力,还要突出项目经验、学习能力和...记住,简历是你与潜在雇主的第一接触,务必让它充分展示你的专业性和潜力。
3. **数据库设计**:理解ER模型,以及从ER模型到关系模式的转换,探讨数据库的范式理论(第一范式至第三范式)。 4. **SQL查询**:学习SQL的SELECT语句,包括子查询、连接操作、聚合函数和分组,以及创建、修改和...
- **主要内容**:全书分为两大部分,第一部分介绍了程序结构与执行的基础概念;第二部分则深入探讨了C语言程序在机器层面的表示形式。 ### 知识点二:计算机信息的基本组成 **标题**:“1.1 信息是上下文中的位” ...