左耳听风——高效学习篇

P95 | 高效学习:端正学习态度

本人真实⬇️⬇️⬇️⬇️

大部分人都认为自己爱学习,但是: 他们都是只有意识没有行动,他们是动力不足的人。 他们都不知道自己该学什么,他们缺乏方向和目标。 他们都不具备自主学习的能力,没有正确的方法和技能。 更要命的是,他们缺乏实践和坚持。

如果你不能克服自己 DNA 中的弱点,不能端正自己的态度,不能自律,不能坚持,不能举一反三,不能不断追问等,那么,无论有多好的方法,你都不可能学好。

(1)主动和被动学习

被动学习:如听讲、阅读、视听、演示,学习内容的平均留存率为 5%、10%、20% 和 30%。

【主动学习】:如通过讨论、实践、教授给他人,会将原来被动学习的内容留存率从 5% 提升到 50%、75% 和 90%。

只有你开始自己思考,开始自己总结和归纳,开始找人交流讨论,开始践行,并开始对外输出,你才会掌握到真正的学习能力。

总结:学习不是努力读更多的书,盲目追求阅读的速度和数量,这会让人产生低层次的勤奋和成长的感觉,这只是在使蛮力。要思辨,要践行,要总结和归纳,否则,你只是在机械地重复某件事,而不会有质的成长的。

只要你注意观察,就会发现,少数的精英人士,他们在训练自己获取知识的能力,他们到源头查看第一手的资料,然后,深度钻研,并通过自己的思考后,生产更好的内容。而绝大部分受众享受轻度学习,消费内容。

你有没有发现,在知识的领域也有阶层之分,那些长期在底层知识阶层的人,需要等着高层的人来喂养,他们长期陷于各种谣言和不准确的信息环境中,于是就导致错误或幼稚的认知,并习惯于那些不费劲儿的轻度学习方式,从而一点点地丧失了深度学习的独立思考能力,从而再也没有能力打破知识阶层的限制,被困在认知底层翻不了身

如何进行深度学习:

  • 高质量的信息源和第一手的知识
  • 把知识连成地图,将自己的理解反述出来
  • 不断地反思和思辨,与不同年龄段的人讨论。
  • 举一反三,并践行之,把知识转换成技能。

学习的三个步骤

  • 知识采集,关键要获取信息源头、破解表面信息的内在本质、多方数据印证
  • 知识缝合,结构化知识,重要步骤是连接记忆,逻辑推理,知识梳理
  • 技能转换,举一反三、实践和练习,传授教导,把知识转化成自己的技能 (2)学习的目的(事情的内在本质、逻辑和原理) 学习是为了找到方法,学习是为了找到通往答案的路径和方法,是为了拥有无师自通的能力。

学习是为了找到原理,不仅仅是为了知道更为了思考和理解

学习不仅仅是为了知道,而更是为了思考和理解。在学习的过程中,我们不是为了知道某个事的表面是什么,而是要通过表象去探索其内在的本质和原理。真正的学习,从来都不是很轻松的,而是那种你知道得越多,你的问题就会越多,你的问题越多,你就会思考得越多,你思考得越多,你就会越觉得自己知道得少,于是你就会想要了解更多。如此循环,是这么一种螺旋上升上下求索的状态。

(3)学习是为了了解自己 学习更是为了找到自己的未知、为了了解自己

我们要多走出去,与不同的人交流,与比自己聪明的人共事,你才会知道自己的短板和缺失,才会反过来审视和分析自己,从而明白如何提升自己。

(4) 学习为了改变自己

学习是为了改变自己的思考方式,改变自己的思维方式,改变自己与生俱来的那些垃圾和低效的算法。总之,学习让我们改变自己,行动和践行,反思和改善,从而获得成长。

总结:学习是“反人性”的事情,一定要端正自己的态度、自律、坚持、举一反三、不断追问。

P96 | 高效学习:源头、原理和知识地图

(1)注重基础和原理

有时候,学习就像拉弓蓄力一样,学习基础知识感觉很枯燥很不实用,工作上用不到,然而学习这些知识是为了未来可以学得更快。基础打牢,学什么都快,而学得快就会学得多,学得多,就会思考得多,对比得多,结果是学得更快……这种感觉,对于想速成的人来说,很难体会

