古语云:欲速则不达。对于编程初学者而言,心态太过急躁,反而越容易丧失信心,放弃学习。格拉德维尔在《异类》一书中更是提出,一个人要成为某一行业的精英,至少需要10000小时的时间。 但Josh Kaufman却认为,你想掌握一项技能,只需要20小时就够了。 难熬的20个小时 Josh Kaufman这样阐述他的观点: 如果我们能在最初的20小时内,熬过初学阶段的不适感和挫败感,我们其实能很轻松的掌握一个全新领域的技能。 20小时有多长,每天花两个小时学习,只需要十天的时间,就可以掌握一项新技能,这一规则适用于任何技能,学习编程也不例外。 看似做起来一点也不难,20小时嘛,也就是不到一天的时间,但20小时想要学成某一技能的前提是,持续的高效率学习,这一点就很难办了,就算是经过刻意练习的高手,每一次进入学习状态,也只能保持1-1.5个小时专注且高效的学习状态。对于普通人来说,这更是望尘莫及。 这还不算刚学时,出现的不适感和挫败感的影响。20小时高效的学习,真不是一件简单的事情。 学习要有仪式感 那么,Josh Kaufman所说的"20小时定律",我们该如何应用到学习编程的过程中呢?我们又该如何保证自己的学习过程,一直是最高效率的呢? 健身这一行当中,有一个很特别的派系,他们被称为"器材党"。什么是器材党呢?简单的说,就是没有健身器材就不想锻炼的一群人。跑个步,没跑步机不想跑,就算是到公园跑路,也要有耳机、手环、跑鞋、运动衣裤一系列设备。 尽管很多人都在鄙视器材党,认为太过花里胡哨,整天迷恋那些健身器材和设备,却忽略了健身的本质,其实不然。 当器材党们穿上运动裤、戴上耳机手环的时候,会有一种特别想跑步的冲动,他会想着如何规范的做热身运动,如何让自己更跑得更科学,效果更好。而没有任何设备的跑步者,这些意识往往比器材党们弱, 这些运动设备,就是跑步的仪式感,它们会给主人一种强烈的心理暗示,将主人的专注力、反应能力、运动能力提升到一个较高的水平。 在报纸还十分流行的年代,父辈在看报的时候,总喜欢冲一杯咖啡或者泡一杯茶,有的还喜欢躺在摇椅上,或者翘起二郎腿,悠闲地翻看着报纸。为什么看个报纸也要有这么强的仪式感? 看报纸是为了娱乐,而无论喝茶还是躺摇椅,都能强化这一目的。 同样,学习也需要仪式感,我们需要来强化学习的这一目的,让自己更加专注的做这一件事。 那么,怎么让学习变得更有仪式感呢? 首先,必须塑造一个利于学习的环境。 美国心理学家菲利普·津巴曾做过一个实验。他让24名志愿者参与为期两周的监狱生活,一半人扮演狱警,一半人扮演囚犯。实验第一天,大家一如往常,认为只是一个实验而已。但越往后,所有人都慢慢进入了状态。扮演狱警的人开始认为这些囚犯真的有罪,开始对他们使用暴力,而囚犯也开始暴动。 令人惊奇的是,等到实验结束时,他们恢复到了自己原先的身份,有些狱警和囚犯,却成了很要好的朋友。 《孙子兵法》多次提到如何借助环境取得胜利,孟母为了孟子能得到一个良好的教育环境,不惜三次搬迁。无数的事实都在告诉我们,环境对一个人的成长,有多么重要。 所以,现在请将你学习的地方好好整理一番,桌子摆上几本书,放上一本笔记本和一支水笔,最后再准备一个杯子,让手机、耳机这类与学习无关的东西,统统远离书桌。 营造出一个浓厚的学习环境,可以帮助你更快的进入学习状态。 其次,打一套太极拳,这并不是在开玩笑。 尽管整个学习过程中,绝大多数人都会产生精神疲劳,但因为久坐的关系,也会产生少量的身体疲劳。所以在学习前,缓慢的运动可以推迟身体疲劳的产生。 美国著名精神病理学佳布利尔证明了,健康状况良好,经常坐着工作的人,他们产生的疲劳,百分百是由心理因素引起的。 长时间学习,并不会产生真正的疲劳,而是由于自己的情绪开始慢慢发生改变,开始产生烦躁、厌倦、焦虑等负面情绪引起的。所以,精神疲劳是可以自我调整的,而身体疲劳,却只能由时间恢复。 这就是为什么W3Cschool建议在学习前,舒展筋骨的原因。但这里面也有一些禁忌,你可以打一套太极拳,也可以做一些舒缓的动作,严谨打降龙十八掌和乾坤大挪移,大量的能量消耗,会产生身体疲劳,估计还没刚开始学习,就已经想到卧室里躺尸了,又怎么可能有利于学习呢? 最后一步,花上两分钟的时间静坐。 静坐需闭上双眼,且心无杂念,什么事都不干,什么声音都不听。用两分钟的时间,感受一下时间的流逝,这两分钟将会无比的漫长,以至于会让自己无比的期待真正学习的开始。 完成以上三步,仪式感已经建立了。 20小时学的是什么 网上流传着一张图,讽刺那些妄想在很短时间内,精通编程的人。 21天都不能完全掌握C++,那20小时是如何做到的呢? W3Cschool一直在倡导和建立一种健康积极的学习方式,反对浮躁和速成。说到这里,一定有人很疑惑:"你们家的微课,学起来很快啊,难道不是速成?" 一个必须解决的问题,出现了。速成的速度很快,高效也会让学习的速度加快,如何区分两者? 这个问题并不难回答,如果学习成果与目标相符,那么这个工具、学习方法就是高效的,如果与目标一致,但往后你还需要费心费力的去重新学习已经掌握的知识,那便是速成。 W3Cschool的微课便是奔着高效的学习去的,当然我们现在还做得不够好。为此,我们在5月份启动了"微课重造计划",将实战引入微课,并且做大量的优化工作,完善课程和新增课程。 与上面的例子相似,21天精通C++与20个小时学会编程,前者追求速成,后者则是追求高效。 而且两者的目标也并不一致,前者追求达到精通的地步,而后者是达到入门的级别。 Josh Kaufman认为,在一个人进入一个全新的领域时,最难渡过的便是前20小时的学习过程。在这一过程中,他必须面对扑面而来的不适感,以及挫败感,这些负面情绪,很容易让人产生厌烦和放弃,如果我们能尽可能的缩短这一过程,在这一过程中,尽可能的掌握更多的知识,对今后的学习十分有利。 修复了一个bug 前文我们提过,精神疲劳是高效学习的一大杀手,我们渴望学习,却没过一会儿就会产生疲劳感,这就像是一个程序员写了几个月的程序,期待它能运行起来时,却因为一个bug,导致整个程序无法运行。 这个bug是一定要被修复的。 日本作家村上春树已经坚持跑步几十年了,这让很多人都疑惑不解,为什么自己跑步总是三天打鱼两天晒网,每次坚持个把月就选择了放弃? 这便是高手和普通人的区别。 村上春树坚持了几十年,无一例外的,每一次跑步,他总是在自我感觉良好的时候结束,这让他对第二天的跑步充满着期待。 而普通人的跑步呢?今天兴致勃勃的开始跑步,跑到感觉很累了才结束,第二天跑步前就心生畏惧,还是很累的时候才结束,如此恶性循环。于是,心里开始产生精神疲劳,每次想到跑步,都倍感压力,自然坚持不了多久。 人,是一种喜欢舒适的生物。 学习编程如是。当我们学到一个十分难的知识点时,想破了脑袋也无法解决时,就想着,算了,明天再学吧。第二天,刚开始学习,难题又摆在眼前,学了一两个小时,难题又出现了,最后还是想,算了,还是明天再学吧。 精神疲劳便产生了,大脑开始认为,学习编程是一件很累人的事,渐渐地就趋势身体,不要去碰它。 学习编程,应该给大脑留下一个好的印象。在我们完成规定的任务量时,在自我感觉良好时,主动的结束本日的学习,就会让大脑产生愉悦感。第二天,这种愉悦感会接着来,最后再以同样的方式结束学习。这时你的大脑觉得,学习编程会让自己感到高兴,自然而然的更愿意坚持下去。 高效学习345 学习要有仪式感、让大脑充满愉悦感,都能让学习变得高效。高效的学习同样离不开以下几点。 不是"把学的东西用起来",而是"为了用而学。" 早期智人发现火可以让食物易于咀嚼,而且会变得更美味,所以才费尽心思想要保存火,这才有了后来的砖木取火; 因为战争需要,爱因斯坦才研制出了原子弹; 假如反过来,智人学会砖木取火,才发现它可以使食物变美味,爱因斯坦研制出了原子弹,才发现它可以用于战争,这是无法想象的。 永远不要把学习本身当做目标,学习只是为了让自己能做某件事。 多次回忆,重复复述 著名的费曼学习法认为,如果你能将所学的知识,讲述给一个小白听,他如果听得懂,就证明你学会了。有研究表明,在学习后,大脑会在很短的时间内,遗忘掉70%的内容,多次回忆会不断的强化大脑记忆。 学习了一个for循环,试着讲给你的朋友听,如果他听懂了,就证明自己学会了,如果身边没有朋友在学编程,也可以讲给自己听,看看这样的描述,自己是否能听懂。 闲暇时间,回忆一下自己所学到的知识,同样能巩固记忆。 找一个或一群志同道合的朋友一起学习 社会发展理论认为,合作是一种有效的学习方法。他会给你施加无形的竞争压力,督促你更加努力的学习。而当你学有所成时,又可以向他人炫耀,增加成就感。 文末,W3Cschool真心希望,无论现在你是在学习编程,还是在学习其他知识,都能坚持下去,摘取胜利的果实。