02.01 Day 48 – 提炼 Day 36-Day 40

大家好,我是 Snow Hide,作为《左耳听风》这个专栏的学员之一,这是我打卡的第 48 天,也是我第 60 次进行这种操作。

今天我温习了该专栏里叫《高效学习:端正学习态度》、《高效学习:源头、原理和知识地图》、《高效学习:深度,归纳和坚持实践》、《高效学习:如何学习和阅读代码》、《高效学习:面对枯燥和量大的知识》的文章。

关键词总结:主动学习和被动学习(被动学习、主动学习)、浅度学习和深度学习(深度学习关键点、学习三步骤)、学习是为了找到方法、学习是为了找到原理、学习是为了了解自己、学习是为了改变自己、挑选知识和信息源(信息源特质(第一手资料、有佐证/数据以及引用、加入了自己的经验以及思考))、注重基础和原理、使用知识地图(联想记忆法(第一部分:解决什么问题、第二部分:知识的特性,进行联想、第三部分:更高层次的联想)、知识树)、系统地学习(技术出现背景、技术优势和劣势、技术适用场景、技术组成部和关键点、技术底层原理和实现、已有实现对比)、举一反三(联想能力、抽象能力、自省能力、训练建议)、总结和归纳(信息重构、知识的积累、对知识持开放的态度、方法、如何训练)、实践出真知(Eat your own dog food/吃自己的狗粮、带着痛成长/Grow up through the pain)、坚持不懈、读文档还是读代码(代码、文档/书、人人对话、人机对话、看书或代码的目的、看代码而不看文档的原因、从感性认识到理性认识)、如何阅读源代码(阅读代码的前提(基础知识、软件功能、相关文档、代码的组织结构)、代码组成部分(接口抽象定义、模块粘合层、业务流程、具体实现(代码逻辑、出错处理、数据处理、关键算法、底层交互)、运行时调试))、阅读代码的方法、如何面对枯燥的知识(解决办法)、如何面对大量的知识、认真阅读文档、其他几个实用的技巧(用不同的方式来学习同一个东西、不要被打断、总结压缩信息、把未知关联到已知、用教的方式来学习、学以致用、不要记忆、多犯错误)。

 

所学总结:

 

《高效学习:端正学习态度》

主动学习和被动学习

学习分为被动和主动两个层次

被动学习

通过听课、阅读、音频/视频、演讲等方式,只能吸收:5%、10%、20% 以及 30%。

主动学习

通过小组探讨、实践、授与他人等方式,可以吸收:50%、75% 甚至 90%。

浅度学习和深度学习

少数的精英人士,他们在训练自己获取知识的能力,他们到源头查看第一手的资料,然后,深度钻研,并通过自己的思考后,生产更好的内容。

深度学习关键点

  • 高质量的信息源和一手知识;
  • 将知识关联起来,以自己的理解将其输出;
  • 经常反思和思辨,与不同年龄段的人交流;
  • 举一反三并实践,将知识转成技能。

学习三步骤

  • 知识采集:获取信息源头、破解表面信息的内在本质以及多方面数据印证;
  • 知识缝合:连接记忆、逻辑推理以及知识梳理;
  • 技能转换:举一反三、实践联系以及传授教导。

学习是为了找到方法

学习不仅仅是为了找到答案,而更是为了找到方法。学习是为了找到通往答案的路径和方法,是为了拥有无师自通的能力。

学习是为了找到原理

一旦理解和掌握了这些本质的东西,你就会发现,整个复杂多变的世界在变得越来越简单。

学习是为了了解自己

开拓眼界的目的就是发现自己的不足和上升空间,从而才能让自己成长。

学习是为了改变自己

学习让我们改变自己,行动和践行,反思和改善,从而获得成长。
 

《高效学习:源头、原理和知识地图》

挑选知识和信息源

对于一个学习者来说,找到优质的信息源可以让你事半功倍。

信息源特质

第一手资料

应该是原汁原味没有被添油加醋的内容。

有佐证/数据以及引用

应该是被时间和实践验证过的,而不是拍脑袋野路子或是道听途说的信息。

加入了自己的经验以及思考

可以发人深思的信息密集的文章。

注重基础和原理

基础知识和原理性的技术都经历过长时间的考验,所以,这些基础技术有很多人类历史上的智慧结晶,会给你很多启示和帮助。

使用知识地图

联想记忆法

第一部分:解决什么问题

一个技术的诞生是为了解决什么问题呢/p>

