1.6 学习和解决问题的方法论
我们经常听到很多公司使用方法论这个词,那么方法论是什么呢?
广义的方法论指所有的思维方式,通常包括哲学、逻辑学等。狭义的方法论指解决特定领域问题的方法,比如面向对象算一种方法论。
方法论的起源可以追溯到笛卡尔的《谈谈方法》一书,在这本书中谈到了一些理解复杂事物和解决问题的一般方法,对世界影响深远,是众多方法论的基础。
笛卡尔认为,复杂的东西是简单的东西组成的,理解复杂事物就要先要理解简单事物,然后组合它们。如果复杂的事物理解不了,就回到上一步理解简单的东西,直到彻底被理解后再尝试理解复杂的事物。
分析一个问题,设计一段程序,策划一场活动,甚至只是学习一门技术,都可以按照这种思维进行。分解任务,然后一步一步完成,看起来是最慢的路线,实际上是最快的路线。"大道甚夷,而民好径"也说的是这个意思。
分解可以用作两个地方:学习新的知识和解决困难问题。
对于学习新的知识来说,学校教育最大问题是学习的阶段是固定的,不同认知能力的学生根据年龄分班,导致的后果是学习速度快的学生没有及时的投喂新的知识,学习慢的学生每个阶段都会欠债。
欠债是学习最大的杀手,俗话说就是基础不牢,但是有时候什么是基础这件事情不太好定义。总而言之学习的过程需要逐步铺垫,缺少背景知识会造成了很多学生无法理解新的知识以至于形成厌学的心理。
符合认知的学习方法是:在彻底理解一个知识点之前不要开始下一个知识点的学习,通过大量的练习彻底习惯使用前面的知识点解决问题(做题),然后再用前面的知识解释后面的问题。就像不理解函数的人难以理解导数,更不用说微积分了。每一次新的知识的引入都是在拓展一个人的认知边界,超出认知边界越多学习就越困难,当然学到的新东西也越多,学习曲线也越陡峭。反之,引入新知识越少也就越容易吸收,但是也会显得无聊。
总之,我们只能通过已经存在的认知范围和新的知识重叠的部分来学习,完全超过认知边界的内容我们是无法理解的。这就好比,一个已经消亡的文明留下完全未知的语言我们难以破解,就是因为找不到和现有认知之间的联系。
学习阶段的固定这个是社会资源客观决定的,不可能所有人都有条件通过私教定制课程和教学计划,所以在自学的时候就需要认识到这一点。
笛卡尔在《谈谈方法》中介绍了几个简单的过程:
尝试分解复杂的知识,从最容易的部分学习。 尝试分解复杂的知识,从最容易的部分学习。
基于容易的部分向复杂的内容拓展。 基于容易的部分向复杂的内容拓展。
当复杂的内容无法理解时,回头看容易的部分,确保彻底理解前置内容。 当复杂的内容无法理解时,回头看容易的部分,确保彻底理解前置内容。
重新尝试理解复杂知识。 重新尝试理解复杂知识。
对于我们学习编程或者新的计算机语言来说,找人推荐一本靠谱的 "Step by Step" 的书,一般这类书都叫做 《xxx Cook Book》之类,一步一步练习每一个阶段的例子,如果无法理解时,回去看前面的知识。
当然,这种方法需要两个条件:1. 这本书靠谱 2. 大量的练习。
对于解决问题方面也是类似的,如果我们没有大量的背景知识和经验,解决起来非常困难。尝试去请教一个熟悉此领域的人对问题进行分解(或者自己完成),将问题分解到显而易见的时候,再尝试解决这些问题。
操作的过程中,将这些分解的子问题写到纸上(一定要写下来或者使用笔记软件)。一步一步尝试解决这些子问题,如果问题还是无法解决,就继续尝试分解。当解决完子问题后,将这些问题合并起来。
如果一些场景下问题难以被分解,就进行假设。不要预设解决方案,将问题或者假设统统地写下来,无论它看起来多么不现实。最后在逐步的对这些问题进行一一验证、排除,直到找到答案。
这就是: "Put everything on the table" 的思想,有时候会发现合适地解决方案往往意想不到,或者被思考的早期阶段否定了。