码农的知识管理


什么是知识管理?

知识是一个笼统的说法,应该叫做档案,他的一个重要特点是可以保存下来,而且可以检阅。比如是公司项目的源码,我学习了一门编程语言,我谈成的客户信息,我知道怎么去报关等等,他是一种技能,经验,也是一个Guide, 指导我们朝着正确的方向去做事。

我认为的知识管理 是 把 知识 转变为 经验,这是一个累积的过程,由小变大的过程,逐步形成一个库。随后再需要用到的时候,再从这个__小库__里面调出来,而无需重复造轮子,无需在同一个地方摔第二次跟头。

知识管理在一个公司内,尤其重要,因为人是流动的,要做到铁打的营盘,流水的兵,就必须把个人的经验转变公司的经验,保存下来。

人脑很像是内存,时间久了,一些东西就容易忘记,所以,市面上出现了很多工具,比如各种备忘录,笔记本,博客,甚至存到了云端,再也不会丢失。

码农的知识管理是什么样的?

码农每天都在跟代码打交道,又不断需要学习各种不断更新的技术,具体:

  • 代码在多数情况下,会显得晦涩难懂。
  • 各种新的技术,层出不穷
  • 一些技术,如果有一段时间没用,会马上变得生疏起来。
  • 前辈分享的经验,要转变为自己的
  • 别人的代码,转变未自己的
  • 经常在同一个地方摔跤

程序员的知识库可能是:

  • 一堆开源的代码, 或者Library, 或者一个领域的应用参考,后续希望能够使用上
  • 一堆Guide, 各种指导,什么Linux Command Line, 什么编程指导,什么TCP IP
  • 经验/教训/曾经犯过的错,走过的弯路,或者听到的,看到的

怎么样的知识管理,是好的知识管理?

知识只有经过整理,吸纳,才会变成自己的,如果仅仅是收藏(比如收藏到百度云,有道笔记),这些可能永远也不会看到。

怎么整理? 在我看来,需要整零结合:

  • 一个特定的领域,比如如何学习Git, 那么最好的方式整理成一本书,有一个目录,把Git相关的东西整理到一个书中。但是这本书的章节是经过自己加工处理/吸纳的,不是简单的复制粘贴。
    • 那么到后来,需要用到这方面,也可以系统的根据目录从头看到尾,也可挑选自己需要了解的。
    • 很容易分享,这个经验,很方便变为公司的,或者其它人的
  • 比较零散的,可使用wiki的形式,在需要的时候,可搜索出来。

那么推出我的方式:

BOOK + WIKI

一个新型的工具 GITBOOK ?

GITBOOK 结合了 BOOK , WIKI的优点, 他的特点在于:

  • 首先他是一本书,他具有书的一切优点,比如是人工整理的,系统的知识
  • 他具备WIKI的优点 - 协作,甚至比WIKi的协作还要好,他可以同时编辑
  • 他具备WIKI的另一个优点 - 高质量, 发动社区的力量,总比1,2个人做出的东西更优
  • 他有很多的表现手法,可以导出各种格式,比如PDF, ePub, Html等等

更多看:GitBook官方

怎么管理 Library 和各种代码?

程序员现在都会使用SVN/HG/GIT 来管理代码,在开源盛行的时候,程序员很多时候,无需重复创造轮子,他山之石,可以攻玉。程序员的更多的需要去发现更多好用的,高质量的轮子,并把他收藏到自己的资料库中,但是代码通常是难懂的,没有文档的代码,更难使用,风险也很大。

那么怎么管理代码的文档呢? 具有高质量文档的代码,将很容易用起来。

管理代码的文档

一个Active的软件项目,在不断的发展中,从0.1 到 1.0, 在到 3.0 . 代码与文档相比,代码永远是主体,文档永远是附属品,那么代码在不断的改进,文档也需要相应的同步改进。

会出现这样的问题:代码因为有各种测试,代码很稳定,标记为一个版本,但是文档因为没有一个严格的测试,而且也是一个精益求精的东西,所以文档很难定型。

建议的做法是:在新起一个版本的时候,创建一个先前版本的分支比如0.1,分支上文档,代码都可进行微调, 变成 0.1.2

小型的library

这种类型的代码比较简单,文档量不大,那么可以直接把文档 嵌入到 一个Git仓库中。

大中型的代码库/项目

文档单独出一个Git库,因为维护一个文档,也是需要很多的时间,和代码混在一起,实在太难维护。

当代码定义出一个版本的时候,文档库新定义一个分支出来,单独跟踪这个版本分支或者节点。

小结

其实我想说的是 知识管理 需要 从 先前 WIKI 转变为 WIKI + BOOK + 社区(团队/公司)协作的形式