从新手到专家-德雷福斯模型的五个阶段

在《程序员的思维修炼:开发潜能认知的九堂课》这本书中,介绍了一种从新手专家的成长模型,既“德雷福斯模型”。 简单点的接介绍,就是如何从一个新手成长为一个专家的修炼套路。

德雷福斯模型由德雷福斯兄弟在 20 世纪 70 年代研究提出,德雷福斯兄弟考察了行业技术能手,包括商用客机飞行员和世界著名国际象棋大师 。他们的研究表明,从新手到专家要经历巨大的变化。

德雷福斯模型描述了我们的能力、态度、素质和视角在不同的技术水平下是如何变化的,以及为什么会有变化。

对于所有的事情,你既不是“专家”也不是“新手”,你只是处于某个特定技能领域中的某个水平阶段。虽然你可能只是烹饪新手,但却可能是跳伞专家。大多数非残障成人在直立行走方面都是专家——无需计划或者思考。这已经变成了本能。大多数人在税务规划方面都是新手。如果提供足够多的明确指令,我们就能够完成它,但是事实上我们不知道那是怎么回事(不明白为什么这些规则如此神奇)。

德雷福斯模型分为以下五个阶段

新手

新手是每个开始学习任何技能的人一开始的阶段,包括未入门的外行人,这一阶段的人,经验很少或者根本就没有,而所谓的经验,指的是,通过实践这项技术促进了思维的改变。明白到这点是很重要的,因为很多人以为,经验就是指资历(单纯时间而言),其实并不是这样,就好像一个软件开发人员号称他有十年的经验,其实每天都在重复做一件事,并没有任何改进,而且自己本身对于自己的职业也没有进一步的认识,这样的经验就算是100年,也就相当于别人的1年,别说什么煤油翁的故事。很抱歉,像软件开发这领域,技术的更新是很快的,甚至在我写这篇文章的时候,在外国某个实验室里可能就已经有新的语言或者其他东西出来了,只是我们没有用到而已(尤其是中国这边,技术的更新与外面脱节很多)。当然,很多人对于“促进思维的改变”很好奇,什么是“促进思维的改变”?所谓思维的改变,就好像你从面向过程的编程向面向对象编程这方面转变,那么,你的思维一定会发生转变,因为你的思维相比以前,已经向更高的抽象这方面发展,要是进一步学习动态语言,就更是如此。思维的转变一定会发生的,因为这是你在实践中所体会到的,所领悟到的,甚至是别人从没有发现过的新的用法

说了那么多有关于经验的介绍,那么,什么是新手呢?如何定义一个新手,其实很简单,就是新手面对问题的态度。这是非常简单的判断方法,因为 经验的差距,使得新手在面对问题,尤其是突发问题的表现,明显是与在新手上面更高的层次是有区别的。那么,新手在面对问题的时候,会怎么做呢?就是举手无措!新手害怕面对问题,因为他们不认为自己能够解决问题,认为自己的能力不足,所以不敢主动去解决问题,更多是向更高层次的人求助(好吧,我之前就是这样,在一个陌生的领域遇到一个问题,结果自己就慌了,因为自己根本就不知道怎么办,就算找到问题的症结所在,但还是不知道要怎么办)。不仅是这样,新手更喜欢指令性的命令,什么是指令性的命令呢?想想当我们开始煮菜的时候,跟着菜谱学做菜的时候,我们是不是严格按照菜谱上一条一条执行的呢?像是该加多少面粉啊,该在什么时候加多少水啊,或者该用多少温度加温多久啊。。。但是一旦最后煮出来的菜并不是菜谱上的那个样子和味道,我们就会慌了,怎么回事,我明明跟着菜谱上的指令严格来做的啊?如果是新手以上的级别,是可以找出问题的,甚至在一开始就已经发现问题,像是专家,就已经在一开始不知不觉中将问题解决了(是的,不知不觉,因为他们很少会犯低级错误,甚至已经是他们潜意识中就在避免的)。但是新手不行啊,他们需要明确的解决问题的指令,像是看看煤气有没有开这个脑残的提示他们也会去做的,因为这时他们已经失去了思考,完全交给了所谓的权威

新手还非常在乎成功,他们非常渴求能够马上将当前的目标完成。这个症结之所以存在,也是因为他们缺乏经验,因为 他们害怕面对问题,而快速成功意味着不用遇到太多甚至是没有问题。他们从没有想过这个方法到底对还是错,只是想要知道这个方法能否成功而已,而我们知道,在软件开发这方面,方法能够奏效并不代表这个方法就是适合的。

所以,新手就是无法根据当前发生问题的根点思考出问题的症结所在,并进而想出解决问题的方法出来。他们之所以会表现出这样的行为,就是因为他们的经验太少或者无法根据当前的情境将问题转化为自己以前解决过的问题类型,因为他们缺乏抽象的能力,将问题抽象成一个模型,然后,在遇到类似的问题时能够马上反应过来。这个能力实在是太过了,因为真的很难,但是新手以上的级别就能做到,因为他们已经通过自己大量实践将这个能力掌握了,在每次解决问题的时候都会将这个问题的症结和解决方法记录进自己的“数据库”里,然后根据情境进行匹配。所以,要想摆脱新手这个级别,关键还是多实践,多思考,多总结,这样就能通过积累而发生质的变化。

