前端学习如何更有计划性、提升更稳更快?

前言
最近我发起了「冴羽答读者问」[1]活动,如果你也有想要提问的问题,欢迎留言,我会按照顺序依此回答。

正文
这是原问题:

算是一个前端的时间也有五年了,今年也刚好满 30 岁了,感觉自己一直忙着完成业务,为了保持竞争力、不落伍等原因而学习新的框架、工具;回想起来年少轻狂浪费了不少时间,有了老婆孩子之后学习的时间也越来越少;知晓基础不好,反复地在看但感觉提升也不是很明显,估计是因为练习不够;待在一家尚能养家糊口的公司,说实话,要是能在这家公司干到退休,写一辈子代码,对我来说也能接受,只是无法去预见未来。平时看到一些很高端的技术比如低代码、D2C 或者其他大厂已经在广泛应用的东西,总有一种不知道这辈子自己有没有一点点成为很厉害的程序员的机会。想问的是:如何学习更有计划性、提升更稳更快,如何处理技术迭代越来越快伴随而来的心急和焦虑。

这应该是很多人的困扰了,本篇我们就聊聊学习这件事情。

关于学习,我们最大的三个困惑是:学习是为了什么?我该学什么?我该怎么学?对应到 6W 分析法中,分别是 Why?What?How?我们一个一个聊。

我们为什么要学习呢?这个问题听起来很简单,但深究一下,也没有那么简单。

是为了回应父母的期待吗?是为了拿到 offer,获得一份高薪的工作吗?为了打败他人,享受人上人的感觉吗?

亦或者是为了中华崛起,实现中华民族伟大复兴吗?是为了离开当下的环境,看到更高的风景吗?是为了实现自己的理想,实现个人价值吗?再或者是为了帮助他人获得幸福快乐吗?

在我们上学的很长一段时间里,我们并不需要给出自己的答案,父母、老师、同学、甚至社会、国家都给了我们答案,我们甚至不需要认可这些答案,只用按部就班、学习考试就行。

但也正是因为这样的环境,我觉得很多人失去了对这个问题的思考,以至于不知不觉间,将学习本身当成了目的。遇到困难,我去学习就好了,等我学完,这些困难一定就能解决了吧?父母对我的成绩不满意,我去学习就好了,我把所有的时间都用来学习上,这下他们不能再伤心了吧?学来学去就是没有什么进展,哪还能有什么办法,我只有更刻苦自律,把每分每秒都用到学习才行。

而学习的终点是考试,是 offer,是……,所以当到达终点时,很多人也就不再学习,这也就是为什么高考结束后,有那么多的学生都会撕书以示“庆祝”。

你可能想,我都已经毕业了,才不会犯这样的错误。可是你回想下过往的学习经历,你是否经常破釜沉舟般的推掉所有事情,把时间砸到学习上,但实际学习的效率却很低,一天到头也没干成啥事?也许有一两天学习效率很高,但大部分的时间是不是在分神、发呆、休息、精神涣散中度过?

如果是这样,也许你就是在“假装学习”。这像极了小时候的我们,父母管教严格,去干学习之外的事情都会被说教禁止,于是我们形成了“不管学什么,学的怎么样,我只用表面是在看书就行了”的潜意识,而我们在面对低下的学习成果的时候,我们也容易安慰自己,“我并没有把时间花在其他的地方,我可一直在努力学习,至少我要比那些去玩耍的人强吧……”

所以你看,我们并没有追求真的学到什么,我们追求的是学习这个行为本身,是自己学习的姿态,是为这样的姿态而感到的心理满足和迷恋。

那么你可能问我,你认为学习的目的是什么?说真的,前面说的那么多目的其实都可以成立,因人而异。但我想说的是,倒也不需要想那么远,学习的目的不就应该是为了解决问题吗?

你可能会说,你这不是废话吗?难道我现在的学习不是为了解决问题吗?

那还真不一定。

