何懼新人輩出:技術經驗才是開發者的核心價值
當說到開發人員知識的半衰期,較有根據及普遍認同的說法是5年,換句話說一個程式設計的知識5年後其價值只及最初時的一半。甚至有更無奈的說法指「程式設計是多餘的,因為幾年前學習的現在已經不管用了」。
5 年半衰期這說法好像有它的理由,因為程式語言不斷推陳出新,設備、技術及用戶的需求也不斷轉變。但這並不是事實的全部,程式設計知識比任何人想像還更長壽。
語法並不艱難
對於非開發人員要學習新的編寫語言,例如一個懂 JAVA 的人去學 Python 聽起來像是用英語來學法語,但程式語言不能與人類語言作類比,即使有新的語法要學,但這只是表面上的難題,編程核心的概念仍然是一樣。
用任何語言來寫程式都是運用著相同的基本功,例如邏輯、數據結構及變數類型,對於了解甚麼是 booleans、integers、floats 及 strings,新的語言也會利用這些,數據結構如 lists、sets、dictionaries 及 trees 的概念都是一樣,還有邏輯的算術、IF、Loop、function calls 等。
編程的重要技巧例如算式結構、分析問題,甚至是函數的命名都是任何語言都合用的,有了這些通用的技巧就很容易掌握多種語言。讓筆者引用《No Silver Bullet》的名言:語法只是不重要的知識,如何編寫程式才是重要知識。
程式庫及工具都一樣是一里通百里明,如果不懂新語言一些正規的表達式,不要緊!要知道世界上一定有支援工具去解決使用語法上的問題,因此新語法並不難,難度在於怎麼使用它們,這才是真學識。像 IDEs 這類工具,你可能不詳細了解卻知道它能夠做甚麼。學習新語言並不是甚麼大事,但如果轉職的話,便會有更多新事物等你去學。嘗試一下多層次去思考一下「知識」是怎麼回事。
不同的知識層次
編程:這關於編程語言、範式、技術和工具,即使語法不同,當中很多核心概念其實一樣。
領域:這是你對開發環境的認識,例如程式是用於通訊的,你會了解不同的 protocols、明白信息的處理過程,服務收費的計算及監控都該暸如指拳。從事任何行業日子越久,這專門的知識會越多,這額外的知識更具價值。
代碼庫:這是企業內部獨特的資源,當你在同一公司任職了相當的時間,會更了解你不同代碼中的意義所在,哪部份是棘手、難以判斷的以及開發歷程中留下來的語法及其原因。
持續學習
作為編程人員,在以上三個層次皆有涉獵的話會是有相當價值的,如果無可避免要轉工的話,第二及第三層次的知識會變得陌生,這才是需要重新學習的一環。編程知識和領域知識在你轉工時仍然有價值,懂得多種語言可以給予你指標去了解不同辦事方法。如果有時間花點精神鑽研多些有關常用軟件開發的書籍,例如 Code Complete、Clean Code、The Pragmatic Programmer,那便更好了。
結論:
開發軟件的吸引之處是你有機會學習新事物,不斷學習才會不覺沉悶,這是開發人員的必經之路,即使新語言年年更新,其實多學習我們亦可從中找到樂趣,努力吧各位 IT / 編程人員。