思考追根溯源的学习方法

最近在《极客时间》上购买了 Winter 老师的重学前端这门课程,重新对自己的前端知识做一次查漏和补缺。(Winter 老师是谁?可以查看这里)在课程的开篇,Winter 老师提出了一种学习的方法:建立知识体系 以及 追根溯源

建立知识体系相信大家都有自己的理解。特别是在前端这个知识点又多有分散的圈子里面更是如此。一幅知识体系的导图会不会让人在学习中迷失方向,当然这么庞大还在不断扩张的导图也会劝退不少人。

2015-2016 年的知识体系(引用自:WEB前端知识体系脑图 )

而追根溯源的方法个人感觉则更为重要。所谓追根溯源,即是寻找一个技术的源头、发明的背景、解决的问题以及发展的历史。毕竟计算机是一门解决实际问题的学科,当中用到的知识和解决问题的方法都是有据可循的。如果能通过追根溯源了解一个技术被发明的原因以及演变的历史,对我们理解和掌握这个技术都会有巨大的帮助。

之前在和小伙伴的交流中,小伙伴也有提出过这一学习方法。于是我自己也在复习对象和原型链的时候刻意尝试了一下并写了两篇笔记。

发现这样做确实对自己的理解有帮助,在反推了一下几种模式的演变以及解决的问题之后,发现这几种模式也更容易记住了(只要记住一两种剩下的就可以推出来)。在加入新公司之后,有幸做过一次 JavaScript 基础的技术分享,查了一下 JavaScript 这门语言发明的原因以及 ECMAScript 的变化过程,对之前不注意的坑又有了一个新的认识。可能这就是“知其所以然”的力量吧。

追根溯源的学习方法,虽然在学习的过程中会多花费一些精力在查找资料和自己动手推演的过程,但是一旦把一个知识点从源头“串”起来的话,那么这个知识点上的大多数问题都不再会是问题了,而与之相关的知识点也能触类旁通。

这一点在之前帮人面试前端的时候也有一些体会。一些年轻的面试者因为“生于” MVVM 的时代,对于操作 DOM 进行前端开发的“石器时代”并不了解。自然也就不熟悉最基本的 DOM 操作了。同样地,还有前端模块化的变迁。如果没有了解过引用 script 标签需要讲究顺序的时代,可能对模块化、作用域隔离等的理解就未必深刻。而这些如果是从 JQuery 时代过来的前端开发者或者是了解过这段历史的开发者的话,应该会理解起来非常方便(前提是有不断的思考和学习)。

当然,对“源头”不熟悉并不会影响我们日常开发。但只要想在前端方面深入,那么 DOM 操作、浏览器原理是自然逃不掉的。那么届时,就会对我们自身的提高带来阻碍。因为无论我们现在的框架有多么便利、打包工具有多么的方便,我们真正跑在浏览器上的仍然是“石器时代”的那些东西。

前端是如此,那么推演到编程这门学科上,自然便是数据结构与算法甚至是更底层的原理了。“想要技术上得到提高,就必须要了解计算机原理”这样的话相信只要是开发者就一定听过,我想这背后所说的就是要去追根溯源,把知识点“串”起来。如果我们可以以自己的方式,推演一遍的话,相信大部分的知识点肯定就能确实掌握了。正如老子在《道德经》中有说,“有道无术,术尚可求。有术无道,止于术。”


思考追根溯源的学习方法
https://konta9.github.io/2019/02/07/2019/思考追根溯源的学习方法/
作者
Konata
发布于
2019年2月7日
许可协议