如何做編程知識投資及減少知識失效的影響


知識就是力量。


引言

常常聽到程序員童鞋哀嘆:不過三五年,學到的大半編程知識都過時了。得拼命學習新知識新技術,這啥時候是個頭?要解答這個問題,先來看初級工程師和高級工程師有什么區別。

初級工程師與高級工程師的區別在哪?初級工程師通常是按產品經理的要求堆功能,全然不顧系統整體的復雜性和穩定性,高級工程師則會對每增加一次的 IO 精打細算,因為每一個 IO 都會增加模塊耦合和交互復雜性,會降低系統整體和局部穩定性。高級工程師不是從功能單點來考慮問題,而是從系統容錯、性能、穩定性、高可用、可復用、可擴展性、可運維等多個層面來達到平衡。

初級工程師和高級工程師的區別在哪?從上述可知,高級工程師與初級工程師的知識構建體系是不一樣的。高級工程師在原理、判斷力、經驗、系統設計方面要比初級工程師掌握更多,而在新知識新技術上的累積則可能不如初級工程師。這涉及到知識體系構建的問題。


知識就是力量

知識就是力量。這是一句耳熟能詳的名言。但很多人都很困惑,我學了那么多知識,為何沒感受到力量? 其實,這句話我覺得有兩層含義:

  • 被應用的知識才是力量。就像用在刀刃上的金錢才是真正擁有的財富。但“被應用的知識才是力量”顯然不如“知識就是力量”簡短有力。因此,下次看到名言名句時,不妨從字面意思稍微擴展一下,領會其真實的意圖。

  • 知識具備潛在的力量。 知識一旦被開發出來,就已經具備了潛在的力量。即使暫時沒有人意識到它的力量,也不影響它具備力量的客觀性。而一旦有人能夠用在合適的場合,就能產生強大的效益和影響力。同樣,“知識具備潛在的力量”也不如“知識就是力量” 那么簡短有力。


編程知識體系

程序員在職業生涯中會累積很多編程知識。這些知識可以大致分為五類:

  1. 原理性知識。程序之所以能運行的基本原理和編程設計理念。萬變不離其宗。失效率5%。

  2. 通用性的常用使用知識。比如 linux 命令。只要 linux 不倒,這些知識一直有效,除非有更好的工具更換。失效率 20%。

  3. 不太通用的易變性使用知識。比如某個庫、框架、中間件的配置和編程。由於場景不斷變化、技術更替,這類的使用知識很容易失效,甚至可能面臨大面積更替。然而,很多程序員(包括我在內)在大部分時間都是跟這些打交道。失效率 80%。

  4. 稀缺性的經驗性知識。比如 CPU 飆高、內存滿、IO 抖動或尖刺、高並發的解決,這類知識是不過時且比較稀缺的知識和經驗。失效率 5%。

  5. 稀缺性的判斷力和設計能力。比如一個系統要成功,要具備哪些質量屬性,如何去達成這些質量屬性,如何在這些質量屬性中作出取舍。如何解決棘手的性能問題、如何保證系統的容錯能力、穩定性和可維護性,如何增強可擴展能力和通用能力,如何做到高可用?這類屬於判斷力和設計能力。失效率 5%。

(上述失效率數字是我根據自己情況憑感覺估,勿較真)

以上,第 0 類是基礎之基礎,卻是大部分初學者最容易忽視的。以為沒用,卻決定了程序員的長遠技術之路;第 1 類和第 2 類是接觸最頻繁的; 第 3 類是接觸最少的(因為發生和有機會接觸的概率就很小);第 4 類是經常會遇到但很少會去察覺和有意識去提升的。

在職業生涯的初中期,我們會積累大量的第 1、2 類的知識及部分的 0 類知識,尤其是第2類知識,以便有能力干活領取工資。然而,在中后期,很多人可能會止步於第 1、2 類,即着眼於實際干活,沒有提升第0、3、4 類的知識,原理、判斷力和經驗沒有跟上去,導致在某個時間節點上第 2 類知識大量失效,又缺乏新鮮的第 2 類知識來補足(畢竟人要考慮的非技術性事情也很多)。此外,第 0 類知識和第 4 類知識的匱乏,會導致第 2 類知識的吸收效率低下,加劇了知識失效的恐慌。

如果能夠在投入大量時間在第 1、2 上,同時從中磨練和投資第 0、3、4 類知識,那么,按理來說,是不應當擔心大量知識失效的。因為第 2 類知識注定是要失效的。保守估計人一生中會有 70% 的知識失效,但只要 30% 的原理認知、判斷力和經驗還在,第 2 類知識是可以源源不斷補足,知識失效就不會成為大的問題。這就好比,人體細胞每天都會有大量更替,但只要機體能力在,細胞更替並不會對整體造成明顯的影響。

