那么程序员应该如何规划自己的职业生涯呢?当然谁都不可能一毕业就知道自己想做什么,即便有想法,也可能能力不及,暂时不能实现,即便能够实现,也可能做着做着,发现最初的想法不符合。但是必须指出的是,一个人,无论多么不成熟,无论前途多么迷茫,每个阶段,都应该有一个目标,随着自己的路慢慢的走,经验不断的积累,前面的路能够看的清楚一些,可以根据自己的经验,性格特点,做事风格,已有优势,目标可以进行一定的调整(不必固执于原来的想法,请参考老罗语录Happy Accident),每次调整,可能都会面临选择,没办法,只有像李开复说的那样follow your heart,追随内心,人都有一个特点,追随内心的选择比较不会后悔(至于对不对,人生没走完,谁也不知道)。比如面临A,B两个选择,内心想选A,可是家人,朋友都觉得B好,如果选择了A,A选择顺利,则会庆幸自己的选择,如果A选择不顺,也会想,就算选B也可能不顺,相反如果违心选了B,如果B顺利,会想如果选A说不定更好,如果B不顺,则抱怨家人朋友让自己掉坑里了。(也提醒大家在亲友人生重大问题上,必须让其自己选择)
前面说的比较抽象,下面具体说说。在这里,我把程序员的能力分为以下几个维度:技术深度,架构广度,业务知识,管理水平。当一个程序员从学校里面出来,所掌握的基本只有计算机基础知识以及程序设计语言,这个时候,会面临第一个选择,就是语言方向问题,java/C++/C/C#/PHP/Python/Perl等,有的是主动选择的,非这个我不做,大多数还是被动选择的,可能在学校学习的是C++,擅长的是C++,面试的也是C++,但是分到team后,发现项目是Java的。因为刚毕业,程序员像一张白纸,公司不怎么挑面试者的语言,觉得只要基础好,上手都很快。如果你有很强烈的语言倾向,则在前三年务必坚持使用这门语言进行开发,如果这三年使用了其他语言,再去面试的时候,公司就不再会相信你在大学的时候擅长某门语言这个故事了,在想转回去难上加难。如果没有强烈的语言倾向,倒也无所谓,每门语言都有自己的优势,也都能出牛人。在最初的三年,根据接触的项目不同,你已经开始接触某个技术分支,比如linux应用程序开发,linux内核开发,windows应用程序开发,windows driver开发,Java SE,Java EE等。在这三年,你可以不怎么稳定,换项目甚至不断跳槽,职业生涯初期的频繁跳槽还是比较容易得到理解的,但是不是盲目的跳,你要做的一件事情就是确定好自己未来的技术分支,并开始在这个方向上深入研究,形成自己的第一维度的能力——技术深度。根据不同的人基础不同,确定技术方向的快慢,深入研究的努力程度不同,在职业生涯的第三到第六年,技术深度一般会达到一定的程度,大多数人都会成为高级工程师,在这个阶段的后期,一般会再一次面临选择,这是职业生涯中关键的一次选择,将影响职业生涯的第六年到第十年。有的人会选择更细的技术分支进行进一步更深入研究,继续扩大自己在技术深度这一维度的优势,此类人职业规划简单直接,就是成为某项技术的大牛,不希望找过多的需求结合点,就像郭靖一样,就是降龙十八掌一掌一掌练下去,就靠一技之长行走江湖,跳槽也是容易,只要是需要这方面技术的就可以,其他的我不想做,对于此类程序员,我的建议还是选择一些有技术含量,稳定不易淘汰,不是一时半会儿能学会的方向,比如linux存储系统的开发,数据挖掘,图像处理等。有的人不希望进一步扩大技术深度这一维,而是希望整个系统从前端到后端,从底层到上层都能够有一定程度的了解,也即开始扩展架构广度这一维度,此类人对每一项技术都会了解到一定的深度,在各项技术大牛的帮助下,能够搭建起整个系统,他们的职业规划就是成为架构师,由于各个模块的技术都有可能更新,所以架构师需要不断的学习新的技术,不至于架构过老而遭到淘汰。有的人做的软件是面向某个行业的,比如金融,证券,财务,航运,电力等,他们出来技术深度形成一定的优势外,在三到六年这段时间里,也开始慢慢了解这些行业,于是扩展了另外一维——业务知识,他们能够迅速理解这些行业的业务需求,并转换成为软件的需求,他们的职业规划就是需求分析师,他们需要更系统的学习业务方面的专业知识,以期能准确把握需求。有的人在成为技术主力后,由于有一定的沟通和组织能力,开始带新人,以及领导一些人完成任务,于是扩展了另外一维——管理水平,他们需要学习项目管理,组织行为学,绩效管理等方面的知识,职业规划是成为技术经理,我的建议是有可能的话,做管理开始尽量在大公司,一方面大公司体制完善,培训到位,会更快帮助你成为一个好的管理者,另一方面大公司的管理岗位才有含金量,不像小公司,动不动就冒出个技术总监。接下来,在工作的第六年到第十年,就是按照上述的选择各自走各自的道路,最终小有成就,成为真正的技术牛人,软件架构师,需求分析师,技术经理。在这个时期的后期,部分人还是会选择多维的结合,技术牛人技术太牛了,大家五体投地,都心服口服的听他的,最终也会发展处管理水平这一维,成为技术型领导者;架构师由于需要协调各方,也会发展出管理一维,成为经理,由于架构师基本能够自己搭建一套系统,有可能会因为一个idea进行创业;需求分析师一般也会参与到架构设计中,发展出架构广度一维,也需要协调团队完成需求,发展出管理一维,从而可以成为乙方的项目经理,甚至会进行接项目方式的创业;技术经理可以进一步拓展管理一维,成为高级经理直至技术总监。在国内,成为大公司的技术总监,中小公司的CTO乃至VP,是大部分的程序员职业生涯的顶端,如果你是国外派回来的海归,或者自主创业成功的英雄,那应该另说,毕竟都是少数。
【个人|程序员如何规划自己的职业生涯!】参见博文原处:http://blog.csdn.net/forfuture1978/article/details/8224464
推荐阅读
- 程序员|要啥女朋友(大神教你用Python人工智能制作AI机器人)
- 几种绘制时间线图的方法
- 用 Python 爬取股票实时数据
- 程序人生|程序员在写作这条路上到底能走多远()
- java|我常用的4个备份工具
- 解读三大财务报表
- 程序员|全网已破千万点击,MyBatis源码(配置、映射文件SQL执行过程等等)
- 程序员|2021年Android岗位BAT大厂面试题知识点小结,小白也能看明白
- 程序员|Java线程池中的线程复用是如何实现的(稳进大厂)