原文来自:http://www.cnblogs.com/woodhead/archive/2008/10/10/1307824.html

摘要:我把我接触过的有经验的程序员分为三个层次,借用夫子的话来形容这三个层次就是:“而立”,“不惑”和“知天命”。如果想要见识“知天命”级别的程序员的功力,可以仔细研究下例如log4net之类的成熟开源框架。

编了12年的程序,国内国外四处奔波,从“三五个人,十来条枪”的小公司里的程序员一直做到500强企业的系统架构设计师、部门负责人,真是很多感慨。看到院子里大家热火朝天地讨论程序员的年龄和职业通道问题,终于也忍不住想和大家分享下我的一些体会,顺带为我的开发团队打打小广告。

我把我接触过的有经验的程序员分为三个层次,借用夫子的话来形容这三个层次就是:“而立”,“不惑”和“知天命”。

1.而立

这个层次的程序员,对技术的理解大多停留在技术的应用层面上。只重视去学习新的技术,不知道关注自己的代码和设计的质量。把技术的成长单纯的理解为知识的积累,而不是技能的成长。停留在这个层次的程序员往往感觉在从业两三年后技术就没有什么大的进步,甚至有人干了七、八年十年后居然会发出“编程不外乎拖拖控件,设置下框架,再写点逻辑”的感慨。这种程序员真是吃“青春饭”的,干到30来岁还是立不起来,丧失了对技术的热情,到了有家庭的负担,不能再和后生比体力的时候,就只能转行做所谓的“管理”,凭经验和人际关系混日子。要不就转去做点技术支持销售什么的。很不幸,我接触到的多数中国程序员都停滞在这个层次,分析起来,可能和中国社会的浮躁有很大关系。

2.不惑

这个层次的程序员,会自然的将面向对象、设计模式等设计技术应用于自己的代码中,认真考虑并重视设计与代码的质量问题,明白真正的“好程序”大概是怎么样的一个样子。这个阶段的程序员在每个项目都会有一些收获,技能会随着时间不断成长。 对于各种层出不穷的技术,他们不只知其然,还知其所以然,因而可以毫不吃力地掌握新的技术。处于不惑阶段的程序员不吃青春饭,他们价值会随着时间的增长而增长。 达到这个阶段的程序员要少很多,但我认为只要有适当的环境,或者能对技术保持一颗好奇和热情的心,勤于思考,踏踏实实地下功夫,任何人都能走到这个阶段。然而达到下一个阶段就要难得多了,光是努力是不行的,还需天分和积极的思考。

3.知天命

这个阶段的程序员,有丰富的设计经验。面向对象,设计模式等设计技术早已不是问题,达到“得模式而忘模式”的境界。他们所做的设计自然优雅,简洁流畅。编写的代码干净利落,表达力强,往往不需在代码行间写注释即可让人一看即懂。他们已经彻底理解了程序和程序所反映的客观世界之间的关系,总能找到适当的角度后用恰到好处的简洁设计将客观世界计算机化。掌握新技术对于达到“知天命”层次的程序员而言,就像呼吸般自然。他们不只理解新技术的原理,而且对一项技术出现的动机--也就是这项技术企图去解决的问题有深刻的理解,所以往往能够仅凭对新技术简单了解,就能正确决定在什么时候、怎么样去利用这个技术。达到“不惑”阶段的程序员在设计时会把重心放到怎么样完成目标上,而这达到“知天命”层次的程序员会去重点关注过度设计问题。简单来说,“不惑”基本的程序员主要精力放在“加法”上,而“知天命”级别的程序员主要精力会放在“减法”上。他们明白,设计的关键就在“取舍”二字上。到目前为止,我接触过的达到这个层次的程序员屈指可数,每一个都一定是他所在的团队的核心人物,而且如果他沟通能力足够,往往会自然成为团队中系统架构师的角色。知天命的程序员就像陈年普洱茶,越老越香,他们对设计中度的把握会越来越精准,越来越能够做到举重若轻。在大型项目或高难度项目中,他们能发挥普通程序员十几倍甚至几十倍价值。

“而立”,“不惑”和“知天命”这三个阶段虽然是夫子拿来形容年龄的,但在我这里和年龄完全没有关系。我见过很多都接近不惑之年还停留在“而立”阶段的程序员,也见过以仅仅弱冠之年便“知天命”的宝贵人才。

很不幸,目前国内的IT环境,注定在中国“知天命”的程序员就是凤毛麟角。要想达到“知天命”的境界,程序员除了一定的天赋之外,还必须有非常主动积极的态度和热情。这样的人在其它方面肯定也不会差到哪里。国内的很多公司依靠的是关系资源生存,技术的好坏作用不是很大;又或是软件开发理念落后,不给程序员充足的发展空间。所以这些程序员在达到“知天命”的境界之前很多都转去做管理或其它待遇更好的工作去了。

BTW:如果想要见识“知天命”级别的程序员的功力,可以仔细研究下例如log4net之类的成熟开源框架

------------------

有朋友在下面的留言中提到我过于局限到面向对象和设计模式等特定技术中,忽略了程序员还有分工的区别。我简单说明下我的观点:

我感觉软件技术可以分解为“知识性技术”和“技能性技术”两个层面(自己取得名字,可能不是很贴切)。例如驱动开发程序员对操作系统底层的了解、计算机图形开发人员对图形学的了解都算是“知识性技术”。而面向对象,设计模式之类的都算是“技能性技术”。每个程序员肯定是同时具备了上述两种技术才能编出实用的程序。