(2)使用知识图

从知识树的主干开始广度和深度便利,得到一整棵的知识树。

学习并不是为了要记忆那些知识点,而是为了要找到一个知识的地图,你在这个地图上能通过关键路径找到你想要的答案。

总结: 第一、要注重基础和原理 第二、知识图学习,学习不是为了记忆知识,是找到一个知识的地图,通过关键路径找到答案。

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

(1)系统的学习 学习模版:

  1. 这个技术出现的背景、初衷和要达到什么样的目标或是要解决什么样的问题。
  2. 这个技术的优势和劣势分别是什么,或者说,这个技术的 trade-off 是什么。任何技术都有其好坏,在解决一个问题的时候,也会带来新的问题。
  3. 这个技术适用的场景。所谓场景一般分别两个,一个是业务场景,一个是技术场景。
  4. 技术的组成部分和关键点。这是技术的核心思想和核心组件了
  5. 技术的底层原理和关键实现。
  6. 已有的实现和它之间的对比。
耗子叔的学习模板

(2)举一反三

耗子叔认为举一反三的三种基本能力
  1. 对于一个场景,制造出各种不同的问题或难题。
  2. 对于一个问题,努力寻找尽可能多的解,并比较这些解的优劣。
  3. 对于一个解,努力寻找各种不同的测试案例,以图让其健壮

(3)总结和归纳 学习的开始阶段,可以不急于总结归纳,不急于下判断,做结论,而应该保留部分知识的不确定性,保持对知识的开放状态。

把你看到和学习到的信息,归整好,排列好,关联好,总之把信息碎片给结构化掉,然后在结构化的信息中,找到规律,找到相通之处,找到共同之处,进行简化、归纳和总结,最终形成一种套路,一种模式,一种通用方法。

(4)实践出真知

耗子叔引用自己看 《Effective C++》和《More Effective C++》这两本书一样,一开始看的时候,我被作者的那种翻来覆去不断找到答案又否定自己的求知精神所折服。但是,作者的这种思维方式只有在我有了很多的实践和经验(错误)后,才能够真正地体会为什么是这样的。

另外,实践出真知也就是英文中的 Eat your own dog food。吃自己的狗粮,你才能够有最真实的体会。那些大公司里的开发人员,写完代码,自己不测试,自己也不运维,我实在不知道他们怎么可能明白什么是好的设计,好的软件?不吃自己的狗粮,不养自己的孩子,他们就不会有痛苦,没有痛苦,就不会想改进,没有改进的诉求也就不会有学习的动力,没有学习,就不会进步,没有进步就只会开发很烂的软件……不断地恶性循环下去。

(5)坚持不懈

当然,坚持也不是要苦苦地坚持,有循环有成就感的坚持才是真正可以持续的。所以,一方面你要把你的坚持形成成果晒出来,让别人来给你点赞,另一方面,你还要把坚持变成一种习惯,就像吃饭喝水一样,你感觉不到太多的成本付出。只有做到这两点,你才能够真正坚持。

总结: 对比之前学习态度、没有计划

p98 | 高效学习:如何学习和阅读代码

代码==》what、how & Details 文档/书==》what、how & why

(1)如何阅读代码

  1. 基础知识。相关语言和基础技术的知识
  2. 软件功能。知道软件完成什么样的功能、特性、配置项,run起来感受
  3. 相关文档
  4. 代码的组织结构

