軟件天才都是訓練出來的

導讀:CSDN博客專家金旭亮以“軟件天才與技術民工”爲名,發表了自己對薛涌《天才是訓練出來的》的心得體會,以下是文章內容:

長期以來,“軟件業”一直被視爲“智力密集”型的“朝陽”產業,大多數從業者都受過高等教育,其平均素質居於社會各行業的前列,這個產業的頂尖人物被公衆視爲“知識英雄”,比如微軟公司的創始人比爾蓋茨雄據世界首富之位多年,更是爲人“津津樂道”。

16年前我下決心開始學習計算機技術的時候,對這個行業也充滿了自豪感。

然而世事難料,在2009年高考剛剛結束之際,中國權威出版機構社會科學文獻出版社於2009年6月10日發佈首部《中國大學畢業生就業報告(2009)》,其中“計算機專業”榮登 “就業最困難的十大專業”光榮榜。

大約從2003年開始,我在北京理工大學這所211、985重點大學開設.NET課程,這件事後來給某些人“炮轟”——說我要將重點大學學生培養成IT民工,也曾有技術牛人諄諄教誨年青學生——想學軟件,離金某人遠些……

“程序員”何時變成了“IT民工”?

僅僅十多年,“程序員”就從“精英”淪落爲“民工”,這也未免太戲劇性了吧!

在中國,不少程序員都是“CRUD”程序員,這不能怪他們,因爲中國多數項目都是CRUD的。所以,CRUD似乎成爲了“IT民工”身上的標籤,問題是CRUD這活真的象在建築工地上倒水泥一樣,不需要太高的智商和較多的訓練?

下面分析一下需要從事這個CRUD的工作的程序員,到底需要哪些知識和技能。

我大致地思索了一下,畫了以下這個圖,展示出一名 “.NET程序員民工”要順利參與一個CRUD的數據庫應用項目開發所大致需要掌握的知識與技能:

說句實話,這個圖雖然“掛一漏萬”,但列出來的知識點與需要掌握的技能之 多已經很“恐怖”了,對於一個需要掌握這麼多知識與技術才能勝任與幹好的工作,非要認爲它是一個“低級”的 “民工”就可以乾的活,想必持這種觀點的人一定知識豐富如汪洋大海,屬“白骨精(白領-骨幹-精英)”一族。

需要掌握這麼多的知識,纔有資格當一名合格的“CRUD”程序員,“IT民工”的“門檻”其實挺高的,不是嗎?

事實也如此,軟件開發行業從業人員的平均學歷我估計至少是大專,很可能是“本科”,其中固然有一些只有“高中”甚至更低學歷的“奇才”,但這僅是少數,而且這些人,雖然學歷低,但絕不會是一個低智商的人。這說明軟件開發行業從業者的“平均智商”應該是挺高的。

我在旅美學者薛涌寫的《天才是訓練出來的》一書中找到了美國的一些統計數據:

美國大學本科生的中等智商爲118,學士學位獲得者的中等智商爲123,優秀畢業生的中等智商爲133,物理學博士的平均智商爲140。而在一般的人口中,中等智商爲100。也就是說,你的智商如低於100分,你就屬於偏笨的人,高於此線,就屬於偏聰明的了。

國外依據數據得出結論:要把書讀懂讀好,智商還真的得達到一定的水準。所以,能上大學並且順利拿到學位的人,基本上是屬於比較聰明的那一批人。

我們中國也有類似的觀點,比如經常可以聽到某家長嘆息其小孩子成績不好:我家的那個小祖宗,看來根本就不是讀書的那塊料!套用老外的觀點,就是說這個小孩可能智商達不到上大學的基本要求。老外什麼都喜歡數字化,所以動不動就來個什麼“智商”測試,而中國雖然不講智商這一套,但其實高考就可以看成是一次智商測試。在80、90年代,那時的大 學生,經常都是百裏挑一、幾十裏挑一,記得89年我參加高考,那年我們省的錄取率還是十幾取一。所以那個時代的大學生被稱爲“天之嬌子”,並非“空穴來 風”。

重大的變化發生於1999年,從這一年開始中國大學開始擴招,尤其是計算機專業,更是擴招的重點,其規模迅速膨脹,錄取率大大地提高,其結果是,用一句打趣的話說,“阿貓阿狗都去讀大學了”,中國大學沒有做智商測試的制度,不然,我想應該會看到21世紀在校大學生的平均智商比上世紀80、90年代的在校大 學生的平均智商要低。但擴招對一些歷史悠久聲譽良好的重點大學的影響就沒那麼大,因爲不管你怎麼擴招,能進名校(比如北大清華)的學生,智商是不會低的, 因爲其入學競爭仍然十分激烈,各方面差一點的根本就沒這個機會。

國外還給出了一些著名科學家的智商:牛頓190,伽利略195,開普勒175,達爾文165,哥白尼160。

現在回到軟件開發這個行業,其從業者平均學歷爲大專以上,應該說明這個行業需要的是整個人羣中比較聰明的那一批。

這個觀點與我的實際感受是一致的。

