1. 程式人生 > >如何學習新技術

如何學習新技術

我從 2009年~2010 年左右開始學習資訊科技,從初期圍繞微控制器做電子設計,一路淺嘗輒止,走馬觀花。什麼語言都用過,在各種平臺上都幹過活,有用的沒用的都學了一些,一路嚐鮮一路丟。

雖然有識之士們都說,光靠廣度沒法找到工作,要對一門手藝有深度,到達深奧幽玄的境界。我自知能力有限,更何況,工作後每日加班,精力不濟,能讓我一窺天道的時間視窗越來越窄了。

即便如此,我也不覺得自己不行,這就是愚蠢人的樂趣。因為總有與你同樣愚蠢的人,他們很快樂,我為什麼不能快樂。我不僅快樂,而且要分享,要寫作,本文就談談在下走馬觀花的本領。

興味使然

首先要解決驅動力的問題,即便走馬觀花,心裡也得有股勁,是不是?所以你得喜歡程式設計這門手藝,不喜歡,那至少也得好奇,當個好奇寶寶。既不喜歡,也無好奇心,自主學習就沒法成立。

既然喜歡這門手藝,熱愛這個行業,那麼你自然有感興趣的領域,或者小問題,這就是學習新技術前要做的第一件事,確定一個你感興趣的方向。

有的朋友愛流行技術,因為網民們在學,所以他也想學。或者就業市場需要某個技能,所以被迫去學。這當然好啦,針對性地優化你的簡歷,在求職時候有用,但也僅限於此了。

興味使然的學習完全不同,你能用更加輕鬆的心態看待每個知識點,也能在適當的時候深入挖掘一些現象的背後原因,這是一個充滿快感的旅程,沒有人提醒你:那裡不是考點。

探尋入口

選擇了方向以後,就該選學習材料了。隨處可見的大型書單其實用處有限,因為材料的準備是分階段的,側重點不同的,這個過程伴隨著你對該領域的初步認識的建立,混雜著你的直覺,常識,以及一點點隨機性。

首先,做一些”自由探索”,閉上眼睛,聽聽偉大的網際網路在你耳邊的低語:Google,維基百科,問答社群。從龐雜的噪聲中,你需要找到以下知識點:

  1. 基本定義:例如,機器學習是什麼,不是什麼?與相關概念(人工智慧)之間的區別和聯絡。
  2. 主要工具:例如,機器學習的理論工具是什麼,實踐方式是什麼?
  3. 核心問題或矛盾:例如,機器學習研究或應用中面臨的基本問題是什麼?

同時,也要了解幾個主要的資料源(每個資料源不一定都適合你),例如:

  1. coursera/edx 公開課
  2. 大部頭教材英文版,中文版
  3. 由網友編寫的野雞教程

基本概念的探尋,學習資料的搜尋,兩個過程並不相互獨立。基本概念的逐步建立,能幫助你更高效地篩選資料,而好的學習資料往往會花相當的篇幅來闡明基本概念。

不專業的作者,要麼開篇就貼程式碼,深入細節,要麼對某項技術過渡吹捧,盲目狂熱。好的學習材料也許輕鬆幽默,也許精確冷峻,但絕對不愚蠢。請務必花時間瀏覽各個教材前 5% 的內容,慢慢甄別優劣。

此外,好的學習資料,能夠包含適當的實踐內容。無論是數學題還是程式設計題,能否找到參考答案,是否提供程式碼實驗環境,都是很重要的因素。

舉幾個例子,SICP,每道題都能在 Racket 上做實驗,網上也能找到大家的解題方法;斯坦福 CS224N課程,完整的習題解答和專案環境;Nand2tetris,甚至有一整套硬體描述語言,虛擬機器的環境,非常優秀。也有不好的例子,MLAPP,整本書都是印刷錯誤,習題無解答,全靠個人感覺,雖說是本好書,但閱讀過程中我不停地做一些人工勘誤的工作,非常痛苦,不適合入門閱讀。

最後,很重要的一點,這個資料是否適合你當前的知識水平。太簡單,以至於整本書都在印證你的想法,讓你覺得它”很好讀”;太難,你無法通過直覺跳過某些推導步驟,每一頁的閱讀都需要大量的思考,哪怕看完一整章,你也沒有對這個章節的完整圖景。

合適的難度,就是讓你興奮的難度,你能從中找到你過往的一些經驗,也能看到很多全新的方法和觀念,學完一章後,是否有一些愉快的想象,如果有,那麼它的難度剛剛好。

短期專注

找到資料後,不要浪費它。快速,完整地把它消化掉,不要中斷,每天至少兩個小時以上的專注,週末也不要停,這是我的方法。

有些朋友喜歡同時做幾件重要的事,然後在事情之間做時間片輪轉,先做做A,再做做B,這種方式有助於應對給領導長輩跑腿之類的瑣事,但對學習來說效率較低。

在短時間內全身心沉入到單一的問題中,在這段時間裡,連潛意識都在幫你工作,你不僅在記憶知識點,更是在構建對這個領域的基本直覺。混合多種學習方式也很重要,不僅有被動的聽和閱讀,也有主動的實驗,試錯,推導。前文所說的資料準備,正是為了服務這個近乎宗教儀式的過程,如果選不對資料,你就沒法找到這條靈性之路。

自然遺忘

人類會遺忘,這件事情曾讓我很難過。

半年不接觸一門手藝,就會生疏,再過半年,完全遺忘。我想把所有的理論,公式,語言,框架都記住,一有生疏,我就複習,就像抱著滿滿一筐蘋果,一路丟,一路撿。心裡疲憊,身體勞累,甚至覺得,如果最終都會遺忘,那一開始為什麼要學。

後來才想明白,蘋果框滿了,我們就倒掉,再來一筐梨,桃子,火龍果,葡萄。對於學習新知識的方法論,逐年在磨練精進,雖然知識點沒法記住,但對於該領域的直覺已經建立。

現在我把學習新知識,當時一次次旅行,其中的滋味,留給大家各自體會。