其他

番外丨对程序员来说40岁即是终结?10个四十岁以上的顶级程序员的故事

2017-05-07 🐯 BitTiger



编译丨Linsa


在美国,工作者的年龄中位数是42岁,而Stack Overflow 2016年的程序员调查中,程序员的平均年龄是29.6岁,中位数为27岁,40岁以上的程序员只占总数的12.7%。


2016年Stack Overflow程序员年度调查


那么其他人呢?他们被解雇了还是晋升到管理岗位了?对于程序员来说,过40岁是否就意味着终结?下面我们一起来看看10位拒绝了管理岗位,并活跃在开发一线的顶级“大龄”开发者的故事。


Rob Fletcher ·  45岁

Netflix 高级软件工程师

美国加州

 

我已经写代码有16年了。在当了几年的contractor之后,我在42岁那年以高级工程师的身份加入了Netflix。


我每天都写代码,现在最喜欢的语言是Kotlin,也想多学一点Go,平常用得多的是Java、Scala和Groovy。我一直在学习新的东西,哪怕只是皮毛。我觉得自己会是个不合格的管理者,所以我压根没想过要往管理方向走。


其实很多事情都取决于你的态度。不要成为那些瞧不起新技术的老顽童,也不要嘲笑那些用新技术的同行。用你的经验来判断去选择用哪种语言来工作。如果你选择那些最原始的老技术,是因为它们正好符合当前的需求,而不是因为熟练所以舍不得放弃积攒多年却即将过时的专业知识,也不是因为怕新来的年轻后辈用Go和Node JS来抢你工作。”


Ebbe Kristensen · 62岁

Prevas A/S高级软件设计师

丹麦

 

1980年的时候,我获得了电力系统的电子工程学士学位。从我的第一份工作开始,就是以开发软件谋生的。因为我的专业不对口的关系,我花了一年时间找工作。自那以后,我一直从是一名软件工程师。


我大多数时间都在编程,不处理任何管理的相关事务。因为很久以前就意识到我在管理方面是真的没有什么竞争力。


我当程序员完全是因为这是我热爱并且能够胜任的工作,如果我是个管理者的话,我大概会表现的很糟而且也不会真正享受这份工作。


在公司里只有两个同事年纪比我大,其他人(包括经理)都比我年轻。我的直属上司大概40多岁,他也是我碰到过最优秀的管理者中之一。我得到这份工作的时候我58岁,而我竟然不是公司里年纪最大的员工,有两个新同事比我还大,尽管如此,他们还是被聘用了。


有时候,你花几天甚至几个星期也无法学进去,但有时候你花几个小时就能高效学习,足以弥补之前的“损失”。但最重要的是不断寻找学习机会,并且抓住它。


John Brothers · 47岁

Make & Build 的资深软件构建师

美国佐治亚州

 

我喜欢解决问题,准确来说,我喜欢寻找新方法来解决问题。正因为如此,我的技能都能保持与时俱进。


与时俱进是我的宗旨-我最近在用NodeJS开发项目,我也用过Hadoop,NoSQL,开发安卓系统App,写过Go代码,还有熟悉JQuery和Bootstrap的各种特性。


我也一直关注Java最新动态,还有 Spring、JMS、REST、JPA和其他相关技术。

对其余技术生态系统也有一定关注,这些年,我会IntelliJ、Eclipse、Sublime、Emacs和Vi这些开发工具,每个我都可以熟练地运用去解决问题。一开始用CVS,之后又学了Subversion,最近在用git,以前也用过AWS。我还是认证过的Scrum Master,我兼顾负责和研发产品。我也写过很多自动化单元测试, 我构建系统的时候,测试驱动开发绝对是我最爱的挑战之一。


我不怕学习各种新东西,我曾用Ruby on Rail/Grails开发web应用,也用Perl、PHP和Python开发App以解决业务问题。我还有SOAP和AOP的相关经验。


全栈式研发员是我的目标,我熟悉UNIX,经常写shell脚本。我能在兼顾研发和销售的情况下,研发app,服务器和应用工具。我熟悉SQL和NoSQL,了解他们的优缺点。掌握了TCP/IP,我知道路由和DHCP的基本概念,还有各类代理。我构建过MVC应用,信息驱动的应用和EJB,还有Spring服务器。我也掌握前端的JavaScript和CSS开发。我没有想过成为一个UX研发大牛,但我至少能打下一个基础。


我其实打算再干21年,如果我们从Web开发转向D-wave服务器构建的话,或许我会落伍。如果函数式编程最后被统一的话,或许我也会掉队,但我也会保持乐观,见招拆招。 


Roger Whitcomb · 60岁

