如何閱讀技術書籍

作者: 愚&道  來源: 博客園  發布時間: 2019-12-07 22:02  閱讀: 2032 次  推薦: 86   原文鏈接   [收藏]  

  不知道大家有沒有這種感受?當你拿到一本書并準備讀時,總是想在幾天之內就把它看完;看到后面就不想往前翻;每天以看了多少頁書為衡量自己今天的價值,而不是吸收了多少知識;看完一本書總感覺腦袋空空的,看了后面忘了前面的......當然你可能還會碰到很多看書的煩惱,下面我就談談自己對看書的一些思考。

  首先這里先做一個假定,假設你手里讀的書一定是一本經典的、優秀的書。如果不是,那么就趕緊扔了,一本好書是一個好老師,而一本渣書簡直害死人...

  接下來我把計算機類的書大致歸為三大類:

  (1)語言方面的書。比如C、Java、Python等等

  (2)算法書籍。《算法導論》、《編程珠璣》等等

  (3)某一特定類別的書。比如操作系統、編譯原理、網絡、Linux內核、服務器原理等等需要很大的精力才能徹底掌握的書。

  當然這個歸類是非常粗淺的,針對不同種類的書,我們的閱讀策略也會有所側重。

  首先針對第一類書。訣竅就一個字:練。

  作為一個新手,千萬不要陷入語言的細枝末節中,有些人學語言的方式實在是讓人哭笑不得,比如他要學Java,他拿著一本java編程思想使勁地看,看了后面忘了前面,把自己搞的痛苦不堪,最后感嘆一句:Java真難!(我親眼見過,,還不止一兩個,也是醉了)。還有一些人,從網上或者什么地方找來一些教學視頻,然后坐在那一邊翹著二郎腿一邊貌似“聚精會神”地看,中途偶爾QQ上來人了還要聊幾句(哥們,你當是看電影么?)。這兩種學習方式看上去不同,其實本質上是一樣的,都是一種被動地接受知識的方式。

  這種方式及其低效,記住:代碼是敲出來的,不是看或者聽出來的!無論你是看書或者看視頻,其實都不要緊,關鍵是一定要自己動手把它敲出來。當書看完或者視頻看完后,你手上應該有大量的代碼,這個時候再把這些代碼敲個十幾遍,此時你的腦子里留下的就是代碼而不是文字或者聲音了。

  說到這,讓我想起了我們的英語教育,,個人感覺學英語最有效的方法就是把自己置于一個英語環境或給自己創造一個英語環境,接下來就是使勁地說。。這樣,不到幾個月,保證你的英語棒棒噠!而不是拼命地背單詞或看語法。。(好了,不吐槽英語了O(∩_∩)O!)。

  接下來說說該如何看算法書。訣竅:理解+運用。

  學算法不同于學語言,學算法最重要的不是記憶,而是理解。關于如何理解算法那也沒什么好說的了,看每個人的悟性還有堅持了,當然去網上找一些容易理解的資料或者跟同學探討會對你學算法非常有幫助。

  我們這里重點說說為什么要強調運用。因為算法這種東西本質上是比較難理解的,比較難理解的東西就比較容易遺忘,比如你好不容易花了很長時間理解一個動歸算法或KMP算法,然后你自認為自己徹底掌握了,然后扔在那幾個月不管它。然后就沒有然后了......

  因此算法一旦理解了以后相當重要的一點就是一定要去運用,在不同的場景中去運用。那么到底怎么運用呢?比如你的算法書后面的習題,還有現在很多高校有很好的ACM OJ,上面有大量的算法設計題,這些都是非常好的資源。當你用你目前已經理解的算法去解算法題時,這個過程本身會進一步促進你對這個算法的理解,并且加強你的記憶。比如可能過一段時間你把這個算法忘了,但是當你一想起你解的那道題時,你又把那個算法回憶起來了。因為我們人腦總是不太容易記住那些抽象的概念,而對那些具體的東西記得比較牢。

  話說回來,運用算法去解題是非常花費時間的,有時候一道題你可能半天都AC不了。。所以我建議那些現在還在讀書的學生,如果你未來想走IT技術的道路,還是去學學算法吧。對你是絕對有好處的!你工作以后可能想學都沒時間了!

  最后談談對第三類書的學習。

  第三類書通常都是一些理論性很強的書,比較難以消化,而且短時期內看不出它有什么價值。對于很多程序員來說感覺用不上。但是可以這么說:對這一類書理解有多深決定了你是一個攻城獅還是一個程序猿。

  當然每個人都有他自己的選擇,并不是所有人都想在技術這條路上走得很遠,如果你是那個想在技術上成就自己的人,那么歡迎一起來探討。如果不是,那么就當隨便看看好了。

  針對這一類書籍的特點,我總結了自己的讀書方法——三遍讀書法。是的,沒錯!起碼三遍。對于這類書籍,要么不讀,要讀起碼讀三遍。其實,在現實中,有很多人對于自己讀過的書是不太愿意再去讀的,不管是技術書還是其他方面的書。這可能跟人把讀書看得過于功利有關,認為讀過的書再去讀就是浪費時間,還不如去讀新的書。

  如果你問一個人你為什么要讀一本書時,他可能會告訴你為了學新的知識或獲取新的思想。的確,目的確實沒錯,可是往往他忽略了一個簡單的道理:一本書如果只讀一遍,那么你最多只能吸收10%的知識。如果你再讀第二遍、第三遍。。。你所吸收的知識就能成倍地增長,當你再讀下去的時候,你已經不止是簡單地再吸收書本身的知識了,你會形成自己的思考,也許這就是古人說的讀書百遍,其義自現吧!

  所以說,如果一本經典的書拿來,你只準備看一遍,那么還是別看了,純粹浪費時間!既然說一本好書要讀好幾遍,那么問題來了:我該如何讀這本書呢?是從頭到腳重復地看還是有其他的方法呢?當然有。我這里為什么要提三遍讀書法,這其實是對投入與產出的一種權衡,誰都知道多看幾遍越好,但是現實中往往很難讓你有足夠的時間去反復地看,這時候就需要找到能盡可能用最少的時間來獲得最大的收獲的方法。

  那么三遍讀書法具體是怎么來操作的呢?假如你拿到一本技術書籍

  第一遍

  盡可能在比較短的時間內過完這本書。在第一遍中,不要陷入某個具體的知識點,這一遍的主要目的是能把握每個章節的重要知識點,記住,是把握,而不是理解透徹。這一遍講究的是快、高效。千萬不要拖太長的時間。而且對于第一遍讀完后的“成果”要牢記,最好把它記錄下來,因為它們是整本書的骨架。

  第二遍

  第二遍講究的是慢、理解。第二遍一定要慢,要盡可能地把知識點都理解,千萬不要貪快,不要講究進度。記住,在這一遍中:欲速則不達!遇到實在不懂的點,可以先放一放,等看到后面了再回過頭來理解一下,或者請教一下其他人。

  不建議邊看邊做筆記,最好在讀完每一章或者每一節后,把書本合上,然后在腦子里去回憶你看過的部分,尤其是重點知識點,然后把它記錄下來,這樣比單純記筆記效率要高很多。(個人比較推薦寫博客。千萬別覺得自己水平不夠,不好意思寫博客。記住,寫博客不僅僅是為了給別人看,更重要的是對自己學過知識點的一種思路上的整理,通常這種整理都是非常高效的。另外,新手往往覺得寫博客很費時間,但是相信我,如果你真的用心在寫博客,它絕對不會辜負你的這些時間的!)這樣一遍完成后,你對整本書已經有了一個比較完整的理解了。這個時候,你可以去看看你自己寫的博客,不用著急讀第三遍。

  第三遍

  通常如果你認認真真地讀完第二遍后,你可以先放一放。人的大腦還是需要一些時間來慢慢消化的,哪怕是潛意識的,況且,短時間內連續讀好幾遍確實會讓人感覺厭煩。這樣過了一段時間后(比如去看看一些其它書啊等等),你再開始讀第三遍,相信這個時候你很感覺很輕松(人往往對熟悉的知識有一種愉悅感),這個時候你不僅僅鞏固了你之前的知識,甚至有可能還會讓你產生新的想法,比如當你把操作系統的理論知識都掌握得差不多時,你可能會好奇它究竟是怎么工作的,你會產生想要去讀內核源碼的沖動。當然這就進入另一種境界啦!(當你研究過源碼再來看操作系統的理論書籍時,你甚至都能知道哪些書寫得好哪些書寫得渣了呢!\(^o^)/~)。

  最后,我還是想說,哪怕對于這些理論性很強的書,要想真正得理解它們,還需要動手實踐,比如學操作系統的可以試著去看源碼,學編譯原理的可以試著自己做一個小型編譯器,學網絡原理的可以自己去搭建網絡環境來加深對網絡的理解等等。

  借用陸游的名句:紙上得來終覺淺,絕知此事要躬行!

  當然,以上只是我個人對看書的一些想法,也不一定對。每個人都有適合自己的方法。

86
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()