從新手到專家-德雷福斯模型的五個階段

邢闖洋發表於2021-06-07

在《程式設計師的思維修煉:開發潛能認知的九堂課》這本書中,介紹了一種從新手專家的成長模型,既“德雷福斯模型”。 簡單點的接介紹,就是如何從一個新手成長為一個專家的修煉套路。

德雷福斯模型由德雷福斯兄弟在 20 世紀 70 年代研究提出,德雷福斯兄弟考察了行業技術能手,包括商用客機飛行員和世界著名國際象棋大師 。他們的研究表明,從新手到專家要經歷巨大的變化。

德雷福斯模型描述了我們的能力、態度、素質和視角在不同的技術水平下是如何變化的,以及為什麼會有變化。

對於所有的事情,你既不是“專家”也不是“新手”,你只是處於某個特定技能領域中的某個水平階段。雖然你可能只是烹飪新手,但卻可能是跳傘專家。大多數非殘障成人在直立行走方面都是專家——無需計劃或者思考。這已經變成了本能。大多數人在稅務規劃方面都是新手。如果提供足夠多的明確指令,我們就能夠完成它,但是事實上我們不知道那是怎麼回事(不明白為什麼這些規則如此神奇)。

德雷福斯模型分為以下五個階段

新手

新手是每個開始學習任何技能的人一開始的階段,包括未入門的外行人,這一階段的人,經驗很少或者根本就沒有,而所謂的經驗,指的是,透過實踐這項技術促進了思維的改變。明白到這點是很重要的,因為很多人以為,經驗就是指資歷(單純時間而言),其實並不是這樣,就好像一個軟體開發人員號稱他有十年的經驗,其實每天都在重複做一件事,並沒有任何改進,而且自己本身對於自己的職業也沒有進一步的認識,這樣的經驗就算是100年,也就相當於別人的1年,別說什麼煤油翁的故事。很抱歉,像軟體開發這領域,技術的更新是很快的,甚至在我寫這篇文章的時候,在外國某個實驗室裡可能就已經有新的語言或者其他東西出來了,只是我們沒有用到而已(尤其是中國這邊,技術的更新與外面脫節很多)。當然,很多人對於“促進思維的改變”很好奇,什麼是“促進思維的改變”?所謂思維的改變,就好像你從程式導向的程式設計向物件導向程式設計這方面轉變,那麼,你的思維一定會發生轉變,因為你的思維相比以前,已經向更高的抽象這方面發展,要是進一步學習動態語言,就更是如此。思維的轉變一定會發生的,因為這是你在實踐中所體會到的,所領悟到的,甚至是別人從沒有發現過的新的用法

說了那麼多有關於經驗的介紹,那麼,什麼是新手呢?如何定義一個新手,其實很簡單,就是新手面對問題的態度。這是非常簡單的判斷方法,因為 經驗的差距,使得新手在面對問題,尤其是突發問題的表現,明顯是與在新手上面更高的層次是有區別的。那麼,新手在面對問題的時候,會怎麼做呢?就是舉手無措!新手害怕面對問題,因為他們不認為自己能夠解決問題,認為自己的能力不足,所以不敢主動去解決問題,更多是向更高層次的人求助(好吧,我之前就是這樣,在一個陌生的領域遇到一個問題,結果自己就慌了,因為自己根本就不知道怎麼辦,就算找到問題的癥結所在,但還是不知道要怎麼辦)。不僅是這樣,新手更喜歡指令性的命令,什麼是指令性的命令呢?想想當我們開始煮菜的時候,跟著菜譜學做菜的時候,我們是不是嚴格按照菜譜上一條一條執行的呢?像是該加多少麵粉啊,該在什麼時候加多少水啊,或者該用多少溫度加溫多久啊。。。但是一旦最後煮出來的菜並不是菜譜上的那個樣子和味道,我們就會慌了,怎麼回事,我明明跟著菜譜上的指令嚴格來做的啊?如果是新手以上的級別,是可以找出問題的,甚至在一開始就已經發現問題,像是專家,就已經在一開始不知不覺中將問題解決了(是的,不知不覺,因為他們很少會犯低階錯誤,甚至已經是他們潛意識中就在避免的)。但是新手不行啊,他們需要明確的解決問題的指令,像是看看煤氣有沒有開這個腦殘的提示他們也會去做的,因為這時他們已經失去了思考,完全交給了所謂的權威

新手還非常在乎成功,他們非常渴求能夠馬上將當前的目標完成。這個癥結之所以存在,也是因為他們缺乏經驗,因為 他們害怕面對問題,而快速成功意味著不用遇到太多甚至是沒有問題。他們從沒有想過這個方法到底對還是錯,只是想要知道這個方法能否成功而已,而我們知道,在軟體開發這方面,方法能夠奏效並不代表這個方法就是適合的。

所以,新手就是無法根據當前發生問題的根點思考出問題的癥結所在,並進而想出解決問題的方法出來。他們之所以會表現出這樣的行為,就是因為他們的經驗太少或者無法根據當前的情境將問題轉化為自己以前解決過的問題型別,因為他們缺乏抽象的能力,將問題抽象成一個模型,然後,在遇到類似的問題時能夠馬上反應過來。這個能力實在是太過了,因為真的很難,但是新手以上的級別就能做到,因為他們已經透過自己大量實踐將這個能力掌握了,在每次解決問題的時候都會將這個問題的癥結和解決方法記錄進自己的“資料庫”裡,然後根據情境進行匹配。所以,要想擺脫新手這個級別,關鍵還是多實踐,多思考,多總結,這樣就能透過積累而發生質的變化。

