美国劳动力的中值年龄是42岁,而StackOverflow的一项有关年龄的调查表明,40岁之后的开发人员只占开发人员总数的13%。那么其他人到哪里去了?他们被解雇了或者上升到管理岗位了吗?软件开发对于过了40岁的人来说,是不是就意味着终结?本文罗列了10位年龄超过40岁的老程序员们的故事,他们都是顶级的软件开发者,拒绝从事管理岗位,仍然活跃在开发一线,将编程作为生活收入的主要来源。本文内容来自Belisoft博客,并已获得作者的翻译授权,查看原文SOFTWARE DEVELOPERS AFTER 40, 50 AND 60 WHO ARE STILL CODING。 Rob Fletcher,Netflix(Los Gatos,CA)的高级软件工程师,45岁
“我已经写了16年的代码,做了几年独立承包商之后,在42岁那年加入Netflix,成为一名高级工程师。
很多事情取决于你的态度。不要成为厌恶新技术的老技术人,也不要嘲笑那些正在使用新技术的人。在进行技术选型时,你的经验应该成为决策的基础。如果选择了老技术,那是因为它们正好适合当前的需求,而不是因为要保护你那积攒了多年却即将过时的专业知识,也不是因为害怕那些后进者带着NodeJS和Go语言来抢夺你的工作。” 在Quora上关注Rob Fletcher。 Ebbe Kristensen,Prevas A/S(Denmark)的高级软件设计师,62岁
“我在1980年获得了一个电力系统的电子工程学士学位,从我的第一份工作开始,我就以开发软件作为我的谋生手段。因为专业学位的问题,我花了将近一年的时间才找到第一份工作。但从那个时候开始,我一直是一名软件工程师。 我几乎天天写代码,不处理任何与管理相关的任务。事实上,在很早之前我就意识到,我在管理方面没有什么竞争力。
我的同事里只有两个人年纪比我大,其他的(包括上司们)都是比我年轻。我的直线经理不到40岁,而他是我见过的最好的管理者之一。我在58岁那年得到了这份工作,不过我并不是年纪最大的雇员,有两个同事年纪比我还大,尽管如此,他们还是被公司录用了。 有时候,你几天甚至几周都不会学进去什么东西,而有时候几个小时学进去的东西就可以把之前“损失”的时间弥补回来。重要的是,你总是想方设法地去学习,时刻准备着,等待机会的出现。” 在Quora上关注Ebbe Kristensen。 John Brothers,Make&Build(Atlanta,GA)的高级软件架构师,47岁
“我喜欢解决问题,而且我喜欢寻找新的方式来解决问题。正因为如此,我似乎具备了与时俱进的技能。
我也适当关注技术生态系统的其他部分。在过去的几年,我使用了IntelliJ、Eclipse、Sublime、Emacs和Vi这些开发工具,我很喜欢使用这些工具来解决各种问题。我一开始使用的是CVS,后来学习了Subversion,最近在学习git。我也有AWS相关的经验。我还是一个获得认证的Scrum Master、产品经理和开发者。我写过很多自动化单元测试(在构建一个系统时,以测试驱动开发是我最喜欢的挑战之一)。 我不害怕学习新东西。我使用Ruby on Rails/Grails开发Web应用,使用Perl、PHP和Python开发应用解决业务问题。我也有SOAP和AOP的相关经验。 我尝试着要成为一名全栈的开发者。我熟悉Unix,经常编写shell脚本。我喜欢部署应用、服务器和工具,不管是为了开发还是为了生产。我熟悉SQL和NoSQL,并且知道它们各自的优缺点。我了解TCP/IP,我知道路由、DHCP和各种代理的基础知识。我构建过MVC应用、消息驱动的应用、EJB和基于Spring的服务。我也做过前端的JavaScript和CSS开发。我并不想成为一个可以拿奖的UX开发者,但最起码可以完成基本的功能。 我计划再干21年。如果我们从Web开发转向基于D-ware服务器的开发,我或许会落后;如果函数式编程最终一统天下,我或许会落后。不过真到了那个时候,我仍然心存希望。” 在Quora上关注John Brothers。 Roger Whitcomb,Actian公司(Palo Alto,CA)的软件架构师和软件工程师,60岁
“在我准备成为一名律师的时候,我才开始学习计算机科学(如果你可以想象这是怎样的一种情况)……现在,我通过编写大量具有良好文档化和功能性的Java代码来获得我的生活收入(起码现阶段是这样的)。
我最近的一份工作需要从头设计一整个系统,这也是我第一次做这样的事情。我现在要跟上Web和移动开发的速度有点吃力,但离“垂暮”还很远,尽管我已经60岁了。过去我也获得一些“管理者”相关的工作,不过我都拒绝了,我还是更愿意选择编程工作……不过,我也知道,我的一些与我年纪相仿(或者年纪更大)但已下岗的同事在找工作时遇到了麻烦(“是因为经验太丰富了吗”),所以我知道人们是怎么看待那些过了一把年纪的人,认为他们没有未来。但是,我认为最关键的是,你要为你的雇主持续地创造价值。 我目前是Apache软件基金会Pivot项目的PMC主席。作为一名Java开发人员(Java相关项目的提交者),我希望Java会永生。最起码不要出现更好的语言,要我把所有的代码都移植过去……” 在Quora上关注Roger Whitcomb。 Scott Gartner,Silverback Learning Solutions(Boise,ID)的高级软件工程师,50多岁
“我已经做了34年的程序员,而我的简历只要一张纸就可以装下。所有超过5年的技术在简历上都只是一笔带过。我有第二张简历,上面列出了所有我用过的编程语言和开发工具、数据库、动画系统,等等。这样,大家可以更容易了解我。我只在被问到的时候才会拿出第二张简历。 在大公司里(至少对于我来说),老程序员一般都想转到管理层,这也是很常见的一种现象。我一直面临着类似的选择,但我不擅长管理,我只喜欢成为一名程序员或架构师。 我发现我的记忆力大不如前,也没办法记住大型系统的全部模型。不过,我发现我那些丰富的经验变得越来越有价值。 我们不得不承认我们的整个职业生涯必须不断地接收训练成长,世事变化得太快,如果止步不前,终将被淘汰。
在Quora上关注Scott Gartner。 Brian Bowman,SAS(Cary,NC)的首席软件工程师,56岁
“我目前团队成员的平均年龄为50岁,而且每一位成员都有超过20年的系统软件开发经验。 我和我的同事们花了很多时间在编码、调试、测试和解答系统架构问题上面。有些同事还涉及硬件技术评估、在大会上呈献演讲,以及为开源社区贡献力量,等等。 在过去两年,我一直是某软件公司精英团队的成员之一,这个公司有很多非常出色的工程师,很多都有高级的计算机和应用数学等专业的学位。在那之前,我在一个小型的团队里工作了超过10年的时间,我们从无到有设计开发了一个多线程的元数据对象集群服务器。 团队里与我的关系最为密切的同事比我大5到6岁。在那期间,我获得了4项美国国家专利……那些都是在我40岁之后获得的。
我不认为现今的技术只能让我干到70岁。我的职业生涯从1983年开始,我通过四项主要的计算机技能生存下来。
虽然我所拥有的这些技能可以干到退休,但在未来的几年,我还会将我的专业知识领域扩展到机器学习方面。 或许在10年之后,对普通程序员的需求会大幅下降。如果一个人真的喜欢计算机技术,但是在编程方面达不到更高的水平,那么可以考虑成为一名经验丰富的系统管理员。他们总有很多工作要做,比如配置、部署和维护系统。” 在Quora上关注Brian Bowman。 Alec Cawley,DisplayLink(Palo Alto,California)的首席软件研究员,60多岁
“在我62岁的时候,我已经是公司里年纪最大的开发者了,其他人大都是40多岁或50出头。 我最年轻的同事应该是20多岁,他们与我有35年的年纪差别,不过这不是问题。 我们要拥抱技术。现在的世界与我的职业生涯刚开始的时候(穿孔纸带时期的Fortran)已经很不一样了,而变化仍然在持续。但反过来说,需要解决的问题总是很相似的,无非就是如何将人类的需求转成计算机可以做的事情,以及如何避免犯错、如何找出不可避免所犯下的错误。编程语言、开发环境、工具套件、API等东西只是解决问题的手段,我们只是在需要它们的时候才去学习如何使用它们。 我是从穿孔纸带开始的。即使是到了磁盘文件时代,我仍然是最早从行式打印机里读取程序的人。后来就有了普通文本编辑器。现在我使用具有语法高亮功能的IDE。 我认为,在10到20年的时间里,仍然需要软件开发人员。在我看来,软件开发者的工作就是把客户的需求转换成计算机执行的指令,而这样的工作是不可或缺的。这个世界总是需要一些高手,他们在计算机方面比普通人懂得更多,并且掌握了大量与工具相关的知识(软件包、API、接口,等等)。
我所在的嵌入式领域似乎比应用程序更加能够扛住潮流的冲刷。应用程序每几年就会有新的东西出现,有些几乎是昙花一现,有些会持续一段时间,经历巅峰,然后逝去。而嵌入式一直保持坚挺,以C语言为基础,再融合一点C++。另一方面,硬件也在持续发生变化,这让事情变得更加有趣。” 在Quora上关注Alec Cawley。 Victor Volkman,Proquest(Ann Arbor,MI)的高级软件工程师,54岁
“架构与管理是两道平行线。在超过250人的公司里,技术人员一般都会有这两条路可以走。 你喜欢你正在做的事情吗?如果是,那么就继续做下去。为了一点薪水而放弃你所喜欢的事情,整天摆弄会议和邮件,这样会让你得不偿失。
以下是我的职业概览。
在Quora上关注Victor Volkman。 Kurt Guntheroth,软件工程师,50多岁
“软件开发仍然是一个年轻的领域,工具和技术仍然在发生快速的变化。如果软件开发人员不能持续地更新他们的技能,在不到20年的时间里,他们就会过时。所以,一个40岁的老程序员很快就会发现自己已经无法胜任工作,而且前途堪忧。 好的开发人员会持续学习,直到他们退休,比如Ken Thompsons和Bjarne Stroustrups。不过,我们大多数人(特别是40岁左右的)最终都会意识到,我们并不能成为行业的大神。
编程是一件很容易的事情。你告诉它们做什么,它们就做什么。它们是可以信赖的,也是可靠的。对于代码来说,无所谓好日子,也无所谓糟糕的日子,它们存在的意义就是在你与它们发生交互的时候。代码可能会是难啃的骨头,它们要求对细节的重度关注和相当程度的脑力付出。 人类与代码完全不一样,人类狡猾、变化多端,而且不可能充当工具使用。你不能直接告诉他们做什么,你要去影响他们,这样他们才会做你需要他们做的事情。他们不会直接对你的输入做出响应,而是间接地对你的鼓励或者你所提供的一些奖励物品做出响应。虽然人类对奖惩很敏感,但如果只是通过这种方式来管理人类并不会奏效。管理应该要像与家人、朋友和同伴互动一样。如果你喜欢与人打交道,那么你就会喜欢上管理。如果你不喜欢与人打交道,那么你就不会成为一个成功的管理者。 薪水高的管理者比薪水高的程序员赚得更多,不过他们需要有很多名校的学历背景,拥有良好的人际网络和政治同盟,也需要有一定程度的冷酷无情来震慑大部分人。而编程不需要这种冷酷无情,这也就是编程很好的一个方面。编程是关于创新,而不是操纵。 所以,你要问问自己,你更喜欢哪一种交互模式,是代码的确定性和优雅,还是人类的友情和领导力?喜欢代码完全没有问题,那些高级架构师和CTO也能赚很多钱。” 在Quora上关注Kurt Hentheroth。 James Grenning,软件顾问,60多岁
“保持学习。我62岁了还在编程,我喜欢编程。 我会花一些时间在管理上,这对我来说是很重要的。不过我还是决定把编程和软件设计作为我的最爱。在我从管理上学了一些东西之后,我决定还是回到我最喜欢的软件开发上。
把东西做出来固然是好,但那样还远远不够。你还要让产品和代码更有用,能存活更长的时间。你要知道如何成为团队的一员。要想让职业生涯长久、成功,同时能赚到钱,只是把东西做出来是远远不够的。” ,译者 |