【今日薦文】4位超60歲程序員大爺的生存祕籍

美國勞動力的中值年齡是42歲,而StackOverflow的一項有關年齡的調查表明,40歲之後的開發人員只佔開發人員總數的13%。

那麼其他人到哪裏去了?他們被解僱了或者上升到管理崗位了嗎?軟件開發對於過了40歲的人來說,是不是就意味着終結?


本文羅列了10位年齡超過40歲的老程序員們的故事,他們都是頂級的軟件開發者,拒絕從事管理崗位,仍然活躍在開發一線,將編程作爲生活收入的主要來源。


本文內容來自Belisoft博客,並已獲得作者的翻譯授權,查看原文SOFTWARE DEVELOPERS AFTER 40, 50 AND60 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,SilverbackLearning Solutions(Boise,ID)的高級軟件工程師,50多歲

專長:框架、解析器、建模、圖形、數據庫子系統的設計和實現,數據庫設計(SQL、DML、DDL和LINQ)、XML設計、單點登錄方案(SSO)、互聯網應用、Windows應用和動畫。


“我已經做了34年的程序員,而我的簡歷只要一張紙就可以裝下。所有超過5年的技術在簡歷上都只是一筆帶過。我有第二張簡歷,上面列出了所有我用過的編程語言和開發工具、數據庫、動畫系統,等等。這樣,大家可以更容易瞭解我。我只在被問到的時候纔會拿出第二張簡歷。

在大公司裏(至少對於我來說),老程序員一般都想轉到管理層,這也是很常見的一種現象。我一直面臨着類似的選擇,但我不擅長管理,我只喜歡成爲一名程序員或架構師。

我發現我的記憶力大不如前,也沒辦法記住大型系統的全部模型。不過,我發現我那些豐富的經驗變得越來越有價值。

我們不得不承認我們的整個職業生涯必須不斷地接收訓練成長,世事變化得太快,如果止步不前,終將被淘汰。

每兩年我就會學習一種新的編程語言,有一些是我自己想學的,不過大部分是因爲技術發展的需要(也有的是因爲新工作的要求)。這樣很有趣。目前我在學習數據倉庫(OLAP)、ETL處理、StarSchemas和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年開始,我通過四項主要的計算機技能生存下來。

1.   1)彙編語言級別的大型機系統編程。

2.   2)基於C語言的多主機平臺的可移植編程,包括桌面、中型Unix網絡、小型機的後續產品(如VAX),以及大型機。

3.   3)多層集羣服務器環境,由後端的多線程C以及處於中間層滿足高可用要求的Java組成,主要面向Windows服務器和Unix環境,也包括Linux。

4.   4)基於多線程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次的技術更新。

以下是我的職業概覽。

1.   從使用C和彙編語言編寫MS-DOS代碼開始

2.   學習使用C++和MFC開發windows應用程序

3.   學習使用Unix Perl開發基於CGI-BIN的Web應用

4.   學習C#

5.   學習Java和JSP

6.   學習智能手機開發:iOS/Android/Blackberry

7.   回到Unix,開始使用Python

8.   AWS開發(EC2、RDS、SQS,等等)”

在Quora上關注Victor Volkman




Kurt Guntheroth,軟件工程師,50多歲

專長: Windows、Linux/Unix、嵌入式;算法設計、C++、C、多線程和分佈式、電信、安全、套接字編程、標準委員會成員、產品計劃和概念落地;TQM、ISO 9000、敏捷開發和傳統開發方法論。


“軟件開發仍然是一個年輕的領域,工具和技術仍然在發生快速的變化。如果軟件開發人員不能持續地更新他們的技能,在不到20年的時間裏,他們就會過時。所以,一個40歲的老程序員很快就會發現自己已經無法勝任工作,而且前途堪憂。

好的開發人員會持續學習,直到他們退休,比如Ken ThompsonsBjarne 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


更多iOSAndroidPythonJavaMySQL的文章,請點擊:

http://blog.csdn.net/jamiecheung


更多JavaUnity3D的文章,請點擊:

http://blog.csdn.net/u010841622

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章