简评:程序员的职业生涯和 NBA 篮球运动员大致相似,你怎么看?随着年龄的增长,程序员可能要多想一想出路。但不管如何有一点是一定的,时刻保持学习!(本文翻译,我代表原作者)
纽约时报做过一份调查报告(Op-Ed piece from The New York Times ),其中引用了 NSF(美国国家卫生基金会) 和人口普查局的数据,其中关于软件工程师的职业生涯的数据令人惊讶。
大学毕业 6 年后,57% 的计算机毕业生作为程序员在工作;15 年后,34% 作为程序员在工作;20 年后,他们已经步入 40 岁,这个数字下降到了 19%。对比之下,土木工程系的数字分别是 61%,52%,52%。
(当然这份报告忽略了很多程序员是非计算机系、或者没有上过大学)
但不得不承认,软件工程师确实很容易贬值,英特尔总裁兼联合创始人克雷格·巴雷特(Craig Barrett) 1996年的评论:
工程师,软件或硬件的半衰期都只有几年。
诚然, 他当时是高管,但是他也是个 57 岁的前工程师,却还坚持软件工程师年龄大了就不行了的歧视性观点。像这样有影响力的业内人士都认为,程序员和职业篮球运动员的职业生涯寿命大致相同,这是很可怕的。
我接受这个说法
相当多的文章观点在强调程序员的生涯短,但归其原因,还是因为这一行业的快速变革导致的必然结果。
我们要注意到计算机领域的一些特点:
- 员工的市场价值主要取决于与雇主有关的技术经验。
- 至少每 10 年软件工程必然发生重大技术变革。
- 技术转变并不能完全抵消老程序员的技能,但是对于最新的毕业生来说,老程序员与新程序员肯定存在一个竞争环境。
对此,我们可以听听在这软件行业深耕了多年的老前辈们,是怎么看待这个问题的。
bwanab(网名):
我是个 60 岁的老程序员,编程一直贯穿着我的职业生涯,哪怕是现在我也依旧在敲代码。现在我的薪资处于停滞状态的,但尽管如此,我发现最好的小幅提升的方法是换工作,这很悲哀,但却是事实。我离开过一些相当体面的工作,因为别人愿意支付更多的钱。这在我职业生涯的每十年都是如此。
我总是在自我抵制去做管理,我所了解的从编程转入管理岗的人,他们大多数都不是真的喜欢编程,而是把编程当做一个跳板,一个职业生涯的手段。对于非学术性的任何 STEM(科学Science、技术 Technology、工程 Engineering、数学 Mathematics 集合的缩写)领域也都是如此。如果你想要做管理,当你就告诉老板,如果你不想做或者想做做不成,都要直说。任何靠谱的老板都非常想留住开发人员,并且满足他们继续编程的愿望,如果你不说,他们可能为了留住你而把你推向管理层。
我不建议你成为任何一个编程语言的专家,因为你不知道将来会发生什么。做一个通才,但要不断的学习你可以学的一切。到目前为止,我已经在 COBOL,Basic,Fortran,C,Ada,C ++,APL,Java,Python,PERL,C#,Clojure 和各种汇编语言中专业地编程,其中每一种我都可以成为一名专家。另外需要提的是,哪怕在一个新环境(新语言)上,反复做同样的事情会让你变老,这是真实的,我自己不知道如何避免这种情况。我认识个和我差不多年龄的老伙计,他仍在古老的系统上作为一名 COBOL 程序员而工作,但是所接触使用的都是与时俱进的新知识,所以他每天都显得生机勃勃的。
现在最重要的是如果你想继续编程,而你又不在学术界,你想让编程溶于血液,想因为编程而获得体面的生活,如果你想要做一个好程序员,你必须学习,你的梦想是敲代码,那么别管是银行系统、流程控制、联系管理还是 App 开发,只要它是程序就没问题。作为开发者你编写的东西对某些人至关重要,或者有些人压根不知道你所做的贡献,没关系,重点是你在编程,了解你所编写的内容比工作本身更重要。你需要一些资源来实现你的想法,那你就要掌握这些资源(知识),如果你做不到那就想办法做到。 Never stop learning.
KentBeck(网名):
我马上就要 53 岁了,我花费大量的时间在 Facebook 上指导年轻的程序员(他们年龄真的都很小),我们结对编程,我们探讨问题。我为一些投机性项目(speculative projects)工作,有时候面向消费者,有时候做一些编程工具,有时候做基础设施。我还研究软件设计和创新的传播理论。
我用了 10 的远足成为了一名精神导师,但是我现在还在编程, 并且打算一直保持。我喜欢编程,我从来不认为自己是个管理。我想我早已到了工资上限,但是我对现在的编程工作感到很满意,我不在意工资随着年龄的增长而下降,当然我的经验可能不值得学习。
我热爱编程,但编程于我越来越难,我的记忆力、专注度、一般性认知都有明显的下降,但是我通过更好地挑选重要的问题,匹配我的经验知识库而不是恐慌地应对。
几年前我开始学习 Haskell,这真的有助于扩展我的编程风格。我还是不太喜欢这个语言,但对我来说很有帮助。我也在学习 React 和 reactive style of coding UI。活到老学到了,程序员更是。
ColdCode(网名):
我 56 岁半,仍然在编程一线,一个字一个字的敲着代码,从雇主手里赚些钱。我的诀窍就是不断学习新东西,我的整个职业生涯总是在最重要的技术转型期保持领先地位。有时候人们不想面试你,他们认为你老了,面试也没什么意义,通常这些人压根就没看过你的简历,阅读你的 blog,你的采访或者 Github。但有的人会用另一个角度去思考,认为年龄和视野、经验紧密挂钩。你要找到后者,避免前者。
有些人不学习任何新东西,变得有点过时,他们或是成为了管理,或是不得不重新学习编程。很多人没意识到这个问题,但是如果你想要在编程这条路上走下去,必须心怀若谷,时刻求道。
以上的这些程序员都热爱者编程,把敲代码看成一种信仰,一种生活方式,甚至把编程当做一种人生。如果你想成为他们的一员,你需要明白一些事情:
- 通才很重要
- 语言的新旧,技术的新旧不是决定因素,不论再老的平台也有新知识
- 当到了一定年龄,要明白资源整合,知道如何实现
- 薪资到了一定年龄,就存在天花板
- 经验和视野在年龄大了,比精力和敢打敢拼更重要
- 永远,永远,永远不要停止学习
不过我们知道,不可能所有的程序员都敲代码到老,也有些程序员需要另一条出路。
PlanB
我认为,准备走管理路线的程序员,对于编程本身可能不如上述的「纯程序员」要求高,毕竟没有多少人真的会在电脑前敲一辈子代码,很多技术人员都希望能够「毕业」,成为管理者。但在成为管理者之前,你要了解到:
- 中层管理人员往往会比高级软件工程师做的更多
- 由于管理人员不直接使用最新的技术,因此越来越难以跟上技术的发展
- 会议、办公室政治、处理各种不切世界的要求几乎成为了你的生活全部
- 即使不是你的错,也是你的错
- 即使你成功了,也是团队的功劳
- 技术专家、技术人员的技术能力比管理人员强多了,所以你要想各种办法能够让程序员们服你
- 你将被迫做出影响他人生活的决定(薪资、奖金、开除等),有时候非常痛苦
- 电脑是可控的,人是复杂的,你会幻想拥有机器人员工
- 有回报但挑战颇多
世界上最难的事情就是你知道事情怎么做,并且看到别人做错了这件事你还什么也不说。-Theodore H. White.
逃避很正常,但总要做出选择,所以要趁早
程序员随着年龄大了,竞争力会有所下降,转行率会上升,这个必须承认,但这个行业赋予了年长的程序员一些特殊的机会,比如成为专家顾问或是中高层领导者。
其实说白了,程序员三条路,走纯技术路线,走半技术路线,走非技术路线。
非技术路线在这先不细说,但如果还想要在计算机 IT 圈混,随着年龄的增大,要不就成为技术大咖,要不就成为管理者,但不论怎么走,你都要在学习中摸索。
正如高尔基所说:「人的天才只是火花,要想使它成熊熊火焰,就只有学习,学习!」
原文:Programmers: Before you turn 40, get a plan B
网友 bwanab、KentBeck、ClodCode 的语录出自:Ask HN: What happens to older developers?