28 我们一起学思维导图
更新时间:2020-06-03 15:51:53
人的影响短暂而微弱,书的影响则广泛而深远。——普希金

1. 前言

《手册》的 “设计规约” 章节,针对不同的情况分别建议使用:用例图、状态图、时序图、类图活动图等各种 UML 图形。这些 UML 图形都是需求分析和系统设计强有力的工具。

然而为何本节先从思维导图讲起呢?

因为思维导图不仅是我们实际开发过程中进行需求梳理一种常见方式,更是我们学习和总结知识的强有力的工具。1

但很多人画思维导图只不过是随手列举或者按照书目章节进行记录,不清楚思维导图应该记录什么内容。

各种内容如何更好地组织在一起,没有充分系统的画图理论,导致画图后很少再去看,画图后印象不深刻。

因此本节先介绍思维导图的相关知识和用法,在后续章节中再介绍各种常见 UML 图的概念和应用。

2. 思维导图是什么?为什么要用它?

2.1 什么是思维导图

我们首先看下维基百科关于思维导图的定义:

A mind map is a diagram used to visually organize information. A mind map is hierarchical and shows relationships among pieces of the whole.

也就是说思维导图是一种可视化的图形思维工具,思维导图通过层级化的方式展示部分和整体的关系。

因此思维导图的核心之一就是拆分,即将整体合理地拆分成多个部分,以便于理解。

2.2 思维导图解决什么问题?

思维导图可以帮助我们从多个角度思考问题;可以帮助我们理清复杂问题的逻辑关系,形成结构化思维。

平时学习知识时更多地是侧重于记忆,相当于拿答案去看题目,总会有中看着就会,实际运用时就忘的感觉。而思维导图则是关键词为导向,通过一个关键词在头脑中提取与其相关的所有案例,并将其归纳总结到思维导图中。通过思维导图构建繁杂的信息和知识网络的关系。

学习观通过机器学习反思人类学习的方法,其中讲到学习需要明确输入和输出,需要通过例子重塑信息和知识的关系(即理解知识),理清关系和拆分知识,验证知识的有效性。

思维导图是学习的一个重要手段,因为思维导图则满足学习的几个重要条件:
图片描述

(此图来源自《学习观》 )

正如图上思维导图所示:借助思维导图我们可以明确问题的输入和输出;可以通过思维导图对知识进行拆分,可以通过归纳的方法去总结知识,也可以通过演绎的方法去运用知识,还可以通过思维导图理清各种知识之间的逻辑关系;可以通过思维导图了解学习内容的本质,通过分而治之的方式将复杂的问题简单化。思维导图的同级知识之间有相互独立性。

在实际的学习和开发过程中,我通常会使用思维导图来浓缩阅读图书的重点信息;使用思维导图来汇总关键的知识点相关信息;使用思维导图来总结编程的主要思想等。思维导图已经成为学习知识和分析问题的一个重要工具。

2.3 思维导图的误区

很多人因为不会用思维导图,而认为思维导图 “没有用”。

画思维导图的常见误区有很多种,最常见如下图所示:

图片描述
思维导图并不是越大越详细越好,思维导图的一个主要目的是压缩知识。

思维导图的知识点之间如果不独立,则压缩知识就不够充分,知识之间的关系就不够明确。

很多人读了很多书,学了很多 “知识” 却不会运用,其本质在于只是见过、记忆过,但是没有真正理解知识。

如果思维导图的知识之间毫无逻辑关系,没有太大意义,无法帮助我们理解知识,无法发挥出思维导图的优势。

思维导图的一大作用就是帮助我们理解知识,寻找知识的关联,形成知识网络,帮助我们加深印象。

随着学习的不断深入,之前的思维导图可能存在错误、遗漏等情况,这就需要对思维导图进行更新,然而很多人即使有新的理解也不愿意去更新思维导图,这样思维导图的价值就会非常有限。

3. 画思维导图

3.1 思维导图工具

俗话说:“工欲善其事必先利其器”。画思维导图亦是如此。2

最常见的思维导图工具有: xmind, MindManager、MindMaster、FreeMind、 iThoughts、百度脑图等。

其中最出名的当属老牌的思维导图工具 xmind,支持多平台,使用简单,主题丰富,功能强大。
图片描述

如上图所示,以 xmind 为例,思维导图的核心组件有:Topic (主题)、Subtopic(子主题)、RelationShip (联系)、Summary(概括)、Boundary(边界)、Notes (笔记)。

