【導讀】: Josh Marinacci 是一名經歷很豐富的老程式設計師了,他從經驗、判斷力、知識面的廣度和深度等 5 個方面,闡述了為什麼需要僱傭老程式設計師。
你真的應該僱用老程式設計師。這一點我深信不疑。這些資歷比較老的程式設計師,不會像那些剛從大學裡面畢業的學生那樣工作那麼多時間。他們有孩子、配偶,需要還房貸,有機會還要去看一場比賽。他們不會在辦公室裡通宵玩 Xbox 和乒乓球,也不會每週工作 80 個小時,實際上他們會利用他們的假期。當然,他們的工資比年輕程式設計師要高。不管有多少種理由會說僱傭老程式設計師有哪些不好的地方,但是你仍然需要一名。原因很簡單:他們就像巴黎歐萊雅那樣值得你擁有。我之所以知道這一點,因為就是其中一員。
(網路圖,非本文作者)
經驗
老程式設計師可能無法像25歲時那樣,在腦子裡儲存那麼多的程式碼,但這些人的經驗非常豐富。我們知道,每一套系統的規模都在越來越大,大到最後都超過了你的腦容量——無論你的腦袋有多大——所以說能不能記住程式碼並不是像你想的那麼重要。相反,我們知道如何對每個系統進行模組化。我們就是傳說中的“10x程式設計師”,不是因為我們程式碼寫的有多好,而是因為我們已經看穿了一切。我們可以快速瞭解任何一門新的語言,因為我們已經用了很多年了。我們知道這些開發語言的共同特徵。語言這個概念一次又一次地流行起來。只要有足夠的時間,我們就能發現其中的相似之處,並突出這些不同點。
判斷力
“在低價所獲欣喜被遺忘後低質量帶來的苦惱會長久保持。” —本傑明.富蘭克林
老程式設計師有更好的判斷力。他們知道需要重點測試系統的哪個地方,哪些地方是不需要的。他們可以從架構圖中看出可能出現的問題。他們可以告訴你針對特定專案可以運用哪些技術,以及如何優化可靠性、效能或開發速度(選擇任意兩種)。他們還知道如何做出好的權衡。即使從來沒有為你的專案寫過一行程式碼,但是他們也是對得起他們的收入的。他們懂得如何提高質量。從長遠來看,質量意味著更低的成本。
學識淵博
“真正的知識來源於對某個主題及其內部工作的深刻理解” —阿爾伯特·愛因斯坦
老程式設計師在特定領域有很深厚的知識。這些知識幫助他們知道在哪裡尋找bug,以及如何避免bug。例如,我非常瞭解GUI工具包,已經用了幾十年了。我曾在三個(Swing、JavaFX 和 SubArctic) 核心團隊中工作過。我從頭開始構建了自己的工具包,只是為了好玩!我知道UI工具包。我可以寫出過去的40年裡關於工具箱的詳細歷史(嗯……也許我應該在某個時候把它寫下來)。
當我在一個新的 GUI 系統上工作時,我可以立即投入進去。如果我看到三個按鈕在右邊移動了相同的68個畫素,那麼我就可以立即看出這個 bug 是在三個位置中的一個(可能是全域性到區域性協調轉換程式碼)。如果你想要建立一個新元件,我可以準確地告訴你需要哪些擴充套件點。對於UI工具包的工作方式的深入瞭解,意味著我可以比其他人更快地構建應用程式。我有25年的肌肉記憶,這一點可以幫我壯大我的膽子。關於UI工具包我有著很深厚的知識。對於其他人來說,它可能是核心驅動程式、資料庫索引或編譯器。關鍵是,深度知識要比數小時應用或原始編碼能力更重要。
知識面廣
都是優秀員工的小團隊可以輕鬆擊敗都是良好或者一般員工的大團隊。 —史蒂夫·賈伯斯
老程式設計師都不求甚解。雖然我專門從事應用程式和前端開發,但我已經把整個堆疊都瞭解得很透徹了。我編寫了無記憶體限制系統的程式碼。我已經構建瞭解析器、資料庫和韌體;甚至還有一個非常糟糕的核心驅動程式。我已經繪製了演示圖形並生成了千兆位元組的測試資料。你僱用我,應該不是叫我來建立資料庫或編寫韌體或設計你的下一個網站,但我已經足夠了解這些系統的工作原理。這意味著我可以和那些在資料庫和韌體方面的專家交談。我知道的內容已經足夠讓我和其他領域的人進行有效的溝通。正是這種溝通技巧使我成為一個富有成效的團隊成員,而不是原始的編碼能力。
溝通技巧
任何一名40多歲的程式設計師都必須具備良好的溝通技巧。這些能力和他們的程式設計能力一樣有價值。對於那些需要用到新的API的開發者們來說,如果沒有地去看這些API,那麼它們幾乎是毫無價值的。很多大型軟體專案之所以失敗,不是因為糟糕的程式碼,而是因為溝通出現了問題。
是的,表面上似乎是花了更多的錢,使得工作量變得更少了,但實際上是變多了。老程式設計師們可以正確估計並按時執行程式碼。我們開發出的軟體,bug很少,效能表現也不錯。雖然我們寫的程式碼少了,但是我們會產生更多的業務價值。這就是我們值得擁有的原因。