我认为中国的传统教育中,特别强调输入,让大家死记硬背,期望通过叠加阅读量,量变达成质变,而所谓知识的实践则体现为考试中的各种变种题目。至于我们用学到的知识解决了什么实际的问题,其实并不重要。

这种重输入轻实践的教育倾向,也让学习的我们,过分看重知识的学到,而不是知识的应用。

但是问题在于,如果一个人只是坐着,即便他的思绪已经破涛汹涌,但对于这个世界而言,他只是在那里坐着,其影响只是零而已。因为你对于世界的影响是靠行动做出来的,而不是单纯的思考,就算你在脑海中解出了哥德巴赫猜想,你也要写出论文发在期刊上,这才算是对世界产生了影响不是?所以你什么也不做,亦或者只是思考,写了一堆笔记日记,也只是对自己有益,你对于这个世界、对于他人依然没有什么影响,你也不会产生任何价值。

但我们就是如此,学习一个知识学到了 50 分,感觉不够,通过刻苦的学习将其提高了 100 分,但到这里也只是满足个人的精神洁癖而言,无论学到了多少分,你只是在那里坐着,对于这个世界的影响依然是 0,依然不会产生任何价值,只有当你输出了东西,才可能会产生价值,但很多人如此轻视输出这件事情,以至于即便学到了 100 分,最终对于世界的影响依然停留在了 50 分,那这刻苦学习提高到 100 分的意义是什么呢?

我们经常看到这样的评论 ——“收藏即学会”,我知道这是戏谑,大家也都知道这是假的,但学到即学会,大家却实在的认可这是真的,并且真的这样做。

其实古人就说过“学以致用”,我们已经不是学生了,不需要再去参加纸面上的考试,更需要的是实践上的应用。但太多的人还停留在上学时的学习习惯,知道强迫自己学习,但疏于让自己实践输出,最后时光流逝,刻苦学习却什么也没有改变。

所以有个段子叫:“你每天看耶鲁公开课,上 3W 咖啡听创业讲座,知乎果壳关注无数,36氪每日必读,对马云的创业史了如指掌,对张小龙的贪嗔痴如数家珍,喜欢罗振宇胜过乔布斯,逢人便谈互联网思维……但你还在每天挤地铁。”

智慧可以让我们在某些方面做得出色,但知识本身并不会产生价值。

接下来我们说说学什么,对于大部分同学而言,学习前端知识,选择的是所谓的“系统学习”,于是各种去找资料,网上正好有一大堆所谓的“前端学习路线”、“前端知识图谱”,我在很早以前也写过系统学习前端的知乎回答:怎样系统地自学前端?[2],至今还有同学点赞。

放到现在的我看来,我对于这个问题本身就有些疑惑,我们为什么要追求系统的学习呢?

其实如果是刚开始要学习前端的同学,我觉得跟着一门看似系统的课程学习倒没有什么问题,你什么都没有学过,跟着系统教程走可以避免一些弯路。但如果是已经做前端一段时间了,工作都能做上手了,再跟着所谓的系统教程走,多少有点舍近求远了。

我们之所以想要系统学习,我认为这跟我们一直以来的教育习惯有关系。无论是小学、初中、高中、乃至大学,都是在固定的知识范围里学习、出题,以至于让大家以为我们学习的内容是有边界的,只要我们系统完整的学习完内容,我们就可以考一个高分,拿一个好成绩。

但前端的学习并不是这样的,它涉及的知识范围非常广,并且可以无限延伸,就算完整的学习了所有内容,受制于当下的公司、环境,能用到的知识,其范围也是有限的。大部分的知识只是学过就忘记而已,这样看来,所谓“系统完整的学习”其本质就是一个给自己找自信的过程,以为自己“系统学习”了就能抗得了所有项目中遇到的难题。

