“在一个陌生的地方,前面有个路口,往左还是往右,选1还是2?”一般人在这个时候犹豫不久就会做出选择。
“前面有一个路口,每条小路又都有一个路口,11、12、21、22,选哪一个?”这时总共有2重不确定,四种选择,一般人会纠结很长一段时间才能做出一个选择。
“前面有一个路口,每条小路又都有一个路口,每条小路的的小路又有一个路口,111,112,121,122,211,212,221,222,选哪一条?”3重不确定,总共8个选择,一般人就会奔溃了。。。
其实,上面这个场景更多地出现在学习一个新技能的时候。由于初来乍到,任何东西都是陌生的,在面对这些不确定性,我们只能先带着问题,有时候随着进度的积累,很可能很快我们就能找到原先问题的答案,但更多的可能是我们还没有来的及弄懂上个问题,下个问题就又冒出来了……于是一下子积累了N重问题,感觉怎么都解决不玩,直接奔溃放弃。绝大多数人没能学好一个领域都是因为这个问题,毕竟绝大部分人都忍受不了那么高的复杂度。
拿我自己举个例子,我接触过的计算机语言有VB、C、Python、Java、Javascript、C#,看着很多,但是都是停留在基础语法的学习上(其实大部分都由于长时间的不接触,早就忘光了),没有用哪一门语言真正做出什么东西的。想来其原因很简单,所有的基础语法,课本上都有明确的解释以供学习,但是一旦学完基础语法,到了语法去创造东西的时候,就像是面对一个全新的世界一样,各种新颖的类库、复杂的环境,再没有书本一步一步地教你,不确定性就突然激增。这个时候自然也更加容易产生放弃的念头。
另一个实例是我在考研阶段学习高等数学的时候,心中还是抱着完美主义的念头,想搞清楚极限、导数、积分每一个概念,甚至还有一种执念:搞清楚概念之后,任何题目一定是迎刃而解,于是便整天看着概念苦思冥想。颇有种要么不干,要干就干好的感觉。但是事实非常的无情,高等数学中一个不算难的概念:拉格朗日中值定理,其应用场景的复杂程度几乎多到无法想象,就算是将概念的来源理解得多透彻,公式的定义记忆得多熟练,在面对那些天花乱坠的复杂应用场景时,依旧像是新手一样被出题人玩弄于鼓掌之中。
很简单,编程语法与用编程语言做项目,数学公式与数学公式的应用是两种不同的知识。前者是后者的基础,没有前者,后者寸步难行,但是其前者学得再好,对后者的傍明并不一定有多大作用,两部分都需要花时间刻意练习!而且如果最终的目的是应用一项技能而不是记忆一项技能的话,那么最好的策略是利用20%的时间去理解基础概念,80%的时间去应用这个知识。很多时候已经有足够多有经验的人告诉我们该怎么做,我们要做的不是再花费自己宝贵的精力去推导一遍过程,而是保留自己心中的那些疑问,直接去做。就如同大家都知道英语很重要,我们就没有必要再去想办法论证英语到底多重要,直接去学就行;又如学英语是为了用英语,纠结单词,保证自己每一个单词都认识真的不重要,直接去用就行。生活并不完美,没必要让我们内心的完美主义限制住我们前进的脚步,不脸,直接上就行。