程序員的思維修養(yǎng)
本文大概2319字
讀完共需10分鐘
本文首發(fā)于微信公共帳號(hào):
程序猿圈內(nèi)事(programerWrold)
請(qǐng)注意:無(wú)需授權(quán)即可轉(zhuǎn)載
《程序員的思維修煉》
▲
副標(biāo)題:開(kāi)發(fā)認(rèn)知潛能的九堂課
作者:亨特(Andy Hunt)
出版社:人民郵電出版社
ISBN:978-7-115-24233-4
版次:2011 年 1月
作者故事
▲
亨特(Andy Hunt)
亨特(Andy Hunt)敏捷開(kāi)發(fā)權(quán)威人士,敏捷宣言首倡者之一富弦,著名IT圖書(shū)出版公司Pragmatic Programmers創(chuàng)始人凄贩。除本書(shū)外途凫,他還與人合著有多本獲獎(jiǎng)圖書(shū)篡诽,深受讀者歡迎场仲,包括《高效程序員的45個(gè)習(xí)慣—敏捷開(kāi)發(fā)修煉之道》萌丈、《程序員修煉之道—從小工到專(zhuān)家》等赎瞎。
推薦語(yǔ)
▲
本書(shū)作者從軟件開(kāi)發(fā)領(lǐng)域的角度撵渡,闡述了每一名程序員提升“內(nèi)力”所需要的各種軟性知識(shí)融柬,可謂是一本程序員”素質(zhì)教育“的微型百科全書(shū)。閱讀此時(shí)你能夠獲得:新手程序員如何能夠成為專(zhuān)家級(jí)軟件開(kāi)發(fā)者趋距?什么是德雷福斯模型粒氧?如何識(shí)別哪些技能是新手要具備的,哪些是高級(jí)初學(xué)者應(yīng)具備的节腐?德雷福斯模型是什么外盯?各技術(shù)層次都有哪些特點(diǎn)?
德雷福斯技能獲取模型
****▲****
從前翼雀,有兩個(gè)程序員(兄弟倆)想要推動(dòng)智能的技術(shù)發(fā)展水平饱苟,準(zhǔn)備編寫(xiě)一個(gè)能夠像人類(lèi)一樣學(xué)習(xí)和獲取技能的軟件。為了實(shí)現(xiàn)這個(gè)目標(biāo)狼渊,他們首先研究了人類(lèi)是如何學(xué)習(xí)的箱熬,提出了德雷福斯技能獲取模型。那是20世紀(jì)70年代狈邑,德雷福斯兄弟開(kāi)始研究人類(lèi)如何獲取和掌握技能城须,他們經(jīng)過(guò)考察行業(yè)技術(shù)能手,包括商用飛行員和世界著名國(guó)際象棋大師官地,他們的研究發(fā)現(xiàn)酿傍,從新手到專(zhuān)家要經(jīng)歷巨大的變化,這個(gè)過(guò)程要經(jīng)歷五個(gè)階段:新手驱入,高級(jí)新手赤炒,勝任者氯析,精通者,專(zhuān)家莺褒。
新手需要指令清單
****▲****
作為新手會(huì)非常在乎能否成功掩缓,他們想要實(shí)現(xiàn)一個(gè)立竿見(jiàn)影的目標(biāo),而不是特別想要學(xué)習(xí)遵岩;他們不知道如何應(yīng)對(duì)錯(cuò)誤你辣,所以出錯(cuò)的時(shí)候非常容易慌亂。但是如果給新手提供與情境相關(guān)的規(guī)則去參照尘执,他們就會(huì)變得能干起來(lái)舍哄,比如 “當(dāng)X發(fā)生時(shí),執(zhí)行Y”誊锭,這樣的指令清單表悬。雖然這樣做可以讓新手迅速達(dá)成目標(biāo),但作者還是強(qiáng)調(diào)指令清單只能讓新手啟程丧靡,不會(huì)讓他們走的更遠(yuǎn)蟆沫。
高級(jí)新手不需要全局思維
****▲****
什么是高級(jí)新手?高級(jí)新手希望快速獲得信息温治,自身多多少少可以擺脫一些固定的規(guī)則饭庞,能夠獨(dú)自嘗試任務(wù),但是仍難以解決問(wèn)題熬荆,不能站在全貌理解問(wèn)題舟山。例如:當(dāng)公司CEO舉行全體會(huì)議并展示銷(xiāo)售預(yù)測(cè)圖表和數(shù)據(jù)時(shí),你可能會(huì)看到這樣的反應(yīng)惶看。許多在這方面經(jīng)驗(yàn)較少的員工對(duì)這些會(huì)不加理會(huì)捏顺,以為這與他們自己的工作無(wú)關(guān)。當(dāng)然纬黎,其實(shí)這是非常相關(guān)的幅骄,它可以幫你判斷明年你在這家公司是否還能繼續(xù)干下去,但是高級(jí)新手看不到這種聯(lián)系本今,因?yàn)閷哟尾粔虿鹱荒芴幱谳^低的技能水平。
勝任者能夠解決問(wèn)題
****▲****
作者認(rèn)為這個(gè)層次的從業(yè)者能夠建立問(wèn)題域的模型概念冠息,可以獨(dú)立的解決自己遇到的問(wèn)題挪凑,并開(kāi)始考慮如何解決新的問(wèn)題。勝任者會(huì)探尋和解決問(wèn)題逛艰,他們的工作更多的是基于嚴(yán)謹(jǐn)?shù)挠?jì)劃和過(guò)去的經(jīng)驗(yàn)躏碳。如果沒(méi)有更多的經(jīng)驗(yàn),在解決問(wèn)題時(shí)散怖,他們將難以確定關(guān)注哪些細(xì)節(jié)菇绵。例如:軟件開(kāi)發(fā)領(lǐng)域里面的處于這個(gè)層級(jí)的人通常被認(rèn)為“有主動(dòng)性”和“足智多謀”肄渗,他們往往在團(tuán)隊(duì)里發(fā)揮領(lǐng)導(dǎo)的作用。他們是團(tuán)隊(duì)里的好人咬最,既能指導(dǎo)新手翎嫡,也不會(huì)經(jīng)常騷擾專(zhuān)家。
精通者能夠自我糾正
****▲****
精通水平的從業(yè)者永乌,他們需要全局思維惑申,并想要了解更大的概念框架,對(duì)于簡(jiǎn)單化的信息翅雏,他們會(huì)很沮喪圈驼。書(shū)里說(shuō)在德雷福斯模型中,處于精通水平的從業(yè)人員他們能夠糾正以往不好的工作表現(xiàn)枚荣,他們會(huì)反思以前如何做的碗脊,并改進(jìn)做法啼肩,期望下一次表現(xiàn)的更好橄妆。這個(gè)階段,自我改進(jìn)就會(huì)出現(xiàn)祈坠。
測(cè)試一切可能出錯(cuò)的東西
****▲****
極限編程方法里有一個(gè)描述說(shuō):“測(cè)試一切可能出錯(cuò)的東西”害碾。對(duì)于新手來(lái)說(shuō),這只是一個(gè)清單赦拘,測(cè)試什么慌随?是所有的setter和getter方法,還是打印語(yǔ)句躺同?他們最終將會(huì)測(cè)試所有無(wú)關(guān)的東西阁猜。但是,處于精通者的人員他們知道什么地方非程R眨可能出錯(cuò)剃袍,他們具有足夠的經(jīng)驗(yàn)和判斷力,他們知道下一步該采取什么行動(dòng)捎谨,他們能夠理解情景民效,像初級(jí)專(zhuān)家那樣。
專(zhuān)家憑直覺(jué)工作
****▲****
專(zhuān)家是各個(gè)領(lǐng)域知識(shí)和信息的主要來(lái)源涛救,總是不斷的尋找更好的方法和方式去做事畏邢,有著豐富的經(jīng)驗(yàn),可以在恰當(dāng)?shù)那榫爸羞\(yùn)用這些經(jīng)驗(yàn)检吆,他們著書(shū)舒萎、寫(xiě)文章,做巡回演講蹭沛,是當(dāng)代的巫師臂寝,但是數(shù)量卻很少虱肄,占總?cè)藬?shù)的1%~5%。專(zhuān)家非常有直覺(jué)交煞,他們可能對(duì)如何得到結(jié)論完全說(shuō)不清楚咏窿,只是“覺(jué)得是正確的”。例如:醫(yī)生給病人看病素征,乍一看集嵌,醫(yī)生說(shuō):“我認(rèn)為,這個(gè)病人得了Blosen-Platt綜合癥御毅,但還是要讓你深入檢查根欧,病人做完檢查了,結(jié)果證明醫(yī)生是正確的端蛆。你可能要問(wèn)醫(yī)生是這么知道的凤粗?事實(shí)上在醫(yī)生的大腦里面有各種各樣的經(jīng)驗(yàn)、判斷今豆、記憶嫌拣,以及所有其他的意識(shí)的幫助下,醫(yī)生把病人身上的微妙線索結(jié)合在一起呆躲,就得出了結(jié)論异逐。因?yàn)閷?zhuān)家知道哪些是非常重要的細(xì)節(jié),他們擅長(zhǎng)做有針對(duì)性的特征匹配插掂。
三個(gè)變化
****▲****
作者提到從新手到專(zhuān)家必須要經(jīng)歷巨大的變化灰瞻,而這些變化中最重要的三個(gè):
a.****從依賴(lài)規(guī)則向依賴(lài)直覺(jué)轉(zhuǎn)變。
b.****觀念的改變辅甥,問(wèn)題是一個(gè)完整和獨(dú)特的整體酝润,其中只有某些單元是相關(guān)的。
c.****從問(wèn)題的旁觀者轉(zhuǎn)變?yōu)閱?wèn)題涉及的系統(tǒng)本身的一部分璃弄。
大多數(shù)人都是高級(jí)新手
****▲****
書(shū)中也介紹了各個(gè)技能層次在領(lǐng)域內(nèi)的分布情況要销,研究表明,大多數(shù)人的大多數(shù)技能谢揪,在他們生命的大多數(shù)時(shí)間里蕉陋,從來(lái)沒(méi)有高于第二階段高級(jí)新手。執(zhí)行他們的任務(wù)拨扶,并根據(jù)新需求學(xué)習(xí)新任務(wù)凳鬓,但是從來(lái)沒(méi)有對(duì)任務(wù)環(huán)境獲得更廣泛的、概念上的理解患民。領(lǐng)域精確技能分布圖如下:
這種現(xiàn)象的例子很多缩举,比如,從復(fù)制-粘貼式編程的興起(現(xiàn)在把google作為IDE的一部分),到設(shè)計(jì)模式的普遍無(wú)用仅孩。
什么托猩?成為專(zhuān)家需要十年
****▲****
作者還提出了一個(gè)觀點(diǎn),如果你想成為專(zhuān)家辽慕,你需要投入大約十年的努力京腥,不論哪個(gè)領(lǐng)域。研究人員已經(jīng)研究了下棋溅蛉,音樂(lè)作曲公浪,繪畫(huà),鋼琴演奏船侧,游泳欠气,網(wǎng)球和其他技能。從莫扎特到甲殼蟲(chóng)樂(lè)隊(duì)镜撩,你會(huì)明顯的發(fā)現(xiàn)想要成世界級(jí)的專(zhuān)家至少需要十年的辛勤工作预柒。例如甲殼蟲(chóng)樂(lè)隊(duì)?wèi){借在1964年Ed Sulilvan訪談節(jié)目中里程碑式的亮相開(kāi)始風(fēng)靡全世界。他們的第一張專(zhuān)輯很快在1967年發(fā)行袁梗。但是樂(lè)隊(duì)并不是1964年成立的宜鸯,他們從1957年開(kāi)始就在俱樂(lè)部唱歌,到發(fā)行第一張專(zhuān)輯花了十年時(shí)間围段。當(dāng)然顾翼,如果你僅僅是在某個(gè)領(lǐng)域工作了十年,依然無(wú)法成為專(zhuān)家奈泪,你需要更多實(shí)踐。認(rèn)知科學(xué)家Dr.K.Anderson Ericsson的說(shuō)法灸芳,積極實(shí)踐的需要四個(gè)條件:
1.****需要一個(gè)明確定義的任務(wù)涝桅。
2.****任務(wù)需要有適當(dāng)難度--有挑戰(zhàn)性但可行。
3.****任務(wù)環(huán)境可以提供大量反饋烙样,以便于你及時(shí)采取行動(dòng)冯遂。
4.****提供重復(fù)犯錯(cuò)和糾正錯(cuò)誤的機(jī)會(huì)。
作者說(shuō)谒获,只要穩(wěn)步做這種實(shí)踐十年蛤肌,你就能達(dá)到目標(biāo)
自此,每日一書(shū)《程序員思維修煉》第一課結(jié)束批狱,希望你能有所收獲裸准。
實(shí)踐
****▲****
想一想你和你的同事正處在哪個(gè)技能水平?對(duì)你有何幫助赔硫?
每天堅(jiān)持一本書(shū)炒俱,生活越來(lái)越輕松