虽然我还是一个不到30岁的程序员,但是最早接触算法和数据结构时候才11岁,如果把这算为接触到大学相关的程序设计,到现在也应该奔四了呢。

为什么突然想到中年危机?

一个处在大好年纪的人来谈中年危机,可能有点为赋新词强说愁的既视感。但有个很重要的原因,让人不得不正视这个问题:我 是 程 序 员

最近华为大面积裁掉40岁以上码农的新闻议论纷纷,人心惶惶。

2017年华为准备的变革措施包括:

1、为保持公司年轻化:退休政策即将微调,从45岁可以退休,变成45岁须退休,想继续工作的,需人力资源部重新审批。

2、45岁如果是管理岗,或者对公司有杰出贡献的人才,公司也希望保留,混的不好没有潜力挖掘的老员工,人力资源审批肯定通不过,要强制退休

3、大调整:业软绝大多数部门划到GTS,仅留研发强相关部门在研发体系。业软产品线因为这几年做的不成功,部分组织人员要划到GTS(即交付工程,属于售后)服务部门去。

4、CBG逐步独立化,大中华区独立只是一个开始,明年全球开始与片联剥离,逐步独立经营

先不评价华为把40岁以上码农调去做售后这种间接'裁员'的做法。单就程序员的职业性质来说,中年危机随时可能出现,且不以年龄为标准。你可以理解为,这是一种职业型的'大龄恐惧症'

我的症状

我也曾经搞过计算机竞赛,这些日子又开始做一些比赛,突然发现一线coding的能力下降了不少。有的时候遇到的题目需要一个平衡树,跳跃表之类的数据结构,却没有办法在二十分钟,半小时内写出正确的程序。硅谷有很多优秀的人才,但也有一种浮躁的氛围。一天刷刷LinkedIn,看看认识的朋友都在做什么。突然发现有些和自己差不多时间开始工作,或者早工作一年的同学突然成了manager,head。也有更优秀的人去当了CEO,Cofounder,突然开始着急起来。

但急有什么用?

Python的设计者Guido van Rossum从前说:'对于我来说,它和创作性联系十分紧密,而这对于我的工作非常重要。如果(计算机编程)其中没有艺术,它将没有任何乐趣,而我也不会再30年之后仍然从事它。'

为了实现同一个目的,不同的人可能会写出不一样的代码,有的优雅,有的笨拙,有的可能会故意弄得让人无法理解,目的是要参加出名的混乱代码大赛(IOCCC)。看网上有一句说的很好的评语:'同样是工作了10年,有些人积累了10年的工作经验,有些人则积累了1年的工作经验然后重复了10年。'知乎上有人说,你可以把这两类人分别叫为Engineer和Coder,我觉得,你也可以将这两类人区分成搬砖的码农盖房子的编程艺术家

Engineer vs Coder 码农与编程艺术家

其实,写程序是一门艺术,也是一种越沉淀越香的工作。程序员也是一种匠人,好的程序员在写程序的时候会抱有一种匠心。说回程序员的中年危机。在工作中我遇到过不少码农和艺术家,他们都在自己的工作岗位上发光发热着。我曾有幸和Daniel Tunkelang工作过一段时间,他大概是在98年开始工作的,虽然我并没有问过他的年龄,但是估算一下应该过了中年危机好多年了。

career-004-1

幸运并且聪明的他找到了除了在办公室写程序外适合自己的一条路,做高端咨询服务。和他聊天的时候听说,他年轻的时候其实并不是一个擅长演讲的人,他没有选择避开做自己不擅长的事情,而是学着努力去在各种情况下表达自己。从最开始写自己的blog做起,那时候刚毕业的他没有什么知名度,所以blog主要做一些会议记录以及评论一些名人的发言。因为那时候各项会议刚刚开始,很少有人做会议记录并且发布在网上;另外有的业内名人喜欢Google自己的名字,看到这里有评论有时还会来说一两句。这两点帮助他得到了一定的流量。后来他发现了一些给talk和meetup的活动,通过在普遍内容比较差的talk和meetup中给一些精彩的演讲,给人们留下深刻的印象。最后他通过SEO来优化自己,占据了一些当时冷门但是现在满热门的关键字,比如Query Understanding,从此红的一发不可收拾。

另一个突然想提到的就是我的前mentor,Charles Gordon。比起之前这个网红,Charles相对低调不少。在Amazon股价只有$12的时候加入,现在的股价则是一股$800,真是不用加入startup也能够获得6666%的投资回报。他在Amazon从普通的Engineer一路爬到Principal Engineer,然后到Pinterest带领我们做很多Infrastructure上面的项目。给我留下深刻印象的,不是他为一家创业公司新作了多少feature,带来了多少用户,而是他对每一个项目代码上的严谨,架构上的可扩展性保持,以及不断学习的生活态度。在每一次代码审查上,Charles都给我留下很多意见,因为他解释的很仔细,所以这样的审查带来的不是工作上的障碍,而是学习到新知识的收获。另外他还组织对分布式系统(Distributed System)的研讨,在公司开讲座一起讨论Google发布的重要论文,以及出一些公司代码和小测验提高我们。这些小的活动不仅让我们学到了如何应用高级知识,也帮助他不管巩固经典理论,举一反三。其实除了这些'老'外,中国同事中也有很多我觉得非常优秀的同事,平时我都称他们老师,他们的故事我都可以另起一个开头,讲好多页纸,但是怕他们读到不好意思。

讲了这么久艺术家,有那么一丝丝跑题的感觉,我其实并没有和他们深入探讨过他们是否有中年危机。但是在我看来,他们都有着深厚的积累来帮助他们抵挡生活中的危机。

再过两周我就迈入工作四年了,也许是时候回顾一下自己积累了什么,或者重头开始把某些知识积累一遍。有三件事今年会去细致做一下:

第一,回顾一下从前的假积累。工作以来书签栏也经过几次整理,到目前收藏了488个链接。之所以说他们是假积累,是因为很多内容我都还没有深入理解,转化为自己可以表述出来的知识,所以是时候仔细学习收藏夹里的干货。

第二,在这一年读两本经典图书,回顾两门重要课程。这也是工作之后意外的发现,大学学到很多认为可能用不到的知识其实在工作中应用非常重要。比如如何在AWS上搭建一个适合自己应用的分布式系统,Lucene和Redis中最常使用的跳跃表,支持深度学习的最基本的神经网络及其算法。

第三,乃是生活阅历上的积累。很多人向上爬的顺利并不是因为技术水平如何,而是在与人交流上更胜一筹。

今年我想先从咖啡和红酒做起,看看自己什么时候可以熟练地'背'出不同产地咖啡的口感和特色,并且在送人红酒作为礼物时能够说出不同的酒厂的位置,那一年的那种酒好,以及口感。从这些小的兴趣爱好开始积累。

据说,每天都有10个在职码农选择到来offer进修