如果我们学习的目标是为了解决我们实际中遇到的问题,所谓的“系统学习”就更像是让我们全部学习一遍后,然后根据实际遇到的问题再发挥我们学到的知识,就像我们上学的时候,把知识都学习了一遍再去考试,但这是低效的做法,因为我们实际遇到的问题已经遇到了,就相当于我们已经拿到了考卷,为什么不认真的答题,却非要去完整学习一遍再来答题呢?

在我刚开始工作的时候,我虽然已经能够应付工作,但当我接触的东西越多,我就越觉得自己只是学了一堆 API,所谓基础、底层、源码层面的东西也想看懂,但学来学去,就是摸不到门道。终于有一天,在煎熬之下,我认真的思索了,目前想要掌握的知识点。不是一个具体的方向,比如  React,而是具体的知识点,如原型、作用链、diff 算法等。

我写了上百个我认为需要掌握的知识点,写满了一张纸,然后又将其分类,去除掉一些觉得用不到相对价值小的内容,最终划分为了四类,JavaScript 底层,JavaScrit 功能(防抖、节流这些)、ES6、React。

后面我就按照这些知识点,一个一个去查资料去学习,将这些知识点一个个划去。实际上,在学习的时候还会产生新的点,那就再加入其中就好了。可能你要说了,你这不还是“知识图谱”、“系统学习路线”吗?确实如此,我们学习是一定要有一个路线规划的,这很正常,你能搜到的那些图谱最大的问题是,他们总是求大而全,而你压根就跟不下来,当然你也没有必要跟下来,你要做的是,结合自己的目标和实际工作,确定自己的学习方向,在打实基础之外,学习有可能应用到你工作中的知识点。

也许你会反驳,但是面试需要我全能全知呀。这很明显是一个对面试的误解,如果你去搜面试题,那真的是什么问题都问过,为什么会这样呢,我想这应该是面试者的背景截然不同,所以才根据简历,问了各种各样的问题。

如果你去面试淘宝,虽然淘宝的主技术栈是类 React,但这并不是说只会 Vue 的同学就不行,实际上,如果你能对 Vue 的底层非常了解,这依然体现出了你的能力。越是大厂的面试,对于通用能力即学习、实践、思维、沟通等能力的要求就会越看重,如果你能把项目做好,远比你迎合对方的技术栈要加分的多。

而关于具体学习的技巧,费曼学习法就是一个很好的方法,其实回过头来,我当时每一个知识点都写了一篇文章,无形中也是实践了费曼学习法。

作为一个非常知名、备受推崇的学习法,非常有必要了解和学习一下。哪怕你没有用上,但是很多理念也许就在无形中改变了你的学习方式。

作为一名物理学家,费曼因自己独特的教学方式广为人知,深受推崇。他总是能深入浅出地将复杂的专业理论讲得通俗易懂,深受学生喜爱,后来,越来越多的人便采用他的这种方法学习,最终形成了人们众所周知的“费曼学习法”。所以费曼本身并没有将这些内容理论化,这些原则是由无数的追随者和思维学家整理而成。

所以不像“番茄工作法”,你可以阅读番茄工作法的作者亲自写的说明书,关于费曼学习法,虽然有很多文章,但还是推荐更系统全面的书籍,就比如微信读书上的《费曼学习法》,尽管这本书很多人吐槽将几千字的内容扩展成一本书,以及还是不知道怎么实践,但我还是阅读了 2 遍。

我们阅读的很多书籍,其核心观点不过几百字而已,但如果你只看这几百字,你不会有什么大的认知改变,只有将这些观点不断地扩充,在你阅读的时候,反复提及、论证、拓展,你才有可能真的理解或者顿悟这些观点,所以我觉得这本书依然值得阅读。很多文章虽然写的也好,但相比起来还是单薄了些。

而所谓的费曼学习法其实很简单,它的核心是——当你准备学习一门新知识时,必须站在传授者的立场,假设自己要向别人讲解这门知识。那么你一定要用最简洁、清晰和易于理解的语言表达出来,才能让行外的人也能听懂。费曼说:“最好是几岁的小孩也能明白你在说什么。”






