程序员的中场职业规划
我们先来看看这个时期的程序员是怎样的状态。大部分这个时期的程序员, 工作上已经游刃有余,可以独挡一面,对所涉及的技术基本了然于胸, 能够独立完成上级布置的所有任务,如果项目有需要,还可以带上三两个新人,一起进行项目的攻坚,已经是团队的主力成员。业余时间相对刚入职场的时候,也多了起来。 另一方面,发现自己的成长较前三年,要缓慢甚至停止了。
为什么要在这个时期再重新做职业规划呢? 最核心的问题,就是你的成长速度变慢甚至停止了。如果不调整,继续下去,最后只会不断落后,直到被整个行业抛弃。
这个时期对于很多人就是个岔路口,有的人意识到了问题,看到了这个岔口,开始思考要选那条路走下去。有的人没有意识到这个问题,浑然不觉,可能几年后还在原地踏步。所以这里第一个关键,就是要意识到需要再次进行技术职业规划了。
对于程序员来说,出路的选择可以是很多的。 全部例举一遍也不现实,我下面例举了一些常见的选择。分别来说说,对大部分的人比较有参考价值。
在相同的技术方向内,可以有业务开发和基础开发的选择。
业务开发的劣势: 大部分业务开发岗的技术含量不高,平常做的工作更多是增删查改,if else, switch 等。做久了之后,感觉技术没有提升,也没有技术成就感。有很强烈的在打杂的感觉。
业务开发的优势: 跟业务产品结合最紧密,离客户用户最近,在业务和产品上,比起基础开发岗的同学有更多的接触,综合能力的成长会更好,最终能力会更加全面。职业发展空间更加广阔。
个人建议:很多做业务开发的同学,做到后期,在技术上已经没有什么提升空间后,就开始有很强烈的在打杂的感觉。 这种感觉很正常。事实上,业务型开发,当已经跨过技术能力门槛后,就应该要开始关注业务和产品了。如果每天只是关注代码上的增删查改,if else,那无论是技术还是业务产品能力都不会有提升,反而是在空耗时间。
那怎么是关注业务呢?去年,我们部门调过来一个技术总监,他是做前端的,一直做的都是业务开发。我跟他接触一段时候后,发现他的产品能力特别强,甚至还强过很多的产品经理。有一次聊天,聊到这个事情。他跟我说,他做一线开发的时候,就很喜欢思考产品的东西,一个产品需求下来,会先想想这个需求对用户是不是真的有用,这么设计对用户是不是最好的,有没有更好的替代方案,有想法,有时候还会跟产品讨论,怼回产品。
几年下来,他的产品能力以及变得很强,现在他已经是我们的一个产品负责人了。 其实大家有没有发现,很多厉害的产品,都是技术出生的,比如马化腾,张小龙,雷军等。事实证明,技术人最终在产品上也是可以做的很好的。
看了上面的例子后,大家不会再觉得业务开发就仅仅是增删改查, if else 了吧。只要内心真的喜欢做业务,做产品,后面可能会有很大成就的。
基础开发优势:做的事情技术含量高,因为跟业务相关性很低,技能复用性很高。比如做熟了rpc框架或存储系统,跳到其公司做基础开发,依然可以做的很出色。
基础开发劣势:整个职业生涯层面,接触的事情太窄,基本就是技术。有时会产生一定的孤独感。需要从业人员真的很喜欢钻研技术,能够忍受比较长期的寂寞。职业发展上几乎只能走专家路线。后期可发展路径比较窄。
个人建议: 做基础架构的同学一般不会觉得没有技术含量,但做久了之后,有人会开始觉得闷或者觉得没有惊喜。看着隔壁业务部门的同学,这个业务达成了多少多少的DAU,那个业务又拿了公司级的业务突破奖。然后谁谁,因为业务扩张,又升职加薪了。对于这点,我只能说,很多同学只看到活下来的,没有看到死去的。
就互联网行业来看,死掉的业务应该是不计其数了,估计成活率1%都没有。 你看头条APP 工厂,生产上千款的APP,最后你知道的又有多少。所以想转去做业务开发的同学也要想清楚这个问题。而且业务开发本身的“技术含量低”,“打杂”感, 会让很多原本做基础开发的同学适应不了。很多基础开发的同学,本身对业务,对产品也没有特别强烈的感觉,最后技术成长不了,业务产品能力也没有提升,反而跑偏了。
可以看出,业务开发和基础开发,都是各有优劣,最重要的是要根据自己的内心和性格特质来进行选择。做自己喜欢的事情,总会做的更出色。
除了在同方向上做业务开发和基础开发的选择外,还可以转岗。比如做前端的同学觉的前端技术含量不够,想转去做后台。做工程的同学想转去做数据分析,深度学习。
工程类岗转工程类岗,相对还好,差异不会特别大,需要的基础能力和思维方式相差不会很大。比如无论你前端,后台,客户端,代码,算法,操作系统,网络这些知识经验和能力都是共通的,迁移的成本比较小。但工程类转岗数据分析或深度学习这种算法类,跨度就很大了。对于算法类的岗位,对代码能力,底层机制的理解要求并不高,需要的是更好的数学能力,英语能力(要做好,看英文paper是必须)。
很多同学对自己很自信,觉得只要自己努力就一定可以,但你也要明白,你的竞争者也很努力的,而且他们更专业(有不少就是数学系毕业的),你确定能跑的更快吗?这里有个建议,建议想转算法研究岗的同学,先自学一段时间,比如半年或一年,如果真的觉得自己合适,再转岗过去。
最后说说转非技术岗位。 做了三年的技术后,发现其实自己并不喜欢做技术。 更喜欢做产品或商务或其他岗位。 个人觉得如果出现这种情况,并且确认是内心所向,就应该果断转了。不要拖,不要浪费时间。
以上是技术人员在工作三五年左右的时候,需要再做的一次职业规划。无论你会不会改变方向和岗位,你工作到这个时间段的时候,都应该思考下这个问题。一是可以及时的做调整,二是当你去做这个思考的时候,你也会开始有意识地去了解,接触其他的方向和岗位。更早的开化,你更能先人一步,做出合适自己得选择。
推荐阅读:
我是delphi, 微信早期员工,腾讯高级工程师,技术leader
支持就给个好看呗 :)