第二部分:知识的特性

一个特性的关联都有哪些,它所关联的其他特性又关联了哪些东西呢/p>

进行联想

第三部分:更高层次的联想

与上面类似,但是更详细,更上层。

知识树

从知识树的主干开始做广度或深度遍历,顺藤摸瓜记忆法会让你记住很多知识。
 

《高效学习:深度,归纳和坚持实践》

系统地学习

技术出现背景

技术的出现背景、初衷、以及要达到什么样的目标或是解决什么样的问题。

技术优势和劣势

技术的优势和劣势分别是什么,或者技术的 trade-off 是什么。

技术适用场景

技术都有其适用的场景,在不适用的场景里可能会出现很多槽点。一般是业务场景和技术场景之分。

技术组成部和关键点

技术的核心思想以及核心组件,是快速掌握该技术的关键部分。

技术底层原理和实现

技术都有其底层的关键基础技术,这些关键技术有可能是其他技术的关键基础技术。就像 Docker 的底层实现。

已有实现对比

技术之间存在差异,不同的实现有不同侧重点。学习不同的实现有助于开拓思维以及深入细节。

举一反三

联想能力

需要平时不停地思考同一个东西的不同用法,或是联想到其相关的其他事物。

抽象能力

对问题进行抽象以获得更多表现形式。找到解决问题的通用模型。将现实世界的问题建立成数据模型通过数学来求解,机器学习的本质。

自省能力

站在对立面来找出解的漏洞。将自己分裂成正反方、左右方或多方。尝试所有可能的案例以获得全面的问题分析能力。

训练建议

  • 场景:制造不同的问题或难题;
  • 问题:寻找尽可能多的解并比较它们的优劣;
  • :寻找不同的测试案例以使其健壮。

总结和归纳

把复杂问题用简单的语言来描述。

信息重构

对信息进行消化和再加工,可能会损失一些信息,但会获得新的信息。

知识的积累

多阅读、多积累素材、扩大知识面、多讨论、多思辨。

对知识持开放的态度

在开始阶段不急于总结归纳或下判断做结论,保留对部分知识的不确定性。当深入了解之后才会对其更清晰明了。

方法

将学习的信息整理、排列、关联。从中找规律、相通之处、共同之处。进行简化、归纳以及总结,以形成一种套路、模式以及通用方法。

如何训练

多看方法论书籍,看大牛是怎样总结和归纳知识。写博客或讲一遍给别人听,将总结归纳的知识公开,接受批评和反馈才能更快成长。

实践出真知

Eat your own dog food/吃自己的狗粮

没有痛苦,就不会想改进,没有改进就不会有动力去学习,也就不会有进步,只能继续开发很差的软件,进而导致恶性循环。

带着痛成长/Grow up through the pain

实践的过程是痛苦的,但这样才会让人反思,并改进自己的动力。

坚持不懈

坚持是一件反人性的是,所以它难能可贵,也更有价值。
将坚持变成吃饭喝水一样的习惯,在没有感觉付出太多成本的情况下才有可能坚持。
 

《高效学习:如何学习和阅读代码》

读文档还是读代码

代码

What(实现什么), How(怎么实现) & Details(实现细节)。
代码会告诉你细节。细节是魔鬼,它决定成败。

文档/书

What(实现什么), How(怎么实现) & Why(为什么这么实现)。
代码并不会告诉你 Why。它能让人一通百通,也是能让人醍醐灌顶的东西。

人人对话

书和文档是人对人说的话。
如果你想知道为什么要这样做,那么应该去看书,看文档。

人机对话

代码是人对机器说的话。如果你想知道机器都干了什么,那你应该看代码。

看书或代码的目的

  • 如果你想了解一种思想、方法、原理、思路、经验,那么阅读书籍和文档会更高效;
  • 如果你想了解的是具体细节,比如协程的实现、模块的性能、算法的实现,那么阅读代码是比较靠谱的。

看代码而不看文档的原因

  • 当没有文档或文档质量较低时,需要看代码;
  • 当掌握的知识既不系统,也不结构化时,需要看书;
  • 在不了解原理,读不懂代码或误解代码用意时,需要了解技术原理方面的基础知识;
  • 当不清楚一个算法的实现时,需要先看这个算法的设计思想,再看代码;
  • 当自己写的代码别扭时,需要看别人是怎么实现的。

