在程序員社區(qū)中,大家喜歡以“菜鳥”、“大蝦”相稱,言語間已經(jīng)定位了彼此的“功力等級”。不過,這些都是一些比較模糊的定義,沒有嚴謹?shù)臉藴蕘韼椭_發(fā)人員們衡量自己的能力水平。為了解決這個難題,引入了技能評估體系德雷福斯模型,把能力水平分為新手、高級新手、勝任者、精通者、專家等5個層次,每一階段都有相應的判斷標準,而且研究表明:“大多數(shù)人都是高級新手”!這些內(nèi)容會幫助開發(fā)人員更好地評估和反省自身能力,有助于進一步提高。
新手
新手是每個開始學習任何技能的人一開始的階段,包括未入門的接近外行水平的人。這一階段的人,經(jīng)驗很少或者根本就沒有,而所謂的經(jīng)驗,指的是,通過實踐這項技術促進了思維的改變。明白到這點是很重要的,因為很多人以為,經(jīng)驗就是指資歷(單純時間而言),其實并不是這樣,就好像,一個軟件開發(fā)人員號稱他有十年的經(jīng)驗,但其實每天都在重復做一件事,并沒有任何改進,而且自己本身對于自己的職業(yè)也沒有進一步的認識,那么,這樣的經(jīng)驗就算是100年,其實也就相當于別人的1年。別說什么煤油翁的故事,很抱歉,像是軟件開發(fā)這領域,技術的更新是很快的,甚至在我寫這篇文章的時候,在外國某個實驗室里可能就已經(jīng)有新的東西,像是語言或者其他東西出來了,只是我們沒有用到而已(尤其是中國這邊,技術的更新與外面脫節(jié)很多)。當然,很多人對于這個“促進思維的改變”很好奇,什么是“促進思維的改變”?所謂的思維的改變,就好像你從面向過程的編程向面向?qū)ο缶幊踢@方面轉(zhuǎn)變,那么,你的思維一定會發(fā)生轉(zhuǎn)變,因為你的思維相比以前,已經(jīng)向更高的抽象這方面發(fā)展,要是進一步學習動態(tài)語言,就更是如此。所謂,思維的轉(zhuǎn)變一定會發(fā)生的,因為這是你在實踐中所體會到的,所領悟到的,甚至是別人從沒有發(fā)現(xiàn)過的新的用法。
說了那么多有關于經(jīng)驗的介紹,那么,什么是新手呢?如何定義一個新手,其實很簡單,就是新手面對問題的態(tài)度。是的,這是非常簡單的判斷方法,因為 經(jīng)驗的差距,使得新手在面對問題,尤其是突發(fā)問題的表現(xiàn),明顯是與在新手上面更高的層次是有區(qū)別的。那么,新手在面對問題的時候,會怎么做呢?就是舉手無措!是的,新手害怕面對問題,因為他們不認為自己能夠解決問題,以為自己的能力不足,所以,不敢主動去解決問題,更多是向更高層次的人求助(好吧,我之前就是這樣,在一個陌生的領域遇到一個問題,結果自己就慌了,因為自己根本就不知道怎么辦,就算找到問題的癥結所在,但是還是不知道要怎么辦)。不僅是這樣,新手更喜歡指令性的命令,什么是指令性的命令呢?想想當我們開始煮菜的時候,跟著菜譜學做菜的時候,我們是不是嚴格按照菜譜上一條一條執(zhí)行的呢?像是該加多少面粉啊,改在什么時候加多少水啊,或者該用多少溫度加溫多久啊。。。等等,但是一旦最后煮出來的菜并不是菜譜上的那個樣子和味道,我們就會慌了,怎么回事?我明明跟著菜譜上的指令嚴格來做的啊?如果是新手以上的級別,是可以找出問題的,甚至在一開始就已經(jīng)發(fā)現(xiàn)問題,像是專家,就已經(jīng)一開始就在不知不覺中將問題解決了(是的,不知不覺,因為他們很少會犯低級錯誤,甚至這種特性已經(jīng)是他們潛意識中就已經(jīng)在避免的)。但是新手不行啊,他們需要明確的解決問題的指令,像是看看煤氣有沒有開這個腦殘的提示他們也會去做的,因為這時他們已經(jīng)失去了思考,完全交給了所謂的權威。
新手還非常在乎成功,他們非??是竽軌蝰R上將當前的目標完成。這個癥結之所以存在,也是因為他們?nèi)狈?jīng)驗,因為 他們害怕面對問題,而快速成功意味著不用遇到太多甚至是沒有問題。他們從沒有想過這個方法到底對還是錯,只是想要知道這個方法能否成功而已,而我們知道,在軟件開發(fā)這方面,方法能夠奏效并不代表這個方法就是適合的。
所以,新手就是無法根據(jù)當前發(fā)生問題的根點思考出問題的癥結所在,并進而想出解決問題的方法出來。他們之所以會表現(xiàn)出這樣的行為,就是因為他們的經(jīng)驗太少或者無法根據(jù)當前的情境將問題轉(zhuǎn)化為自己以前解決過的問題類型,因為他們?nèi)狈Τ橄蟮哪芰?,就是將問題抽象成一個模型,然后,在遇到類似的問題時能夠馬上反應過來。是的,這個能力實在是太過了,因為真的很難,但是新手以上的級別就能做到,因為他們已經(jīng)通過自己大量實踐將這個能力掌握了,在每次解決問題的時候都會將這個問題的癥結和解決方法記錄進自己的“數(shù)據(jù)庫”里,然后根據(jù)情境進行匹配。所以,要想擺脫新手這個級別,關鍵還是多實踐,多思考,多總結,這樣就能通過積累而發(fā)生質(zhì)的變化。
高級新手
高級新手就是比新手更上的一個層次,這個層次已經(jīng)具有一定的經(jīng)驗,并且自我解決問題的能力已經(jīng)得到大幅提升,具有初步的情境匹配的能力。但是,高級新手之所以還有“新手”這兩個字,就是因為他們對于情境的處理能力還是不足的。高級新手已經(jīng)能夠單獨解決任務了,是的,他們已經(jīng)不需要像新手那樣戰(zhàn)戰(zhàn)兢兢的,他們在遇到問題的時候,能夠根據(jù)自己過去的經(jīng)驗尋找解決問題的方法,這時的他們就會表現(xiàn)出一個很明顯區(qū)別于新手的特點:就是他們不像新手那樣,會將文檔從頭看到尾,他們是會選擇快速的查找相關的方法,因為他們知道,解決這個問題只需要這個方法就行,但是從來不會去追根刨底,為什么是這個方法。但是,解決問題的基礎依然是當前的問題與自己過去解決過的實在太相似了,如果是表面毫不相關的問題,那么,他們依然還會陷入迷茫中。這是因為他們提出情境的能力仍舊存在問題,因此只能記住具體的問題類型而沒有發(fā)現(xiàn)到問題之間的相同點,進而用相同的方解決。而且,他們還看不到情境的延伸,是的,一個情境是會延伸的,如果它與實際的問題連在一塊,那么,你就會發(fā)現(xiàn),一個情境的背后是無數(shù)小情境,解決大的情境是很難的,但是解決一個小情境還是很簡單的,這就是一般解決大情境的方法。但是高級新手是不會看到的,就像我們經(jīng)常遇到的,我們無法將一個龐大的問題肢解,我們需要更高層次的人來為我們肢解,然后告訴我們先解決哪一個。
勝任者
要達到勝任者,還是需要很大的努力,因為勝任者在團隊中擔當?shù)娜蝿辗浅4螅踔量梢哉f是團隊的核心。勝任者的具體表現(xiàn)是什么呢?勝任者不僅能夠解決問題,還能發(fā)現(xiàn)新的問題,是的,他們能夠從目前的問題的解決中發(fā)現(xiàn)新的問題并且將它切實的解決掉。這種能力是因為他們過去強大的經(jīng)驗所致,他們知道,這樣的問題用這樣的方法,會有什么副作用,而我們又要怎樣來解決這個副作用。他們在遇到問題的時候能夠?qū)栴}層層肢解并且針對每個部分提出相應的解決計劃,;所以,之所以說他們是團隊的核心,就是因為一個團隊的方案啊,計劃啊,基本上都是由他們提出的(很多人會問,更上面的人呢?這是后面要講的,因為你要知道,一個團隊大部分情況下,是不需要勝任者以上的級別的)。但是,這時的勝任者就是一個中轉(zhuǎn)點,因為他們能夠與更上面的人溝通,又能統(tǒng)帥下面的新手們,所以,這種人一般都是領導者級別的。但是,勝任者在情境上的處理液并不是很成熟,他們只是因為處理過的經(jīng)驗的積累以及嚴謹?shù)乃伎际沟盟麄兡軌蚪鉀Q任何復雜的問題,但是他們還是不能關注一些情境的細節(jié),甚至是選擇忽略,如果說忽略這個細節(jié)也能解決問題而且還不會發(fā)生什么不好的副作用,他們是會忽略的。
精通者
精通者的一個明顯的問題就是他們對于他們所處的技術領域具有全局思維,他們圍繞著自己的技術領域,積極尋找更大的概念框架,他們更喜歡從他人身上學習,就算只是聽別人講自己的失敗經(jīng)驗,他們也能夠從中受益,因為他們已經(jīng)能夠充分理解情境了。他們明白當前的情境是怎樣的,情境的細節(jié)他們也能把握,甚至在解決問題的時候就已經(jīng)將這個細節(jié)包含進去。他們能夠運用計算機的所謂的格言經(jīng)驗(所謂的格言經(jīng)驗,就是我們在學習的時候經(jīng)常會在一些大師的作品中看到的,一些類似于聊家常的經(jīng)驗,如:“測試一起可能出錯的東西”,但是對于新手,他根本就不知道要測試什么),因為他們知道,這樣的格言適合什么的情境,因為他們對情境的理解非常充分。他們也能充分運用任何當前技術的任何復雜的技術比如說,新手的殺手,設計模式,一旦用不好就會出現(xiàn)問題,就算用了,也會存在有沒有必要的問題,但是精通者就能運用自如,因為他非常清楚自己的問題所處的情境到底是怎樣的。精通者還有一個更重要的特點,這個特點也是精通者能夠成為專家的關鍵,就是他們能夠通過有效的反饋和思考來不斷調(diào)整自己或者不斷進步。反饋和思考是非常重要的,這是掌握任何技能所必須的能力。
專家
專家就真的是各個行業(yè)的魔法師或者規(guī)則的制定者。他們永遠都在尋找更好的解決方法,就算是一個小問題,他們也在努力研究怎樣更加優(yōu)美的解決。當然,這樣自然是不用說的,因為他們已經(jīng)是這個行業(yè)的最高者,自然必須擁有這個能力。但是,判斷一個人是否是專家,還得靠他是怎樣解決問題的。專家解決問題更多是根據(jù)他們的直覺,是的,就是他們的直覺,他們會覺得,這里會存在問題,而且這樣做就能姐解決,但是你問他為什么會想到,他可能就想不到答案,因為這就好像是一看到這個問題就知道問題的答案一樣,就好像你一說出來的就是家鄉(xiāng)的方言一樣,如果問你,為什么會說方言,你能答得出來。這就是一個完全內(nèi)化的階段,他們將所有情境解決這個情境的方法完全內(nèi)化了,并不是看到情境就想到方法,而是情境本來就和方法連在一塊,就像我們解數(shù)學題一樣,問題本身就是答案。所以,成為專家的關鍵,就是鍛煉自己的直覺,將情境和解決情境的辦法連在一塊。這可是一個非常漫長的過程,當然,如果你真的非常有天賦,那就另當別論,所以,我們還是要老老實實從新手開始積累實踐經(jīng)驗吧。
聯(lián)系客服