站長論系統化學習
備注:本文修訂于2022年5月4日。
前言
系統化學習是人生的主路線,無論是學習Web,還是做大數據開發,還是搞機器學習和人工智能,離開系統化學習將會事倍功半。
系統化學習推而廣之是系統化思維,除了應用于學習和工作,在創業、在決策等生活實踐中依然起到很大的作用。
第一節:僅僅解決工作中的問題,這種成長不叫成長
在我看來,僅僅解決工作中的問題,這種成長不叫成長,只有系統化的學習知識,由量變到質變,才是真正的成長。
在工作中,很多情況下,我們碰到的問題都是工程類型的問題,例如:軟件版本兼容問題,類庫引用問題,配置參數問題。這種工程類的問題占據了我們大量的時間,雖然此類問題看似緊急,但是并不重要,對知識的積累往往不會產生多大的價值,試問哪個面試官會考察軟件的安裝,調試,升級呢?
很多人工作了三年、五年,過得很充實,一直待在原地不敢換工作,因為他心里清楚,自身的知識體系其實還是很不完善、很欠缺的;也有很多人工作了五年、十年,也是加班,也很努力,但是職業之路是越走越窄,因為工作就是工作,學習就是學習,這是兩碼事。老板追求的商業利潤的最大化,不是花錢來讓你進修提升自我技術的。
解決工作中的問題,可以促進成長,但是不能本末倒置,真正的成長只能依靠系統化的學習。
系統化學習簡單的來說,就是看書并多看書??磿投嗫磿?,這就是一個事務,缺一不可。
第二節:應急式的學習,學的越多越焦慮,需要系統化深入的學習
上節提到了:僅僅解決工作中的問題,這種成長不叫成長,只有系統化的學習知識,才是真正的成長。人們開始轉頭搞系統化學習了,但是很多學習都是應急式。
工作中需要學習大量的新東西以完成任務,這些學習都是應急性質的,學完即用。其實,這種應急的學習方式,往往屬于自頂向下的,學的越多,反而越零碎,內心越焦慮。


軟件開發分為:自頂向下和自底向上,學習亦是類似。自頂而下來看,要學的東西太多了:Java基礎,虛擬機JVM,微服務,數據庫,緩存,算法,數據結構…,這么多的東西都需要學習,能不焦慮嗎?這時候需要換一下思維方式:切入一點,深入進去,自底向上,以點帶面。
以我的學習經驗來說,例如以SQL的學習切入,向上可以延伸到MyBatis內容,向下可以挖掘到數據結構知識(索引,二分法,紅黑樹,B樹,B+樹),向右可以延伸到Spring內容(Spring的核心在于IOC,而其事務部分源自于數據庫的事務),向左可以延伸到多線程與并發內容(表鎖,行鎖,事務的隔離,悲觀鎖,樂觀鎖,索引的建立和優化)。如此以來,將多個領域的知識用一根主線串聯,猶如多個科目匯總成一個科目,那需要學習的東西還很多嗎?

很多人沒有用動態和發展的眼光看問題,他只看到了簡單,不屑于去學習,沒有深入進去,沒有以點帶面,不能領略到以小見大的情景。
說到本節,系統化學習已經包括了兩點:(1)看書并多看書??磿投嗫磿?,這就是一個事務,缺一不可。
(2)用動態和發展的眼光看問題,不要只看到了簡單,而不屑于去學習,要深入進去,做到以點帶面,領略以小見大。
第三節:看源碼,只是斷章取義,本末倒置,不是系統化學習之道
閱讀源碼,本身沒有問題,但是你要明白,自己到底走到那步了,框架都沒有搞清楚怎么用,就開始讀源碼,這違背系統化學習的道理。系統化學習倡導的學習過程是:
第一步:好好的閱讀框架的使用文檔
第二步:結合文檔,系統化、全面化的把框架的用法操練一邊
第三步:有時間,有余力,有興趣的話,再看看其源碼的底層實現
某些機構把讀源碼當做噱頭,那是處于商業目的來的,但是并不代表,讀源碼就是最正確的學習方法,甚至還是一種誤導。

田忌賽馬的道理,大家應該都知道吧,所以:一定要注意做事的順序。請記住,做事情的順序非常重要,不要隨意的顛倒次序。
小結
我覺得,那把這三節的內容看懂,運用到學習和工作中,系統化學習就算是掌握了。
世界不是均勻分布的,從人生哲理的角度來看,有眾人常說的二八定理,從客觀科學角度來說,有被稱為高斯最大貢獻的正態分布。把這三節內容掌握了,那么系統化學習的大部分內涵就能學到家了。
我是MyBatis中文官網站長,我對以上內容負責。
學習了
學習了
SQL確實是好的切入點
感覺自己并不孤獨啊,我正在走的路好多人早就走過了,現在要做的就是盡量少走點彎路
點贊
感謝站長,這篇文章的每句話都說到心坎上了。
看了站長寫的話,基本都是實話,沒有花里胡哨的,很有用,謝謝
為什么沒有點贊的功能呢,我要點贊??!
非常贊同站長的觀點,系統化的學習才是真學習,要從收益最大化的角度安排學習的主次。