2017年8月9日 星期三

筆記法體驗

最近大都在動嘴(簡報)很少動手(coding),因為要在短時間內消化大量資料。所以就想實驗一下之前聽到的一些筆記法,反正我也沒有什麼可損失的。
不過個人一直強調一點:「每個人都有適合自己的筆記法」

像強者我朋友就比較喜歡用電腦打字,而我比較常用手寫。總之判斷的標準是輸入資訊的方式一定要比你大腦思考快,如果這種筆記的方式讓你覺得「卡卡的」,不管別人把他講的多神,可能就是不適合你。

16 格筆記法

這是 XDite 今年公開後一直夯到現在的筆記法。個人也試用了一下,但我不是 100% 照抄 XDite 的作法。我是先通讀整本書一遍(不求甚解),而且我把大標題,小標題,關鍵字都抄一遍(肌肉記憶?),然後最後才用 16 格筆記法。

因為我記性不好,外加沒有速讀的能力,所以很認份的用手寫的。用手寫的好處就是你必須專心,而且手寫的東西比打字容易留下印象。這個點子是從一本科幻小說「人生複本」學來的,主角想要回到原來的世界總是不能如願,後來女配角(心理學家)提醒他可以用寫的,因為人類寫字時幾乎不能分心。

接著做完這個動作後,我再用 16 格筆記法把關鍵字分別用一張紙 16 格(A4筆記本)寫下來相關資訊。重點是要記下頁數,下次才能方便跳回去查上下文。

我的心得是這樣的確有效,因為可以得到高度濃縮的資訊,還有一個重點是之前使用這種方法的人沒有揭露的 - 你會很快發現你自己哪邊不懂、或是資訊前後矛盾的地方。

這種方法對每年從日本大量翻譯過來的工具書特別有效,這類書有幾個特點:
  • 字大行距大(保護視力?)
  • 資訊少(大概一半在講故事,可略過)
  • 頁數少(通常少於300頁)
  • 內容通俗,不需花腦力思考
這種書看完會覺得想丟又有點可惜,這時候就可以用這個方法把重點抄一抄然後把書拿去資源回收(或者跟圖書館或朋友借就好)。這種書也不需要學筆者一樣抄錄大小標題與關鍵字,差不多看第一遍的時間就可以動手用 16 格筆記法了。

發現知識的隙縫

這招是從「心理醫生勸你戒掉的10種判斷習慣」這本書學來的,因為最近簡報常被電,就想說有沒有什麼減少被電的方法,沒想到這本N年前買的放到發黃的書提供了一個不錯的方法,作法比 16 格還簡單,拿筆把紙從中一分為二:
在左邊列出投影片第 X 頁你已經知道什麼,在右邊列出你必須知道但你可能還不知道的。然後思考有沒有可能從左邊推導到右邊。接下來重點來了!你要質疑「已經知道」的部份,確定自己的知識:
  • 沒有矛盾合乎邏輯
  • 沒有重複或循環論證(套套邏輯)
  • 沒有超過聽眾的程度
個人覺得這樣的作法比逐字稿有效,當然如果簡報真的要練到很完美,最好的方式是找強者我朋友當聽眾給予意見。已經有無數的先進提過要學好一樣東西,其中一條捷徑就是想辦法去教會別人。

 A little skill for Code Reading 

這是最近領悟的一個小技巧,讀別人的 code 最麻煩的是沿著 function 一路追下去時沒多久你就會忘記剛剛經過哪些 functions,雖然有 ctags or NppGTags(for Noetpad++) 可以幫你查詢誰呼叫目前的 function,但又要花力氣回想剛剛經過的是其中哪一個?

這樣一進一出個幾次你會發現很快就累了,這在心理學上稱為決策疲勞(Decision Fatigue),人類的意志力是有限的資源,而且大多數人一次只能記住 4-5 件事,一個稍具規模的程式怎麼可能用 4-5 件事就講得清楚!?

這也是為何 99.99999% 的人認為讀別人的程式是個苦差事,比自己寫還累人!

最早筆者的作法是打開 PowerPoint,然後很認真畫 call graph,最近發現這樣也很費力,持續用滑鼠拉箭頭,手很快就要廢了。

其實有個非常簡單的作法,流行的文字編輯器幾乎都做得到,例如 Notepad++ 就能把畫面一分為二 - 開啟新文件 > 點選文件 Tab > 滑鼠右鍵 > 移至另一個視窗。

這邊以 libevent 為例,我們想知道誰呼叫 start_reading(),經過搜尋後發現有好幾個,我們先看看 set_wbor() ,重點來了,這時候我們只要把 start_reading()、set_wbor() 簡單的複製到右邊,然後縮排就好。

最酷的是你還可以直接對這個文字檔進行查表(Notepad++可以,其他編輯器沒實驗過),請先裝好 NppGTags,


右邊的文字檔就變成你專屬的筆記,你可以在每個 function 下寫下自己的筆記,而且你還可以把他放到版本控制系統裡(team work 時請徵詢眾人意見)。

這樣做有二個小缺點。第一:如果兩個 function 呼叫同一個 function 會發生重複的情形,不過多打兩個字(反正也是複製貼上),也比用滑鼠輕鬆多了。如果要講究一點還可以寫程式叫 Graphviz 轉成 svg。

第二:萬一 function 長太深,可能螢幕會放不下,這個筆者建議可以買大螢幕或用雙螢幕來處理,畢竟現在螢幕很便宜,寫程式也不用買太高檔的。

雖然說有人可能會說用 Source Insight 不就好了,但編輯器再強也無法取代你的思考與記憶。也希望各位分享一下這方面的經驗,謝謝!

沒有留言:

張貼留言