原文鏈接:https://joshondesign.com/2017/07/02/hire_old_programmer
你應該雇傭一個老程序員。這是真的。的確,老程序員不會像剛走出校門的新人一樣工作那么長的時間。他們有小孩,有妻子,有貸款,并且還要參加壘球比賽。他們不會在辦公室玩兒Xbox,或者乒乓球。他們不會一周工作80個小時,并且他們實際上會真的會在假期休息。當然雇傭他們要比新人花費多。盡管有這么多你不應該雇傭他們的理由,你還是應該雇傭一名老程序員,因為一個簡單的理由:他們值這個價。我當然知道這些,因為我就是。
經驗
老程序員不能記住程序員在25歲時能記住的代碼量,但是我們有驚人的經驗。我們知道每個系統的代碼都將成長到一個人無法記住的程度--不管你的大腦有多大,所以能記住多少代碼并不像你認為的那么重要。作為替代,我們知道怎樣做模塊化。我們就是《10倍程序員》中的神話;并非因為我們代碼寫的多好,而是因為我們已經經歷過太多的東西。我們可以輕松的學習一門新語言,因為我們已經在過去的歲月里已經用了太多。我們知道基本的特性。語言的概念一次又一次成為時尚。經過足夠的歲月,我們的經驗豐富到可以輕易的指出其中的相似性,以及真正的差別。
判斷力
“The bitterness of poor quality remains long after the sweetness of low price is forgotten.” — Benjamin Franklin
老程序員知道如何做辨別。他們知道如何把系統切分成可信可測的模塊。他們可以從架構圖中指出系統可能的瓶頸(你有大量數據還是大數據?這很重要)。他們可以指出特定的項目中應該選用何種技術,怎樣進行可靠的優化,性能,或者開發的效率(任選其二)。他們知道如何做好的權衡。盡管他們可能沒有為你的項目寫下一行實際的代碼,老程序員還是像金子般貴重。他們懂得怎么構建質量。在長期的項目運行中,高質量意味著低支撐成本。
深層知識
“True knowledge comes with deep understanding of a topic and its inner workings.” —Albert Einstein
老程序員在特定的領域有深層知識。這些知識幫他們知道去哪里查找bug,怎樣避免bug成群出現。例如,我對GUI工具包就非常精通。我在過去數年使用過成打的GUI工具包。我曾經在三個項目(Swing, JavaFx, 和SubArctic)的核心團隊呆過。我曾經4次構建過自已的工具包,僅僅是國為有趣。我了解UI 工具包。我可以詳細的描述工具包40年的歷史(嗯,或者我該在什么時候寫下來)。
當我參與一個新的GUI系統項目時,我會很快的融入。如果我看到3個按鈕向右偏移了68象素,我能立即指出可能出現 bug 的三個地方(很可能是全局坐標到本地坐標的轉換代碼)。如果你想做一個新的組件,我可以告訴你需要的擴展點在什么地方。這些關于UI工具包如何工作的深層知識意味著,我可以用比他人快數倍的速度構建應用。我有25年的強大的肌肉記憶來支撐我。我的深層知識是關于UI工具包的。對于其它人可能是內核驅動,數據庫索引,或者編繹器。重點是,深層知識遠勝于數小時的使用或者原始的代碼能力。
廣博的知識
A small team of A+ employees can easily perform larger teams of B and C employees. — Steve Jobs
老程序員都是各行的業余選手。當我專注在應用和前端開發時,就把整個技術棧全摸索了一遍。 我曾為內存受限的系統編寫過代碼。我構建過解析器,數據庫,固件,甚至做過一個差勁的內核驅動編寫人員。我為demo繪制過圖片,也構建過數GB的測試數據。我當然不是你應該雇傭來做構建數據庫,或者編寫固件,甚至作為你的下一個網站的插畫師,但我知道這些系統是如何工作的。這意味著,我知道誰在數據庫或者固件領域是專家。我知道如何與其它領域的人員進行有效的溝通。這些溝通技能讓我成為一個有效率的團隊成員,而不是僅有原始編碼技能的人員。
溝通能力
任何人在40多歲的時候仍然是一個程序員, 必然已經發展出了自已良好的溝通技能。這些技能的價值與他們的編碼能力相當。如果一個新開發的API沒有傳遞給其它應該使用的人,那同樣毫無價值 。大多數大型的軟件最終失敗,歸根結底是由于溝通問題,而不是差勁的代碼。
所以, 看上去我們成本高,卻工作的少。但我們真的做了更多。我們能做合理的估計,并及時的交付代碼。我們構建更少缺陷、且具有合理性能的軟件。我們可能寫了更少的代碼,但卻創造更多的商業價值,那就是我們為什么值這個價。
說到這里,你什么不雇傭我?:)