软件技术人员关于中年危机的思考

在2018年的1月,公司要从广州迁到深圳,很多同事都借此契机离开了公司,同时又能获得一份丰厚的赔偿,而我也不例外。我实在不愿意离开生活的城市广州,远离家庭在外打拼,不是不能挨苦,而是深刻知道家庭才是根本,再好的待遇也比不上家庭的温暖。

既然决定离开,就意味着再就业。作为一个软件开发人员,对自己的技术还是有信心的,但是如果加上年龄这个大前提,我可能就并没有那么自信了。这就是大家常说的中年危机吧!以前从来没有思考过这个问题,认为这个问题离自己还很遥远,然而,在不知不觉间,它已经来到面前,还不得不去正视它。

对于年轻人来说,可能是无法体会中年危机。有一句口口相传的话:人到三十而知天命。何为天命,就是年龄大了,很多事都变得力不从心,而对天命我们往往只能无可奈何,望天唉叹。在软件行业,中年危机这个问题暴发得更早、问题更普遍,这完全是因为软件行业的特征:

  • 工作压力大,加班是常态,意味着需要透支更多的精力,也就意味着年纪大的熬不过年轻的。
  • 除了工作之外,还需要大量的业余时间学习才不至于被淘汰。年纪越大,需要花更多的时间在家庭中,时间也会比年轻人少,而且精力也是一个问题。

基于此,我向自己提出了两个问题:

  • 我是否能一如既往地透支自己的身体来应对高强度、长时间的工作呢?

显然是不可能的,我的身体已经发出警告信号了,如长时间对电脑会有头晕不适感,时间长了精神越来越难集中了,如此下去,身体必定耗不起的。

  • 我是否能对软件行为一直抱有热诚,并能跟上日新月异的技术变革呢?

热诚是毫无疑问有的,但能否跟上浩瀚如烟海的技术就不太自信,因为技术更新实在是太快了,要完成日常工作已经不容易了,更何况要花大量的时间去学习,而且还要花时间照顾家庭呢?

我对这两个问题的回答实在让我一度陷入迷茫之中,似乎再在这个行业做下去,只有“死路一条”啊。但再细想一下,国外的大龄开发人员是如何生存的呢?它们是否也存在中年危机问题呢?显然是存在的,但并不至于“死路一条”。在国外,加班情况似乎很少,工作压力虽然也大,但不至于不可控,缺少加班的他们是否会缺乏竞争力呢?恰恰相反,国外开发的软件不但质量高于国内,而且为软件制定标准的基本上都是国外的企业或组织。这就很奇怪了,为什么我们花的时间比别人多得多,却做不出好的东西?这个问题其实在离开公司前就已经隐隐有了答案,我认为根本原因是:

  • 国内的开发人员很多都缺乏软件设计方法的思想,没有思想基础的软件很难做得好
  • 软件企业为了业务进度过度地压榨开发人员的时间,令开发人员疲于奔命,而导致开发人员缺少时间去思考和提高,从而导致毫无成就感的重复劳动,而产生厌恶情绪,只有极少数开发人员有意识地去提升自己
  • 缺乏知识的传承,本来在工作过程是最好的学习过程,但在工作过程中缺少代码复查和人员的培养,使得知识的来源比较单一,网络或书籍。

简单归纳一下就是国内技术人员的水平还是比较低的,而国内企业想通过不断压榨开发人员的时间来提升软件质量的做法是行不通的,因为它们不知道好的软件就像建筑一样需要有好的设计,好的设计源于高度思想觉悟的。

另一方面,如果我们的水平高了,那么做事的效率自然可以提高,加班自然就变得有点多余了。但是否技术水平上去了,加班就必然会少呢?问题并没有如此简单。

软件开发工作的任务主要来源于产品需求,产品需求的质量直接影响我们的工作量。一般产品需求的质量都是值得怀疑的,这是基于“人人都是产品经理”这样的口头禅而得出的结论。这就要求开发人员懂得过滤不合理的产品需求:产品需求必须能很好地服务于业务目标这个大前提,每个产品需求都应有其期望值,还要有一种正确的软件开发过程管理,如XP。除此之外,工作方法和工作方式都会影响到我们效率,比如多思考如何减少重复劳动就是一种好的工作方式了。

另外,如何应对日新月异的技术更新迭代呢?这在阅读“领域驱动设计”以及软件过程方面的书籍的时候找到了答案。

我相信技术的更新迭代速度没有一个人能完全跟得上的,那么我们如何应对呢?首先需要明白不要为了学技术而学技术,而应该为技术找到其归属,技术的归属就是领域或业务,因为领域的需要才有了技术的存在,因此我们不需要学习所有的技术,而只需要深入学习与领域相关的技术体系就够了,而对于一些新出现的技术,只需要有了大概了解,在领域需要时能想起它就足够了。

最后,我还要回答一个问题:我的竞争优势有哪些?

  • 丰富的工作经验及较深厚的技术功底
  • 多年的工作的磨练使得做事更成熟稳重,更谨慎
  • 多年的工作经验有利于软件设计思想的形成和升华,这是刚出道的小伙子无法办到的

It’s not bad!

这样看起来我的中年危机并没有想像中的那么糟糕,为了更好地过渡中年危机,我给自己休息了几个月的假期,休息是为了弥补自己在技术上的短板,包括阅读了一些软件思想方面的书籍,让自己站在更高的角度去看待软件开发,阅读了大量的核心技术的源码。

最后为自己打气:为了工作得更有成就感,为了没有加班,加油努力吧!