我在IT業“混”了十多年,深感這個行業牛人輩出,別說這個行業的“頂尖”級別人物,就是在許多普通的IT企業、科研院所中,也有不少的讓人佩服的牛人。 我在北理工教了8年書,“笨”的學生實在沒見着,而不少學生的聰明程度和學習能力等,都比我在他們這個年紀時要強得多,還有一些學生,真的很聰明,悟性 好,能舉一反三,在技術上沒多久就可以跑到我前面去了。

所以,軟件開發應該是一個需要有較高智商的行業,我覺得不會有太大疑義。

中國人有句俗話:三百六十行,行行出狀元。這些“狀元”的出身並不重要,但他們應該接近100%的都有高的智商。

你能成爲軟件天才嗎?

在整個計算機領域,有一些老外的名字如雷貫耳:馮諾依曼,圖靈,比爾蓋茨、Anders Hejlsberg,在中國,諸如“求伯君”、“柳傳志”、“李開復”等名人的故事也是衆人皆知,雖然我們拿不到其智商測試的分數,但相信他們個個都是聰明人。

“高智商”其實是成爲“天才”的必要條件。相應的另一個結論就是:普通人再怎麼努力,也成不了天才。

天才在各自領域內所達到的高度,大多數普通人是永遠達不到的,比如如果有某人告訴我:你只要努力,就可以比Anders Hejlsberg還牛。我一定會認爲他在開一個讓我很生氣的玩笑。

個體間智商的差異是客觀存在的。但成爲不了天纔不能成爲躺倒不幹的理由。因爲這裏有一個引發了巨大爭論的問題。

智商重要還是努力重要?

國外心理學的統計數據明確無誤地說明了智商的重要性,但這裏有一個問題:就算是具有“天才”淺質的人在總人員的比例很少,但人類有數十億之多,“天才”應該不少啊?怎麼數千年來,公認 “天才”的就是牛頓等那幾個?

1973年,諾貝爾經濟學獎得主、人工智能研究的開拓者Herbert Simon和William Chase在研究國際象棋大師的成長規律時發現:再大的天才,也需要10年修煉成器。

音樂天才莫扎特似乎打破了這個“十年定律”。5歲做曲,10歲登臺演出,一生創作了數百部傳世之作。儘管如此,西方學者們還是發現,莫扎特6歲時就已經和 父親一起訓練了3500個小時,他第一部達到大師水平的作品,創作年紀是21歲,實際上已經經歷了18年的嚴格訓練。

聰明的腦瓜是必要的,但僅有它也是不夠的。

我引用了這麼多的資料,其實只爲了說明一個結果:不經“十年寒窗”,“天才”不可能出來。本身具有高智商的人是這樣,在平均智商上下的人更應該努力。

現在很好解釋當下的一些現象了:

1. “程序員”爲何是“IT民工”?因爲這些所謂的“程序員”本身就沒有具備從事軟件開發的基本知識與基本技能,加上人數衆多,可替換性強,怎麼會不成爲“IT民工”?

2. 計算機專業學生爲何就業難?很簡單,一個計算機專業本科生,四年下來至少應該有4~6萬行的代碼量,但就我觀察,達到這個要求的不到10%。

儘管軟件開發行業需要較高的智商,但在平均學歷爲本科的軟件開發行業,從業者已經過高考的篩選,智商並不是問題關鍵,之所以“IT民工”多和計算機專業學生就業難,主要問題是“懶”和“訓練不得法”。

下圖是我總結的一個靠技術吃飯的“程序員”知識與能力增長路線圖:

這個圖不是針對“天才”設計的,而是針對一個普通的計算機專業大學生可能的主要人生經歷繪製的,雖然經過了大量的簡化,但主線還是很清楚的。

我成不了天才,那成爲“人材”,可以嗎?

我們需要解決的問題是“如何努力”的問題。

薛涌先生在書中介紹了一種名爲“處心積慮的訓練(deliberation practice)”的天才訓練方法,這種方法是由天才研究的權威人士Ericsson教授提出的,簡稱爲“深練(deep practice)”,其意思是一般人練得淺,水平自然平庸,天才則練得深,所以能超出凡人之上。

普通人如果能科學地深練,雖然不能成爲天才,但成爲“半個”天才是完全可能的。

有關“深練”的介紹,朋友們可以自行去看《天才是訓練出來的》這本書。就我多年自學軟件技術和8年的教學經驗,我並不覺得“深練”有何奇特之處,我將“深練”總結爲以下幾句話:

1. 織網:分解軟件技術的大塊知識爲多個小的知識點,各個擊破,將新知識與老知識聯繫起來,構造一張完整的可動態擴充的知識之網

2. 訓練:將開發技能給拆分爲多個小的步驟或子技能,針對每個步驟或子技能反覆地嚴格地訓練,然後再這些步驟或子技能組合起來,以達到職業的水準。

3. 探究性的學習與實踐:要將被動的學習轉換爲主動的探索,要通過開發實踐把一切給“激活”。

原文鏈接:http://blog.csdn.net/bitfan/archive/2010/12/30/6106212.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章