再简单来说,费曼学习法强调输出,当你学习完一遍的时候,尝试向别人讲解你学习到的知识。再说白了,以教为学,虽然表面是在教别人,其实你也是在以教的方式逼迫自己查漏补缺。

我们都知道有这样一个学习效率金字塔:如果只是听别人讲,内容留存率只有 5%,如果是自己阅读,则为 10%,视觉 + 听觉,则为 20%,与别人讨论,则为 50%,讲知识用于实践,则为 75%,讲知识教授给他人,则为 90%。

这个数据是否准确倒不重要,重要的是,它说明了,如果你能教授他人学会,说明你才是真的学会了。所以费曼学习法格外重视“输出”的作用,而输出就是复述你所学到并理解到的知识并让听者理解。

输出落实到具体的形式,则可能有多种,给自己讲解、给他人讲解、写博客、做视频等等都是,很多人采用的是写博客的形式,这很不错,也是我采取的方法。

但我发现很多同学虽然也写了,但只是写在笔记软件里,并不愿意分享出来,理由也很简单,觉得写的简单,大量珠玉在前,害怕献丑,想着等以后厉害了再发出来。

通常害怕分为三个层次,一是害怕事情,二是害怕事情带来的后果,三是害怕自己无力承担事情带来的后果。 以写作发文为例,一是害怕发文,二是害怕发文被冷嘲热讽,三是害怕自己无力承担自己发的文章被冷嘲热讽。再或者是,一是害怕发文,二是害怕发文后无人问津,三是害怕自己无法接受自己如此失败的事实。

其实冷嘲热讽倒还好,实际上我写的第一个系列是被冷嘲热讽最多的一个系列,但时间会为你洗刷掉这些,最糟糕的可能是无人问津吧,但我是认为,如果你遇到了一个问题或者阻塞的难点,你将其写出并分享,终有一天会帮助到其他遇到相同问题的同学,尽管可能不是在当下。

写作这种东西呢,也不要有完美主义倾向,好的文笔是练出来的,好文章是改出来的。当下可能确实有点差,但随着你不断地写作,收到大家的反馈,你会写的越来越好。如果只是放在自己的草稿箱里,你并不会有什么长进。“等我厉害了,准备好了”只是一个给自己逃避不做的理由而已。

最一开始写作,也不用写太多,可以从讲清一个知识点,阐明一个观点开始。

也有同学跟我说,有些文章写的太好了,感觉无法超越。实际上,你写文章首先是为了帮助自己梳理知识,其次,这也是一种完美主义倾向,潜意识里不就是“如果写得不好,超越不了别人,那不如不写”嘛,完全没有必要,再者,感觉无法超越,多是因为自己对这个问题的理解已经被这篇文章带着走了,你可以再阅读一些其他相关的文章,等积累的多了,也许你就有自己的切入点了。

以上是我认为的,关于学习的第一个要点 —— 以教为学,而学习的第二个要点,我认为是 —— 困难的地方就是你弯道超车的地方。

稻盛和夫说过:“你不会的东西,觉得难的东西,一定不要躲,先搞明白,后精湛,你就比别人优秀了。因为大部分人都不舍得花力气去钻研,自动淘汰,所以你执着的努力,就占了大便宜”。 所以学习时,遇到困难的地方,不要很本能的就去逃避、跳过,在困难的地方浅尝辄止,在简单的地方反复横跳,最终荒废的只有你的时光。

遇到难点,你应该感到兴奋,如同发现了一条可以快速超越的弯道,并且下定决心、不惜一切攻克它。这样劈荆斩棘的学习姿态反而是最为高效的学习方法。很多东西就是很难的,就比如读源码,没有什么简单高效的方式,你啃得下来就显得厉害一分,啃不下来就只能仰望他人。

