『暗時間』讀書筆記

大CC發表於2014-10-17

記憶和推理

看書並記住書中的東西只是記憶,並沒有涉及推理,只有靠推理才能深入理解一個事物,看到別人看不到的地方,這部分推理的過程就是你的思維時間,也是人一生中佔據一個顯著比例的“暗時間”,你走路、買菜、洗臉洗手、坐公車、逛街、出遊、吃飯、睡覺,所有這些時間都可以成為“暗時間”,你可以充分利用這些時間進行思考,反芻和消化平時看和讀的東西,讓你的認識能夠脫離照本宣科的層面。

anshijian

暗時間》,作者:劉未鵬

學習和思考

人與人學習的差距不在資質上,而在花在思考的時間和思考的深度上。
獲得的多少並不取決於讀了多少,而取決於思考了多少、多深。
學習一項知識,必須問自己三個重要問題:

  1. 它的本質是什麼。
  2. 它的第一原則是什麼。
  3. 它的知識結構是怎樣的。

我只想說最最重要的,那就是: 讓你自己成為一個持續學習和思考的人,並只寫你真正思考和總結之後的產物,其他一切就會隨之而來。

問題在想通了之後總是簡單的,問題的困難程度不在於想通了之後還覺得有多難,而在於從你覺得它難到你覺得它簡單需要耗費多少思維體力,你耗費的時間越長,說明有越多的人最終還是沒有想明白(路越長走到底的人越少)。
所以,如果你習慣了思考問題,就總會有東西寫,先有思考,然後有總結,然後在總結中進一步思考。

保持專注

能夠迅速進入專注狀態,以及能夠長期保持專注狀態,是高效學習的兩個最重要習慣。

要掌握一門專業知識,其實每天一點時間,專注、積累和持之以恆也就夠了。

模仿高德納先生的名言:過早退出是一切失敗的根源。 興趣遍地都是,專注和持之以恆才是真正稀缺的。

在大學,我之所以還多少學了點東西,完全是仰賴了專注的習慣。而這個專注的習慣其實又是從小受父親耳濡目染的,父親會花一整天揣摩一個問題,父親跟我說過他以前組裝電視機時的故事——一切都似乎組裝正確,但電視機就是不工作。他苦思冥想,不得其解,當晚,半夜從睡夢中醒來,想到了問題的癥結所在。所以,我在啃一些底層知識時如果弄不懂,也會一遍遍讀,然後用走路吃飯坐車的時間在腦子裡一遍遍去琢磨。我有很多重要的習慣受到父親的影響,這些習慣自己一般覺察不到,但卻默默影響了平時的一點一滴的時間分配和學習軌跡,這些習慣從紙上很難學到,但耳濡目染卻會自然而然地學會。

實踐與反思

孟巖先生說到,是不是彎路,不是那麼容易界定的。 的確,也許真的有更好的路,但事前真的很難判斷哪條路是最優的,我們能做到的,是把一條路走透了、走深了,只要不是一條太不靠譜的路,深入的過程中總會有很多的收穫。只要不是太頑固,善於反省,總有一天也會逐漸意識到越來越靠譜的路。

時常反省和注意自己的思維過程。尤其是當遇到無法理解或解決的問題之後,最需要將原先的思維過程回顧一遍,看看到底哪個環節被阻塞住了妨礙了理解。問題到底出在哪裡。並分析以後需要加強哪方面的思維習慣,才能夠不在同樣或類似的時候被絆住。對此,將思維的大致脈絡寫下來是一個很好的習慣。

ps:在叉路口,猶豫不前時,任選一條走下去,在實踐的過程中不斷反思校正,總會走上屬於自己的正確的路;
選擇了,走下去,錯了也會成對的;

英語學習的重要性

一旦熟練掌握了語言這個平臺,背後就是一扇大門,通向一個海量的資訊源,後來我的資訊獲取絕大多數便來自於英文,其中尤數wikipedia和英文版的書為多。

如何看清一個人的深度

有一句話說:看一個人,只要看他讀的書和見的人。還是很有道理的,這兩者是一個人成長中最有價值的資訊來源。

改變頑固的習慣

有一個認知技巧也許可以緩解更改習慣過程中的不適:即把居住在內心的那個非理性自我當成你自己的孩子(你要去培養他),或者你的對手(你要去打敗他)也行。總之不能當成自己,因為每個人都不想改變自己。

理解事物的本質

設想自己正在將東西講給別人聽(有聲思考;能否講出來是判斷是否真正理解的最佳辦法)。設想需要講給一個不懂的人聽。(迫使自己去挖掘知識背後最本質、往往也是最簡單的解釋)

主題學習

根據主題來查閱資料,而不是根據資料來查閱主題。以前讀書的時候是一本一本的讀,眼裡看到的是一本一本的書,現在則是一章、甚至一節一節的讀,眼中看到的不是一本一本的書,而是一堆一堆的章節,一個一個的知識主題,按照主題來閱讀,你會發現讀的時候不再是老老實實地一本書看完看另一本,而是非常頻繁地從一本書跳到另一本書,從一處資料跳到另一處資料,從而來獲得多個不同的人對同一個主題是如何講解的。

在這段時間內,我的業餘時間會被一個主題所充斥。反之,如果不知道目的是什麼,就不知道往哪個方向上使勁,就容易產生無用功。

學習一個小領域的時候,時時把“最終能夠寫出一篇漂亮的Survey”放在大腦中提醒自己,就能有助於在閱讀和實踐的時候有意無意地整理知識的結構、本質和重點,經過整理之後的知識理解更深刻,更不容易忘記,更容易被提取。 楊軍在 TopLanguage 上也曾分享了三篇非常棒的學習心得的文章,字字珠璣:

ps:給自己定一個主題,然後圍繞這個主題查詢各種學習資料,不論往那個方向使勁,大方向不會錯,不會跑出這個圈圈;你所走過的彎路也都是這個圈內寶貴的經驗;

講清楚思維過程

好資料的特點:從問題出發;重點介紹方法背後的理念( rationale ),注重直觀解釋,而不是方法的技術細節;按照方法被發明的時間流程來介紹(先是遇到了什麼什麼問題,然後怎樣分析,推理,最後發現目前所使用的方法)。壞資料的特點是好資料的反面:上來就講方法細節,彷彿某方法是從天上掉下來的,他們往往這樣寫“我們定義… 我們稱… 我們進行以下幾個步驟… ”。

人們最初是因為面對什麼問題才想到這個方法的,其間又是怎樣才想出了這麼個方法的,方法背後的直觀思想又是什麼。實際上一個方法如果將其最終最簡潔的形式直接表達出來往往丟失掉了絕大多數資訊,這個丟掉的資訊就是問題解決背後的思維過程。至於為什麼大多數書做不到這一點,我在這裡試著分析過。

正如解決問題一樣,問題卡住解決不了,第一時間要做的就是分析到底為什麼解決不了,而不是直接求救。

知識結構: essential的和non-essential

抓住不變數 我喜歡把知識分為essential的和non-essential的。對於前者採取提前深入掌握牢靠的辦法,對於後者採取待用到的時刻RTM (Read the manual)方法(用本)。

關鍵要了解那些重要的思想(很長時間不變的東西),而不是很細的技術細節(易變的東西)。《Computer Systems: A Programmer’s Perspective》就是為此目的,針對程式設計師的需求總結出那些essential knowledge的好書。
essential的知識也往往正是那些需要較長時間消化掌握的東西;

英語也是這樣的essential knowledge——上次在PyCN上看到一個招Python開發人員的帖子將英語列為必備技能,卻並不將自然語言處理列為必備技能,正是因為英語不是可以臨陣磨槍的東西,而且作為知識的主要載體,任何時候都少不了它,如果不具備英語能力,這個就會成為個人知識結構的短板或瓶頸,而且由於需要長時間才能獲得這項能力,所以這個瓶頸將持續很長時間存在。我們曾經在 TopLanguage 上討論過如何花最少的時間掌握英語)

如何閱讀wikipedia

閱讀 Wikipedia時要嚴重注意每個條目後面的 Reference,一般來說這些參考資料本身也都非常經典,其價值不亞於 Wikipedia條目本身。

書寫是為了更好的思考

在開始書寫你的想法之前,我知道很多人不書寫的原因是因為覺得沒有什麼可寫的,其實這是一個怪圈,你越是不開始書寫,總是拿有限的思維快取去默想一個問題,就越是沒有內容可以寫,如果你逼著自己將一些不成熟的想法寫下來,看著自己寫的內容,試著進一步擴充它們,就有可能在理性的道路上走得很遠,很遠。

為什麼你應該(從現在開始就)寫部落格

一開始的時候你是因為要寫部落格而去使勁地思考和總結,指望給出令人眼睛一亮的東西,到了後來,就變成了因為你習慣了思考和總結,因為你意識到書寫是更好的思考,你就必須使你的想法成為文字。至此本和末就會各歸原位,不再顛倒。

遇到問題為什麼應該自己動手

為了解決一個記憶體洩漏的bug,你學習了一堆底層知識、瞭解了一堆除錯工具、學習了若干wikipedia頁面,表面上看來,僅僅為了解決這一個小bug你的時間花銷未免太大了點,然而關鍵就在於,它的收益遠遠不止於解決了這一個小bug,下次你遇到任何類似的bug的時候就能夠哐當兩下就解決之了。 生活或工作中,很大程度上你遇到的每個問題都不是孤立的,既然你遇到了某問題,那麼很大的可能性你以後還會遇到類似的問題。

做筆記的竅門

提醒自己在摘抄的筆記上面多加幾個自己熟悉的關鍵字,比如用自己的話來概括一下主旨,因為自己的習慣用詞和作者的習慣用詞往往不一樣,在閱讀作者的文字的時候,你也許下意識裡會用自己的習慣詞彙來重新表述這段文字,並存放在記憶中,結果一段時間之後當要尋找的時候大腦中只記得自己的說法,卻不記得作者原話了,然而為了檢索到原始文字你必須要知道作者是用什麼詞彙來表述的。為了彌補這個問題,可以在存放文字的時候加上自己的一段概述,這似乎是一個不錯的方案——我們平時在學習和記憶的時候也經常聽到類似的提倡:用自己的話複述一遍之後理解得更深刻(實際上是更容易記住和提取出來——知識還是那些知識;此外用自己的話複述也常常觸發與自己的知識體系中其他知識的聯絡,進而編碼進更多的記憶提取線索

總結既有知識,抽象高層次知識

我們在從既有經驗中總結知識的時候,應利用適當的抽象來得出適用範圍更廣的知識(而不僅僅是一個蘿蔔一個坑);另一方面,在遇到新問題的時候,同樣應該對問題進行抽象,觸及其本質,去除不相干因素避免干擾,從而有效提取之前抽象出來的知識。

程式語言的慣用法

對於C++開發來說尤其重要,因為在C++裡面,同一件事情往往有很多不同的(但同樣都有缺陷的)實現,而實現的成本往往還不低,所以C++社群多年以來一直在積澱所謂的Best Practices,其中的一個子集就是Idioms(慣用法),由於C++的學習曲線較為陡峭,悶頭寫一堆(有缺陷)的實現的成本很高,所以在一頭扎進去之前先大概瞭解有哪些Idioms以及各自適用的場景就變得很有必要。

搜尋:C++ Idioms(慣用法) python Idioms,你能找到一些語言的捷徑;

書單計劃

我一向認為,很多時候,是否好好看完一本好書,對一個人的提升往往能達到質的區別。

讀好書是如此的重要,因為好書往往帶領你去到更好的書,更大的世界。

“書單計劃”能很大程度上起到強鑑別器的作用,看了就是看了,必然能學到東西,沒看就是沒看。知道和不知道,區別是本質的。其實很多企業內部培訓,根本上其實還不就是叫員工去看之前沒看過的書或者資料嘛。最後,除了鑑別作用之外,它還是一個清晰促進的目標,是完全不花精力的培養。
注: 列出主題書單.招聘必讀的十本書..

GitHub+書單,你最好的簡歷

從你的GitHub旅程開始,你就已經一腳踏進了真正的企業,而企業的面試也已經開始。 書單+GitHub,就相當於一個兩年左右的面試。 沒有什麼面試比持續兩年的面試更具有資訊量。

新手更能寫出教程

最適合將一個東西講給別人聽的時候並不是等懂了很多年以後,而是剛剛弄懂的時候,這個時候從不懂到懂的差別記憶還非常鮮明,能夠清清楚楚地記得到底是哪些關鍵的地方是最折磨人的,也最能夠站在不懂者的角度來思考問題。像波利亞這樣,成了大師還能夠站在不懂者角度去換位思考的,可以說是鳳毛麟角。

知其所以然

這是一個樹狀的知識結構,越往上層走,需要記憶的節點就越少。所謂觸類旁通者,其實便是因為他擅長去理解解法背後的更具一般性的東西。所以我還有一個習慣,就是看到美妙的證明和解法總是會去一遍又一遍的去反覆揣摩,試圖理解想出這個證明的人到底是怎麼想出來的,有沒有什麼一般性的方法可循,很多時候,在這樣揣摩的過程中,你會理解到更深刻的東西,對問題性質更深刻的認識,對解決問題的思路更深刻的認識,這些認識不僅對於你理解當前這個定理或問題有極大的幫助,同時也有助於你解決以後會遇到的表面不同但本質一樣的問題。

知道怎麼做是從正確(高效)解法得到的,而知道為什麼必須得那樣做則往往是從錯誤(低效)的解法當中得到的。
一本從思維角度來講問題求解的書則可以一遍遍將你置於不同的問題場景下然後在該提醒你的時候提醒你,讓你醒悟到“哦,原來這個時候也應該想到這個啊。”,做多了這樣的思維演習你就會逐漸從中領悟到某種共性,並將一些思維習慣得到強化,於是終於能夠在需要運用某策略的時候能適時的想起來了。

金出武雄在《像外行一樣思考,像專家一樣實踐》中說寫論文應該寫得像偵探小說一樣,我很贊同。

裡面提到“思維體力”的概念,所謂思維體力就是能夠持續集中注意力的時間,注意力造就非凡專家,天才來源於長期的專注的訓練。

規劃:分割你的任務

善於規劃的人,會將目標分割成一個個的里程碑,再將里程碑分割成TODO列表。前陣子流行的GTD方法學,核心的理念就在於,如果你把任務分割了,你就有了進度條,你就知道,事情在不斷的進展,你總會完成任務或到達你的目標,你會有一個時間估計。反之如果沒有這個分割,整個的任務或目標對你來說就只有兩種狀態——“完成”和“未完成”

領導的作用:確定正確的方向

程式設計師基本上是去解決一個定義好的問題,去實施一個定義好的方案。然而決策問題就不一樣了,決策問題是需要去定義問題是什麼,以及權衡最佳方案是什麼,不管是決策技術架構還是決策商業策略,都是非常複雜的思維過程,需要綜合和權衡大量的資訊,這種能力就不是簡單楞著頭搞下去能練出來的了,很多時候需要抬起頭來看,免得只見樹木不見森林。

如何權衡最佳方案實際上是一個複雜的統籌規劃。更重要的是,你往往甚至都不知道問題是什麼,能夠從紛繁的資訊中抽象出問題,是一種極大的能力。這裡推薦`你的燈亮著嗎?:發現問題的真正所在》 和失敗的邏輯:事情因何出錯,世間有無妙策 

不要為技術而技術

CodingHorror 的作者最近在部落格裡面跟著 Steve Yegge 同學宣稱,如果有一件事情是他想教給程式設計師同學們的,那就是 Marketing 。無獨有偶,有一次吃飯的時候鮑志雲同學也提到: Marketing Sense 是很重要的。其實也就是不要總想著寫牛程式碼,用牛語言技術,不要落入為技術而技術的怪圈,而是首先想明白做的事情有什麼價值,先弄清做什麼,為什麼做,再去想怎麼做,這樣後面的功夫才花的有價值。

學習這件體力活

學習——本質上是個體力活(儘管是有一定方法的體力活),這個體力活大致分為兩步: 將外界(書本上的)知識轉化為外顯記憶。 通過不斷練習,將外顯記憶轉化為內隱記憶

而第二步又包含兩個過程: 將關於思維方法的知識轉化為內隱記憶從而不知不覺就遵循。 將關於事實知識(例如“定理”、“性質”)的提取線索們轉化為內隱記憶從而看到XX就能想到YY。(參考《找尋逝去的自我》第二章“記憶的建構:對現在和過去的編碼和提取”) 關於第一點有本不錯的書——《學習的藝術》。

相關文章