在纽约,每年都会有 600 名程序员参加一个叫作 PyGotham 的大会。大会组织者知道科技行业多为男性和白人所盘踞,因此他们努力邀请多元化的演讲者。他们在邮件列表中为女性和有色人种程序员做宣传,并为技术女性举办研讨会,鼓励她们表达自己的想法。
我在大会委员会任职,在今年的 PyGotham 大会结束之后,我意识到我们忽略了一个群体:老程序员。与女性和有色人种在技术方面的代表性相比,四十岁及以上的程序员并没有引起我们的注意。在纽约,并没有针对他们的大会或邮件列表,也没有专门针对他们的倡议组织。
软件行业的从业人员相对年轻。谷歌和亚马逊员工的年龄中位数为 30 岁,而美国工人的年龄中位数为 42 岁。2018 年,Stack Overflow 对全球 100,000 名程序员进行的调查发现,有四分之三的人未满 35 岁。Hacker News 上有一个帖子问道:“老程序员都去哪儿了”?30 多岁的开发者焦虑地称自己为“老年人”。
我今年十月就要满 40 岁了,已经在纽约的 MongoDB 公司工作了七年。很多我这个年纪的程序员已经回炉重新学习,要么改行,要么成为管理者。作为一名程序员,我想写一辈子的代码,但未来几十年的职业前景似乎不是很明朗。令人不安的是,在我认识的比我年长的工程师中,很少有我可以效仿的例子。所有年长的程序员都去哪儿了?我们这些留下来的人的职业前景将何去何从?
2007 年,22 岁的扎克伯格大声说出了很多软件行业人士的想法:“年轻人更聪明”。十二年后,与其他多样性问题相比,缺少老程序员的问题仍然很少被关注。例如,谷歌的年度多元化报告统计了公司女性员工或有色人种员工的数量,微软统计了美国印第安人和阿拉斯加原住民的员工数量,苹果公司很自豪能够雇用退伍军人。这些公司揭示了多样性方面的衡量标准,这是值得称赞的,但他们都漏了另一个东西:他们都没有报告程序员的年龄分布。
Ari Rapkin Blenkhorn 是一名 47 岁的工程师,她说她之所以辞去上一份全职工作,是因为公司想要“一群廉价的年轻人,他们不想再为具有多年职业经验的资深人士埋单”。
Blenkhorn 说,一旦回到就业市场,她将受到来自年龄和性别双方面的歧视,导致情况变得更为复杂。尽管她在技术方面取得了巨大的成就,但在招聘人员看来,她是一名“妈妈”,所以她在技术方面的成就也就变得无关紧要了。她最近拿到了一个计算机科学博士学位,并希望这能提高她在就业市场中取胜的机会。
现年 55 岁的程序员 Kevin Stevens 在六年前申请 Stack Exchange 的职位时也面临类似的问题。面试他的是一位年轻的工程师,他说,“年长的程序员能够跟上技术的发展步伐总是让我感到很惊讶”。Stevens 最后被拒掉了。他现在是一家服务类公司的程序员,他说在现在的公司年龄不是问题。
对于其他程序员来说,结果可能会更糟糕。来自 ProPublica 的 Peter Gosselin 和 Ariana Tobin 在 2018 年对 IBM 的年龄歧视问题进行了调查。他们发现,从 2014 年左右开始,IBM 试图通过用年轻员工取代老员工来重塑自我。一位名叫 Ed Kishkill 的 60 岁系统工程师收到了一份裁员通知,他有三个月的时间在 IBM 另找其他工作。尽管他有数十年的经验,但仍然被其他所有部门拒绝。在 ProPublica 发布调查报告时,Kishkill 正在担任 Staples 的店员。
老程序员必须保持他们的技能与时俱进,在不断变革的行业中与时间赛跑。2018 年的一份研究报告显示,科学、技术、工程和数学(STEM)方面的技能要求比其他行业变化得更快,而针对程序员的需求变化得尤为严重。该报告的作者之一 Kadeem L. Noray 表示,“STEM 比其他领域更看重技能”,对短期竞争力的重视程度高过长期的智慧。STEM 专业人士每学习一项新技能,另一项技能就会过时,几乎没有机会将技能累积起来作为增加工资的筹码。
尽管技术领域的起薪很高,但与其他领域相比,他们的优势在就业的前十年减少了一半。Noray 说,“大多数经济学家都不知道这一点”。来自 Hired.com 网站的一份报告表明,50 岁以上技术从业者的薪水实际上低于年轻人。因此,很多 STEM 工作者改行到变化较慢且薪资有上涨空间的行业。在 24 岁时,有 89%的 STEM 专业人员从事 STEM 工作,但到了 35 岁,这个数字下降到 71%,此后继续下降。
程序员想要留在技术行业但又不从事具体的技术工作,其中的一种方式是成为管理者。马萨诸塞州的一位 54 岁的工程师告诉我,“我的公司为新人提供了很明显的职业发展路线:他们进来时是开发人员,然后一路发展进入到管理层”。
但并不是所有人都适合做管理。54 岁的 MongoDB 高级工程师 Sue LoVerso 告诉我,“管理者需要具备个性特征,我是一个内向的人,解决技术问题才是我最感兴趣的”。一位 63 岁的谷歌工程师曾经做过一小段时间的经理,那段时间让他感到很不适应:“我知道自己可以很好地完成一份工作,但我不知道该如何让其他人也这么做”。
作为成为管理者的替代方案,谷歌、微软和其他大公司提出了“个人贡献者(IC)发展路线”,这是高级工程师的职业发展阶梯,与管理者阶梯平行。IC 发展路线让工程师可以在不放弃自己喜欢的工作的前提下顺着资历的阶梯往上走。
但 IC 发展路线也有一些问题。我采访过的一些程序员说,IC 发展路线的晋升速度非常慢,而且头衔之间的区别也很模糊。45 岁的 MongoDB 工程师 David Golden 表示,“在技术晋升路线上,要进入下一个级别,我需要面临更大的障碍。目前还不知道如何从一个级别跳到另一个级别,也不知道具体该做些什么”。
基于对六位程序员的采访,我已经很明白,公司应该为资深的个人贡献者创造不同的角色,并根据候选人过去的成就来做出评判,就像评判管理者一样,而不是通过快速变化的技能清单来评判他们。更高的清晰度意味着工程师可以更快地往上爬,每个级别给他们带来的声望和新的智力挑战为程序员提供足够的动力进入到他们的五十岁和六十岁。
处于越高级别的工程师应该在关键项目中解决越棘手的问题,他们应该通过写作、演讲和指导来彰显他们的技术领导力。
由于丰富的经验和深厚的知识积累,年长的程序员能够将知识转化为通俗易懂的术语,因此他们能够充当与非编程世界相连接的桥梁。Ari Blenkhorn 在工业光魔公司领导布料模拟项目时就担任了这样的职位。她说,“尤达的长袍、哈利波特的斗篷、摄魂怪的长袍——所有这些都是我帮助一起开发的。我需要与物理模拟研究团队和动画团队沟通,了解他们的专业术语。他们不会偏微分方程,他们只知道布料是柔滑有弹性的,就像风中的涟漪”。
我很幸运:我的公司能够理解我的中间职业倦怠,并让我开始了一次专业探索之旅。今年,我将在三个团队中分别轮岗几个月,看看以后适合做什么。
其他公司不见得有这么慷慨。我特别担心这个行业的大龄女性和有色人种,他们会受到双重歧视。公司必须为在 IC 发展路线上前进的程序员定义有意义的级别。与此同时,程序员应该更加积极主动,向公司施加压力,反对年龄歧视。工会可以制定工资标准,保护高级雇员免受裁员,这样做还可能可以缩小种族和性别方面的薪资差距。
软件行业应该更加欢迎三十岁以上的程序员,并为经验丰富的程序员创造合适的角色,这将使公司变得更加有效,更加公平。这些变化也将为我们带来好处——在一个越来越受软件和算法支配的社会中,程序员必须具备一定的智慧来匹配他们的能力。公司必须从最近发生的黑客事件、有偏见的算法和在线煽动种族灭绝事件中吸取教训,让大龄程序员在行业中逗留足够长的时间,让他们将知识传授给后继者。培养终身程序员可以确保今天学到的经验教训在 50 年后仍然有效。
https://onezero.medium.com/ctrl-alt-delete-the-planned-obsolescence-of-old-coders-9c5f440ee68
对于中国的大龄程序员来说,情况又是怎样的呢?
国外的环境跟国内在一定程度上来说确实不一样。在欧洲老龄化严重,劳动力供不应求,所以大龄程序员不会被嫌弃,而且欧洲公司不加班。在 InfoQ 的访问中我们了解到,很多人见到的年纪最大的程序员近 60 岁。其实你不会在 35 岁,45 岁或者 55 岁的时候失去写代码的能力。所以,不要觉得程序员到了 35 岁了就“死了”。
在 InfoQ 社区,因为样本量大,我们也了解到有很多程序员都是一直走在编程的道路上。有从创业团队技术总监不断学习进入阿里现在已经是高级技术专家的;有从毕业就踏上软件行业从一个普通工程师成长为高级工程师、架构师、大数据工程师,热衷于学习新技术抽空还能翻译技术书籍的。
InfoQ 的一位社区编辑一直在一家软件公司工作,除去中间短暂的一段时间,几乎在这家公司工作了十几年,目前负责架构设计,依然写代码。对于大龄程序员继续写代码,他这样看:
公司招的程序员肯定越来越年轻了,我现在的公司主要招应届硕士,自己培养,所以新员工基本都是 90 后了。现在的年轻人思维活跃,学习能力普遍很强,但是有一些个性,喜欢有挑战性有意思的工作,像一些简单的增删改查的活儿不太愿意干,而且稳定性略差,入职工作两年左右离职的挺多的。
我觉得应该遵循一种增量式学习的思路,掌握基础知识,学习新东西可能就不会那么费时间了。随着年龄的增长,在基础业务编码方面,肯定比不上年轻人,但是积累的经验和知识可以发挥到更高的层面上,比如做一些前瞻性的技术预研,指导年轻人学习,解决一些棘手的实际问题等等。
好的道理我都懂,那么要跟年轻人竞争,大龄程序员怎么提高自己的核心竞争力呢?
《创新者的窘境》一书中提到,机构的能力包括:
资源
流程
价值观
资源包括时间,技能,金钱,人脉等;流程指的是解决问题的方法,思维模式等;价值观就是你认为什么重要。
这三点放在每一个职场人身上也同样合适。对于技术人来说,你会的编程语言和工具都是资源,框架设计,逻辑思维,数据分析这些都是流程,你是热衷做技术还是喜欢做管理,这就是你的价值观。
一位职业规划师在一篇文章中说道:
决定程序员是否具有优势的,是思维能力,是解决问题的框架,是快速学习,是自我管理,是创新与创造,是这些应用流程方面的能力。而这些,都需要时间的沉淀和项目的历练。这正是大龄程序员的优势:他们的阅历、思维、解决问题的框架往往都得到了充分的历练和实践的检验,遇到问题时能够更快找到更合适的解决方案,先人一步在头脑里创造出最终的形象(第一次创造),然后在充分思考后用代码实现出来(第二次创造)。
几乎所有人在谈到职业发展的时候都会提到要保持终身学习的能力,这个是跟年龄没有关系的。多学习,就是要注意提高自己的核心竞争力,也就是淬炼出自己良好的思维方式,解决问题的流程,通过思考层面的创造工作体验自己年龄的价值。
作为大龄程序员,要认识到自己的优势,尽量扩大自己的影响力,保持工作热情依,靠努力工作带来的成就感,形成努力-收获-更努力的正循环。
比起年轻人,年长意味着过去的经历都是你的资产。到了中年,一般家庭生活也偏于稳定,就业也更倾向于稳定一些的,重视自己的声誉和职业成就感。如果是在一家公司工作多年,老员工会对公司系统更了解,你可以做前端,后台,构建管道或者监控,关于改善系统还有很多可以做的事情。你还可以重构新的架构。公司的新人对系统不了解,老员工可以更好地做这些事情。当然,这是对于你在大公司而言。
至于该不该换工作,极客时间专栏作者白海飞,一位在 IBM 工作了 14 年的软件商务系统经理的建议是先从物质保障、精神满足和能力发展三个角度看自己的满意度,再从下面三个方面评价一下你的工作:
可接受的薪酬,不要只拿薪水来定义工作的好坏,但是薪水很重要。在 Hack News 上有一个帖子讨论在一家公司工作十年是怎样的感受,那些回答在一家公司待了 5 年以上的人无不提及“get well paid for it”——报酬丰厚。
“合适”的事,做的事是否有挑战、有发展,不要只看公司大小,团队更重要。
“合适”的人,团队的信息共享程度,决定了配合度,而且一个好老板也很重要。
如果你下定决心要跳槽,希望你能梳理出自己的核心竞争力,进入到更好的平台。
愿大龄程序员,你的工作能充满挑战和新鲜感,能进步能突破,不要让年龄成为你的天花板。
点击下方图片即可阅读
996.ICU,中国程序员的呐喊与彷徨
我们看到“架构师”这个角色越来越多地偏向于技术领导力、架构模式识别和框架意识以及横切关注点设计。能力和责任是共生的,来架构师峰会上看看国内架构师们是如何升级打怪的。
扫描下图二维码或 戳阅读原文,了解更多详情!
点个在看少个 bug 👇