如果这个过程中还有什么技巧的话,那就是找寻自己的拉伸区不断训练。很多人总想着一蹴而就,直接就选了困难区的东西,结果学不懂,最后铩羽而归。如果牵涉到的概念太多,看不懂也学不下去,说明是困难区,那就换种简单的方式。想学编译原理,然后就去啃龙书、虎书,那不如从看简单的文章做一个简单的编译器开始。看书看文档看不下去,那就去看看视频教程。很多事情做不下来,那就思考下有什么简单一点、更能接受的方式去开始,退一步不是认怂,反而是智慧的表现。也不要总是强求自己去做下来,最糟糕的是,时间浪费了,热情也消磨了,最后还产生了逆反心理。

学习的第三个要点 —— 以慢为快。我们经常会追求高效学习,但高效学习并不应该指几个小时就看完一本书,或者能够 2 倍速刷完一个视频。学习是学习者在已有认知的基础上,接纳新的知识,巩固或者改变原有的认知,形成新的认知的过程。很多知识它就是需要时间来消化理解的,过快的速度只会破坏这个过程,没有对于概念的深度考究和思考,就只是记住一些概念而已,所以对于所谓“学的快的”同学,也不用羡慕,我们比的从来不是多快能学完一个课程,而是大家对于这个课程的理解程度。

而在学习过程中,一开始的学习一定要慢,换句话说,一定要扎实,因为如果前面的学习有很多漏洞和盲区,后面所有建立在这些基础之上的知识就会摇摇欲坠。之前的漏洞和盲区若是得不到彻底的解决,之后就会一直受此影响,学习上的新问题和新漏洞也会越来越多,最后人只能在焦躁、失望、消沉中选择放弃。

以上三点,是我认为学习过程中应有的认知,换句话说,我认为这是学习之道。但在具体的学习中,依然有一些想法可以讨论,我想再讲 4 点:

第一点是所谓“坚定的信念”。我在很长的一段时间里都在思考人生的意义,人生的目标(当然现在我也会思考),我之所以会这样想,是因为我潜意识里觉得,如果我能找到人生的目标,我就能看清方向,拥有无限热情,刻苦努力、严格自律、专注高效,学习更是绰绰有余,甚至会涌现一种使命感。

尽管我的理智很容易辩驳这个想法,但我潜意识里还是禁不住这样想。你说这个想法正确吗?对我个人而言,我完全无法证伪,因为连第一步,找到目标我都没有做到,怎么证明我在拥有目标就会如此呢?

但我依然愿意这样想,并觉得应该建立起一个“坚定的信念”,于是看书思考,研究前人智慧,思考古往今来,深刻剖析自己,发掘天赋兴趣,你说这些有帮助吗?我不能否认,它确实有一些帮助,但最终落到具体的学习的时候,我依然会拖延、懈怠,分神,禁不住诱惑,会挫败、失落、低沉、惶恐不安。

我希望“坚定的信念”能让我顺势而下,势如破竹的解决所有问题,我也总想把遇到的所有问题都推到“坚定的信念”上。然而学习就是学习,信念目标可以一定程度上解决内驱的问题,但学习就是会讲究方法、技巧、环境、能力等等,信念带来的“意志力”并不是取之不竭的,如果学习是一个系统,“信念”只是一环而已,单靠“意志力”是做不到的。我们真正要做的是,建立起一个学习的系统,引导出自己做事的兴趣、热情和成就感,这样你才会越做越起劲,最后不断地运转下去。

第二点是学习的“反人性”问题。你觉得学习“反人性”吗?很多人认为,自律、学习都是“反人性”,所以“你越逆人性,你就越厉害”。这样的看法不可置否,但我个人并不持这样的观点,因为在我看来,人性是复杂的,毛姆的《月亮与六便士》中:“卑鄙与高尚,邪恶与善良,仇恨与热爱,可以并存于同一颗心灵中”,马斯洛也有需求层次理论,从生理安全到自我实现,皆为人性。

