学过的技术容易忘,怎么办?

有些技术因为比较复杂,或者在工作中没用到,学过不久就忘了,怎么办?

一、学过的东西会忘,是很正常的

有没有过目不忘的人呢?有,但是我们大多数人都不是这样的人。
根据著名的艾宾浩斯遗忘曲线,初次记忆的内容,在1天之后,只剩33.7%;在6天之后,只剩下25.4%。

20200317_174928.png

所以这里首先要纠正大家的一个误区,认为技术的学习是一劳永逸的事情,投入是一次性的。

二、学习只是记忆吗?

毫无疑问,良好的记忆力对于我们的学习是有很大的帮助的,特别是在应试教育阶段。但是工作以后,我们学习的目的不再是考试,而是为了提升实战的技能(虽然对面试确实非常有帮助!)。所以,还用在学校里的那套观念和方法是不合适的。

扪心自问,一节课两个小时,你投入了多少时间?是不是觉得从头听到尾,就学完了?
1、听课的时候,有做笔记,记录课程的重点知识吗?有记录自己存在的疑问吗?
2、听完之后,如果有不太清晰的地方,自己有去找资料学习吗?
3、老师演示的环境(比如集群,容器,HA架构),自己课后有去搭建吗?
4、老师课堂演示的代码,自己有敲,或者运行吗?源码有去跟踪吗?
5、对于学习的知识和代码,有没有集中维护起来,或者输出?比如有道云笔记、github、技术博客。
6、在工作中,有没有用学过的技术重新审视自己的代码?

在陆地上学不会游泳,看书也学不会开车。
不动手去做,你永远不知道你会遇到多少坑:我本地居然没有配置好环境?按照老师的步骤做的,为什么报错了?测试的结果跟老师说的有点不一样?只有实践才能出真实。

老师讲的东西,只是老师的,没有实践也没有总结,它不可能变成你自己的知识。
而变成自己的知识,最好的办法是输出 —— 自己去写博客,在公司内部做技术分享。如果你试过把一个技术点给别人讲清楚,你会发现原来自己不知道的比知道的多,原来备课需要这么多的时间。

三、为什么会忘记?

除了上面说的只是记忆没有去实践之外,还有一个遗忘的原因是没有理解原理或知识之间的关联。举个例子:
1、在一个技术专题内:如果要理解事务隔离级别的实现,必然要理解锁,而InnoDB的锁锁住的是索引,这个时候又要明白索引的原理。如果要理解索引,必然要知道什么叫做存储引擎,要知道MySQL的体系结构。这里面是层层递进的关系。只学后面不学前面,就只是记住结论而不是真正理解。
2、学习设计模式,例如代理模式,需要掌握面向对象软件设计原则。JDK的动态代理必须要明白什么是反射,为什么需要反射。理解类的实例是怎么创建的,又涉及到JVM的知识。

任何的知识,都要有一个框架。在你回想的时候,脑袋里面会出现一张图。所以推荐大家把听过的课都画一张脑图总结起来。

中间件的本质,都是网络和存储。很多解决方案,跟数据结构和算法密切相关。很多的技术在设计思想上也有类似之处。
所以,你掌握的内容越多,学习起来就更加轻松,而打通了知识的关联,也更不容易忘记。

四、怎么快速复习

基于上面说的遗忘曲线,学习必须要有温故知新的过程。我们学习技术,难道要把2个小时一节课的视频再看一遍吗?这个时间成本太大了。
但是 —— 如果你在学习的时候就有了自己的总结,何必还要从头到尾看视频呢?现在我们的课程也有了非常详尽的课程笔记,翻阅它来复习,比你看视频要快。

对于一些特别复杂的流程(Spring的启动流程之类),总是记不住,怎么办?
这里又要澄清一个误区,不是所有的内容都要记住的。很多细节的知识点,只需要在用的时候查找就可以了。
其他的,如果是面试的时候突击,也只需要总结一下,放到自己的笔记里面(一些热门面试题),在面试前一天看看就好了。
经常问到的,还可以用口诀之类的助记方法。

总结

1、学过的知识会忘记是正常的,每个人都会忘记,老师也会。
2、必须把学习的知识变成自己的知识。
3、不要片面地、零散地学习。
4、形成一些自己的快速复习的方法。

原文地址:https://www.cnblogs.com/flgb/p/14540487.html