高階新手

高階新手就是比新手更上的一個層次,這個層次已經具有一定的經驗,並且自我解決問題的能力已經得到大幅提升,具有初步的情境匹配的能力,但是,高階新手之所以還有“新手”這兩個字,就是因為他們對於情境的處理能力還是不足的。高階新手已經能夠單獨解決任務了,他們已經不需要像新手那樣戰戰兢兢,在遇到問題的時候,能夠根據自己過去的經驗尋找解決問題的方法,這時的他們就會表現出一個很明顯區別於新手的特點:他們不像新手那樣,會將文件從頭看到尾,他們是會選擇快速的查詢相關的方法,因為他們知道,解決這個問題只需要這個方法就行,但是從來不會去追根刨底,為什麼是這個方法。但是,解決問題的基礎依然是當前的問題與自己過去解決過的實在太相似了,如果是表面毫不相關的問題,他們依然還會陷入迷茫中,這是因為他們提取情境的能力仍舊存在問題,因此只能記住具體的問題型別而沒有發現到問題之間的相同點,進而用相同的方法解決。而且,他們還看不到情境的延伸,一個情境是會延伸的,如果它與實際的問題連在一塊,那麼你就會發現,一個情境的背後是無數小情境,解決大的情境是很難的,但是解決一個小情境還是很簡單的,這就是一般解決大情境的方法,但是高階新手是不會看到的,就像我們經常遇到的,我們無法將一個龐大的問題肢解,我們需要更高層次的人來為我們肢解,然後告訴我們先解決哪一個。

勝任者

要達到勝任者,還是需要很大的努力,因為勝任者在團隊中擔當的任務非常大,甚至可以說是團隊的核心。勝任者的具體表現是什麼呢?勝任者不僅能夠解決問題,還能發現新的問題,他們能夠從目前的問題的解決中發現新的問題並且將它切實的解決掉。這種能力是因為他們過去強大的經驗所致,他們知道,這樣的問題用這樣的方法,會有什麼副作用,而我們又要怎樣來解決這個副作用。他們在遇到問題的時候能夠將問題層層肢解並且針對每個部分提出相應的解決計劃,之所以說他們是團隊的核心,就是因為一個團隊的方案啊,計劃啊,基本上都是由他們提出的(很多人會問,更上面的人呢?這是後面要講的,因為你要知道,一個團隊大部分情況下,是不需要勝任者以上的級別的)。這時的勝任者就是一箇中轉點,因為他們能夠與更上面的人溝通,又能統帥下面的新手們,所以,這種人一般都是領導者級別的。但是,勝任者在情境上的處理並不是很成熟,他們只是因為處理過的經驗的積累以及嚴謹的思考使得他們能夠解決任何複雜的問題,但是還是不能關注一些情境的細節,甚至是選擇忽略,如果說忽略這個細節也能解決問題而且還不會發生什麼不好的副作用,他們是會忽略的。

精通者

精通者的一個明顯的問題就是他們對於所處的技術領域具有全域性思維,他們圍繞著自己的技術領域,積極尋找更大的概念框架,更喜歡從他人身上學習,就算只是聽別人講自己的失敗經驗,也能夠從中受益,因為他們已經能夠充分理解情境了。他們明白當前的情境是怎樣的,情境的細節他們也能把握,甚至在解決問題的時候就已經將這個細節包含進去。他們能夠運用計算機的所謂的格言經驗(所謂的格言經驗,就是我們在學習的時候經常會在一些大師的作品中看到的,一些類似於聊家常的經驗,如:“測試一切可能出錯的東西”,但是對於新手,他根本就不知道要測試什麼),因為他們知道,這樣的格言適合什麼情境,就是因為他們對情境的理解非常充分。他們也能充分運用任何當前技術的任何複雜的方式,比如說,新手的殺手,設計模式,一旦用不好就會出現問題,就算用了,也會存在有沒有必要的問題,但是精通者就能運用自如,因為他非常清楚自己的問題所處的情境到底是怎樣的。精通者還有一個更重要的特點,這個特點也是精通者能夠成為專家的關鍵,就是他們能夠透過有效的反饋和思考來不斷調整自己或者不斷進步。反饋和思考是非常重要的,這是掌握任何技能所必須的能力

專家

專家就真的是各個行業的魔法師或者規則的制定者。他們永遠都在尋找更好的解決方法,就算是一個小問題,他們也在努力研究怎樣更加優美的解決。當然,這樣自然是不用說的,因為他們已經是這個行業的最高者,自然必須擁有這個能力。但是,判斷一個人是否是專家,還得靠他是怎樣解決問題的。專家解決問題更多是根據他們的直覺。他們會覺得,這裡會存在問題,而且這樣做就能解決,但是你問他為什麼會想到,他可能就想不到答案,因為這就好像是一看到這個問題就知道問題的答案一樣,就好像你一說出來的就是家鄉的方言一樣,如果問你,為什麼會說方言,你能答得出來嗎。這就是一個完全內化的階段,他們將所有情境和解決這個情境的方法完全內化了,並不是看到情境就想到方法,而是情境本來就和方法連在一塊,就像我們解數學題一樣,問題本身就是答案。所以,成為專家的關鍵,就是鍛鍊自己的直覺,將情境和解決情境的辦法連在一塊。這可是一個非常漫長的過程,當然,如果你真的非常有天賦,那就另當別論,所以,我們還是要老老實實從新手開始積累實踐經驗吧。

你在哪個階段呢?

文章轉自網路

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章