程式設計師筆記(知識)管理的一點經驗

kiliwalk發表於2019-04-10

記筆記這件事,也許在很多人看來,再普通、簡單不過了——從小老師就教育我們要這麼做。不同的人有不同的方式,我們最終的目的,還是希望不要停留在只是記錄這一層面上,而是將它們轉變為我們的知識。作為一個程式設計師,今天我跟大家聊聊我的一些筆記管理的方法,希望對大家有用。如果大家還有更好的方式,也歡迎留言一起探討。

知識學習的路徑

首先聊聊知識學習的路徑。講得巨集大一點,我們得先有方法論。知識學習的途徑可以分為以下幾個階段:

程式設計師筆記(知識)管理的一點經驗

接觸,可能來源於工作中遇到的一個問題,或者朋友的推薦,或者逛社群、論壇時看到的新鮮內容。在接觸之前,我們並不知道,或者並不在意一個知識的存在,以及它是如何存在的。通過接觸,它勾起了我們的好奇心,激發了我們的熱情,吸引我們去實踐。

實踐,就是依照別人所描述的內容,或者自己個人的理解,動手去解決問題。只有經歷過實踐,才能摸清楚細節,才能更加具象、深刻地理解某項知識。而在實踐的過程中,我們可能會遇到各種狀況,別人未描述的或自己不甚理解的。通過各種其他手段,如查閱、諮詢等,最終解決了問題,豐富了知識適用的場景及其內涵。然後我們就需要把實踐的過程記錄下來,形成我們自己的認知。

總結,就是用自己的話去描述同樣一個知識。它的表述形式可能跟別人的不一樣,關注的細節點也可能不一樣。通過總結,形成我們認識事物的方式。這種方式繼而會影響我們在後續的實踐過程中的工作流程。一些較複雜的知識點也不是一次實踐或總結就能準確理解的,也許有疏漏。在後續的工作、學習中,我們使用這些尚未完全的知識,遇到困難,又繼續總結,形成一個反饋迴圈。直到達到一個較為滿意的狀態。這個時候,我們就可以考慮“為人師”了。

分享,就是把自己掌握的知識,用更多人能理解的方式講述、傳播出去。它跟總結的區別就是,不再是僅僅以個人能理解的方式去表達知識,而是要輔以通俗的語言、合適的圖文來表達。讓大家看到還有這樣一種角度、思路,成為他們的知識接觸點。

結構

這裡我們討論的知識的主要載體,就是筆記。根據知識學習的路徑,我們可以對筆記進行分門別類。至少要單獨列出分享這一目錄。我常用的一級目錄為:

  • 分享:包含所有待分享或已分享的文章、素材,使用日期作為子資料夾或檔名字首。
  • 開發:包含開發相關的知識點,如語言、工具、作業系統、網路、中介軟體、架構等等
  • 工作:包含各個公司、個人專案的工作內容與日常記錄

至於一級目錄以下的目錄劃分,可以根據每個人所側重的知識面來安排。

工具

那用什麼做筆記呢?市面上已經有很多筆記管理軟體了,像 EverNote、有道等。不過作為程式設計師,我們手邊的開發工具就能做筆記管理。這裡我推薦用 Visual Studio Code。它是一款非常輕量的 IDE 工具,有強大的外掛體系。它不光可以用來寫程式碼,還可以用來寫文件,尤其是 Markdown 文件。自帶 inline 樣式渲染,支援格式校驗、自動排版(尤其是 table)、PDF 匯出等各種功能,還有很多外掛可供你選擇。

Markdown,我想每個程式設計師都應該熟悉它的語法。其實核心的、常用的幾個語法很簡單,包括多級標題、多級列表、Code 等。像我寫這一篇文章,用到的也就無非這些語法點,額外多了圖片的插入等。根本不需要花多少時間。但是掌握它,不光有助於我們寫文章,包括開發中寫文件,都是非常有用的。像我們常用的 Github、Gitlab 裡,都可以直接渲染 Markdown 檔案,Issue 中也能支援 Markdown 語法。學會一招,吃遍天下。很有必要。

也許有的同學會有疑問,那豈不筆記都是本地儲存了?這個問題很好。我們還需要一些工具,Git + Gitlab。將整個筆記目錄加入 Git 版本控制,這樣我們所有的筆記歷史都能儲存起來。然後,我們可以在 Gitlab.com 的個人賬號上建立一個私有專案,同步我們的本地筆記到遠端。這樣,我們在公司使用公司的電腦,可以順利地同步;手機端也可以使用瀏覽器訪問 Gitlab 網址線上開啟我們的專案,檢視筆記。有了 Git 支援,即便多端修改產生衝突,也能很好地去解決。

擴充套件

用 VSCode + Gitlab 來管理我們的筆記,還有一個好處就是,這些筆記就是我們看得到的檔案。那這裡我們可以引申一下。把我們的筆記管理作為個人知識倉庫,它裡面還能包含各種可以執行的指令碼(如 Bash、Python)。這些指令碼是我們自己編寫的、用來方便我們工作的。比如說我就寫了很多類似 Git 週報、Gitlab CI 自動化等這樣的指令碼。它們不光能在我家裡的電腦上執行,還能同步到我公司的電腦上,照樣執行。而且執行的方式不會有什麼變化,不需要額外下載、儲存、授權等各項工作,這些都在同步過程中解決了。十分方便。

當然,以上方式也有一些弊端,比如圖片不好處理,無法直接貼上到文章裡(也許有這樣的 VSCode 外掛呢?)。不過至少我個人用起來,還是很舒服的。也希望這些內容,能為大家產生一些”接觸“點。

相關文章