程序員發展規律--看『第80期IT沙龍實錄:中國軟件業人才打造模式之辯』有感

//周鴻禕(雅虎公司中國區總裁):

第一是目前對軟件藍領的看法非常不認同,大家說像印度學習快速,弄一批人進行專業的補習。認爲這些人只要會寫代碼,再有人做軟件系統架構,再有人檢測bug,就可以了。我個人認爲做軟件應該還是一門藝術,一個優秀的程序員和一個差的程序員,因爲是虛擬的工作,其勞動生產力相差絕對不是十倍二十倍,可能是上百倍、上千倍甚至無窮大。所以在軟件領域,我們還是要呼喚一些個人英雄主義。我們跟Google做過很多交流,雖然Google養了很多的博士,但其真正的核心程序員和核心代碼的數量並不大;

第二個觀點,我看程序員雜誌,我跟蔣濤也是很好的朋友,但我經常抨擊他們的雜誌。我說現在感覺程序員非常熱中於作語言的研究,大家要把C語言C++語言或者一些更新的東西研究得更透徹,動輒就談模式設計和軟件工程,包括張曉明剛纔也提到,我們公司的軟件都是自己做,他們有多好的分工。我覺得現在很多程序員連基本功都不紮實,自己可能還沒寫過十萬行或者二十萬行代碼,本身對編程還沒有一個瞭解的時候,就開始上升到軟件工程,動輒談模式設計。連幾個大規模的系統都沒有設計過,我經常在相關雜誌看到一些論道的文章,我對目前這種看法是比較反對的;

第三個觀點,我聽到很多計算機系的學生都在抱怨中國計算機教育不好。這些學生說現在都流行JAVA,.NET了,各種嵌入平臺,各種Server編程,我們學的內容都是老掉牙的,還是譚老師那本C語言。我的看法恰恰相反,我覺得作爲計算機系的課程或者一個本科生在學校還是應該注重基礎研究。換句話說我在方正管過很多的程序員,這麼多年我們見到真正出色的程序員,其數據結構、編譯原理、基本功一定學得很好,比如他不懂得Windows編程,但給他一週時間,他就可以快速理解,你一旦換到Linux上編程序,他的轉換週期也不會很慢。

我見過一些程序員很熱衷於一些快速開發工具,整天追新,後來程序沒寫幾個,自己的事業也荒廢得差不多了。我覺得計算機系的教育還是應該注重基礎學科其實所有核心的東西都可以向下分解成你在學校學的最基礎課的一些基本的數據結構和算法。所以你的基礎打得越紮實,將來這個人作爲程序員發揮的能量或者說你能夠做的高度越高,這是我第三個比較偏激的觀點. 如果我們大學裏都變成教最時髦的東西,我覺得大學可以不用開了,你們自己去訂閱一份《電腦報》,或者互聯網上什麼新東西都有相信未來互聯網軟件在中國再做二十年,當風險投資,當創業理念和整個社會商業環境變得更好的時候,可能中國軟件業肯定有一個自然的成長。就像你的體育,如果脫離了整個民族體育組織的提高,光去談金牌我想大家是論不出金牌的。

//譚浩強:

(計算機學習的三個層次)整個社會有三種層次,第一個層次是計算機普及教育,第二層次是計算機繼續教育,第三是計算機專業教育。第二個層次是計算機基礎教育或者計算機技術教育。他面對大學生打下計算機應用的基礎,比如一些語言、計算機程序設計、數據庫第三層就要求大學學習很多具體的開發知識,比如C語言,C語言裏沒講什麼開發中的問題。

這個教授的意思就說C是基礎,因爲你把C打好基礎,以後做別的工作就非常容易,所以目前趕時髦的方法我是非常不認同的。來一個新的就學,就像狗熊掰苞米一樣,所以要打好基礎。而C++的本質是解決大型軟件中的問題,如果沒編過大型軟件是不能體會C++的真諦。我說C++可以分兩個階段學習,第一階段在大學階段打基礎,第二階段畢業後遇到問題,編程的時候再學C++,可能學得比較深入大學還是很重要的打基礎的階段,當然這個基礎不能脫離實際,用不到的也學,還是要圍繞將來所需要的打好基礎。所以我認爲這三方面是很重要的,就是要有定位。還有的考題考DOS命令,什麼命令是內部命令還是外部命令,作用是什麼?我說我也背不出來,會用就得了,所以現在教育的確有誤區。

//吳文虎(清華大學計算機教授):

