【如何快速学习新技能 ?】软技能 : 十步学习法

学习「怎样学习」

大纲

  • 学习能力
  • 软技能:代码之外的生存指南
  • 十步学习法「概述」
  • 第一部分:「研究」
    • 第一步: 了解全局
    • 第二步: 确定范围
    • 第三步: 定义目标
    • 第四步: 寻找资源
    • 第五步: 创建学习计画
    • 第六步: 筛选资源
  • 第二部分:「学习」
    • 第七步: 开始学习,浅尝则止
    • 第八步: 动手操作,边学边玩
    • 第九步: 全面掌握,学以致用
    • 第十步: 乐为人师,融会贯通
  • 学习是一种类比行为

学习能力

「学习能力」

对於软件工程师来说,是至关重要的。

除了技术的持续演进以外,在面试时,没有一两个技能可以展示,还会被怀疑是不是能力不够。

现在的职场 : 
    优秀的工程师具备多个「 技能 」 已是常态。

学习瓶颈

学习全新的技术时,时常感到 :

  • 力不从心
  • 进度缓慢
  • 成效甚微

有时甚至出现乾脆放弃的念头

问题点

不是是「意志力」的问题,而是「学习方法」的问题

前人经验

软件设计有前人的经验可以借监,软件工程师学习新技能的方法,也是有经验可循。


软技能:代码之外的生存指南

学习篇 : 十步学习法

作者自创的「十步学习法」,它有非常好的参考价值,不一定要完全照它的方法实行

但它的思维与逻辑,是合理且有系统的。可以依据个人的习惯,精简与改良。

个人使用的程序技术学习方案

除了,作者提供的「十步学习法」,也分享经过我调整後,个人正在使用的程序技术学习方案。

这个方案会需要三种技术支援:

  • Markdown 语法
  • git 版本控制
  • gitlab 代码托管平台

在说明每一步骤的概念时,会使用我的作法,当作范例。

抛砖引玉

同样的,也不需要完全依照我的方法实行,这只是个抛砖引玉,

也许可以激发你 创建最符合你习惯的学习框架。


十步学习法「概述」

从字面上来理解,就是将学习这个动作,拆解成十个步骤

十步学习法

  1. 了解全局
  2. 确定范围
  3. 定义目标
  4. 寻找资源
  5. 创建学习计划
  6. 筛选资源
  7. 开始学习,浅尝辄止
  8. 动手操作,边玩边学
  9. 全面掌握,学以致用
  10. 乐为人师,融会贯通

具体来说,分成两大部分:

study-method

第一部分: 「研究」

  1. 了解全局
  2. 确定范围
  3. 定义目标
  4. 寻找资源
  5. 创建学习计划
  6. 筛选资源

第二部分:「学习」

  1. 开始学习,浅尝辄止
  2. 动手操作,边玩边学
  3. 全面掌握,学以致用
  4. 乐为人师,融会贯通

第一部分:「研究」

先「研究」在「学习」

是因为「自我学习」,并不像是学校或补习班,有完整的教材大纲,可以由浅入深的逐步进展,

为了避免教材的内容,一下子太过深入,导致出现挫折感。

「研究」就是在设计「教材」

完全依照个人

  • 需求
  • 目标

规划一个最符合自己的课程内容

在第二部分「学习」时

才能从「入门到精通」,而不是「入门到放弃」

第一步: 了解全局

对於,要学习的知识领域,进行一个「概略」的了解。
不需要很清楚的知道,背後的理论 与 实作的方法。
只需要知道 「有这个东西」,大脑中先有个模糊的形状,就是这一步骤要的目标。

未知的未知:
    先去知道自己还有什麽不知道,才会知道自己需要知道什麽。

我的作法

  • 打开浏览器,使用搜寻引擎,「开始搜寻」

我通常会把搜寻到,看起来可能有价值的网站,记录在分类的资料夹内

001-1.folder

编号 000-2 结尾为 ref 的 Markdown 文件

001-2.ios-ref

ref 代表的是 reference 参考资料

001-3.ios-ref

当下次需要使用时 就可以打开档案 快速访问


第二步: 确定范围

第一步的延伸,「概略」了解了整个知识领域的内容後,再来就是要界定学习的「范围」。

因为,一个主题的背後,通常还会有更多延伸的子项目,如果打算全部学下来

除了很困难以外 在实务上也没有必要

「快速」学习的原因

