欢迎来到天天文库
浏览记录
ID:35494905
大小:60.09 KB
页数:3页
时间:2019-03-25
《“而立”,“不惑”和“知天命”--程序员的三个层次》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、“而立”,“不惑”和“知天命”••程序员的三个层次编了12年的程序,国内国外四处奔波,从“三五个人,十来条枪”的小公司里的程序员一直做到500强金业的系统架构设计师、部门负责人,真是很多感慨。看到院子里人家热火朝天地讨论程序员的年龄和职业通道问题,终于也忍不住想和人家分享下我的一些体会,顺带为我的开发因队打打小广告。我把我接触过的冇经验的程序员分为三个层次,借用夫了的话来形容这三个层次就是:“而立”,“不惑”和“知天命”。1.而立这个层次的程序员,对技术的理解大多停留在技术的应用层面上。只重视去学习新的技术
2、,不知道关注白己的代码和设计的质量。把技术的成长单纯的理解为知识的积累,而不是技能的成长。停留在这个层次的程序员往往感觉在从业两三年后技术就没有什么人的进步,甚至育人干了七、八年十年后居然会发出“编程不外乎拖拖控件,设置下框架,再写点逻辑”的感慨。这种程序员真是吃“青春饭”的,干到30來岁还是立不起來,丧失了对技术的热情,到了冇家庭的负担,不能再和后牛比体力的时候,就只能转行做所谓的“管理”,凭经验和人际关系混日子。要不就转去做点技术支持销借什么的。很不幸,我接触到的多数屮国程序员都停滞在这个层次,分析起来
3、,可能和中国社会的浮躁有很大关系。2.不惑这个层次的程序员,会自然的将血向对象、设计模式等设计技术应用于自己的代码中,认真考虑并巫视设计与代码的质量问题,明门真正的“好程序”大概是怎么样的一个样子。这个阶段的程序员在每个项目都会冇一些收获,技能会随着时间不断成长。对于各种层岀不穷的技术,他们不只知其然,还知其所以然,因而可以毫不吃力地掌握新的技术。处于不惑阶段的程序员不吃青春饭,他们价值会随看时间的增长而增长。达到这个阶段的程序员要少很多,但我认为只要有适当的环境,或者能对技术保持一颗好奇和热情的心,勤于思
4、考,踏踏实实地下功夫,任何人都能走到这个阶段。然而达到下一个阶段就耍难得多了,光是努力是不行的,还需天分和积极的思考。3.知天命这个阶段的程序员,有丰富的设计经验。而向对象,设计模式等设计技术早已不是问题,达到“得模式而忘模式”的境界。他们所做的设计B然优雅,简洁流畅。编写的代码干净利落,表达力强,往往不需在代码行间写注释即町让人一看即懂。他们己经彻底理解了程序和程序所反映的客观世界Z间的关系,总能找到适当的角度后用恰到好处的简洁设计将客观壯界计算机化。掌握新技术対于达到“知天命”层次的程序员而言,就像呼吸
5、般白然。他们不只理解新技术的原理,而且对一项技术出现的动机••也就是这项技术企图去解决的问题有深刻的理解,所以往往能够仅凭对新技术简单了解,就能止确决立在什么时候、怎么样去利川这个技术。达到“不惑”阶段的程序员在设计时会把重心放到怎么样完成目标上,而这达到“知天命”层次的程序员会去重点关注过度设计问题。简单來说,“不惑”基本的程序员主要精力放在“加法”上,而“知天命”级別的程序员主要精力会放在“减法”上。他们明门,设计的关键就在“取舍”二字上。到目前为止,我接触过的达到这个层次的程序员屈指可数,每一个都一定
6、是他所在的因队的核心人物,而且如果他沟通能力足够,往往会口然成为团队中系统架构师的角色。知天命的程序员就像陈年普洱茶,越老越香,他们对设计屮度的把握会越來越精准,越來越能够做到举重若轻。在大型项目或高难度项目中,他们能发挥普通程序员十儿倍其至儿十倍价值。“而立”,“不惑”和“知天命”这三个阶段虽然是夫子拿來形容年龄的,但在我这里和年龄完全没有关系。我见过很多都接近不惑之年还停留在“而立”阶段的程序员,也见过以仅仅弱冠之年便“知天命”的宝贵人才。很不幸,目前国内的IT环境,注能在中国“知天命”的程序员就是凤毛
7、麟角。耍想达到“知天命”的境界,程序员除了一定的天赋Z外,还必须有非常主动积极的态度和热情。这样的人在其它方面肯定也不会差到哪里。国内的很多公司依靠的是关系资源生存,技术的好坏作川不是很人;又或是软件开发理念落后,不给程序员充足的发展空间。所以这些程序员在达到“知天命”的境界Z前很多都转去做管理或其它待遇更好的工作去了。作为一个过来人,我一直希望为改变这种状态做些什么。目前我加入了i家冇雄厚资金支持的创业公司,计划建立一个小而精的产品研发团队。如果你自认已经达到“不惑”的境界,而又不知道该如何在技术上取得突
8、破的话,可以考虑下加入我的团队。我们公司忖前还在昆明办公,在不久的将來会搬到发达地区。BTW:如果想耍见识“知天命”级别的程序员的功力,可以仔细研究下例如Iog4net之类的成熟开源框架有朋友在下面的留言中提到我过于局限到面向对象和设计模式等特定技术小,忽略了程序员还有分工的区别。我简单说明下我的观点:我感觉软件技术可以分解为“知识性技术”和“技能性技术”两个层而(H己取得名字,可能不是很贴切)。例如驱动开发程序
此文档下载收益归作者所有