关于习得甚或精通一门技能,最著名的理论如今恐怕是「刻意练习」,如果非要在这份练习上加上一个期限,那就是:一万小时。
刻意练习是为习得真正的技能所设计的,它和获取知识不同,知识就是那些你知道即为知之,不知即无知的东西,可以通过读书获得。但技能是那些你以为你知道,但如果你没做过,就永远不会真得知道的事情。
如上,刻意练习的首要一点是练习必须在学习区中进行。以程序员的编程技能为例,到了一定阶段,你感觉技术能力提升不了的原因,很可能就在于你每天都在编程写代码。程序员的工作初期基本每天就是编程写代码,在早期你不够熟练时你还能感觉到进步,这种进步就是从不熟练到熟练。但单纯的编程实战其实并不能持续地提高一个人的能力,想想体育运动员,没有一个运动员每天的过程就是参加比赛。
在程序员足够熟练了之后,每天的这种实战型工作就不会再是处于“学习区”的练习了,而是进入了“舒适区”的自动完成。真正的专业竞技体育运动员每天的日常训练都是在“学习区”的刻意练习,而上场比赛则是进入“舒适区”的自动完成。而很多熟练程序员的日常工作则是在“舒适区”的自动完成,工作之外则是另一种“舒适区”的娱乐休闲。
停滞,就是这样发生的。
重复的刻意练习,让我想到了一种数字 —— 无理数。无理数,是一种无限不循环小数,取其无限不循环之意。
刻意练习的关键点之二,有针对性的重复练习。重复,这个词很误导人,重复的本身是练习过程,而非练习内容,每一次的重复过程中都会根据反馈进行有针对性的调整,以取得练习效果的进步。
一直在重复但却感觉不到进步,除了前面所说的脱离了“学习区”的低效重复,还有可能是重复的次数还不够。有时我们会不自觉地低估了习得一项技能所需要的重复练习次数。近年在我身上就有一个鲜活的例子,在工作十年后我重启了学习掌握英语这门技能的练习,但第一年完全低估了需要重复练习的次数和强度。
第一年,仅仅在每日的工作之余,花上一节课的时间(近一小时)来进行听说读写的练习,即使每日都能保障一节课的时间(实际并没能),一年下来不过区区 300 多小时,分散在听说读写四个分支上,结果就是没有哪一项在那一年结束后让我感觉到一点点的进步。
在刻意练习过程中,随时能获得有效反馈其实是一件挺难的事。
就像程序员学习编程技能,谁来给你反馈呢?我们又不像是职业竞技运动员,有教练,还有各种分解技战术动作的分析师,分析你的各种赛场或训练表现,给予反馈。更谈不上针对个体的薄弱环节,随时获得反馈进行修正。
程序员最直接的反馈来自简单粗暴的 bug 或者系统故障。进一步,如果公司有一定规模可能会有测试或 QA 人员来给程序员提出反馈。更进一步,如果公司建立起了很好的代码评审文化, 那么会有其他程序员对你的代码与编程工作作出反馈。但若这些都没有,我们还能如何获得有效反馈?
在我早年的工作中,公司确实就没有能提供反馈的机制,无导师、无测试、无代码评审,就靠简单粗暴的 bug 和系统崩溃来提供反馈,我后来还是找到了两条你可以主动把握的反馈机会。第一,主动找你觉得值得信任或佩服的同事帮你找找茬,提供点反馈。第二,即使已经实现了一个功能,再想想有没有开源的类似东西,去搜一搜,看看开源的实现是怎么做的,在这个过程中就完成了通过别人的代码来向自己的实现提供反馈。但这样得做法都是在主动加重自己得工作负担,也是走出舒适区的第一步。
一些大公司都会有自己的代码维护与分析工具,并随时根据提交情况给出评测报告,这就是一种随时提供有效反馈的自动化机制,身在其中很多程序员往往忽视了这一点。
珍视,每一次反馈的机会。
刻意练习是为习得真正的技能所设计的,它和获取知识不同,知识就是那些你知道即为知之,不知即无知的东西,可以通过读书获得。但技能是那些你以为你知道,但如果你没做过,就永远不会真得知道的事情。
如上,刻意练习的首要一点是练习必须在学习区中进行。以程序员的编程技能为例,到了一定阶段,你感觉技术能力提升不了的原因,很可能就在于你每天都在编程写代码。程序员的工作初期基本每天就是编程写代码,在早期你不够熟练时你还能感觉到进步,这种进步就是从不熟练到熟练。但单纯的编程实战其实并不能持续地提高一个人的能力,想想体育运动员,没有一个运动员每天的过程就是参加比赛。
在程序员足够熟练了之后,每天的这种实战型工作就不会再是处于“学习区”的练习了,而是进入了“舒适区”的自动完成。真正的专业竞技体育运动员每天的日常训练都是在“学习区”的刻意练习,而上场比赛则是进入“舒适区”的自动完成。而很多熟练程序员的日常工作则是在“舒适区”的自动完成,工作之外则是另一种“舒适区”的娱乐休闲。
停滞,就是这样发生的。
重复的刻意练习,让我想到了一种数字 —— 无理数。无理数,是一种无限不循环小数,取其无限不循环之意。
刻意练习的关键点之二,有针对性的重复练习。重复,这个词很误导人,重复的本身是练习过程,而非练习内容,每一次的重复过程中都会根据反馈进行有针对性的调整,以取得练习效果的进步。
一直在重复但却感觉不到进步,除了前面所说的脱离了“学习区”的低效重复,还有可能是重复的次数还不够。有时我们会不自觉地低估了习得一项技能所需要的重复练习次数。近年在我身上就有一个鲜活的例子,在工作十年后我重启了学习掌握英语这门技能的练习,但第一年完全低估了需要重复练习的次数和强度。
第一年,仅仅在每日的工作之余,花上一节课的时间(近一小时)来进行听说读写的练习,即使每日都能保障一节课的时间(实际并没能),一年下来不过区区 300 多小时,分散在听说读写四个分支上,结果就是没有哪一项在那一年结束后让我感觉到一点点的进步。
在刻意练习过程中,随时能获得有效反馈其实是一件挺难的事。
就像程序员学习编程技能,谁来给你反馈呢?我们又不像是职业竞技运动员,有教练,还有各种分解技战术动作的分析师,分析你的各种赛场或训练表现,给予反馈。更谈不上针对个体的薄弱环节,随时获得反馈进行修正。
程序员最直接的反馈来自简单粗暴的 bug 或者系统故障。进一步,如果公司有一定规模可能会有测试或 QA 人员来给程序员提出反馈。更进一步,如果公司建立起了很好的代码评审文化, 那么会有其他程序员对你的代码与编程工作作出反馈。但若这些都没有,我们还能如何获得有效反馈?
在我早年的工作中,公司确实就没有能提供反馈的机制,无导师、无测试、无代码评审,就靠简单粗暴的 bug 和系统崩溃来提供反馈,我后来还是找到了两条你可以主动把握的反馈机会。第一,主动找你觉得值得信任或佩服的同事帮你找找茬,提供点反馈。第二,即使已经实现了一个功能,再想想有没有开源的类似东西,去搜一搜,看看开源的实现是怎么做的,在这个过程中就完成了通过别人的代码来向自己的实现提供反馈。但这样得做法都是在主动加重自己得工作负担,也是走出舒适区的第一步。
一些大公司都会有自己的代码维护与分析工具,并随时根据提交情况给出评测报告,这就是一种随时提供有效反馈的自动化机制,身在其中很多程序员往往忽视了这一点。
珍视,每一次反馈的机会。