4

程序员 35 岁危机,如何破局 ?

 1 year ago
source link: http://www.androidchina.net/13201.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0929%2Fcb5e036aj00riyxtv0012c000u000cbm.jpg&thumbnail=750x2147483647&quality=75&type=webp

相信很多同学对这个话题感到焦虑,担心自己 35 岁之后会失业,因为前几年我也这样,不过目前要好很多,文末会讲。

写这篇文章前,为了让文章的内容保持客观,「我对 “35 岁大龄程序员” 这个话题调研了 2 周,然后才开始落笔」,文中很多观点都是摘录其它优秀的文章,然后再结合自己工作中的所感、所悟所得。

不废话,上文章目录。

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0929%2F68d35cfdj00riyxtv0018c000u000p1m.jpg&thumbnail=750x2147483647&quality=75&type=webp

1. 为什么会危机 ?

1.1 35 岁年龄特点

35 岁并不是真正的 35 岁,它是一个泛指,基本上来说就是 35-40 岁这段时间,「所以后面我说的 “35 岁”,都是泛指 35-40 岁。」

为什么会在这个阶段出现危机呢?

  1. 「经济压力」:这个年龄一般都有房贷、车贷、子女教育等,我认识很多同事,光房贷每月基本都要 6K-7K,再算每月的生活支出,很多都会月光;
  2. 「家庭原因」:这个年纪的人都已经成家,上有老下有小,需要平衡家庭和工作的关系;
  3. 「身体素质」:年龄的增加,身体素质大不如从前,不能熬夜;
  4. 「个人学习」:因为生活和家庭,能留给自己学习的时间不多,主动学习的欲望会明显降低。

1.2 35 岁危机来源

如果公司裁员,你是不是被最先裁掉的那一批?如果被裁掉,35 岁再出去求职,其它公司会不会要你?如果新公司给你 Offer,能否能达到你之前的水平,至少能保证你正常的生活开支?

「怕被优化,怕年纪大了找不到工作,怕给你的薪资覆盖不了你现有的生活水平」,这些其实都是我们危机感的来源。

我们看看用人单位看大龄程序员的视角:

  1. 「管理成本高」:领导的那一套画饼方式已经不适用,年轻程序员容易管理;
  2. 「经济成本高」:要的工资一般都不低,同样的费用是年轻程序员的 2-4 倍;
  3. 「精力跟不上」:如果公司推崇加班文化,大龄程序员的精力确实不太能跟上;
  4. 「家庭事情多」:大龄程序员家庭琐事多,不像年轻程序员那么纯粹;
  5. 「其它」:学习和进取欲望降低、能力提升变慢、技术栈老旧、可塑性变差等、公司产品不需要过深的技术和业务积累。

1.3 大龄程序员是否被排斥

年轻程序员在写日常的业务代码,可能和大龄程序员差不多,但是当需要解决公司的技术性难题、或对项目重构时,大龄程序员就会发挥自身的优势:

  1. 某种技术方向上有深厚积累;
  2. 项目经验丰富;
  3. 业务积累深厚;
  4. 解决问题能力强;
  5. 设计、架构、分析、规划等方面能力较强;
  6. 大局观强,有情绪管理能力,稳定耐造。

「所以我们和年轻程序员拼的不是代码能力,而是项目经验、设计能力和知识输出等。」

如果你已经步入大龄行列,比如有 10 年工作经验,但是真实水平不到 5 年,被淘汰的概率会非常大。

这里可以给出我的结论:

  1. “35 岁危机”是否存在?这个毋庸置疑,肯定是存在的。
  2. 公司是否排斥大龄程序员呢?在我看来,**公司排斥的不是大龄程序员,而是排斥能力和自己工龄不匹配的大龄程序员。

2. 如何应对危机 ?

2.1 克服焦虑

“35 岁危机”一直存在,准确来说大龄危机一直存在。

拿我个人来说,我认为能做到 40 岁,但很难做到 45 岁,做到 50 岁更遥不可及(大神除外),所以危机无法避免,只能尽量去延长我在这个行业的生命线,并在“退休”前完成一定的财富积累。

如果能有上面这个觉悟,其实就没有那么焦虑,因为我们最终都会离开这个行业,只是时间早晚的问题。

所以我的目标就非常清晰:「不是要守住程序员这个行业,而是尽量延长我在这个行业的生命线。」

那如何才能延长职业生命线呢?答案是「持续学习!」

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0929%2Fdc55f09ej00riyxtv0017c000u000exm.jpg&thumbnail=750x2147483647&quality=75&type=webp

