美文网首页深度思考
《程序员的思维训练》3|专家的练习

《程序员的思维训练》3|专家的练习

作者: 王双_c261 | 来源:发表于2020-03-29 12:54 被阅读0次

    原创 精进学思行 精进学思行 今天

    《程序员的思维训练》1| 小白到专家,你在第几级?《程序员的思维训练》2| 你的大脑有调试过吗?中,我们分享的从新手到专家的5个层次,以如何使用我们最重要的工具——大脑,特别是其中的R脑的使用。本文是这本书的最后一篇分享,也是回答我们最后关心的一个问题:

    如何通过主动学习,积累经验和控制注意力实现进阶?

    1 主动学习

    1.1 什么是主动学习?

    正如现在流行的“终身学习”一样,持续学习是从新手成为专家的必经之路。作者特别强调学习的主动性,为了加深理解什么是主动学习,我们看看一个典型的被动学习,作者将其成为“羊浸”式学习,所谓“羊浸”,就是为了除掉羊身上的寄生虫,会把羊赶到一个有消毒液的水池中,对它们进行突发而快速的清洗,当然,过两天之后发现药效消失,再来一次。这个就像参加培训,如果你是被要求参加,而你自己也只是应付性地走个过场,短期来看,好像学到了东西,但随着时间的推移,它的效果会消失殆尽。

    所以,为了能够达到持久而有效的学习效果,我们需要主动性学习。所谓主动性,首先是意识上转变,从"要我学",变成"我要学";其次,要主动利用学到的知识;最后,学习一定要系统性,且建立清晰的反馈,我们重点分享一下第三点。

    1.2 学习是一种投资

    作者建议我们把学习当做投资,这里不是强调学习的重要性,而是我们要像做投资一样学习,也就是要投入的产出比,要资源的配置。所以,我们要带着目的去学习,我们希望解决什么问题,为了达到目的,我们需要留出相应的资源(主要是时间和精力),而不能把它看成我们“闲下来”才能做的事情,因为你会发现,你的空闲时间很少。

    1.3 只有大纲不够用

    有了资源投入,我们就需要考虑学习的系统性,首先跳入我脑海就是提纲,比如某本书的目录。我自己是大纲的重度爱好者,读书期间,我就喜欢通过列大纲的方式,加深对知识点的理解和记忆,这种方式让我对所学的知识有比较清晰的脉络,也让自己在沟通中表现地比较有条理。

    但是,书中提到一个观点,让我深有感触,作者提到知识的提纲的确有用,但对于我们解决具体的日常工作问题,贡献有限。就像你看到一本书,如果你只是比较清楚它的目录,但是对于里面提到的具体的理论,工具和应用方法理解不透彻,或者说没有应用过,那么你顶多只能算条理比较清楚,但是碰到具体的问题的时候,常常捉襟见肘。怎么解决这个问题呢?

    作者建议,我们要结合具体的场景,针对具体的问题,基于相关知识,利用大脑构建模型,用模型去解决问题,在这个过程中,获取反馈,修正模型,内化经验。

    1.4 反馈很重要

    在上面的过程中,一个关键的部分就是要能够获得反馈,不断调整和调试我们自己这个系统。如何获得反馈?书中提到两个重要的建议:设定目标和测试驱动。

    为了获取反馈,前提是我们要有一个参考,而目标是其中一个重要的参考,关于目标设定,一个重要的原则就是SMART,这个原则有很多的介绍,这里不详细阐述,作者建议利用这个原则制订我们的学习目标和计划。

    这里重点强调一下测试驱动。什么是测试驱动?读书期间,我们要参加大大小小各种考试,虽然是为了应试,但是这对我们学习知识本身是很有效的,因为通过测试,能给你提供及时的反馈,会就是会,不会就是不会。进入社会后,针对学习,没人给我们这种显性化的测试,这个时候,我们更要主动的去创造测试的场景,不一定是考试,比如利用知识去解决具体的问题,如果能够很好的解决问题,而且能够讲清前因后果,说明你很好掌握了;或者通过你的知识去构建一个东西,看是不是实现了你想要的功能或性能,也是一种测试,最典型的就是通过仿真或编程来检验自己的掌握程度。

    1.5 阅读的SQ3R法

    作者强调,我们人类其实最擅长的学习方式是观察和模仿。所以,如果你周围有一个人是你想学习或模仿对象,那么观察和模仿他,是比读书更直接,更高效的方式。但是,我们不一定总能找到这样的人,所以通过文本(比如书籍)阅读依然重要,那么如何提高这种方式的学习效率呢?作者推荐了阅读的SQ3R法,它们分别指的是:

    Survey:概览,了解一个文本的主题和结构,比如书的目录和章节,建立整体的认知;

    Question:了解作者想要回答的问题,列出你自己非常关心的问题;

    Read:阅读相关的内容;

    Recite:用自己的话把它讲一遍,就像我现在写这篇文章一样;

    Review:经常的回顾和提取,特别当你在另一个地方遇到类似的主题时,重新回顾,建立它们之间的连接。

    2 积累经验

    前面重点介绍的是如何通过积极学习掌握知识,这个部分重点分享如何通过和情景的互动,应用知识,积累经验。

    2.1 应用知识

    如何应用知识?两种方法:分解法和举一反三法。

    分解法就是把大问题拆解为小问题,通过解决小问题,合成形成大问题的解决方案,典型的方式如我们在金字塔原理:结构思考,清晰表达分享到的。

    举一反三法,就是面对新的问题,想想有没有解决过类似的问题,或者类似领域的问题是不是可以借鉴过来。我们将理论和现象(对应前面的问题)和原理作为一个2×2的矩阵,就容易理解,从原理到原理叫做理论推导,从原理到现象叫做技术应用,而从现象到原理属于科学研究,从现象到现象叫以形补形,或则类比。

    这个图给我们启发就是,我们至少可以有如下的几个举一反三的角度:

    这个现象或问题的原理是什么?

    这个原理还可以用在哪些相似的地方?

    和A问题类似的B问题是什么?解决B问题的机理和方法是什么?这方法可以用来解决A问题吗?

    从A原理出发,可以得到的推论是什么?(有点像数学中的公里和推论)

    通过这种方式,能够拓展我们解决问题的思路。

    2.2 利用失败

    我喜欢作者在书中用到的一个词“调试”,比如我们给机器输入棋谱,训练出能够打败人类顶尖冠军的阿尔法狗。如果将生命比作一个系统,要让系统更好运作,也是需要不断调试的,既然是调试,就意味着在这个过程,我们会遇到错误,而犯错和纠正是调试系统的正常过程。所以,我们不需要害怕在实践过程中犯下错误。但凡你所做的事情有一定的挑战性和难度,在做的过程中就会犯错,如果你没犯错,说明你没在做事儿,而是在做梦。

    犯错有代价,重要的是我们要知道到底发生了什么,哪地方做错了,可以怎么样去纠正这个错误,优化我们的系统,而不是掩盖错误。在这个过程中,有一个允许犯错的学习环境非常重要,在这个环境,至少要鼓励三个事情:探索,创造和应用。

    为了营造这个环境(自己可以创造),有三点提醒:

    ①自由。这里不是说做什么就做什么,而是由探索的空间进行尝试,有点像产品开发中的概念设计,通过模型去测试方案。这让我想起了我很喜欢的一部美剧——《西部世界》,在第2季当中,女主"多美丽"进入了园区的虚拟空间,后台系统为她展示了复制人类的过程,他们会建立大量的模型,测试不同算法和参数影响,从而判断哪一个版本能更好的去应对现实世界。

    ②版本。他特别强调要保留每个阶段的版本,有一个形象的比喻,就像在登山的时候,一定要在岩壁上留下固定桩,能够保证我们从某一个点尝试错误之后,不至于一次跌入谷底。这非常像我们在《精益工作法》:去掉不创造价值环节中分享的“PDCA+标准化”,标准化就是讲当前最佳实践规范化,从而保证即使一步失败了,还能回到最近最好的状态。

    ③进展。每次尝试,要能清晰判断尝试的结果,是前进了,还是后退了了,这就需要量化我们的结果,有时甚至要提高量化的颗粒度和分辨率。

    2.3 内在诀窍

    这个部分对我启发很大,它回答的是我们如何从自身的实践当中学习,核心观点:我们要通过有意识的感知,而不是详细的指导手册去学习。

    作者举了一个例子,一个叫葛维教练要在20分钟内教会一个50多岁的女士打网球,如果用传统的方法,就是从最基础的分解动作训练,肯定是达不到目的。所以,这个教练只告诉这个女士,“弹起,击球”,模仿动作,告诉她听球拍和球撞击的时候发出声音,如果声音比较悦耳清晰,就说明她的击球是正确的。

    我自己打羽毛球也有类似的体验,当快速击球争取的时候,能够听到很清脆的“嘭”的一声,如果声音比较闷,且脱离带水,通常击球就不好。

    所以作者总结下来,我们要通过自己的有意识的模仿,感知和调整,而不只是通过很详细的指令来做事,毕竟我们不是机器人。

    当然这里面有一个非常重要的前提,就是我们从情境当中获得的反馈要有两个特征:简单直接和非常紧凑。简单直接,就是我们能够很直接判断结果,非常紧凑就是反馈要即时。这样的话你才能够快速调整。

    3 控制注意力

    3.1 管理知识

    现在我们会接收大量信息,你也会保存很多认为有价值的知识,我们要主动去收集,整理和组织。这里面很重要一点,就是要主动用一个外在的工具和系统去收集各种信息,有意识的去加工和提炼,转化成为更具体的方法。作者推荐个人wiki工具,这种工具可以方便建立不同信息之间的超链接,我自己一直在用印象笔记,它不仅支持内容之间的相互链接,同时还有很强大的标签和检索功能。所以,对于我长期关注的某一个话题内容,我总能第一时间找出相关的很多资料。

    3.2 优化情景

    为了控制我们的注意力,我们要优化情境,因为场景的频繁切换是注意力杀手。什么是情境?所谓情境,就是在一个一定的时期内,短期记忆当中所有信息的集合。比如,你现在如果要写一个报告,所有跟这个报告相关的信息,这就是一个情境,而你非常喜欢看的一部电视剧和电影,是另外一个情景。

    大脑有一个非常重要的特征,不同的情境之间切换成本很高,有研究表明,不同的情境之间进行切换,生产力会下降20%。这里面所说的切换情景是指的是不相关的情景,比如说你从看电影切换到写报告,这也是为什么在知识性工作者,如何更有成效?,我们提到的时间要整块利用的原因。

    我们可以通过优化我们的情境,控制我们的注意力,而不是让它耗散掉,原理就是把相似的情境放在一起处理,甚至专门建立单独的处理空间。比如沟通类,如邮件,即时通信工具等放一起;写作时,写作工具,写作素材放到一个空间;编程类的,放到3个空间。

    通过这样的方式,把相似的情景融合到一起,尽量降低我们情境切换的影响,而不是在邮件回复和报告之间频繁地切换。

    总结

    基于对大脑的认知,我们可以从主动学习、积累经验和控制注意力三个方面训练我们从新手到专家。综合之前的分享,我的理解是,我们是双CUP(R脑和L脑)系统,这个系统可以通过和情景互动,利用互动中的反馈来调试和优化系统,从而建立快速而精准的直觉(专家的典型特征)。

    延伸阅读:

    1《程序员的思维训练》1| 小白到专家,你在第几级?

    2《程序员的思维训练》2| 你的大脑有调试过吗?

    3《精益工作法》:去掉不创造价值环节

    相关文章

      网友评论

        本文标题:《程序员的思维训练》3|专家的练习

        本文链接:https://www.haomeiwen.com/subject/cugyuhtx.html