程式設計師的知識管理

肖漢鬆發表於2016-05-23

前言

本文從一個程式設計師的視角來討論知識管理,包括以下幾個方面:

  • 什麼是知識管理
  • 為什麼要管理知識
  • 如何管理知識

什麼是知識管理

個人知識管理(Personal Knowledge Management):一般指個人通過工具建立知識體系並不斷完善,進行知識的收集、消化吸收和創新的過程。

知識管理的範圍很廣,一般的知識管理方法可以參考這篇文章 個人知識管理的方法

為什麼要管理知識

計算機行業的一個特點是新技術更新特別快,意味著程式設計師需要不停地學習,才能跟上行業的發展。所以,知識管理對程式設計師非常重要。有意識,成體系地管理知識能夠:

  • 更有效地學習新的知識。
    如果我們已經建立好一個技術知識體系,新的技術也只是在其他技術上建立起來的,有了堅實基礎,學習新技術就會更有效。
  • 更好地掌握知識。
    使用合適的工具,正確的方法,可以更好地掌握知識,讓知識凝固在腦海,而不是流走。
  • 節約時間成本。
    程式設計師經常遇到同樣的問題,例如說部署開發環境的時候,如果有把解決方案記錄下來,就能省去重新解決問題的時間。

如何管理知識

程式設計師的知識獲取途徑大部分來自於搜尋引擎(谷歌可以提高搜尋效率)和技術書籍,這與其他行業不同。主要原因是技術知識一個主要來源是網際網路,例如說技術部落格,技術文件等。因此,程式設計師的知識管理主要圍繞網際網路展開(並不意味著書籍就不重要)。

我把程式設計師的知識管理分為三個過程:

  • 知識積累
  • 碎片整理
  • 思考加工

知識積累

想想我們習以為常的知識積累方式有哪些?也許記筆記是我們最常用的一種。對於程式設計師來說,用筆記錄筆記並不現實,我剛學 C++ 的時候就是把語法記在筆記上。實際上,這種做法是很低效的。更有效的方法是用筆記軟體幫我們記錄文章。例如說,印象筆記,有道筆記等。

一開始我看到好的技術文章時,都是加書籤存起來。後面發現這樣不能離線訪問,而且連結可能會失效。後來用上了筆記軟體,於是我可以把文章儲存到筆記中,隨時可以翻出來看。可以說,筆記軟體給知識積累帶來了極大方便,同時可以分類管理不同的知識。

知識積累難在養成積累的習慣。以前我解決某個問題,谷歌了很久找到一篇文章解決了問題。解決之後並沒有記錄下來,結果下一次遇到同樣問題,我又浪費了很多時間搜尋解決方法。重複多次之後,我意識到這是個嚴重的問題。所以逐漸養成了儲存各種文章的習慣。這些網上積累下來的文章,成為了我知識體系的土壤。

現在開始,使用筆記軟體分門別類地儲存網上看到的文章,這裡要著重強調一下分類的重要性,好的分類可以節省你以後重新檢索文章的時間,不要把時間浪費在不必要的勞動上。筆記軟體一般都會提供瀏覽器外掛,儲存起來是很方便的。

碎片整理

我自己經常遇到這樣的情況:要用到某個 Linux 命令的時候,經常大費周章地去搜尋。有人說直接查 man 手冊不是很快嗎?確實查 man 手冊比查搜尋引擎要快,但是有兩個問題:一是看了 man 手冊的命令語法,我還得試試看;二是如果我不知道命令的名字怎麼查 man。所以,最快的方法不是搜尋引擎,也不是 man 手冊,而是個人 wiki。

與大家平常所知的 wiki 不同,個人 wiki 主要是用來記錄知識碎片的,例如說:某個常用命令的語法,特定的軟體配置等等。如果還是不理解,可以看看我的個人 Wiki。這些知識碎片是我們初步消化的知識,只不過因為太過碎片,不能夠組成完整的知識體系。很多人以為把看到的文章儲存到自己的筆記裡面,就有一種已經掌握它的錯覺,結果儲存了成千上百的文章,卻一篇都沒認真看完。別人的文章是他的知識沉澱,並不是自己的。隨時把文章中的精華提取整理到 wiki,才能初步消化知識,為後面的思考加工做準備。

