1. 程式人生 > >高效學習(二)深度、歸納和堅持實踐

高效學習(二)深度、歸納和堅持實踐

所有內容均來自左耳朵耗子的極客專欄

系統性學習

只有把這個學習模板中的內容都填實了,我才罷休。這個模板如下。

(一)這個技術出現的背景、初衷和要達到什麼樣的目標或是要解決什麼樣的問題。這個問題非常關鍵,也就是說,你在學習一個技術的時候,需要知道這個技術的成因和目標,也就是這個技術的靈魂。如果不知道這些的話,那麼你會看不懂這個技術的一些設計理念。

(二)這個技術的優勢和劣勢分別是什麼,或者說,這個技術的 trade-off 是什麼。任何技術都有其好壞,在解決一個問題的時候,也會帶來新的問題。另外,一般來說,任何設計都有 trade-off(要什麼和不要什麼),所以,你要清楚這個技術的優勢和劣勢,以及帶來的挑戰。

(三)這個技術適用的場景。任何技術都有其適用的場景,離開了這個場景,這個技術可能會有很多槽點,所以學習技術不但要知道這個技術是什麼,還要知道其適用的場景。沒有任何一個技術是普適的。注意,所謂場景一般分別兩個,一個是業務場景,一個是技術場景。

(四)技術的組成部分和關鍵點。這是技術的核心思想和核心元件了,也是這個技術的靈魂所在了。學習技術的核心部分是快速掌握的關鍵。

(五)技術的底層原理和關鍵實現。任何一個技術都有其底層的關鍵基礎技術,這些關鍵技術很有可能也是其它技術的關鍵基礎技術。所以,學習這些關鍵的基礎底層技術,可以讓你未來很快地掌握其它技術。可以參看我在 CoolShell 上寫的 Docker 底層技術那一系列文章。

(六)已有的實現和它之間的對比。一般來說,任何一個技術都會有不同的實現,不同的實現都會有不同的側重。學習不同的實現,可以讓你得到不同的想法和思路,對於開闊思維,深入細節是非常重要的。


舉一反三

那些聰明的或者是有經驗的人舉一反三起來真是太令人驚歎。


我覺得一個人的舉一反三能力,可以分解成如下三種基本能力。

(一)聯想能力。這種能力的鍛鍊需要你平時就在不停地思考同一個事物的不同的用法,或是聯想與之有關的別的事物。對於軟體開發和技術學習也一樣。

(二)抽象能力。抽象能力是舉一反三的基本技能。平時你解決問題的時候,如果你能對這個問題進行抽象,你就可以獲得更多的表現形式。抽象能力需要找到解決問題的通用模型,比如數學就是對現實世界的一種抽象。只要我們能把現實世界的各種問題建立成資料模型(如,建立各種維度的向量),我們就可以用數學來求解,這也是機器學習的本質。

(三)自省能力。所謂自省能力就是自己找自己的難看。當你得到一個解的時候,要站在自己的對立面來找這個解的漏洞。有點像左右手互博。這種自己和自己辯論的能力又叫思辨能力。將自己分裂成正反方,左右方,甚至多方,站在不同的立場上來和自己辯論,從而做到不漏過一個 case,從而獲得完整全面的問題分析能力。


在這方面,我對自己的訓練如下。

(一)對於一個場景,製造出各種不同的問題或難題。
(二)對於一個問題,努力尋找儘可能多的解,並比較這些解的優劣。
(三)對於一個解,努力尋找各種不同的測試案例,以圖讓其健壯。


老實說,要獲得這三種能力,除了你要很喜歡思考和找其它人來辯論或討論以外,還要看你自己是否真的善於思考,是否有好奇心,是否喜歡打破沙鍋問到底,是否喜歡關注細節,做事是否認真,是否嚴謹……


這一系列的能力最終能構建出你強大的思考力,而這個思考力會直接轉換成你的求知和學習能力


總結歸納

(一)對自己的知識進行總結和歸納是提高學習能力的一個非常重要的手段。
(二)提高總結歸納的能力,首先要多閱讀,多積累素材,擴大自己的知識面,多和別人討論,多思辨,從而見多識廣。
(三)總結歸納更多是在複習中對知識的回顧和重組,而不是一邊學習一邊就總結歸納。
(四)總結歸納的方法:把你看到和學習到的資訊,歸整好,排列好,關聯好,總之把資訊碎片給結構化掉,然後在結構化的資訊中,找到規律,找到相通之處,找到共同之處,進行簡化、歸納和總結,最終形成一種套路,一種模式,一種通用方法
(五)要訓練自己這方面的能力,你需要多看一些經典的方法論圖書,看看別人是怎樣總結和歸納知識的。你可以在一開始模仿並把自己的理解的知識給寫出來,寫部落格會是一種很好的方式。另外一種更好的方式是講一遍給別人聽。總之,你需要把你總結歸納的知識公開出來,給別人看,接受別人的批評和反饋,這樣你才能成長得更快。
(六)你需要像我一樣擴大自己的知識面,然後學會寫部落格,就能慢慢地擁有這種能力了。這種將資訊刪減、精煉和歸納的方法,可以讓你的學習能力得到快速的提升。當你這麼做的時候,一方面是在鍛鍊你抓重點的能力,另一方面是在鍛鍊你化繁為簡的能力。這兩種能力都是讓你高效學習的能力。
(七)擁有這樣能力的人,都需要有在更高的維度上思考問題的能力。比如一些名人的金句,就是這種能力的體現。這種能力需要你非常深入的思考,需要你的閱歷和經驗,當然,和聰明人在一起也是提升這種能力最有效的選擇


實踐出真知

(一)所謂實踐出真知,也就是學以致用,不然只是紙上談兵,誤國誤民。只有實踐過,你才能對學到的東西有更深的體會。
(二)看書想得到的應該是作者的思維方式,而不光光是知識
(三)吃自己的狗糧,才能有最真實的體會
(四)實踐是很累很痛苦的事,但只有痛苦才會讓人反思,而反思則是學習和改變自己的動力。Grow up through the pain, 是非常有道理的。


堅持不懈

(一)堅持是一件反人性的事,所以,它才難能可貴,也更有價值。我從 2003 年寫 blog 到今天 15 年了,看書學習寫程式碼,我都會一點一點的堅持。人不怕笨,怕的是懶,怕的是找到各種理由放棄。
(二)堅持也不是要苦苦地堅持,有迴圈有成就感的堅持才是真正可以持續的。所以,一方面你要把你的堅持形成成果晒出來,讓別人來給你點贊,另一方面,你還要把堅持變成一種習慣,就像吃飯喝水一樣,你感覺不到太多的成本付出。只有做到這兩點,你才能夠真正堅持。