程序员的中年危机

2017-12-23 fishedee 生活

12月10日,42岁的中兴通讯员工欧建新跳楼自杀,永远离开了自己的妻子、儿子和父母。详细的新闻已经有很多了,来龙去脉也不想再啰嗦了。

欧建新,本科北航,硕士南开,华为8年、中兴6年的工作经历,放在当下社会,无论唯学历论还是唯经验论,都是相当辉煌的履历表。但是在裁员面前依然不堪一击,公司没有人情可言,直接提供N+1的补偿,把你一脚踢开,叫你马上滚蛋。

知乎上有很多关于这件事的讨论,有人说这是心理素质不够好造成的,有人说还是程序员本身的技术素质不够硬,可替代性强,所以才会被炒的,有人说是行业不景气整体衰落所不可避免带来的结果。

其实呀,我觉得,还不是程序员本身这个职业有太多的问题了。我刚上大学时,觉得技术好才是最牛逼的,技术好大家容易看得见,分得清,而且只要做的都是核心研发工作,这样可替代性低,即使做到四十岁肯定也是没有问题的。出来工作就会发现,唉,就不是这么一回事。面试的时候问的都是做火箭的问题,工作的时候做的都是螺丝钉的事情。国内的IT公司大多都有自己的轮子了,即使没有也有一大堆开源的框架可以用,大数据有Hadoop生态,机器学习有Tensorflow,分布式微服务有Spring。自己做轮子不仅质量大部分情况下没有别人的好,而且费时费力做一样的事有什么意义呢。所以,即使在大公司,大部分的事情都是螺丝钉的事情,写业务,做调包。即使你有愿景想去解决大并发大流量的问题,但如果所在业务没有这样的需求,你也没有可以施展的地方。毕竟,对一间大公司而言,绝大部分的业务都是试水性的,只需要用好公司的基础组件就能完事了,还轮不上需要自己做轮子的地步。

所以,当我刚进去不久后,就发现一个有趣的现象,我身边总有一些三十左右的同事,他们都会试着打探一下我的工资。每次打探完以后,都会说一句,“Fuck,怎么今年又倒挂了”。其实也很好理解,对于公司而言,找个资质好的毕业生,稍微培养一下就能开始做事,比起中年人来说,他们更加听话(更容易被忽悠),更加肯学,而且重点是他们舍得加班。没有搞坏身体的担心,没有家庭的束缚,领导一个电话,毕业生周六日立马到公司修复bug,赶需求,没有半点怨言。至于那些三十多的同事呢,一会儿说要带孩子看病要请假,一会儿又说自己身体不好不能熬夜,对于需要快速迭代的互联网行业更像是个拖油瓶。所以,领导心里也很清楚,留下那些有领导才能的中年人,其他的只需要每年保持5%的升幅就可以了,慢慢地被新来的毕业生倒挂了,也就会自动自觉离开了。

也许你会说,那还不是他们技术一般,不够强大导致的,技术好的肯定没有这个问题。呃,不好意思,还真的不是这样。如果你认真留意一下程序员的技术发展历史,你就会发现这可能是一个最没有竞争壁垒的职业了。我读大学的时候最流行的架构是C/S架构,最流行的软件是360和QQ,那个时候一个精通Windows客户端编程的程序员可是很吃香的,随便写个管理软件外包都有很多油水捞。可是,如果这个程序员放到现在呢,对不起,现在都是移动开发和B/S架构了,甚至大部分新的客户端都是用webkit架构的,不熟悉网页开发的话你能应聘的公司都很少了。即使在那个时候,你有提前看到了Web2.0的趋势,把精力都放在web开发上,把web的技能点都点满了。好,让我们看看那时候的技能点,prototype,ie6.0以上浏览器的兼容性,ajax异步编程,extjs,jquery,bootstrap等等。嗯,2017年的今天,对不起,我们现在流行react,vue,es6,webpack,2013年的技能点对于我们来说那都是远古时期的技能了,一点用都没有,都重新学过。即使在后端,那个时候最吃香的技能是虚拟机,orcale调优,java ee,ruby on rails。呃,在这个云计算的年代,容器,nosql,微服务,spring,golang才是主流好么。当然,我不是说新技术不好,我只是想说,在IT领域,最大的不变就是变化,要想在职业市场上保持竞争力,你需要不断地学习和拥抱新技术。如果你一旦停下来,你所丰富的软件开发经验可能会成为你的绊脚石而不是竞争壁垒。听听国内的IT公司对外最常说的一句话是什么,我们公司很年轻,平均年龄还不到30岁。似乎就是在对外说,我们公司没中年人,没老人家,效率高活力好,快点来。一方面来说,IT行业可能是对年轻人最友好的行业了,年轻人只需要学习最新的技能就能在职业市场上轻松打败老一辈的程序员了,可另外一方面来说,对于老一辈,他过去所学习到的技能更像是包袱,而不是壁垒。