事實上,知識失效應該是個普遍性問題,在各行各業都大量存在。只是在技術更替很快的軟件和互聯網領域感知得更加明顯。

我們做編程開發時會考慮容錯處理。同理,在知識體系的構建中,也需要考慮容錯處理,即:能夠容忍一部分知識失效,且不造成比較明顯的影響。


知識投資

引申一下,其實是“知識投資”的問題。當我們求學的時候,是幾乎沒有意識到求學就是一種知識投資行為,只是覺得別人讓我們學什么就學什么。待到踏入社會之后,知識投資就變成一個私人化的事情。有的人懂得投資什么知識並持續學習,有的人持續學習卻不清楚該投資什么知識,有的人則干脆停止了學習(知識投資)。

種瓜得瓜,種豆得豆。


投資什么

該投資哪些知識? 從上述分析,答案已經很明顯了:

  • 原理性知識。這是認識和產生一切第 1、2、3、4 類知識的源頭。掌握第 0 類知識的人是知識創造者,而缺乏第 0 類知識的大多數人,無可避免成為了知識的搬運工。

  • 通用性常用使用知識。 夠用即可,適量投資。

  • 易變性使用知識。看准方向,謹慎投資。

  • 稀缺性的經驗性知識。這是很多人簡歷上很想要的內容,然而由於發生概率低、機會有限,實際上大部分人很難會有這樣的知識和經驗。有機會就投資,但不能強求。

  • 稀缺性的判斷力和設計能力。這是我認為最應該投資的知識。完全可以類比老醫生把脈,看上去玄之又玄,又有實在道理支撐。

重點是原理性知識和判斷力、設計能力。原理性知識需要定期學習、日積月累;判斷力和設計能力則側重在實踐中磨煉和增強。


此外,對於非技術性知識投資:

  • 待人處事。表達、溝通、談判;至少要懂一點人情世故,做好對外接口。

  • 經濟財富。如今,個體的財富,已經遠遠不是靠個人努力就能實現,很大程度上會依賴國家發展和時代、行業的機遇。懂一些微觀經濟、宏觀經濟、理財、財富相關的知識,個人覺得也是很有必要的。不信你看,買房早的人,是不是比買房晚的人要少奮斗十年?我就吃了這方面的虧。

  • 生活類。比如避險、護理、急救、烹飪、開車等。

  • 愛好類。主要是作為生活的調劑,緩解工作的壓力。

  • 設計與藝術類。設計與藝術類可以成為生活的有力精神支撐,雖然看上去似乎沒用。


如何學習

如何去學習和投資呢?

  • 以用帶學。在運用時記錄不懂的地方,記錄在學習計划列表里;有空閑的時候,就從學習計划列表里取出,理解原理。比如在開發時,使用的 API 接口;在下班之后,可以讀讀 API 接口的源碼,學習里面用到的原理。

  • 構建扎實的基礎。閱讀經典書籍,建立相對牢固的知識體系結構。比如學習 《深入理解計算機系統》、《高性能MySQL》、《構建數據密集型應用》等。

上班族很難有大塊時間去學習,因此第一種方式比較適合;而學生黨有大塊時間,更應該采用第二種方式。


投資與消耗

如果我們把一個人的一生,用一個簡單的經濟模型來衡量,那就是投資與消耗。 投資,是指做能夠在未來產生價值的事情;消耗,則是支出已經產生的價值。

比如,我學習攝影技術。這是一種投資。因為我學到攝影技術后,可以拍出好看的照片。朋友圈的人看了心情愉悅,指不定能做出什么好事兒,間接促進了社會經濟效益的產生和流通。我游園,就是消耗,消耗自己的時間和錢財以及公園管理人員花費時間維護的美好環境。

理性的人並不拒斥消耗。理性的人只是拒斥持續不歇的消耗。持續不斷的消耗是有害的,它會破壞一個人的基本經濟生存結構,導致一個人從精神和肉體都會感受到痛苦。稍微理性的人,都知道要保持投資與消耗在相對平衡的狀態。

投資也不一定有回報。投資會有虧損。即耗費了時間和資金卻無所得。因此,投資並不是無緣由的大把撒花播種子,而是有目標有計划地播種澆水。


小結

本文緣起知乎一問。回答時,突然覺得自己的編程知識投資也做得不太好(做得較好的是對第 4 類知識的投資),沒有有意識地去做相關知識投資,知識體系也不牢固。

知識就是力量。話一點沒錯。但必須做好知識的投資。對於編程知識而言,原理性知識、判斷力和設計知識都是非常重要的知識類型。我們需要對這兩類知識多一些“持倉”占比。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM