常見工具

■ 文 / 滕振宇

學習並不是簡簡單單的閱讀和瀏覽,而是一個積累的過程,一個通過持續的學習,對自己的知識體系不斷豐富、索引的過程。接下來我會從四個方面入手分享我的經驗。

高質量的信息源和高效的學習

Google是一個很好的工具,通過它,我們可以找到很多很好的資源,但前提是必須先知道要搜索的關鍵字,沒有關鍵字,就不知道該查什麼。多數情況下,人們都是在不可能知道自己不知道什麼(Unknown unknown)的狀態,也就是不知道該用什麼關鍵字去查詢,因此也不會知道該去學習些什麼。所有基於Google檢索的模型是一種基於“拉動”的模型,而基於拉動模型的方式不可能讓我自己去接觸那些自己不知道的信息。

爲了讓自己接觸到充足的信息,我需要建立一個信息網絡和信息渠道,讓那些可能感興趣的信息不斷“推送”到面前。推送渠道主要是以Twitter和Google Reader爲基礎。通過訂閱感興趣的內容源,我可以時刻了解業界正在發生的熱點討論、研究、工具、書籍,以便及時調整學習方向。

同時我所訂閱的資源也起到過濾有價值信息的功能。從我欣賞和信任的專家那邊推過來的信息或者被多次提到的關鍵字對我來說都是有價值的信息。思維導圖是一種十分有效的快速學習的工具。在看書或者學到有價值的知識時,我經常會把學到的內容做成思維導圖。這樣我既可以對所學到的內容有一個概要的、抽象的瞭解,同時又可以隨時深入到細節。思維導圖桌面應用工具, 我常用的是XMind。XMind可以方便地支持思維導圖、魚骨圖、組織結構、樹狀圖等多種形式,同時它提供了一些初始模板,包括頭腦風暴、會議、項目管理、讀書筆記、流程圖等。在線的思維導圖工具, 我使用Minemeister。它能夠做到修改通知,甚至播放整個修改的過程,並且支持多個人同時在線頭腦風暴。我經常在頭腦風暴電話會議中使用這個工具。

方便的筆記管理

學習是一個構建個人知識庫並且不斷建立索引的過程。每次接觸到有價值的知識,我都會做筆記。好的筆記應用滿足以下幾個需求:

  • 記錄多種形式的內容,包括文本、圖像等。
  • 方便的標籤功能,這樣我可以方便地定位特定專題的內容。
  • 支持自由文本檢索,這是標籤功能的有效補充。類似於Google那樣,通過一些關鍵字,去檢索知識庫。
  • 同步與備份,方便地在不同的電腦以及設備之間同步。

最初我使用微軟的OneNote來做筆記。早期版本的OneNote能夠記錄多種形式的內容,並且可以方便地用關鍵字查詢。它的分頁功能在一定程度上起到標籤的功能,但是一個筆記只能放在一個標籤下,除非複製多份,而多數情況下,一個筆記是需要放到幾個標籤下面的。由於微軟的應用是以客戶端爲主,所有筆記都放在客戶端,因此我需要自己備份這些文件。每次重新安裝機器,都需要自己手動複製文件。後來我選擇了能夠滿足我對筆記管理工具的全部要求的Evernote。

首先,Evernote是一種客戶端—服務器架構,可以使用多種客戶端應用來記錄筆記,而筆記會自動同步到服務器。這樣的話,每次更換機器或者更新系統,我要做的只是安裝

Evernote客戶端登錄,就可以自動下載同步所有筆記。Evernote做到了“寫入既存檔”,它會自動把最新的內容同步到每一個設備,這樣我再也不用擔心筆記丟掉。我比較反感很多應用中的“保存”功能,對於一個真正爲了客戶設計的系統來說,它不需要客戶考慮是否“保存”這種瑣事,每次客戶輸入,都應該自動保存在電腦中,而且客戶根本不需要關心存放在什麼地方,只要想找的時候能夠方便地找到就可以了。

Evernote的Tag和自由文本檢索也十分強大,它的自由文本檢索甚至可以認出 Evernote筆記中圖片裏面的字符,如果圖片中的文字符合檢索要求,它也會可以幫我找出來。
另外Everno te支持多種包括PC、蘋果電腦、手機、iPad等多種設備。當然,作爲一個有心人,一定要隨時記錄學到的知識,隨身一定要帶筆和紙。

知識庫的備份與版本控制

我的個人知識庫不光包括日常筆記,還包括各種各樣的文檔,比如論文、PPT、視頻、培訓及諮詢資料、個人資料等。我對於資料知識庫的需求如下:

  • 版本控制,我需要總是在最新版本的文檔上做修改,但不希望用時間作爲文件名。
  • 保留歷史,希望看到每份文檔的歷史。
  • 佔用磁盤空間不要太大。
  • 資料同步。

我最初使用的工具是S u b v e r s i o n 和TortoiseSvn,Subversion是服務器,TortoiseSvn是客戶端。每次對文件做完更新,在相應目錄或者文件上用鼠標右鍵點擊,選擇更新,TortoiseSvn就會把修改提交到Subversion服務器。使用 TortoiseSvn可以很方便查詢提交的整個歷史。與Evernote不同的是每次都需要手動提交。相對於筆記在Evernote中的自動更新功能,我更希望手動更新資料,這樣就可利用提交時填寫的註釋,記錄整個文檔變化的歷史。

