學習是一輩子的事情,對於程式設計師來說更是如此,所以如果沒有學會享受學習過程的樂趣,那麼學習將會是你人生的一個重壓。
以學習資料結構為例。大家都知道,對於程式設計師而言,資料結構是基礎,是必須學會的課程。但是現在很多語言,細節都封裝得很好,比如Java、.Net、PHP,幾乎都不需要你用到多少資料結構與演算法的知識,以致於很多人覺得,我就不會資料結構,我還不一樣好好工作嗎?這就是浮躁的開始了。
的確,對大部分程式設計師來說,工作上很多時候不需要用到資料結構。但是你會發現,工作若干年後,你的技術水平會停滯不前,做的東西總是CURD,再加上一點設計模式,再者可能有NoSQL、memcache之類的應用。但是,當你寫這些程式碼寫到疲軟的時候,你會發現這些都是應用層面的東西,別人做好的現成的東西,到你想理解它們底層與原理的時候,沒有資料結構與演算法的知識支撐,你會很吃力。勿在浮沙築高臺,儘管你開源軟體用得多好,如果不去理解計算機的底層,頂多也就是個高階點的碼農。
要走出浮躁的泥沼,只要理解一句話就行:
學習的真正樂趣不是因為它有用,而是因為學習的過程本身有趣。
所以你需要去發現學習過程有哪些樂趣,還是拿資料結構的學習為例。
1. 資料結構的學習在短期內不會對工作有什麼效果,但它是對未來以及自己的投資。學習它你一定不要浮躁,不要覺得它短期內收益不大就不去學習。摒棄浮躁的第一步就是,不要帶著功利的眼光去學習。
2. 資料結構的學習幾乎都是從線性表開始,然後講到最重要的單連結串列。單連結串列的基本操作就建表、插入、刪除、查詢等,如果你把這些操作都學完了,是不是該立即進入堆疊的學習呢?我的建議是,不。“學習”是一個實際上不應該分割的詞彙,只有“學”沒有“習”將必然導致膚淺。當學完單連結串列的基本操作,你需要做更多的“習”。這時候你需要嘗試著研究下面的問題:單連結串列的逆序、求單連結串列的倒數第N個元素、單連結串列的排序、單連結串列的環……等等。當你對單連結串列的學習進入某種境界,才進入堆疊的學習,這樣你的單連結串列就很紮實,同時學習堆疊也會變得很有效率。你可以參考我之前所做的專題:《資料結構物語卷二》
千萬不要覺得這很浪費時間。左學點右學點,散沙式的學習才浪費時間,連續的思考才是高效的。
3. 享受思考的樂趣。資料結構一開始學也許你會覺得有點難,比如插入一個資料都要涉及幾個結點的地址操作,但是當你思考並完全理解為什麼這麼做,你會有一種豁然開朗的感覺。並且更重要的是,每解決一個單連結串列的問題,就相當於做了一次思維訓練。思維訓練做得多了,對單連結串列的理解就更深了,以後解決問題就更快。我們可以這麼認為,每做一次思維訓練,都能夠使我們的思維加速,使我們的大腦加速。為什麼牛人一看問題就能知道如何解決?很簡單,因為他做過普通人無法想象的大量的思維訓練,正如巴菲特7歲就開始拜師學投資一樣。沒有人天生就是大牛,對吧?
4. 關於學習的慾望。很多人心裡知道,我要學習,但是總是容易被分心。一會看看微博,一會折騰下其它什麼東西,結果半天還沒看得進一點東西。不要假學習,不要為不學習找理由,沒錢?沒時間?累?只要你內心堅定且慾望強烈,就會主動學習。
可以看看這篇文章:另外八小時,用辛勤換幸福。如果能把寫博當作是一種放鬆,如果能把寫博當作一種享受,不帶任何功利的雜質,那麼你就會非常強烈地想去寫博。(對我來說,寫博就是學習)
你可以嘗試下早上6點半起來,學習一個小時再去上班,效果很好。這篇文章就是我早上6點多開始寫的。學習大部分時間是一個人的活動,難免會有孤獨感,當你精力高度集中時,孤獨感會減少。當你全神貫注的時候,甚至會感到身心愉悅。“耐得寂寞不寂寞,耐不住寂寞反寂寞。”
5. 不要被厚厚的書嚇住。有的人也許會說,你看,資料結構那麼多章節,你光單連結串列這一章就做了一百多個練習,花了一兩個月,什麼時候才能看得完啊?我說,學習沒人逼你進度,隨意看,什麼時候覺得自己精通了再轉入下一個學習階段。過早地進入下一個階段只會讓你過早地忘記前面的知識,比如草草地看了單連結串列的基本操作,就去學堆疊,過一個星期我問你單連結串列的反轉,你也許就會一時想不出。所以我認為:
堅持做一件事,直到達到一個境界——至於是什麼境界,我不知道,你才知道——然後才開始做另外一件事。
6. 你對學習有如飢似渴的感覺嗎?對待學習,我很推崇完美主義。比如單連結串列的基本操作弄懂了,寫程式過了一遍,然後開始研究它的各種常見操作。都研究完了,開始研究比較少見的操作,帶頭結點與不帶頭結點的都要過一遍。然後翻遍網際網路,看看有沒自己疏漏的。發現有疏漏的,你會很高興,馬上再寫程式自己過一遍。直到Google搜尋“單連結串列”前100頁的結果你都能馬上知道什麼回事,知道怎麼做,嗯,那就差不多了。
很瘋狂嗎?在常人看來也許是。但是對我們自己來說,不這麼做,很難達到某種境界,或者說,精通。對知識的如飢似渴的時候,當得到新的發現新的知識,你會得到很大的滿足感,而且一路走來的成就感,也是對你之前努力的最大回報。
那麼,從現在開始,逃離浮躁的泥沼,享受學習過程的樂趣。