转一篇文章,看3-5年的程序员职业规划是怎样的
为什么要在这个时期再重新做职业规划呢?
最核心的问题,就是你的成长速度变慢甚至停止了。如果不调整,继续下去,最后只会不断落后,直到被整个行业抛弃。
这个时期对于很多人就是个岔路口,有的人意识到了问题,看到了这个岔口,开始思考要选那条路走下去。有的人没有意识到这个问题,浑然不觉,可能几年后还在原地踏步。
所以这里第一个关键,就是要意识到需要再次进行技术职业规划了。
对于程序员来说,出路的选择可以是很多的。 全部例举一遍也不现实,我下面例举了一些常见的选择。分别来说说,对大部分的人比较有参考价值。
1.继续做开发
在相同的技术方向内,可以有 业务开发 和 基础开发 的选择。
业务开发的劣势:
大部分业务开发岗的技术含量不高,平常做的工作更多是增删查改,if else, switch等。做久了之后,感觉技术没有提升,也没有技术成就感。有很强烈的在打杂的感觉。
业务开发的优势:
跟业务产品结合最紧密,离客户用户最近,在业务和产品上,比起基础开发岗的同学有更多的接触,综合能力的成长会更好,最终能力会更加全面。职业发展空间更加广阔。
个人建议:
很多做业务开发的同学,做到后期,在技术上已经没有什么提升空间后,就开始有很强烈的在打杂的感觉。 这种感觉很正常。
事实上,业务型开发,当已经跨过技术能力门槛后,就应该要开始关注业务和产品了。如果每天只是关注代码上的增删查改,if else,那无论是技术还是业务产品能力都不会有提升,反而是在空耗时间。
基础开发优势:
做的事情技术含量高,因为跟业务相关性很低,技能复用性很高。比如做熟了rpc框架或存储系统,跳到其公司做基础开发,依然可以做的很出色。
基础开发劣势:
整个职业生涯层面,接触的事情太窄,基本就是技术。有时会产生一定的孤独感。需要从业人员真的很喜欢钻研技术,能够忍受比较长期的寂寞。职业发展上几乎只能走专家路线。后期可发展路径比较窄。
个人建议:
可以看出,业务开发和基础开发,都是各有优劣,最重要的是要根据自己的内心和性格特质来进行选择。做自己喜欢的事情,总会做的更出色。
2.转岗
除了在同方向上做业务开发和基础开发的选择外,还可以转岗。比如做前端的同学觉得前端技术含量不够,想转去做后台。做工程的同学想转去做数据分析,深度学习。
工程类岗转工程类岗,相对还好,差异不会特别大,需要的基础能力和思维方式相差不会很大。比如无论你前端,后台,客户端,代码,算法,操作系统,网络这些知识经验和能力都是共通的,迁移的成本比较小。但工程类转岗数据分析或深度学习这种算法类,跨度就很大了。对于算法类的岗位,对代码能力,底层机制的理解要求并不高,需要的是更好的数学能力,英语能力(要做好,看英文paper是必须)。
很多同学对自己很自信,觉得只要自己努力就一定可以,但你也要明白,你的竞争者也很努力的,而且他们更专业(有不少就是数学系毕业的),你确定能跑的更快吗?这里有个建议,建议想转算法研究岗的同学,先自学一段时间,比如半年或一年,如果真的觉得自己合适,再转岗过去。
3.转非技术岗
最后说说转非技术岗位。
做了三年的技术后,发现其实自己并不喜欢做技术。 更喜欢做产品或商务或其他岗位。 个人觉得如果出现这种情况,并且确认是内心所向,就应该果断转了。不要拖,不要浪费时间。