80 / 20 法则 :
    只先学习最重要的 20 %
    就能完成 80 % 要达到的目标

速度

教材少了 80% 速度也会快了 80 % (学习不要从封面到封底)

我的作法

将先前查找资料时,发现看起来是重要的 20 % 关键字词,

记录在 编号 000-3 结尾为 data 的 Markdown 文件 :

002.data

data 代表的就是资料

以供後续资料查找时可以快速浏览。


第三步: 定义目标

会去学习新的知识或者新的技术,一定是有一个想要达到的目标

这个最终目标,一定还能再拆解成各个小目标:

  • 当任务的目标越小,就越有可能达成;
  • 达成的任务越多,就越有可能成功。

里程碑的意义

人类是一种...
    需要反馈,才能继续的生物
如果,遥遥无期 . . .
    没有反馈,容易放弃

我的作法

我会将我要达到的目标,纪录在 编号 000-5 结尾为 task 的 Markdown 文件

003-1.ios-task

task 代表的就是任务

003-2.ios-task

我会用多选框的语法,来追踪我目前任务的达成率。


第四步: 寻找资源

类似於第一步

  • 第一步骤 - 以「广度」,了解越多的资料越好。
  • 第四步骤 - 以「深度」,能够把你界定的范围与定义的目标,涵盖的越多越好 。

我的作法

通常在官方网站或者技术教程网站,可以找到想要的资源。

Example:

Tutorialspoint

	印度人架设的技术教程网站,里面涵盖的技术资源非常广泛。

004-1.tutorialspoint

另外一个最常见的,就是买一本有附范例的技术书籍

004-2.book

书籍的选购,也是依据第一步的资讯搜集,以及第二步与第三步的分类所决定的。


第五步: 创建学习计画

安排教材资源的学习「顺序」

「顺序」

不一定要依照网站的大纲或者是书籍的目录,

可以互相参考,根据需求自行决定。目的是为了将各个章节,碎片化的知识有系统地组合起来。

支撑

学习计画也将会是「学习」部分的重要支撑,每当学习到有些疲累,快要撑不下去的时候。

看到当初花了不少心血制定的计画,「不甘心」的情绪以及完成计画後可以达成的「未来」,多少又可以带来点动力。


我的作法

我会将我的学习计画,纪录在 编号 000-1 结尾为 list 的 Markdown 文件

005-1.ios-list

list 代表的就是「待办清单」

005-2.ios-list

同样使用多选框的语法,追踪目前计画的达成率。


第六步: 筛选资源

第四步的延伸,为了更符合第五步的学习计画,要再更精简。

删除那些已经有重复内容的资源,删除的标准就是两者相比较 :

  • 质量比较好的留下
  • 质量比较差的移除

我的作法

有时候会省略,因为第四步骤时,有可能就已经完成了。


第二部分:「学习」

「研究」对於一个新的知识领域来说,只会做一次,做完之後,基本上不会再做更大的改动。

第二部分的「学习」: 第七步到第十步

  1. 开始学习,浅尝辄止
  2. 动手操作,边玩边学
  3. 全面掌握,学以致用
  4. 乐为人师,融会贯通

「第二部分」是一个循环,每一个章节的内容,都会套用这个流程,进行学习。

而且可能不仅进行一次循环,对於特别重要的章节 -> 循环往复

不断的「迭代」

直到,融会贯通完全掌握,能够教导别人为止。


第七步: 开始学习,浅尝则止

学习中,有两种容易犯的错误 :

  • 盲目开始,太快行动
  • 准备太多,太晚行动

为了在这两者之间取得平衡,当掌握了最小可以动手操作的知识,就应该马上进行实际操作。

如果先消化完所知的知识,然後再进行操作,
有些不熟悉的知识,会忘记,然後又回头察看。

如此情况

不如就像玩新的游戏时一样,先稍微阅读下说明书,然後就开始。

当遇到不懂时再回来察看,如此就能在两者之间达到平衡。


我的作法

我会在 gitlab 的站台上,建立一个全新的专案,以 SE 结尾命名

SE 代表的是 Sample Example
  • 如果是 Java 的专案,会取名叫 JavaProjSE
  • 如果是 Android 的专案,会取名叫作 AndroidProjSE
  • 如果是 iOS 的专案,会取名叫作 iOSProjSE

006-1.ProjSE

以此类推

006-2.ProjSE

所有初期,类似於 Hello World 的这种基本的语法测试,都会涵盖在 SE 系列的专案中。


