# 1.3 教学方法

整个**课程设计基于学习参与**的三种方式：

> 1. 带着问题，**探究式学习**。
> 2. 自发主动，**自主学习**。
> 3. 指南不如匠人，**社会化学习**。

## 探究式学习

什么是定向思维？

![](http://wy.codingirlsclub.com/blog/2017-05-24-strategy_DRTA.jpg)

> 定向思维，与发散思维相对，以基础为“经验”，在动力定型驱使下的按照既定方向或程序进行思维的活动过程。
>
> 但淋雨或、洗澡或开车时候在我们脑海中闪现的随机想法称作不定向思维，它不同于有目的的定向思维。

虽然，许多失败都缘于定向思维，但技能学习不同。**在新进入技能领域之前，带着一个有经验前辈写下的关键问题，新手不容易迷茫并有能在浩瀚的概念中有定向前行。**

* 带着问题流量使用工具、软件的网站（例如上面安装软件，我们并不是简单地让大家下载个软件而已，而是注入了需要思考的问题）
* 带着问题看阅读材料
* 带着问题做练习
* 带着问题观察身边其他人

## 自主学习

如果你本身在互联网行业，恰巧身边有就有很多程序员。你会发现一个事实：**『程序员的编程技能都是自学成才！』**。不管是科班出身还是非科班出身，他们更多的人愿意将自己获得的编程技能途径定义为「自学」。

正如Alvin Toffler所说

> 21世纪的文盲不再是哪些不会读书写字的人，而是那些不会学习，忘记所学，以及不能温故知新的人。

如果，你有这样的口头禅「告诉我，你想要我学什么，我就学给你看」，你可能不适合编程，因为我们希望你能「自己教自己」。

当你证明自己可以成为自主学习者，可以独立思考，可以找到和发现有效运用所学知识解决显示世界中难题的方法，你的*自信心会得到极大的提升*。自我获得力量增强的感觉，驱使自己为了未来而继续学习。

但要是失败了呢？失败是痛苦的，但是却也可以转化成一种有意义的学习经历。 当你认识到做错了事情并知道下次怎样可以做得更好，你也获得了一种*强有力的终身学习的技能*。

### 自主学习的八项技能

* 找出并评估有用的信息来源：信息源头不正确会导致一系列错误，例如我们阅读材料尽量只是W3School、维基百科等第一手文档，而不是其他二手加工过的资料。
* 在有用的信息源中辨别出重要的信息：设定阅读目标、找出中心思想和重要细节
* 以有意义的方式组织信息: 用[Cmap](http://cmap.ihmc.us/)画概念图
* 撰写日志和博文：写作输出是最好的知识管理
* 安排好时间：第一要义是 **时间哲学**，可参考文章 [「感觉身体被掏空」到掌控世界 -- 上班族一周如何拿出15小时学习](http://sundevilyang.com/posts/47051/)
* 背诵最小核心知识：**把经过历史和经验反复验证的知识概念深入到自主心智**。如果一个成年人还跟小学一年级的学生一样，需要去理解为什么三加四等于七，而不是把此概念作为本能反应出来，那么他是无法和别人竞争的，因为效能太低。而我们为了能够提高学习效率，必须在学习过程中记住一些关键知识。
* 运用问题解决体系
* 监督自己的学习（元认知）

## 社会化学习

> 教是最高形式的理解。
>
> 告诉我，我会忘记。给我看，我会记住。让我教，我会理解。

如果仅仅依靠自己的行动、通过试错来学习，那么学习绝对是一件非常辛苦、费力的事情，而且可能是危险或有害的。

回归学习的本质，人类大多数行为是通过模仿和观察习得的，通过交流、分享、应用、反馈、争论、甚至争辩，最终帮助个体对于某个事物形成较为全面的认知。

因此我们非常有必要，大家坐在一个屋子里，共同完成一些学习。哪怕没有言语交流，只是彼此坐在一起，也是非常棒的“交流”。

## 三个提高思维能力的方法

* 概念图
* 刻意练习
* 费曼技巧
