- Part.1.A 为什么一定要掌握自学能力?
- Part.1.B 为什么把编程当作自学的入口?
- Part.1.C 只靠阅读习得新技能
- Part.1.D 开始阅读前的一些准备
- Part.1.E.1 入口
- Part.1.E.2 值及其相应的运算
- Part.1.E.3 流程控制
- Part.1.E.4 函数
- Part.1.E.5 字符串
- Part.1.E.6 数据容器
- Part.1.E.7 文件
- Part.1.F 如何从容应对含有过多 “过早引用” 的知识?
- Part.1.G 官方教程:The Python Tutorial
- Part.2.A 笨拙与耐心
- Part.2.B 刻意练习
- Part.2.C 为什么从函数开始?
- Part.2.D.1 关于参数(上)
- Part.2.D.2 关于参数(下)
- Part.2.D.3 化名与匿名
- Part.2.D.4 递归函数
- Part.2.D.5 函数的文档
- Part.2.D.6 保存到文件的函数
- Part.2.D.7 测试驱动的开发
- Part.2.D.8 可执行的 Python 文件
- Part.2.E 刻意思考
- Part.3.A 战胜难点
- Part.3.B.1 类 —— 面向对象编程
- Part.3.B.2 类 —— Python 的实现
- Part.3.B.3 函数工具
- Part.3.B.4 正则表达式
- Part.3.B.5 BNF 以及 EBNF
- Part.3.C 拆解
- Part.3.D 刚需幻觉
- Part.3.E 全面 —— 自学的境界
- Part.3.F 自学者的社交
- Part.3.G 这是自学者的黄金时代
- Part.3.H 避免注意力漂移
笨拙与耐心
自学的过程,实际上需要拆解为以下四个阶段,虽然它们之间常常有部分重叠:
- 学
- 练
- 用
- 造
只要识字,就会忍不住阅读;只要感觉上有 “值得学” 的,就会忍不住去学 —— 事实上每个人时时刻刻都在学习,只不过,学习的目标选择与学习的方式以及效率均不相同而已。
绝大多数人从未区分过这几个阶段,也从未研究过这几个阶段分别应该如何对待。这就解释了为什么那么多人虽然总是忍不住阅读,总是忍不住学习,但终其一生都没有真正掌握过像样的技能…… 因为他们在第一个阶段就出错,到了第二个阶段就放弃,第三个阶段是直接跳过去的,总是 “对付着用”,至于第四个阶段么,想都没想过……
第一部分的内容,基本用来展示 “学” 的过程。学,就需要重复,甚至很多次重复,尤其是在面对充满了 “过早引用” 现象的知识结构的时候。
反复学,最锻炼的是 “归纳整理” 的能力。而且,最有意思的,这在大多数情况下还是自动发生的 —— 只要你不断重复,你的大脑会在不自主之间把那些已经掌握的知识点与当前尚未掌握的知识点区分开来,前者处理起来轻松容易,甚至可以跳过;后者需要投入更多的注意力去仔细处理…… 在这个过程中,绝大多数的归纳整理工作自动完成了。最后再加上一点 “刻意的、收尾性的归纳总结整理工作” —— 大功告成。
绝大多数人总是希望自己一遍就能学会 —— 于是,注定了失败;而面对注定的失败,却并不知道那与天分、智商全无关系,因为谁都是那样的;于是,默默认定自己没有天分,甚至怀疑自己的智商;于是,默默地离开,希望换个地方验证自己的天分与智商;于是,再次面临注定的失败;于是,一而再再而三地被 “证明” 为天分不够智商不够…… 于是,就变成了那条狗:
在一项心理学实验中,狗是被测试对象。把狗关进栅栏里;然而那栅栏并不算太高,原本狗一使劲就能跳过去。但狗带着电项圈,只要它被发现有要跳过栅栏的企图,它就会被电击…… 几次尝试之后,狗就放弃了跳出栅栏 —— 虽然它其实能跳过去。更为惊人的结果是,随后把这条狗关进很低的栅栏,甚至是它都不用跳直接就可以跨过去的栅栏,它也老老实实地呆在栅栏里。
自学是门手艺,编程很大程度上也是一门手艺,掌握它在绝大多数情况下与天分智商全无关系 —— 很多人是在十来岁的时候学会编程的基本技能的。所有的手艺,最基本特征就是:
主要靠时间
这就跟你看人们的车技一样,二十年安全驾龄和刚上路的肯定不一样,但这事跟天分、智商真的没什么关系……
到了第二部分,我们终于进入 “用” 的阶段 —— 嗯?“练” 怎么跳过去了?没有,我们的策略是,以用带练 —— 在不断应用的过程中带动刻意练习。
练和学,是多少有些重合部分的。比如,你可能反复 “学” 了第一部分两三遍,而后就进入了第二部分,开始接触 “用”,在 “用” 的过程中,只要有空,或者只要有需求,你就可能回去 “复习” 一遍第一部分的内容……
无论之前的 “学”,重复了多少遍,一旦开始练,就注定体会到各式各样的笨拙。一会儿漏写了一个引号或者一个括号,一会儿不小心使用了非英文字符的全角符号,要么就是发现自己犯的错误愚蠢且反复发生,比如,语句块起始语句末尾忘了写冒号……
这再正常不过了。
每次自学什么新东西的时候,你就把自己想象成 “再次出生的婴儿” —— 其实每次自学,的的确确都是重生。一旦掌握了一项新的技能,你就不再是从前的那个自己,你是另外一个人了。
看着婴儿蹒跚学步,的确笨拙,但谁会觉得它不可爱呢?
同样的道理,刚开始用一个技能的时候,笨拙其实就是可爱 —— 只不过这时候旁人不再这么觉得而已了,只不过因为你披着一张成年人的皮。然而,你的大脑中正在学习的那一部分,和新生婴儿的大脑没有任何区别。
在第一部分的时候,“练” 的必要其实并不大…… 甚至,因为这是 “过早引用” 太多的知识结构,所以,急于练习反倒会有副作用。由于对自己所面对的复杂知识结构(就是过早引用太多的知识结构)认识不够,没有提前的应对策略,所以,他们根据原本的习惯,边学边练,学不明白当然就练不明白,于是,走着走着就挫败感太强,于是,就自然而然地放弃了…… 而且,弄不好,越练越容易出现 “不必要的挫败感”。
一切 “主要靠时间” 的活动都一样,都需要在从事之前认真做 “心理建设”。通常情况下,读一本教程,上个学习班,就 “会” 了 —— 几乎肯定是错觉或者幻觉。
- 首先要明白,这肯定是个比 “天真的想象” 要长得多的过程。
- 其次要明白,并且要越来越自然地明白,哪儿哪儿都需要很多重复。读,要读很多遍;练,要练很多遍;做,要做很多遍……
有了这样的心理建设,就相对更容易保持耐心。
人们缺乏耐心的常见根源就是 “之前根本就没准备花那么多时间和精力”,所以当然很容易超出 “时间和精力的预算”,当然相对更容易焦虑 —— 就好像没多少本钱的人做生意常常更容易失败一样。
这也解释了为什么我在写这本书的过程中,心中锁定的目标群体是大一学生和高一学生(甚至也有初一学生):
他们最有自学的 “本钱”……
离开学校之后,绝大多数人很难再有 “一看一下午”、“一练一整天”、“一玩一整夜” 的本钱。又由于生活的压力越来越大,对 “能够使用” 新技能的 “需求” 越来越紧迫,于是,对任何一次自学的 “时间精力投资” 都缩手缩脚,小里小气……
预算观念非常重要 —— 这个观念的存在与否,成熟与否,基本上决定一个人未来的盈利能力。
大多数人对此不仅不成熟,甚至干脆没有预算观念!—— 这也是为什么绝大多数人不适合创业的最根本原因。
不夸张地讲,未来的你只需要恪守一个原则,就很可能会因此超越 99% 的人:
绝对不做预算不够的事情。
说来惭愧,我是四十多岁之后,在创业和投资中经历了大量的失败,付了不可想像的学费之后,才深刻理解这条看起来过分简单的原则 —— 亏得本科还是学会计毕业的呢!我的运气在于,在自学这件事上,从来给出的预算都很多……
大约 1984 年,我在远在边疆的延吉市的本地青少年宫参加了一个要交 10 元学费的暑期计算机兴趣班,老师姓金,教的是 BASIC 语言,用的机器是这样的:
它要外接上一个九寸的单色显示器,那时候还没有磁盘,所以,只要一断电,就什么都没有了……
后来上了大学,买书自学 C++,结果在一个地方被卡住了:
我写的代码死活编译不过去…… 当时的编译器错误提醒还不像今天这么完善,当时也没有什么 Google 可以随时看看网上是否早就有人遇到过跟我一样的问题…… 当时我身边根本就没有什么别人在玩这些东西,当时的学校里的电脑还很少,需要提前申请所谓的 “上机时间”,后来呢?后来就放弃了。
当时是什么东西卡住我了呢?说来都能笑死,或者都能被气死:
if (c = 1) {
...
}
习惯于写 BASIC 的我,“被习惯蒙蔽了双眼”,反复检查那么多遍,完全没看到应该写的是 c == 1
!
一晃就好几年过去,有一天在书店看到一本 C++ 教程,想起来多年前放弃的东西,就把书买回来,在家里的电脑上重新玩了起来…… 然后就想起来问题在哪儿了,然后这事就被我重新捡起来了……
学完了也就学完了,真没地儿用。没地儿用,当然就很少练。
又过了好几年,我去新东方教书。2003 年,在写词汇书的过程中,需要统计词频,C++ 倒是用不上,用之前学过它的经验,学了一点 Python,写程序统计词频 ——《TOEFL 核心词汇 21 天突破》到今天还在销售。一个当年 10 块钱学费开始学的技能,就因为这本书,这些年给我 “变现” 了很多钱。
我有很多东西都是这样,隔了好多年,才重新捡起来,而后继续前行的。
最搞笑的是弹吉他。
十五六岁的时候,父亲给我买了一把吉他,理由是:
你连唱歌都跑调,将来咋学英语啊?
然后我就开始玩。花 5 块钱上了个培训班,第一天学了一个曲子,第二天就因为打架把吉他砸坏了,害得父亲又去给我买了一把更便宜的……
那个年代学吉他的人,第一首肯定是 “Romance d'Amour”(爱的罗曼史),我当然不例外。那曲子好听啊,好听到弹得不好也好听的地步。
然后吧,有一天,在一姑娘面前显摆,竟然没有弹错!弹完之后很得意…… 结果那姑娘一脸迷茫,隔了两三秒钟说,“不还有第二段吗?” —— 我一脸懵蛋,“…… 啊?”
可是吧,那第二段我终究没有学…… 其实也练过,但后来因为指骨摔断了,所以再后来的许多年,弹吉他只用拨片。直到…… 直到四十五岁那年。有一天,忽然想起这事,于是找来琴谱试了一下,花了一会的时间顺了下来。
所以,我猜我的 “自学能力强” 这件事本身,其实只不过是我投入的预算很多造成的 —— 活到老学到老,在我这里不是空话,所以,相对于别人,我这里只不过是预算太多、太充裕了而已。
于是,我学的时候重复得比别人多;练的时候重复得比别人多;到最后用得也相对比别人多很多 —— 这跟是否有天分或者聪明与否全然没有关系。
当然,学到的东西多了,就变得更聪明了似的。有高中学历的人通常情况下比只有小学学历的人更聪明 —— 其实就是这个原因而已。而这个现象与天生的智商并不总是正相关。
有个现象,不自学的人不知道。
真正开始自学且不断自学之后,刚开始总是觉得时间不够用 —— 因为当时的自己和其他人没什么太大区别。
随着时间的推移,不仅差异会出现,自我认知差异也开始越来越明显:
别人的时间都白过了,自己的时间都有产出……
到了下一个阶段,在其他人不断焦虑的情况下,自己却开始越来越淡定:
因为早已习惯了投入大量时间换取新技能……
等后来真的开始用这些技能做事,不断地做其他人因为时间白过了或者因为投入的 “预算” 不够而学不会做不到的事情 —— 并且还能充分明白,这并不是自己聪明、有天分的结果;只不过是做了该做的事情,投入了该投入的 “成本” 和 “预算” 而已……
于是,就真的能够理解下面这句话背后的深意:
人生很长,何必惊慌。
反正,这事跟天分与智商几乎没有任何关系。