你可能会认为你是公司的老员工,老板不会忍痛炒掉你。可是,在这个社会主义金钱为上的社会,老板是不会跟你谈什么人情的,就像是你年轻时看哪里工资高就往哪里跳槽一样,也不会跟老板谈什么人情。

所以,在国内绝大部分的IT公司而言,程序员的中年危机,就是一个注定会发生的事情,没有人躲得开。你的出路,要么是憋在这个公司领着被新人倒挂的工资,要么早早转行做其他岗位吧。

如果你执意要做一辈子的开发,我想国内目前这样的环境是并不合适的。因为,依我来看,在IT开发中,只有底层设施开发领域,才能做一辈子的开发的。golang,mariadb,git,redis,这些大名鼎鼎的底层设施,它们的发明者无一不是上了年纪的中老年人。为什么,没有经历过大规模的软件开发,是开发不了合适的好用的底层设施的。就像golang一样,它的父亲是Robert Griesemer,Rob Pike 和Ken Thompson。

  • Robert Griesemer:曾协助制作Java的HotSpot编译器和Chrome浏览器的JavaScript引擎V8
  • Rob Pike:曾是贝尔实验室的Unix团队和Plan9操作系统计划成员,与Thompson工同创造了UTF-8字符编码
  • Ken Thompson:是C语言和Unix的创造者。(1983年图灵奖和1988国家技术奖)

每个都是有大规模软件开发和语言设计经验,才会找到当前程序语言中的痛点,无法在并发的易用性和性能达到一个平衡。多进程或多线程模型非常易用,但是创建和切换的消耗太大了,IO多路复用事件模型性能最好,但是程序员需要写很多回调(像nodejs一样,目前nodejs的改进加入async,await来解决这个问题,但这样会带来额外的消耗),易用性很差。所以才会创造出golang的基于轻量的用户级线程的模型,达到了一个很好的平衡。

在软件开发中,底层基础设施的需求一直都是稳定的,难的是需要不断找出更好的方案出来,在各个要求上达到一个合适的平衡(编程语言中的易用性和性能,数据库中的ACID和分布式)。不像业务开发,实现不难,难的是需要适应不断变化的需求。所以,在底层设施开发领域上,相对来说,是更不容易有中年危机这个问题。但是,这个领域其实总需求量不大,对技术要求本身也是比较高的。而且,在国内的IT公司而言,这个领域的需求就少得多了。

说了这么多,总结一句就是,对于大部分的程序员而言,中年危机几乎就是板上钉钉的事情。不要埋怨,毕竟在IT行业,程序员的10年薪酬就差不多顶上其他行业的20年了,没有几个会计师是能一出公司就是万元薪酬的,而程序员则是遍地都是。

怎么应对,最好的方法是做好转型的准备,成为一个复合型的人才。对我而言,我觉得做投资就挺好的。在投资领域,几乎就是越老越值钱,巴菲特,索罗斯,西蒙斯,上世纪中期他们是投资领域的大佬,过了半个世纪了,他们还是大佬。为什么,投资界的风起云涌需要强大的心理支撑,没有经验的人是做不成的,而且越丰富的经验,也能避免他们犯同样的错误(亏钱)。另外,即使他们的收益率比别人低一点,但也比新人的起点基数多太多了。

还要我介绍多一个越老越值钱的职业?嗯,没错,就是老中医。你有听到过年轻的中医生被人说医术高明,经验丰富么,反正我是一个都没听到过。大众对于老中医这个名词的迷信简直到了宗教狂热的地步,这也算是一个中国特色吧。

相关文章