[譯]你應該僱傭老程式設計師的五個理由
譯者簡介:ASCE1885, ofollow,noindex" target="_blank">《Android 高階進階》 和 《Android 高階進階(原始碼剖析篇)》 作者
原文連結: https://joshondesign.com/2017/07/02/hire_old_programmer
你應該僱傭老程式員,我沒開玩笑!當然,年長的程式設計師不會像大學畢業生那樣能夠工作那麼多個小時。他們有孩子和配偶,要還抵押貸款,而且還要參加壘球比賽。他們不會在辦公室通宵玩 XBox 和乒乓球,也不會每週工作 80 個小時,實際上他們將會享受屬於他們的假期時間。當然相比年輕程式設計師,他們的薪資待遇更高。儘管你有這麼多理由不去僱傭老程式設計師,但你別無選擇。最簡單的一個原因是:他們值得你的付出。我知道這一點,我就是這樣一名老程式設計師。
老程式設計師也許不會像 25 歲時那樣在大腦中能裝下那麼多程式碼,但我們有著非常豐富的經驗。我們知道,不管你的腦袋有多大,每個系統的程式碼規模都將會變得遠遠超過你大腦中所能容納的量,所以大腦能裝下多少程式碼並沒有你想象的那麼重要。相反,我們理解模組化的設計思想,我們是傳說中的 10X 程式設計師,當然不是因為我們寫的程式碼比其他人好得多,而是因為我們已經經歷過了一切。在過去這些年,我們已經使用過很多程式語言,因此我們可以很容易學會任何新的語言。我們知道語言間的共同點,程式語言的概念一次又一次興起,擁有著多年的經驗,我們可以發現語言的相似之處並指出差異的地方。
“The bitterness of poor quality remains long after the sweetness of low price is forgotten.”
“在廉價所帶來的甜蜜被遺忘後,劣質所伴隨的苦楚將依然留存。”
— 本傑明·富蘭克林
老程式設計師擁有判斷力。他們知道在何處可以將系統進行模組化拆分,並保證是可靠和可測試的。他們可以從架構圖中看出系統可能的瓶頸在哪裡。(你是擁有大量的資料還是大資料?這一點很重要)。他們知道如何為特定專案選擇哪種技術,以及如何優化可靠性,效能和開發速度(三者中任選二)。他們知道如何做出權衡。即使他們從來沒有為你的專案實際寫過一行程式碼,但老程式設計師還是很有價值的。他們懂得如何建立質量保證,從長遠來看,高質量意味著更低的維護成本。
知識的深度
“True knowledge comes with deep understanding of a topic and its inner workings.”
“真正的知識來源於對某個主題及其內部工作原理的深刻理解”
— 阿爾伯特·愛因斯坦
老程式設計師對特定領域有深刻的理解。這些知識使得他們知道從哪裡可以找到系統的 bugs,以及如何完全避免這些錯誤。例如,我非常熟悉 GUI 工具包,過去這些年我用過很多種,我待過三個核心工程團隊(Swing,JavaFX 和 SubArctic)。出於興趣,我曾經四次從零開始構建過自己的工具包,我甚至可以寫一個過去四十年 GUI 工具包發展的詳細歷史(也許我應該在某個時候把它寫出來)。
我可以立即投入到新的 GUI 系統上並開始工作。如果我看到三個按鈕都向右移動了 68 個畫素,那麼我可以立即判斷出 bug 位於三個位置其中之一(可能是全域性到區域性轉換程式碼的問題)。如果你想建立一個新的元件,我可以確切的告訴你需要哪些擴充套件點。對於 GUI 工具包工作原理的深入理解,意味著我真的可以比別人更快的構建應用程式。我有 25 年的肌肉記憶做支撐,我掌握了 UI 工具包的深層知識,對於其他人來說,他的深層知識可能是核心驅動程式,或者資料庫索引,或者編譯器等。關鍵在於,深層知識相比能花多長時間編寫程式碼和純粹的編碼能力更重要。
知識的廣度
“A small team of A+ employees can easily out perform larger teams of B and C employees.”
一個由 A+ 員工組成的小型團隊可以輕鬆擊敗由 B 和 C 員工組成的大型團隊。
— 史蒂夫·喬布斯
老程式設計師涉獵都很廣,雖然我專注於應用程式和前端開發,但整個開發技術棧我都玩過。我曾為無介面的記憶體受限系統編寫過程式碼,還編寫過解析器,資料庫和韌體程式,甚至寫過一個非常糟糕的核心驅動程式。我寫過畫圖相關的 demos,生成過千兆位元組的測試資料等等。當然,你不應該聘請我來建立一個數據庫,編寫韌體程式或者設計你的下一個網站,但我由於有足夠的涉獵因此瞭解這些系統是如何工作的。這意味著我可以和資料庫專家或者韌體專家很好的交流,我知道如何有效的和其他領域的人交流。正是這種溝通能力使得我成為一個富有成效的團隊成員,而不僅僅是編寫程式碼的。
溝通技巧
任何一個四十多歲的程式設計師都必須具備良好的溝通技巧。這些能力和他們的程式設計能力一樣有價值。一個新的 API 如果不能有效的傳達給它的使用者,那麼它是毫無價值的。大多數大型軟體專案的失敗不是因為程式碼不好,而是因為溝通相關的問題。
沒錯,老程式設計師需要花費更多的薪資,而且看起來工作時間更少,但實際上我們完成了更多的工作。我們可以正確的評估並按時釋出程式碼。我們能夠構建出更少 bug 的系統,同時擁有合適的效能。我們可能寫的程式碼更少,但產出更多的商業價值。這就是我們值得高薪資的原因。