经验 | 到现在才明白的自学技巧
本文首发于我的公众号:一个自学的程序员
题外话: 有些文字如果你能耐心的将它看完,我相信你一定会有收获,因为文字所能蕴藏的力量是无穷大的,比如下面的文字,也许有人看了没用,也许有人看了会解决掉自己长久以来的困惑,价值的有与没有,取决于你是否真正的思考与切实的行动!
正文共计:2436字,1图
阅读时间:5分钟
我的目标是做一个终身自学者,这可能跟我所处的环境有很大关系吧,对的,我只能通过自学,当然,我也知道,自学是多么强大的竞争力!
可是,我经常会陷入焦虑,这种焦虑来源于对自己的不确信,对未来的不可知,有的时候会发现,这焦虑,也来源于自己的不努力!
其实,我发现身边有很多的朋友都是在自学的,身处于同一个阵营吧算是,我会情不自禁的将自己与他人进行比较,当觉得自己还可以的时候心里会暗喜,当觉得跟别人差的不是一点两点,真的,我会嫉妒,真的是会嫉妒,就像当初嫉妒那个全班考第一名的同学。
其实,到现在我依然还是相信一句话“所有的愤怒都是来源于自己的无能”
是的,我对自己目前的自学并不是太满意,因为这么久的时间,我不应该如此的,这几天似乎有种要通任督二脉的感觉,因为我越来越发现自己以前的自学方式是多么的低效率了,也就是低效的勤奋,假装很努力而已,直到今天,我才发现这个自学技巧是多么的重要!
在我的学习理念之中,我一直觉得我们学习最大的一个难题,可以说是一只强大的拦路虎,那就是遗忘,也就是说我们学过的东西太容易遗忘了,其实在这块我还真的相信跟人的智商有那么点关系,不得不承认,有的人记忆力就是好,而你的记忆力就是差,当然,我是不承认自己笨的,也不愿承认自己的记忆力差,我更愿意接受的是别人在这块有自己的学习方法,可以将遗忘降低到最低。
也就是说同一个知识,你没有什么方法,你的遗忘率可以能是90%,而别人有着自己的一套方法,可能别人的遗忘率就是45%,因此,你觉得别人记忆力怎么那么好,而自己呢?记忆力不忍直视啊!
先说说我以前自学的一个常态吧,我以前包括现在主要的自学方式还是以看视频教程为主(已经在慢慢改变),其实我这个人记忆力是蛮差的,唉,不得不承认,因此我觉得我有一个好习惯就是喜欢记笔记,我会把自己学习的东西存档(可能以前玩那种存档游戏玩多了),也就是说我在自学的时候我会记笔记,将自己学的知识按照自己的理解记录下来,我到现在一直认为这个习惯非常重要,对每个人而言,我觉得记笔记都是有必要的。
但是,我以前主要的操作方式是这样的,比方说我看一个视频学习一个新知识,我会将视频中讲解的知识点记录下来,可以保证的是下次我可以看我的这些笔记快速记起这些知识点,于是,一个视频教程看完了,我记了关于这哥视频教程中讲解的知识点的笔记下次看这些笔记的时候就能回溯回忆深化这些知识点了。
嗯,这看起来一点都没有问题,但是,实则不然,这样的学习有很大的问题,也存在极大的隐患,总的来说,这样的学习方式在以后的学习中会不知不觉的浪费你的时间,为什么呢?因为这个学习过程缺少最重要的一环,那就是对这些知识点的实战应用,说白了就是你对这个知识点并没有敲相应的代码,你只学习了这个知识点的基本概念,但是你并不知道这个知识点可以拿来做什么,是的,你是记了笔记,但是这些笔记只会会让你想起这个知识点的基本概念,而你缺少的则是我应该拿这个知识点做点什么
还是举一个例子吧!就拿我们java届的扛把子框架Spring来说吧!
比如你要学习Spring了,于是你找来了讲解Spring的视频教程,于是你就开始看了,开始自学了,在学的过程中,哦,第一次听到这个IOC和AOP的概念,赶紧记录下来这个IOC和AOP是什么东西,该怎么去理解他们,于是看继续看呗,视频中肯定会给你讲怎么使用这个IOC和AOP,先将IOC吧,视频中一般会讲解这个IOC是如何实现的,就是如何通过配置和注解的方式去装配bean,又是如何通过创建Spring IOC容器来拿到我们想要的bean,这个视频中肯定会有例子的。
这个时候大家可能就会有不同的操作的,我觉得最坏的一种做法就是把视频中老师讲解这个例子的代码截屏,然后复制到自己的笔记中,然后再三言两语加上自己的一点理解,当然你下次看到你的这个笔记,你确实可以知道IOC是个什么东西,如何在Spring中去实现他,让你写代码你也写的出来,因为你有截屏啊,也有代码,但是我要告诉你的是你这样的自学方式有两个弊端:
对于这个知识点真正学到你脑子里的几乎没有(在笔记中)
非常低效,时间一长几乎等于没学
所以一般聪明点的自学者是这么干的,会把视频中老师讲解的例子跟着自己敲一遍,笔记中不再是视频截图,而是自己敲的代码实例了,我相信大部分人都应该是这么做的。这里我有一个建议就是这里很大部分人都是照着老师的例子敲的代码,其实你可以在照着敲一遍过后自己试着脱离老师的代码自己去实现一下,这样的效果会更好。
于是你养成了一个好的并且是高效的自学方式:自学的时候会记录完善的笔记,并且会把知识点讲解的例子照着敲一遍,然后还会脱离例子,自己再实现一遍!
是的,我就经常这么做!但是,这依然不够好!
首先说一个现象,看看你自己是不是这样,那就是,其实很多时候,我们的笔记我们很少去看的,还有就是这个例子及时你之前照着敲一遍,自己还试着实现一遍,但是时间一久,你还是会忘记的,让你再去实现你很可能敲不出来的。
到这里,你要思考两个问题:
-
以前犯过的错误以后就永远不会再犯了吗?
-
此时记住的事情以后就真的不会忘记吗?
举个很简单的例子,你以前可能遇到一个bug,可以说耗费心力才把它解决,以后再次遇到这个bug很可能还会把你再折磨一次!
回到我的题目,我到现在才明白的自学技巧是什么呢?
那就是之前的那个自学方式大家也许都会犯的一个错误就是,也许最后你对相应的知识点只剩下笔记,而当初自己写的那个例子却不见了,也就是之前写的源代码没有了,时间久了,你也许根本不知道自己当初是怎么实现这个例子的,因此,知道现在,我才明白,目前最为高效的自学方式应该是这样的
首先必须对所学知识点做笔记
然后针对这个知识点你要做相应的实战,也就是要上手敲代码
很重要的一点,这个笔记和自己动手敲的代码示例最好保存下来(我自己之前从未保存过)
只有这样你对这个知识点才是真正的心里有底!
这里面存在的一个问题可能是很多人的疑惑,那就是对于一个知识点,我该怎么对它进行实战呢?比方说,我今天学习了多线程,我该怎么对它进行实战呢?其实,我想说的是,只要你想做,方法总会有的!
今天的一些感悟,希望对你有用!