有人會問為什麼不用筆記軟體記錄這些碎片化的知識呢?用 wiki 當然是有理由的:

  1. 筆記軟體儲存的主要是知識原料。我們從網上儲存別人的文章到筆記,存下來的知識是別人的,你只是存下來而已,還沒經過消化。我們上面把筆記軟體定義為知識的倉庫,如果把初步消化後的知識也存在那裡,會造成一定的混亂。當然你一定要這麼做也可以,但我有分層的思維定勢,這算是職業病吧。
  2. wiki 是隨處可訪問的。wiki 釋出在網際網路上,我們可以隨時隨地訪問它。
  3. wiki 是分享的。任何人都可以訪問你的 wiki,分享自己的知識何樂而不為呢?

那麼如何製作自己的 wiki 呢?我自己用的是 Simiki,具體用法檢視 Simiki-個人Wiki寫作。釋出到網際網路我用的是 Github Page,具體操作自行搜尋。

思考加工

寫部落格是最好的思考加工知識的方法。當年我也是被劉未鵬的 為什麼你應該(從現在開始就)寫部落格書寫是為了更好的思考 給帶入坑的。寫部落格的好處我就不提了,看上面兩篇文章就夠洗腦了。下面我著重談談如何寫好部落格的一點個人經驗。

  1. 部落格少寫純操作指南類的文章。網上大部分部落格寫的都是純操作指南類的文章,例如,如何搭建 LAMP 之類,可能作者自己都不清楚為什麼要這麼做。不是說純操作指南類的文章不好,相反我覺得這種文章很重要,只是它的位置不對。它應該放在 wiki 中,因為純操作指南類的文章只是描述步驟,關注點是怎麼做,而不是為什麼。寫部落格的關注點應該在為什麼,講清楚為什麼要這麼做。另外不要鑽牛角尖,我說的是純操作指南,不要以為只要是搭建環境之類的文章都不能寫,這裡的“純”代表只給步驟,不提背後的原理。其實寫得好的操作指南應該力求讓讀者知其然,知其所以然。
  2. 定期寫文章。 萬事開頭難,動筆開始寫作很難,一旦開始就停不下來了。養成定期寫文章的習慣,至少確保一個月一篇的節奏。
  3. 自薦文章到各個技術頭條。例如說:伯樂頭條,開發者頭條,極客頭條等,有讀者才有動力,同時也是保證自己寫好文章的監督。
  4. 寫部落格的工具。我自己用的是託管在 Github Page 的 Hexo 靜態部落格。搭建教程見 用hexo搭建github部落格。如果你有伺服器的話,可以試試 wordpress,ghost 之類的部落格軟體。
  5. 把無法加工的知識寫到 Wiki。例如說:git 的一些配置和用法,這些內容在官方文件都能找到,寫在部落格也只是搬運工,除非你有新的理解。

總結

以上是我摸打滾爬兩年多積累的經驗之談,如果你有好的經驗歡迎留言交流。一開始我是在 CSDN 寫部落格,只不過走了不少彎路,後來折騰 個人部落格,最後又開了 個人 Wiki。逐漸形成了自己的知識管理方法。最後總結一下:

  1. 知識積累:使用筆記軟體儲存好的文章,積累知識。
  2. 碎片整理:在個人 wiki 上記錄初步消化的知識碎片。
  3. 思考加工:對存在筆記和 wiki 中知識進行思考加工後寫在部落格。

以上講的是如何在網際網路中學習積累,但是千萬不要忽視了看書這一重要方法,書中的知識是成體系的,知識密度高,網上的文章良莠不齊,不成體系,比較碎片化。合理分配時間看書和上網學習是很重要的。

打賞支援我寫出更多好文章,謝謝!

打賞作者

打賞支援我寫出更多好文章,謝謝!

任選一種支付方式

程式設計師的知識管理 程式設計師的知識管理

相關文章