如果你按照我上一篇文章所展示的学习方法去学习一门新技能的话,不管是区块链,还是一门新编程语言,一周时间足以让你上手。我学习区块链从不会到学会就是用了一个星期左右,每天上下班路上学一个小时左右,晚上学两个小时左右,周末每天也是差不多三个小时,总共就是用了差不多21个小时,从0到1入门了区块链领域,之后就是不断精进了。而且我是从全局视角去学习区块链的,比一些片面地学了区块链开发半年的人更具有前瞻性。
当然,你也不一定要按照这套学习方法去学习,如果你已经长期在实践另一套成体系的学习方法而且也同样很高效,那就继续按你原来这套学习方法去学习即可,比如@大头龙 同学的反馈式学习法。如果你的学习方法还不够高效,那我建议还是可以尝试下这套方法,毕竟我自己实践过,比我以前的学习方法的确高效很多。
不过,前面几篇文章讲了那么多,主要还是偏向于如何从0到1地学会一项新知识,这方面的学习方法还是比较容易掌握的,操作起来也相对简单。但如何从1到N——即从学会
到精通
,这方面的方法论则不太容易理解透彻,操作起来也更难,所以很多人即使努力了很久,依然很难达到精通的程度。本篇文章主要是梳理方法论,帮助大家先在脑海里形成正确的认知;下篇文章再来探讨,在进阶全栈的路上,我们将要如何实践。
从学会到精通的方法论,简单来说,也就只有两个:一万小时定律和刻意练习。但是,很多人对这两个方法论并没有理解到核心部分,甚至存在理解误区。下面我们就来聊聊这两个方法论。
相信每个人都应该听过一万小时定律,但却不是每个人都对其有正确的认知,不少人其实都存在一些理解误区,下面我会讲几点比较常见的。
一万小时定律是格拉德威尔在《异类》一书中提出来的,简单来说就是:一个人在某个领域想达到专家水平,需要持续经过至少一万小时的练习。一万小时是多久呢?如果每天工作8小时,一周工作5天,那么至少需要5年。而对于一些非常努力的人,则可能3年也可以达到专家水平,即平均每天投入10个小时,包括周末。
对一万小时定律理解的第一个误区就是:只要持续练习一万小时,就一定能达到专家水平。这是将练习一万小时只是成为专家的必要条件错误理解成了充分条件所致。想达到专家水平,至少需要努力一万小时;但不是说只要努力一万小时,就一定能成为专家。如果你总是在做低水平的重复,那你就算重复十年,也无法达到专家水平。不要成为一个“一年工作经验用了十年”的人。想成为专家,这一万小时是需要持续不断地进行刻意练习才行的。刻意练习不同于普通的练习,这个后面再说。
第二个误区就是:想精通每一个细分领域,分别都需要投入一万小时。比如,你努力了一万小时成为了Android技术专家,那么,想再精通iOS开发需要再多投入一万小时吗?答案是否定的。Android和iOS开发都只是工程师的细分领域,有很多细分的能力是通用的,比如编码能力、设计能力和架构能力。你用一万小时已经达到了Android工程师的专家级别,也说明你已经掌握了作为一名工程师的通用技能,再扩展学习iOS,只需再掌握iOS的差异性技能即可。同样的,你已经精通了Android、iOS或H5前端开发,现在要进阶全栈,也并非一定要再努力多一万小时才能达到。
第三个误区则是:将一万小时理解成了绝对值。一万小时只是个平均值,至于具体到个人需要多少时间,还涉及到很多其他因素,比如你的学习方法是否高效、遇到瓶颈是否很快就能突破等。如果学习的方法不得当、效率低,那需要多付出一倍的时间也属正常。
关于一万小时定律,引用《刻意练习》一书对其的描述,其实最重要的就是:在任何一个行业或领域,要想成就一番事业,致力于变成业内的杰出人物,需要付出多年艰苦卓绝的努力。
一万小时定律只是指出了一个人要做到出类拔萃,需要投入大量练习的时间,但应该如何练习,则没有说明。不知道如何正确练习的人,个人能力提升就会非常缓慢,那么就算努力了好几年,依然无法达到精通的程度。知道如何进行正确的练习并持续实践的人,就会不断精进,持续大概一万小时后,终将达到目标,成为卓越之人才。而根据安德斯·艾利克森的研究结果表明,最有效的练习形式就是刻意练习
。
很多人对刻意练习普遍存在一个很大的误区,就是当你的能力已经达到了“可接受”的水平之后,以为只要再多“练习”几年,就一定会越来越出色。就比如说你是个外包程序猿,现在你已经可以高效地独立完成一个外包项目的开发工作了,那你可能觉得再多做几个外包项目,就一定会越来越优秀。但实际上,稍有经验的人都知道,其实你已经停止进步了。这种“练习”,安德斯·艾利克森将其称为“天真的练习”,即基本上只是反复地做某件事情,并指望只靠那种反复,就能提高表现和水平。
刻意练习首先应该是有目的的练习。有别于上面所说的“天真的练习”,有目的的练习更有目的性,考虑更周全,而且更为专注。它具有四个特点:
1.具有定义明确的特定目标
我们在前面的文章也已经说过,高效的学习必须是具有目标导向性的,目标应该要非常明确,不管是在哪个学习阶段,这一点是亘古不变的。有目的的练习,主要也是“积小胜为大胜”“积硅步以致千里”,最终达到长期目标。因此,每一次特定的练习,都应该有一个定义明确的具体目标,要将较大的目标逐步分解成一个个小目标,然后各个击破。具体的分解做法其实可以和我在前一篇文章《002|我是如何学习区块链的》中所做的一样。
关于如何制定目标还有一个SMART原则:
2.需保持专注
练习的时候必须保持专注,达到所谓“心流”的状态。关于心流,是这么定义的:“对所做的事情全身心投入的感觉,心流产生的时候,会有高度的兴奋感和充实感。”怎样才能进入心流,古典在《超级个体》也有提到三点:清晰的目标、即时反馈、技术与挑战的平衡。这三点也是有目的的练习的特点,就不另外再展开了。
3.包含反馈
反馈最好是即时的,直接告诉你是对还是错,根据反馈来准确辨别自己在哪些方面还有不足,以及怎么会存在这些不足,这样才知道如何改进。@大头龙 同学的反馈式学习法之所以高效,主要原因也在于此。
对于编程来说,代码执行的结果就是最即时有效的反馈。不过,对于一些认知复杂度更高且更抽象的技能,比如架构设计,反馈则没那么直接了,这时候最好还是有个导师可以提供指导。毕竟,你自己很难判断所设计的架构是否合理,但优秀的导师则有着清晰的评判标准。
4.需要走出舒适区
前面文章就已经说过,学习的知识,可以分为三个区域:舒适区、学习区和恐慌区。如果是在舒适区练习,你的技能水平是无法获得提高的。要持续不断地进步,最佳的学习方式就是持续不断地在学习区练习。在学习过程中,当你不断将学习区变成了舒适区,就证明你的确在不断进步中。
另外,走出舒适区后,因为都是做以前没做过的事情,难免会遇到一些瓶颈,很难逾越。这时候,通常的解决方案不是“试着做更难的事情”,而是“试着做不同的事情”。就是要换个角度、换个方法,重新思考和解决问题。不过,最佳的方式还是有个导师或教练给你提供指导,而不是靠自己摸索。
还有一点也比较重要,那就是要想办法保持动力。长时间在舒适区外进行大量练习,并不是一件愉快的事情,如果不能一直保持动力,则很难坚持。
因此,简单总结,有目的的练习就是:走出你的舒适区,但要以专注的方式制定明确的目标,为达到那些目标制定一个计划,并且想出监测你的进步的方法,还要想办法保持你的动机。
刻意练习在有目的的练习基础上,还多加了三个特点:
1.刻意练习发展的技能,是其他人已经想出怎样提高的技能
已经想出怎样提高的技能,即是已经拥有一整套行之有效的训练方法的技能。而且,对这些技能也应该存在客观的标准来评价卓越的绩效。在刻意练习的过程中,随着技能的不断提高,相应的训练方法也需要不断升级。
2.刻意练习需要一位已经达到一定水平的导师
优秀的导师自己已经有成功的经验,他不仅知道如何才算卓越,而且也知道如何才能达到卓越。如果你能找到一位优秀的导师指导你进行刻意练习,可以让你避免走很多弯路,无疑能帮助你加速成长。刚才上面也说了,如果你遇到了瓶颈,有导师提供指导是能帮你突破瓶颈的最佳方式,而且导师也能提供即时的反馈。
对于本专栏来说,我就是你们的导师。不过,对于工程师领域,很难一直有一位稳定的导师。其实,还有一位不错的导师就是互联网,通过互联网可以找到各种学习资料和工具,还有各种学习社群。
3.刻意练习包括创建更有效的心理表征
心理表征这个概念不太好理解,按照定义:心理表征是一种与我们大脑正在思考的某个物体、某个观点、某些信息或者其他任何事物相对应的心理结构,或具体或抽象。一个最简单的例子就是视觉形象。例如,一提到蒙娜丽莎,很多人马上便会在脑海中”看到“那幅著名油画的形象;那个形象就是蒙娜丽莎在他们脑海中的心理表征。
心理表征也可以理解为对一些概念模型的理解。高质量的心理表征就会更详尽、更准确。比如,对MVC/MVP/MVVM等概念模型的理解越深,心理表征则越强。
刻意练习其实最核心的目的就是创建更多更有效的心理表征。
简单来说,想做到从学会到精通某一领域,就要持续不断地进行刻意练习,努力个三到五年。时间因素虽然也重要,但更重要的还是练习的过程。要走出你的舒适区,并要以专注的方式制定明确的目标,为达到那些目标制定一个计划,并且想出监测你的进步的方法,还要想办法保持你的动机,而且最好找一个优秀的导师提供指导,遵循一整套行之有效的训练方法。最后要记住,刻意练习最核心的目的是创建更多更有效的心理表征。
快速学习的方法和今日所讲的方法有哪些共通的地方?有哪些差异性?你是如何逐步精进的?今天的方法论具体应该如何实践?