不同的开发方向,会对“知识性技术”有不同的要求;但无论什么开发方向,都必然对“技能性技术”有要求,系统越大越复杂、需求变化越快,对“技能性技术”的要求就越高。

我在上面讨论的对象是“技能性技术”,我认为不管你做的是什么方向,都必然要涉及到这方面的问题。

目前的软件开发工具绝大多数都是面向对象的,因而我把面向对象技术的修养作为评价的一个重要参考。如果你是做C或者汇编的程序员,大可不必在意我的标准。

另外我讨论的范围也不涉及开发管理,所以需求,过程控制等关键的开发因素不在我的范围内,我只是针对单纯的设计技术进行讨论。

【转载】“而立”,“不惑”和“知天命”--程序员的三个层次相关推荐

  1. 而立,不惑和知天命—程序员的三个层次

    Author:AppleSeeker(冯峰) 我把我接触过的有经验的程序员分为三个层次,借用夫子的话来形容这三个层次就是:"而立","不惑"和"知天命 ...

  2. “而立”,“不惑”和“知天命”--程序员的三个层次

    编了12年的程序,国内国外四处奔波,从"三五个人,十来条枪"的小公司里的程序员一直做到500强企业的系统架构设计师.部门负责人,真是很多感慨.看到院子里大家热火朝天地讨论程序员的年 ...

  3. 程序员算事业单位吗_清北毕业出来的程序员不如三本公务员?网友:你开心就好...

    这个话题可能是老生常谈的话题了,关于职业的优劣性.在老一辈看来,很多所谓的金饭碗都不如铁饭碗,比如做公务员或者在事业单位上班,就是他们眼中的铁饭碗,而那些在名企做高薪程序员却被他们所鄙视:吃青春饭,动 ...

  4. 程序员的马斯洛需求层次

    最近看了篇老外的文章, 仿照马斯洛需求理论, 发明了个代码的需求层次理论, 非常有意思, 这里给大家介绍一下 https://charlax.tumblr.com/post/111338685456/ ...

  5. python什么工作好找女朋友_程序员,三分钟教你用 Python 帮你找一个女朋友

    原标题:程序员,三分钟教你用 Python 帮你找一个女朋友 什么是单身税? 单身税的历史可以追溯到2015年韩国的新政, 低生育率逼得韩国产生了这一政策. 现在我国也要实行这一政策, 很多单身狗就接 ...

  6. 【杂谈】PHP程序员的能力水平层次

    PHP程序员的能力水平层次 前言 之前看过很多篇关于服务端工程师和PHP开发者的能力模型介绍,每篇都对能力有侧重点. 下面我们来详细谈谈以开发能力为基准点的PHP程序员的能力水平层次. 层层递进 1. ...

  7. 转载:什么才是程序员的核心竞争力

    下文转载自http://www.cnblogs.com/ajianbeyourself/p/4189449.html,版权归原作者所有. 文章格式略有编辑,内容稍作整理,应该不影响原意. 1.对人的态 ...

  8. 【转载】如果你身边有程序员的朋友,请善待他们

    2019独角兽企业重金招聘Python工程师标准>>> 作为程序猿世界中的一员,同时也身兼媒体人的我,首先,欢迎您来到程序员的世界,说到程序员,给你的第一印象会是什么呢?情商低.人呆 ...

  9. 转载:一位资深程序员大牛给予Java初学者的学习路线建议

    一位资深程序员大牛给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来 ...

最新文章

  1. script中用php
  2. java——import语句
  3. 为什么阿里巴巴RPC接口不允许使用枚举类型?
  4. 基于决策树的多分类_R中基于决策树的糖尿病分类—一个零博客
  5. 关于页面图表相应式的问题,问题遇见时间,9月1日,到今天9月2日,尚未解决...
  6. PaperNotes(8)-Stein Variational Gradient Descent A General Purpose Bayesian Inference Algorithm
  7. 《高性能路由器 设计与实现》高性能路由器新型体系结构 小记
  8. Ansroid系统(262)---MTK安卓sim卡相关源码分析
  9. C# 对称算法,加密解密类
  10. 【每日算法Day 97】经典面试题:求两个数组最小差
  11. CF1041A Heist
  12. hex文件转bin格式
  13. 回文素数(10亿)—— unfinished
  14. 高数 | 【重积分】线面积分880例题
  15. 我的2018:微信朋友圈的24个瞬间
  16. python最简单的爬取邮箱地址_python3爬取网页中的邮箱地址
  17. macd的python代码同花顺_超牛MACD(代编写程序化交易模型)-同花顺公式 -程序化交易(CXH99.COM)...
  18. 很久以前的一篇对初学Oracle建议的文章
  19. 中国股民心理一——情绪决定输赢?性格影响财富?热衷追涨杀跌?
  20. CSS教程舞蹈风暴,《舞蹈风暴》诚意展现舞蹈精神 “严师”沈伟下场演示舞蹈极致...

热门文章

  1. additivity为false
  2. 存储引擎:MyIsam概述
  3. 猎豹收割移动广告市场,挑战几何?
  4. 2022年12月3日(星期六):骑行张家坝(赏银杏)
  5. openstack——Glance镜像服务
  6. oracle数据库只能用127.0.0.1和localhost登录,用ip无法登陆,提示ora12541监听错误解决办法
  7. agGrid设置对指定行不能选中checkbox
  8. windows@网络防火墙@软件联网控制@netsh advfirewall firewall
  9. 为什么巨头要血拼「社区团购」?
  10. 高德地图 GPS定位 轨迹纠偏