软件的代码由哪些部分构成的

  1. 接口抽象定义。任何代码都会有很多接口或抽象定义,其描述了代码需要处理的数据结构或者业务实体,以及它们之间的关系,理清楚这些关系是非常重要的。

  2. 模块粘合层。比如中间件、Promises模式、回调、代理委托、依赖注入等

  3. 业务流程。代码运行的过程。开始阶段,不要进入细节,要在高层搞清楚整个业务的流程是什么样的,在这个流程中,数据是怎么被传递和处理的。一般来说,我们需要画程序流程图或者时序处理图。

  4. 具体实现。

  • 代码逻辑:业务逻辑,这种逻辑是真正的业务处理逻辑。控制逻辑,种逻辑只是用控制程序流转的,不是业务逻辑
  • 出错处理。排除出错处理的代码部分,保留干净和简单的正常逻辑的代码。
  • 数据处理。不是主要逻辑不理
  • 【重要的算法】。我说的并不一定是什么排序或是搜索算法,可能会是一些其它的核心算法,比如一些索引表的算法,全局唯一 ID 的算法、信息推荐的算法、统计算法、通读算法(如 Gossip)等。这些比较核心的算法可能会非常难读,但它们往往是最有技术含量的部分。
  • 底层交互。代码和底层系统交互,一般来说是操作系统和JVM。
  1. 运行时调试。代码只有运行起来,才知道具体发生了什么.run起来,用日志、dubug看一下代码运行过程。

总结,阅读代码的方法

  • 一般是自顶向下、从总体到细节的“剥洋葱皮”的读法。
  • 画图是必要的,程序流程图、调用时序图、模块组织图。
  • 代码逻辑归一下类,排除杂音,主要逻辑才会更清楚
  • debug跟踪一下代码是了解代码在执行中发生了什么最好的方式。

如果想了解思想、方法和原理,读书和读文档会更有效率;如果想知道具体细节,还是应该读代码。

P99 | 高效学习:面对枯燥和量大的知识,人的一生是要永远学习的。加油!

如果你发现有些知识太过于枯燥,那么可以通过下面的方法解决。

  1. 这个知识对于你来说来太高级了,你可能不知道能用在什么地方。
  2. 人的认知是从感性认识向理性认识转化的,所以,你可能要先去找一下应用场景,学点更实用的,再回来学理论
  3. 学习需要有反馈,有成就感,带着相关问题去学习会更好。
  4. 当然,找到牛人来给你讲解,也是一个很不错的手段。

【赞同】目的不是学完这些知识,因为学无止境,你永远也学不完,所以你在学习时,一定不要学在表面上,一定要学到本质,学到原理上,那些东西是不容易变的,也是经得住时间考验的,把学习当成投资,这是这个世界上回报最好的投资。

带着问题去学习,带着要解决的东西去学习,带着挑战去学习,于是每当你解决了一个问题,做了一个功能,完成了一个挑战,你就会感到兴奋和有成就感。

把你学习的心得、过程、笔记、代码分享出来,找到和你一同学习的人,因为一个人长跑很辛苦,有人同行就会好很多,就算没有人同行,你的读者,你的观众也会为你鼓掌加油,这些也是让你持续前行的动力。

(1)认真阅读文档, 耗子叔说很多技术问题都是出在技术人员不认真读技术手册上。

(2)其他使用的技巧

  1. 用不同的方式来学习同一个东西,比如看书、听课、创建脑图、写博客,讲课,解决实际问题等
  2. 不要被打断。被打断简直就是学习的天地。所以,你在学习的时候,最好把手机设置成勿扰模式放在一边,然后把电脑上的所有通知也关掉,最好到一个别人找不到你的地方。
  3. 总结压缩信息。当你获得太多的信息时,你需要有一个“压缩算法”。我常用的压缩算法是只关心关键点,所以,你需要使用表格、图示、笔记或者脑图来帮助你压缩信息。
  4. 把未知关联到一只。把心血的知识关联到已知的事务上来。
  5. 用教的方式来学习。因为要教给别人,所以,这么高的标准需要你不但要把自己已掌握的东西学好,还要把周边的也一并学了,才可能做到百问不倒。你才敢去教别人,不是么?
  6. 学以致用。
  7. 不要记忆,找方法推导出知识或答案的方法。
  8. 多犯错误。犯错会让你学得到更多,通过错误总结教训,你会比没有犯过错的人体会得更深。但是千万不要犯低级错误,也不要同一个错误犯两次。

总结:

  1. 耗子叔说了为什么会觉得枯燥的知识?如何解决? 我建议,一定不要学在表面上,一定要学到本质上、原理上,一定要学那些不容易改变,能经得住时间考验的东西。

  2. 阅读文档的重要性

  3. 其他实用的学习技巧

高效学习篇

本文由 mdnice 多平台发布