軟件天才都是訓(xùn)練出來的
作者:金旭亮 發(fā)布時(shí)間:[ 2011/12/20 9:44:45 ] 推薦標(biāo)簽:
長期以來,“軟件業(yè)”一直被視為“智力密集”型的“朝陽”產(chǎn)業(yè),大多數(shù)從業(yè)者都受過高等教育,其平均素質(zhì)居于社會(huì)各行業(yè)的前列,這個(gè)產(chǎn)業(yè)的人物被公眾視為“知識(shí)英雄”,比如微軟公司的創(chuàng)始人比爾蓋茨雄據(jù)世界首富之位多年,更是為人“津津樂道”。
16年前我下決心開始學(xué)習(xí)計(jì)算機(jī)技術(shù)的時(shí)候,對(duì)這個(gè)行業(yè)也充滿了自豪感。
然而世事難料,在2009年高考剛剛結(jié)束之際,中國權(quán)威出版機(jī)構(gòu)社會(huì)科學(xué)文獻(xiàn)出版社于2009年6月10日發(fā)布首部《中國大學(xué)畢業(yè)生業(yè)報(bào)告(2009)》,其中“計(jì)算機(jī)專業(yè)”榮登 “業(yè)困難的十大專業(yè)”光榮榜。
大約從2003年開始,我在北京理工大學(xué)這所211、985重點(diǎn)大學(xué)開設(shè).NET課程,這件事后來給某些人“炮轟”--說我要將重點(diǎn)大學(xué)學(xué)生培養(yǎng)成IT民工,也曾有技術(shù)牛人諄諄教誨年青學(xué)生--想學(xué)軟件,離金某人遠(yuǎn)些……
“程序員”何時(shí)變成了“IT民工”?
僅僅十多年,“程序員”從“精英”淪落為“民工”,這也未免太戲劇性了吧!
“程序員”真的是“IT民工”?
在中國,不少程序員都是“CRUD”程序員,這不能怪他們,因?yàn)橹袊鄶?shù)項(xiàng)目都是CRUD的。所以,CRUD似乎成為了“IT民工”身上的標(biāo)簽,問題是CRUD這活真的象在建筑工地上倒水泥一樣,不需要太高的智商和較多的訓(xùn)練?
下面分析一下需要從事這個(gè)CRUD的工作的程序員,到底需要哪些知識(shí)和技能。
我大致地思索了一下,畫了以下這個(gè)圖,展示出一名 “.NET程序員民工”要順利參與一個(gè)CRUD的數(shù)據(jù)庫應(yīng)用項(xiàng)目開發(fā)所大致需要掌握的知識(shí)與技能:
圖 1
說句實(shí)話,這個(gè)圖雖然“掛一漏萬”,但列出來的知識(shí)點(diǎn)與需要掌握的技能之多已經(jīng)很“恐怖”了,對(duì)于一個(gè)需要掌握這么多知識(shí)與技術(shù)才能勝任與干好的工作,非要認(rèn)為它是一個(gè)“低級(jí)”的 “民工”可以干的活,想必持這種觀點(diǎn)的人一定知識(shí)豐富如汪洋大海,屬“白骨精(白領(lǐng)-骨干-精英)”一族。
需要掌握這么多的知識(shí),才有資格當(dāng)一名合格的“CRUD”程序員,“IT民工”的“門檻”其實(shí)挺高的,不是嗎?
事實(shí)也如此,軟件開發(fā)行業(yè)從業(yè)人員的平均學(xué)歷我估計(jì)至少是大專,很可能是“本科”,其中固然有一些只有“高中”甚至更低學(xué)歷的“奇才”,但這僅是少數(shù),而且這些人,雖然學(xué)歷低,但絕不會(huì)是一個(gè)低智商的人。這說明軟件開發(fā)行業(yè)從業(yè)者的“平均智商”應(yīng)該是挺高的。
我在旅美學(xué)者薛涌 寫的《天才是訓(xùn)練出來的》一書中找到了美國的一些統(tǒng)計(jì)數(shù)據(jù):
美國大學(xué)本科生的中等智商為118,學(xué)士學(xué)位獲得者的中等智商為123,畢業(yè)生的中等智商為133,物理學(xué)博士的平均智商為140。而在一般的人口中,中等智商為100。也是說,你的智商如低于100分,你屬于偏笨的人,高于此線,屬于偏聰明的了。
老外依據(jù)數(shù)據(jù)得出結(jié)論:要把書讀懂讀好,智商還真的得達(dá)到一定的水準(zhǔn) 。所以,能上大學(xué)并且順利拿到學(xué)位的人,基本上是屬于比較聰明的那一批人。
我們中國也有類似的觀點(diǎn),比如經(jīng)?梢月牭侥臣议L嘆息其小孩子成績不好:我家的那個(gè)小祖宗,看來根本不是讀書的那塊料!套用老外的觀點(diǎn),是說這個(gè)小孩可能智商達(dá)不到上大學(xué)的基本要求。
老外什么都喜歡數(shù)字化,所以動(dòng)不動(dòng)來個(gè)什么“智商”測試,而中國雖然不講智商這一套,但其實(shí)高考可以看成是一次智商測試。在80、90年代,那時(shí)的大學(xué)生,經(jīng)常都是百里挑一、幾十里挑一,記得89年我參加高考,那年我們省的錄取率還是十幾取一。所以那個(gè)時(shí)代的大學(xué)生被稱為“天之嬌子”,并非“空穴來風(fēng)”。
重大的變化發(fā)生于1999年,從這一年開始中國大學(xué)開始擴(kuò)招,尤其是計(jì)算機(jī)專業(yè),更是擴(kuò)招的重點(diǎn),其規(guī)模迅速膨脹,錄取率大大地提高,其結(jié)果是,用一句打趣的話說,“阿貓阿狗都去讀大學(xué)了”,中國大學(xué)沒有做智商測試的制度,不然,我想應(yīng)該會(huì)看到21世紀(jì)在校大學(xué)生的平均智商比上世紀(jì)80、90年代的在校大學(xué)生的平均智商要低。但擴(kuò)招對(duì)一些歷史悠久聲譽(yù)良好的重點(diǎn)大學(xué)的影響沒那么大,因?yàn)椴还苣阍趺磾U(kuò)招,能進(jìn)名校(比如北大清華)的學(xué)生,智商是不會(huì)低的,因?yàn)槠淙雽W(xué)競爭仍然十分激烈,各方面差一點(diǎn)的根本沒這個(gè)機(jī)會(huì)。
老外還給出了一些科學(xué)家的智商:牛頓190,伽利略195,開普勒175,達(dá)爾文165,哥白尼160。
我對(duì)這些數(shù)據(jù)抱有懷疑:牛頓和伽利略等的那個(gè)時(shí)代有智商測試嗎?這些數(shù)據(jù)是從哪計(jì)算出來的?
但這些科學(xué)的智商高于普通人,我想不會(huì)有人懷疑。
現(xiàn)在回到軟件開發(fā)這個(gè)行業(yè),其從業(yè)者平均學(xué)歷為大專以上,應(yīng)該說明這個(gè)行業(yè)需要的是整個(gè)人群中比較聰明的那一批。
這個(gè)觀點(diǎn)與我的實(shí)際感受是一致的。
我在IT業(yè)“混”了十多年,深感這個(gè)行業(yè)牛人輩出,別說這個(gè)行業(yè)的“”級(jí)別人物,是在許多普通的IT企業(yè)、科研院所中,也有不少的讓人佩服的牛人。我在北理工教了8年書,“笨”的學(xué)生實(shí)在沒見著,而不少學(xué)生的聰明程度和學(xué)習(xí)能力等,都比我在他們這個(gè)年紀(jì)時(shí)要強(qiáng)得多,還有一些學(xué)生,真的很聰明,悟性好,能舉一反三,在技術(shù)上沒多久可以跑到我前面去了。
所以,軟件開發(fā)應(yīng)該是一個(gè)需要有較高智商的行業(yè),我覺得不會(huì)有太大疑義。
為什么智商重要?我在薛涌 寫的《天才是訓(xùn)練出來的》找到了以下描述:
在美國的白人中,生于占人口5%的低層的窮孩子,日后生活在貧困線以下的可能比那些生于占人口5%的富裕階層的孩子要高8倍。但是,那些智商屬于低的5%的孩子,則比那些智商屬于高的5%的孩子日后生活于貧困線以下的可能性高15倍。也是說,你的腦子是否好使,比你的家庭是否富裕對(duì)你的未來重要得多。
中國人有句俗話:三百六十行,行行出狀元。這些“狀元”的出身并不重要,但他們應(yīng)該接近的都有高的智商。
智商這個(gè)東西非常奇特,老外研究了這么多年,也沒研究明白很多關(guān)鍵問題,比如智商是不是純天生的?后天不能提高?如果能,那能提高多少?如何解釋一些高智商的人一輩子成平平?如何解釋某些天才在某個(gè)領(lǐng)域內(nèi)出類拔萃,在其他領(lǐng)域卻連普通人都比不上?還有,更重要的一點(diǎn):
普通人付出艱苦的努力,能成為天才嗎?
我不是心理學(xué)家,下面我僅想針對(duì)軟件開發(fā)來聊聊自己對(duì)這個(gè)問題的看法。
你能成為軟件天才嗎?
在整個(gè)計(jì)算機(jī)領(lǐng)域,有一些老外的名字如雷貫耳:馮諾依曼,圖靈,比爾蓋茨、Anders Hejlsberg,在中國,諸如“求伯君”、“柳傳志”、“李開復(fù)”等名人的故事也是眾人皆知,雖然我們拿不到其智商測試的分?jǐn)?shù),但相信他們個(gè)個(gè)都是聰明人。
“高智商”其實(shí)是成為“天才”的必要條件。 相應(yīng)的另一個(gè)結(jié)論是:普通人再怎么努力,也成不了天才。
這話看上去令人泄氣,但這是客觀事實(shí)。
天才在各自領(lǐng)域內(nèi)所達(dá)到的高度,大多數(shù)普通人是永遠(yuǎn)達(dá)不到的,比如如果有某人告訴我:你只要努力,可以比Anders Hejlsberg還牛。我一定會(huì)認(rèn)為他在開一個(gè)讓我很生氣的玩笑。
回想起當(dāng)年的高考,我費(fèi)了九牛二虎之力,總分才剛夠重點(diǎn)大學(xué)的低分?jǐn)?shù)線,后來的考研,我要考3次才僥幸過關(guān),我也曾參過北大的博士生入學(xué)考試,結(jié)果慘敗而回,以后知趣地不再嘗試……,我這智商,普通人一個(gè),所以您別忽悠我了,我才不信天天堅(jiān)持跑步,日后可以參加奧運(yùn)會(huì)的馬拉松比賽呢!
個(gè)體間智商的差異是客觀存在的。
但成為不了天才不能成為躺倒不干的理由。因?yàn)檫@里有一個(gè)引發(fā)了巨大爭論的問題……
智商重要還是努力重要?
國外心理學(xué)的統(tǒng)計(jì)數(shù)據(jù)明確無誤地說明了智商的重要性,但這里有一個(gè)問題:算是具有“天才”淺質(zhì)的人在總?cè)藛T的比例很少,但人類有數(shù)十億之多,“天才”應(yīng)該不少。吭趺磾(shù)千年來,公認(rèn) “天才”的是牛頓等那幾個(gè)?
1973年,諾貝爾經(jīng)濟(jì)學(xué)獎(jiǎng)得言、人工智能研究的開拓者Herbert Simon和William Chase在研究國際象棋大師的成長規(guī)律時(shí)發(fā)現(xiàn):再大的天才,也需要10年修煉成器。
音樂天才莫扎特似乎打破了這個(gè)“十年定律”。5歲做曲,10歲登臺(tái)演出,一生創(chuàng)作了數(shù)百部傳世之作。盡管如此,西方學(xué)者們還是發(fā)現(xiàn),莫扎特6歲時(shí)已經(jīng)和父親一起訓(xùn)練了3500個(gè)小時(shí),他第一部達(dá)到大師水平的作品,創(chuàng)作年紀(jì)是21歲,實(shí)際上已經(jīng)經(jīng)歷了18年的嚴(yán)格訓(xùn)練。
聰明的腦瓜是必要的,但僅有它也是不夠的。
我引用了這么多的資料,其實(shí)只為了說明一個(gè)結(jié)果:
不經(jīng)“十年寒窗”,“天才”不可能出來。
本身具有高智商的人是這樣,在平均智商上下的人更應(yīng)該努力。
現(xiàn)在很好解釋當(dāng)下的一些現(xiàn)象了:
(1)“程序員”為何是“IT民工”? 因?yàn)檫@些所謂的“程序員”本身沒有具備從事軟件開發(fā)的基本知識(shí)與基本技能,加上人數(shù)眾多,可替換性強(qiáng),怎么會(huì)不成為“IT民工”?
(2)計(jì)算機(jī)專業(yè)學(xué)生為何業(yè)難? 很簡單,一個(gè)計(jì)算機(jī)專業(yè)本科生,四年下來至少應(yīng)該有4~6萬行的代碼量,但我觀察,達(dá)到這個(gè)要求的不到10%。
盡管軟件開發(fā)行業(yè)需要較高的智商,但在平均學(xué)歷為本科的軟件開發(fā)行業(yè),從業(yè)者已經(jīng)過高考的篩選,智商并不是問題關(guān)鍵,之所以“IT民工”多和計(jì)算機(jī)專業(yè)學(xué)生業(yè)難,主要問題是“懶 ”和“訓(xùn)練不得法 ”。
下圖是我總結(jié)的一個(gè)靠技術(shù)吃飯的“程序員”知識(shí)與能力增長路線圖:
圖 2
這個(gè)圖不是針對(duì)“天才”設(shè)計(jì)的,而是針對(duì)一個(gè)普通 的計(jì)算機(jī)專業(yè)大學(xué)生可能的主要人生經(jīng)歷繪制的,雖然經(jīng)過了大量的簡化,但主線還是很清楚的。
我成不了天才,那成為“人材”,可以嗎?
對(duì)這個(gè)問題,我的觀點(diǎn)和薛涌先生在《天才是訓(xùn)練出來的》這本書中所表達(dá)的觀點(diǎn)是一致的:
完全可以。
我們需要解決的問題是“如何努力”的問題。
薛涌先生在書中介紹了一種名為“處心積慮的訓(xùn)練(deliberation practice) ”的天才訓(xùn)練方法,這種方法是由天才研究的權(quán)威人士Ericsson教授提出的,簡稱為“深練(deep practice) ”,其意思是一般人練得淺,水平自然平庸,天才則練得深,所以能超出凡人之上。
普通人如果能科學(xué)地深練,雖然不能成為天才,但成為“半個(gè)”天才是完全可能的。
有關(guān)“深練”的介紹,朋友們可以自行去看《天才是訓(xùn)練出來的》這本書。我多年自學(xué)軟件技術(shù)和8年的教學(xué)經(jīng)驗(yàn),我并不覺得“深練”有何奇特之處,我將“深練”總結(jié)為以下幾句話:
(1)織網(wǎng) :分解軟件技術(shù)的大塊知識(shí)為多個(gè)小的知識(shí)點(diǎn),各個(gè)擊破,將新知識(shí)與老知識(shí)聯(lián)系起來,構(gòu)造一張完整的可動(dòng)態(tài)擴(kuò)充的知識(shí)之網(wǎng)
(2)訓(xùn)練 :將開發(fā)技能給拆分為多個(gè)小的步驟或子技能,針對(duì)每個(gè)步驟或子技能反復(fù)地嚴(yán)格地訓(xùn)練,然后再這些步驟或子技能組合起來,以達(dá)到職業(yè)的水準(zhǔn)。
(3)探究性的學(xué)習(xí)與實(shí)踐 :要將被動(dòng)的學(xué)習(xí)轉(zhuǎn)換為主動(dòng)的探索,要通過開發(fā)實(shí)踐把一切給“激活”。
我寫了不少文章表達(dá)過自己針對(duì)軟件技術(shù)學(xué)習(xí)的看法,在個(gè)人所寫的幾本書的前言中也比較系統(tǒng)地表達(dá)過類似的觀點(diǎn),這里不再重復(fù)了,這些文章在我的個(gè)人博客 上都可以找到。
而我也將在日后的開發(fā)與教學(xué)實(shí)踐中應(yīng)用這些原則,探索更有效的學(xué)習(xí)與訓(xùn)練方法。
下面,我們來看另一個(gè)很困擾人的問題:
我是知道我成不了天才,但為何我也沒成“人材”?我可從沒偷懶過!
這個(gè)問題太有中國特色了!這里面關(guān)鍵有幾點(diǎn):
(1)你錯(cuò)過了“學(xué)習(xí)天窗” 。任何一種知識(shí)和技能,都有學(xué)習(xí)與培養(yǎng)它的佳時(shí)間段,我們將它稱為“學(xué)習(xí)天窗”,比如一個(gè)兩三歲的小孩子可以輕而易舉地學(xué)會(huì)兩三種語言,而且不會(huì)有口音,而一個(gè)成人夠嗆了,以英語為例,我們都受夠了難聽無比的“日本英語”和“印度英語”,“中國英語”也好不到哪去。拿軟件技術(shù)而言,佳的學(xué)習(xí)時(shí)間是大學(xué)的這幾年,18歲~25歲左右,精力、體力、智力,無不處于高峰,你這時(shí)不學(xué),拿這個(gè)時(shí)間去玩游戲,看大片,QQ海聊,上網(wǎng)亂逛……,等到30歲以后再學(xué),會(huì)發(fā)現(xiàn)你花3個(gè)小時(shí)才能記住的東西,10年以前可能1.5個(gè)小時(shí)(甚至更少的時(shí)間)能記住了。后悔也晚了。這也只能怪你自己。
(2)命運(yùn):
幸運(yùn)的是,你生在中國! 你沒生在阿富汗和非洲,那里天天子彈飛,餓肚子,鬧瘟疫,這種環(huán)境下你還能學(xué)計(jì)算機(jī),編程序?
倒霉的是,你也生在中國! 如果你生在美國,你可以擺脫那因?yàn)榍к娙f馬過獨(dú)木橋而喘不過氣來的中小學(xué)應(yīng)試體制,上了大學(xué),也可以得到比較好的專業(yè)引導(dǎo)和教育,避開那因?yàn)椤靶姓倍氨锥藦纳钡闹袊叩冉逃w制。中國這個(gè)大環(huán)境你個(gè)人是改不了的。
倒霉的是,你不僅生在中國,而且你爸不是李剛 ,你家在很遠(yuǎn)的地方,那地方很窮, 家里買不起電腦,更別說上網(wǎng)了,你可能要到大學(xué)才第一次接觸到電腦……,讓你雪上加霜的是:你競爭不過那些學(xué)習(xí)條件好的同學(xué),雖然你不笨,也很努力,但在起點(diǎn)落后了,結(jié)果你沒上到好大學(xué),沒碰到好老師,一步晚,步步晚……
這不是你的責(zé)任,真的,不是你的責(zé)任!
再追問下去,要去宗教中尋找歸宿了。
路在何方?
你手上抓的牌不太好,這沒辦法,這是命運(yùn)問題,老子說過:天地不仁,以萬物為芻狗……
別想那么多了,不抱怨不等待,積極努力,想辦法把手頭抓的這副“壞牌”打好,這是現(xiàn)實(shí)正確的選擇。
只要個(gè)人努力了,其他的丟給命運(yùn)吧!你還能怎的?
相關(guān)推薦

最新發(fā)布
性能測試之測試環(huán)境搭建的方法
2020/7/21 15:39:32軟件測試是從什么時(shí)候開始被企業(yè)所重視的呢?
2020/7/17 9:09:11Android自動(dòng)化測試框架有哪些?有什么用途?
2020/7/17 9:03:50什么樣的項(xiàng)目適合做自動(dòng)化?自動(dòng)化測試人員應(yīng)具備怎樣的能力?
2020/7/17 8:57:06幾大市面主流性能測試工具測評(píng)
2020/7/17 8:52:11RPA機(jī)器人能夠快速響應(yīng)企業(yè)需求,是怎么做到的?
2020/7/17 8:48:05Bug可以真正消滅嗎?為什么?
2020/7/17 8:43:03軟件測試基本概念是怎么來的?軟件測試生命周期的形成歷經(jīng)了什么?
2020/7/16 9:11:10