長期以來,“軟件業(yè)”一直被視為“智力密集”型的“朝陽”產(chǎn)業(yè),大多數(shù)從業(yè)者都受過高等教育,其平均素質(zhì)居于社會各行業(yè)的前列,這個產(chǎn)業(yè)的人物被公眾視為“知識英雄”,比如微軟公司的創(chuàng)始人比爾蓋茨雄據(jù)世界首富之位多年,更是為人“津津樂道”。

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

然而世事難料,在2009年高考剛剛結(jié)束之際,中國權(quán)威出版機構(gòu)社會科學文獻出版社于2009年6月10日發(fā)布首部《中國大學畢業(yè)生業(yè)報告(2009)》,其中“計算機專業(yè)”榮登 “業(yè)困難的十大專業(yè)”光榮榜。

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

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

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

“程序員”真的是“IT民工”?

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

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

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

圖 1

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

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

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

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

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

老外依據(jù)數(shù)據(jù)得出結(jié)論:要把書讀懂讀好,智商還真的得達到一定的水準 。所以,能上大學并且順利拿到學位的人,基本上是屬于比較聰明的那一批人。

我們中國也有類似的觀點,比如經(jīng)?梢月牭侥臣议L嘆息其小孩子成績不好:我家的那個小祖宗,看來根本不是讀書的那塊料!套用老外的觀點,是說這個小孩可能智商達不到上大學的基本要求。

老外什么都喜歡數(shù)字化,所以動不動來個什么“智商”測試,而中國雖然不講智商這一套,但其實高考可以看成是一次智商測試。在80、90年代,那時的大學生,經(jīng)常都是百里挑一、幾十里挑一,記得89年我參加高考,那年我們省的錄取率還是十幾取一。所以那個時代的大學生被稱為“天之嬌子”,并非“空穴來風”。

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

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

我對這些數(shù)據(jù)抱有懷疑:牛頓和伽利略等的那個時代有智商測試嗎?這些數(shù)據(jù)是從哪計算出來的?

但這些科學的智商高于普通人,我想不會有人懷疑。

現(xiàn)在回到軟件開發(fā)這個行業(yè),其從業(yè)者平均學歷為大專以上,應(yīng)該說明這個行業(yè)需要的是整個人群中比較聰明的那一批。

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

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

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

為什么智商重要?我在薛涌 寫的《天才是訓練出來的》找到了以下描述:

在美國的白人中,生于占人口5%的低層的窮孩子,日后生活在貧困線以下的可能比那些生于占人口5%的富裕階層的孩子要高8倍。但是,那些智商屬于低的5%的孩子,則比那些智商屬于高的5%的孩子日后生活于貧困線以下的可能性高15倍。也是說,你的腦子是否好使,比你的家庭是否富裕對你的未來重要得多。

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

智商這個東西非常奇特,老外研究了這么多年,也沒研究明白很多關(guān)鍵問題,比如智商是不是純天生的?后天不能提高?如果能,那能提高多少?如何解釋一些高智商的人一輩子成平平?如何解釋某些天才在某個領(lǐng)域內(nèi)出類拔萃,在其他領(lǐng)域卻連普通人都比不上?還有,更重要的一點:

普通人付出艱苦的努力,能成為天才嗎?

我不是心理學家,下面我僅想針對軟件開發(fā)來聊聊自己對這個問題的看法。

你能成為軟件天才嗎?

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

“高智商”其實是成為“天才”的必要條件。 相應(yīng)的另一個結(jié)論是:普通人再怎么努力,也成不了天才。

這話看上去令人泄氣,但這是客觀事實。

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

回想起當年的高考,我費了九牛二虎之力,總分才剛夠重點大學的低分數(shù)線,后來的考研,我要考3次才僥幸過關(guān),我也曾參過北大的博士生入學考試,結(jié)果慘敗而回,以后知趣地不再嘗試……,我這智商,普通人一個,所以您別忽悠我了,我才不信天天堅持跑步,日后可以參加奧運會的馬拉松比賽呢!

個體間智商的差異是客觀存在的。

但成為不了天才不能成為躺倒不干的理由。因為這里有一個引發(fā)了巨大爭論的問題……

智商重要還是努力重要?

國外心理學的統(tǒng)計數(shù)據(jù)明確無誤地說明了智商的重要性,但這里有一個問題:算是具有“天才”淺質(zhì)的人在總?cè)藛T的比例很少,但人類有數(shù)十億之多,“天才”應(yīng)該不少。吭趺磾(shù)千年來,公認 “天才”的是牛頓等那幾個?

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

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

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

我引用了這么多的資料,其實只為了說明一個結(jié)果:

不經(jīng)“十年寒窗”,“天才”不可能出來。

