看了《程式設計師的十層樓》,第乙個感覺就是扯淡。這篇文章是乙個叫周偉明的人寫的,他把程式設計師分為10個層次:菜鳥、大蝦、牛人、大牛、專家、學者、大師、科學家、大科學家、大哲。最後還搞了乙個11層:上帝。
程式設計師的職責就是與人合作,把程式寫好。術業有專攻,任何創新都是以前人的大量研究為基礎的。程式設計師如果能有所創新,那也是機會和興趣使然,水到渠成的事情。
其實就我看來,中國最缺乏的不是創新的能力,而是實現的能力。看著那些碩士、博士發表所謂有所創新的**,我只是覺得滑稽可笑。沒有實踐的能力,又何談理論的創新。高校的專案有多少能付諸實際?即使在技術上有些自己的東西,但因為缺乏實現和推廣的能力,最後還是毫無價值。
程式設計師的價值就在於實現,在於把藍圖變成現實世界中有價值的產品。程式設計師的價值只能通過程式體現出來。如果按照周偉明所說的道路走下去,只會產生乙個自以為是又一無是處的人。
理論研究和程式設計是不同的工作。程式設計師要做的只是把確定的演算法或協議實現出來。如果乙個程式設計師能創造新的衛星導航演算法,他就不是程式設計師,而是衛星導航專家。
程式設計師要研究的是怎樣用設計模型(design model)實現領域模型(domain model),怎樣用低耦合、高效率的程式實現設計模型。
後記
我上週六早上起來,按照csdn的推薦讀了這篇文章:
讀後感覺很不爽,就隨手寫下自己的感想,沒想到會有這麼多網友關注。不少網友批評我應該就事論事,不要攻擊別人。我覺得有理,於是刪掉了原文的最後一段。我又仔細想了一下我究竟有沒有說錯,把我的觀點總結如下:
《程式設計師的十層樓》確實有可取之處。如果它毫無可取之處,那就不值一提了。但這篇文章有兩個錯誤的導向,讓我很反感。其一是把程式設計師這個職業無限擴大化了。其二就是「唯有理論高」的論調。
程式設計師是乙個普通的職業,既沒有必要妄自菲薄,也不應該妄自尊大。程式設計師不一定要當一輩子程式設計師。我看到過程式設計師轉行做專案管理、行政管理、雜誌編輯、報社的it部門主管、經營裝潢材料、開教育軟體公司、去外企做fae,做sales,也看到過程式設計師去讀博士、博士後,當大學老師、搞科學研究。程式設計師轉行以後就不是程式設計師了。但如果乙個人還是程式設計師,就應該做好程式設計師的本職工作。
評價乙個程式設計師的水平,我覺得主要有4點:語言、環境、思想和經驗。乙個優秀的程式設計師既可以對著uml圖講系統架構,也可以講出系統執行中每個時刻每個位元組的含義。要達到這樣的水平,需要長時間的積累。如果每個程式設計師都是工作幾年就轉行,那麼中國的軟體開發水平就很難提高。要提高中國的軟體水平,社會上應該形成能讓程式設計師安心地研究和工作的氛圍,而不是讓他們整天擔心35歲之後怎麼辦或者整天想著怎麼成為學者、大師、科學家、大科學家、大哲。
對於現階段的中國,理論研究和「將理論付諸實現的能力」,究竟誰更重要?這是仁者見仁,智者見智的事情。我一味強調「實現的能力」,是因為現在的中國太不重視「實現」了。
在我看來,中國人不用自己的cpu、不用自己的作業系統、不用自己的辦公軟體、不用自己的手機晶元、不用自己的手機軟體,不用自己的衛星導航晶元,其主要原因不是缺乏理論,而是缺乏「將理論付諸現實的能力」。例如:大規模軟體設計能力、專案管理能力、商務推廣能力等。
國內有很多單位搞過自己的cpu、自己的作業系統、自己的辦公軟體、自己的手機晶元、自己的手機軟體、自己的衛星導航晶元,為什麼不能取得商業的成功呢?其中有標準、專利的因素,但缺乏實現和推廣的能力是乙個很重要的因素。如果所有理論只停留在**、出版物、學位答辯、專家或院士的頭銜上,這種理論有什麼意義呢?
有的朋友說國內做不出東西是因為沒有鼓勵創新的環境。但就我看到的大多數專案,國家是花了很多錢的,專案領頭人也是有真才實學,有自己的技術的。為什麼還是不成功?
做乙個產品不是光有核心技術就可以了。這些產品沒有獲得成功不是因為核心技術,失敗的原因在於具體的軟硬體設計、人性化設計、專案管理、商業推廣。其實這些看似不核心的技術裡面也蘊含著很多經驗、思想、教訓。如果中國的每個程式設計師都想著做科學家,研究高深的理論。那麼誰來把這些理論變成有價值的東西呢?周偉明言論的危害就在於此。
在不少人的思維中,總是以官僚為高,勞動者為低;腦力勞動為高,體力勞動為低。這種思維模式是有害的。乙個人的價值在於他為社會作了多少貢獻,而不在於他占有了多少社會資源。社會需要卓越的管理者,但不需要每個人都成為管理者。社會需要科學家,但不需要每個人都成為科學家。如果乙個社會的每個人都只想著出人頭地,做人上人,占有更多的資源,這個社會能做出穩定可靠的產品嗎?
有的網友說「你和周偉明究竟誰是盲人」?關於這一點,我在一篇舊文中說過,這世界上唯一的真理就是不要盲目相信真理。不要盲目跟隨別人,我的經歷決定我的看法,你要根據自己的經歷和體驗形成你自己的看法。
程式設計師的十層樓(4 5層)
當然,由於各個專業領域的差別,這裡舉作業系統 編譯器 tcp ip協議只是作為例子,並不代表成為 大牛 一定需要掌握這些知識,以時下熱門的多核程式設計來說,如果你能比牛人們更深入地掌握其中的各種思想原理,能更加自如的運用,並有能力去實現乙個象開源專案tbb庫一樣的東西,也可以成為 大牛 又或者你能寫...
程式設計師的十層樓(4 5層)
當然,由於各個專業領域的差別,這裡舉作業系統 編譯器 tcp ip協議只是作為例子,並不代表成為 大牛 一定需要掌握這些知識,以時下熱門的多核程式設計來說,如果你能比牛人們更深入地掌握其中的各種思想原理,能更加自如的運用,並有能力去實現乙個象開源專案tbb庫一樣的東西,也可以成為 大牛 又或者你能寫...
程式設計師的十層樓(4 5層)
zhouweiming 周偉明 32 篇文章 日期 二月 4,2009 在 2 38 下午 第1 3層,請看這裡 第4層 大牛 當然,由於各個專業領域的差別,這裡舉作業系統 編譯器 tcp ip協議只是作為例子,並不代表成為 大牛 一定需要掌握這些知識,以時下熱門的多核程式設計來說,如果你能比牛人們...