第八步: 动手操作,边学边玩

非常相似於第七步

  • 第七步 - 强调的是「开始」
  • 第八步 - 强调的是「动手」

核心概念

在实作中学习

实作时,无须你刻意寻找,很多问题就会自然而然地从脑海中浮现。这些问题会引导你走向正确的方向。

当回头寻找问题的答案时,除了解决问题本身以外,还会比先看教材在实作的流程,理解的更加深入。


我的作法

我会将我发现的问题,纪录在 编号 000-4 结尾为 issue 的 Markdown 文件

007.ios-issue

issue 代表的就是「议题」


第九步: 全面掌握,学以致用

解决第八步时,遇到的问题,方法可以是查资料、看影片、问别人...各种方法都可以。

目的是在你界定的范围内,没有模糊且不确定的地方。

我的作法

我的专案名称,就会扩增到:

  • Util 结尾
  • UI 结尾
  • 特殊功能的代称

008-1.ProjUtil

  • JavaProjUtil 收录 Java 共用的 Util 工具
  • iOSProjUI 收录 iOS 各种 UI 元件的使用范例

008-2.ProjUI

有了这些「工具专案」,要开发新的应用程序时,就不会是从头开始。

甚至一些简单的功能,使用复制贴上大法,就可以直接搞定。


第十步: 乐为人师,融会贯通

一般的学习,通常到了第九步骤,就会认为自己已经学会了。

但要检验是否真的学会,最好的方法:

将所学到的知识教给别人。

唯有此时,才能发现有些地方:

你以为你懂,但其实还没摸透。

而且,要将理解到的知识,组织成别人能够听懂的语言:

一定是对於这个知识,有了更深刻的理解才能办到。

我的作法

除了偶尔 技术简报 以外,还开始做了 Youtube 影片。

Gamma Ray 软件工作室
gamma-ray-studio
Youtube 影片 确实也是他书中的方案之一

其他的还有

  • 部落格文章
  • 线上论坛讨论
  • 朋友或同事对话交流

这些方式,除了能够收到反馈,也能互惠互利,一起成长。


学习是一种类比行为

上述的「十步学习法」,是一种「快速入门」学习新技能的方法,但并不是一种「快速精通」新技能的方法。

80 / 20 法则

剩下 20% 进阶的技术,需要去了解 80% 其他的知识。

想要「快速精通」

唯有走得「稳」 才能走得「快」

关於「学习」

我还有另外一种理解 :

「学习是一种类比行为」   

「道」

不同种类的事物做到极致,背後的道理都是相通的

例如

  • 巴菲特的价值投资:「护城河」的概念,就相似於孙子兵法的「先胜後战」
  • 阿德勒心理学,被讨厌的勇气 : 人世间所有的烦恼都源自於人际关系,就是 人与人之间的「耦合性」问题
  • 组织团队规模限制 150 人的门槛 : 也是一种 员工与部门的「内聚性」问题

未来

要学习的东西肯定是越来越多,如果能够驾轻就熟的使用这项技能,那麽面对未来的挑战 肯定是无所畏惧。

因为 「不会就学」,而且除了「学」 你还知道「怎麽学」!

语录

工程师鸡汤

信念决定思想,思想决定言语,言语决定行动,
行动决定习惯,习惯决定价值,价值决定命运。
						-- 圣雄甘地

参考资料

  • 软技能 - 代码之外的生存指南
  • 个人程序技术学习方案

<<:  RAW和JPG格式要深知

>>:  Electron/Nginx/NodeJS/MongoDB开发HIS之架构概述

来讲讲 Cypher 的 Coding Style 吧

前情提要 除结尾倒数两篇 (゚∀゚) 来看看能不能在今天一次性写完w 现在时间 10/11 aka....

Day 29 Unittest

在做完了程序之後,就要来测试一下是否正常运作对吧。不过当你做完了数十个 API 之後,我相信你一定不...

Day1 跟着官方文件学习Laravel-前言

为什麽会参加铁人赛 因为工作关系需要从零开始接触php,并学习其框架laravel,当时主管问我有没...

(Day 21) ES6 class 语法糖

前言 前面有花几篇介绍了,原型链以及使用建构式、以及使用 Object.create() 建立多层原...

[Python 爬虫这样学,一定是大拇指拉!] DAY19 - Python:Requests 基本应用 (2)

今天要来讲的是,读取送出 Request 後拿回来的 Response。 读取 Response 以...