本身具有高智商的人是這樣,在平均智商上下的人更應(yīng)該努力。

現(xiàn)在很好解釋當下的一些現(xiàn)象了:

(1)“程序員”為何是“IT民工”? 因為這些所謂的“程序員”本身沒有具備從事軟件開發(fā)的基本知識與基本技能,加上人數(shù)眾多,可替換性強,怎么會不成為“IT民工”?

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

盡管軟件開發(fā)行業(yè)需要較高的智商,但在平均學歷為本科的軟件開發(fā)行業(yè),從業(yè)者已經(jīng)過高考的篩選,智商并不是問題關(guān)鍵,之所以“IT民工”多和計算機專業(yè)學生業(yè)難,主要問題是“懶 ”和“訓練不得法 ”。

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


 

圖 2

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

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

對這個問題,我的觀點和薛涌先生在《天才是訓練出來的》這本書中所表達的觀點是一致的:

完全可以。

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

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

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

有關(guān)“深練”的介紹,朋友們可以自行去看《天才是訓練出來的》這本書。我多年自學軟件技術(shù)和8年的教學經(jīng)驗,我并不覺得“深練”有何奇特之處,我將“深練”總結(jié)為以下幾句話:

(1)織網(wǎng) :分解軟件技術(shù)的大塊知識為多個小的知識點,各個擊破,將新知識與老知識聯(lián)系起來,構(gòu)造一張完整的可動態(tài)擴充的知識之網(wǎng)

(2)訓練 :將開發(fā)技能給拆分為多個小的步驟或子技能,針對每個步驟或子技能反復(fù)地嚴格地訓練,然后再這些步驟或子技能組合起來,以達到職業(yè)的水準。

(3)探究性的學習與實踐 :要將被動的學習轉(zhuǎn)換為主動的探索,要通過開發(fā)實踐把一切給“激活”。

我寫了不少文章表達過自己針對軟件技術(shù)學習的看法,在個人所寫的幾本書的前言中也比較系統(tǒng)地表達過類似的觀點,這里不再重復(fù)了,這些文章在我的個人博客 上都可以找到。

而我也將在日后的開發(fā)與教學實踐中應(yīng)用這些原則,探索更有效的學習與訓練方法。

下面,我們來看另一個很困擾人的問題:

我是知道我成不了天才,但為何我也沒成“人材”?我可從沒偷懶過。

這個問題太有中國特色了!這里面關(guān)鍵有幾點:

(1)你錯過了“學習天窗” 。任何一種知識和技能,都有學習與培養(yǎng)它的佳時間段,我們將它稱為“學習天窗”,比如一個兩三歲的小孩子可以輕而易舉地學會兩三種語言,而且不會有口音,而一個成人夠嗆了,以英語為例,我們都受夠了難聽無比的“日本英語”和“印度英語”,“中國英語”也好不到哪去。拿軟件技術(shù)而言,佳的學習時間是大學的這幾年,18歲~25歲左右,精力、體力、智力,無不處于高峰,你這時不學,拿這個時間去玩游戲,看大片,QQ海聊,上網(wǎng)亂逛……,等到30歲以后再學,會發(fā)現(xiàn)你花3個小時才能記住的東西,10年以前可能1.5個小時(甚至更少的時間)能記住了。后悔也晚了。這也只能怪你自己。

(2)命運:

幸運的是,你生在中國! 你沒生在阿富汗和非洲,那里天天子彈飛,餓肚子,鬧瘟疫,這種環(huán)境下你還能學計算機,編程序?

倒霉的是,你也生在中國! 如果你生在美國,你可以擺脫那因為千軍萬馬過獨木橋而喘不過氣來的中小學應(yīng)試體制,上了大學,也可以得到比較好的專業(yè)引導(dǎo)和教育,避開那因為“行政化”而“弊端從生”的中國高等教育體制。中國這個大環(huán)境你個人是改不了的。

倒霉的是,你不僅生在中國,而且你爸不是李剛 ,你家在很遠的地方,那地方很窮, 家里買不起電腦,更別說上網(wǎng)了,你可能要到大學才第一次接觸到電腦……,讓你雪上加霜的是:你競爭不過那些學習條件好的同學,雖然你不笨,也很努力,但在起點落后了,結(jié)果你沒上到好大學,沒碰到好老師,一步晚,步步晚……

這不是你的責任,真的,不是你的責任!

再追問下去,要去宗教中尋找歸宿了。

路在何方?

你手上抓的牌不太好,這沒辦法,這是命運問題,老子說過:天地不仁,以萬物為芻狗……

別想那么多了,不抱怨不等待,積極努力,想辦法把手頭抓的這副“壞牌”打好,這是現(xiàn)實正確的選擇。

只要個人努力了,其他的丟給命運吧!你還能怎的?