[晓说]程序员的十层楼

博主作为一个刚进第二层的渣渣,毫无战斗力,努力赚经验吧~

原文地址:[晓说]程序员的十层楼

自西方文艺复兴以来,中国在自然科学方面落后西方很多,软件领域也不例外。当然现在中国的许多程序员们对此可能有许多不同的意见,有些人认为中国的程序员水平远落后于西方,有些则认为中国的程序员个人能力并不比西方的程序员差,只是整个软件产业落后而已。

那么,到底中国的程序员水平比西方程序员水平差,还是中国有许多优秀的程序员达到或超过了西方程序员同等水平呢?要解决这个问题,必须先知道程序员有多少种技术层级,每个层级需要什么样的技术水平,然后再比较中国和西方在各个技术层级的人数,就可以知道到底有没有差距,差距有多大。

当然,对于如何划分程序员的技术层级,不同公司或不同人会有不同的划分标准,下面的划分仅代表个人的观点,如有不当之处,还请砸板砖予以纠正。

第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://softwareblogs-zho.intel.com/)和多核论坛(http://forum.csdn.net/Intel/IntelMulti-core/)去看看相关文章,再买上几本相关的书籍学习一下。

在国内, 一旦成为”牛人”,通常可以到许多知名的公司里去,运气好者可以挂上一个架构师的头衔,甚至挂上一个”首席架构师”或者”首席xx学家”的头衔也不足为奇。有不少爬到这层的人就以为到了楼顶了,可以眼睛往天上看了,开始目空一切起来,以为自己什么都可以做了,什么都懂了,经常在网络上乱砸板砖是这个群体的最好写照。由此也看出,国内的牛人数量仍然众多,远多于西方的牛人数量,在这层上仍然是领先的。

也有不少谦虚的”牛人”,知道自己现在还不到半桶水阶段。他们深知爬楼的游戏就像猴子上树一样,往下看是笑脸,往上看是屁股。为了多看笑脸,少看屁股,他们并没有在此停步不前,而是继续寻找到更上一层的楼梯,以便继续往上爬。

第4层 大牛

从第3层爬到第4层可不像上面说过的那几层一样容易,要成为大牛的话,你必须要能做牛人们做不了的事情,解决牛人们解决不了问题。比如牛人们通常都不懂写操作系统,不会写编译器,不懂得TCP/IP协议的底层实现,如果你有能力将其中的任何一个实现得象模象样的话,那么你就从牛人升级为”大牛”了。

当然,由于各个专业领域的差别,这里举操作系统、编译器、TCP/IP协议只是作为例子,并不代表成为”大牛”一定需要掌握这些知识,以时下热门的多核编程来说,如果你能比牛人们更深入地掌握其中的各种思想原理,能更加自如的运用,并有能力去实现一个象开源项目TBB库一样的东西,也可以成为”大牛”,又或者你能写出一个类似Apache一样的服务器,或者写出一个数据库,都可以成为”大牛”。

要成为”大牛”并不是一件简单的事情...

查看剩余文章->查看原文

时间: 2024-08-07 21:20:19

[晓说]程序员的十层楼的相关文章

程序员的十层楼

第1层 菜鸟 第1层楼属于地板层,迈进这层楼的门槛是很低的.基本上懂计算机的基本操作,了解计算机专业的一些基础知识,掌握一门基本的编程语言如C/C++,或者Java,或者JavaScript,...,均可入门迈进这层. 在这层上,中国有着绝对的优势,除了从计算机专业毕业的众多人数外,还有大量的通信.自动化.数学等相关专业的人士进入这一行,此外还有众多的其他专业转行的人士,人数绝对比西方多出甚多.并且还有一个优势就是我们这层人员的平均智商比西方肯定高. 没有多少人愿意一辈子做菜鸟,因为做"菜鸟&q

程序猿的十层楼(举头望银河,低头撸代码)

这篇博文是很早一个同学推荐的,十分有意思.我觉得时常翻出来过一眼有助于戒骄戒躁. 今天我把它搬到自己的领地,再一次举头仰望....这么燥热的天气,看完凉快了很多~~ 原文的链接:https://www.cnblogs.com/flish/archive/2010/12/04/1896273.html 正文 第1层 菜鸟 第1层楼属于地板层,迈进这层楼的门槛是很低的.基本上懂计算机的基本操作,了解计算机专业的一些基础知识,掌握一门基本的编程语言如C/C++,或者Java,或者JavaScript,

