这篇文章,给你们聊聊Java工程师的职业发展规划的一些思考,同时也给很多20多岁、30多岁,可是对本身的职业将来很迷茫的同窗一些建议。java
笔者但愿经过此文,帮你们梳理一下程序员的职业发展方向,让你们知道本身从20多岁的初出茅庐,到40岁的大龄码农,应该如何规划属于我们程序员的半生。程序员
首先,我们经过倒推的方式,看看在一个程序员40岁的时候,你凭什么来捍卫本身的核心竞争力?面试
那若是要搞清楚这个问题,又得从一个反面来看看,大部分的程序员在职业发展过程当中犯了哪些错误,结果致使在40岁的时候没有竞争力了呢?架构
1、40岁回首往事:本身竟没有任何核心优点并发
最尴尬的事情,莫过于一个程序员在10多年,甚至20年的从业经历中,一直没好好考虑过如何构建本身的核心竞争力。框架
若是终年如此,会致使他就跟着公司慢吞吞的走着,就像温水煮青蛙,直到40岁的时候,忽然发现本身几乎一无所长。elasticsearch
举个例子,好比从技术角度而言,这些兄弟可能发现本身不是什么技术专家,也不是架构师,没有任何一个技术领域有足够的深度。微服务
他们甚至可能都没好好读过什么技术的源码,不少最新的技术,好比大数据、人工智能、微服务、互联网,等等,都没跟上。高并发
而这些朋友10多年来,一直作的事情可能就是重复如下:带着几个小弟,作传统的软件系统,而后成天就是研究各类软件的需求,设计一些简单的架构。oop
而后使用的技术都是比较过期的,一直是一些增删改查的事情,可能涉及到一些其余的技术,可是那些技术不少都是非主流的,或者是不流行的。
最后,你发现本身10多年工做下来,跟小年轻相比,惟一的优点好像就是作的那种CRUD的项目比较多,经验丰富一些罢了。
没错,我见过至关多的兄弟,在30多岁,乃至40岁的时候,就是上述那种状况,惟一的优点就是难度不高的项目经验比较多,带过几我的,仅此而已。
甚至有些兄弟虽然是一些中小公司的 “架构师” 、 “技术总监” 的title,可是其实本质作的事儿也跟上面是差很少的。
可是呢,这帮兄弟实际上来讲薪资未必就很低,由于随着在公司呆的久了,不少公司虽然知道你也许没特别大的技术能力,可是老板也承认你其实对公司的业务还算蛮熟悉的。
并且你作过的项目比较多,年龄较大,有资历,作事稳重,能带几个小弟,能够给公司撑起来一片天空。
此时,公司仍是会给你不错的薪资。相似上面状况的兄弟,30多岁时,可能薪资也会有30多k~40k那样子。
可是也有不少的兄弟,没获得公司老板那么大的承认,本身可能也一直没想太多,因此在30多岁的时候,可能公司就给你28k,30k的薪资,承认你是一个资深的骨干。
而这个时候,对大龄程序员来讲,学习不少新的技术也有点有心无力,毕竟家里老婆孩子都在炕头上。你说加班加点吧,也有点加不动了,毕竟年龄上去了,各类慢性病一大把,精力不如往日,主要就是利用本身的一点经验把控公司的项目。
所以上述那个场景,就是不少大龄程序员的状况。
如今我们换个角度,从一些中小公司的老板的角度来考虑一下这些大龄程序员,假如说公司业务还算稳定,营收还算正常,利润也算稳定,那么这些大龄程序员对老板来讲是有价值的。
缘由上面已经说过了,你毕竟工做了这么多年,业务还算熟悉,作过不少项目,从需求分析到系统设计,再到带小弟开发、测试和部署上线,这条流程你门儿清,那其实仍是能够给你个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年技术,积累了必定的资金以后,在老家买好房子,而后回老家去作生意,好比开个餐饮店什么的。
这个也是一条路子,但这种就是因人而异了,毕竟每一个人的人脉资源都不一样。
一、具备1-5工做经验的,面对目前流行的技术不知从何下手,须要突破技术瓶颈的。
二、在公司待久了,过得很安逸,但跳槽时面试碰壁。须要在短期内进修、跳槽拿高薪的。
三、若是没有工做经验,但基础很是扎实,对java工做机制,用设计思想,经常使用java开发框架掌握熟练的。
四、以为本身很牛B,通常需求都能搞定。可是所学的知识点没有系统化,很难在技术领域继续突破的。
5. 群号:高级架构群 948368769 备注好信息!
6.阿里Java高级大牛直播讲解知识点,分享知识,多年工做经验的梳理和总结,带着你们全面、科学地创建本身的技术体系和技术认知!
7.小白勿加
java架构群: 948368769 一块儿交流
最后一句话总结:无论你选择哪条路,首先想清楚,你要成为何样的人。
你须要仔细想一想,在40岁时,你10多年的工做经验,将会积累了哪些核心竞争优点。
而后再仔细琢磨琢磨,这些优点是不是那种刚毕业的小伙子绝对没法替代的,其余公司的资深岗位是否是必需要有你这样的人。
考虑清楚了这些,剩下的就是朝着本身的目标,坚持不懈的走下去。这中间你可能会迷茫,甚至会怀疑当初的决定。但仍是那句话:相信本身、勿忘初心,本身选的路,含着泪也要走完!
最不但愿看到的一种状况,就是30多岁了,还仅仅会“用”各类技术,十几种二十多种技术,什么都会用。但就是没什么技术深度,没什么竞争力,就一些使用经验比较多了而已。
若是是这样,那人家刚毕业的小年轻,可能1到2年时间就学会了这些技术怎么用,也许就能够在关键时刻替代你。
这些小伙子无非就是经验不足罢了,可是人家能够拼命加班弥补,而且人家要求的薪资比你低多了。
最后,但愿每一个程序员兄弟都有一个好的将来和人生,程序员这条路充满艰难险阻,各类挑战,但也充满机会,须要不停的学习进步,与你们共勉!