高效学习一波流

2019/6/3 posted in  Technological Growth comments

回想入行这几年,一直停滞不前,在焦虑/拖延/睡不醒中消耗的大部分的时光,仰望大佬的成就,看着同行的背影越来越远,促使我思考,不能再用没兴趣/没时间/没精力来逃避,从今天开始找到目标,击破障碍,奉行怦然心动的人生哲学,专注/习惯/持续。

觉悟

高效学习,首先进入学习方法的效果,主要区别在于主动性。

The Pyramid Learning / Cone of Learning

Average Retention Rates

Passive Teaching Methods
Lecture 5%
Reading 10%
Audio / Visual 20%
Demonstration 30%

Participatory Teaching Methods
Discussion Group 50%
Practice by Doing 75%
Teach Others 90%

不盲目追求速度和数量,选择效率更高,更主动的学习方法。

学习步骤:

  • 知识采集。获取信息源头,多方印证。
  • 知识组网。形成体系结构,不是单纯的记忆,要能够推演。
  • 技能转换。举一反三/实践/教授

学习的目的:

  • 学习不仅是为了找到答案,更是为了找到方法。
  • 学习不仅是为了知道,而是为了思考和理解。
  • 学习不仅是为了开拓眼界,而是为了找到自己的无知,了解自己。You do not know what you do not know
  • 学习不仅是为了成长,更是为了改变自己,改变思维方式,改变与生俱来的垃圾和低效的算法。

知识地图收集

  • 从源头获取信息,最新/最酷/最有营养
  • 注重基础和原理,基础知识和原理性的技术,是经历过长时间考验的,是智慧结晶。
  • 使用知识地图,学习不是为了记忆知识点,而是为了找到知识地图。

方法论模板

持续2-3年,成为领域内之手可热的佼佼者。

WHY

  • 技术出现的背景/初衷和要达到的目标或者解决的问题。
  • 技术的优势和劣势或者trade-off。
  • 技术适用的场景,技术场景/业务场景。

HOW

  • 技术组成部分和关键点,灵魂所在。
  • 技术的底层原理和关键实现。

WHAT

  • 已有实现和他之间的对比,不同的侧重,不同的思路,深入细节。

举一反三

持续强大思维能力。

基本能力

  • 联想能力,同一事务的不同用法,相关事物的联系。
  • 抽象能力,找到解决问题的通用模型。
  • 自省能力,左右互博,思辨能力。

训练方法

  • 对于一个场景,制造各种不同的问题和难题。
  • 对于一个问题,努力寻找尽可能多的解答,比较优劣。
  • 对于一个解,努力寻找各种不同的测试案例,使其健壮。

总结和归纳

越了解,积累越多,越能够分辨细节,感觉参考对外国人的脸盲。

学习的开始阶段,不急于总结归纳/下判断/做结论,保留部分知识的不确定性,保持对知识的开放态度。

把看到和学到的信息,规整/排列/关联好,结构化信息,找到规律/相通/共同,进行简化/归纳/总结,最终形成套路/模式/通用方法。

使用上述方法,联系输出和转述。

实践

  • Eat your own dog food.
  • Grow up through the pain.

持续不懈

每周 ARTS: Algorithm / Review / Tips / Share

持续一年,形成习惯。

代码阅读

Code Tells You How, Comments Tell You Why

  • 了解细节阅读代码,WHAT & HOW & DETAILS
  • 了解原理看书/文档,WHAT & HOW & WHY

阅读源代码前准备

  1. 基础知识
  2. 软件功能
  3. 相关文档
  4. 代码的组织结构

了解代码组成

  1. 接口抽象定义,接口/抽象定义
  2. 模块粘合层,中间件 middleware / Promises 模式 / 回调 Callback / 代理委托 / 依赖注入
  3. 业务流程
    • 代码逻辑。业务逻辑和控制逻辑,多线程处理/异步控制/远程通信/序列化都属于控制逻辑,两种逻辑混淆造成代码混乱。
    • 出错处理。2/8 删掉处理错误的代码,排除干扰,高效阅读代码。
    • 数据处理。倒腾数据,冗长无聊,不理会。
    • 重要的算法。索引列表算法/全局唯一ID算法/信息推荐算法/统计算法/通读算法,难懂,但是最具技术含量。
    • 底层交互。和操作系统/JVM交互,需要底层技术知识。
  4. 运行时调试

方法

  • 自顶向下,从总体到细节
  • 程序流程图 / 调用时序图 / 模块组织图
  • 代码逻辑归类
  • debug 了解真实发生

面对枯燥的知识

  • 一步一步,带着问题学习
  • 认真阅读文档
  • 用不同的方法学习。看书/听课/脑图/博客/讲课/解决实际问题
  • 不被打断
  • 总结压缩。表格/图示/笔记/脑图
  • 未知关联到已知
  • 用教的方法学习
  • 学以致用
  • 不要记忆
  • 多尝试,不怕犯错误