咋一看,這似乎合情合理。畢竟,總有新的程式語言和技術源源不斷地冒出來。不過,我卻認為上面的觀點是不正確的。程式設計知識比一些人所意識到的有更長的實用期。
語法並不難
著手學習一門新的程式語言。對非程式設計師來說,當你知道Java的時候學習Python就好像在你知道英語的前提下去學習法語一樣。當然,但程式設計學習也並不是完全這個樣子的,會有新的語法要學習,但這僅僅是表面上看起來有點難,所有程式語言的核心概念都是相同的。
使用任何一門語言編寫一個程式,你會使用到像型別、資料結構和邏輯這樣的基礎知識。如果你已經瞭解了布林函式、整型、浮點數和字串,這些型別在新語言裡也是類似的用法。當然像列表、集、字典和目錄樹這樣的資料結構也是一樣的,並且你使用的邏輯也將是算數運算、if語句、迴圈以及函式呼叫等等。
此外,像該使用哪一種演算法、如何分解問題以及變數和函式的命名等關鍵技巧都能在新語言裡面直接套用。這些都是在各種程式語言之中通用的程式設計知識。借用“沒有銀彈”裡的術語:“語言的語法是偶然的知識,但如何程式設計才是至關重要的知識。”
庫和工具也是這樣。即使你一點也不明白新語言裡的正規表示式應該怎麼用,你也知道它們最可能都支援什麼。找到關於怎麼使用它們的知識並不難,難的是怎麼使用它們,這才是有價值的知識。對於像IDE這樣的工具也是這樣的道理,你可能並不知道細節,但你就是知道它們能夠做什麼。
所以學習一門新語言並不是什麼了不起的事情,但如果你跳槽了,可能仍有很多知識需要學習。我把知識分為以下3個維度:
3個維度的知識
程式設計:這個層次的知識是程式語言、正規化、技術和工具。就像我上面所說的,即使像語法這樣的細節可能完全不同,但各種程式語言中的很多核心概念是相同的。
域:這就是你知道的程式設計裡用到關於環境的知識。例如,如果你在電信工作,就是關於各種協議如何工作、如何處理簡訊、如何計費和監控等之類的知識。你在某個部門工作的時間越長,你對這塊瞭解的就越多,你對工作的貢獻可能就越大。
程式碼庫:這個是要看公司的。當你已經在某個公司工作了很長時間時,你就會明白你的程式設計方式:你明白哪些事情做完了,哪些部分是棘手和無法憑直覺做出判斷的,為什麼某件事情要用某種方式來做的整個過程等等。
活到老,學到老
作為一個程式設計師,當你在以上3個維度的知識都很健全時,你才是最有價值的。如果你這時候跳槽,不可避免的是你一開始將會對新的程式碼庫一無所知,你就不得不開始認真工作和學習。
然而,即使你跳槽後,你學到的程式設計和域的知識還是有用的。掌握幾門程式語言會給你更多的參考意見,讓你明白事情是怎麼用不同的方式來完成的(即使基本原理一樣)。通常來說多讀點軟體開發的好書也是不錯的。
最後,我認為能讓軟體開發變得有意思和讓人興奮的部分原因是總能學到新的東西。你永遠都不會厭煩,所以保持學習的狀態吧。你學到的大部分只是都會讓你變成一個更優秀的程式設計師,即使每年都有新的程式語言不斷被發明出來。
在此為您推薦更多與程式設計師技術相關的優秀文章:《談談關於程式設計師如何選擇技術方向》、《我們該怎麼成為技術尖子生》、《幫助你在技術面試中脫穎而出》、《一名程式設計師十年技術之路的思考與感悟》、《陳天:如何快速掌握一門技術?》,希望這幾篇文章能讓你在技術深度和廣度上有所收穫。
原文:http://henrikwarne.com/2014/12/15/programmer-knowledge/
譯文:http://www.php100.com/html/it/focus/2014/1217/8080.html
來自:PHP100
相關閱讀
評論(1)