軟體天才與技術民工

2021-05-24 05:48:41 字數 4038 閱讀 7811

薛湧《天才是訓練出來的》讀後感

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

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

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

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

「程式設計師」何時變成了「it民工」?

僅僅十多年,「程式設計師」就從「精英」淪落為「民工」,這也未免太戲劇性了吧!

「程式設計師」真的是「it民工」?

在中國,不少程式設計師都是「crud」程式設計師,這不能怪他們,因為中國多數專案都是crud的。所以,crud似乎成為了「it民工」身上的標籤,問題是crud這活真的象在建築工地上倒水泥一樣,不需要太高的智商和較多的訓練?

下面分析一下需要從事這個crud的工作的程式設計師,到底需要哪些知識和技能。

我大致地思索了一下,畫了以下這個圖,展示出一名 「.net程式設計師民工」要順利參與乙個crud的資料庫應用專案開發所大致需要掌握的知識與技能:

你能成為軟體天才嗎?

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

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

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

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

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

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

但成為不了天才不能成為躺倒不幹的理由。因為這裡有乙個引發了巨大爭論的問題……

智商重要還是努力重要?

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

2023年,諾貝爾經濟學獎得主、人工智慧研究的開拓者herbert simon和william chase在研究西洋棋大師的成長規律時發現:再大的天才,也需要10年修煉成器。

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

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

我引用了這麼多的資料,其實只為了說明乙個結果:

不經「十年寒窗」,「天才」不可能出來。

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

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

(1)「程式設計師」為何是「it民工」?因為這些所謂的「程式設計師」本身就沒有具備從事軟體開發的基本知識與基本技能,加上人數眾多,可替換性強,怎麼會不成為「it民工」?

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

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

下圖是我總結的乙個靠技術吃飯的「程式設計師」知識與能力增長路線圖:

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

我成不了天才,那成為「人材」,可以嗎?

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

完全可以。

我們需要解決的問題是「如何努力」的問題。

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

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

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

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

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

(3)**性的學習與實踐:要將被動的學習轉換為主動的探索,要通過開發實踐把一切給「啟用」。

我寫了不少文章表達過自己針對軟體技術學習的看法,在個人所寫的幾本書的前言中也比較系統地表達過類似的觀點,這裡就不再重複了,這些文章在我的個人部落格上都可以找到。

而我也將在日後的開發與教學實踐中應用這些原則,探索更有效的學習與訓練方法。

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

我是知道我成不了天才,但為何我也沒成「人材」?我可從沒偷懶過啊!

這個問題太有中國特色了!這裡面關鍵有幾點:

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

(2)命運:

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

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

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

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

但不要追問是誰的責任。 

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

路在何方?

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

別想那麼多了,不抱怨不等待,積極努力,想辦法把手頭抓的這副「壞牌」打好,這是最現實最正確的選擇。

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

天才與鍛鍊

天才與鍛鍊 從沙昆塔拉快速計算所想到的 提問者寫下乙個201位的數 916,748,679,200,391,580,986,609,275,853,801,624,831,066,801,443,086,224,071,265,164,279,346,570,408,670,965,932,792,...

我與農民工

晚上回家路上,走進一家超市,恰巧碰到幾個農民工買東西 瓜子 襪子等用品。乙個人獨處的日子多了,總想,我現在算是白領嗎?我也是農民的兒子,從農村讀書,進入了城市生活,單論工資,也早超過了北京市的平均工資,就算在 it業,也不算差,但是,沒有房子,沒有車,甚至沒有朋友,沒有人關心,沒有人愛,更沒有幸福。...

軟體天才都是訓練出來的

長期以來,軟體業 一直被視為 智力密集 型的 朝陽 產業,大多數從業者都受過高等教育,其平均素質居於社會各行業的前列,這個產業的頂尖人物被公眾視為 知識英雄 比如微軟公司的創始人比爾蓋茨雄據世界首富之位多年,更是為人 津津樂道 16年前我下決心開始學習計算機技術的時候,對這個行業也充滿了自豪感。然而...