Actian Corporation的软件构架师、软件工程师

美国加州

 

在我进修律师的时候,就开始学习工程和计算机的道路(你可以想象一下这画面)…而现如今依靠着写大量高文档化和功能性的JAVA代码来维持我的收入。


我在windows3.0时代开始就在Windows上开发软件了(大概在1986年的样子,不太记得了)。大概十年前,我还是一往无前的换了Mac,然后完全沉醉在Mac Pro上用C、C++、Java的研发,当然还有Swift。


我最近的工作是从零开始设计一个系统,这也是我第一次碰到。现在我要跟上网页和移动开发的速度有点吃力,但尽管我60岁了,离“迟暮“还是很远的。这几年我收到很多相关”管理“的工作邀请,但我毅然决然的拒绝了,毕竟比起管人我还是更喜欢编程….但我听说很多和我年纪相仿(或更大)的同事辞职以后,很难找到工作(是因为“经验过多“了么?!),所以我明白了一些人认为高龄程序员就前途渺茫了。但我更愿意相信,最关键的是不断为雇主提供自己的价值。


我目前是Apache软件基金会Pivot项目的PMC主席。作为Java研发者(在Apache的Java项目负责人),我希望Java永远不要被淘汰,至少等我有足够时间转移我所有Java代码。。


Scott Gartner · 50岁

Silverback Learning Solutions 高级软件工程师

美国爱达荷州


我已经当了34年的程序员了,但我的简历只需要一页,因为所有五年以前的项目都是简略描述。我简历的第二页列举了我所熟练掌握的语言,也包括研发工具,数据库和动态系统等。在被问到的时候我才会展示出来。


对于我来说,在大公司里有个默契就是,当做程序员做到一定年数的时候就会想进入管理层。我一直面临相同的处境,但第一我并不擅长管理,而且第二我很喜欢做程序员或构架师。


我发现我的记忆大不如前,而且很难记住大型系统的全部模型。尽管如此,我多年来丰富的经验变得越来越有价值,发展出了自己的优势弥补了自己的劣势。


不得不承认,在职业生涯中,你必须要不断充实提升自己,世界变化的太快,如果止步不前,你终将被淘汰。


我平均每两年学一种新语言,一些是自己选的,但大多数都是为日新月异的科技发展需要或者职位需要,这也让工作变得不那么乏味。目前我在学数据仓库(OLAP)、ETL处理、Star Schemas和Cubes.

 

Brian Bowman · 56岁

SAS  首席软件研发师

美国纽约州

 

目前我团队的平均年龄是50岁,而且每个人都有20年以上的大型系统软件开发经验。


我和我同事花了大部分时间在编程、调试、测试和解答关于系统构架的问题。有些同事还参与硬件技术评估,研讨会演讲,和开源社区合作等。


在过去的两年里,我在这个拥有众多优秀软件工程师、计算机、应用数学等高学历专业的人才的公司里也算是拔尖。在这之前,我在一个小型的团队里工作了超过10年,我们从无到有的设计开发了一个多线程的集群元数据对象服务器。


团队中与我关系最近的同事比我大五到六岁。在那段时间,我获得了4个美国专利…但这都是在40岁后得到的。


我只要还能贡献我的价值,我就打算一直做下去。从早期的学习和研究到后来的工作需要,我不断为自己的职业生涯“充电”。做这些事是我本性使然,这也能激励我不断进步。


也许未来的10年里,对普通程序员的需求可能会大幅降低。如果一个人确实热爱计算机技术,但在编程中达不到专业程度,那么我建议最好转型去当专业系统管理员。配置,维护和部署系统的相关工作总是一直有需求的。


Alec Cawley · 60岁

DisplayLink 首席软件研究员

美国加州


在我62岁时,我是我们公司年龄最大的软件开发者,其他人大多数都是40或50岁出头。


我最年轻的同事还不到30岁,虽然有着35岁的年龄差,但这些都不是问题。


我们都需要接纳科技革新。现在的世界与我职业生涯刚开始那会(例如穿孔纸带时期的Fortran)已经截然不同了,而且一直在发展变化着。但是需要解决的问题却总是很相似的,例如,如何将人类的需求转变成计算机可以执行的指令,如何避免犯错、或者找出无法避免的错误。编程语言、开发环境、工具组、API等这些只是解决问题的手段,当你真正需要的时候才会去学习使用它们。

 

我最早开始是使用纸带,即使那会已经有磁盘文件时代,但从行式打印机里读取程序还是最方便的。后来就有了文本编辑器,而如今我在用具有语法高亮功能的IDE编辑器。

 