IT 行业的技术更新换代非常快,对个人综合能力要求非常高,如果你不持续学习,等到年龄危机到来时还想躺赢,下一批裁员的可能就是你了。

持续学习是一切的前提,但我们不能盲目去学习,需要提前做好职业规划。

2.2 提前做好职业规划

我们看看程序员常规的晋升和转型路线:

  1. 「技术型」:初级工程师->中级工程师->高级工程师->架构师(技术专家)->技术总监->CTO;
  2. 「管理型」:工程师->项目组长->项目经理->项目总监->技术总监->CTO;
  3. 「交叉型」:初级工程师->中级工程师->项目经理->技术总监->CTO(此路线技术和管理交叉进行,每个阶段做的事情不固定);
  4. 「转行型」:初级工程师->转行产品、设计、销售、运营等。

下面是更加详细的职业规划,尽量延长自己的生命线,甚至可以摆脱年龄的限制(能摆脱年龄限制,都是大神级别):

  1. 在某种开发技能上「建立个人品牌」,比如微服务、Hadoop、高并发、C++ 等,而且你的品牌要被业内认可,这样的开发者实际上是以 “技术专家” 的身份存在。
  2. 在组织内「开发技能过硬、精通业务,成为复合型选手,占据难以替代的位置」。这样的开发者,可以称之为高级开发工程师或者资深开发者,这样的角色,在一个合适的平台上可以受到重视,可以跟着平台发展,不用在意年龄。退一步讲,即便所在的平台倒掉了,也会有很多公司愿意要。
  3. 成为「善于架构某类软件服务的架构师」。这是从高级开发工程师演进过来的更高级的角色,当你真正做过一些大型系统的架构工作,会有很多公司需要你,不必担心你的年龄,你工作自由了。
  4. 「走向管理岗位,成为职业经理人」。很多公司都有项目经理、技术经理、研发经理等管理角色,你需要能够真正做好管理工作。

3. 需要具备的核心技能

3.1 技术方面

「技术才是每一个程序员的安身立命之本」,无论你处于哪个阶段,都不要把技术完全落下,区别只是在各个阶段对技术要求的侧重不同:

  1. 初中高级程序员:一个技术强化的过程;
  2. 专家:选择一个技术方向深耕,成为对应技术领域的专家;
  3. 架构师:更偏向对项目整体架构的设计和把控能力;
  4. 团队负责人到 CTO:管理职能更大于技术职能,更多的是对技术的宏观方向把控。

技术方面主要有以下几点建议:

  1. 「先广后深,打造自己的核心竞争力。」你可以是微服务领域的专家,也可以是 ES 大佬,或者精通 Flink。
  2. 「拒绝啃老本。」不要在一个公司混了 3 年,出来找工作投简历,发现简历都投不出去,Spring Cloud 都不知道是什么,微服务、分布式完全没接触,还是只会基于 SSH 的 CURD。2/3 线城市还好说,在一线城市工作的,技术迭代更新比较快,一定要跟紧主流技术。
  3. 「要形成自己的技术体系。」什么是技术体系,举个例子,你说自己会 MySQL 数据库,但是除了日常写 SQL 进行 CURD 的业务开发外,你还知道 MySQL 的运行架构,主流存储引擎的区别,主从同步原理、组复制、锁机制、分表分库、事务控制这些吗?围绕着技术名称的中心点,能像蜘蛛网那样扩散出去,形成有条理的网状结构,就形成了自己的技术体系。
  4. 「尽可能做多做一些总结输出。」我目前的做法是将日常的一些学习笔记、人生感悟、bug 解决过程等先简单记录在有道笔记上面,后面再逐渐整理输出,既可以回顾总结反思,也能作为一些博客的内容输出。
  5. 「不要死磕技术」(这点大家勿喷)。作为程序员,需要有一定的技术信仰,但也不能太过迷信技术。在职场中,「你要比别人走的更高更远的话,只会敲代码实现一些业务功能是远远不够的」。其实在很多开发公司,开发人员的地位都比较一般,来去匆匆,始终是底层的搬砖工。所以,不要傻傻地一头扎入了技术的海洋,每个人的精力都是有限的。除了技术实力外,你还需要有意识地培养自己的沟通表达能力、文档输出能力,比如项目说明文档、项目架构图、汇报 PPT、团队管理、项目管理、项目规范、抽象化思维、产品化思维等综合实力。

3.2 架构和设计

架构师是很多开发者的终极技术梦想,能成为架构师的凤毛麟角。

