红帽白皮书新鲜出炉!点击获取,让你的云战略更胜一筹! 了解详情
写点什么

四五十岁之后,还在编程的程序员都有谁

  • 2017-05-01
  • 本文字数:6825 字

    阅读完需:约 22 分钟

美国劳动力的中值年龄是 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 岁

专长: Web 开发、测试驱动开发、敏捷软件开发、Grails、Groovy、Spock 以及 AngularJS。

“我已经写了 16 年的代码,做了几年独立承包商之后,在 42 岁那年加入 Netflix,成为一名高级工程师。

我每天都写代码。目前最喜欢的语言是 Kotlin。我想学习 Go 语言,平常用得比较多的是 Java、Scala 和 Groovy。我一直在学习新的东西,哪怕是很小的事情。我知道自己会是一个糟糕的管理者,所以我压根没有想往管理方向发展。

很多事情取决于你的态度。不要成为厌恶新技术的老技术人,也不要嘲笑那些正在使用新技术的人。在进行技术选型时,你的经验应该成为决策的基础。如果选择了老技术,那是因为它们正好适合当前的需求,而不是因为要保护你那积攒了多年却即将过时的专业知识,也不是因为害怕那些后进者带着 NodeJS 和 Go 语言来抢夺你的工作。”

在 Quora 上关注 Rob Fletcher


Ebbe Kristensen,Prevas A/S(Denmark)的高级软件设计师,62 岁

专长:开发实时嵌入式软件、软件配置管理、构建测试用例(系统测试和单元测试)。在实时嵌入式系统、Linux 和 Windows(包括.NET)方面有丰富的写作和文档经验,擅长 C、C++、Python、C#和 Pascal。

“我在 1980 年获得了一个电力系统的电子工程学士学位,从我的第一份工作开始,我就以开发软件作为我的谋生手段。因为专业学位的问题,我花了将近一年的时间才找到第一份工作。但从那个时候开始,我一直是一名软件工程师。

我几乎天天写代码,不处理任何与管理相关的任务。事实上,在很早之前我就意识到,我在管理方面没有什么竞争力。

作为一名程序员,我很喜欢这个角色,我也很胜任这份工作。如果让我做一名管理者,肯定会有大麻烦,而且我一点也不享受管理工作。

我的同事里只有两个人年纪比我大,其他的(包括上司们)都是比我年轻。我的直线经理不到 40 岁,而他是我见过的最好的管理者之一。我在 58 岁那年得到了这份工作,不过我并不是年纪最大的雇员,有两个同事年纪比我还大,尽管如此,他们还是被公司录用了。

有时候,你几天甚至几周都不会学进去什么东西,而有时候几个小时学进去的东西就可以把之前“损失”的时间弥补回来。重要的是,你总是想方设法地去学习,时刻准备着,等待机会的出现。”

在 Quora 上关注 Ebbe Kristensen


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 服务器的开发,我或许会落后;如果函数式编程最终一统天下,我或许会落后。不过真到了那个时候,我仍然心存希望。”

在 Quora 上关注 John Brothers


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 会永生。最起码不要出现更好的语言,要我把所有的代码都移植过去……”

在Quora 上关注 Roger Whitcomb


Scott Gartner,Silverback Learning Solutions(Boise,ID)的高级软件工程师,50 多岁

专长:框架、解析器、建模、图形、数据库子系统的设计和实现,数据库设计(SQL、DML、DDL 和 LINQ)、XML 设计、单点登录方案(SSO)、互联网应用、Windows 应用和动画。

“我已经做了 34 年的程序员,而我的简历只要一张纸就可以装下。所有超过 5 年的技术在简历上都只是一笔带过。我有第二张简历,上面列出了所有我用过的编程语言和开发工具、数据库、动画系统,等等。这样,大家可以更容易了解我。我只在被问到的时候才会拿出第二张简历。

在大公司里(至少对于我来说),老程序员一般都想转到管理层,这也是很常见的一种现象。我一直面临着类似的选择,但我不擅长管理,我只喜欢成为一名程序员或架构师。

我发现我的记忆力大不如前,也没办法记住大型系统的全部模型。不过,我发现我那些丰富的经验变得越来越有价值。

我们不得不承认我们的整个职业生涯必须不断地接收训练成长,世事变化得太快,如果止步不前,终将被淘汰。

每两年我就会学习一种新的编程语言,有一些是我自己想学的,不过大部分是因为技术发展的需要(也有的是因为新工作的要求)。这样很有趣。目前我在学习数据仓库(OLAP)、ETL 处理、Star Schemas 和 Cubes。”

在 Quora 上关注 Scott Gartner


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 年之后,对普通程序员的需求会大幅下降。如果一个人真的喜欢计算机技术,但是在编程方面达不到更高的水平,那么可以考虑成为一名经验丰富的系统管理员。他们总有很多工作要做,比如配置、部署和维护系统。”

在 Quora 上关注 Brian Bowman


Alec Cawley,DisplayLink(Palo Alto,California)的首席软件研究员,60 多岁

专长:嵌入式、多线程、多进程、驱动、通信栈、C/C++、Java、Python、硬件。软件架构师 / 工程师,特别是在与硬件紧密接触的软件系统,与硬件工程师一起工作,最大化发挥软件和硬件的效能。

“在我 62 岁的时候,我已经是公司里年纪最大的开发者了,其他人大都是 40 多岁或 50 出头。

我最年轻的同事应该是 20 多岁,他们与我有 35 年的年纪差别,不过这不是问题。

