极客时间已完结课程限时免费阅读

20 | Play & Teach:怎么摆脱“从入门到忘记”的学习困境?

20 | Play & Teach:怎么摆脱“从入门到忘记”的学习困境?-极客时间

20 | Play & Teach:怎么摆脱“从入门到忘记”的学习困境?

讲述:安晓辉

时长14:25大小13.17M

你好,我是华仔。
上一讲我们学到了,针对不同技术维度的学习目标,可以分别采用不同的学习方法。
不过就算你用对了方法,在学习过程中往往还是会遇到一些难以解决的困难,导致学习变成了“从入门到忘记”。
那么,怎么摆脱这种的学习困境,保证学习效果呢?这一讲我会为你介绍两种方法。

Play 学习法

从科学学习的角度来看,学以致用的效果是最好的,光学不练学得不深,时间一长可能就忘记了。
但我们在实践中会遇到一个常见的困难,那就是团队当前的工作任务当中并没有相关的实践机会。这种情况下,你学习某个技术就会陷入两难的困境:如果学的话,得不到实践,学得不深;如果不学的话,真的要用的时候又来不及了。
这时候怎么办呢?完全放弃肯定是不可取的,因为机会都是留给有准备的人,如果来了一个新的任务正好要用到某个技术,到时候肯定是团队内谁有准备就安排谁,不会等到某个人学习完了再安排任务给他。
所以,我们需要找到一种方法,在暂时没有实践机会的情况下也能学好技术,这就是 Play 学习法
所谓 Play 学习法,就是通过模拟实践中的场景来进行学习和训练。
华盛顿国家儿童博物馆有一句著名的馆训:What I hear, I forget. What I see, I remember. What I do, I understand.
Play 学习法就是主动创造 Do 的机会来提升自己对新技能的理解和记忆。
如果你喜欢看动物世界之类的节目,应该有这样的印象:狮子这类肉食动物,在成年以前特别喜欢玩耍打闹,这并不是贪玩,而是在练习捕猎的技巧,为成年后的真实捕猎做好部分准备。
Play 学习法就和肉食动物的这种玩耍学习非常像。它的做法比较简单,主要分为三个步骤:
按照链式学习法的方式学习某项技术。
列举常见的场景,搭建模拟场景。
在模拟场景进行测试、体验和练习。
常见的模拟场景以及相应的作用如下表所示:
Play 学习法不但能够让你在没有实践机会的时候,也能够比较好地掌握一项技术,而且它跟直接在工作中实践的学习方式相比,还有一个独特的优势:你可以模拟各种在实践工作中很难出现、但只要出现就可能导致故障的场景。
比如为了验证 ZooKeeper 的集群选举功能,模拟的时候可以采取拔网线、直接杀进程、删除存储文件等各种非常规的手段。
这些手段在线上运行肯定不敢手动去搞,甚至就算在开发阶段的测试环境中也不敢随便搞,因为一旦搞挂了恢复不了,就有可能导致项目延期,个人会需要承担责任。
而如果采用 Play 学习法的话,我们就可以通过模拟场景来积累相关的经验和技能,等到线上真正出现类似问题的时候就能够快速地处理。
Play 学习法能够帮助我们更好的学习技术,但这并不意味着它能够完全取代工作中的实践,工作中的实践仍然是非常重要的提升自己的方式。
这就像小狮子光是通过玩耍打闹,还不能完全熟练地掌握捕猎技巧一样,年轻的狮子刚开始的捕猎的时候,成功率都是很低的。要成为真正的捕猎能手,还需要很多次实战的磨练。
如果说精通一项技术是 100 分的话,通过链式学习法你可以达到 60 分,通过 Play 学习法你可以达到 70 甚至 80 分,但如果想达到 80 分以上,实践是必不可少的。

Play 学习法小结

现在,我们回顾一下 Play 学习法的重点:
Play 学习法是通过模拟实践中的场景进行训练。
Play 学习法的步骤包括:按照链式学习法的方式学习某项技术;列举常见的场景,搭建模拟场景;在模拟场景进行测试、体验和练习。
Play 学习法的独特优势在于,可以模拟各种在实践工作中很难出现、但只要出现就可能导致故障的场景。

Teach 学习法

除了缺少实践机会之外,我们在学习的时候还会遇到另一个常见的困难,那就是学得不深,理解不够透彻。
很多人都有类似的经历:自己学习某项技术的时候感觉学的差不多了,甚至都已经在工作中具体实践了,但是一旦跟别人讨论,或者在晋升的时候面对评委的提问,又会感觉很多东西都没有完全掌握。
这种现象背后的原因是,每个人的知识和技能都是有一定局限性的,不同的人理解会不一样,关注点会不一样,所以在讨论或者 PK 的时候自然会遇到各种各样的问题。就算你有实践机会,也不太可能一两次就把一项技术相关的知识全部用到,总会有认知的盲区存在。
我想你肯定不希望自己在晋升答辩的时候连自己熟悉的内容都回答不好。那要怎么办呢?Teach 学习法就可以帮助你加深理解。
所谓 Teach 学习法,就是通过教别人来提升自己
印度有句谚语:To learn,read. To know,write. To master,teach.
中国也有一句成语:教学相长
结合这些智慧,我们可以总结出学习的四个主要方法:Read、Write、Do、Teach。前面介绍的 Play 学习法是关于 Do 的,而 Teach 学习法对应的则是 Write 和 Teach。
我之所以把 Write 也算作 Teach 学习法的一部分,是因为教别人有两种方式,一种当面给别人进行培训,另一种是写成资料给别人阅读,比如书籍和在线课程。
所以,Teach 学习法包括两种形式,写作和培训。

写作

很多人一听到“写作”两个字,第一反应就是要有文学天分,自己没有文学天分,所以文章就写不好,这其实是一个很大的误区。
技术文章的写作不是文学创作,不需要优美的文笔和有吸引力的情节,看技术文章的读者关注的也不是文字是否优美,情节是否吸引人,而是讲得清不清楚,讲得对不对。
如果你想写一篇技术文章,但是感觉不知道怎么写,那主要的原因不是不会写文章,而是还没有完整地掌握这个技术,不知道哪些是重点,不了解整个体系,对体系里面的各个部分的协作关系不清楚。
那么,是不是一定要等到把某个技术彻底搞明白后才能动笔呢?其实不需要,因为写作本身就是帮助我们学习和梳理的一个过程。比如我在写《从零开始学架构》这本书的时候,并不是把书中的每个内容都研究得一清二楚了才开始动笔的,而是先有了一个整体的构思,然后在写作的过程中边写边完善,有的内容是突然灵感爆发加上去的。
写作对学习的帮助主要体现在以下两个方面:
第一,写作有助于系统地整理技术体系。
当你开始准备写作的时候,肯定需要思考整体的结构应该如何设计,而这个思考的过程其实就是整理技术体系的过程。比如知名博主程序猿 DD 的Spring Boot2.X 教程的结构设计就清晰地反映出了他整理出来的技术体系。
只有当你脑海中形成了完整的技术体系,才能知道应该先讲什么,后讲什么;哪些是重点,哪些可以简单带过;是一篇文章讲完,还是讲一个系列。
程序猿DDSpring Boot2.X教程目录(部分)
第二,写作有助于了解细节。
写作看起来只是把自己知道的东西用文字表达出来,但其实你在写作的时候大脑无时不刻都在思考:
这是什么意思?
这样说对么?
这里要给别人讲么?
为什么要这么说?
怎么样才能表达清楚?
……
所以,写作可以让你主动思考各种细节,一旦发现有疑问的地方,就会停下来去查证和研究。
我在写 CAP 原理相关的内容之前,也觉得自己在这方面已经理解得很清楚了,但是真正写的时候,看到“All nodes see the same data at the same time”这句话,却自然而然地产生了一个疑惑:
通过网络复制总会有时间差,就算是 1ms 差异,那也不满足“at the same time”的说法,那么这里为什么这么说呢?
经过研究和查证,我才了解到这里的说法确实不严谨。第一个原因是,在事务执行过程中,节点间的数据是不一致的,第二个原因是,CAP 定理是忽略了网络延迟的(参考《CAP 理论十二年回顾:"规则"变了》)。
等到我在写这一讲,介绍这个例子的时候,又想到了第三个可能的原因:CAP 同时也忽略了复制的代价,比如将 1K 数据从 A 节点传输到 B 节点,B 节点将 1K 数据写入存储也是需要时间的。
当然,绝大部分相关技术在网络上已经有很多文章了,那我们直接搜一篇看不是更香吗?为何非得要自己费时费力来写类似的内容呢?
原因在于,当我们看别人写的内容时,我们采取的方式其实是“read”,能吸收的可能只有 30~50%,而自己写出来的话,即使内容是类似的,也能够让自己对技术的掌握程度达到 60~70%。
可是,写作是需要投入时间的。如果每一项技术我们都用写文章的方式来学的话,时间确实会不够用。那么,哪些技术应该自己写文章,哪些技术可以通过看书或者上网搜文章来学习呢?
核心的指导原则就是,看技术和自己工作的相关度,对于强相关的核心技术,自己写文章来学;而对于弱相关的非核心技术,可以通过阅读资料来学习。
比如,对 Java 服务端开发来说,JVM 垃圾回收就是强相关的技术,而 Linux 系统编程就是弱相关的技术;而如果是在 Linux 平台用 C/C++ 开发的话,Linux 系统编程就是强相关的技术,Java 的技术就是弱相关的技术。

培训

写作的时候,我们没有时间要求,没有现场压力,一句没写好可以重写,今天写不出来可以等到明天再写。
但是培训就不同,培训的时间是有限的,有现场压力,听众可能会提出各种意想不到的问题,所以培训对你的能力要求更高,但是锻炼效果也更好。
首先,要完成一场培训,你需要写培训材料。培训材料的准备过程就是一个写作的过程,写 PPT 这类培训材料,跟写 Word 文档比起来,也更能够锻炼你的总结、归纳和提炼的能力。写作带给你的帮助,培训也可以提供。
其次,培训需要你在有限的时间内讲清楚一个主题,你必须对这个主题掌握到一定的程度才可以做到,这就会强迫你去思考跟主题有关的各种信息和可能的问题;
另外,培训过程中,你会和听众进行各种交流,这些交流本身既能够促进你对培训内容的理解,也能够锻炼你的临场反应能力。
除了以上这些作用,培训还有一个好处是其他所有学习方法都不具备的,那就是为晋升答辩积累现场经验
很多人晋升答辩失败,临场表现差也是一个重要的原因,比如说话紧张,讲 PPT 的时候忘词,问答的时候没有听明白评委问题就急于回答等等。
有的人归结于自己天生口才不行,心理承压能力太差,其实没有那么严重,毕竟晋升答辩不是 TED 演讲,评委也不是来看脱口秀的。答辩的临场表现不过关,主要还是因为平时缺少训练。
我之前带团队的时候,对于手底下准备申请晋升的人,我基本上都会强制要求他们做几次培训。通过这种方式训练 3~4 次以后,他们就很少在答辩的时候出现因为表达和临场发挥的问题而失败了。就算还是有一点点紧张,但因为之前通过培训锻炼了心理素质,所以不会影响到答辩效果。

Teach 学习法小结

现在,我们回顾一下 Teach 学习法的重点:
Teach 学习法是通过教别人来提升自己。
Teach 学习法包括两种形式,写作和培训。
写作有助于系统地整理技术体系和了解细节。
培训具备写作的优点之外,还能够强迫你去思考跟主题有关的各种信息和可能的问题,促进你对培训内容的理解,锻炼你的临场反应能力,为晋升答辩积累现场经验。

思考题

这就是今天的全部内容,留一道课后思考题给你吧。你是否有过“从入门到放弃”的学习经历?你觉得主要原因是什么?是否可以应用这一讲的哪个方法来改进?
欢迎你把答案写到留言区,和我一起讨论。相信经过深度思考的回答,也会让你对知识的理解更加深刻。
分享给需要的人,Ta购买本课程,你将得20
生成海报并分享

赞 36

提建议

上一篇
19 | 链式 & 比较 & 环式学习法:怎么多维度提升技术能力?
下一篇
21 | 导学:你应该掌握哪些做事方法?
unpreview
 写留言

精选留言(27)

  • 术子米德
    2021-01-13
    🤔☕️🤔☕️🤔 怎么判断自己掌握技能的水平: A、能使用,能解决问题 B、能表达,能表达清楚 C、能判断出听众的水平,采用不同的表达形式,采用不同的表达层次

    作者回复: 能教会别人是最厉害的

    24
  • jss
    2021-01-24
    对于写作这一点, 深有感触; 写文章可以促使自己去思考; 某个知识点是什么, 为什么这么做? 没有它的时候, 怎么处理的? 有了它之后, 带来什么好处; 怎么使用? 这个技术点如何实现的? 等等; 同时 在写文章的过程中, 往往会一个知识点引发另一个知识点, 有点类似 链式学习法; 一个又一个的问题会冒出来. 然后, 自己再一一解决. 并输出成文章. 会很有成就感!
    展开

    作者回复: 是的,除了比较耗费时间外,写作和培训效果真的非常好。

    13
  • Geek_asd3135
    2021-03-05
    想请教一下李运华老师,我目前快2年经验了,但一直处于传统行业,平时的项目都是小打小闹,有时候甚至有段时间比较闲,但是一直有坚持利用好业余时间学习,只不过因为太想从传统跳到互联网了,所以面试都是在学习一些中间件的原理,MySQL的原理,Java的JUC的原理,也就是所谓的"八股文",但实际落地的少,也就是自己项目基本用不到,特别是Redis中间件,MySQL调优,MQ等,都是只做了理论储备。 目前的困惑就是怕传统和互联网的开发模式和难度差别大,然后自己一直看这些理论而没落地,到时候即使靠八股文侥幸过了面试,怕进去后活不过试用期。 所以准备传统跳互联网的这种艰难时期,在实际项目项目求稳定为主,没什么落地互联网技术栈的情况下,想问下李运华老师的建议,如何才能更好的准备传统跳互联网的面试,以及同时兼顾没法落地的这种尴尬场景
    展开

    作者回复: 直接按照Play学习法,自己搭建模拟环境多尝试,不要以为互联网里面已有的人就一定比你强,很多人都只是会用API,自己没有真正去玩过系统,去系统研究系统。 另外,转行业要一步一步来,先转过去再说,别想太多结果导致自己总是裹足不前。 我09年从华为离职,当时在华为用的是Windows平台上的MFC,也是靠着自己学习Linux和C++(gcc这些),才有机会加入UC,加入UC后又学了很多。

    12
  • Y丶z
    2021-01-13
    所以不管怎么样,我们都需要花费大量的时间去学习一门技能(从阅读到构建知识体系,再到持久化到自己大脑),如果急于求成,带来的结果就是掌握不牢,然后一段时间忘记,最后几乎需要重头再来,得不偿失。

    作者回复: 学习方法再好,也不可能做到别人花10小时,用了某个学习方法后10分钟就可以搞定。 我提炼出这些学习方法能够让你减少50%甚至更多的时间,或者同样时间效果更好,所以说积累还是必不可少的

    7
  • 星点
    2021-02-27
    最近读完了一遍晋升体系后直接开始阅读学习方法,因为发现不知道该怎么记笔记才能达到学会的程度,力求在学习方法这里进行突破。 对于一个知识点的写作,只在刚入行时看培训视频硬抄讲师的ppt内容,但培训视频没看完就找到工作了,工作之后基本上就没在系统学习甚至抄ppt(虽然说是抄,但也达到了了解知识点的程度)。也报名了一个自学平台,里面大佬提倡的就是通过自学来提高自身的技术能力,当时也形成了一套自己学习方法,跟play学习法很像。 首先是在平台找到学习任务的要求,根据要求定下自己的学习目标。然后通过搜索引擎找资料普及概念,按照搭建环境。接着练习所学,分为基本使用方法(常用方法)和扩展使用方法(冷知识)。最后按照学习和练习的过程总结出一份比较系统的笔记。不过这个平台也在找到工作后就没能继续坚持完成下去。 工作之后接触的更多的就是teach方法,每周公司都会有技术交流会,需要每个人准备ppt进行技术分享。刚开始还能有很多机会和干活能分享。几个月之后感觉自己会的基本都掏空了,遇到技术交流会就头疼。 通过对晋升体系和学习方法的学习明白自己缺乏完善的成长体系和高效的学习方法,现在立刻就先去消化这两节
    展开

    作者回复: 记笔记不能帮助你学习的,只能帮助记忆。 Play和teach才可以帮助你学习。

    6
  • 右耳朵猫咪
    2021-02-21
    华仔,java开发者要学习的东西很多,比如算法、数据库、ssm框架、网络、jvm、redis、zookeeper、设计模式…… 我想请教一下这么多东西该如何去学呢?感觉有点迷茫,最近也打算面试,但是感觉要复习的太多,有点急躁。请问华仔有没有什么办法?😂

    作者回复: 请看看03章节,按照价值原则去学习,不要眉毛胡子一把抓;如果想面试,对照JD里面的要求来准备

    4
  • Harvey
    2021-01-14
    你好,华仔 关于从入门到忘记,这个章节感触颇深。我自己是一个不会学习的人,但发现这个事情的时间较晚, 以至于在职场中没有优势。为了解决这个问题开始主题学习,通过阅读学习类书籍、订阅得到和极课的专栏,也总结了一些思维框架和笔记。 对于我而言怎么从入门到忘记,原因有四点: 首先:没有学习目标(包括学习路径、学习方法),不知道自己需要学习到什么程度。 其次:学会知识的错觉。比如:以为自己学了知识概念就等于学会了,而没有经过练习和工作中实践,这些知识对于我来说根本没有被消化,理解,对应华仔图中的知识留存率可能只有20%,在加上一段时间的遗忘,可想而知学习的效果。 然后:工作实践中不使用该技能的核心技术。比如:学习了jvm的知识,掌握内存分配和调优,但作为一个业务开发者,所在的项目组也不需要jvm的优化,导致对jvm的优化也只能停留在自己的练习阶段,对于性能调优如果不定期练习的话还是可能遗忘。但也不是说不学了,有一个优势在下一次复习的时候你提取之前的知识会更快,理解更深刻。 最后:学习混乱。比如一个月学习数据结构算法、mysql、redis。这样导致每一个都掌握一点,又掌握的不深刻。 课程总结: 两个方法 play和分享模式。 对于play的学习模式,我的最大收获就是运用场景的方式让学习的效果更好,这个之前是没有考虑。 对于场景学习我又想到了最近学习“得到脱不花的高效学习的方法”中也介绍了场景的必要,这两个可以做关联。在学习一个技能的时候要思考工作在什么时候运用这个技术,这就是一个场景,根据这个场景在思考要怎么学习。 关于场景华仔也总结出了四个场景,具体的场景还需要结合自己的技能做一个具体的划分,找到适合自己的场景。 最后最重要的一点就是,多在工作中实践,在合理的情况下运用最近所学的知识,这个合理就是不给项目组带来过多额外的工作量。 关于分享。写作和培训。 写作的好处不用多说。掌握一套写作的框架。剩下的就是时间的积累。 培训对于我而言难度还是很大,因为培训需要用很多时间做这件事情。因为你做一次培训,如果是10个人来听,你花费的时间是11个人的时间,所以质量一定要高。可以把培训做一个简化比如同事之间的交流,午休时的讨论。 感谢华仔的总结。
    展开

    作者回复: 培训这个点,开始的时候可以在团队内周会上或者定期的内部分享,这个要求不高,出错也没问题,不需要太多的时间,也不需要漂亮的PPT,重点在于分享交流和讨论。 等你积累比较多了,经验比较丰富了,可以尝试公开培训,即:面向部门甚至公司的培训,当然,这个培训的要求就比较高了,不能出现明显的错误。 等你再有经验,已经有一定名气了,那么可以尝试外部交流培训演讲,这个要求当然更高了,一定要自己真的是掌握透彻了才会有机会。

    共 3 条评论
    3
  • 长孙歌澜🇹 🇿
    2021-03-06
    我听到程序员DD了

    作者回复: 就是你熟悉的那位大神😃

    2
  • Geek_a2e439
    2021-02-14
    思考题和自我提问 ,输出倒逼。学习效果更好

    作者回复: 自己提问是一个方法,但还是不能代替别人的问题,不同的人理解和背景不同,提问会更有意思

    2
  • 周平
    2021-02-01
    文中提到了好几种学习方法,我都尝试过,还在形成自己的方法论中,没那么清晰。通过本文的学习,清晰了一些,感谢导师。 Play学习法: 我就是利用公司的平台,在干中学。这样收获很多。从一定程度上就是play学习法。 然后,系统学习是有很多知识点的, 然而,如果我该学某个知识点,但公司现在没有这个平台,或者说,工作内容和这个知识点不相关。我也就会把这个知识点放下了。 这样导致我的学习节奏跟着公司的工作进度走,不太容易形成自己的知识体系。也就是知识点都有,却没有机会串起来。 现在在写这段文字的时候,突然意识到了这个问题。这也是我一直在想的,为什么我的知识点很散的原因。 play学习法有一个点是,自己搭建模拟场景,在模拟场景进行测试、体验和练习。 这个就帮我解决了上述问题。 Teach学习法: 包括两个:写作 和 培训 我的感受:写作收获很大,就是输出倒逼输入,就是需要多花时间,也不要怕产出慢,毕竟没外人逼你。 培训,需要公司的环境支持,所以,如果有环境倒逼你去培训,是个好事儿。
    展开

    作者回复: 写作最难的就是坚持,原因也是没人逼你,需要自己自律和坚持。 Play学习法适应于工作中暂时用不到但很可能用到的技术,等到机会到来的时候,谁准备多一点机会就是谁的了。 很多大厂在晋升的时候会考察晋升者培训的数量和质量,来验证其对团队的贡献,所以你从这个角度来想,自己就会更有动力了。

    2
  • jss
    2021-01-24
    Teach学习法中培训, 也可以自己讲给自己; 从而模拟给他人讲课. (复述) 这样有助于梳理知识点, 讲得过程中, 也会可以反问自己为什么. 当然, 实际效果还是比不上真正的培训; 真正的培训可以提供一些自己想不到的问题;

    作者回复: 自己给自己讲效果不明显,一定要给别人讲。 可以先团队内部几个人的分享,有经验和信心后再扩大范围。

    2
  • 思亭
    2021-01-13
    干货满满,感恩

    作者回复: 知行合一,加油

    2
  • 菜鸟啊菜鸟
    2021-04-10
    之前在准备秋招面试的时候与几个小伙伴组织了几次模拟面试。主要有以下收获: 1、回答问题的时候不紧张了。 2、回答问题的逻辑更清楚了。 3、学会引导面试官向我熟悉的知识点提问。

    作者回复: 你这个方法是晋升答辩技巧里面的模拟面评技巧,非常有用

    1
  • Hesher
    2021-03-30
    机器学习和深度学习,从入门到放弃,理论实在看不懂,实战也就是用开源项目调调参数。

    作者回复: 目前来说,框架都已经分装了理论实现细节和算法细节,只需要知道什么时候用什么模型,知道调用框架的API就可以了,然后调参数

    1
  • Geek_3b1096
    2021-03-29
    又突破认知!

    作者回复: 专栏超值吧 :)

    1
  • helloworld
    2021-01-22
    这篇写的也很赞, 感同身受, 受教了:)

    作者回复: 一定要做到知行合一,你的体会会更深,加油

    1
  • 毛成方
    2023-01-01 来自广东
    在技术落地中学到的东西 才让我们真的有所 获得

    作者回复: 先准备好,然后找机会落地

  • 她微笑的脸y
    2022-12-21 来自广东
    往往并不是有兴趣才能做好,而是做好了才有兴趣。

    作者回复: 应该说有兴趣才能做好吧,因为没有什么事情是一帆风顺的,遇到困难问题挑战挫折的时候,有兴趣才能坚持

  • 她微笑的脸y
    2022-12-21 来自广东
    学习需要正向反馈,而写作就可以给自己带来正向的反馈。往往并不是有兴趣才能做好,而是做好了才有兴趣。 2022年了,加油!

    作者回复: 加油

  • escray
    2022-11-24 来自广东
    从入门到忘记,从入门到放弃 在极客时间学习过不少的专栏,大部分都没能转化成自己的能力,蜻蜓点水。 在学习技术的时候,只有 play 或者说实践才能真的学到,听过的专栏不少,大部分都只留下了浅浅的印象,无法学以致用。 对于写作,我之前比较疑惑,别人明显写的更好,我为什么还要再邯郸学步。如果只写那些少有人写的内容,其实我也没有多少。 如果从加深理解、帮助学习的角度,那么写作或者说记录自己的学习历程,就显得合理多了,从留言开始。 教会别人,明显是更高一层次的学习。
    展开

    作者回复: 写作第一目的不是为了教会别人,而是帮助自己系统化、深入的理解自己以为掌握了实际上还有很多地方没考虑到的东西,所以不管别人写的如何,自己都可以写写