软件工程师的进化

软件工程师中总有一个回避不了的命题——

一个人程序员的职业生命到底有多长,能一直开发到多少岁。

这个问题复杂性来自于两个方面,一方面,由于IT产业是新兴的,工作了2,30年的程序员非常少,即使有,也早担任了各个IT公司的部长,经理职务,所以参照物很少。

另外一方面,就是每个人对自己有朝一日赶不上软件发展的恐惧。因为大量的新技术,使得工作十几年的和工作几年的新人常常站在同一起跑线上。比如最近的smartphone开发。

每个程序员,除非去改行,否则都需要自己去回答这个问题。

有人,从一开始就把项目管理,行政管理作为自己的志向。一旦机会合适,削着脑袋也要进入管理层。

也有人,试着突破自己,让自己在系统分析,框架设计上站立制高点。

回到我的身边,一群软件外包公司的程序员。他们绝大部分还在基层不断耕耘,甚至都没办法控制自己的职业路线,只能随着随机而至的项目,不断修改自己的知识结构。常常地结果是成了万能的汽车修理工,但永远成为不了设计蓝图的汽车工程师。

那么结论,是不是除了少数几个人成为管理层以外,其他人对于这个命题,只能无可奈何,随波逐流呢。

我希望帮助大家一起找到答案。

首先我觉得,试着去掌握跨行业,跨专业的复合知识。为了提高大家的意识,我告诉团队成员,不要再给诸如“这个是Desinger的事情,我们又不是这个专业,我们不懂”这种心理暗示,一旦这么做了,自己发展就会被额外加上一个紧箍咒。

最近我准备组织开展了“UI Sketching(设计草图)”,“Photsohop的基本应用”,“Inception(思想注入)演练”,“人机界面设计要素”,“UI Desing Pattern”等讲座。到目前为止,已经有很多童鞋已经意识到自己的知识的局限性,都在有意识地从纯粹的编码学习到关联上游技术的学习和了解,并在一定深入后,表现出了对这些技术的极大的兴趣。

其次,对于软件工程师,最难掌握地不是某一项开发技术,而是一种高端地开发意识和整体开发流程的理解。把眼光看得更高些,看得更广就能知其然而知其所以然。每一次用户过来的修改,都在询问缘由的基础上,站在用户的立场上了解这个改变真正的根源,或者是市场发面的,或者是人机体验上的。只有这样,才有可能自己提出含金量高的修改建议,让客户对你刮目相看。通过一点一滴地积累,逐渐与客户建立起更加积极有效地交流和共鸣。而这个最后的目的,就是自己从单纯技术积累中解脱出来,获得真正经验值的积累和客户的积累,向教师,医生一样,成为越老越吃香的新型全面的软件工程师,用自己的完美人生来回答最开始的命题。