高级新手

高级新手就是比新手更上的一个层次,这个层次已经具有一定的经验,并且自我解决问题的能力已经得到大幅提升,具有初步的情境匹配的能力,但是,高级新手之所以还有“新手”这两个字,就是因为他们对于情境的处理能力还是不足的。高级新手已经能够单独解决任务了,他们已经不需要像新手那样战战兢兢,在遇到问题的时候,能够根据自己过去的经验寻找解决问题的方法,这时的他们就会表现出一个很明显区别于新手的特点:他们不像新手那样,会将文档从头看到尾,他们是会选择快速的查找相关的方法,因为他们知道,解决这个问题只需要这个方法就行,但是从来不会去追根刨底,为什么是这个方法。但是,解决问题的基础依然是当前的问题与自己过去解决过的实在太相似了,如果是表面毫不相关的问题,他们依然还会陷入迷茫中,这是因为他们提取情境的能力仍旧存在问题,因此只能记住具体的问题类型而没有发现到问题之间的相同点,进而用相同的方法解决。而且,他们还看不到情境的延伸,一个情境是会延伸的,如果它与实际的问题连在一块,那么你就会发现,一个情境的背后是无数小情境,解决大的情境是很难的,但是解决一个小情境还是很简单的,这就是一般解决大情境的方法,但是高级新手是不会看到的,就像我们经常遇到的,我们无法将一个庞大的问题肢解,我们需要更高层次的人来为我们肢解,然后告诉我们先解决哪一个。

胜任者

要达到胜任者,还是需要很大的努力,因为胜任者在团队中担当的任务非常大,甚至可以说是团队的核心。胜任者的具体表现是什么呢?胜任者不仅能够解决问题,还能发现新的问题,他们能够从目前的问题的解决中发现新的问题并且将它切实的解决掉。这种能力是因为他们过去强大的经验所致,他们知道,这样的问题用这样的方法,会有什么副作用,而我们又要怎样来解决这个副作用。他们在遇到问题的时候能够将问题层层肢解并且针对每个部分提出相应的解决计划,之所以说他们是团队的核心,就是因为一个团队的方案啊,计划啊,基本上都是由他们提出的(很多人会问,更上面的人呢?这是后面要讲的,因为你要知道,一个团队大部分情况下,是不需要胜任者以上的级别的)。这时的胜任者就是一个中转点,因为他们能够与更上面的人沟通,又能统帅下面的新手们,所以,这种人一般都是领导者级别的。但是,胜任者在情境上的处理并不是很成熟,他们只是因为处理过的经验的积累以及严谨的思考使得他们能够解决任何复杂的问题,但是还是不能关注一些情境的细节,甚至是选择忽略,如果说忽略这个细节也能解决问题而且还不会发生什么不好的副作用,他们是会忽略的。

精通者

精通者的一个明显的问题就是他们对于所处的技术领域具有全局思维,他们围绕着自己的技术领域,积极寻找更大的概念框架,更喜欢从他人身上学习,就算只是听别人讲自己的失败经验,也能够从中受益,因为他们已经能够充分理解情境了。他们明白当前的情境是怎样的,情境的细节他们也能把握,甚至在解决问题的时候就已经将这个细节包含进去。他们能够运用计算机的所谓的格言经验(所谓的格言经验,就是我们在学习的时候经常会在一些大师的作品中看到的,一些类似于聊家常的经验,如:“测试一切可能出错的东西”,但是对于新手,他根本就不知道要测试什么),因为他们知道,这样的格言适合什么情境,就是因为他们对情境的理解非常充分。他们也能充分运用任何当前技术的任何复杂的方式,比如说,新手的杀手,设计模式,一旦用不好就会出现问题,就算用了,也会存在有没有必要的问题,但是精通者就能运用自如,因为他非常清楚自己的问题所处的情境到底是怎样的。精通者还有一个更重要的特点,这个特点也是精通者能够成为专家的关键,就是他们能够通过有效的反馈和思考来不断调整自己或者不断进步。反馈和思考是非常重要的,这是掌握任何技能所必须的能力

专家

专家就真的是各个行业的魔法师或者规则的制定者。他们永远都在寻找更好的解决方法,就算是一个小问题,他们也在努力研究怎样更加优美的解决。当然,这样自然是不用说的,因为他们已经是这个行业的最高者,自然必须拥有这个能力。但是,判断一个人是否是专家,还得靠他是怎样解决问题的。专家解决问题更多是根据他们的直觉。他们会觉得,这里会存在问题,而且这样做就能解决,但是你问他为什么会想到,他可能就想不到答案,因为这就好像是一看到这个问题就知道问题的答案一样,就好像你一说出来的就是家乡的方言一样,如果问你,为什么会说方言,你能答得出来吗。这就是一个完全内化的阶段,他们将所有情境和解决这个情境的方法完全内化了,并不是看到情境就想到方法,而是情境本来就和方法连在一块,就像我们解数学题一样,问题本身就是答案。所以,成为专家的关键,就是锻炼自己的直觉,将情境和解决情境的办法连在一块。这可是一个非常漫长的过程,当然,如果你真的非常有天赋,那就另当别论,所以,我们还是要老老实实从新手开始积累实践经验吧。

你在哪个阶段呢?

文章转自网络