一位老程式設計師38年經驗總結:不要有年齡危機,直接去做

有人選擇販賣焦慮,有人選擇繼續前行。

能把一件事堅持 40 年的人並不多,我們今天要介紹的這位就是其中一員。他叫 Noah Gibbs,從事程式設計工作快滿 40 年了,最近他用部落格的形式分享了自己總結的一些經驗。

Noah Gibbs

Noah Gibbs

再過兩年,也就是 2024 年,我將成為一名擁有 40 年程式設計經驗的工程師。在此期間,我也獲得了豐厚的回報。我該從哪裡介紹我的經驗呢?就從軟體開發說起吧。

軟體開發還是「年輕」的

就拿程式語言來說,Fortran 可以追溯到 1957 年,同時期出現的還有 LISP 、Algol 等。設想一下,假如從 1957 年開始就有人從事程式設計工作,到今天也已經有 65 年的經驗了。

至於我,自 1998 年以來,我一直是一名全職程式設計師,時間跨度達 24 年。不過嚴格說來,我從 1984 年就開始幹程式設計師這一行了,這樣算下來已有 38 年從業經驗。

至於其他行業,例如文藝界大提琴演奏者馬友友(Yo Yo Ma)從 4 歲半就開始拉大提琴,演藝生涯超過 63 年,但他還不是世界上演奏時間最長的音樂大師。根據吉尼斯世界紀錄,有位音樂人在過去 80 年裡連續發行了多個音樂作品,這還不包括現場表演或其他活動。

因此相比其他領域來說,我們(程式設計)的領域還很年輕。

年齡不是問題

其實,不管從什麼時候開始都不會太晚。大約一年前,45 歲的我開始學習鋼琴。如果我能堅持下去,在我 60 歲時,我相信自己會成為一名非常優秀的鋼琴家。

我遇到過很多優秀的程式設計師,他們從 20 歲、30 歲甚至 40 歲才開始。我不明白我們為什麼不能從 50 歲或 60 歲開始學習一項新的東西。年齡不是問題。

嘗試不同的事情

如果你想從事一段漫長而又無趣的程式設計生涯,而現在又剛剛開始。不用擔心你剛起步,我經常會鼓勵別人「只要開始著手寫一些軟體,任何軟體都無所謂,只要去行動就足夠了。」在此過程中,你會學習很多不同的東西,學習順序並不重要,重要的是你學到了什麼。

以我個人為例,在我 40 年的職業生涯中,會遇到很多程式設計要求,如桌面應用、作業系統、Web 程序等等。只要你嘗試不同的事情,不必在意先學哪個,後學哪個,邊用邊學。如果你太拘泥於學習而忽視實踐,可能會失敗。

學習的東西暫時沒用?等等看

假如你擔心自己學的東西沒用怎麼辦?其實沒用是相對的。比如我,我把多年業餘時間投入到一種名為 DGD 的 舊 MUD 程式語言中。這門語言於我而言用處不大,然而學習過程卻教會我很多。它教會我後來 Ruby on Rails(一個使用 Ruby 語言寫的開源 Web 應用框架) 使用的東西,它教會我關於使用資料庫程式設計的知識,即使它沒有使用資料庫!

總之,這一學習過程在我後來學到的五六種不同的語言中都很有用。

有趣的是,多年後我憑藉 DGD 找到了一份諮詢的工作。本來世界上就沒有多少這種工作,但我就是其中之一!這比學過許多實用的語言更實用。

我也經常對自己說「現在還早」,我的意思是,我才 46 歲,不是 96 歲老的快走不動了。我至少還有 20 年,也許 50 年的時間用來學習。

不管怎樣,最重要的是持續不斷地工作。要想成為一名擁有 20 年、40 年或 70 年經驗的程式設計師,需要付出很多努力。學習一些有趣或有用的東西,10 年、20 年或 30 年後回過頭來看你收穫了什麼。

談到工作,我認為工作是一種很好的學習方式。不過我也喜歡做一些與工作無關的事情。無論與工作有關與否,我都會編寫一些程式碼。我喜歡寫一些其他程式設計師可以使用的東西,這樣才有意義。假如說,你不喜歡現在的工作了,你要想辦法改變你的觀點,讓自己適應工作;假如真的無法堅持,你應該採取措施,比如休假或者辭職。

要腳踏實地

做決定很容易,比如你要成為一名計算機程式設計師,然後制定了一堆計劃、無數個要點、分成幾大部分來實現這一目標。但是我想說的是,不要把計劃看得太認真。

學習程式設計並不是一項你計劃好的任務,當你開始動手時,你就是一個程式設計師。如果你還沒開始,建議你去一個線上程式碼學習網站編寫你的第一個程序,它應該不會超過 20 分鐘。

當你積累到一定程度,開始寫一些規模較大的軟體時,可能會面臨程序臃腫等問題,這時你就需要學習一些模組化和封裝的知識。想讓程序運行得更好,還需要掌握一些數學知識。所有這些都可以在網上找到,如果你想深入學習,還能找到參考書籍和課程。

你也可以培養一些愛好,而不是把所有精力投入到軟體程式設計裡。保持繼續工作,它會讓你變得更好,不要害怕那些看起來不切實際的工作。就像我不知道我要怎麼用音樂來幫助我的軟體編寫。但未來是非常遙遠的,沒有人可以預測 20 年後會發生什麼。

讓自己變得更優秀

早期的職業培訓(程式設計學校、部落格文章、大學課程、書籍)有點像裝配線,會學習到一些非常基礎的技能,例如編寫函數、調試等,這種學習方式試圖確保你能掌握基本程式設計能力。

如果你想在一眾人中展露鋒芒,你必須非常擅長某件事,而這件事必須是受歡迎的、有利可圖的、缺你不可的那種。如果你打算在軟體領域賺到比爾 · 蓋茲那樣的財富,而你卻寫了 Haskell(複雜、深奧、廣受好評,但沒那麼賺錢),那麼這將是一個巨大的失敗,反之亦然。

從基礎中學習深層次原則

不要一開始就去學習軟體設計的深層原理,假如沒有實踐經驗的話,這個過程會很痛苦。你可以先從構建簡單的軟體開始,至於用哪種語言也不用糾結,關鍵是動手實踐。然後找出這一過程遇到的錯誤,查資料、從原理上進行解決。

假如同樣的過程循環 20 年,構建、查錯、學習理論、糾錯,你會收穫很多。在這個行業,技術變化相當快,你也可以從其他領域學到很多東西。

不要害怕,直接去做就好了。至於我,四十年的時間不知不覺就過去了。無論如何,只要堅持下去,就算成功了。

原文連結:https://codefol.io/posts/the-forty-year-programmer/