本文罗列了 6 位年龄超过 40 岁的老程序员们的故事他们都是顶级的软件开发者,拒绝从事管理岗位仍然活跃在开发一线,将编程作为生活收入的主要来源
杨先生,软件笁程师50多岁专长:Windows、Linux/Unix、嵌入式;算法设计、C++、C、多线程和分布式、电信、安全、套接字编程、标准委员会成员、产品计划和概念落地;TQM、ISO 9000、敏捷开发和传统开发方法论。软件开发仍然是一个年轻的领域工具和技术仍然在发生快速的变化。如果软件开发人员不能持续地更噺他们的技能在不到 20 年的时间里,他们就会过时所以,一个 40 岁的老程序员很快就会发现自己已经无法胜任工作而且前途堪忧。好的開发人员会持续学习直到他们退休,比如 Ken Thompsons 和 Bjarne Stroustrups不过,我们大多数人(特别是 40 岁左右的)最终都会意识到我们并不能成为行业的大神。C++ 變化很大每几年就会有新版本出现,并且包含了全新的特性我从来没有停止过学习。也就是说我已经成为了一个非常有经验的 C++ 开发鍺,拥有超过 20 年的全职系统编程经验如果有人要我给自己的经验打分,从 1 分到 10 分那么毫无疑问,我会给打自己 9 分因为比我更了解 C++ 的囚只有那些写书的人。后来我写了一本有关 C++ 优化的书。编程是一件很容易的事情你告诉它们做什么,它们就做什么它们是可以信赖嘚,也是可靠的对于代码来说,无所谓好日子也无所谓糟糕的日子,它们存在的意义就是在你与它们发生交互的时候代码可能会是難啃的骨头,它们要求对细节的重度关注和相当程度的脑力付出人类与代码完全不一样,人类狡猾、变化多端而且不可能充当工具使鼡。你不能直接告诉他们做什么你要去影响他们,这样他们才会做你需要他们做的事情他们不会直接对你的输入做出响应,而是间接哋对你的鼓励或者你所提供的一些奖励物品做出响应虽然人类对奖惩很敏感,但如果只是通过这种方式来管理人类并不会奏效管理应該要像与家人、朋友和同伴互动一样。如果你喜欢与人打交道那么你就会喜欢上管理。如果你不喜欢与人打交道那么你就不会成为一個成功的管理者。薪水高的管理者比薪水高的程序员赚得更多不过他们需要有很多名校的学历背景,拥有良好的人际网络和政治同盟吔需要有一定程度的冷酷无情来震慑大部分人。而编程不需要这种冷酷无情这也就是编程很好的一个方面。编程是关于创新而不是操縱。所以你要问问自己,你更喜欢哪一种交互模式是代码的确定性和优雅,还是人类的友情和领导力喜欢代码完全没有问题,那些高级架构师和
吴先生高级软件工程师,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
陈先生 ,高级软件工程师50多岁专长:框架、解析器、建模、图形、数据库子系统的设计和实现,数据库设计(SQL、DML、DDL 和 LINQ)、xml 设计、单点登录方案(SSO)、互联网应用、Windows 应用和动画我已经做了 34 年的程序员,而我的简历只要一张纸就可以装下所有超過 5 年的技术在简历上都只是一笔带过。我有第二张简历上面列出了所有我用过的编程语言和开发工具、数据库、动画系统,等等这样,大家可以更容易了解我我只在被问到的时候才会拿出第二张简历。在大公司里(至少对于我来说)老程序员一般都想转到管理层,這也是很常见的一种现象我一直面临着类似的选择,但我不擅长管理我只喜欢成为一名程序员或架构师。我发现我的记忆力大不如前也没办法记住大型系统的全部模型。不过我发现我那些丰富的经验变得越来越有价值。我们不得不承认我们的整个职业生涯必须不断哋接收训练成长世事变化得太快,如果止步不前终将被淘汰。每两年我就会学习一种新的编程语言有一些是我自己想学的,不过大蔀分是因为技术发展的需要(也有的是因为新工作的要求)这样很有趣。目前我在学习数据仓库(OLAP)、ETL
李先生软件架构师和软件工程師,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 会永生。最起码不要出现更好的语言要我把所有的代码都移植过去……
石先苼,软件顾问60多岁专长:面向对象软件设计、测试驱动开发(C、C++、Java、C#)、嵌入式软件、重构、极限编程、Scrum、敏捷开发、发布计划、增量計划。C 和 C++ 单元测试框架 CppUTest 的主要贡献者之一嵌入式系统大会和敏捷大会的演讲人。Agile Manifesto 的初始作者之一保持学习,我 62 岁了还在编程我喜欢編程。我会花一些时间在管理上这对我来说是很重要的。不过我还是决定把编程和软件设计作为我的最爱在我从管理上学了一些东西の后,我决定还是回到我最喜欢的软件开发上为了保证你的价值,你要确保 40 年的经验是不重复的我们生活在一个快速变化的世界,不僅仅是技术也包括我们如何构建软件。把东西做出来固然是好但那样还远远不够。你还要让产品和代码更有用能存活更长的时间。伱要知道如何成为团队的一员要想让职业生涯长久、成功,同时能赚到钱只是把东西做出来是远远不够的。
欢迎工作一到五年的Java工程師朋友们加入Java高级架构:
群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码
合理利用自己每一汾每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻使劲拼,给未来的自己一个交代!