作者|Vladimir Kazankov
译者|薛命灯
关于程序员是不是吃青春饭的谈论由来已久,对付那些步入中年的程序员来说,彷佛不转管理岗就会被富有活力的年轻程序员替代。但总有些顶级的软件开拓者,不愿意从事管理岗位,仍旧生动在一线写着代码。你知道的,有哪些?
写在前面
美国劳动力的中值年事是 42 岁,而 Stack Overflow 的一项有关年事的调查表明,40 岁之后的开拓职员只占开拓职员总数的 13%。那么其他人到哪里去了?他们被开除了或者上升到管理岗位了吗?软件开拓对付过了 40 岁的人来说,是不是就意味着闭幕?
本文罗列了 10 位年事超过 40 岁的老程序员们的故事,他们都是顶级的软件开拓者,谢绝从事管理岗位,仍旧生动在开拓一线,将编程作为生活收入的紧张来源。本文内容来自 Belisoft 博客,并已得到作者的翻译授权,查看原文 SOFTWARE DEVELOPERS AFTER 40, 50 AND 60 WHO ARE STILL CODING :
https://belitsoft.com/php-development-services/top-software-developers-after-40-50-and-60
Rob Fletcher,Netflix(Los Gatos,CA)的高等软件工程师,45岁
专长: Web 开拓、测试驱动开拓、敏捷软件开拓、Grails、Groovy、Spock 以及 AngularJS。
我已经写了 16 年的代码,做了几年独立承包商之后,在 42 岁那年加入 Netflix,成为一名高等工程师。
我每天都写代码。目前最喜好的措辞是 Kotlin。我想学习 Go 措辞,平常用得比较多的是 Java、Scala 和 Groovy。我一贯在学习新的东西,哪怕是很小的事情。我知道自己会是一个糟糕的管理者,以是我压根没有想往管理方向发展。
很多事情取决于你的态度。不要成为厌恶新技能的老技能人,也不要嘲笑那些正在利用新技能的人。在进行技能选型时,你的履历该当成为决策的根本。如果选择了老技能,那是由于它们恰好适宜当前的需求,而不是由于要保护你那积攒了多年却即将过期的专业知识,也不是由于害怕那些后进者带着 Node.js 和 Go 措辞来打劫你的事情。
Ebbe Kristensen,Prevas A/S(Denmark)的高等软件设计师,62岁专长:开拓实时嵌入式软件、软件配置管理、构建测试用例(系统测试和单元测试)。在实时嵌入式系统、Linux 和 Windows(包括。NET)方面有丰富的写作和文档履历,善于 C、C++、Python、C# 和 Pascal。
我在 1980 年得到了一个电力系统的电子工程学士学位,从我的第一份事情开始,我就以开拓软件作为我的谋生手段。由于专业学位的问题,我花了将近一年的韶光才找到第一份事情。但从那个时候开始,我一贯是一名软件工程师。
我险些每天写代码,不处理任何与管理干系的任务。事实上,在很早之前我就意识到,我在管理方面没有什么竞争力。
作为一名程序员,我很喜好这个角色,我也很胜任这份事情。如果让我做一名管理者,肯定会有大麻烦,而且我一点也不享受管理事情。
我的同事里只有两个人年纪比我大,其他的(包括上司们)都是比我年轻。我的直线经理不到 40 岁,而他是我见过的最好的管理者之一。我在 58 岁那年得到了这份事情,不过我并不是年纪最大的雇员,有两个同事年纪比我还大,只管如此,他们还是被公司任命了。
有时候,你几天乃至几周都不会学进去什么东西,而有时候几个小时学进去的东西就可以把之前 “丢失” 的韶光填补回来。主要的是,你总是费尽心机地去学习,时候准备着,等待机会的涌现。
John Brothers,Make&Build(Atlanta,GA)的高等软件架构师,47岁专长:企业架构和开拓、敏捷教练、数据可视化软件。信用卡处理、IT 做事和移动运用开拓。
我喜好办理问题,而且我喜好探求新的办法来办理问题。正由于如此,我彷佛具备了与时俱进的技能。
我最近正在利用 Node.js 开拓一个项目,之前也用过 Hadoop、NoSQL,开拓过 Android 运用,也写过 Go 措辞代码,还熟习 jQuery 和 Bootstrap 的各种特性。我也关注 Java 的最新动态,还有 Spring、JMS、REST、JSON 和 JPA,以及其他干系的技能。
我也适当关注技能生态系统的其他部分。在过去的几年,我利用了 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 做事器的开拓,我或许会掉队;如果函数式编程终极一统天下,我或许会掉队。不过真到了那个时候,我仍旧心存希望。
Roger Whitcomb,Actian 公司(Palo Alto,CA)的软件架构师和软件工程师,60岁专长:C、C++、Java
在我准备成为一名状师的时候,我才开始学习打算机科学(如果你可以想象这是若何的一种情形)……现在,我通过编写大量具有良好文档化和功能性的 Java 代码来得到我的生活收入(最少现阶段是这样的)。
在 Windows 3.0 时期(大约是在 1986 年前后,我也记不太清楚了)我就开始在 Windows 上做开拓。大约是在 10 年前,我转到 Mac 上,之后就没有再回到 Windows 上。我觉得自己便是一个利用 MacBook Pro 事情的极客……利用 C、C++、Java 和 Swift 进行开拓……
我最近的一份事情须要从头设计一全体系统,这也是我第一次做这样的事情。我现在要跟上 Web 和移动开拓的速率有点吃力,但离 “垂暮” 还很远,只管我已经 60 岁了。过去我也得到一些 “管理者” 干系的事情,不过我都谢绝了,我还是更乐意选择编程事情……
不过,我也知道,我的一些与我年纪相仿(或者年纪更大)但已下岗的同事在找事情时碰着了麻烦(“是由于履历太丰富了吗”),以是我知道人们是怎么看待那些过了一把年纪的人,认为他们没有未来。但是,我认为最关键的是,你要为你的店主持续地创造代价。
我目前是 Apache 软件基金会 Pivot 项目的 PMC 主席。作为一名 Java 开拓职员(Java 干系项目的提交者),我希望 Java 会永生。最最少不要涌现更好的措辞,要我把所有的代码都移植过去……
Scott Gartner,Silverback Learning Solutions(Boise,ID)的高等软件工程师,50多岁专长:框架、解析器、建模、图形、数据库子系统的设计和实现,数据库设计(SQL、DML、DDL 和 LINQ)、xml 设计、单点登录方案(SSO)、互联网运用、Windows 运用和动画。
我已经做了 34 年的程序员,而我的简历只要一张纸就可以装下。所有超过 5 年的技能在简历上都只是一笔带过。我有第二张简历,上面列出了所有我用过的编程措辞和开拓工具、数据库、动画系统,等等。这样,大家可以更随意马虎理解我。我只在被问到的时候才会拿出第二张简历。
在大公司里(至少对付我来说),老程序员一样平常都想转到管理层,这也是很常见的一种征象。我一贯面临着类似的选择,但我不善于管理,我只喜好成为一名程序员或架构师。
我创造我的影象力大不如前,也没办法记住大型系统的全部模型。不过,我创造我那些丰富的履历变得越来越有代价。
我们不得不承认我们的全体职业生涯必须不断地吸收演习发展,世事变化得太快,如果止步不前,终将被淘汰。
每两年我就会学习一种新的编程措辞,有一些是我自己想学的,不过大部分是由于技能发展的须要(也有的是由于新事情的哀求)。这样很有趣。目前我在学习数据仓库(OLAP)、ETL 处理、Star Schemas 和 Cubes。
Brian Bowman,SAS(Cary,NC)的首席软件工程师,56岁专长:专利文件系统或数据库的内部组件、持久化数据构造、目录和索引搜索技能、做事器管理、DASD IO 驱动、机器码天生或跨架构的代码转换、工具持久化、客户端与做事器真个接口、多租户、分布式缓存,以及大规模的授权系统(履行、管理和日志)。目前在 SAS Viya 平台上做 Cloud Analytics Service 方面的研究、设计和编程事情。
我目前团队成员的均匀年事为 50 岁,而且每一位成员都有超过 20 年的系统软件开拓履历。
我和我的同事们花了很多韶光在编码、调试、测试和解答系统架构问题上面。有些同事还涉及硬件技能评估、在大会上呈献演讲,以及为开源社区贡献力量,等等。
在过去两年,我一贯是某软件公司精英团队的成员之一,这个公司有很多非常出色的工程师,很多都有高等的打算机和运用数学等专业的学位。在那之前,我在一个小型的团队里事情了超过 10 年的韶光,我们从无到有设计开拓了一个多线程的元数据工具集群做事器。
团队里与我的关系最为密切的同事比我大 5 到 6 岁。在那期间,我得到了 4 项美国国家专利……那些都是在我 40 岁之后得到的。
只要我还能做出故意义的贡献,我就会一贯事情下去。我多次给我的职业生涯充电,从最早的学习和研究,到后来的事情岗位的须要。这是我的本性,也是勉励我持续进步的动力。
我不认为现今的技能只能让我干到 70 岁。我的职业生涯从 1983 年开始,我通过四项紧张的打算机技能生存下来。
汇编措辞级别的大型机系统编程。基于 C 措辞的多主机平台的可移植编程,包括桌面、中型 Unix 网络、小型机的后续产品(如 VAX),以及大型机。多层集群做事器环境,由后真个多线程 C 以及处于中间层知足高可用哀求的 Java 组成,紧张面向 Windows 做事器和 Unix 环境,也包括 Linux。基于多线程 C 的大规模并行网格打算,知足虚拟的无限伸缩。虽然我所拥有的这些技能可以干到退休,但在未来的几年,我还会将我的专业知识领域扩展到机器学习方面。
或许在 10 年之后,对普通程序员的需求会大幅低落。如果一个人真的喜好打算机技能,但是在编程方面达不到更高的水平,那么可以考虑成为一名履历丰富的系统管理员。他们总有很多事情要做,比如配置、支配和掩护系统。
Alec Cawley,DisplayLink(Palo Alto,California)的首席软件研究员,60多岁专长:嵌入式、多线程、多进程、驱动、通信栈、C/C++、Java、Python、硬件。软件架构师 / 工程师,特殊是在与硬件紧密打仗的软件系统,与硬件工程师一起事情,最大化发挥软件和硬件的效能。
在我 62 岁的时候,我已经是公司里年纪最大的开拓者了,其他人大都是 40 多岁或 50 出头。
我最年轻的同事该当是 20 多岁,他们与我有 35 年的年纪差别,不过这不是问题。
我们要拥抱技能。现在的天下与我的职业生涯刚开始的时候(穿孔纸带期间的 Fortran)已经很不一样了,而变革仍旧在持续。但反过来说,须要办理的问题总是很相似的,无非便是如何将人类的需求转成打算机可以做的事情,以及如何避免犯错、如何找出不可避免所犯下的缺点。编程措辞、开拓环境、工具套件、API 等东西只是办理问题的手段,我们只是在须要它们的时候才去学习如何利用它们。
我是从穿孔纸带开始的。纵然是到了磁盘文件时期,我仍旧是最早从行式打印机里读取程序的人。后来就有了普通文本编辑器。现在我利用具有语法高亮功能的 IDE。
我认为,在 10 到 20 年的韶光里,仍旧须要软件开拓职员。在我看来,软件开拓者的事情便是把客户的需求转换成打算机实行的指令,而这样的事情是不可或缺的。这个天下总是须要一些高手,他们在打算机方面比普通人懂得更多,并且节制了大量与工具干系的知识(软件包、API、接口,等等)。
在选择公司方面,我是幸运的。我的大部分韶光都花在了软件开拓上,而且总能做一些以前没有做过的事情。软件开拓里总有一些重复性的事情,我可以想象得出那样做是很无聊的。不过,如果你总是在做新的东西,那就不会无聊了。
我所在的嵌入式领域彷佛比运用程序更加能够扛住潮流的冲刷。运用程序每几年就会有新的东西涌现,有些险些是昙花一现,有些会持续一段韶光,经历顶峰,然后逝去。而嵌入式一贯保持坚挺,以 C 措辞为根本,再领悟一点 C++。另一方面,硬件也在持续发生变革,这让事情变得更加有趣。
Victor Volkman,Proquest(Ann Arbor,MI)的高等软件工程师,54岁专长:编程方面善于 Python、Linux、C/C++、.NET,数据库方面精通 MS Access、MySQL 和所有基于 SQL 的环境,还有 TCP/IP、企业系统自动化和分布式打算方面的履历。
架构与管理是两道平行线。在超过 250 人的公司里,技能职员一样平常都会有这两条路可以走。
你喜好你正在做的事情吗?如果是,那么就连续做下去。为了一点薪水而放弃你所喜好的事情,整天摆弄会媾和邮件,这样会让你得不偿失落。
每过两年,游戏规则就会发生变革。不过不用为此感到苦恼。花 3 到 4 天韶光学习新的编程环境,然后用它们来支持业务。在过去的 30 年,我险些每 4 年就要学习新的东西。我所在的团队有 6 个人,年事从 48 岁到 56 岁。我们经历了 3 到 8 次的技能更新。
以下是我的职业概览。
从利用 C 和汇编措辞编写 MS-DOS 代码开始学习利用 C++ 和 MFC 开拓 Windows 运用程序学习利用 Unix Perl 开拓基于 CGI-BIN 的 Web 运用学习 C#学习 Java 和 JSP学习智好手机开拓:iOS/Android/Blackberry回到 Unix,开始利用 PythonAWS 开拓(EC2、RDS、SQS,等等)Kurt Guntheroth,软件工程师,50多岁专长:Windows、Linux/Unix、嵌入式;算法设计、C++、C、多线程和分布式、电信、安全、套接字编程、标准委员会成员、产品操持和观点落地;TQM、ISO 9000、敏捷开拓和传统开拓方法论。
软件开拓仍旧是一个年轻的领域,工具和技能仍旧在发生快速的变革。如果软件开拓职员不能持续地更新他们的技能,在不到 20 年的韶光里,他们就会过期。以是,一个 40 岁的老程序员很快就会创造自己已经无法胜任事情,而且出息堪忧。
好的开拓职员会持续学习,直到他们退休,比如 Ken Thompsons 和 Bjarne Stroustrups。不过,我们大多数人(特殊是 40 岁旁边的)终极都会意识到,我们并不能成为行业的大神。
C++ 变革很大,每几年就会有新版本涌现,并且包含了全新的特性,我从来没有停滞过学习。也便是说,我已经成为了一个非常有履历的 C++ 开拓者,拥有超过 20 年的全职系统编程履历。如果有人要我给自己的履历打分,从 1 分到 10 分,那么毫无疑问,我会给打自己 9 分,由于比我更理解 C++ 的人只有那些写书的人。后来,我写了一本有关 C++ 优化的书。
编程是一件很随意马虎的事情。你见告它们做什么,它们就做什么。它们是可以相信的,也是可靠的。对付代码来说,无所谓好日子,也无所谓糟糕的日子,它们存在的意义便是在你与它们发生交互的时候。代码可能会是难啃的骨头,它们哀求对细节的重度关注和相称程度的脑力付出。
人类与代码完备不一样,人类狡猾、变革多端,而且不可能充当工具利用。你不能直接见告他们做什么,你要去影响他们,这样他们才会做你须要他们做的事情。他们不会直接对你的输入做出相应,而是间接地对你的鼓励或者你所供应的一些褒奖物品做出相应。虽然人类对赏罚很敏感,但如果只是通过这种办法来管理人类并不会见效。管理该当要像与家人、朋友和差错互动一样。如果你喜好与人打交道,那么你就会喜好上管理。如果你不喜好与人打交道,那么你就不会成为一个成功的管理者。
薪水高的管理者比薪水高的程序员赚得更多,不过他们须要有很多名校的学历背景,拥有良好的人际网络和政治同盟,也须要有一定程度的冷漠无情来震慑大部分人。而编程不须要这种冷漠无情,这也便是编程很好的一个方面。编程是关于创新,而不是操纵。
以是,你要问问自己,你更喜好哪一种交互模式,是代码的确定性和优雅,还是人类的交情和领导力?喜好代码完备没有问题,那些高等架构师和 CTO 也能赚很多钱。
James Grenning,软件顾问,60多岁专长:面向工具软件设计、测试驱动开拓(C、C++、Java、C#)、嵌入式软件、重构、极限编程、Scrum、敏捷开拓、发布操持、增量操持。C 和 C++ 单元测试框架 CppUTest 的紧张贡献者之一。嵌入式系统大会和敏捷大会的演讲人。Agile Manifesto 的初始作者之一。
保持学习。我 62 岁了还在编程,我喜好编程。
我会花一些韶光在管理上,这对我来说是很主要的。不过我还是决定把编程和软件设计作为我的最爱。在我从管理上学了一些东西之后,我决定还是回到我最喜好的软件开拓上。
为了担保你的代价,你要确保 40 年的履历是不重复的。我们生活在一个快速变革的天下,不仅仅是技能,也包括我们如何构建软件。
把东西做出来固然是好,但那样还远远不足。你还要让产品和代码更有用,能存活更长的韶光。你要知道如何成为团队的一员。要想让职业生涯长久、成功,同时能赚到钱,只是把东西做出来是远远不足的。
小 Q 说在 InfoQ 公众年夜众号后台留过言的人有许多,关于程序员的年事与职业发展的问题我们也曾多次谈论,让我印象最深的一条评论是这么说的:
我想等到我八十多岁了,躺在医院的病床上,还能把医院的系统给黑了,生命不息,编程不止!
你会在一线开拓岗上待多久?
推举阅读《10x 程序员是如何思考的?》(点击理解更多)