生活中的一句话:“道理都懂,但依然过不好这一生”,常常用来形容自己看了很多文章,听了很多培训,参加了很多会议,懂了不少道理,但是依然过得浑浑噩噩。包括我自己,以前每年会计划看多少多少书,但是最后发现书架上有各种类型的书看了不少,但我还是那个我,发现并没有什么大的变化。做企业测试内训和ISTQB认证培训过程中,有时也会碰到类似的场景:你说的这些测试概念和理念我们都知道啊,测试流程、测试技术和测试管理等方面来来回回就这些内容,我们公司内部都有。但是我们希望你讲得内容能够和我们业务结合,我们要直接落地,要落地,要落地!而我只能是一脸的懵逼和无奈:测试知识确实是很常见的,很普通的东西。
人们总是寄希望于有个什么特别或神秘的东西,它可以让我们在很短时间内达到自己想要的成就,得到自己想要的东西,让我们跨过最重要的努力和刻意练习阶段。这也是为什么《XX速成》、《7天精通XXX》、《21天攀上XXX》等书籍畅销的原因。很可惜,这样特别的东西是不存在的。追求这些所谓的“鸡汤”,对我们的改变基本上没有什么卵用,只是表明了我们内心浮躁和焦虑的状态,因此没改变是很正常的。假如靠这些所谓的“鸡汤”,只是随随便便看了几篇文章,听了几天课程或者参加了一场会议,然后一夜醒来就成为了某个领域的大师,只能说这样的世界太可怕了!!!
上面只是我的一点吐槽,大家看看就好。
作为在测试行业混迹超过17年的测试混混,还是希望能写一些文章,能够帮助到一些刚进入测试行业的新人。今天和大家谈谈高效学习方法之一的“费曼技巧”, 如何通过费曼技巧高效学习和掌握我们的软件测试知识。
理查德·菲利普斯·费曼(Richard Phillips Feynman),美国犹太裔理论物理学家,量子电动力学创始人之一,纳米技术之父,1965年获得诺贝尔物理学奖。关于费曼其人其事,大家可以通过网络去了解更多。本文包含下面几个方面的内容:
一、什么是费曼技巧;
二、基于费曼技巧的学习过程;
三、费曼技巧为什么高效;
一、什么是费曼技巧
费曼技巧作为高效学习的一种方法,其强调的是教学相长,通过教学促进学习的学习策略,属于主动学习的范畴。简单而言,费曼技巧指的是:当你在学习任何知识时,如果你能用简单的话和自己的话,没有专业术语的情况下,可以向不同的听众解释清楚,那就说明你把这个概念搞清楚了。更粗暴一点的解释:说人话。当你用人话说出来,并且其他人听得懂“什么是什么”时,说明你对概念把握的很清晰、很准确了。
二、基于费曼技巧的学习过程
基于费曼技巧的学习过程,其主要的步骤包括4个步骤:概念选择、知识学习、场景米,以及简化/可视化。具体见下图:
我们以学习“软件测试的定义”为例,阐述基于费曼技巧的学习过程。
STEP1:概念选择
确定学习目标,作为刚入门的测试从业人员,想学习什么是软件测试的定义。尽管每天都能看到软件测试书籍或文档,或者每天都在做软件测试相关工作,但详细的测试定义却并不是很明确。拿出一张白纸,在上面写下“软件测试的定义”几个字,这就是你将要马上学习的概念。
STEP2:知识学习
选择概念“软件测试的定义”之后,接下来需要找到“软件测试的定义”相关的资料进行阅读,尝试记住并理解不同资料提供定义的含义。其中收集的资料包括:
资料1:软件测试的经典著作《软件测试的艺术》(The Art of Software Testing)给出的测试定义:程序测试是为了发现错误而执行程序的过程。
资料2:IEEE 610 - 1990标准中提供的测试定义:在规定条件下运行系统或组件的过程,观察和记录结果,并对系统或组件的某些方面给出评价。分析软件项目的过程。检测现有状况和所需状况之间的不同,并评估软件项目的特性。
资料3:ISTQB基础级大纲中提供的测试定义:测试是一个由生命周期内所有静态活动和动态活动组成的过程,这些活动包括计划和控制、分析和设计、实现和执行、评估出口准则和编写报告、测试的结束工作以及对软件产品和相关工作产品的评估,其目的包括:发现缺陷、增加信心、提供信息和预防缺陷。
通过对上面资料的学习,接下来需要回答的一个问题:你是否理解了软件测试的定义?已经理解到什么样的程度?此时就需要通过步骤3进行检验。
STEP3:场景模拟
模拟你自己就是一位软件测试方面的讲师,面前坐着一位刚入职的测试新手,正望眼欲穿地要听你讲解软件测试定义这个概念。根据你的理解,用你自己的话,将测试的定义一字一句的解释给学员听。判断一下,是否能顺利得讲解下去?是否能解释清楚?讲解过程中是否会卡壳?发现自己还有不明白的地方?没有关系,这很正常。
将卡壳的内容,或者自己也不理解的内容都记录下来,重新返回到STEP2步骤,逐步将这些内容梳理和阐述清楚。
步骤STEP2和STEP3是一个不断迭代不断反馈的过程,不仅可以作为检验自己学习效果的反馈机制,也可以检验他人的经验和能力。学习对象(本文指的是软件测试定义)通过步骤STEP2和STPE3得到不断的分解,类似于开发过程中对软件产品的不断分解和测试过程中对测试对象的不同分解,直到分解到我们可以掌控的颗粒度为止。例如:针对软件测试的定义,我们以ISTQB基础级大纲中提供的定义为例,你可能在学习过程中不了解“静态活动”、“动态活动”、“测试实现”、“工作产品”等概念,同样你把它们记录到白纸上。作为一个小的迭代,继续循环步骤STEP2和STPE3,直到将其中的每个小概念都弄清楚,再将它们集成之后就可以对整体的软件测试定义有更深入的了解。
假如将费曼技巧的学习过程看成是一个瀑布模型,那么其中的步骤STEP2和STPE3是其中的增量迭代开发,甚至是敏捷开发模型:更关注个人的主动学习和自我管理,不断理解的软件测试定义细分概念(不断提供可工作的软件工作产品),通过不断收集和反馈模拟授课的信息以改进学习知识过程。
那么,我们可以对软件测试的定义进行解释,是否就可以了呢?再想想:我们是否可以用更简单语言进行解释?甚至是通过可视化的方式表达出来?
STEP4:简化/可视化
对于刚入门的测试新手而言,即使我们可以按照ISTQB基础级大纲中提供的软件测试定义进行解释,他们也还是有可能听得一知半解。我们是否还能有更简化的方式,或者图示的方式,让测试新手理解的更加牢固?这就是简化和可视化的过程,再高深一点的说法就是可视化思维。可视化思维不仅能对学员的学习上有明显的促进作用,而且可以帮助提高我们的创造能力。高效的学习过程应该是将隐性的内容显性化(不断理解的过程),再将显性的零散内容结构化(结构化思维的过程),然后将结构化的内容可视化(画图即思考的过程)。
三、费曼技巧为什么高效
费曼技巧在学习实践上有很高的价值,也有许多人从中受益,最著名的例子,应该就是Scott H.Young,他利用费曼技巧,在一年内自学完MIT计算机专业的全部33门课程。那么,为什么费曼技巧在学习方面有这么高的效率?我觉得至少可以从下面几个方面考虑:
1:符合大脑的认知规律。大脑认识世界的过程,有点类似于盖房子的过程,需要一层一层往上盖的,不可能存在不需要地基和前面楼层的空中楼阁。同样对于软件测试知识的学习,也需要这样一个过程:从记住软件测试的定义开始,逐步尝试理解测试的定义,再到将测试定义应用的测试过程中。同样对于测试的培训过程,假如想要将测试技术或理念落地,其前提条件是不仅要记住相关的技术或理念,同时理解它们的具体含义以及适合场景,然后再尝试应用到你的测试上下文中,没有前面两步作为基础,那测试的应用就是空中楼阁。
2:训练大脑的思维过程。假如按照我们大脑的自然属性,其思维过程必然是自发性的、发散性的、无自律性的。因此我们的大脑就像是一匹野马,我们必须要学会控制它。而费曼技巧有助于控制我们的思维过程。首先,费曼技巧明确了目标,我们要学习什么概念,或者要解决什么问题;其次,提供了检验的标准,我们是否可以通过自己的语言将概念解释清楚;确定了目标和经验的标准,通过在学习过程中的不断迭代和不断反馈收集的信息,我们就可以知道我们当前的状态是什么,与目标之间的差距在哪里,是否需要采取控制措施以应对目标与当前状态之间的偏差。这里就涉及到大脑中的理性人与感性象之间的平衡,而费曼技巧类似于理性人手中的缰绳,有助于控制感性象的自由散漫。
3:思维结果的可视化。我们在学习过程中一定要把重要的内容和关键词写下来,而不是在大脑中想。因为大家都知道,我们大脑的短期记忆(工作记忆)容量是非常有限的,有点类似于电脑中的内存;大脑本身更重要的工作应该是思考,因此为了优化使用大脑,将学习过程中的重点写下来,让大脑腾出空间,做更重要的事情。记录的过程,在我们的大脑完全记住概念或知识使之成为长期记忆之前(类似于电脑中的硬盘),可以作为我们长期记忆的有效替代。
4:满足金字塔学习原理。费曼技巧更强调通过教学促进学习,鼓励的是主动学习过程。通过费曼技巧的模拟教学,可以使学习的吸收率达到90%,也就是属于学习金字塔原理中主动学习的最高一级。因此,在测试培训过程中,我经常会要求学员在上课过程中,努力做到:听进去、写下来并讲出来!不过,从实践过程看,做到最后一个要求是挺难的。下图是学习金字塔原理结构图。
根据上述的费曼技巧描述,可以看出其过程是大脑对学习的内容不断记忆、理解、应用和教授的过程,是大脑从混沌走向有序、从零散走向结构的过程。混沌和零散是因为尽管在你的大脑中已经有相关的知识或信息,但是没有经过结构化分层和分类形成系统化的框架。而大脑从混沌到有序再到系统化,是我们不断的追求,没有止境,即没有最好,只有更好。
不管是自学过程中的费曼技巧模拟授课过程,还是测试培训过程中的转教别人,其目标都是为了快速学到知识和概念,并不断应用到实际的测试过程中,去解决测试过程中碰到的各种问题。但不管是学习知识还是解决问题,都是需要一个过程和时间累积的,在科学的训练方法的基础之上,通过不断努力将知识转换为能力。
我不知道一个人是否真的只是看看书,听听别人的演讲或观点,就能真正悟道。如果有,我非常好奇他是怎么做到的。作为测试从业人员,除了需要不断阅读和学习测试相关知识之外,还需要我们放下书本,不断去观察、模仿、实践、反馈、总结、再创新,把学到的或者听到的内容真正转变成你自己的东西,形成能真正解决问题的测试知识体系架构,这才是我们学习的目标!
下面两张图是关于费曼技巧,我自己的总结框架,也算是对费曼技巧的简化和可视化过程。