35岁的年龄,对只会编代码的程序员来说可能是来到了职业生涯的转换点,但对需求分析师、软件设计师来说,可能是刚刚来的职业发展辉煌期的入口。
程序员这个工作能干多久?可能选学计算机专业时大家都没有特别考虑过这个问题,通常入职的前3年主要是掌握实用的编程技术,这段时间对写程序的兴趣最高、干劲最足。到了5年左右常用的编程技术基本上都掌握了,到了7~8年时对编程就没有了兴奋感,过了10年后对编程工作可能就感到疲倦了。由于现在的软件开发分工越来越细化,程序员有了新任务,基本上都是从自己积累的程序中找相似的,或是从开源网站上找一段可用的程序,然后再根据客户需要进行修改。做的工作简单重复,每个程序员知识面越来越窄,个人的价值也就越来越低了。
对程序员35岁的年龄门槛是从哪里来的也无从查证,但我在90年代日本的IT招聘广告上确实是经常看到明确表示着 “招聘程序员,年龄35岁止” 的条件。这个问题已存在多年,对于这个现象网上讨论的也非常多了,多数的表达都是对大龄程序员的同情、无奈。网络上给出的建议也大都是让程序员向管理岗(项目经理、产品经理)方向发展、或是干脆转行,但是一旦转行就意味着要放弃自己的专长和积累,大学4年、编程10年,扔掉人生最精彩时间学习到的东西一切从头再来吗?难道程序员就没有其他的发展方向了呢?当然不是。
客观地说,程序员的工作是处在软件实现过程末端的(当然测试员在最后面),他的前端还有架构师→分析师→咨询师等岗位,而且位置越靠前端对系统的客户价值影响越大,当然需要的综合能力也就越高(包括编程、架构、分析、咨询等)。按照这个方向程序员可以找到一个将自己积累的知识和经验价值最大化的岗位,这样的岗位可以做得长久、且无需再为将来的生活和工作担忧、焦虑。
1.留在软件公司发展,走向设计师、分析师和咨询师
软件开发是没有完全一样内容的,每一次的开发都是一次“创造、创新”的过程,在这个过程中,架构师、分析师与程序员起着不同的作用,前者就如同老中医,积累越多,能力越强,越老越值钱,而后者则相反。
我在软件企业熟悉很多程序员,我一直在帮助他们做未来的职业规划,初期他们不理解,甚至看不上分析与设计的工作,认为软件公司懂编码的是硬功夫,一个晚上能把程序做出来的是高手。但是随着系统的规模越来越庞大、逻辑越来越复杂,他们才感受到自己的作用越来越小,价值也越来越低,此时就理解了我的意图。他们通过在编程中努力掌握需求分析和软件设计的技能,使自己的视野越来越广,在做了7~8年的编码工作后转入了架构师、分析师的岗位。
架构师、分析师的岗位数量远多于管理岗,且凭本事吃饭不用看人脸色,进入了这样的岗位后竞争就会变少,这些岗位的知识只需要增加而不需要换代,没有了程序员那种时刻担心自己跟不上技术进步的焦虑,而且随着经历的丰富慢慢就会找到自己工作与生活的平衡点、舒适点,同时由于积累了大量的知识和经验他们也已成为了公司的重宝、顶梁柱。架构师、分析师和咨询师等,他们是软件公司价值存在的重要保证。
2.离开软件公司发展,走向企业信息中心
离开软件公司,找到一个对你积累的知识和经验有需求的新岗位,大量的企业正在积极地推进企业管理的信息化建设、生产制造的智能化建设、物联网建设等,这就需要大量的相关人才,他们不是用编码的能力来衡量你的水平,而是需要你已经积累的综合能力(知识、经验),可以说,企业信息中心是有丰富经验积累的、且掌握了一定的架构和分析能力的老程序员的合适去处。
企业信息中心,不但距离软件用户的需求最近,而且可以直接用信息化的手段创造价值。在这里,程序员已经积累的知识和经验非但不过时而且还不够,另外还需要再增加客户的业务知识、分析和架构的软件知识。在这样的工作环境可以最大限度地发挥出你的能力,而你创造的价值更直观、可衡量。会给你带来做程序员从未体验过的成就感,当你有了把客户业务需求与积累的IT技术相结合的机会,你就会感受到你的存在价值。
成为企业中的一个特殊群体后,就没有了软件公司那种高度的、不间断的竞争压力。
当然,不论你要想留在软件公司做一名架构师/分析师,还是到跳槽到企业信息中心从事新的工作,仅有编码知识和相关经验是远远不够的,这些知识和经验只是做好新岗位工作的基础,你还必须要学习和掌握架构师、分析师甚至咨询师所需要的专业知识、并积累相关的经验。
沿着软件工程的过程“向前面的位置进一步”,你可以看到不同的发展机会。珍惜你积累的知识和经验,下一步就选择知识和经验积累型的岗位,成为一名专业人才。我会在后续的程序员2、3中继续提出一些看法或建议,请关注。
从程序员向其架构师、分析师等岗位转行需要掌握知识和技能,可以参考拙著《大话软件工程—需求分析与软件设计》一书。
■ 本系列的下一篇博文:程序员,也需要学习分析与设计的方法?!(2)