我們的軟件老上不去,我認爲不是我們的人不行,我覺得可能還是一種體制或者其他的東西困擾着我們。因爲他很有興趣,正像我經常講的,如果他對一件事有興趣,你讓他鑽研下去,他覺得是樂趣。對於程序也是這樣,編程序本身可能是一個非常繁重的腦力勞動,很苦。但是他有樂趣,因爲他的樂趣來源於其基礎。我們知道計算機實際是數學的延伸,過去是手算,現在用計算機幫着算。計算機是由於數學發展之後,人們需要計算時,人腦跟不上了。

不是人腦不行,是人腦的速度不行,要用計算機幫着算,這時候我們才發明了新的工具。要把人類通用的智力工具掌握好,來解決我們在現實當中很多問題的話,這個時候他就感覺到數學的美。這個美是一般人體會不了的,在他很累的情況他有美的感受,有愉悅,所以他纔有興趣。
我說,我要教的課應該是一個基礎課,這個課應該是將來對學生一生都要有用的,主要講構思、講方法、講概念,講怎麼編程序,它要建築在什麼基礎上呢?我覺得學生第一重要的是語文,語文不過關,思維是沒有邏輯的,落花都講不利索,將來博士論文寫不出來。譚老師有同感,譚老師的書,沒有語文能寫好嗎?數學也很重要,那是墊底的。

所以我說你注意一條你的學習方法要改變,不能死記硬背,一定要按規律來學。你記住我的一句話,我說你不是聽會的,你也不是看會的,而是你自己踏踏實實、認認真真動手上機實踐理論聯繫實際學會的,否則我耽誤你了。計算機的東西是理論聯繫實際最緊密的一個行業,一門學問你不動手是學不會的。理論聯繫實際。不動手學不會,就是告訴他這個基本原則然後加強實踐,同時也講調試。因爲程序編出來不是唬人的要真的解決問題,人家聘用你,你去做的話必須把東西做出來纔是真本事,否則是紙上談兵。同時對於大學生來講還有一條,一定要教他紮紮實實的一些基本功,特別是思想方法。所以把邏輯和抽象當做一個很重要的概念和訓練,否則到了高層他就上不去了,我們基於對問題的解決,培養它分析問題和解決問題的能力,有很多東西不是我們老師在講而是讓學生自主研究、學習。激勵他能夠自己帶着問題學,如果不會了,你就去研究,去探討,合作研究也行,還要去看很多的書,很多的材料,包括組合數學、圖論、集合論、人工智能搜索算法等等。很多東西都是提前學了,當然數據結構也是非常重要的。

但是他們有一條好的地方,我認爲他跟我們現在課堂的學習不大一樣,他很會找重點,這些中學的孩子。他不是按部就班這本書看下去,不一定,他找到重點能夠學就學到手,學到手解決新的問題,之後進行總結。總結完以後還可以寫出論文,如果論文好的話我們就在冬令營裏讓他交流,而且有嚴格的辦法你就報告十分鐘,然後我們提問題五分鐘最後給你打分,用這種模式培養他的科學精神、科學的方法。因此,我敢這樣講,這批孩子受到訓練,應該說他的級別不是一般高考的人的級別。因爲他已經會自學,自主研究問題。受過這樣訓練的孩子我給你舉兩個例子,有兩個孩子清華畢業以後去了新加坡念碩士,他就按照這個模式一年裏寫了十幾篇文章,一年博士就畢業了。這兩個人一個叫黃高峯一個叫徐宙,一個去了英國一個到香港科技大學讀博。這還不是我們最優秀的。所以我覺得人才怎麼培養的確是一個大問題,這方面可以改革的東西挺多的。我見到很我人,我有這個感覺,很多做軟件很成功的人不一定是搞軟件的,很多人是學數學、學物理的,整個軟件做得非常好的,帶一隊人馬來做,因爲他思維非常好。

所以過於急功近利的思想,是這一階段我們社會很多人特別明顯的特徵。紮紮實實地做起,目標清楚,我將來想幹什麼,在大學中如何一步步地安排自己的路。其實有學生非常聰明,到後期有些學計算機同時學法律,這就非常好,將來打官司打不清楚就找他,所以我覺得我對大家有一個忠告,根據自己的興趣,設計自己的路,然後提前準備,不要等以後找不到工作的時候再準備,那就來不及了。就是說不是計算機專業出來的成了計算機專家,原因何在?就是因爲他是複合性人才,因爲他本來有自己的專業,把計算機當做工具。儘管我學的課程不如計算機系的人多但是實用的,學一門用一門,經過累計在自己的領域中如魚得水。而計算機專業很大的弱點是沒有對象,只懂計算機,而這些人恰恰有這個優勢,既懂本專業又懂計算機,將兩者結合起來。我們的學習方法是對頭的,不是拿本書看,那沒用的。我們拿計算機來拆,去研究裏頭有什麼,把核心的軟件剖析一下,怎麼寫的,這樣我就會Basce彙編語言了,我就可以去講Basce和彙編的課了。
爲研究計算機怎麼上顯示器,我就去研究,當時我們的那臺顯示器是一臺電視機,我就自己裝一臺電視機出來就會了,我就可以講電視原理的課。我們是通過理論聯繫實際動手學會的。我要想把一個問題學透就給人課,我要給人講不明白就說明我沒學會我就必須去鑽研。除了智力因素外我們強調非智力因素,這在我們的軟件人才打造方面非常重要,集體精神和團隊的精神都要納入素質軌道,你學歷再高,不能跟人家合作就沒辦法把自己的力量全部發揮出來 。