但是,「每个人都必须要架构和设计软件的能力!」

如果你没有架构、设计的能力,就无法站在更高维度去理解软件开发,就必然被迫奋战在最简单也最容易被替代的体力化的编码工作岗位,而这样的岗位,必然是拒绝大龄程序员的。

所以,即便你还不是架构师,也不是技术经理,也不是管理人员,也不是需求分析师,你也需要在日常工作中拔高一点,经常性的、刻意地去想一想,系统的模块为什么这么划分,服务间的接口为什么这么设计,这个业务逻辑为什么要这样实现而不是那样实现。

惟其如此,你才能慢慢理解别人的架构与设计,才能慢慢培养自己的架构与设计能力。

3.3 业务能力

所有开发者都要记住一点,开发者具有双重的行业属性:「软件行业属性和软件所要解决的问题所属行业的属性。」

软件所要解决的问题,就是我们通常所说的业务。比如支付宝的业务是支付问题,京东商城的业务是电子商务问题,携程的业务是机票和酒店预订问题。

精通业务,可以成为开发者的优势,这是开发者在问题域构建起来的优势,即所谓的懂行。

如果业务积累方面的优势和开发技能方面的优势能叠加起来,那这位开发者,就具有「秒杀 85% 以上开发者的能力」

再比如,目前国内技术人员太多,可替代性太强,做 Java 搞业务开发的,无非就是 Spring boot + MyBatis + MySQL,需要上微服务就采用 Spring Cloud 全家桶,通用型太强。

而如果你既懂技术又熟悉核心业务流程,比如熟悉电商平台、支付系统、风控系统等的核心业务流程,那么你在团队的地位一定稳如泰山。

3.4 软技能

《软件架构师的 12 项修炼》这本书里给出了软件架构师的金字塔能力模型:

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0929%2F8eb2b4ddj00riyxtv000pc000u000fxm.jpg&thumbnail=750x2147483647&quality=75&type=webp

这个模型,适用于绝大多数软件开发工程师,在这本书里,作者说这么一句话。

「大多数时候所谓的“技术之玻璃天花板”,其实只是缺乏软技能而已」。这些技能可以学到,缺乏的知识可以通过决定改变的努力来弥补。

我们每位开发者都要牢记这句话,要清醒地意识到:

  1. 不深入钻研,缺乏开发技术等硬技能,你很难在初期的职业生涯(0 ~ 5 年)中做出成绩「占据重要位置」
  2. 没有沟通、协商、领导力、语境切换、创新、认知等软技能,你很难在职场上「走出高度」

所以,在你掌握一定的开发技术可以搞定一些任务后,就要并行地去培养自己的软技能,比如沟通、表达、协商、演讲、辅导、写作、组织、规划、管理、汇报、商务谈判、创新、设计等等。

「只有软技能匹配你的硬技能,你才能更好地发展」,当你软硬结合,综合能力爆棚时,根本不用担心将来怎么找工作的问题,工作机会会跟着你跑,甚至有人会专门为你创造工作机会。

4. 其它建议

除了持续学习、往技术或者管理方向发展以外,我觉得有以下几点也需要重点关注。

4.1 锻炼身体

之所以写在最前面,因为身体是革命的本钱,有句话非常经典。

「身体是 1,其他都是 0,没有 1,再多的 0 都是空。」

4.2 拓展圈子

越是成功的人,他的圈子就越广,资源也越多,人生的路自然就越走越宽。

所以多向上拓展你的圈子,多走近结交那些正能量、有想法、志同道合的人。

兴许下次换工作,是圈子里的人脉直接内推让你找到一份满意的工作,更有可能,圈子里的几个朋友因为某一个好点子直接走向创业之路。

5. 写在最后

再回到文章开头的问题,其实我 2 年前还很焦虑,但是现在不再焦虑,反倒信心更足了。

我目前基本都是按照上面的轨迹去走,已经走了 2 年,各方面的软硬技能都已具备,「所以在公司,基本不太担心被裁。」

可能有同学会问,那当你 35 岁以后,万一公司倒闭了呢 ?

如果自己还不到 40 岁,找一份大厂的工作,应该不难,如果到了 40 岁,我也完成一定的财富积累,「手中有粮,心里不慌。」

最后送上大家一句话:工作可以是事业、是热爱,也可以只是一份工作,「给自己留出转身的空间很有必要」,如果把工作看作一份经历和沿途的风景,在乎过程中的经历、感受多过最后的结果,可能会让人生更加充满期待。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK