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

98 | 高效学习:深度,归纳和坚持实践

98 | 高效学习:深度,归纳和坚持实践-极客时间

98 | 高效学习:深度,归纳和坚持实践

讲述:杨超

时长14:09大小12.93M

你好,我是陈皓,网名左耳朵耗子。

系统地学习

在学习某个技术的时候,我除了会用到上篇文章中提到的知识图,还会问自己很多个为什么。于是,我形成了一个更高层的知识脑图。下面我把这这个方法分享出来。当然学习一门技术时,Go 语言也好,Docker 也好,我都有一个学习模板。只有把这个学习模板中的内容都填实了,我才罢休。这个模板如下。
这个技术出现的背景、初衷和要达到什么样的目标或是要解决什么样的问题。这个问题非常关键,也就是说,你在学习一个技术的时候,需要知道这个技术的成因和目标,也就是这个技术的灵魂。如果不知道这些的话,那么你会看不懂这个技术的一些设计理念。
这个技术的优势和劣势分别是什么,或者说,这个技术的 trade-off 是什么。任何技术都有其好坏,在解决一个问题的时候,也会带来新的问题。另外,一般来说,任何设计都有 trade-off(要什么和不要什么),所以,你要清楚这个技术的优势和劣势,以及带来的挑战。
这个技术适用的场景。任何技术都有其适用的场景,离开了这个场景,这个技术可能会有很多槽点,所以学习技术不但要知道这个技术是什么,还要知道其适用的场景。没有任何一个技术是普适的。注意,所谓场景一般分别两个,一个是业务场景,一个是技术场景。
技术的组成部分和关键点。这是技术的核心思想和核心组件了,也是这个技术的灵魂所在了。学习技术的核心部分是快速掌握的关键。
技术的底层原理和关键实现。任何一个技术都有其底层的关键基础技术,这些关键技术很有可能也是其它技术的关键基础技术。所以,学习这些关键的基础底层技术,可以让你未来很快地掌握其它技术。可以参看我在 CoolShell 上写的 Docker 底层技术那一系列文章。
已有的实现和它之间的对比。一般来说,任何一个技术都会有不同的实现,不同的实现都会有不同的侧重。学习不同的实现,可以让你得到不同的想法和思路,对于开阔思维,深入细节是非常重要的。
基本上来说,如果你按照我上面所提的这 6 大点来学习一门技术,你一定会学习到技术的精髓,而且学习的高度在一开始就超过很多人了。如果你能这样坚持 2-3 年,我相信你一定会在某个领域成为炙手可热的佼佼者。

举一反三

举一反三的道理人人都知道,所以,在这里我并不想讨论为什么要举一反三,而是想讨论如何才能有举一反三的能力。我认为,人与人最大的差别就是举一反三的能力。那些聪明的或者是有经验的人举一反三起来真是太令人惊叹。
我觉得一个人的举一反三能力,可以分解成如下三种基本能力。
联想能力。这种能力的锻炼需要你平时就在不停地思考同一个事物的不同的用法,或是联想与之有关的其他事物。对于软件开发和技术学习也一样。
抽象能力。抽象能力是举一反三的基本技能。平时你解决问题的时候,如果你能对这个问题进行抽象,你就可以获得更多的表现形式。抽象能力需要找到解决问题的通用模型,比如数学就是对现实世界的一种抽象。只要我们能把现实世界的各种问题建立成数据模型(如,建立各种维度的向量),我们就可以用数学来求解,这也是机器学习的本质。
自省能力。所谓自省能力就是自己找自己的难看。当你得到一个解的时候,要站在自己的对立面来找这个解的漏洞。有点像左右手互博。这种自己和自己辩论的能力又叫思辨能力。将自己分裂成正反方,左右方,甚至多方,站在不同的立场上来和自己辩论,从而做到不漏过一个 case,从而获得完整全面的问题分析能力。
在这方面,我对自己的训练如下。
对于一个场景,制造出各种不同的问题或难题。
对于一个问题,努力寻找尽可能多的解,并比较这些解的优劣。
对于一个解,努力寻找各种不同的测试案例,以图让其健壮。
老实说,要获得这三种能力,除了你要很喜欢思考和找其它人来辩论或讨论以外,还要看你自己是否真的善于思考,是否有好奇心,是否喜欢打破沙锅问到底,是否喜欢关注细节,做事是否认真,是否严谨……
这一系列的能力最终能构建出你强大的思考力,而这个思考力会直接转换成你的求知和学习能力。其实,我也是在不断地加强自己的这些能力。

总结和归纳

对自己的知识进行总结和归纳是提高学习能力的一个非常重要的手段。这是把一个复杂问题用简单的语言来描述的能力。就像我小时候上学时,老师让我们写文章的中心思想一样。这种总结和归纳能力会让你更好地掌握和使用知识。
也就是说,我们把学到的东西用自己的语言和理解重新组织并表达出来,本质上是对信息进行消化和再加工的过程,这个过程可能会有信息损失,但也可能会有新信息加入,本质上是信息重构的过程。
我们积累的知识越多,在知识间进行联系和区辨的能力就越强,对知识进行总结和归纳也就越轻松。而想要提高总结归纳的能力,首先要多阅读,多积累素材,扩大自己的知识面,多和别人讨论,多思辨,从而见多识广。
不过,我们需要注意的是,如果只学了部分知识或者还没有学透,就开始对知识进行总结归纳,那么总结归纳出来的知识结构也只能是混乱和幼稚的。因此,学习的开始阶段,可以不急于总结归纳,不急于下判断,做结论,而应该保留部分知识的不确定性,保持对知识的开放状态。当对整个知识的理解更深入,自己站的位置更高以后,总结和归纳才会更有条理。总结归纳更多是在复习中对知识的回顾和重组,而不是一边学习一边就总结归纳。
我们来总结一下做总结归纳的方法:把你看到和学习到的信息,归整好,排列好,关联好,总之把信息碎片给结构化掉,然后在结构化的信息中,找到规律,找到相通之处,找到共同之处,进行简化、归纳和总结,最终形成一种套路,一种模式,一种通用方法
要训练自己这方面的能力,你需要多看一些经典的方法论图书,看看别人是怎样总结和归纳知识的。你可以在一开始模仿并把自己的理解的知识给写出来,写博客会是一种很好的方式。另外一种更好的方式是讲一遍给别人听。总之,你需要把你总结归纳的知识公开出来,给别人看,接受别人的批评和反馈,这样你才能成长得更快。其实,我也在锻炼这样的能力。
如果你在 Coolshell 上看过我写的《TCP 的那些事儿》,你就能知道我对《TCP/IP 详解》这本这么厚的书以及一些日常工作经验的总结,我写成了两篇比较简单的博客。你需要像我一样扩大自己的知识面,然后学会写博客,就能慢慢地拥有这种能力了。这种将信息删减、精炼和归纳的方法,可以让你的学习能力得到快速的提升。当你这么做的时候,一方面是在锻炼你抓重点的能力,另一方面是在锻炼你化繁为简的能力。这两种能力都是让你高效学习的能力。
最后,还想说一下,一般来说,拥有这样能力的人,都需要有在更高的维度上思考问题的能力。比如一些名人的金句,就是这种能力的体现。这种能力需要你非常深入的思考,需要你的阅历和经验,当然,和聪明人在一起也是提升这种能力的最有效的选择。

实践出真知

所谓实践出真知,也就是学以致用,不然只是纸上谈兵,误国误民。只有实践过,你才能对学到的东西有更深的体会。就像我看 《Effective C++》和《More Effective C++》这两本书一样,一开始看的时候,我被作者的那种翻来覆去不断找到答案又否定自己的求知精神所折服。但是,作者的这种思维方式只有在我有了很多的实践和经验(错误)后,才能够真正地体会为什么是这样的。
这两书不厚,但是,我看了十多年,书中的很多章节我都可以背出来,但是我想得到的不是这些知识,而是这种思维方式,这需要我去做很多的编程工作才能真正明白,才会有斯科特·迈耶斯(Scott Meyers)那样的思维方式,这才是最宝贵的。
另外,实践出真知也就是英文中的 Eat your own dog food。吃自己的狗粮,你才能够有最真实的体会。那些大公司里的开发人员,写完代码,自己不测试,自己也不运维,我实在不知道他们怎么可能明白什么是好的设计,好的软件?不吃自己的狗粮,不养自己的孩子,他们就不会有痛苦,没有痛苦,就不会想改进,没有改进的诉求也就不会有学习的动力,没有学习,就不会进步,没有进步就只会开发很烂的软件……不断地恶性循环下去。
实践是很累很痛苦的事,但只有痛苦才会让人反思,而反思则是学习和改变自己的动力。Grow up through the pain, 是非常有道理的。

坚持不懈

坚持不懈是一句正确的废话。前段时间,我在我的读者群中发起了一个名为 ARTS 的活动。每人每周写一个 ARTS:Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。我希望大家可以坚持一年,但是我也相信,能够坚持下来的人一定很少,绝大多数人都是虎头蛇尾的,但是我依然相信会有人坚持下来的。
坚持是一件反人性的事,所以,它才难能可贵,也更有价值。我从 2003 年写 blog 到今天 15 年了,看书学习写代码,我都会一点一点的坚持。人不怕笨,怕的是懒,怕的是找到各种理由放弃。
这里,我想鼓励一下你。现在很多国外的在线视频课都是 3-5 分钟一节课,一共 20 节课,总时长不到两个小时。然而,你会发现,能坚持看完的不到千分之一。当年 Leetcode 只有 151 道题的时候,一共有十几万人上来做题,但全部做完的只有十几个,万分之一。所以,只要你能坚持,就可以超过这个世界上绝大多数人。想一想,如果全中国有 100 万个程序员,只要你能坚持学习技术 2-3 年,你就可以超过至少 99 万人了(可能还更多)。
当然,坚持也不是要苦苦地坚持,有循环有成就感的坚持才是真正可以持续的。所以,一方面你要把你的坚持形成成果晒出来,让别人来给你点赞,另一方面,你还要把坚持变成一种习惯,就像吃饭喝水一样,你感觉不到太多的成本付出。只有做到这两点,你才能够真正坚持
希望我的这些话可以让你有足够的动力坚持下去。

小结

总结一下今天的内容。我分享了系统学习、举一反三、总结归纳、实践出真知和坚持不懈等几个方面的内容。
在系统学习中,我给出了我学习时用的学习模板,它不但有助于你学习到技术的精髓,更能帮你提升你的学习高度。坚持几年,你一定能在某个领域成为炙手可热的佼佼者。
在举一反三中,我分享了如何获得这种能力的方法。
在总结和归纳中,我指出,积累的知识越多,在知识间进行联系和区辨的能力越强,总结归纳的能力越强,进而逐渐形成在更高维度上思考问题的能力。
在实践出真知中,我阐明了实践的重要性,并认为,只有实践过,才能对学到的东西有更深的体会。
最后,我强调,虽然学习方法很重要,但坚持不懈更为重要,并给出了怎样做才能让自己对学习这件反人类的事儿坚持不懈。
下篇文章中,我将分享一些学习技巧,也是我这么多年来行之有效的。希望对你有帮助。
下面是《高效学习》系列文章的目录。
分享给需要的人,Ta购买本课程,你将得29
生成海报并分享

赞 67

提建议

上一篇
97 | 高效学习:源头、原理和知识地图
下一篇
99 | 高效学习:如何学习和阅读代码
unpreview
 写留言

