知識就是力量。
引言
常常聽到程序員童鞋哀嘆:不過三五年,學到的大半編程知識都過時了。得拼命學習新知識新技術,這啥時候是個頭?要解答這個問題,先來看初級工程師和高級工程師有什么區別。
初級工程師與高級工程師的區別在哪?初級工程師通常是按產品經理的要求堆功能,全然不顧系統整體的復雜性和穩定性,高級工程師則會對每增加一次的 IO 精打細算,因為每一個 IO 都會增加模塊耦合和交互復雜性,會降低系統整體和局部穩定性。高級工程師不是從功能單點來考慮問題,而是從系統容錯、性能、穩定性、高可用、可復用、可擴展性、可運維等多個層面來達到平衡。
初級工程師和高級工程師的區別在哪?從上述可知,高級工程師與初級工程師的知識構建體系是不一樣的。高級工程師在原理、判斷力、經驗、系統設計方面要比初級工程師掌握更多,而在新知識新技術上的累積則可能不如初級工程師。這涉及到知識體系構建的問題。
知識就是力量
知識就是力量。這是一句耳熟能詳的名言。但很多人都很困惑,我學了那么多知識,為何沒感受到力量? 其實,這句話我覺得有兩層含義:
-
被應用的知識才是力量。就像用在刀刃上的金錢才是真正擁有的財富。但“被應用的知識才是力量”顯然不如“知識就是力量”簡短有力。因此,下次看到名言名句時,不妨從字面意思稍微擴展一下,領會其真實的意圖。
-
知識具備潛在的力量。 知識一旦被開發出來,就已經具備了潛在的力量。即使暫時沒有人意識到它的力量,也不影響它具備力量的客觀性。而一旦有人能夠用在合適的場合,就能產生強大的效益和影響力。同樣,“知識具備潛在的力量”也不如“知識就是力量” 那么簡短有力。
編程知識體系
程序員在職業生涯中會累積很多編程知識。這些知識可以大致分為五類:
-
原理性知識。程序之所以能運行的基本原理和編程設計理念。萬變不離其宗。失效率5%。
-
通用性的常用使用知識。比如 linux 命令。只要 linux 不倒,這些知識一直有效,除非有更好的工具更換。失效率 20%。
-
不太通用的易變性使用知識。比如某個庫、框架、中間件的配置和編程。由於場景不斷變化、技術更替,這類的使用知識很容易失效,甚至可能面臨大面積更替。然而,很多程序員(包括我在內)在大部分時間都是跟這些打交道。失效率 80%。
-
稀缺性的經驗性知識。比如 CPU 飆高、內存滿、IO 抖動或尖刺、高並發的解決,這類知識是不過時且比較稀缺的知識和經驗。失效率 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 類知識的投資),沒有有意識地去做相關知識投資,知識體系也不牢固。
知識就是力量。話一點沒錯。但必須做好知識的投資。對於編程知識而言,原理性知識、判斷力和設計知識都是非常重要的知識類型。我們需要對這兩類知識多一些“持倉”占比。