程序员职场生涯n次转型

Posted on Thu 11 June 2009 in it

      最近在工作之余,和一些资深程序员聊天,能感到他们对自身的职业发展上,存在迷惘;在面试时,发现很多初级程序员,基础薄弱,缺乏自主思考能力,从他们的工作经历上看,工作两三年跳槽两三次的大有人在。
      做为一个入行10年的老程序员,觉得有必要把自己的经验体会和从各个渠道了解到的信息跟大家分享一下,希望能解决一些人的迷惘,或是引发一些相关的思考和讨论。

      生为一个70年代中期的程序员,面对国内这个新生的行业,可参考的国内业内先辈,真是屈指可数。IBM总架构师寇卫东有一篇讲程序员职业规划的文章,讲得很不错,建议大家都看看。
      除了这位牛人之外,雷军、周爱民等IT达人,也有很多不错的观点。通过对这些信息的吸收和整理,才有了我下面的文字,在此向这些高人致敬!

职场生涯n次转型

      Junior Engineer ==> Senior Engineer ==> Expert ==> Scientist ==>Thinker/Philosopher

1. Junior to Senior
第一阶段就是要从初级程序员进阶为高级程序员。
1)要先明确目标,什么是高级程序员呢?
首先,必须技术过硬,这里面有几个硬指标可以参考(可以参考雷军谈如何成为技术过硬的程序员):
比如基本的编码技能,可以拿代码行数来衡量,要写够10万行代码,不要存在侥幸心理;
比如对开发流程的掌握,从收集需求、模型设计、编码实现到部署、运营。需要全部亲身去经历;
又比如对所在行业的业务特征的掌握,这是向下一阶段进阶的基础。
2)目标明确了,接着就要采取行动了,该如何做呢?
周爱民对如何提升程序员自身技术能力,有很好的建议。各位可以好好读读。
我个人觉得有几点值得强调:
要踏踏实实的去写代码,人要远离浮躁,老老实实的把基本功做好,10万行代码就是基本功;
要有远大的目标,虽然身处起步阶段,对后续的发展还模模糊糊,也要去想,记录下来。只有想不到的,没有做不到的;
要制定近期计划,并且坚持执行。还是知易行难的呀,人也都有惰性的。要想达到目标,人就是要打败自己的惰性。
3)关于这个阶段的注意事项,把寇卫东的原话送给大家
从初级进阶到高级,通常需要2~5年的时间,因个人素质而异。
大家都说,程序员要耐得住寂寞和枯燥,年轻的程序员更要克服浮躁的心态。在职业生涯的起步阶段,很多人总会摸不着头脑,这时一定要静下心来,多向资深程序员求教,慢慢熟悉技术、熟悉开发流程和行业。
有时你会感觉掉进了一个知识海洋,身边全是陌生的事物,很难抓住。所以就更要四处探路,逐渐寻找到方向,在寻找中进步。
成为高级程序员是后续各种进阶方向的前提条件,因为对于一个初级程序员来说,根本没有选择的机会。

2. Senior to Expert
成为一个得到各方面认可的高级程序员后,更容易迷惘。对于下一步的发展,大概有以下几种路线:
1) 技术专家路线
如果对某一种或几种技术非常感兴趣,并且能够持续钻研,经过一定时期的积累,你可以逐渐成长为专家级程序员
这类专家“越老越值钱”。但是这类专家也有一定的风险性:当公司改变技术路线或单纯为了降低成本的时候,会面临失业或另找工作的局面
2) 培训专家路线
成为培训专家,不仅需要深厚的技术功底,同时还要具备优秀的沟通和表达能力,因为他们的主要工作不再是研发某种技术,而是传播技术知识。
3)技术管理路线
以做项目为工作重点,进而发展成项目经理、开发经理,最终成为技术总监甚至公司副总裁。
技术总监不仅要保持对新技术的敏感,还要抽出精力做管理。权力大、管的人多,就意味着更大的压力。
4)架构师路线
从入门的架构师开始,逐渐成为资深架构师乃至总架构师。
5)技术创业路线
踏上这条路不仅需要过人的勇气和魄力,更需要坚韧不拔的毅力,以及深度的商业智慧,再加上市场机会,缺一不可。
有意向的可以看看雷军评估创业项目的十大标准
6)技术支持路线
成为精通业务的技术和行业咨询专家。这类程序员会在成为高级程序员之后加入销售团队,直接面对客户,负责技术层面的问题。
7)IT专栏作家和自由职业者

高级程序员明确自己的方向进行转型,一般发生在30~40岁阶段。只有再次明确了方向,以后才会走得更稳。

3. Expert to Scientist
成为某个方向的专家以后的转型。
由专家向科学家进发。要把技术体系化。

4. Scientist to Thinker/Philosopher
由技术领域向思想领域进军。

今天向大家推荐我的这篇文章时,被阿飞反推了一篇总结性文章,涉及范围更广,可以参考:信息技术领域的职业发展路径