所以人是有趋利避害、短视懒惰的一面,但人也有好奇求知、知羞耻荣辱的一面,所以学不下去,贪图享受是你的人性,但好奇求知,为了理想也是你的人性,刷一天抖音是你的人性,刷完后的空虚和悔恨也是你的人性。我们要做的并不是在痛苦的时候再压自己一把,这样只会彻底的引起心理反感,我们要做的是,发挥和引导人性中积极的一面,向着阳光走,阴影自然就会留在身后。

第三点是即时反馈。为什么打游戏刷短视频会很爽,一刷就停不下来呢?因为游戏有即时反馈,你每一个操作都会让你知道自己在变强变弱,从而立刻调整,看到成效,而短视频因为时长比较短,十几秒一个,而且易操作,只要手指不停滑动,感兴趣的内容就会源源不断的推送到眼前,即时反馈,及时满足,而短视频背后的算法还会根据你的每一个行为推测你的喜好,最终比你还要了解你自己,视频带来的满足感就会更强烈。

但学习不是这样,它的反馈周期长,而且从反馈的程度来看,也会弱很多。举个例子,如果你想通过认真的学习,然后做一个小项目,整个过程因为时间周期太长,你中间看不到任何反馈,你很容易就放弃了,而过程中你实现了某个小目标,虽然感受到了自己的“优秀”,但这种反馈又比较温和,一个东西花时间又久又看不到什么大的成效,出于人趋利避害的本性,人自然就会去逃避放弃。

反过来,知道了即时反馈的原理,我们也可以调整学习的方式。一方面是缩短学习周期,就像做产品也是从 MVP 开始,学习的时候也应该明确的建立起小目标,采用小步快走的方式,及时获得反馈。以写书为例,如果成就感只来自于最后的出版,因为周期太长,做着做着就没了兴致,所以可以从平时的写作做起,感受每一个小目标的完成、每一篇文章带来的外部反馈。另一方面则是增加反馈感,在每一个目标或小目标完成的时候,不仅仅是感受完成的满足感,更要给自己带来更多的奖励,或者是发条朋友圈,或者是送自己想要的一个东西,无论是什么,都是为了让你的大脑增加目标完成时的多巴胺,这才会增加大脑上瘾的几率。

个人成长的时候,最容易出现的就是没有明确的完结时间点,然后一门心思的往前跑。我们经常把人生想象成一场马拉松,仿佛只有冲过终点才算完结,但其实我们也可以把人生想象成一场一场的短跑,每场短跑都有一个明确的完结点,都有一个明确的结束仪式,都有一个明确的奖励,都有一个明确的休息,这样你反而能更有活力的完成旅程。如果只是在心中守着永远在未来的成就节点,只会在实现的路途上,心力交瘁,半途而废。

第四个是关于合适的环境和氛围。先说环境,正如图书馆比寝室更适合专注,干净整洁的地方比杂乱无章的地方更容易专注,作用单一的地方比作用多样的地方更容易专注。最后这个,举个例子,如果你坚持床是用来睡觉和睡觉的地方,那么你的大脑就不会对床和玩手机产生联系,你就更容易早点睡觉。

而关于氛围,有一句非常经典的话,叫做“一个人走的快,但一群人走的更远”。在群体的作用下,因为彼此有共同语言,加上相互肯定,人们就容易坚持住一个习惯。当我们看到他人的努力时,我们也会受到感染,坚定信心,所以找一些志同道合的朋友,加入一些好的社群都是不错的选择。我经常以我社群的一些活动为例,举得太多了,就不多讲了。

最后总结一下,我们学习是为了自己,是为了真正的解决问题,切忌“假装学习”。虽然系统学习看起来很不错,但从自己的兴趣和工作出发,是更好的学习方向。在具体的学习中,应强调输出,以教为学,每一个困难的地方都是超车的机会,以慢为快,踏实的打牢基础知识点。

学习是一个系统,我们不能总是依赖意志力,要讲究方法、技巧、环境等,引导自己做事的兴趣、热情和成就感,这样你才会越做越起劲,最后不断地运转下去。


作者:冴羽

欢迎关注微信公众号 :深圳湾码农