知识图谱补完计划

在工作以后,我的知识学习越发显得功利性和碎片化,知识之间无法串联,无法从更高的视角了解到自己已经学习了什么,还缺失了什么,更不用说进行知识之间的联想和互通学习。这样下去整个学习过程都只能局限于线性,甚至点状生长,无法从量级上提高学习效率。因此,我需要对自己今后学习的知识进行“知识图谱”的补全。这里的“知识图谱”是当前语义网中知识图谱概念的一个特例,具体到一个人自己所拥有的知识组成的网络,方便个人在其中进行记忆、穿梭、推理和审视。

本篇文章中引用的博文均来自极客时间,陈皓专栏《左耳听风》,需要付费购买,因此未给出链接。

具体到正式的知识图谱补完“计划”,有以下几点需要做到:

知识图谱

构建知识图谱是这项个人提升计划的核心。其触发点是耗子叔的博文《高效学习:源头、原理和知识地图》。我这里改变一下知识地图的概念,称之为知识图谱。本质上是通过系统地学习一项技术,从宏观到微观构建其完整的知识框架,并填充其中的知识节点。它需要我在学习时做如下几件事情:

  1. 挑选一个系统的优质的入门级读物,无论是书还是一篇survey(通常是领域尚未形成系统,一篇survey帮助梳理最新的领域知识),甚至是一篇总结性的博客。这要求其作者必须具有相当的权威性,必须是国内甚至国际领域内最有影响力的几个人。
  2. 从这份读物入手,配合读物厘清领域主干,并开始学习填充其中的知识点。知识学习一节会讲到如何填充。
  3. 选择一款工具,记录这张图谱,最简单的是使用脑图工具。目前小组内使用的脑图工具是XMind,另有联网工具百度脑图。
  4. 时时地进行补充,回想和记忆这张脑图,最重要的不是背下知识点,而是可以通过脑图推导出知识。

知识学习

同样参考耗子叔的博文《高效学习:深度,归纳和坚持实践》,具体到一个知识的学习,大到整个知识领域,中间是各种框架和设计方案,小到具体的算法实现,需要归纳回答以下几个问题(基本上是耗子叔博文中的内容),以更深入的理解知识,同时方便在知识图谱中明确其位置,梳理其推导流程:

  1. 这个技术出现的背景、初衷和要达到什么样的目标或是要解决什么样的问题。
  2. 这个技术的优势和劣势分别是什么,或者说,这个技术的trade-off是什么。
  3. 这个技术使用的场景。
  4. 技术的组成部分和关键点。
  5. 技术的底层原理和关键实现。
  6. 已有的实现和它之间的对比。

原博客提出的6个问题,所处的视角是一个完整的解决方案。而在知识图谱中,具体的技术组成部分、底层原理和实现等可能是更加微小的一个点。又或者是一种通用的方法和思想被用在解决具体的问题。这些都需要在绘制知识图谱的过程中践行并补充。

实施方案

目前我的学习计划有三点:

  1. 以小组季度分享为契机,学习并报告4篇分布式存储系统。
  2. 同样是小组季度分享,报告Java并发中锁的实现和使用。并以此为出发点,更深入地学习整个Java技术。
  3. 目前工作中面临的最大知识空缺:Docker和Kubernetes的学习。

对于第一点,在完成4篇论文阅读后,需要做一次总结汇报,那么就需要把4个系统串联起来,形成一个小一些的图谱,仔细思考回答以上的问题。虽然我还不知道这张图谱最顶层的景象,但是是一个知识图谱补完计划入门上手实践的好机会。下一周就要开始进行准备,把回答加入到每篇博客中去,开始制作PPT。

对于第二点,关于Java学习的书籍已经有很多,我也能够很明确地知道自己是在什么样地框架下学习。需要做的就是补完当前在Java体系中自己已经学习的知识,把知识串联成树,成图,然后仔细耕耘并发这一块的知识要点,先学习好这一块,有所产出,再进行更多内容的学习。这部分在下一个季度分享中开始着手完成。

对于第三点,容器和容器编排是相对独立的一块知识,也是我之前从未涉及过的知识领域。值得自己好好地花费功夫完成一张完整的知识图谱。目前因为工作需要,每周的调研都显得零零散散,很有必要把调研工作组织到未来的知识图谱中去。

以上,耐心地开始组织自己的知识和思维吧,花上十年教自己成为一个合格的程序员。