从感性认识到理性认识

  • 如果你是新的,那应该多读代码,多写代码,你需要的是 “感性认识”。所以,新手阶段的你会喜欢 Github;
  • 如果你是老手,已经有多年的 “感性认识”,那你接下来需要的则是更多的 “理性认识”。所以,该阶段的你会喜欢读高质量的书籍以及文章。

如何阅读源代码

阅读代码的前提

基础知识

相关语言和基础技术的知识。

软件功能

有哪些特性、配置项。先读一遍使用手册,感受一下运行起来的软件是什么样的。

相关文档

相关的内部文档,Readme、Release Notes、Design 或 Wiki。

代码的组织结构

每个目录实现什么功能,每个文档是做什么的。如果要读的是在某种标准框架下组织的程序,那代码就不难理解了。

代码组成部分

接口抽象定义

代码有很多接口或抽象定义,了解来龙去脉是非常关键的。

模块粘合层

中间件(middleware)、Promises 模式、回调(Callback)、代理委托、依赖注入等等。这些技术将平铺直述的代码分裂了,所以不容易看明白其中缘由。

业务流程

数据是如何被传递和处理的。需要用到程序流程图或时序处理图。

具体实现

深入细节,阅读代码的具体实现。

代码逻辑
  • 业务逻辑:处理业务的代码;
  • 控制逻辑:控制变量、多线程处理、异步控制、远程通讯以及对象序列化反序列化等等。
出错处理

阅读代码时将处理错误的代码删掉。

数据处理

大部分代码是做数据传输的。例如 DAO、DTO、JSON 或 XML 等等。

关键算法

索引表、全局唯一 ID、信息推荐、统计以及通读(Gossip)等最有技术含量的核心算法。

底层交互

与操作系统或 JVM 交互的代码,读之前需要一定的底层技术知识。

运行时调试

使用日志或设置断点跟踪来看代码的运行过程,是了解代码的好方式。

阅读代码的方法

  • 自顶向下,从总体到细节的阅读法;
  • 画程序流程图、调用时序图以及模块组织图等等;
  • 归类代码逻辑、排除杂音;
  • 调试跟踪代码以了解其运行过程。
     

《高效学习:面对枯燥和量大的知识》

如何面对枯燥的知识

解决办法

  • 找到应用场景,从实践开始再返回去学理论;
  • 带着问题去学习,并得到反馈;
  • 找懂的人带一下,会更快上手。

如何面对大量的知识

  • 要学原理,它是经得住时间考验的;
  • 带着问题和挑战去学习,并完成挑战;
  • 将学习心得、过程、笔记、代码分享出来。

认真阅读文档

认真阅读用户手册不但可以少掉坑,它还能让你学到很多。

其他几个实用的技巧

用不同的方式来学习同一个东西

看书、听课、创建脑图、写博客、讲课、解决实际问题。

不要被打断

最好找一个别人找不到你的地方。

总结压缩信息

只关心关键点。使用表格、图示、笔记或脑图来压缩信息。

把未知关联到已知

将新学的知识点关联到已知的事物上。

用教的方式来学习

因为要交给别人,所以你不但要把自己已掌握的东西学好,还要把周边的知识也一起学了,才不容易被问倒。

学以致用

在实践中,你才会遇到非常细节和具体的问题,这些会让你重新思考以及深化学习。

不要记忆

找方法,那些可以推导出知识或答案的方法。

多犯错误

通过错误总结教训,你会比没有犯过的人有更深的体会。同样的的错误不要犯两次,低级的错误最好不犯。

 

末了

重新总结了一下文中提到的内容:学习是逆人性的、像锻炼身体一样需要持续付出、克服自己 DNA 的弱点、学习是为了找到方法、学习是为了思考和理解、学习是为了找到自己的未知为了了解自己、学习是为了改变自己、挑选知识和信息源的重要性、优质的信息源可以让学习者事半功倍、注重基础和原理、打牢基础学东西就快、学得快就学得多、学得多就思考得多、思考得多对比得多学得就更快、实用知识地图进行学习、学习不是为了记忆知识点、学习是为了找到知识地图、系统学习、举一反三、总结归纳、实践出真知、坚持不解、读文档读代码、读书/文档以了解思想/方法/原理、读代码以了解具体细节、阅读代码的方法以及技巧、为什么会有枯燥的知识、如何面对枯燥的知识、如何面对大量的知识、要学以致用学习原理、认真阅读文档、实用的学习技巧。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年1月1日
下一篇 2020年1月1日

相关推荐