为什么我能坚持?因为写技术文章给我的太多了呀!

57,842 阅读7分钟

到现在为止,我写了 200 多篇技术文章了。很多人问过我,为啥我能坚持呢?我写文章的动力是什么?

今天就来解答一下:

有两个学生在做同一道难题。

一个学生绞尽脑汁,快速思考各种思路,一一尝试,最后没做出来。

另一个学生看到不会做,就头脑放空了,没再尝试,最后也没做出来。

从结果看,他们俩都没做出来,但实际的学习效果差很多。

那个进行了大量思考的学生,对这道题的理解会更深刻。因为他进行了更费力的思考,大脑神经之间产生了更多的联结。

这种费力的思考在记忆领域叫做 effort processing。

是我在知乎上看到的:

也就是说 effort processing 的学习效果更好。

比起单纯的记住和理解,写文章、演讲等方式显然更耗费脑力,属于 effort processing,你会对这些知识点理解的更深刻,记的更牢固,学习效果自然也会更好。

你可能听过费曼学习法,也可以用 effort processing 解释。

所以从学习效果来看,写技术文章能让我对这个技术点的理解更深刻。

但更耗费脑力的事情也不意味着就是痛苦。

不知道大家听说过心流没有,就是一种沉浸其中,完全专注,忘记时间的体验。

做一些 effort processing 的事情,很容易进入心流状态。比如我写文章经常一写 2、3 个小时,但自己感受不到写了那么久。

心流的体验是很愉悦的,你会感觉到平静、充实、快乐。

要学的技术太多了,而且很多技术学习成本都挺高的,为啥我能学会很多东西,对一些技术掌握还挺深的呢?

我肯定也不是一下子学会的,也是慢慢积累的。

抗日战争的时候,共产党是怎么一点点打败兵强马壮的日军的?

靠的是游击战,一点点减少敌人的力量。

我写技术文章就是抱着这样的心态,今天搞懂一个点,明天搞懂一个点,慢慢的可能你就学会了一门很有难度的技术。

比如 ts 类型编程,2021 年前我也是不咋会,通过一个一个点的深入的学习,我发现我对这方面也算掌握的比较深入了,然后我还出了一本 ts 类型编程小册。现在我可以说我精通 ts 类型编程了。

这就是我掌握一门技术的过程。

很多人觉得看源码太难了,比如 react 源码,完全看不懂。

其实是看不懂么?

并不是,具体到一行代码、一个函数,逻辑还是很容易看懂的,还是平时用的那些 JS 语法。

只不过代码很多,想要完全看懂需要一点点积累,今天搞懂一个点,明天搞懂一个功能的实现。

卡颂为啥能对 react 源码理解很透彻?

他最初写《React 技术揭秘》的时候可是看了半年的 react 源码呀!

更不用说现在都看了好多年的 react 源码了。

对源码的理解,或者说技术的提升,都是这样一点点积累的,是一个长期的过程。

我喜欢把它叫做游击战。

知识是有复利的,你学会的知识不是用一次,而是可以用无数次。而且你掌握的知识多了以后,知识和知识之间会发生联结,产生新的认知。

比如我最近研究调试,它的原理就是 Chrome DevTools Protocol,简称CDP。网页、node.js 的调试都是基于这个来获取运行时信息。

像 puppeteer 为啥能控制 chrome ?也是通过 CDP。

我还自己基于 CDP 实现了一个简易 puppeteer。

调试公司项目的时候,我发现经常登录很麻烦,用户名密码我也记不住,就在想能不能基于 puppeteer 来做自动化呢?

因为 puppeteer 和调试都是基于 CDP。

最后我还真把它俩结合到了一起,通过 puppeteer 来做自动化,过程中还可以断点调试。

这是新的认知,通过我掌握的调试和 puppeteer 的知识发生联结之后产生的。

这就是知识的复利。

比如说卡颂写了 《React 技术揭秘》的开源小册,出了一门 react 源码视频课,又出版了《React 设计原理》的书,最近也在做 Mini React18 的视频课。

掌握了的技术可以用 n 次,这也是知识复利的体现。

除了复利之外,还能收获影响力。

人脉分为两种,主动和被动。主动的人脉是你去主动结识某个人,被动的人脉是别人来结识你。

通过写技术文章,我认识了很多人,或者说让很多人认识了我。

比如有人和我说,他们拼多多一个组都在看我的文章。比如我面 tiktok 的时候,内推我的时候,他们竟然好多人知道。

再比如我这次工作机会也是通过社区来的。

这就是被动的人脉,或者说影响力。

除了工作机会以外,其他的机会也会更多。

比如极客时间找过我出 babel 的专栏,因为某个出版社的编辑向他们推荐了我。

比如有出版社编辑联系我,把我的文章整理成书,甚至不用我写,他们提供写手。(虽然我没答应)

这些都是影响力带来的。

除了这些之外,还有一点我最近体会很深:来自社区的反馈可以让我二次成长。

当我把技术文章发出去之后,会被很多人看到。我文章中错误的地方,会有人指出,帮我纠正。我有困惑的地方,有人知道的话也会解答我的困惑。同样的问题,有人也遇到过,用了不同的方案解决,也会和我交流。

比如微前端方案 qiankun 的样式隔离的坑,很多人也遇到,但是用了不同的解法。

有修改 qiankun 源码,让 ant 开头的样式不加前缀的:

有修改弹窗挂载位置,不挂到 body 的:

也有通过 proxy 修改 body 的 appendChild 方法的:

包括还知道了一个绝大多数人不知道的样式冲突场景,多个子应用相同 path 的文件,生成的 hash 是一样的,也会样式冲突:

这些别的公司解决样式隔离问题的方案,或者一些我不知道的坑,都是和大家交流得到的。

比如我最近关于 console.log 的一个疑问,有人通过另一种方式做了测试:

还有人通过 v8 源码给了答案。

这些来自社区的反馈,都给了我很多的成长。

这也是我让我感动的一个点。

当然还有个人的原因,我希望等我成为真正的技术大佬的时候,可以把我和东东的故事写下来。

总结

写技术文章这件事我是怎么坚持的呢?

因为它给我的太多了呀:

  • effort processing:写技术文章是更费力的思考,对技术点的掌握会更深
  • 心流:写技术文章很容易进入心流,是一种平静、愉悦的体验
  • 游击战:要学的技术有很多,我是抱着一点一点掌握的心态学习的,写技术文章就是我在打游击
  • 复利:学会的知识可以用 n 次,多个知识之间也会联结产生新的知识
  • 影响力:收获很多被动人脉,有更多的工作机会,还有其他的机会
  • 社区反馈:可以和大家讨论,困惑会得到解答,可以获得更多方案打开思路,错误也会得到纠正
  • 个人追求

我想我会一直写下去。