引语
对于知识工作者来说,知识库是持续支撑整个职业生涯的重要基础。程序员,算是半个知识工作者工种。
知识库可以看做是海量资源库的本地缓存。它的特点是:少而精要,重点突出。
知识库建设,基本步骤包括:搜集、归类、整理和提纯。
目标
- 工作所需触手可达,避免重复搜索。
- 温故而知新。
- 构建牢固的知识/技能/经验体系。
内容
搜集内容的目标是为工作、生活和创作提供持续动力,解决实际问题。
- 原理、问题、方案、思路、优化、踩过的坑、经验教训等;
- 好用的命令、有益的示例、有用的官方文档;
- 有益的方法、独特的见解、清晰有条理的总结。
四步曲
搜集
准备一款笔记软件,方便搜集和整理各种来源(包括自己写的)的文章和内容。
- 能够在 PC、移动端自由编辑、管理和同步内容;
- 能够方便地从各种来源拷贝感兴趣的文章和内容;
- 有浏览器插件、微信公众号文章分享等插件拷贝到笔记软件。
我目前使用的是为知笔记。基本满足以上要求。
搜集内容的基本标准是:
- 具备实用性或思想性;
- 侧重原理和设计。
知识搜集来源主要有:
- 优秀网站、博客、微信公众号;
- 好书段落精彩摘录;
- 论文、官方文档。
可以建立一种“主题式学习”的搜集方式。即订立主题研习计划,每周或每月针对一个主题做一个研习活动,在研习活动中搜集各种渠道的内容,但更自由。比如最近做性能与稳定性,就可围绕这个主题搜集和内容。
假设50%的概率都不会去读
之前的亲身实践证实:拷贝到笔记里的文章,基本上大半年都不会读一次。换句话说,可以假设:摘录的文章,至少有 50% 的概率很长时间都不会去碰它。
那么,有什么可能性是会吸引自己去读呢?那当然是优质文,值得反复阅读。因此,在网络上搜集知识和文章时,就要遵守“质优+严进”准则。最好能至少读完一遍,然后决定哪些内容是可以收录的。只拷贝所需要的内容。切忌囫囵一看,无脑全文拷贝。
食之乏味、弃之可惜的文章,要忍心舍弃删除。我已经把之前技术文摘的 99% 文章全部删除了。重新来过。
只保留非常优质的文章。只保留核心有用的内容。
该读书还是得去读书
大致整理下所摘录的文章,会发现:大多数文章的层次偏浅,多是一两本书上的知识集合,少有系统阐述或者有着独特见解的文章。这说明:要获得系统有条理的知识体系,还是得静下心来读书。想办法收集优质的技术类电子书和教学视频。网络文章主要是作为补充,而非主餐。
能够在(电子)书里找得到的内容,除非是文章本身写得很好,否则就没必要摘录了。
归类
归类相当于对知识做了索引,能够快速找到同一类别的文章,同时为知识体系化勾勒轮廓。
主题-大类-细分类-标签
知识的归类层次主要可分为:主题、大类、细分类、标签。最多三层。避免嵌套过深。
主题是关于一个大方向的概括。主题尽可能少一些。比如我定的主题有:总体设计(规划与方法论)、生命与爱(愿望、喜欢、碎碎念)、工作(业务、工程、团队、方案、项目等)、生活(财富、处世、感悟、集思录等)、札记(自己写的学习与实践经验小结与感悟)、技术文摘(技术文章和知识点摘录)、公众表达(分享与演讲)、方法与技能(需求分析、行业分析方法等)、阅读与写作、我的笔记、微信收藏。我的笔记和微信收藏作为一个过渡主题,里面的文章会进一步归类到各个主题、大类或细分类里。
大类是某个主题下的有重要实用价值的分类。细分类是大类下的细分范畴。大类侧重一个特定方向或分支,细分类则细化到实用的点。
比如札记是一个笔记输出类主题。里面有“系统设计”、“结构与算法”、“工程质量”、“软件开发”、“编程技术”、“问题启示录”等大类。“工程质量”下又有“代码修行”细分类。
大类做得细致,则不会出现无法分类的情形。细分类做得细致,可以看出已搜集知识的侧重点,有无偏废。
标签是更灵活的“归类”方式,作为有力的补充。比如“程序”就是一个标签,任何类别中的文章只要包含代码,就可以打上“程序”的标签。
大类和细分类侧重垂直专业,而标签侧重横向通用。
无论是大类、细分类还是标签,都强调“实用”为重。可以把感兴趣的、有重要实用价值的大类和细分类放在最前面。
归类问题
知识归类的一个常见问题是,有些知识,可同时归类于多个不同的大类或细分类。归类准则是:价值优先,精确优先于通用。其次看文章内容的侧重,侧重在哪里,归类到哪里。这个准则是自己定的,适合自己的口味和需求就好。
比如 redis 性能优化相关,既属于 “缓存-redis”细分类 ,又属于 “系统设计-性能与稳定性”细分类。由于缓存是很重要的大类,redis 是精确垂直领域,优先归类于“缓存-redis”。“系统设计-性能与稳定性”倾向于是一种经验的普遍总结,而不是具体细分知识。当然,这种视角不是唯一的。如果从问题求解角度来看,归类于“性能与稳定性优化”分类更合适,因为性能与稳定性优化是研发求解问题中的不可或缺的组成部分,也是职业进阶、获取更好待遇的技术优势和阶梯。
遇到无法归类的知识,则需要新增大类或细分类,直到可以覆盖。
以问题求解为中心
分类视角主要有两种:
- 以知识为中心;
- 以问题求解为中心。
工作的核心内容是解决问题。各种各样的问题。大范围的,比如研发管理,或者小范围的,CPU 高。具有良好的“性能与稳定性优化”经验,目的不是为了表面拥有这些知识,而是能够灵活运用于实际解决问题。
提出一个问题,然后围绕这个问题搜集所有相关的知识和经验。优先以“问题求解为中心”的分类视角。
整理
整理步骤主要是文章排版整理。
文章排版整理是一个相对繁重琐碎的事情。试想,在阅读之前,还要费力气去把文章的排版格式弄好一点,那阅读的心思就折了一半。最好是在保存时就保证文章的排版基本整洁。
将网络内容拷贝到笔记软件有三种办法:
- 直接手动拷贝。优点是,可以避免将网页的格式和不相干的内容混进来,减少排版整理步骤的繁琐。缺点是,长文手动拷贝略微费点力气。
- 利用工具摘录。利用现成的工具(比如公众号文章分享、浏览器插件、App 工具等),优点是非常便捷,缺点是,容易把网页的格式和不相干的内容混进来,后期排版整理可能会比较费力麻烦。
- 摘取核心内容。仅拷贝核心内容。可以省去后续“格式化”、“内容提纯”步骤,摘录后的内容和段落是清爽有价值的。缺点是摘录时要多费点力气。
不同渠道来源的文章,摘录的结果不一样,处理方法也不一样。比如:
- 通过知乎 app 摘录的内容,会把整个网页(包括隐形控制框和知乎评价)都摘取进来。在后期排版编辑时比较麻烦费力,就不如直接手动拷贝复制更省事。 也可以利用工具摘录到某个过渡主题上,后期统一拷贝创建新的文章。
- 通过微信公众号分享摘录而来的文章,排版大致没什么问题,就可以直接通过工具来摘录。
- 网页上的文章,可以直接拷贝(连图片一起拷贝过来),或者直接摘录最感兴趣的内容。
亲身实践表明:文章摘录之后,几乎不愿意再集中整理。因此,最好一次性做好,把整理成本分摊到每一次摘录中。让笔记时时保持清爽的状态。
整理后的文章格式最好统一使用 Markdown(尤其技术类文章)。 如果原文排版问题不大,加标题、润色,保持原排版亦可。
为知笔记有个“清除样式”和“只拷贝文本”的功能,当文章的原排版过于“花里胡哨”或者“不堪入目”时,可以使用该功能,让其立即“卸妆”,恢复“素颜”。此外,可以保持字体统一,去掉不必要的“装饰”。
提纯
到了知识库建设的最关键环节:知识提纯。 知识提纯,是将已摘录内容的重要有价值的部分提炼出来。知识提纯最显功力。
俗话说:把书读薄。意思是要把知识读透彻。从纷繁复杂的现象中提炼出精炼的本质。
知识提纯的基本准则:简明扼要。不必固着于“文章”的形式,一两段落,甚至几个关键字即可。即“把书读薄”。
知识提纯是一个再学习、温故而知新的过程,可以培养内容重点提炼的能力。内容重点提炼能力是“信息过载”时代必不可少的重要技能。
技术类文章,可以遵循“基本思想或思路-关键点-技术实现”或者 “问题-方案-新问题-方案完善”的路线来解析一篇文章。
知识提纯,主要有如下情形:
- 有的文章行文思路清晰、内容和细节丰富、图文并茂,保持原样即可。
- 有的文章的重点部分只有少数一两个段落,提炼出来,原文可删除。
- 重复主题和内容的相关文章,内容提纯后合并成一篇文章。
知识提纯相关,可以再写一篇文章。我也在探索中。
文摘与札记
对于程序员而言,技术文摘和札记是专业类知识库的重要组成部分。技术文摘是输入,札记是输出。需要将技术文摘的内容消化后,整理成札记,才算是真正的学习了。
之前读书,囫囵吞枣,过后即忘。打算: 每读一章节,就写一段复述、分析和评价。如此来训练知识提纯能力。
小结
个人知识库是持续支撑职业生涯的重要基础,最终目标是为工作、生活和创作提供持续动力,解决实际问题。知识库建设,基本步骤包括:搜集、归类、整理和提纯。其中知识提纯是核心。
上述步骤的螺旋上升式循环,形成良性有力的知识库建设节奏和职业的有力支撑。