如何建立自己的PKMS(个人知识系统)

Share
学习的本质就是记忆

纸笔模型

念书的时候很多人都有做笔记的习惯,我也不例外。上课的时候我习惯的会把课堂笔记写在书页的边角,课后再转抄到笔记本上。一方面重抄强化了记忆,另一方面我会在重抄的时候把散落的知识点整理一下,让它尽可能有条理。

课程在编写时有考虑到知识的连贯性,所以对于课程的知识图谱很容易被梳理出来。我把这种模型成为“纸笔模型”。它基于几个假设:

  • 每个知识节点在创建后基本趋于稳定,不会有过多修改。即便有修改,数字化后的纸笔模型也是“修改友好”的
  • 节点之间的联系稳定且有限
  • 完整的知识图谱内容有限,体积不会太大
  • 节点是随时间添加,检索起来也比较方便,比如按教科书章节检索
纸笔模型

纸笔模型的挑战

工作了之后,我也有尝试过很多次做工作笔记,却收效甚微。和学习笔记不太一样,工作中接触到的知识很散乱。更多的时候需要快速学到一个全新的领域知识,然后应用在工作中,然后再学习下一个领域知识,循环往复。学到的知识本身也会随着时间被更新,或者推翻。这些工具/知识之间并不甚相关,导致了知识的碎片化,并且很难被检索。

这时,纸笔模型的假设受到了挑战:知识点之间的联系微弱,需要大量的背景知识来建立,这些知识会导致没有一个完整的图谱,或者一个巨大的图谱;知识点本身会频繁的更新;检索困难,很多时候单纯的关键字检索很难找到所有相关的节点。这三个挑战推向同一个结论:传统的纸笔模型,甚至说数字化后(对更新节点更友好)的纸笔模型已经不适用于工作笔记了。

简言之,传统的纸笔模型更适合一个有主干,有直线,内容有限的叶脉结构——教科书等天然适合使用这种工具。

知识图模型

而如同之前所讨论的,工作之后接触到的很多领域知识是驳杂,正交的。这样的知识图谱就是很多细小碎屑的枝干,缺乏一个主干来统一。这种模型我称之为知识图模型。

知识图模型

知识图模型的一大挑战就是对节点的多维度,联想性检索。在检索节点时,目前绝大多数工具都只能做到关键字检索。很少,或几乎没有工具能够把“与XX”相关联作为条件来检索节点。

举个例子,假如我今天读到了一个知识,通胀与央行加息之间的关系是如何如何。除非我在这个知识节点内放了“通胀”“加息”“贷款”“利率”等等关键字,否则很难在未来的某天,我想了解”贷款利率”与“通胀”之间的关系。

Logseq

一个好的PKMS工具,需要有这种能力,将相关联的碎片信息进行整理,连接,并在我需要的时候,能够通过寥寥几个节点的检索,就能够将整个图谱的内容提取出来,比如能够帮助我从“贷款”联想到“利率”,到“加息”,一直到“通胀”。

这里介绍一个我自己在用的PKMS工具,logseq。logseq是一个markdown驱动的PKM软件。它通过节点间的双向连接生成知识图谱,并且可以通过关键字,标签,页面引用等来对节点进行多个维度的整理。比如上文的例子中,“通胀与央行加息之间的关系”节点中我可以通过#通胀,#加息,#经济 等不同标签使这个节点和不同的节点互通。当然在可视化时,它也能够从根据不同的维度,快速的建立不同的可视化结构。

除此之外,logseq 还可以通过不同的宏把pkms和各种不同的管理工具结合到一起,比如TODO,读书笔记,个人周报等。还可以在TODO中按优先级,ddl进行排序,永远把“最重要”的事项显示给你。也可以按需来添加不同的插件,进行强大的功能拓展。

它既是一个笔记本,也可以是一个日记本,一个知识图归纳器,一个PKMS,一个TODO,等等等等。更多与logseq相关用法,请参考这里

希望这篇文章能对同样挣扎在碎片化知识的小伙伴们提供一种思路,以期早日进入work hard, play hard的状态。

Read more

低绩效同事,先别急着下结论

低绩效同事,先别急着下结论

团队里最难处理的,往往不是最差的同事,而是那些卡在board line上,挤挤能出活、但不挤就磨洋工的low performer 同事。 这类 low performer 一出现,很多Manager的第一反应就是:ownership 不行。问题是,这句话太空了,空到几乎没法行动。 我更喜欢用一个简单的框架看这件事:先判断原因,再调整支持,接着设观察期,最后做去留决定。 先判断:到底是哪一类问题 low performance 不等于 low ability。常见情况其实不一样: * 不会做:能力还没到,拆问题、推进、沟通都卡住。 * 不想做:知道怎么做,但投入不够。 * 做错方向:很努力,但目标理解偏了。 * 岗位不匹配:人不差,只是不适合这个角色。 比如: * 一个同事总是晚交,但每次都能把问题讲清楚,可能是任务切太大了。 * 一个同事总返工,

By andy

Vibe coding 之踩坑记

Vibe coding 对于程序员的技能要求反而比之前高了 先讲一个故事。 我这几天突然被隔壁组叫去,帮他们解决一个支付系统的问题。 简单来说,我们的客户分成机构和下属的医疗场所。一个机构下面可能有多个场所,然后机构可以统一管理下属场所的账单,支付等等。这样就需要我们能在我们的支付系统里面建立一个关系树,让父结点能看到子节点的账单,并支付。 问题就出在这个关系树上。因为我们之前用过一个另外的支付系统,所以有一部分老客户是从之前的系统迁移过来的。 这个老系统给每个客户创建了一个独特的id,但是这个id 和我们内部使用的id 并不一致,所以我们需要自己把客户的id 和他们的支付账户连接起来。然而: * 新的支付系统只支持固定的一些属性进行搜索。所以之前做这个项目的工程师A耍了个小聪明,用客户的last-name 属性存储了我们的id * 第一个雷:用户的last-name是可以由用户自行修改的。如果他们修改了,我们的对应关系就乱套了。 * 但是这个id A存错了,应该存储机构的id,A存成了下属场所的

By andy

关于flashblocks

争取整个短文系列,迎合短视频的潮流。 base前段时间整了个活,提出了一个新的概念叫flashblocks。 在有flashblocks之前,每个区块的状态是要么这个区块还不存在,没法拿到区块的任何状态和信息;要么就是这个区块已经存在了,它的状态是不可变的,拿到就是最终区块。base链每2秒产生一个新的区块,即任何的交易需要2秒钟才能确认。 如下图,区块A生成之后,2秒内用户只能看到区块A,直到区块B生成。 flashblocks呢,它允许用户提前获取正在打包的区块的状态。正在打包的区块每200ms更新一次状态,直到10次更新之后,正在打包的区块变成一个完整的区块。 如下图,区块A打包200ms后,用户可以立刻看到区块B的状态0. 再200ms后,可以看到区块B的状态1,直到区块B的状态9,然后区块B稳定,开始生成区块C的状态1。 flashblocks的好处是什么呢?它可以在一个区块完全打包好之前,让用户提前知道自己的交易是否有被打包进当前的区块,加速交易状态的确认。 缺点又有哪些呢? 首先这个确认属于预确认(preconfirmation), 这个预确认还没有状态更新

By andy