本文从一个程序员的视角来讨论知识管理,包括以下几个方面:
个人知识管理(Personal Knowledge Management):一般指个人通过工具建立知识体系并不断完善,进行知识的收集、消化吸收和创新的过程。
知识管理的范围很广,一般的知识管理方法可以参考这篇文章 个人知识管理的方法 。
计算机行业的一个特点是新技术更新特别快,意味着程序员需要不停地学习,才能跟上行业的发展。所以,知识管理对程序员非常重要。有意识,成体系地管理知识能够:
程序员的知识获取途径大部分来自于搜索引擎(值得一提的是,使用谷歌可以节约时间,少用百度),这与其他行业不同。主要原因是技术知识主要来源是互联网,例如说技术博客, Stackoverflow 等。因此,程序员的知识管理主要围绕互联网展开。
我把程序员的知识管理分为三个过程:
想想我们习以为常的知识积累方式有哪些?也许记笔记是我们最常用的一种。对于程序员来说,用笔记录笔记并不现实,我刚学 C++ 的时候就是把语法记在笔记上。实际上,这种做法是很低效的。更有效的方法是用笔记软件帮我们记录文章。例如说,印象笔记,有道笔记等。
一开始我看到好的技术文章时,都是加书签存起来。后面发现这样不能离线访问,而且链接可能会失效。后来用上了笔记软件,于是我可以把文章保存到笔记中,随时可以翻出来看。可以说,笔记软件给知识积累带来了极大方便,同时可以分类管理不同的知识。
知识积累难在养成积累的习惯。以前我解决某个问题,谷歌了很久找到一篇文章解决了问题。解决之后并没有记录下来,结果下一次遇到同样问题,我又浪费了很多时间搜索解决方法。重复多次之后,我意识到这是个严重的问题。所以逐渐养成了保存各种文章的习惯。这些网上积累下来的文章,成为了我知识体系的土壤。
现在开始, 使用笔记软件分门别类地保存网上看到的文章 ,这里要着重强调一下分类的重要性,好的分类可以节省你以后重新检索文章的时间,不要把时间浪费在不必要的劳动上。笔记软件一般都会提供浏览器插件,保存起来是很方便的。
我自己经常遇到这样的情况:要用到某个 Linux 命令的时候,经常大费周章地去搜索。有人说直接查 man 手册不是很快吗?确实查 man 手册比查搜索引擎要快,但是有两个问题:一是看了 man 手册的命令语法,我还得试试看;二是如果我不知道命令的名字怎么查 man。所以,最快的方法不是搜索引擎,也不是 man 手册,而是个人 wiki。
与大家平常所知的 wiki 不同,个人 wiki 主要是用来记录知识碎片的,例如说:某个常用命令的语法,特定的软件配置等等。如果还是不理解,可以看看我的个人Wiki。这些知识碎片是我们初步消化的知识,只不过因为太过碎片,不能够组成完整的知识体系。很多人以为把看到的文章保存到自己的笔记里面,就有一种已经掌握它的错觉,结果保存了成千上百的文章,却一篇都没认真看完。别人的文章是他的知识沉淀,并不是自己的。随时把文章中的精华提取整理到 wiki,才能初步消化知识,为后面的思考加工做准备。
有人会问为什么不用笔记软件记录这些碎片化的知识呢?用 wiki 当然是有理由的:
那么如何制作自己的 wiki 呢?我自己用的是 Simiki ,具体用法查看Simiki-个人Wiki写作。发布到互联网我用的是 Github Page,具体操作自行搜索。
写博客是最好的思考加工知识的方法。当年我也是被刘未鹏的 为什么你应该(从现在开始就)写博客 和 书写是为了更好的思考 给带入坑的。写博客的好处我就不提了,看上面两篇文章就够洗脑了。下面我着重谈谈如何写好博客的一点个人经验。
以上是我摸打滚爬两年多积累的经验之谈,如果你有好的经验欢迎留言交流。一开始我是在 CSDN 写博客,只不过走了不少弯路,后来折腾个人博客,最后又开了个人 Wiki。逐渐形成了自己的知识管理方法。最后总结一下: