程序员 35 岁危机,如何破局 ?
作者:沉默王二
Java程序员进阶之路:https://tobebetterjavaer.com
大家好,我是二哥呀!今天周六,咱精神就不要绷那么紧了,来谈一个超级“轻松”的话题:35 岁中年危机。
不得不说,任总的把寒气传递给每一个老百姓,杀伤力拉满,不少小伙伴都绷不住了,开始危机重重。二哥的编程星球 VIP 群里,也有不少小伙伴唉声叹气,感觉情况糟糕至极。
就连一个不满 25 岁的球友,也开始担心起 35 岁程序员中年危机了,问二哥该怎么办?
说句实在话,环境是没有以前好,但还没有到恐慌的地步啊,再说,25 岁就开始担心中年危机,着实有点早了呀!这期间还有 10 多年的美好岁月呀!
我们是该未雨绸缪,但不应该杞人忧天啊,这种“危机病”必须得治。下面这部分内容是二哥的“四贱客”,哦不,“四剑客”团队之一的楼仔写的,可以说是治好“35 岁”危机的良药!理解的非常深刻,道和术全都具备!
相信很多小伙伴对这个话题感到焦虑,担心自己 35 岁之后会失业,因为前几年我也这样,不过目前要好很多,文末会讲。
不 BB,上文章目录。
1. 为什么会危机?
1.1 35 岁年龄特点
35 岁并不是真正的 35 岁,它是一个泛指,基本上来说就是 35-40 岁这段时间,所以后面我说的 “35 岁”,都是泛指 35-40 岁。
为什么会在这个阶段出现危机呢?
- 经济压力:这个年龄一般都有房贷、车贷、子女教育等,我认识很多同事,光房贷每月基本都要 6K-7K,再算每月的生活支出,很多都会月光;
- 家庭原因:这个年纪的人都已经成家,上有老下有小,需要平衡家庭和工作的关系;
- 身体素质:年龄的增加,身体素质大不如从前,不能熬夜;
- 个人学习:因为生活和家庭,能留给自己学习的时间不多,主动学习的欲望会明显降低。
1.2 35 岁危机来源
如果公司裁员,你是不是被最先裁掉的那一批?如果被裁掉,35 岁再出去求职,其它公司会不会要你?如果新公司给你 Offer,能否能达到你之前的水平,至少能保证你正常的生活开支?
怕被优化,怕年纪大了找不到工作,怕给你的薪资覆盖不了你现有的生活水平,这些其实都是我们危机感的来源。
我们看看用人单位看大龄程序员的视角:
- 管理成本高:领导的那一套画饼方式已经不适用,年轻程序员容易管理;
- 经济成本高:要的工资一般都不低,同样的费用是年轻程序员的 2-4 倍;
- 精力跟不上:如果公司推崇加班文化,大龄程序员的精力确实不太能跟上;
- 家庭事情多:大龄程序员家庭琐事多,不像年轻程序员那么纯粹;
- 其它:学习和进取欲望降低、能力提升变慢、技术栈老旧、可塑性变差等、公司产品不需要过深的技术和业务积累。
1.3 大龄程序员是否被排斥
年轻程序员在写日常的业务代码,可能和大龄程序员差不多,但是当需要解决公司的技术性难题、或对项目重构时,大龄程序员就会发挥自身的优势:
- 某种技术方向上有深厚积累;
- 项目经验丰富;
- 业务积累深厚;
- 解决问题能力强;
- 设计、架构、分析、规划等方面能力较强;
- 大局观强,有情绪管理能力,稳定耐造。
所以我们和年轻程序员拼的不是代码能力,而是项目经验、设计能力和知识输出等。
如果你已经步入大龄行列,比如有 10 年工作经验,但是真实水平不到 5 年,被淘汰的概率会非常大。
这里可以给出我的结论:
- “35 岁危机”是否存在?这个毋庸置疑,肯定是存在的。
- 公司是否排斥大龄程序员呢?在我看来,公司排斥的不是大龄程序员,而是排斥能力和自己工龄不匹配的大龄程序员。
2. 如何应对危机 ?
2.1 克服焦虑
“35 岁危机”一直存在,准确来说大龄危机一直存在。
拿我个人来说,我认为能做到 40 岁,但很难做到 45 岁,做到 50 岁更遥不可及(大神除外),所以危机无法避免,只能尽量去延长我在这个行业的生命线,并在“退休”前完成一定的财富积累。
如果能有上面这个觉悟,其实就没有那么焦虑,因为我们最终都会离开这个行业,只是时间早晚的问题。
所以我的目标就非常清晰:不是要守住程序员这个行业,而是尽量延长我在这个行业的生命线。
那如何才能延长职业生命线呢?答案是持续学习!
IT 行业的技术更新换代非常快,对个人综合能力要求非常高,如果你不持续学习,等到年龄危机到来时还想躺赢,下一批裁员的可能就是你了。
持续学习是一切的前提,但我们不能盲目去学习,需要提前做好职业规划。
2.2 提前做好职业规划
我们看看程序员常规的晋升和转型路线:
- 技术型:初级工程师->中级工程师->高级工程师->架构师(技术专家)->技术总监->CTO;
- 管理型:工程师->项目组长->项目经理->项目总监->技术总监->CTO;
- 交叉型:初级工程师->中级工程师->项目经理->技术总监->CTO(此路线技术和管理交叉进行,每个阶段做的事情不固定);
- 转行型:初级工程师->转行产品、设计、销售、运营等。
下面是更加详细的职业规划,尽量延长自己的生命线,甚至可以摆脱年龄的限制(能摆脱年龄限制,都是大神级别):
- 在某种开发技能上建立个人品牌,比如Java、微服务、Hadoop、高并发、C++ 等,而且你的品牌要被业内认可,这样的开发者实际上是以 “技术专家” 的身份存在。
- 在组织内开发技能过硬、精通业务,成为复合型选手,占据难以替代的位置。这样的开发者,可以称之为高级开发工程师或者资深开发者,这样的角色,在一个合适的平台上可以受到重视,可以跟着平台发展,不用在意年龄。退一步讲,即便所在的平台倒掉了,也会有很多公司愿意要。
- 成为善于架构某类软件服务的架构师。这是从高级开发工程师演进过来的更高级的角色,当你真正做过一些大型系统的架构工作,会有很多公司需要你,不必担心你的年龄,你工作自由了。
- 走向管理岗位,成为职业经理人。很多公司都有项目经理、技术经理、研发经理等管理角色,你需要能够真正做好管理工作。
3. 需要具备的核心技能
3.1 技术方面
技术才是每一个程序员的安身立命之本,无论你处于哪个阶段,都不要把技术完全落下,区别只是在各个阶段对技术要求的侧重不同:
- 初中高级程序员:一个技术强化的过程;
- 专家:选择一个技术方向深耕,成为对应技术领域的专家;
- 架构师:更偏向对项目整体架构的设计和把控能力;
- 团队负责人到 CTO:管理职能更大于技术职能,更多的是对技术的宏观方向把控。
技术方面主要有以下几点建议:
- 先广后深,打造自己的核心竞争力。 你可以是微服务领域的专家,也可以是 ES 大佬,或者精通 Flink。
- 拒绝啃老本。 不要在一个公司混了 3 年,出来找工作投简历,发现简历都投不出去,Spring Cloud 都不知道是什么,微服务、分布式完全没接触,还是只会基于 SSH 的 CURD。2/3 线城市还好说,在一线城市工作的,技术迭代更新比较快,一定要跟紧主流技术。
- 要形成自己的技术体系。 什么是技术体系,举个例子,你说自己会 MySQL 数据库,但是除了日常写 SQL 进行 CURD 的业务开发外,你还知道 MySQL 的运行架构,主流存储引擎的区别,主从同步原理、组复制、锁机制、分表分库、事务控制这些吗?围绕着技术名称的中心点,能像蜘蛛网那样扩散出去,形成有条理的网状结构,就形成了自己的技术体系。
- 尽可能做多做一些总结输出。 我目前的做法是将日常的一些学习笔记、人生感悟、bug 解决过程等先简单记录在有道笔记上面,后面再逐渐整理输出,既可以回顾总结反思,也能作为一些博客的内容输出。
- 不要死磕技术(这点大家勿喷)。作为程序员,需要有一定的技术信仰,但也不能太过迷信技术。在职场中,你要比别人走的更高更远的话,只会敲代码实现一些业务功能是远远不够的。其实在很多开发公司,开发人员的地位都比较一般,来去匆匆,始终是底层的搬砖工。所以,不要傻傻地一头扎入了技术的海洋,每个人的精力都是有限的。除了技术实力外,你还需要有意识地培养自己的沟通表达能力、文档输出能力,比如项目说明文档、项目架构图、汇报 PPT、团队管理、项目管理、项目规范、抽象化思维、产品化思维等综合实力。
3.2 架构和设计
架构师是很多开发者的终极技术梦想,能成为架构师的凤毛麟角。
但是,每个人都必须要架构和设计软件的能力!
如果你没有架构、设计的能力,就无法站在更高维度去理解软件开发,就必然被迫奋战在最简单也最容易被替代的体力化的编码工作岗位,而这样的岗位,必然是拒绝大龄程序员的。
所以,即便你还不是架构师,也不是技术经理,也不是管理人员,也不是需求分析师,你也需要在日常工作中拔高一点,经常性的、刻意地去想一想,系统的模块为什么这么划分,服务间的接口为什么这么设计,这个业务逻辑为什么要这样实现而不是那样实现。
惟其如此,你才能慢慢理解别人的架构与设计,才能慢慢培养自己的架构与设计能力。
3.3 业务能力
所有开发者都要记住一点,开发者具有双重的行业属性:软件行业属性和软件所要解决的问题所属行业的属性。
软件所要解决的问题,就是我们通常所说的业务。比如支付宝的业务是支付问题,京东商城的业务是电子商务问题,携程的业务是机票和酒店预订问题。
精通业务,可以成为开发者的优势,这是开发者在问题域构建起来的优势,即所谓的懂行。
如果业务积累方面的优势和开发技能方面的优势能叠加起来,那这位开发者,就具有秒杀 85% 以上开发者的能力。
再比如,目前国内技术人员太多,可替代性太强,做 Java 搞业务开发的,无非就是 Spring boot + MyBatis + MySQL,需要上微服务就采用 Spring Cloud 全家桶,通用型太强。
而如果你既懂技术又熟悉核心业务流程,比如熟悉电商平台、支付系统、风控系统等的核心业务流程,那么你在团队的地位一定稳如泰山。
3.4 软技能
《软件架构师的 12 项修炼》这本书里给出了软件架构师的金字塔能力模型:
这个模型,适用于绝大多数软件开发工程师,在这本书里,作者说这么一句话。
大多数时候所谓的“技术之玻璃天花板”,其实只是缺乏软技能而已。这些技能可以学到,缺乏的知识可以通过决定改变的努力来弥补。
我们每位开发者都要牢记这句话,要清醒地意识到:
- 不深入钻研,缺乏开发技术等硬技能,你很难在初期的职业生涯(0 ~ 5 年)中做出成绩占据重要位置;
- 没有沟通、协商、领导力、语境切换、创新、认知等软技能,你很难在职场上走出高度。
所以,在你掌握一定的开发技术可以搞定一些任务后,就要并行地去培养自己的软技能,比如沟通、表达、协商、演讲、辅导、写作、组织、规划、管理、汇报、商务谈判、创新、设计等等。
只有软技能匹配你的硬技能,你才能更好地发展,当你软硬结合,综合能力爆棚时,根本不用担心将来怎么找工作的问题,工作机会会跟着你跑,甚至有人会专门为你创造工作机会。
4. 其它建议
除了持续学习、往技术或者管理方向发展以外,我觉得有以下几点也需要重点关注。
4.1 锻炼身体
之所以写在最前面,因为身体是革命的本钱,有句话非常经典。
身体是 1,其他都是 0,没有 1,再多的 0 都是空。
魔都一位技术人员,总以为自己年轻,身体硬扛得住,结果一次晕倒后,医院检查发现自己得了尿毒症,没有好的身体,你挣再多钱都没有意义,一旦你因为身体而离开人间,配偶、孩子、钱都是别人的了。
4.2 发展副业
提前布局 PlanB,做好副业。
做副业的目的,就是增加自己的收入,同时也是倒逼你去学习更多的知识,让你的技术能力提升更快,也为你未来创业做准备,增加你抗风险的能力。
除了以上好处,副业也会提升你的个人能力、扩大你的圈子。
4.3 拓展圈子
越是成功的人,他的圈子就越广,资源也越多,人生的路自然就越走越宽。
最近一段时间认识二哥后,我就发现,生活工作又了新的不一样,我进入了另外一个资源共享的圈子,我们做开源,做的不亦乐乎。
所以多向上拓展你的圈子,多走近结交那些正能量、有想法、志同道合的人。
兴许下次换工作,是圈子里的人脉直接内推让你找到一份满意的工作,更有可能,圈子里的几个朋友因为某一个好点子直接走向创业之路。
5. 写在最后
再回到文章开头的问题,其实我 2 年前还很焦虑,但是现在不再焦虑,反倒信心更足了。
我目前基本都是按照上面的轨迹去走,已经走了 2 年,各方面的软硬技能都已具备,所以在公司,基本不太担心被裁。
可能有同学会问,那当你 35 岁以后,万一公司倒闭了呢 ?
如果自己还不到 40 岁,找一份大厂的工作,应该不难,如果到了 40 岁,我也完成一定的财富积累,手中有粮,心里不慌。
为了以后能有退路,我也在布局自己的 Plan B,扩展自己的人脉圈子,比如写公众号、搞创业项目。
如果副业能做起来,说不定以后就靠这谋生,如果没做起来,我也收获了人脉和经验,为下一次创业蓄力,何乐而不为呢?
最后送上大家一句话:工作可以是事业、是热爱,也可以只是一份工作,给自己留出转身的空间很有必要,如果把工作看作一份经历和沿途的风景,在乎过程中的经历、感受多过最后的结果,可能会让人生更加充满期待。
ending
一个人可以走得很快,但一群人才能走得更远。欢迎加入二哥的编程星球,目前已经有 710 多名 球友加入了。
最近一段时间,二哥也没闲着,和球友炳源一起,正在紧锣密鼓地更新 Java 版LeetCode 题解,我们并不刻意追求 beat 100%,但效率总是出乎意料的优秀。与此同时,我们也在力求每一个题解都能通俗易懂,深入到底层,给大家举一反三的能力。
就比如说为了讲清楚暴力算法和 KMP 算法的区别,我们可以说是煞费苦心。
除了星球提供的三份高质量专栏,《Java 面试指南》、《编程喵 🐱(Spring Boot+Vue 前后端分离)实战项目笔记》、《Java 版 LeetCode 刷题笔记》,这里也沉淀了非常多优质的内容,包括球友和二哥分享的精华贴,还有二哥精心回答过的球友提问。
如果你也需要一个良好的学习氛围,戳链接加入我们的大家庭吧!这是一个 Java 学习指南 + 编程实战 + LeetCode 刷题的私密圈子,你可以向二哥提问、帮你制定学习计划、跟着二哥一起做实战项目,和球友一起打卡学习,自律得飞起!
欢迎点击左下角阅读原文了解二哥的编程星球详情,这可能是你学习求职路上最有含金量的一次点击。
没有什么使我停留——除了目的,纵然岸旁有玫瑰、有绿荫、有宁静的港湾,我是不系之舟。
参考链接:https://mp.weixin.qq.com/s/jtwD0Iodg7-HsHEJh2ubZw,出处:楼仔,整理:沉默王二
GitHub 上标星 7600+ 的开源知识库《二哥的 Java 进阶之路》第一版 PDF 终于来了!包括Java基础语法、数组&字符串、OOP、集合框架、Java IO、异常处理、Java 新特性、网络编程、NIO、并发编程、JVM等等,共计 32 万余字,可以说是通俗易懂、风趣幽默……详情戳:太赞了,GitHub 上标星 7600+ 的 Java 教程
微信搜 沉默王二 或扫描下方二维码关注二哥的原创公众号沉默王二,回复 222 即可免费领取。