程序员的十大烦恼

10. 注释 - 只解释了"how"却没有解释"why"入门级的编程课程通常会教育学生们写代码前先写注释.而且要尽量多注释. 这种教育的出发点是"多注释肯定比少注释好.少注释肯定比没注释好".可不幸的是,很多的程序员把这当成了一种任务,对每一行代码都注释一下. Java code? 1 2 3 4 5 6 r = n / 2; // 让 r 等于 n 除以 2     // 当 r - (n/r) 大于 t 时进行循环   while ( abs

优秀程序员必备十大习惯

想成为一个优秀的软件开发人员,在今天,你该怎样发展你的职业生涯?这个是我总结的优秀程序员必备十大习惯.按照这些技巧和规则,你可以改善你的现状,由一个普通的程序员,成为一名优秀的程序员. 学会学习 作为开发者,就算是你有了3-5年的工作经验,你还是需要不断地学习,因为你在计算机这个充满创造力的领域,每天都会有很多很多的新事物出现,你需要跟上时代的步伐.你需要去接触新的程序语言,了解正在发展中的程序语言,以及一些编程框架.还需要去阅读一些业内的新闻,并到一些热门的社区去参与在线的讨论,这样你才能明白

程序员的十大思维误区

作为老码农老程序员,日常工作中打交道最多的也是程序员,在这个过程中,我发现不少程序员在技术.产品等方面的思维有各种各样的小问题.现在我就来回忆一下,把这些我认为不太好的思维习惯记录下来,在提醒自己的同时,也供程序员朋友们参考,不必对号入座,有则改之,无则加勉,或者你甚至认为这些不是思维误区都可以的,我也不知道起怎么样的标题比较合适,且称“程序员的十大思维误区”吧,祝阅读愉快! 1. 测试人员不按我的实现来测 前端界面有几个下拉列表框,需要选择后才能点“提交”按钮,但前端的实现是,即使不选择下拉框

一个程序员的十年总结

展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告 走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的10年的路程,有些心得体会你可以借鉴一下,觉得说得有道理的你就接纳,觉得说得没道理的,你就抛弃,以下是我发自内心的,给大家的忠告,特别是针对那些小弟弟妹妹们. 01. 自己的户口档案.养老保险.医疗保险.住房公积金一定要保管好.由于程序员行业每年跳槽一次,我不隐瞒大家,我至少换过5个以上的单位,这期间

奋斗吧,程序员——第二十九章 伤心桥下春波绿,疑是惊鸿照影来

手机对我们的开发板按下红外发送键,很快一张图片从屏幕上显示出来,大功告成! 虽然代码还不能发布,但是看到成果的那一刻,内心还是非常激动的. 证明现在的我已非吴下阿蒙. 可惜没人和我分享胜利的喜悦,现在已是深夜. 最近一段时间,陈曦出差跑业务去了. 我打了个哈欠,终于可以美美的睡一觉了. 记得刚开始写代码的时候,有一次我的代码把系统搞死了,嘉庆看了一眼,云淡风轻地在代码里加了个sleep(1)解决问题,我才明白原来睡眠是这么重要的事情. 不光线程要睡觉,人更要睡觉. 因为太晚了,我决定不回家,直接

程序员的十大谎言

http://www.aqee.net/what-are-the-most-common-lies-told-by-programmers/国外知名的问答网站Quora上最近有人提出一个问题:程序员们最常说的谎话是什么? 首先,这个问题本身就很有意思,做码农这一行当的人总喜欢挖苦自己,从自身找乐子,就像<软件纠错的六个阶段>,<当程序出问题时程序员最喜欢说的20句话>等就是典型的例子,也许是因为这个工种整天是对着机器而无聊的原因吧. 问这个问题的作者首先自己归纳了一下常见的谎言:

程序员的十大任务,你完成了吗?

新的一周,你有没有给自己定好本周的任务?但是,作为程序员,你知道你必须完成的十大任务,看看你完成了没有? 程序员最艰巨的任务跟编写代码没有多少关系.编码是逻辑思路的一种实践,这跟程序员日常工作中的其它任务比起来相对简单.如果你认为自己还是一个水平一般的程序员,在你真正的能进入到高手行列前,请确保你已经克服了下列晋级的障碍. 1. 解释你在干什么 解释软件开发过程是一个很困难的事情.那些非程序员职业的人也许知道很多关于编程的事情,但很显然,他们不会编程.对于他们来说,我们的生活就是在一间黑暗的屋子