19年以来,坚持写了几篇自己能够看得过眼的博客,每一篇花出的时间和精力都远远超出预估。这其中的日常是:
- 明明自己非常清楚的概念,怎么写得那么拧巴?
- 这里拿不准,那里拿不准,算了…还得再看一遍源码
- 这前置知识得讲多少才能让没有相关经验的人也能看得明白通透呢?
- 啊呀,这一段一下子就写得太细节了,偏题了偏题了,其实给一个外部引用就可以了
- …
畏首畏尾、自我怀疑、举棋不定,明明胸中已有大纲,一张口却成了哑巴。
想当初写毕业论文的时候,是信口开河,什么都敢往上写,没几天就搞完了那么大几万字,领域还是我完全不熟悉的 WebGL。
到写博客的时候,真正要严肃地教别人知识和经验了,我就完全不敢再这么做了。我的每一段话都要为自己的个人形象负责,更要为读者的时间和信任负责,这个压力(或者说诱惑)是空前的。
正因为压力是空前的,每次写完一篇博客,我都能感受到自己对这块东西的理解又更深了,至少之前含混不清、自己为明白的东西,现在都能有条理有逻辑地描述出来了。
我一直信奉 “Learning By Teaching”。在过去20年中,我认为对我的学识帮助最大的不是父母、老师,也不是兴趣或追求,而正是 “Learning By Teaching” 的 Super Power。
初中前我是一个”好为人师”的烦人精(可能现在仍然是这样,哈哈哈),那时的我没脸没皮,读了书之后就要去到处 BB,自己还不懂的东西也会给小伙伴们以及长辈们吹得牛皮满天,不为别的,就为了他们看着我时眼里放出的求知与欣赏的光彩。
高中知道了一些廉耻,至少不会主动去 BB 了。但我至今还记得高中里我为了能解答周围同学的问题,会去提前学要上的课、最快地做完课后的习题——以及努力去拿到一个好名次,这样才有人愿意主动来问我问题。
上大学时,我在计算机网络课上给大家讲了一节 CDN 的课,至今 CDN 的概念与架构还一直印在我的脑海中。工作之后,我在公司里做过或大或小的几场分享,假如你现在问我分享中涉及到的主题与知识,我还可以给你画出当时 PPT 上的架构图并且绘声绘色地描述一番。
“Learning By Teaching” 的魔力在于:
- 它的正反馈是迅速而强烈的,迅速到什么程度?假如你讲得够精彩,讲的过程中就能体会到全场人不断想听下去的那种迷人氛围。强烈到什么程度?回想一下你被陌生人由衷地夸赞的感受就可以了;
- 它的压力和标准是异乎寻常的。学习一个知识,最高的理解程度就是可以教懂别人这个知识。为了达到这个程度,我们需要摸清吃透整块知识——而且”教”这个过程会帮助你会发现,自己之前的懂了,可能并不是真的完全懂了;
- 可能是最好的形成知识脉络的方式。我们可能都有这样的体会,由别人来提问,问 A、B、C 不管哪个领域我们都是答得上来的。但假如要自己主动把 A、B、C 串联到一起形成脉络,就没那么简单了。而在”教”这个过程中,我们不可避免地需要通过介绍前置知识、引用相关知识来为知识梳理出脉络,这时,”教”别人的过程就是”教”自己的过程——通过”教”别人,我们能从一个学习者的视角反向推导出一个知识依赖于哪些知识,又能衍生出哪些知识;
正如现在,我写这些话并不是想卖安利,而是自己再梳理一遍 “Learning By Teaching”。
不过这篇终究是篇随笔,只能讲讲世界观,具体的 “Learning By Teaching” 方法论我还理不出来,希望在接下来几年里,能对这个理念有更系统的理解。
秉承着这个理念,我想根据最近在看的 MIT 6.824 的内容,出一个 “Distributed System Practice In Go” 的系列教程,系统性地实践一遍 “Learning By Teaching”。哈哈,Flag 就先立在这里了。
写于杭州久违的一日阳光后。