我们要拥抱技术。现在的世界与我的职业生涯刚开始的时候(穿孔纸带时期的 Fortran)已经很不一样了,而变化仍然在持续。但反过来说,需要解决的问题总是很相似的,无非就是如何将人类的需求转成计算机可以做的事情,以及如何避免犯错、如何找出不可避免所犯下的错误。编程语言、开发环境、工具套件、API 等东西只是解决问题的手段,我们只是在需要它们的时候才去学习如何使用它们。

我是从穿孔纸带开始的。即使是到了磁盘文件时代,我仍然是最早从行式打印机里读取程序的人。后来就有了普通文本编辑器。现在我使用具有语法高亮功能的 IDE。

我认为,在 10 到 20 年的时间里,仍然需要软件开发人员。在我看来,软件开发者的工作就是把客户的需求转换成计算机执行的指令,而这样的工作是不可或缺的。这个世界总是需要一些高手,他们在计算机方面比普通人懂得更多,并且掌握了大量与工具相关的知识(软件包、API、接口,等等)。

在选择公司方面,我是幸运的。我的大部分时间都花在了软件开发上,而且总能做一些以前没有做过的事情。软件开发里总有一些重复性的工作,我可以想象得出那样做是很无聊的。不过,如果你总是在做新的东西,那就不会无聊了。

我所在的嵌入式领域似乎比应用程序更加能够扛住潮流的冲刷。应用程序每几年就会有新的东西出现,有些几乎是昙花一现,有些会持续一段时间,经历巅峰,然后逝去。而嵌入式一直保持坚挺,以 C 语言为基础,再融合一点 C++。另一方面,硬件也在持续发生变化,这让事情变得更加有趣。”

在 Quora 上关注 Alec Cawley


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,开始使用 Python
  • AWS 开发(EC2、RDS、SQS,等等)”

在 Quora 上关注 Victor Volkman


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 也能赚很多钱。”

在 Quora 上关注 Kurt Hentheroth


James Grenning,软件顾问,60 多岁

专长:面向对象软件设计、测试驱动开发(C、C++、Java、C#)、嵌入式软件、重构、极限编程、Scrum、敏捷开发、发布计划、增量计划。C 和 C++ 单元测试框架 CppUTest 的主要贡献者之一。嵌入式系统大会和敏捷大会的演讲人。Agile Manifesto 的初始作者之一。

“保持学习。我 62 岁了还在编程,我喜欢编程。

我会花一些时间在管理上,这对我来说是很重要的。不过我还是决定把编程和软件设计作为我的最爱。在我从管理上学了一些东西之后,我决定还是回到我最喜欢的软件开发上。

为了保证你的价值,你要确保 40 年的经验是不重复的。我们生活在一个快速变化的世界,不仅仅是技术,也包括我们如何构建软件。

把东西做出来固然是好,但那样还远远不够。你还要让产品和代码更有用,能存活更长的时间。你要知道如何成为团队的一员。要想让职业生涯长久、成功,同时能赚到钱,只是把东西做出来是远远不够的。”

在 Quora 上关注 James Grenning


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-05-01 19:008848
用户头像

发布了 322 篇内容, 共 133.6 次阅读, 收获喜欢 142 次。

关注

评论 1 条评论

发布
用户头像
学习啦
2021-04-05 17:09
回复
没有更多了
发现更多内容

模块8-设计消息队列存储消息数据的 MySQL 表格

卡西毛豆静爸

#架构实战营

消息队列存储消息数据的 MySQL 表格设计

李大虾

#架构实战营 「架构实战营」

消息队列数据存储表设计

随欣所遇

架构训练营5期

都是分布式操作系统,Laxcus和鸿蒙有何不同?

LAXCUS分布式操作系统

分布式计算 分布式存储 集群架构 鸿蒙系统 分布式操作系统

性能分析优化的道与术

老张

性能优化 性能分析

week6作业

Asha

Java中高级核心知识全面解析——Linux基本命令

爱好编程进阶

Java 面试 后端开发

GitOps多环境部署问题及解决方案

俞凡

研发效能 gitops

多系统信息化实施项目注意事项

秋去冬来春未远

数字化 信息化 系统集成 ERP 多系统

开疆作剑,开荒为犁:2022春天,文心大模型走进产业的百花深处

脑极体

尤达 DDD 领域驱动设计思想课程总结

代廉洁

尤达DDD领域驱动设计思想

【国产化替代专题】星环科技春季新品发布周

星环科技

Gitlab Java API 使用示例

Java gitlab 4月月更

第八个模块作业

achilles

你好spring-cloud-kubernetes

程序员欣宸

4月月更

商业分析:SheIn是怎样成功的?

石云升

跨境电商 商业分析 4月月更

浅谈项目中的需求管理

秋去冬来春未远

需求管理 需求分析 需求和问题

模块8作业

Mr小公熊

市场进展不断,STI 包括ZB等一系列上线预示着什么?

西柚子

统计代码耗时的工具

Rubble

4月日更 4月月更

消息队列存储消息数据的 MySQL 表格

阿卷

架构实战营

作业八

Geek_f3e842

架构实战营

linux之rename命令

入门小站

模块八作业:设计消息队列存储消息数据的 MySQL 表格

炎彬

「架构实战营」

架构实战营:模块八作业

刘璐

微信小程序开发设计需要注意的五个点

源字节1号

前端 后端 软件开发 小程序开发

消息队列存储消息数据的mysql表设计

五月雨

架构实战营 「架构实战营」

模块3 作业

KennyQ

JavaWeb快速入门--Servlet(2)

爱好编程进阶

Java 面试 后端开发

Java中的复用类

爱好编程进阶

Java 面试 后端开发

爱讲故事的计算机科学家,和他的分布式系统

多颗糖

四五十岁之后,还在编程的程序员都有谁_语言 & 开发_Vladimir Kazankov_InfoQ精选文章