什麼是程序員的知識半衰期?這與咱們國家的五年計劃相似,換句話說,你所知道的編程知識頗有可能才五年後過期,相似的感悟是:「我如今寫代碼的水平落後了,由於本身知道這套語言已通過時了。」html
起初,這彷佛也合情合理。畢竟,有一個新的編程語言和技術出來絡繹不絕。不過,我認爲這是錯誤的。編程知識語言甚至比人的壽命還要長,由於他們永遠都不會滅亡。例如:VB,ASP。java
語法並不難python
剛開始學習新的編程語言的時候,當本身還不是一名程序員的時候,學習python語言或者學習java的時候你聽起來就像學英語,可是當你已經會來英語的時候再去學習新的語法,其實這個時候僅僅只是一個表面的難度,全部的核心概念是相同的。程序員
要在任何語言編寫一個程序,你使用相似類型,數據結構和邏輯基礎。若是您已經瞭解布爾,整數,浮點數和字符串,它們有可能在新的語言使用爲好。這些一樣適用於像列表,集合,字典和樹的數據結構。並使用邏輯將是算術運算,if語句,循環,函數調用等。算法
此外,關鍵的技能,如該算法使用,如何分解問題,變量的命名和功能都在一個新的語言直接使用。這是通用編程知識語言之間輕鬆傳輸。借用「沒有銀彈」的術語:語言的語法是偶然的知識,而不是如何編程的基本知識。編程
這一樣適用於庫和工具。即便你不知道的表達到底是如何常常在一個新的語言是用來作什麼,可是你應該知道,有對這些知識才有可能獲得最大的支持。查找有關如何使用它們的細節是不困難的部分,而是如何利用他們是有價值的知識。與IDE等工具,一樣的事情 - 你可能不知道的細節,但你知道你能夠經過他們來作你想作的事情。數據結構
因此,學習一門新的語言是否是一個大問題。可是,若是你換工做,可能仍存在不少東西須要學習。我想它在3個維度的知識。編程語言
知識三維函數
編程:這被編程語言,模式,技術和工具。就像我上面寫的,有不少核心概念是同樣的,即便細節(如語法)變化。工具
域:這個你知道在其中使用的程序的環境的內容。例如,若是你在電信工做,它是各類協議如何工做的知識,短信如何處理,計費和監控是如何完成的等你在某個部門工做的時間越長,你越瞭解它,和更有價值您的貢獻便可。
代碼庫:這是特定的公司。當你已經工做了很長一段時間,你知道周圍的代碼的方式。你知道的事情都作了,哪些部分是棘手和直觀,而爲何有些東西是作某種方式的歷史。
保持學習很重要
做爲一個程序員,你是當你在全部三個方面有見地的最有價值的。若是你換工做,這是不可避免的,你將一無所知學習新的語言代碼 - 您只需在挖掘和學習。
不過,你所學到的關於編程和域將是有益的,即便你換工做。知道幾種編程語言會給你的事情是如何作不一樣的(即便基本面是同樣的)的參考點。這也是很好的通常閱讀軟件開發的書籍,如代碼完成,乾淨的代碼程序員修煉。
最後,我認爲上述這些使軟件開發有趣和使人興奮的事情,總有一些東西要學。你永遠不會以爲無聊。所以,保持學習。你最瞭解什麼語言會令你成爲一個更好的開發者,即便每一年有新的代碼語言誕生。
本文首發:http://column.iresearch.cn/b/201606/772077.shtml