程序员为什么会有职业瓶颈?
寒冬的思考
2019年初,俗话说”金三银四”。这时候面试不知道你们慌不慌张。因为2018年冬天是寒冷的。其实18年的低温持续时间不算很长,我也没有披上军大衣。但是突如其来的互联网寒冬影响了不少人,互联网寒冬当然主要受影响的就是程序员了。
回顾过往,2017年是互联网高速发展的一年,共享经济仅仅一个概念就成就了多少家公司,各种共享单车满天飞,然而到了2018年下旬,好像所有的情况都发生了变化,你会发现所有互联网从业人员都在大喊,互联网寒冬来了,摩拜卖身于美团,美团又大裁员引发职言的刷屏,网易、滴滴、爱奇艺、京东这些各自领域的强者企业也都发生着裁员。除此之外,相对小些的公司比如知乎、锤子科技、斗鱼等企业也分别进行了不同程度的裁员,更别说哪些更小的互联网公司,各种倒闭,破产,不付工资。
伴随着这些企业裁员的发生,这些被裁的员工,可以说大部分是程序员,他们会陆陆续续全部回流到招聘市场。但是又有多少企业能接收他们呢?你要知道市场上不只这些被裁的还有那些主动离职“换更大平台”的。千军万马过河,寒冬里企业为什么选择你,在你和他之间拼的就是各自的实力了,这时有的人就自信满满而有些人则心慌慌了。
同是三、五年的工作经验,但是工资和职位级别却相差甚远,入职新公司发现比自己年龄小的做了自己的领导,这种感觉真是有苦难言啊。
这种情况,让年后准备离职的人也犹豫了不少,毕竟稳定的职业还能解决生计,跳槽不好跳到坑里可就不美好了,也让很多人持观望态度,因为不知道外面现在是什么行情,所以裸辞的就坚决不建议了,除非你足够自信。
普遍的现象
对于互联网寒冬,有能力的人自然无所畏惧,21世纪嘛,毕竟是以人才为核心发展力。程序员的工资如果想要在短期一次涨很大幅度,通常只能通过跳槽来实现了,但是还是有很多人不敢轻易尝试,跳槽虽然能够涨高幅度的工资,但是也是和自身能力挂钩的,而能力来自于以往工作中获取积累而得的。
程序员行业中,存在一个普遍现象,那就是:工资并不是和工作年限密切相关的。其他行业你也许工作年限越久、工作资历越高、经验越丰富,然后职位和工资就越高。但是程序员行业不同,在程序员职业中,不说同年限的工作薪资差别大了,可能一个5年工作年限的也许工资还没有工作3年的高,在一个组中也许3年的领导着5年的人做事。
想想,为什么会出现这种现象呢?为什么你就是那个悲剧的人,而别人就是那种遥遥直上的人?很失落但是也要想原因。其实和自己在迎接瓶颈期和处理瓶颈的问题上的态度息息相关了。
瓶颈,生活中一种下宽上窄的瓶子颈部,瓶内物要倒出瓶外,一般在瓶颈处要么阻塞要么会限流。而“瓶颈”在事业上,一般用来形容事业发展中遇到的停滞不前的状态,这个阶段就像瓶子的颈部一样是一个关口,如果没有找到正确的方向有可能一直被困在瓶颈处。
程序员的瓶颈期,因人而异,大部分人可能在工作5年左右的时候迎来了自己的技术瓶颈,有的人是起点高也有可能在3年左右迎来自己的瓶颈期。在遇到瓶颈期时,有的是继续深度挖掘技术但收效甚微,而有的是无奈则试着转型做管理或产品,转行的应该也有但很少。
瓶颈期的表现为:新技术学不动,原技术我都了解且熟练使用,但是都一知半解。工作中游刃有余但是一遇面试就坑坑巴巴。
瓶颈原由
为什么会有瓶颈呢?常说 IT 行业是一个时常保持学习的行业,程序员需要有敏锐的新技术嗅觉。都说“30以后年纪大了,学不动了。”如果只是编码的话需要逻辑清晰脑力活跃。其实年龄这个理由只是客观因素,技术是不断更新的没错,30岁脑记忆力跟不上年轻的时候也对。但是这只是客观的外界因素。
程序员都应该以30岁为一个标点。30岁的时候学技术不可能还像年轻的时候那样学习方法。看视频,需要老师教,同学指点。程序员干到30岁应该都有一个自己的技术池了,学习新技术会是一个举一反三的态度。
宋代禅宗大师青原行思,提出了人生的三重境界:参禅之初,看山是山,看水是水;禅有悟时,看山不是山,看水不是水;禅中彻悟,看山仍是山,看水仍是水。那么我们应该怎样理解这三种境界的意思呢?
程序员学习技术应该也是这样的三个阶段的过程,30岁也许你没达到彻悟但是肯定要达到有悟的境界了。
如果你焦虑,其实归纳起来主要是:在不该安逸的年纪享受着舒适区,生于忧患,死于安乐。我这不是提倡996,废寝忘食。而是提醒不要混日子,因为混日子,最终会混了自己。在工作业余时间总结技术,而不是看直播,农药和撸啊撸。
别人比你年轻技术比你好当你领导,也许并不是他很聪明,而是他在你看直播和农药的时候多写了一个 Hello World。
解决之道
- 阅读经典源码,理解思想
武学讲究师从名门,大师指导进步自然快。经典的技术框架都是大师的技术手艺展现,还有什么比这个更有指导意义吗?
阅读源码有助于我们学习经典的技术思想和代码编写套路,在我们以后项目中造轮子有思想指导价值。
阅读源码有助于我们更了解技术的实现和脉络,做到知己知彼,在遇到线上问题的时候解决问题能做到精确定位,比别人技高一筹。
- 知其然,知其所以然
技术是一个累积的过程,工作多年的你也许已经换了几份工作,每家的技术使用肯定都不一样,排除SSM框架,肯定新家都有上一家公司没用到的技术。
学习新技术,一般都是自己倒腾写个Hello world,但是这样是只能是停留在会用的阶段,只是“知其然”,而我们如果想要走的远必须”知其所以然”。
我认为公司项目中如果使用了一个新技术的时候,趁这个时候有实际项目可以验证,我们应该将该技术熟练掌握,不仅仅包括它的使用API,还要包括原理,源码甚至可能遇到的生产问题的解决方法。
我们尽量避免不必要的重复学习,因为要学的技术实在太多,在接触到他的时候我们就将它融化在自己的技术池中,在以后再见面的时候我们就可以拿出来使用了,还可以查漏补缺。
例如新手接触到spring框架,我们不要只停留在知道如何配置它,xmL方式配置,注解方式配置等等,我们还要理解他的IOC,以及如何实现的IOC,还有更深点的spring的bean生命周期,理解了bean的声明周期之后我们就可以在项目中使用各种生命周期中的注解和接口来实现自己业务要求,例如@PostConstruct
和 @PreDestroy
,还有ApplicationContextAware接口的作用等等。
- 记录博客
记录博客,我认为是每个技术人员的都应该要做的。其实记录博客并不是为了让别人来崇拜自己。记录博客的最原始目的是为了“温故而知新”和加深理解。
自古有俗语“好记性不如烂笔头”,人的记忆力再好要记得东西那么多,也有遗忘的时候,我们学技术是一个循序渐进的过程,也许刚开始我们只是会使用,再后来使用越多我们对该技术的理解也越深,有种”拨开云雾见明月”的感受,从而形成自己的理解,这种理解也许不是“独到的”但是属于我们自己的。
我们记录博客可以收获什么?
1.博客是自己对技术的思考。
2.面试的时候可以拿出来当个笔记来复习。
3.写的好的可以增加自己在行业内的知名度。
4.面试的时候可以起到加分的作用。
- 未雨绸缪
我们永远不要停留在已掌握的技术中,而应该主动拥抱自己未知的技术。面试的时候也许面试官会找你掌握的技术问,但是你找工作不可能下家用的都是你现在会的技术,未雨绸缪,学习现在市场上一些新出的技术,对你以后职业发展可以提供更宽的道路。
也许你们公司没有使用微服务的架构,但是你自己可以先研究SpringCloud 和 Docker。也许你项目没有使用 Elasticsearch 但是你可以在本地安装并使用。机会总是留给有准备的人。
- 勇于挑战新机会
人都是逼出来的,不到危机时刻永远不知道你自己有多大的潜力。不是刚毕业就能当架构师,但是按照上面你都做好了积累,一切准备就绪,待时机成熟的时候要勇于转变自己的职业角色。任何开发的程序员我认为在工作5年左右的时候都可以转变成架构师的角色了,因为只要你认真对待了前面那几年,这时候是可以胜任的,而这时候也差不多正是30岁左右的时候。