
知識是學(xué)不完的,我們必須要找到正確的學(xué)習(xí)方法才能加速成長。就像查理.芒格所說,人類只有發(fā)明了發(fā)明的方法之后才能快速發(fā)展;我們只有學(xué)習(xí)了學(xué)習(xí)的方法之后才能成為高手。我將學(xué)習(xí)歸納成三點:要點+堅持+手段。
????????首先我們要找到哪些是以前很重要,現(xiàn)在仍然重要,未來可能同樣重要的知識。在我看來這些知識大都偏向底層基礎(chǔ),就像習(xí)武修煉內(nèi)功一樣。學(xué)好了基礎(chǔ),就如同打通了任督二脈,再領(lǐng)悟上層的招式就易如反掌了(下一篇【編程篇】再細致討論)。
????????然后學(xué)習(xí)貴在堅持,終身學(xué)習(xí)已成不可逆轉(zhuǎn)的趨勢。這兩個公式最能反映堅持的效果:1.01的365次方=37.8, 0.99的365次方=0.03。
????????最后是學(xué)習(xí)的手段,當然每個人可能會有不同的適合自己的手段。我的學(xué)習(xí)手段是看書+實踐+交流+構(gòu)建。
看書。不要當一個“百度”或“google”程序員。我見過很多的程序員不看書的,他們喜歡去看別人的博客或者百度搜索的文章,淺嘗輒止。這樣學(xué)習(xí)的知識是零散的,過幾天很快就忘記了。 實踐。知識如果不能改變行為,就沒有用處。而知識一旦改變了行為,本身就立刻失去意義。所以我們需要不停的去實踐學(xué)到的知識,會得出新的認知,再去實踐,形成良性循環(huán)。
交流。可以避免思維定勢,閉門造車,而應(yīng)該從外部吸收一些好的想法和建議來取長補短。正所謂三個臭皮匠,賽過諸葛亮。
構(gòu)建。通過思考,對比(橫向),總結(jié)(縱向)。通過關(guān)聯(lián)將知識結(jié)構(gòu)化,結(jié)成網(wǎng)絡(luò),達到融匯貫通,舉一反三,最后條條大路通羅馬。(為什么通過關(guān)聯(lián)可以更有效的學(xué)習(xí),有興趣的同學(xué)可以了解一下大腦的緣腦阻斷機制。我更愿意相信天賦是別人找到了這扇門的鑰匙)。
下面是我采用的學(xué)習(xí)手段中關(guān)于構(gòu)建的分享:
????????計算機世界是對人類現(xiàn)實世界的模擬,所以計算機里面的概念都能在現(xiàn)實世界找到原型。比如代理模式(中介),IOC(好萊塢法則),緩存(藏書室-書架-書桌),分層(分工),隊列(生活中排隊),適配器(轉(zhuǎn)接頭)等。在學(xué)習(xí)過程中帶著這種類比的思維去學(xué)習(xí),很好理解且記憶深刻。
????????知識的積累是一個集合結(jié)構(gòu)>線性結(jié)構(gòu)>樹形結(jié)構(gòu)>圖形結(jié)構(gòu)的過程(還記得數(shù)據(jù)結(jié)構(gòu)中的四種邏輯結(jié)構(gòu)嗎)。知識結(jié)構(gòu)如果形成縱向(面向?qū)ο罄^承思想)+橫向(面向切面思想)的縱橫交叉網(wǎng)絡(luò),會更加的牢不可破。這里我舉三個例子。
1 負載均衡這個根節(jié)點下,包含子節(jié)點nginx,LVS, 硬件負載均衡如F5等。縱向我們要關(guān)注凡是負載均衡都要面臨的問題(調(diào)度算法,會話問題,反向代理知識等);橫向可以從osi七層網(wǎng)絡(luò)模型角度進行對比。因為負載均衡工作的網(wǎng)絡(luò)層次,決定了它的性能、特點和場景。這就是為什么計算機網(wǎng)絡(luò)基礎(chǔ)很重要的原因。
2 面向?qū)ο笳Z言這個根節(jié)點下,有子節(jié)點java, c++,python, javascript等。 縱向我們要關(guān)注的是所有面向?qū)ο笳Z言的特性——繼承,多態(tài)與封裝; 橫向可以從靜態(tài)語言/動態(tài)語言,解釋型語言/編譯型語言,強類型與弱類型語言的特點等角度進行對比。語言的設(shè)計運行采用了那些方式,決定了語言的性能,靈活性,安全性等。
3 數(shù)據(jù)庫這個根節(jié)點下,包括Mysql,redis,mongodb,cassandra等 ??v向我們要關(guān)注所有數(shù)據(jù)庫共同的特點如數(shù)據(jù)模型,持久化方式,事務(wù)支持,索引,日志等。橫向可以從高可用與高性能下的多節(jié)點(包含主從,集群,分片三種模式。每種模式有這多種實現(xiàn)方案,都會包含相同的技術(shù)比如sentinel,proxy,副本集,分表,選舉,復(fù)制等。這些技術(shù)都需要解決相同的問題如一致性,主從切換等)等角度進行對比。
這樣在面對一個同類型的新技術(shù)時,應(yīng)變能力強,學(xué)習(xí)速度快,就不用從零開始。所以現(xiàn)在有些人不斷追求新的框架,其實是本末倒置的。我認為一個優(yōu)秀的工程師需要三大能力1編程能力2、架構(gòu)能力3、工程能力。接下來的三篇文章【編程篇】,【架構(gòu)篇】和【工程篇】將分別來討論。