我觉得在10到20年的时间里软件开发员还是无可代替的。我认为软件开发者的工作就是把客户的需求转换成计算机执行的指令,而这样的工作永远都是不可缺少的。这个世界总是需要一些人在这方面比普通人造诣高,并且掌握大量工具的相关知识,例如库、APIs、接口等等。

 

在选择公司方面,我还是幸运的。我的工作大部分都花在了软件开发上,而且总能做一些之前没有尝试过的事。虽然软件开发不免会有些重复而又无聊的任务,但是只要你不断在做新的事,就不会无聊了。

 

我所在的嵌入式领域似乎比应用程序更加能够顶住潮流的洗礼。应用程序每几年就会更新换代,有些几乎是昙花一现,有些也许会持续一段时间,等巅峰过后就逐渐消逝。而嵌入式一直坚持以C语言为基础,或许会再融合一点C++。另一方面值得关注的是,硬件也在不断变化。


Victor Volkman · 54岁

ProQuest 高级软件工程师

美国密西根

 

架构与管理可以说是两道平行轨迹。在超过250开发员的公司里,通常管理是另一条技术人员感兴趣的职业发展路径。 所以你需要问自己是否喜欢当下的工作,如果是,那么就继续做下去。如果为了一点额外薪水而放弃你所热衷的工作,整天开会发邮件只会让你得不偿失。

 

每两年,所谓的游戏规则就会发生变化。不过也不需要恐慌,花3到4天去学习新的编程环境,然后再运到业务上。过去30年里,我几乎每4年就要学习新的知识。我所在的6个人的团队,年龄从48岁到56岁,然而我们所有人经历了3到8次的技术革新。


Kurt Guntheroth · 50岁

软件工程师

 

软件开发如今来说还是一个很年轻的领域,所以开发工具和技术变化得很快。如果一个软件开发者无法与时俱进去学习新的技能,那么在20年之内就很有可能被淘汰,等到40岁的时候就会发现自己力不从心,作茧自缚了。

 

那些优秀的开发者会时刻保持学习直到退休,比如 Ken Thompsons和 Bjarne Stroustrups。但是我们大部分人到了40岁后发现我们终究成为不了那些在行业里的大佬们。

 

C++一直变化很大,每几年就会推出新版本,并且包含了全新的特性,所以我一直不断学习。如今,我已经成为了一个非常有经验的C++开发者,拥有超过20年的全职系统编程经验。如果要给自己的经验从1到10打分,我会给打自己9分,比我更了解C++的人恐怕只有出书的作者了。再之后,我写了一本有关优化C++的书。

 

跟代码打交道其实很简单。它们会恰如其分按照你的指令执行。它们值得信赖,也很可靠。对于代码来说,它们存在的意义就是在你与它们发生交互的时候。不得不说编程让人够呛,特别是它们对细节的追求和相当程度的脑力付出。

 

但是人类跟代码是截然相反的,人类狡黠、变化无常,而且不可能充当工具使用。你不会直接告诉他们要去做什么,而是会去影响他们为你做你需要的事。他们不会直接对你的输入做出回应,而是间接地对你的鼓励或你所提供的奖励做出回应。虽然人类对奖罚机制很敏感,但如果只是一昧通过这种方式来管理,结果并不理想。管理应该要像与家人、朋友和同伴互动那样。如果你喜欢与人打交道,那么你就会热爱管理。反之,你就不会成为一个成功的管理者。

 

虽然高薪水的管理者比高薪水的程序员赚得更多,但是他们需要强大的名校学历背景,还要拥有强大的人脉和政治同盟,和一定程度的魄力来震慑住大部分人。然而编程并不需要这种特征,编程是关于创新而不是支配,这可以算是编程最大的优点。

 

所以,你要问自己更喜欢哪一种交互模式,是代码的确定性和内在美,还是人与人之间的连接和领导力?喜欢代码没有什么不好,那些高级架构师和CTO也很能赚钱。”


James Grenning · 60岁

软件顾问

 

所谓学无止境,我到62岁还在编程并依然热爱着它。我会花一些时间在管理上,对于我来说确实也很宝贵。但我还是决定选择自己最喜欢的事情:编程和软件设计。当我发现自己花在管理上面的事务时,我就决定干回我最喜欢的老本行。

 

为了保证自己的价值,你得确保你40年的经验并不是单纯的重复。我们生活在极速变化的时代里,不仅包括我们现在所使用的科技,还有我们构建软件的方式。

 

把产品做出来是基本,远远还不够,你必须要让产品和代码能有更长的有效期,你还得知道如何团队合作。如果你想让职业生涯走得更远更成功,又兼顾到赚钱,光靠把产品做出来是不够的。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存