作为程序员,你有过35岁焦虑么?如何看待程序员大龄危机,如何提前做好职业规划,我们一起聊聊~
其实我很早就对大龄程序员这个话题感到焦虑,担心自己35岁之后会面临失业,有时和亲戚朋友聊天时,也会经常拿这个出来调侃。现在身边已经有很多35岁左右的同事,自己过两年也会步入35岁的行列,反倒多了一份淡定和从容。
写这篇文章前,为了让文章的内容保持客观,我对“35岁大龄程序员”这个话题调研了2周,然后才开始落笔,文中很多观点都是摘录其它优秀的文章,然后再结合自己工作中的所感、所悟所得。
写这篇文章的目的,一方面是想给自己一个交代,另一方面主要还是想通过这篇文章引发你的思考,希望对还在迷茫中的你带来一丝亮光。
一、如何看待35岁年龄危机
强调一下,35岁并不是真正的35岁,它是一个泛指,基本上来说就是35-40岁这段时间,所以后面我说的“35岁”,都是泛指35-40岁时间段。
为什么会在这个阶段出现危机呢?我们先来分析35岁的年龄特点:
经济压力:这个年龄一般都有房贷、车贷、子女教育等,我认识很多同事,光房贷每月基本都要6K-7K,再算每月的生活支出,或者给小孩报个培训班,有车的还要还车贷,基本就要步入月光,如果突然父母生病需要手术,勉强走上正轨的生活就显得入不敷出。
家庭原因:这个年纪的人都已经成家,上有老下有小,需要平衡家庭和工作的关系,除了工作,你需要花很多时间和精力去照顾家庭;
身体素质:年龄的增加,身体素质大不如从前,我感觉比较明显的就是25岁左右熬夜,第二天补一觉就能恢复过来,现在再熬夜,好几天都难恢复过来;
个人学习:首先是学习时间问题,你白天拼命赶项目进度,累的跟狗一样,晚上回家只想倒头就睡;周末孩子生病,或者爸妈、老婆身体不舒服要去趟医院,或者周末要陪老婆逛街,或者长假出去旅游,能留给你学习的时间真不多,不像以前单身狗一条,周末的时间可以全部用来学习,然后这个年纪主动学习的欲望会明显降低,有的早早就选择躺平。
如果你能按照现在的工资水平一直待下去,就不存在大家所说“35岁危机”,但如果公司裁员,你是不是被最先裁掉的那一批呢?如果被裁掉,35岁再出去求职,其它公司会不会要你呢?如果新公司给你Offer,能否能达到你之前的水平,至少能保证你正常的生活开支呢?
这些其实都是我们危机感的来源,怕被优化,怕年纪大了其它企业不要你,怕给你的薪资覆盖不了你的最低生活水平,比如你月供7K,你不能找个月薪1W的工作吧。
我们看看用人单位看大龄程序员的视角:
管理成本高:一般到了35岁这个年龄,基本也算是“老油条”,领导的那一套画饼方式对你来说已经不适用,年轻程序员容易管理,没那么多想法,随便打点鸡血就会卖力去干活。
经济成本高:这个年纪的程序员,要的工资一般都不低,同样的费用是年轻程序员的2-4倍,从公司成本考虑,公司更愿意招年轻程序员。
精力跟不上:如果你的公司不需要经常加班,这个其实还好,如果是个上市公司,或者公司就推崇加班文化,比如X为,大龄程序员的精力确实不太能跟上。
家庭事情多:大龄程序员家庭琐事多,不像年轻程序员那么纯粹。
其它:学习&进取欲望降低、能力提升变慢、技术栈老旧、可塑性变差等、公司产品不需要过深的技术和业务积累。
当服务突然宕机、大项目需要出方案设计、公司服务性能不能支持高并发场景,年轻程序员可能很难搞定,下面看看大龄程序员的优势:
某种技术方向上有深厚积累;
项目经验丰富;
业务积累深厚;
解决问题能力强;
设计、架构、分析、规划等方面能力较强;
大局观强,有情绪管理能力,稳定耐造;
年轻程序员在写日常的业务代码,可能和大龄程序员差不多,但是当需要解决公司的技术性难题、或对项目重构时,大龄程序员就会发挥自身的优势,所以我们和年轻程序员拼的不是代码能力,而是项目经验、设计能力和知识输出等。
不过,如果你已经步入大龄行列,比如有10年工作经验,但是对自己的技术积累和软实力培养都非常少,虽工作10年,但是其实只有4-5年工作经验,甚至更少,这些人被淘汰的概率会非常大。(当然网上也有个比喻,就是一直CURD,把1年的工作重复10年,这个比喻其实有点夸张,但是描述的很形象)
所以这里基本可以给出我的结论:
“35岁危机”是否存在?这个毋庸置疑,肯定是存在的。
公司是否排斥大龄程序员呢?在我看来,公司排斥的不是大龄程序员,而是排斥能力和自己工龄不匹配的大龄程序员。
二、如何克服焦虑
“35岁危机”一直存在,准确来说大龄危机一直存在,拿我个人来说,我认为能做到40岁,但很难做到45岁,做到50岁更遥不可及(大神除外),所以危机无法避免,只能尽量去延长我在这个行业的生命线,并在“退休”前完成一定的财富积累。
有了上面的思考,其实就没有那么焦虑,因为我最终都会离开这个行业,只是时间早晚的问题,所以我的目标就非常清晰:不是要守住程序员这个行业,而是尽量延长我在这个行业的生命线。
那如何才能延长职业生命线呢?答案是持续学习!
IT行业的技术更新换代非常快,对个人综合能力要求非常高,如果你不持续学习,等到年龄危机到来时还想躺赢,下一批裁员的可能就是你了。
持续学习是一切的前提,但我们不能盲目去学习,需要提前做好职业规划。
三、如何提前做好职业规划
我们看看程序员常规的晋升和转型路线:
技术型:初级工程师->中级工程师->高级工程师->架构师(技术专家)->技术总监->CTO;
管理型:工程师->项目组长->项目经理->项目总监->技术总监->CTO;
交叉型:初级工程师->中级工程师->项目经理->技术总监->CTO(此路线技术和管理交叉进行,每个阶段做的事情不固定);
转行型:初级工程师->转行产品、设计、销售、运营等;
也有大牛对职业规划讲述的比较详细,这样可以最大限度延长自己的生命线,甚至可以摆脱年龄的限制(摆脱年龄限制,感觉都是大神级别的人物):
在某种开发技能上建立个人品牌,比如微服务、Hadoop、高并发、C++等,而且你的品牌要被业内认可,这样的开发者实际上是以“技术专家”的身份存在。
在组织内开发技能过硬,并且精通业务,成为复合型选手,占据难以替代的位置。这样的开发者,可以称之为高级开发工程师或者资深开发者,这样的角色,在一个合适的平台上,可以受到重视,可以跟着平台发展,不用在意年龄。退一步讲,即便所在的平台倒掉了,也会有很多公司愿意要。
成为善于架构某类软件服务的架构师。这是从高级开发工程师演进过来的更高级的角色。当你真正做过一些大型系统的架构工作,会有很多公司需要你,不必担心你的年龄,你工作自由了。
走向管理岗位,成为职业经理人。很多公司都有项目经理、技术经理、研发经理等管理角色,你需要能够真正做好管理工作。
四、需要具备的核心技能
首先,技术实力始终是一个程序员在职业生涯中能保持竞争力最有力的武器。无论你是刚入行的新人,还是资深开发、架构大佬,甚至是技术团队负责人,都不要把技术完全落下,区别只是在各个阶段对技术的要求的有所侧重。
初中高级程序员,都是一个技术强化的过程。专家和架构大佬,前者是选择一个技术方向深耕,成为对应技术领域的专家。而架构师更偏向对项目整体架构的设计和把控能力。至于团队负责人到CTO,管理职能更大于技术职能,更多的是对技术的宏观方向把控。
技术方面主要有以下几点建议:
先广后深,打造自己的核心竞争力。你可以是微服务领域的专家,也可以是ES大佬,或者精通Flink。
拒绝啃老本。不要在一个公司混了3年,出来找工作投简历,发现简历都投不出去,Spring Cloud都不知道是什么,微服务,分布式完全没接触,还是只会基于SSH的CURD。2,3线城市还好说,在1线城市工作的,技术迭代更新比较快,一定要跟紧主流技术。
要形成自己的技术体系。什么是技术体系,举个例子,你说自己会mysql数据库,但是除了日常写SQL进行CURD的业务开发外,你还知道mysql的运行架构,主流存储引擎的区别,主从同步原理,组复制,锁机制,分表分库,事务控制这些吗?围绕着技术名称的中心点,能像蜘蛛网那样扩散出去,形成有条理的网状结构,就形成了自己的技术体系。
尽可能做多做一些总结输出。我目前的做法是将日常的一些学习笔记,人生感悟,bug解决过程等先简单记录在有道笔记上面,后面再逐渐整理输出。即可以回顾总结反思,也能做为一些博客的内容输出。
不要死磕技术(这点大家勿喷)。作为程序员,需要有一定的技术信仰。但也不能太过迷信技术。在职场中,你要比别人走的更高更远的话,只会敲代码实现一些业务功能是远远不够的。其实在很多开发公司,开发人员的地位都比较一般,来去匆匆,始终是底层的搬砖工。所以,不要傻傻的一头扎入了技术的海洋,每个人的精力都是有限的。除了技术实力外,你还需要有意识的培养自己的沟通表达能力,文档输出能力,比如项目说明文档,项目架构图,汇报PPT,以及团队管理,项目管理,项目规范,抽象化思维,产品化思维等综合实力。
架构师是很多开发者的终极技术梦想,然而不是每个人都能成为架构师,也许20个人只有一个可以成为架构师,也许比例更小。
但是,每个人都必须要架构和设计软件的能力!因为你没有架构的能力,没有设计的能力,就无法站在更高维度去理解软件开发,就必然被迫奋战在最简单也最容易被替代的体力化的编码工作岗位。而这样的岗位,必然是拒绝大龄程序员的。
所以,即便你还不是架构师,也不是技术经理,也不是管理人员,也不是需求分析师,你也需要在日常工作中拔高一点,经常性的、刻意地去想一想,系统的模块为什么这么划分,服务间的接口为什么这么设计,这个业务逻辑为什么要这样实现而不是那样实现,惟其如此,你才能慢慢理解别人的架构与设计,才能慢慢培养自己的架构与设计能力。
所有开发者都要记住一点,开发者具有双重的行业属性:软件行业属性和软件所要解决的问题所属行业的属性。
软件所要解决的问题,就是我们通常所说的业务。比如支付宝的业务是支付问题,京东商城的业务是电子商务问题,携程的业务是机票和酒店预订问题。精通业务,可以成为开发者的优势,这是开发者在问题域构建起来的优势,即所谓的懂行。如果业务积累方面的优势和开发技能方面的优势能叠加起来,那这位开发者,就具有秒杀 85% 以上开发者的能力。
再比如,目前国内技术人员太多,可替代性太强,做java搞业务开发的,无非就是spring boot + mybatis + mysql,需要上微服务就采用Spring Cloud全家桶,通用型太强。而如果你既懂技术又熟悉核心业务流程,比如熟悉电商平台,支付系统,风控系统等的核心业务流程,那么你在团队的地位一定稳如泰山。
《软件架构师的12项修炼》这本书里给出了软件架构师的金字塔能力模型:
这个模型,适用于绝大多数软件开发工程师,在这本书里,作者说:
大多数时候所谓的“技术之玻璃天花板”,其实只是缺乏软技能而已。这些技能可以学到,缺乏的知识可以通过决定改变的努力来弥补。
我们每位开发者都要牢记这句话,要清醒地意识到:
不深入钻研,缺乏开发技术等硬技能,你很难在初期的职业生涯(0 ~ 5 年)中做出成绩占据重要位置;
没有沟通、协商、领导力、语境切换、创新、认知等软技能,你很难在职场上走出高度。
所以,在你掌握了一定的开发技术可以搞定一些任务后,就要并行地去培养自己的软技能,比如沟通、表达、协商、演讲、辅导、写作、组织、规划、管理、汇报、商务谈判、创新、设计等等。只有软技能匹配你的硬技能,你才能更好的发展。当你软硬结合,综合能力爆棚时,根本不用担心将来怎么找工作的问题,工作机会会跟着你跑,甚至有人会专门为你创造工作机会。
五、其它建议
除了持续学习、往技术或者管理方向发展以外,我觉得有以下几点也需要重点关注。
之所以写在最前面,因为身体是革命的本钱。程序员,天天长时间同一个坐姿,对身体健康影响很大。程序员需要抽空锻炼身体,只有好的身体,你才能挣更多的钱。魔都一位技术人员,总以为自己年轻,身体硬扛得住。结果,一次晕倒后,医院检查发现自己得了尿毒症,没有好的身体,你挣再多钱都没有意义,一旦你因为身体而离开人间,配偶、孩子、钱都是别人的了。
提前布局PlanB,做好副业。作为技术人员,你必须提前布局你的PlanB,为副业打好基础。做副业的目的,就是增加自己的收入,同时,也是倒逼你去学习更多的知识,让你的技术能力提升更快。也为你未来创业做准备,关键是增加你抗风险的能力。因为你做副业,增加了收入,也提升了你个人能力。
越是那些成功的人,他的圈子就越广,资源也越多,人生的路自然就越走越宽。最近几年关注的一些公众号的大佬们,就都在报团取暖,各种互推,实现资源共享。
所以多向上拓展你的圈子,多走近结交那些正能量,有想法,志同道合的人。兴许下次换工作,是圈子里的人脉直接内推让你找到一份满意的工作。更也可能,圈子里的几个朋友因为某一个好点子直接走向创业之路。
六、写在最后
工作可以是事业、是热爱,也可以只是一份工作,给自己留出转身的空间也是很有必要的,如果把工作看作一份经历和沿路的风景,在乎过程中的经历和感受多过最后的结果,可能会让人生更加充满期待。
参考资料
35岁程序员该如何思考自身职业规划
https://blog.csdn.net/colorfulyan/article/details/108391935
浅谈程序员35岁职业危机
https://juejin.cn/post/6922091972644012040
35岁后程序员该何去何从
https://zhuanlan.zhihu.com/p/355737228
程序员35岁之后该怎样规划自己的职业
https://juejin.cn/post/6885231090424889351
程序员如何打破35岁魔咒
https://juejin.cn/post/6936160710376292360
论35岁年龄危机
https://www.zhihu.com/question/391000333
程序员职业生涯真的很短吗
https://www.zhihu.com/question/418706233/answer/1486363333
如果字段的最大可能长度超过255字节,那么长度值可能…
只能说作者太用心了,优秀
感谢详解
一般干个7-8年(即30岁左右),能做到年入40w-50w;有…
230721