精选留言(61)

  • 少年姜太公
    2018-09-04
    这篇文章太好了,让学习变的不太枯燥有趣了。 按照6步模板会让一个认识更全面深入 用这个模板举两个例子 高铁产生的背景和成因 高铁应用场景 高铁组成部分 高铁设计原理 高铁优势和劣势 高铁和火车对比 孟子产生的背景 孟子思想应用场景 孟子思想组成部分 孟子核心思想 孟子思想值得赞同与否定的 孟子和论语对比
    展开

    作者回复: 马上就用上了

    74
  • Bean
    2020-02-22
    耗子叔的这篇文章解决了我最近的一个大问题!我的问题是深知归纳和总结很重要,所以一开始就想着要归纳总结,结果一边学习一边就归纳总结,最终只是得到混乱的知识结构和幼稚甚至错误的理解。 之前一直没注意到这个问题,都没这个概念,我现在看知识的时候就想着写一篇好文章出来,在学习的时候就去写文章的细节,结果写着写着发现逻辑不通了,就得继续去查资料,然后结果就是一篇文章写了好久都写不完,最后自己发现自己怎么这么久都没写完一篇文章,就很沮丧。 这种方法是错误的,写文章应当是学习的最后一步。正所谓 “巧妇难为无米之炊”,在基本原料不充足的条件下是写不出好的文章的,而一旦原料充足,写文章应该只是重组知识碎片,另其更好理解和记忆,以及研究如何措辞的过程。此外,原料不充足时,写出来的东西也是不深刻的,甚至有可能是错误的,相当于做了许多无用功,白白浪费了时间。 同时,写文章与学习知识的侧重点不同,用的也是脑子的不同部分,这样两部分一起进行,需要不停的切换脑子的状态,导致哪一边都没有达到深度工作状态,反而耗费了大量时间在切换上下文上(根据亲身体验,大脑切换上下文时好容易溜号的……)。 我现在的问题在于,一开始就把目标定为写一篇好文章,这个初始目标定得太高了,就像是跑马拉松一开始就把目标定为跑完 20 多公里一样,结果忙活了半天,发现文章离完成还差的远呢,就觉得很气馁,感觉自己效率低,最后连继续的动力都没有了。 我应当将顺序修改为先大致确定学习的主题,比如 Java 锁优化的流程;然后确定学习框架,比如对于 Java 锁优化,这个框架可以是这样的:1. 锁优化出现的背景是怎样的,它是为了解决什么问题而出现的?2. 技术的关键点:偏向锁、轻量级锁、重量级锁;2.1. 偏向锁是啥?咋工作的?它解决了什么问题?它的适用场景是啥?它怎么解决的(它的工作流程)?它又引出了什么问题(它的缺点)?2.2. 轻量级锁是啥?咋工作的?……(参照前面)3. 根据这些锁的特性,Java 中锁的升级流程是怎样的?3.1. 无锁到加锁的过程;3.1. 偏向锁升级轻量级锁的时机和过程?3.2. 轻量级锁升级重量级锁的时机和过程?……学的过程中要画图,可以记一些零散的笔记和自己的理解,尤其是学习过程中自己理解起来比较困难的地方。 接下来就是针对每部分搜索资料进行学习,通过这个框架,我们可以轻松地判断完成程度,不停产生正反馈,使学习更有动力。当把框架中的内容学习完后,我们应该已经比较了解这个知识点了,此时可以根据我们的新理解,对框架进行调整,整合这个主题的知识图,并开始写文章,这时文章写起来就应该会轻松许多了。 耗子叔赛高!这个专栏买的值爆了,估计够我翻来覆去看几年了~
    展开
    共 3 条评论
    32
  • 小薛薛
    2018-09-04
    说句。。 请大家保护好颈椎腰椎。。😄
    25
  • 昇、
    2018-09-04
    耗子哥,比如java,有没有哪些书您觉得一定得看英文版?因为我看英文书生词较多,看java core看了几天才看完第三章...所以想问问

    作者回复: 只有中文版翻译的很烂,或是没中文版,或是你想练英文,才看英文版

    14
  • 中山浪子
    2018-09-04
    这一期的内容应该是属于学习了一段时间某个领域或语言知识以后站在一个中级的角度对知识进行总结归纳,进而迈向高级的过程…初级入门的阶段还是需要先培养兴趣,有一本浅显的书上手,再来几个小的项目练手巩固。 耗叔提到的国外优秀的学习视频网站除了YouTube,还有些什么别的可以推荐一下吗?

    作者回复: 初级学习的路不需要我来,每个人都可以自己来。这一系例的文章主要帮助大家突破学习的瓶颈。关于视频网站,YouTube 就好了,几乎所有的其它的教学视频都会放在那里。

    12
  • 亚伦碎语
    2018-09-08
    怎么进读者群呢?
    共 1 条评论
    6
  • 右耳朵猫咪
    2018-09-04
    耗子哥觉得在上海发展好还是北京好?想听听您的建议。

    作者回复: 北京

    共 3 条评论
    6
  • jon
    2018-09-04
    技术适用场景分2种:业务场景和技术场景,怎么区分这2者呢?
    6
  • Geek_a2584e
    2020-04-28
    坚持是一件很难的事,当时做培训,开班的时候有30个学生,然后人越来越少,交作业的越来越少,到结课的时候全班只有2个人坚持下来了。
    4
  • 小牛人
    2018-09-12
    这篇文章价值超高
    4
  • caohuan
    2018-10-22
    耗子哥的系统学习 六步走的方法,总结的太到位了,我表示 会 执行 拿来主义的风格,初步取代我被动的学习,耗子哥 一开头来 六步 有点多,我打算分解下,先 从1-2步 买本书 入个门,然后 3-4步 做case 了解下基本轮廓,最后 继续5-6步 做深层次的理解和运用,看看耗子哥的激励话,想想几年后的自己 好激动。头顶耗子哥的九阴真经,然后自己脚踏实地的来修炼。 耗子哥的读者群 在哪里,我也想去 分享 每周一次的算法、一个小技术、一个观点,二周一篇 读英文的心得。
    展开
    4
  • 摩羯行僧
    2018-09-04
    正在梳理《程序员练级攻略》,想根据攻略做出一个适合我自己的纲领,摒弃其它渠道的信息源,并据此在工作和学习中实践。我觉得攻略中的书籍和资料足够我认真的学习和研究了,就像耗子哥说的,其实关键的关键就是要坚持下去。
    3
  • VictorWu
    2020-04-23
    为了更好的明天,为了出人头地,为家里人过上好日子。这些就是对于我个人来说为什么坚持学习的原因。
    共 1 条评论
    2
  • 文刂 氵共 超
    2020-01-07
    坚持学习,学习笔记 https://mubu.com/colla/4tHcC7oyHu0
    2
  • 拯救地球好累
    2019-08-09
    用知识图谱来学习可以完善自我的知识树,保证知识的体系化。 用问题来引导学习中不断思考。单纯的阅读和收听并不能有高的知识留存率,提出问题,解决问题是很好的一个方法。对于技术,要明白它解决的核心痛点是什么,trade-off是什么,核心模块是什么,底层原理是什么,和其他技术的对比等。 联想能力其实是将知识串联的能力,也是完善自我知识树的能力。抽象能力在编程世界中对宏观问题的建模能力。自省能力是一种反馈能力。三种能力的锻炼需要刻意练习,下意识地多想多思考多总结多实践。 总结和归纳应当在复习阶段做。对于知识,我们在不熟悉的情况下很难批判性地阅读,提出有价值的问题,但可以尝试用自己的话进行复述,可以的话调用联想能力进行拓展。总结归纳的内容也不应该是完全孤立的,应该放在自我的知识图谱中。最后的内容应当保证是高质量的,可输出的。 不要看代码简单就不动手,细节是魔鬼,一定要实践!一定要实践!一定要实践! 坚持自己选择的道路,日拱一卒,计日程功!
    展开
    2
  • zart
    2018-10-02
    在系统中学习真是太牛了,就像武侠小说中,先掌握了内功精髓,然后无招胜有招! 举一反三:联想,抽象,自省。这其实已经包括了后面的内容。总结归纳、实践出真知都是“抽象”能力。 坚持不懈,用成就感将“坚持”变为“上瘾” 最后再赞叹下耗哥,别人看的是一本书的内容,你看到的是作者的思维方式和精神。 怪不得可以“站在制高点,降维打击”
    展开
    2
  • 道行三易
    2018-09-04
    谢谢老师的分享,老师的文章是我看过的付费知识和书籍中最接地气的了😄足以见得老师的思考的深度!这种看过之后和作者产生共鸣的感觉真好😊只可惜曾经走了了好多弯路,要是这系列文章能早点看到,或许能帮助好多人节省好多时间,提高效率!在昆明这样的环境,总觉得好多公司都是为了快速赚取利润,而对软件的质量要求并不高,本着能用就行,从而也就有了各种速成版的培训机构……当然,也许是缺少那样的应用场景吧!好多企业都喜欢速成,但最终往往还是要为之付出代价的。
    展开
    2
  • 天行者阿七
    2020-04-27
    学习中多问为什么,是要把握所学知识的本质和它的具体应用范围,这样自己真的使用的时候才能得心应手,坚持是为了把一个行为内化为本能,这样才能持续不断的进步,而和别人拉开差距。
    1
  • Leo
    2020-04-22
    这篇文章太好了,费曼学习法。输入输出
    1
  • balance
    2019-06-11
    系统学习是基础,学完了才能总结归纳,然后才能举一反三,上面上方法,光有方法是不行的,更重要的是坚持实践
    1