用户故事|我用 XMind 在 GitHub 上分享编程知识

image

本期用户故事我们邀请到了从事编程工作的 Keyerror Smart 同学。

使用 XMind 的用户千千万,来自各行各业的朋友们的使用方式也各式各样。我们将收集不同领域的小伙伴的 XMind 应用实践,探索思维导图的 101 种用法,希望能给大家带来一些启发。

本期我们邀请到了从事编程工作的 Keyerror Smart 同学。

image

(Keyerror Smart 的 Github 主页)

Keyerror 在 GitHub 上创立并维护了 Psyduck 项目,坚持用 XMind 分享编程知识,至今已收获了 4000 多个 Star。

Psyduck 是用 XMind 记录和整理 CS 基础知识体系的知识分享项目。目前涵盖 Linux 操作系统、网络、C++、Golang 以及数据库的一些设计等。

接下来让我们一起来看看是什么让他坚持在 GitHub 上借 XMind 进行持续输出的。

image (Keyerror 在 Github 的热力图)

XMind酱:简单介绍下你自己。

Keyerror:95 年湖北人,大学学的机械,临近毕业半路出家当程序员,工作以来一直在用 Python 做 CURD。后面想做底层软件的开发,机缘巧合下得到了一份数据库内核的开发工作,未来 10 年应该会在这个领域深耕。

自称是 vim 党但是一直在用 IDE 写代码,逛 B 站的时候远超于逛技术论坛的时间,就算是逛技术论坛也是去灌水,梦想是打代码到 50 岁。

XMind酱:你喜欢编程这件事本身吗?你为之付出了哪些努力?

Keyerror:我在大一的时候学过 C 语言,第一次考试挂了,补考也挂了。从此开启了 N 轮重修的漫漫长路,最终才在大三下学期过了,因此我觉得我在编程这件事上没有“初始化”的天赋。

后面打代码是因为钱多,机械类出去找工作实在太难了,尤其在我本身还是一个学渣的情况下。后来学着学着,发现打代码就像解谜一样,相当有意思。编程可以给我带来内心的宁静,只需要一台电脑和一个想法,就可以把自己的逻辑通过计算机语言这个工具呈现在现实世界中——没有比编程更快地得到反馈的事情了。

image

这是我 2019 年时看过的 CS 书籍,算得上我为之付出的努力。当然不可能每一本都看完,挑挑拣拣,把一些我觉得感兴趣或者重要的知识点过了一遍,越看越觉得自己还有很长的路要走。

XMind酱:和大家简单介绍一下 Psyduck 这个项目。

Keyerror:Psyduck 其实就是可达鸭,我觉得可达鸭挺可爱的所以就拿来用了。

这个项目在最开始的时候并不是开源的,只是我自己个人的一个知识梳理。但是做着做着就发现自己在整理的过程中非常的沉浸和投入,Psyduck 项目里面的每一张思维导图,我都需要至少花一天的时间来构思和整理,但是我是在“心流”这个状态下完成的,完全感受不到时间的流逝。

所以这个项目最开始是为了取悦自己,因为自己做这个事会很放松,内心会很平静。并且温故而知新,理解了以前自己不能理解的知识点,这又是一件让人非常开心的事情。

再后来我就把它放到了 Github 上,因为我觉得我做的真的挺不错的,哈哈,也是希望能够帮助到更多的人。我自己也喜欢做知识传播,既能够让自己得到满足,也能够在一定程度上帮助其他小伙伴儿。

image (Keyerror 在 Github 上的分享)

image (Keyerror 在 Github 上的分享)

XMind酱:为什么选择用 XMind 来进行知识的整理和呈现?

Keyerror:我觉得 XMind 最重要的特性就是提供了对知识这个抽象概念的具象化。

首先,知识本身是有层次和依赖关系的,XMind 可以非常轻松地具象化这些层次和依赖关系。例如当我们想要知道什么是丁达尔效应时,就需要首先知道什么是光,什么是胶体,在理解了这些最基本的概念之后就可以把它们组合起来,得到一个新的知识点:

image

我们可以无限地扩容上面画的思维导图,例如光的波粒二象性,为什么只有胶体能观察到丁达尔现象,而溶液不能,胶体的分散剂和分散质等等知识点。当我们通过文献或者是维基百科等页面学习一个新的知识点时,就可以按照这些知识点的层次关系和依赖关系整理成思维导图,让知识立体化。

其次,正因为 XMind 能够表示层次,也使得我们能够一眼把所有的知识点囊括眼底,只要你有一块足够大的屏幕:)。因此,我们可以轻松的标记出重点、难点,并且在视觉上建立层次感,更有助于理解和记忆。

XMind酱: 自学能力对于程序员而言非常重要,你觉得学习能力向下拆分可以拆分为哪些部分?

Keyerror:我觉得学习能力主要可以分为两部分,一是学习知识的能力,二是应用知识的能力。

学习知识的能力自然就是表示对于一个知识点,我们能掌握多少、能够和过往学习的知识产生多少关联以及能否内化成为自己的储备。在学习一个新的东西时可以尽可能地对其进行拆分,粒度越细越能降低我们学习时的困难程度。

image (Psyduck 的目录列表)

应用知识的能力自然就是把自己所学应用到实际中。例如当我们学习了数组和链表这两个基础数据结构之后,就可以结合操作系统的知识设计一个内存池,再结合工业上的实现对比自己的实现,进一步地加深自身所学。

XMind酱:你觉得编程中最重要的思维是什么?对于刚从事这个工作的朋友们有什么建议?

Keyerror:编程我认为就是一个将脑子里的想法用编程语言表达出来的过程,对编程语言这个工具的熟练度将决定了表达的快慢,对计算机体系的理解决定了表达的好坏。所以我认为编程中最重要的思维就是尽可能地搞清楚我们写下的每一行代码会发生什么,这就需要对编程语言有足够的理解,对计算机体系和相关软件也有一定的理解。

打代码也是一门手艺,所以我认为多看、多学和多实践,是快速入门和提升自己的不二法门。

以上就是 Keyerror Smart 同学今天的分享。