刻意练习与肌肉记忆

Published: by

泰拳

周末带小朋友去练习打拳,观察教练教小朋友的过程挺有启发的。没有被训练的人在对打的时候,看到对面一拳过来,下意识的动作是侧身躲,或者举拳护头;在泰拳的训练里面,拳手们被训练为身体直立下蹲,并且在对方收拳的一刻侧踢——他们需要大量的刻意训练,把原本下意识的自我保护动作,训练成闪避+攻击组成的整体动作。在《叶问》的甄子丹和泰森对打的花絮里面​,可以看到非常多泰森的这种下意识的组合动作,这就是所谓的刻意练习之后形成的肌肉记忆。

开直升机

有人访问过一个曾经在越南服役的直升飞机飞行员,他退役后参与很多直升机救援工作。采访者问他,“直升机应该比普通的飞机安全吧。如果直升机发动机失灵,它的旋翼可以不借助动力就能自转,像是有一个降落伞一样,安全降落到地上”,飞行员回答说:“如果发动机失灵,必须把总距操纵杆一直往下拉,放弃左踏板,猛踩右踏板,以获得一些转矩。在快速下落之前,只有一秒钟的时间,必须在这一秒之内完成所有动作。”他又补充说:“你虽然做得到这些动作,但最好不要想这个问题。”,因为“当发动机失灵时,你要做很多事情。你必须集中精力寻找迫降地点,寻找平滑的跑道,这些操作需要飞行员高度集中精力。但是,控制直升机的基本动作必须是自动完成的,不容思考。如果无法自动实现飞行,那你就无法集中精力思考如何处理危机。”,“要驾驶直升机,你必须时时刻刻协调操纵装置:总距操纵杆、周期变距操纵杆以及踏板,更不用说油门了。要学好这一切并不容易,但你必须精通。你要做的事情不仅仅是起飞和降落,因此,必须不假思索地自动完成各种动作。你学会飞行之后才可以学习夜间飞行,在学会飞行之前,切不可进行夜间飞行!在你可以轻松自如地进行夜间飞行后,也许就会愿意学习编队飞行和战斗飞行了。”“掌握所有动作,然后做到不假思索地自动操作,你就可以开始考虑在月黑风高的情况下在山顶降落,或者在大海上一个漂浮不定的倾斜甲板上降落。”

可以把泰拳和开直升机都理解为技术动作,泰拳的“业务”目标是在格斗中保护自己同时击败对方;救援直升机的业务目标是,在恶劣的起降环境、恶劣天气下完成救援。这一点和我们平时的软件开发工作比较类似,我们会用到很多组件——数据库、消息中间件、缓存、存储、任务调度、分布式事务、通信连接组件、数据处理组件;大量的代码会用到的设计模式、甚至StringUtils的方法等等,这些综合起来就构成了我们的软件按照预期工作,不熟悉的人,每个问题都会占用大量的研究思考这些工具的精力,导致没有办法去思考应对“业务”的问题;正如专业飞行员一样,作为专业开发者,我们如果能不假思索地运用和操作这些组件,就能非常快速自如应对我们的业务问题。

我们常常说刻意练习,实际上刻意练习的终极目标是,我们能够不假思索地应对技术的状况,这样当我们需要在“漂浮不定的倾斜甲板上降落”——解决非常苛刻的业务问题时,才能自如应对。