技術文章的閱讀姿勢
閱讀技術文章可以說是我們程序員的日常之一,Peak 君每天也會進行定量的閱讀。特寫一篇小文分享下心得,介紹下過去幾年,在糾正閱讀習慣上所做的一些努力和取得的成果,或許可以幫助一些朋友,節省少許閱讀時間,提升一點學習效率。
差不多兩年前,我開始搭建 Android 相關的知識體系。最開始的想法是從基礎知識的積累開始,正好這幾年社區的技術分享盛行,「掘金」、「開發者頭條」、「簡書」等渠道上每天都有大量的新文章發布,文章主題五花八門,內容深淺不一,看上去都很不錯。可堅持讀了幾天之後,深感自己踏進了錯誤的方向,讀過的比較有代表性的一篇文章是:「關於 Service 你所需要知道的一切」,文章內容的質量遠低於標題所勾起的預期,無非是把官方文檔裏的幾個知識點做下摘錄,有些地方反而因為摘錄不全導致邏輯不連貫,順藤摸瓜找到出處之後,發現官方文檔才是我的救贖。
最初學習 iOS 的時候,也走過類似的彎路,急於在短時間內掌握要點,急於能盡可能快的開始寫代碼,所以略過了看上去冗長繁瑣的官方文檔,轉而搜索各類總結文章以求速成,結果是所有心存僥幸投機取巧跳過的知識點,都會在某一天變成一個個費時費力去填的坑。
對於基礎知識框架的搭建,沒有比官方文檔更好的起點了。當然官方文檔太過全面,無法在一開始就通讀一遍。正確的做法是,在計劃深入某一塊知識域之前,先讀一遍與之相關的官方文檔,如果還有疑惑再去其他渠道搜索相關知識點,做進一步的深入發掘,這就涉及到下面有關「精讀」的話題。
從這一角度來說,上面提到的三個渠道,對於基礎知識的積累,閱讀價值並不高,很有可能,整篇讀下來都是些零零碎碎已知的知識點,收效甚微,絕大部分文章都是標題驚艷,內容單薄。當然不排除偶爾會遇到一些高質量的深度好文,但這些好文大多是轉載的,是有自己的發布渠道的。按我以往經驗觀之,好文是稀缺資源,數量稀少且發布渠道穩定,比如一些類似 bugly 這樣的大廠對外渠道,國內外一些優秀的博客寫作者,或者是偶爾在微博上被大量轉發的文章。這些渠道都可以被分門別類的裝進瀏覽器的收藏夾,無需每次去「掘金」這類的渠道做大海撈針式的搜索。
閱讀行為一般可以劃分為兩類:泛讀、精讀。技術類的文章閱讀也不外如是,不同點在於,技術閱讀應該重精讀,輕泛讀。技術知識的價值能否得以體現,關鍵在於最後是否在閱讀者的記憶裏得以沈澱。泛讀行為很難形成有效且深刻的記憶,但偏偏泛讀較之精讀要輕松很多,所以很多初學者習慣性的去做大量的泛讀行為,看標題感興趣就點進去瀏覽,一天下來能讀好幾篇,最後形成收獲頗豐的錯覺,這其實是一種潛意識下的偷懶行為。這種閱讀行為中收獲的知識,別說難以在實際項目中去應用,就是在面試中聊聊都是不能。這條彎路 Peak 君也走過。
在精選、形成完自己特有的閱讀渠道之後,我們應該調整自己的閱讀行為,盡量強迫自己去做精讀,去深入挖掘、消化自己認可的深度好文。一篇技術好文,一天能消化幹凈算得上奢侈了,有些文章需要陸陸續續讀上一個星期也是可能的。精讀一篇文章確實會比較辛苦,但你想想,寫文章的人更辛苦,不光要理解文中所談的各個知識點,還需要做串聯歸納以成體系,精讀一篇深度好文就是一次和某個領域的專家做深入交流的機會,只是草草的瀏覽一遍而錯過一次寶貴的加深知識域的機會豈不可惜。如果文章主題和當前自己的關註點切合,讀起來越是費力的文章,其價值也越高。簡而言之,技術類文章閱讀,是宜少不宜多,宜靜不宜泛。
相信不少人閱讀技術文章時,都有過類似的體驗:在文中發現一個陌生的術語,轉而 google,搜出更多的術語或者相關文章,於是切換到新的環境中去繼續閱讀行為,有時會如此反復跳躍幾次,最後瀏覽器上的 tab 越來越多,感覺文章根本讀不完。
這是由於技術的知識體系往往是個樹形的結構,單個術語下都有其相關的知識域,可以一層又一層牽扯出更多的子術語。在閱讀文章遭遇這種樹形結構的時候,要能抑制住自己不停探索的欲望,對於技術術語的學習只做適度延伸,最終的目的還是在於完成根部文章的閱讀。Peak 君的閱讀習慣是只做一到兩層的延伸,比如剛開始學習 ReactiveCocoa 的時候,接觸到函數式編程,了解函數式編程又挖出了 pure function,pure function 又包含若幹其他的概念,可以持續的深入下去,但到 pure function 這一層之後其實就可以適可而止了,可以回過頭來完成原先的閱讀任務。
要克制對於知識的求索欲,有時也不容易。現實是,我們精力有限,無法在每個領域都成為專家,看到優質深入的分享好文時,很容易產生知識的焦慮感,迫使自己去閱讀並無太大交集的話題,這反而容易造成時間和精力上的浪費。不同技術人員之間,在知識的儲備量上其實不具備可比性,真正需要在意的是學習和解決問題的能力。
再者是對於閱讀時間段的選擇。程序員工作時很容易被打斷,產品,設計,測試隨時都有可能找上門,做深度閱讀時一旦中斷,閱讀效果會大打折扣。我們應該根據自身的情況,盡量選擇沒人打擾的時間段來做閱讀,可以是早上剛到公司,或者別人午睡時,總之越安靜,越沒人找越好。
最後一點,可以從慌不擇食的技術文章閱讀時間裏,多摳出一些來,完完整整的閱讀一些大部頭的英文原版技術書,這才是知識學習的正餐,別人寫的零散文章更適合作為飯後甜點。比如 Peak 君經常推薦的 【TCP/IP 協議詳解】,這種經典書籍,即使耗費一年的時間去閱讀,也遠遠強過讀一年別人所寫五花八門的技術文章。
說了這麽多,提煉下摘要:對於基礎知識的閱讀,要重官方文檔,切莫心急動手,看完文檔形成知識體系後再寫代碼不遲。減少泛讀行為,避免漫無目的的隨意瀏覽技術文章。註重精讀,一天一篇不算少,一周一篇也正常。重閱讀質量而非數量,挑選每天安靜且不易被打斷的時間點來閱讀,盡量多啃原版書。
一點小心得,全文完。
技術文章的閱讀姿勢