其中 主题和子主图是思维导图的核心;边界用来区分不同的概念领域;联系主要用来描述跨层知识之间的关系;概括则将多个知识点汇总为一个;笔记主要用来描述知识点。

3.2 画思维导图的依据

回归概念,思维导图是一种可视化的思维方式,因此画思维导图的目的是帮助我们学习和思考。

设计思维导图的主要依据也就是如何学习的依据即:明确输入输出、将信息压缩为知识、通过例子重塑大脑连接、利用逻辑拆分知识

只有明确输入和输出才能做到 “以终为始”,保证不跑题。

思维导图是知识的可视化,因此应该选取重点知识,从而压缩知识;思维导图的本质是帮助我们理解知识,因此要通过例子来验证输入和输出的关系;知识点之间要尽可能独立,而知识点之间又必然有某些关联,如分类、回归、组合、执行步骤等。

画思维导图时可以和 5w1h 分析法结合在一起,即思考问题是什么 (what) ?为什么 (why) ? 何人 (who) ?何时 (when)?何地 (where)?如何做 (how)。

3.3 画思维导图的例子

3.3.1 归纳法和演绎法

在学习和工作中,可以将共性的知识点总结在一起,如化整为零、化零为整、时间换空间,空间换时间,问题转化、加中间者、通用方案等,这就是在积累经验,理解知识的过程。

当设计方案遇到一些难题时,可以从归纳的知识和案例中得到启发,从而能够做到理论和实际相结合。

通过这种学习的方式,知识就像滚雪球一样越滚越大,知识之间的联系越来越密切,越来越能够融会贯通,理解会越来越好。

如问题转换部分示例如下:
图片描述

再如有计算机科学领域流行一句话:

All problems in computer science can be solved by another level of indirection.

计算机科学的所有问题都可以通过增加中间层来解决。

因此学习时将中间环节或第三方的场景梳理在一起:
图片描述

随着我们读书越来越多,工作中遇到的情况越来越复杂,可以将更多案例添加到此思维导图中,这样就通过一个知识点将不同的知识点串联在了一起。

我们学习技术时还可以结合生活、哲学等,通过思维导图进行总结:
图片描述

通过这种方式就实现了跨学科,跨科目,跨技术的学习,将知识学活。

有些人使用思维导图知识帮助自己 “记忆” 某些具体知识,这有些买椟还珠。

我们不需要一字不差地记忆右侧的某个具体知识点,我们需要的是通过右侧相似的具体案例,归纳出本质的规律,找到根本原因,加深对规律的理解,然后在使用时将其运用出去解决问题。

学习的目的是学以致用,所谓学就是看书,思考等,用就是将学到的知识用来解决新的问题。

通过上述方式构造知识之间的关联,加深对知识的理解,降低记忆难度。当遇到类的情况是更容易想到该知识点,更容易逆向运用到解决新的问题上。

3.3.2 思考

可以使用思维导图总结学习的方法,比如总结如何学习,其中就包括写示例代码、画 UML 图、看官方手册、看技术网站、读源码、模拟设计、调试、抓包、反汇编等。

其中读源码部分的思维导图如下:
图片描述

在不断学习进阶的过程中需要对该思维导图不断丰富,如果我们发现 “读一些源码分析的书” 是一个非常好的方法,可以将其添加到上述思维导图中。

3.3.3 其他

我们可以使用思维导图梳理产品需求的核心要点和注意事项;总结从需求分析到项目上线过程中需要注意的问题;还可以通过思维导图梳理工作中常用的命令,总结学习和进阶必备的图书等。

这种相对比较简单,而且场景不同设计的思维导图内容差异很大,大家根据实际情况去画图即可。

4. 总结

本节主要讲述什么是思维导图,为什么要使用思维导图,画思维导图有哪些依据和误区,有哪些思维导图的工具,并给出了自己的几个使用思维导图的范例。

俗话说:“纸上得来终觉浅,绝知此事要躬行”,希望大家可以通过本节的学习,能够重视思维导图,能够理解并熟练的运用思维导图,积累工作经验,深入理解知识,提高进阶的速率。

下一节将讲解流程图。

5. 课后练习

结合自己的学习和工作经验,使用演绎的思想,整理 “化整为零”、“化零为整” 思想的思维导图。

参考资料


  1. 【学习观 05】思维导图原理:人生与高手之差 ↩︎

  2. 如何设计自己的思维导图画法? ↩︎

}