在聊我记笔记的方法之前,先说说我为什么要记笔记。
因为 Kubernetes 的源码内容非常的多,我是用自己的闲暇时间进行学习,所以时间相对零散,每次只能攻克一个小知识点,甚至有时候一个知识点要分成好几次进行学习。
最开始学的时候发现我没有记录下来的话,下次开始的时候我读的源码又需要重新开始复习。
比如我最开始在学 Kubernetes Service 负载均衡的实现时,发现每次几乎都在原地打转, 这次读完 kube-proxy 入口函数读取配置的代码,下次重新再开始的时候,已经忘记了关键的内容,又需要重新从入口开始看。
而且在上次问题的思路,也需要花很大力气去回想,等到回想起来的时候,这次学习的精力也已经被消耗了一大半。
我于是乎开始尝试记录每次读的过程中的问题和这次学到的关键内容,所谓好记性不如烂笔头。
明确出发的目的
因为遇到上面的问题,明确了我记笔记的目的,为了能帮我更好的去学习 Kubernetes 的源码。
而且我也想通过学 Kubernetes 源码的过程时把Go代码写的更好,沉淀对应的方法论。
教是最好的学,所以我也需要在过程中有笔记来辅助我进行写出对应的文章。
写作的窘境
当我坐下来用一大段时间去构思 Kubernetes 文章灵感的时候,反而因为给了自己压力,而很难有内容产出。
学习的时候可以用大段时间来深入思考,而灵感却没办法用大段时间堆砌出来,只能靠平时一点一滴的积累。
积累营养
《卡片笔记法》中有个非常有用的方法,一旦自己在平时出现灵感的时候,尽量完整的写下来,在下次写作的时候进行回顾,然后将内容进行拼凑,而不需要从零开始去写。
记笔记的过程就是收集积木,而写文章的过程就是拼积木。
拼图凑一副图出来总归是比我们从零开始去画一幅图要更加简单。
方法有了,万事大吉了吗?并没有。
知行合一却是非常困难的,我读了《卡片笔记法》一年后,在这次读 Kuberentes 源码的时候也才慢慢的应用到实际中。
我发现我每次有灵感的时候都是在自己下班走路回家或者是在晚上洗澡的时候,所以我刻意延长自己下班走路回家的时间,提前了三站公交车下车,然后沿着公园散步回家。
我会去想有哪些写作的主题会有帮助,这个时候不断有灵感迸发出来,一旦出现灵感我会立刻用手机的 notion 完整的记录下来,提供给隔天有电脑的我作为写作的素材。
然后我又遇到了困难,记下来后不知道怎么用,要找的时候因为记的非常杂乱,导致每次写作开始回顾的时候需要回顾的内容实在太多,最后回顾完了卡片自己已经不知道最开始要写什么样的主题。
给笔记“减脂”
后来读到了《笔记的方法》,对我一个非常有启发的点是让笔记处于激活的状态。
这跟我们的身体很类似,**堆积了很多营养,没有锻炼,最后长出来是一身肥肉。**只有不断锻炼让能将营养转化成肌肉,才能在运动中有更好的表现。
把相同内容的压缩,相似内容的层次化结构合并,归档不需要的内容,保持笔记激活的状态,类似于数据库定期压缩和优化索引,让我在需要的时候能够找到笔记。
所以我调整了记笔记的方式,前面还是一样将灵感完整的写下来,然后在一天空闲的时间,我会将对应的灵感转移到我写的文章下面或者进行压缩,并且做一定的衔接补充,而不只是转移位置。
通过收集灵感问题,我发现自己有很多内容重复记录了多次,有很多对 Kubernetes 的疑问也是隔一段时间就会有灵感,但是真正看下来却没有实际的去找答案。所以我开始将每次的疑问都收集起来,方便我下次去从源码内找到答案。
通过这样不断“减脂”,我每次都能聚焦要解决的问题,找到问题需要的答案。
为我所用,无限循环
通过上面不断完善笔记的过程,我也将记录的内容不断“为我所用”,产出文章,也由于不断记录,帮助我无限循环产出灵感的过程。
在读 kube-proxy 的实现的时候,我会先把 iptables 的内容先记录下来,虽然支离破碎,但是每次收集拼接一小部分,最终就看到了 kube-proxy 完整的代码结构。
而我每次记录也不只是局限于 notion 的记录,还会用 drawio 进行相应的类图绘制,把代码可视化,这样下次再开始学习的时候,我能通过可视化的类图快速回忆起来上次阅读的内容。
从这之后我很少再感觉自己写作没有灵感,因为我的灵感已经在每个时刻被我收集起来,这些灵感我会不断进行扩充、完善、拼接,形成文章,多篇文章之后我又能连续把他们编成专栏。
写作的话只是将我的灵感串联起来,像搭积木一样做出一篇解决问题的文章,让我的灵感能产生更多的价值。
形成专栏后我又会想还可以从哪些角度去完善这些专栏,几乎是一个无限的游戏。
工具只是手段,不是目的
上面说到了我记录的时候用到了notion,其实也经历了几次更换,最开始是使用 typora 加上 git 进行多端同步,后面发现每次做一点编辑都需要提交到远端,并且手机没办法及时补充笔记,所以后续切换到了 notion 后一直使用到现在。
notion是个大而全的东西,很难做到tag拆解,一旦将一个笔记肢解开后,很难再重新链接回去。
这就会出现一个问题,我记的笔记组合成文章后,原来的点我会为了瘦身而删掉,但是下一次写到相同主题后,要找到那些内容又十分的困难,因为已经散落到各篇文章里面。
“瘦身”笔记和快速查找知识点是相悖的,我也尝试过使用 flomo 等其他工具来管理知识,但是工具越多,我每次想要记东西的时候选项就越多,反而导致了最核心的“记”难以开始。
所以我目前抛弃了这种各种工具,就只留下 notion ,也在我的每日计划里面增加了一个 Inspire 区域,只要有灵感就往里面去丢,然后每天做 done list 的时候就会对它进行整理。
对刚才难以找到的问题我也用比较粗暴的方式:将删除掉的内容重新 link 回到我写的文章的地方。
这样虽然随着文章的增多笔记也会膨胀,但是至少也解决了我目前难以找到相同知识类目下的笔记的问题。
我们不是工具的奴隶,不要去收集工具,收集在多的工具也不会让我们变成写作高手,去使用工具才能做真正的产出。
工具和方法的核心目的是让我坚持“记”和“写”,工具和形式不是重点,能帮我组织知识和快速产出才是我的目的。
所以在不断迭代方法的时候,我都会一直去回顾,这样是否有让我管理知识和产出文章的效率更高了呢?随着需要管理的知识体量的增加,我是不是需要优化现有的方法呢?
这就有点类似于迭代一个系统,最开始可能只需要 CSV 就可以存储下所有数据,后面需要引入数据库,当QPS增加的时候还需要引入 Redis 作为缓存,一步一步进行演进优化。
感谢你读到这里,我是蔡蔡蔡,如果喜欢可以关注我,会持续分享云原生、Go和个人成长的内容。