这篇文章,给大家聊聊Java工程师的职业发展规划的一些思考,同时也给不少20多岁、30多岁,但是对自己的职业未来很迷茫的同学一些建议。
笔者希望通过此文,帮大家梳理一下程序员的职业发展方向,让大家知道自己从20多岁的初出茅庐,到40岁的大龄码农,应该如何规划属于咱们程序员的半生。
首先,咱们通过倒推的方式,看看在一个程序员40岁的时候,你凭什么来捍卫自己的核心竞争力?
那如果要搞清楚这个问题,又得从一个反面来看看,大部分的程序员在职业发展过程中犯了哪些错误,结果导致在40岁的时候没有竞争力了呢?
一、40岁回首往事:自己竟没有任何核心优势
最尴尬的事情,莫过于一个程序员在10多年,甚至20年的从业经历中,一直没好好考虑过如何构建自己的核心竞争力。
如果长年如此,会导致他就跟着公司慢吞吞的走着,就像温水煮青蛙,直到40岁的时候,突然发现自己几乎一无所长。
举个例子,比如从技术角度而言,这些兄弟可能发现自己不是什么技术专家,也不是架构师,没有任何一个技术领域有足够的深度。
他们甚至可能都没好好读过什么技术的源码,很多最新的技术,比如大数据、人工智能、微服务、互联网,等等,都没跟上。
而这些朋友10多年来,一直做的事情可能就是重复以下:带着几个小弟,做传统的软件系统,然后整天就是研究各种软件的需求,设计一些简单的架构。
然后使用的技术都是比较过时的,一直是一些增删改查的事情,可能涉及到一些其他的技术,但是那些技术很多都是非主流的,或者是不流行的。
最后,你发现自己10多年工作下来,跟小年轻相比,唯一的优势好像就是做的那种CRUD的项目比较多,经验丰富一些罢了。
没错,我见过相当多的兄弟,在30多岁,乃至40岁的时候,就是上述那种情况,唯一的优势就是难度不高的项目经验比较多,带过几个人,仅此而已。
甚至有些兄弟虽然是一些中小公司的 “架构师” 、 “技术总监” 的title,但是其实本质做的事儿也跟上面是差不多的。
但是呢,这帮兄弟实际上来说薪资未必就很低,因为随着在公司呆的久了,很多公司虽然知道你也许没特别大的技术能力,但是老板也认可你其实对公司的业务还算蛮熟悉的。
而且你做过的项目比较多,年龄较大,有资历,做事稳重,能带几个小弟,可以给公司撑起来一片天空。
此时,公司还是会给你不错的薪资。类似上面情况的兄弟,30多岁时,可能薪资也会有30多k~40k那样子。
但是也有很多的兄弟,没得到公司老板那么大的认可,自己可能也一直没想太多,所以在30多岁的时候,可能公司就给你28k,30k的薪资,认可你是一个资深的骨干。
而这个时候,对大龄程序员来说,学习很多新的技术也有点有心无力,毕竟家里老婆孩子都在炕头上。你说加班加点吧,也有点加不动了,毕竟年龄上去了,各种慢性病一大把,精力不如往日,主要就是利用自己的一点经验把控公司的项目。
因此上述那个场景,就是很多大龄程序员的情况。
二、公司遇到危机时40岁大龄程序员会怎么样?
现在咱们换个角度,从一些中小公司的老板的角度来考虑一下这些大龄程序员,假如说公司业务还算稳定,营收还算正常,利润也算稳定,那么这些大龄程序员对老板来说是有价值的。
原因上面已经说过了,你毕竟工作了这么多年,业务还算熟悉,做过很多项目,从需求分析到系统设计,再到带小弟开发、测试和部署上线,这条流程你门儿清,那其实还是可以给你个30k薪资用你干活儿的。
但是假如公司现在遇到了一些危机,比如因为行业环境等原因,公司经营不善了,业务开始萎缩,利润开始下降,这个时候你说老板会怎么办?
其实很简单,站在老板的角度,假如手里本来有10个大龄程序员作为骨干,此时完全可以拿掉其中的8个。
老板这时就留下2个大龄程序员,让他们为了保住饭碗,加班加点给公司撑住剩下的业务。
而大龄程序员的工资可是公司里最高的那一批人,把他们拿掉8个,是不是一下子节省了很大的成本?
如果公司还有业务需要支撑,完全可以找几个工资才10k的小年轻程序员进来把活儿顶着,跟着2个大龄程序员继续做就行了。大家想想,是不是这么回事?
在遇到困难的时候,工资高、年龄大、加不动班的大龄程序员,很有可能就会率先“被”牺牲掉,用来节约公司成本。
然后呢,换上几个薪资低、年龄小、可以天天加班到凌晨、还有充足的精力学习各种新技术的程序员,给公司顶上。
那么接下来,这些大龄程序员出去找工作会遇到哪些问题呢?
很简单,这些兄弟本身技术并没有什么特长,项目也没什么难度,而且很多最新的技术还没跟上没学习。
此外,这些兄弟年龄也大了,上有老下有小,还加不动班,而且你要的薪资还不低。其他公司一看,有什么理由用30多k的薪资来聘用你呢?
你的技术、精力都不行,所谓的项目经验,仅仅是上一家公司的一些项目的经验,对别的公司可能没什么太大的作用。
如果你是另外一家公司的老板,你会不会聘用这样的人?我想说到这里,大家都明白这里的问题所在了。
三、适合大龄程序员的几条职业发展路线
(1)成为技术大牛,掌握公司的核心技术
看完上面的内容,大家都知道问题所在了,那么接下来我们来探讨一下:
什么样的大龄程序员,他可以在40岁的时候还得到各种公司的青睐呢?
第一种方式,就是掌握自己行业里的各种技术,哪怕走出了这个公司,也是其他公司疯抢的对象。
给大家举个例子,比如你一直在互联网行业工作,且一直在各种知名大公司,前后负责和经历过多家大型互联网公司的核心系统架构设计。
对于一个互联网系统,如果要支撑1亿用户,有哪些技术挑战,需要怎么来设计,你都经历过这些过程。
每秒支撑10万量级并发请求该怎么做,系统要能够支撑百亿级的数据存储又该怎么设计。类似这些东西,你都了然于胸。那么这个时候,你就是拥有了核心技术。
哪怕这个公司不要你了,你完全会被其他公司给争抢过去,因为很多公司都需要这种有过大规模系统、高并发经验、海量数据经验的架构师。
千军易得、一将难求。招聘很多薪资二三十 K的高级工程师,负责把一个模块做好,很容易。
但是你要招一个能够把控全局,hold住你公司一个复杂大系统全场的高级架构师,很不好招,这样的人很值钱,很多公司都需要。
这个时候你虽然40岁,但是人家认可你,因为你有核心的技术能力,核心的架构能力,你是公司技术的最后一道防线,很多岗位非你不可。
或者换个例子,比如大数据领域,现在你工作10多年,技术功底极为深厚,你完全可以对大数据领域的各种系统,比如hadoop、spark、hbase、kylin、elasticsearch等等,做非常底层的优化。
遇到任何问题,你都可以从源码级别来推断解决,而且可以修改开源项目源码,进行二次开发。
那么这时,你就是拥有核心技术的。未来大数据必然会发展的越来越好,因为各个行业都有大量的数据,很多公司都需要有最好的专家来解决自己公司的大数据问题。
因此,即使你40岁了,但是你有多年积累的核心技术能力,任何公司都需要你这样的顶尖大牛坐镇,解决各种技术问题。
所以如果要往这个方向去走,建议大家一定要从20多岁开始,好好规划自己的技术学习和职业发展。
大家一定要想好,自己要学什么技术,要往多深了学,要在什么样的公司里积累经验,踏踏实实走好每一步。
到40岁的时候,虽然大龄,但是你积累了足够的技术能力,你的核心技术会像 “九阳神功” 一样为你护体,让你依旧驰骋职场、炙手可热。
(2)深挖业务,成为业务领域专家级人物
第二种路线,你可以考虑成为某个业务领域的专家级人物。
你可以在一些业务有绝对难度和深度,业务极度复杂,而且行业持续发展,业务领域的知识持续保持价值的领域,一直深挖。
比如说电信、金融、银行、保险、财务、ERP,等等,诸如此类。
在这些领域的公司里面,你可以在不停的做技术类工作的同时,也注意积累这个领域的业务知识。
像一个电信系统、ERP系统,往大了做,业务都是极度复杂的,包含了大量的东西。
如果你能持之以恒,对各种业务知识、业务系统都深入挖掘,那么最后变成这个领域的业务专家,也是很有价值的。
为什么这么说呢?因为对于很多特定行业,可能做一个系统不需要那么高大上的技术,但是绝对需要最好的业务专家来进行把控,才能设计出那种对应于某一个特定行业,且业务极其复杂的系统。
所以很多同学,假如是走传统行业的系统开发方向,可以考虑注重更多的业务积累,未来成为顶尖的业务专家。
这样,哪怕你40岁的时候,这个行业也需要你这样的 “老专家” 在公司里继续支撑着业务发展。
(3)带领团队:走上技术管理之路
另外一条路,就是走技术管理的道路,这个相信大家都理解。
作为任何公司的老板而言,都需要技术管理人员,他需要懂技术,但是不一定特别的精通,但是一定要有极强的团队管理的能力。
作为团队管理者,你需要有能力把控公司大的技术方向,还需要有足够的行业人脉和资源,招聘搭建合适的技术团队。
此外,你还要能够制定技术团队的工作流程和规范,进行团队之间职责的定义和分配,让各个团队有效协作运行,最后成功的支撑公司的业务发展。
这个管理,说起来就两个字,但其实背后的学问极大,要把几十个甚至几百个不同的人拧成一股绳,保持强大的战斗力,为公司做好支撑工作,其实这里难度很高,非常考验一个管理人员的水平。
如果你能从带几个人的小主管开始,到带几十人的技术leader,再到带几百人的高级技术管理人员。
假如你能往这个方向去发展,那么其实在你40岁的时候,你也有对应的竞争力,因为很多老板都需要你丰富的技术管理经验来把控好公司的技术团队。
当然说实话,能真的做技术管理做的好的人,很少。尤其是咱们技术出身的同学,一般来说都比较内向腼腆,不太善于交际。
所以对大多数的普通工程师而言,个人还是比较建议上面的技术专家或者业务专家路线,这里面机会更多,而且对大多数人都更加的适合。
(4)转型其他职位或者行业
如果有人说,我对技术没那么大热情要成为专家,我也很讨厌整天捣鼓业务,我更没天赋成为技术管理人员,那怎么办呢?
那你可以考虑写代码写到30多岁的时候,搞点别的。
比如说考虑转型做产品经理?考虑做互联网运营?或者考虑做软件销售?
也就是说,你可以考虑带着一定的技术背景,往技术行业里的其他岗位去转型,在其他岗位上积累经验,成为不可或缺的人物,这个也可以。
更有甚者,在北上广干了10年技术,积累了一定的资金之后,在老家买好房子,然后回老家去做生意,比如开个餐饮店什么的。
这个也是一条路子,但这种就是因人而异了,毕竟每个人的人脉资源都不同。
四、JAVA架构师成长路径
1、具有1-5工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的。
2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的。
3、如果没有工作经验,但基础非常扎实,对java工作机制,用设计思想,常用java开发框架掌握熟练的。
4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的。
5. 群号:高级架构群 705127209 备注好信息!
6.阿里Java高级大牛直播讲解知识点,分享知识,多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!
7.小白勿加
java架构群:705127209 一起交流
五、最后的寄语
最后一句话总结:不管你选择哪条路,首先想清楚,你要成为什么样的人。
你需要仔细想想,在40岁时,你10多年的工作经验,将会积累了哪些核心竞争优势。
然后再仔细琢磨琢磨,这些优势是否是那种刚毕业的小伙子绝对无法替代的,其他公司的资深岗位是不是必须要有你这样的人。
考虑清楚了这些,剩下的就是朝着自己的目标,坚持不懈的走下去。这中间你可能会迷茫,甚至会怀疑当初的决定。但还是那句话:相信自己、勿忘初心,自己选的路,含着泪也要走完!
最不希望看到的一种情况,就是30多岁了,还仅仅会“用”各种技术,十几种二十多种技术,什么都会用。但就是没什么技术深度,没什么竞争力,就一些使用经验比较多了而已。
如果是这样,那人家刚毕业的小年轻,可能1到2年时间就学会了这些技术怎么用,也许就可以在关键时刻替代你。
这些小伙子无非就是经验不足罢了,但是人家可以拼命加班弥补,并且人家要求的薪资比你低多了。
最后,希望每个程序员兄弟都有一个好的未来和人生,程序员这条路充满艰难险阻,各种挑战,但也充满机会,需要不停的学习进步,与大家共勉!