但基於Subversion的解決方案也有問題,由於Subversion是基於服務器-客戶端架構的解決方案,每次提交必須連接到Subversion服務器,而這個服務器往往是裝在另外一臺機器上,因此如果出差中,就沒有辦法提交更新。與Subversion相比,Git是一種完全不同的版本管理工具。作爲分佈式版本管理工具,它的服務器總是在本機,因此我隨時都可以提交文檔的更新。Git的數據庫比Subversion數據庫要小几十倍。在Windows平臺上需要安裝MSysGit來安裝Git,在 Mac平臺上直接安裝Git
就可以。另一個重要原因是我希望通過使用Git來學習這種新的工具,以及瞭解分佈式版本管理系統的工作方式。基於Git的解決方案給我帶來一個新的問題——我的資料數據庫和我的資料數據都存放在同一臺機器上,萬一機器崩潰或者丟失,就會帶來不可彌補的損失。因此需要把數據庫同步到其他地方。

我使用的是Mac自帶的Time Machine,它會隨時備份。Dropbox也是一個不錯的備份方案,可以把資料同步到網上,但是對我不適合,因爲我的個人資料庫遠遠超出了Dropbox免費賬戶所提供的空間大小。而且Dropbox是採用自動更新的方式,這樣我就很難利用手動提交時填寫的註釋來記錄文檔更新的歷史。

提高工作與學習的效率

我十分反感低效的工作和學習,因此在我的常用工具箱中有不少提高電腦使用效率的工具,主要包括:時間管理、檢索、快捷鍵、黏貼板等。

1.時間管理

對於時間管理來說,基本需求是保證能夠專注於最重要的事情。因此我需要一個待辦事項列表工具和一個能夠幫助保證時間箱的工具。我使用“番茄工作法”管理自己的工作和學習時間。具體做法就把時間分成25分鐘的時間箱(番茄時段),每個時間箱中排除干擾專注於做最重要的那件事情。我使用Pomodario作爲時間箱工具(從下圖可以看出,我寫到這個地方已經花了十個25分鐘)。我用的待辦事項列表工具是Remember TheMilk(RTM)。它是一個在線應用,也可離線,具有豐富的標籤功能,可與日曆程序同步。美中不足的是不支持任務嵌套,我暫時通過標籤來作區分。每次開始一個番茄時段之前,都會從RTM裏面選擇最重要的任務,然後在接下來的時段中,不受干擾地去完成這個任務。

2.檢索1111111111

多數電腦安裝的操作系統都是基於圖形界面的,爲了尋找文檔往往需要打開資源管理器(在Mac上是Finder),然後資源管理器會樹形展開所存儲的資源。爲了找到資源,需要用鼠標不斷展開/縮放樹節點,去尋找文件。這種做法十分低效,找一個文件往往需要半分鐘。因此,迫切需要一個工具能夠從電腦中快速定位並且啓動文件或程序,只要簡單輸入關鍵字,
就可以從電腦中把相關的資源列出來。在Windows系統上,我會用Everything和Google桌面。Everything會將系統裏所有文件索引,輸入關鍵字就可以把文件名符合關鍵字的文件列出來,Everything還支持基於正則表達式和通配符的檢索,資源消耗很少,速度很快。Google桌面也可以通過關鍵字檢索來定位文件,而且比Everything更強的是它不僅僅對文件名作匹配,也會去匹配文件中的內容。問題是Google桌面功能太多,對我來說太過於重量級,所以我以Everything爲主,以Google桌面爲
輔。 Mac系統自帶了Spotlight,它實現了同樣的功能。只要按下Command + Space,就可以直接啓動Spotlight輸入關鍵字。

3.快捷鍵

使用鍵盤比使用鼠標效率要高得多,對於常用的操作或者命令,我都會寫一些腳本,定義一些快捷鍵。在Windows系統上,我用的是AutoHotkey。在啓動機器後,我需要啓動Git,然後到GitHub上拉最新代碼,本地運行腳本去編譯和測試,然後啓Visual Studio打開項目。通過腳本和定義命令,我只需要按幾個鍵就可以完成整個操作。

4.增強黏貼板

有一個功能實現起來不難,而且很實用,不幸的是它被Windows和Mac系統所遺忘。這兩種操作系統的黏貼板僅僅能存放一個東西(文本、圖像等)。如果按一下Ctrl + C (Mac下是Command + C),系統會把所選的東西放到黏貼板,替換掉原有的東西。我需要一個工具能夠存放多於一個東西的黏貼板,這樣它就成爲一個臨時存儲區域,可以方便地把東西放到這個區域中,隨時複製到其他地方。Windows系統上我用的是Cl ipX,在Ma c上我用的是ClipMenu。

以上這些工具能夠極大地保證我的學習和工作效率,保證在電腦前所有的時間都用來做有意義的事情。這些工具是日常的一部分,我的工具箱在不斷地調整,我也在不斷地嘗試比較新的工具。讀者可以以這些爲基礎,建立自己的工具箱。這裏還想分享一下選擇工具的原則:

首先,不會爲了選工具而選工具,選擇的工具一定可以解決某個問題,這也就是爲什麼在分享工具的同時,也在分享這些工具解決的問題的原因;其次,選擇能夠發展自己能力的工具,比如Git,AutoHotkey等;最後,要不停地嘗試和比較工具。

作者簡介:滕振宇(Daniel)目前國內唯一的一位認證Scrum教練(Certified Scrum Coach)。Scrum聯盟Certified Scrum Coach以及Certified Scrum Professional評審委員會成員,敏捷全球之旅董事會成員。

(本文來自《程序員》雜誌11年03期,更多精彩內容敬請關注03期雜誌)

《程序員》11年03期精彩內容:2011開放平臺之徵

《程序員》雜誌訂閱

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章