# 什么是知识管理

一般是指个人或组织利用软件系统或其他工具,对日常工作、生活中大量的有价值的想法、方案、成果、经验等知识进行分类存储和管理,积累知识资产避免流失,促进知识的学习、共享、培训、再利用和创新,有效降低个人或组织的运营成本,强化其核心竞争力的管理方法。

由于计算机行业发展日新月异,因此程序员更应该注重知识管理。

# 为什么要管理知识

计算机行业的一个特点是新技术更新特别快,意味着程序员需要不停地学习,才能跟上行业的发展。所以,知识管理对程序员非常重要。有意识,成体系地管理知识能够:

  1. 更有效地学习新的知识。

    如果我们已经建立好一个技术知识体系,新的技术也只是在其他技术上建立起来的,有了坚实基础,学习新技术就会更有效。

  2. 更好地掌握知识。

    使用合适的工具,正确的方法,可以更好地掌握知识,让知识凝固在脑海,而不是流走。

  3. 节约时间成本。

    程序员经常遇到同样的问题,例如说部署开发环境的时候,如果有把解决方案记录下来,就能省去重新解决问题的时间。

# 如何管理知识

程序员的知识获取途径大部分来自于搜索引擎(谷歌可以提高搜索效率)和技术书籍,这与其他行业不同。主要原因是技术知识一个主要来源是互联网,例如说技术博客,技术文档等。因此,程序员的知识管理主要围绕互联网展开(并不意味着书籍就不重要)。

我们把程序员的知识管理分为三个过程:

# 1、知识积累

想想我们习以为常的知识积累方式有哪些?也许记笔记是我们最常用的一种。对于程序员来说,用笔记录笔记并不现实,我刚学 C++ 的时候就是把语法记在笔记上。实际上,这种做法是很低效的。更有效的方法是用笔记软件帮我们记录文章。例如说,印象笔记,有道笔记等。

一开始我看到好的技术文章时,都是加书签存起来。后面发现这样不能离线访问,而且链接可能会失效。后来用上了笔记软件,于是我可以把文章保存到笔记中,随时可以翻出来看。可以说,笔记软件给知识积累带来了极大方便,同时可以分类管理不同的知识。

知识积累难在养成积累的习惯。以前我解决某个问题,谷歌了很久找到一篇文章解决了问题。解决之后并没有记录下来,结果下一次遇到同样问题,我又浪费了很多时间搜索解决方法。重复多次之后,我意识到这是个严重的问题。所以逐渐养成了保存各种文章的习惯。这些网上积累下来的文章,成为了我知识体系的土壤。

现在开始,使用笔记软件分门别类地保存网上看到的文章,这里要着重强调一下分类的重要性,好的分类可以节省你以后重新检索文章的时间,不要把时间浪费在不必要的劳动上。笔记软件一般都会提供浏览器插件,保存起来是很方便的。

# 2、碎片整理

最快的方法不是搜索引擎,也不是 man 手册,而是个人 wiki。

与大家平常所知的 wiki 不同,个人 wiki 主要是用来记录知识碎片的,例如说:某个常用命令的语法,特定的软件配置等等。如果还是不理解,可以看看我的 个人 Wiki。这些知识碎片是我们初步消化的知识,只不过因为太过碎片,不能够组成完整的知识体系。很多人以为把看到的文章保存到自己的笔记里面,就有一种已经掌握它的错觉,结果保存了成千上百的文章,却一篇都没认真看完。别人的文章是他的知识沉淀,并不是自己的。随时把文章中的精华提取整理到 wiki,才能初步消化知识,为后面的思考加工做准备。

# 3、思考加工

写博客是最好的思考加工知识的方法。

** 博客少写纯操作指南类的文章。** 网上大部分博客写的都是纯操作指南类的文章,例如,如何搭建 LAMP 之类,可能作者自己都不清楚为什么要这么做。不是说纯操作指南类的文章不好,相反我觉得这种文章很重要,只是它的位置不对。它应该放在 wiki 中,因为纯操作指南类的文章只是描述步骤,关注点是怎么做,而不是为什么。写博客的关注点应该在为什么,讲清楚为什么要这么做。另外不要钻牛角尖,我说的是纯操作指南,不要以为只要是搭建环境之类的文章都不能写,这里的 “纯” 代表只给步骤,不提背后的原理。其实写得好的操作指南应该力求让读者知其然,知其所以然。

定期写文章。万事开头难,动笔开始写作很难,一旦开始就停不下来了。养成定期写文章的习惯,至少确保一个月一篇的节奏。

自荐文章到各个技术头条。例如说:伯乐头条,开发者头条,极客头条等,有读者才有动力,同时也是保证自己写好文章的监督。

# 总结

  • 知识积累:使用笔记软件保存好的文章,积累知识。
  • 碎片整理:在个人 wiki 上记录初步消化的知识碎片。
  • 思考加工:对存在笔记和 wiki 中知识进行思考加工后写在博客,甚至制作成视频。

以上讲的是如何在互联网中学习积累,但是千万不要忽视了看书这一重要方法,书中的知识是成体系的,知识密度高,网上的文章良莠不齐,不成体系,比较碎片化。合理分配时间看书和上网学习是很重要的。