search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

四五十歲之後,還在編程的程序員都有誰?

作者|Vladimir Kazankov 譯者|薛命燈 關於程序員是不是吃青春飯的討論由來已久,對於那些步入中年的程序員來說,似乎不轉管理崗就會被富有活力的年輕程序員替代。但總有些頂級的軟體開發者,不願意從事管理崗位,仍然活躍在一線寫著代碼。你知道的,有哪些?

寫在前面

美國勞動力的中值年齡是 42 歲,而 Stack Overflow 的一項有關年齡的調查表明,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。我一直在學習新的東西,哪怕是很小的事情。我知道自己會是一個糟糕的管理者,所以我壓根沒有想往管理方向發展。

很多事情取決於你的態度。不要成為厭惡新技術的老技術人,也不要嘲笑那些正在使用新技術的人。在進行技術選型時,你的經驗應該成為決策的基礎。如果選擇了老技術,那是因為它們正好適合當前的需求,而不是因為要保護你那積攢了多年卻即將過時的專業知識,也不是因為害怕那些後進者帶著 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,開始使用 Python

  • AWS 開發(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 後台留過言的人有許多,關於程序員的年齡與職業發展的問題我們也曾多次討論,讓我印象最深的一條評論是這麼說的:

我想等到我八十多歲了,躺在醫院的病床上,還能把醫院的系統給黑了,生命不息,編程不止!

你會在一線開發崗上待多久?



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