- 1.A 为什么一定要掌握自学能力?
- 1.B 为什么把编程当作自学的入口?
- 1.C 只靠阅读习得新技能
- 1.D 开始阅读前的一些准备
- 1.E.1 入口
- 1.E.2 值及其相应的运算
- 1.E.3 流程控制
- 1.E.4 函数
- 1.E.5 字符串
- 1.E.6 数据容器
- 1.E.7 文件
- 1.F 如何从容应对含有过多 “过早引用” 的知识?
- 1.G 官方教程:The Python Tutorial
- 2.A 笨拙与耐心
- 2.B 刻意练习
- 2.C 为什么从函数开始?
- 2.D.1 关于参数(上)
- 2.D.2 关于参数(下)
- 2.D.3 化名与匿名
- 2.D.4 递归函数
- 2.D.5 函数的文档
- 2.D.6 保存到文件的函数
- 2.D.7 测试驱动的开发
- 2.D.8 可执行的 Python 文件
- 2.E 刻意思考
- 3.A 战胜难点
- 3.B.1 类 —— 面向对象编程
- 3.B.2 类 —— Python 的实现
- 3.B.3 函数工具
- 3.B.4 正则表达式
- 3.B.5 BNF 以及 EBNF
- 3.C 拆解
- 3.D 刚需幻觉
- 3.E 全面 —— 自学的境界
- 3.F 自学者的社交
- 3.G 这是自学者的黄金时代
- 3.H 避免注意力漂移
刻意练习
在自学的过程中,总是有一些部分需要刻意练习。就好像小时候我们学习汉字,有些人总是把 “武” 这个字上加上一个撇 —— 对他们来说,不去写那个不该有的撇,就是需要刻意练习的。另外一些人倒是不在这个字上出错,但候和侯傻傻地分不清楚(类似的例子不计其数),那么,对他们来说就有了另外需要刻意练习的地方……
手艺这个东西,尤其需要刻意练习。我们说,手艺么,主要是靠时间…… 这里的 “时间”,准确地讲,就是 “刻意练习” 的时间,而不是任何时间。
我当过很长时间的英语老师。异常苦于一件事:最有用的道理最没人听。
学英语根本就不应该那么难,学了十六年也学不明白 —— 至于嘛!然而,最简单的道理,人们就是听不进去。他们之所以不行,就是因为从未刻意练习。学英语最简单的刻意练习就是朗读。每天朗读一小时,一百天下来就会超越绝大多数人,也会超越自己原本可能永远跨不过去的那个坎 —— 神奇的是,朗读什么无所谓,反正现在有声书那么多…… 更神奇的是,刚开始朗读得好不好听,甚至好不好都无所谓,反正没几天就能体会到大幅进步…… 最神奇的是,这么简单的事,99.99% 的人不做 —— 你身在中国,能理解这个比例真的没有夸张。
顺带推荐一下王渊源(John Gordan)的微信公众号:
清晨朗读会
到 2019 年 2 月 21 日,王渊源同学的清晨朗读会带着大伙朗读了第 1000 天……
许多年前,资质平庸的我,一直苦恼一件事:
- 为什么自己无论干什么都笨手笨脚、差这儿差那儿的……
- 为什么与此同时,总是能看到另外一些人,给人感觉 “一出手就是高手” 呢?!
这事折磨了我好多年…… 直到后来我当了老师,每年面前流过几万名学生之后,我才 “羞耻” 地反应过来:
- 我花在刻意练习上的时间太少了;
- 并且,也没有刻意思考哪些地方我应该去刻意练习。
而那些看起来 “一出手就是高手” 的人,则恰恰相反,他们不仅花很多时间刻意练习,还总是刻意思考在哪些地方尤其要刻意练习 —— 就是这一点差别造成了那么大的差距。
比如,小时候玩琴,因为手骨摔断了,于是就中断了很多刻意练习 —— 后来换成拨片之后,也习惯不好,不做很多基础练习,只是顺着感觉 “胡搞瞎搞”…… 于是,我的琴艺永远是自娱自乐也就刚刚够用的水准,永远上不了下一个台阶。我认识的人之中,许岑同学在这方面就是我这种情况的反向典范。
然而,我深刻地意识到,在另外一些地方,若是再 “混” 下去,那这辈子就别想有什么名堂了。所以,我就下决心在必要的地方一定要刻意地练习。印象中我第一个应用这种思考模式与决心的地方就是写书。我花了很长时间去准备第一本书,并且刻意地思考在哪些地方应该刻意地用力 —— 比如,在取书名这件在别人眼里可能并不是很重要的事上,我每天都琢磨,前后换了二十几个名字,最终选定…… 其后每一本出版的书籍,在书名选择上我都 “殚精竭虑” —— 最终的结果是,我的第一本书就是畅销书、长销书 —— 后面的每一本都是。
对,所谓的 “混”,解释很简单:
不做刻意练习的人就是在混时间。
需要刻意练习的地方,因人而异。有的人就是不可能让 “武” 字带把刀,不需要刻意练习,但另外一些人不是。有些人就是朗读十分钟的效果跟别人朗读一小时的效果一样地好,但更多的人并不是……
然而,这并不是所谓的 “天分” 差异,这大抵上只相当于正态分布坐标略不相同而已。每个人都一样,都有各自必须刻意练习的地方,都有对别人来说无比容易可偏偏对自己来说就是很难的地方,而且,在这件事上,大家的点虽然各不相同,但总体上需要刻意练习的部分比例都差不多 —— 虽然说不清楚那个比例到底是多少。
比如,在学一门新的编程语言时,我常常做这样的刻意练习:
在纸上用笔写程序……
而后,看着纸上的程序,把自己的大脑当作解析器,去判断每一句执行后的结果……
反复确认之后,再在编辑器里输入这个程序 —— 用很慢的速度,确保自己的输入无误……
然后再一运行,十有八九出错 —— 要再反复检查修改很多次才能顺利执行到最后……
为什么要这么做呢?因为我发现自己一旦学另外一个语言的时候,自己的大脑就会经常把这个新的语言与之前学过的其他语言相混淆,这很痛苦。我必须想出一个办法,让之前的也好,之后的也罢,干脆刻在自己的脑子里,不可能相互混淆。
我相信不是所有人都有我这样的烦恼和痛苦,虽然他们在我不烦恼不痛苦的地方也可能烦恼痛苦……
然而,于我来讲,这就是我需要刻意练习的地方 —— 这也是我刻意思考之后才找到的需要刻意练习的地方。
你也一样。你需要刻意练习的地方,需要你自己去刻意思考 —— 你和别人不一样,没有人和你一样,就这样。
这种事情,过去还真的是所谓 “书本上学不到” 的东西 —— 因为没有哪个作者能做到 “遍历世上所有人的所有特殊情况”…… 不过,互联网这本大书貌似正在突破这种限制,因为有无数的作者在写书,每个人所关注的点也不一样,再加上搜索引擎,所以,你总是可以在互联网这本大书中找到 “竟然与我一样的人”!
于是,你可能感受到了,其实吧,所谓 “刻意练习”,其实是 “刻意思考哪里需要刻意练习” 之后最自然不过的事情 —— 所以,“刻意思考” 才是关键。
应对策略很简单:
准备个专门的地方记录
我现在用的最多的就是 iPhone 上的 Notes,一旦遇到什么 “疑似需要刻意练习” 的点,就顺手记录在那里以防不小心忘记或者不小心遗漏。
而后有时间的时候就拿出来看看,排列一下优先级,琢磨一下刻意练习的方式,而后找时间刻意练习,如此这般,做到 “尽量不混日子”……
有时候,刻意练习是很容易的,比如,为了让自己记住当前正在学习的编程语言的语法规则,直至 “刻在脑子里一般”,需要做的无非是把编辑器中的 “Auto completion”(自动补全)先关掉三个月 —— 麻烦一点就麻烦一点,坚决不让 Tab 键帮自己哗啦哗啦写上一大片…… 那不叫麻烦,那叫刻意练习。
人们常说:
凡事,就怕琢磨……
那些高手,无一例外都是善于琢磨的人…… 可是,他们在琢磨什么呢?为什么他们会琢磨那些事呢?
你看,所谓的琢磨,其实真的不是很难,只不过,在此之前,你不知道该琢磨什么而已,一旦知道了,剩下的都再自然不过,都会自然而然地发生 —— 事实上,所谓的差别差距,只不过一线间而已。