//蔣濤(《程序員》總編):

就是現在信息化的社會和以前不一樣,以前是幾百人幾千人供養一個很高級的人物,供養一個科學家。現在可能是一個科學家、一個天才的發明能造福幾千人、幾萬人。像我們有了Google,圍繞Google有衆多的公司和人在生存。我最近看了一本書講這樣的理論,經濟和所有的數據只有到了一個規模纔會產生質變,到了百萬可能質變。所以西方文明誕生在希臘是因爲希臘第一次達到了百萬級人口的城市就產生了民主和系分文明的燦爛。我們也一樣,需要一個很好的基礎可能就會出現更多的天才級人物反過來再推進整個行業的發展。現在我們的基礎有點問題,我們百萬的基礎還有點不給力,包括我們現在統計的數據和國家統計的數據人數是不夠的。

我拿到主題討論的時候也講到這點,60%的企業沒有對員工進行再教育和再培訓的工作,這樣必然出現一個惡化的結果。就是說這個人學的東西在公司裏爲工作而工作。他的成長要靠自己的摸索,這樣我們很多技術都是重複建設,經驗不能傳承。我們在學校得到了老師的經驗,但工作中只能自學成才,這時候就是個很大的問題。

我們對比看歐美,他們有一條完整的信息技術的傳播鏈,有在第一線工作的專家人員,有十年二十年的工作出來做傳播的工作,他們也做教育的工作,但教育並不僅僅在學校。當然他們也進學校,也針對企業。我們基礎教育的書,包括譚老師的書都有很好的讀者,也引導很多人進入這個行業,進入這個行業以後,再看書我們可以問一下,在作爲的軟件公司裏他們看的90%以上是外版的書,這些外國專家不是教授,都是在企業裏做的,或者專門做技術諮詢、顧問,講座。我們沒有,包括我們雜誌也是填補了一個空白。原來只有學術性的雜誌,再有就是大衆性的雜誌,沒有真正針對第一線的雜誌,比如我對UM的應用有意見,認爲它不適合中國的國情,這樣的話都沒有地方讓他說。所以我們很多時候是重複建設,印度和歐美在這方面解決得比我們好一些,就是軟件行業的分工,信息技術傳播的分工。我們由於分工鏈不同,企業本身也有分工,關注企業的核心才能成長得更快,技術傳播的過程也不能由基礎教育承擔所有的工作,也不能讓我們的企業承擔教育成長的過程,因爲企業特別是在我們現實的環境下可能是以生存爲第一位的,再負起教育的責任帶也是有難度的,所以應該有更細的分工,這樣整個行業通過這種能打好一個基礎,建立好基礎以後再有市場調節整個行業才能往前發展。我認爲這個可能是我們現在比較欠缺的一點。
————————————————
版權聲明:本文爲CSDN博主「zhao_tao」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zhao_tao/article/details/281105

第80期IT沙龍實錄鏈接:
https://tech.sina.com.cn/roll/2004-11-29/1725466836.shtml








以下部分是自己寫的,結合自身思考總結一下。

現在整體來說開發了一年多了,確實還是會對自己的未來和行業整體未來感到迷茫。人都是有惰性的,我本身數學不是很好,想逃避數學,所以想進入管理崗。但是看前輩們描述管理崗也並不一定就好,要八面玲瓏,會各種管理軟件,做好上下級、客戶的溝通,手機最好24小時待機。
至於想要做好程序員,確實你數學基礎一定要紮實,這一點,在近些年大數據和人工智能研究上體現的很明顯。作爲一個懶人,都不知道該幹什麼了。

那就還是繼續在這個行業待着吧,繼續提高自己,先把java摸透再去學習更高深的理論(譚浩強教授、周鴻禕)。
培養“畫重點能力”,提出問題,解決問題,總結經驗(吳文虎教授)。

要有一次一個臺階的能力,不能每一次開發,都是從零開始,需要在原有基礎上逐步提高(蔣濤)。

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