其實很早就想寫這遍文章了,趁有點時間,想把自己的感受說一下。我的寫作水平just so so,寫english還好一點,因為不用象中文那樣,要注意那麼多的修辭方式和文采,只需平鋪直敘就行了。
可能我天生就是要註定學Computer的,因為從小學到現在,只有兩堂課是可以的——數學,英語。我那股凡事都要問個為什麼的牛脾氣,更在學數學中體現得淋漓盡致。整天地查書,追問著同學,老師每一條算式,定理的推算和證明,直到最後得知那是一條公理,才心有不甘地停止了窮追猛打,甚至還想弄一些鬼點子來推翻公理。以至同學、老師一見到我就覺得煩。可惜我學藝不精,小中大學都被選拔參加過不少數學競賽,卻沒有拿過一次理想的成績。我那牛脾氣也延續都到寫program中,幾乎什麼都喜歡自己implementation。所以我不太喜歡VB,DELPHI,CBC,什麼都用別人的Component。覺得有一種壓抑感,由於是從SDK學起的,所以Windows的機理也比較清晰,以前還打算把MFC source codes改寫成為自己的classes,可惜MFC實在龐大,而且還在不斷updated,以我一個人的能力完成了約1/3,已經精疲力盡了。以前在國內一直夢想著能到Symantec 這樣的公司做developer,因為很想弄清楚為什麼Norton能把Windows control 起來。
以前總覺得國外的programmer很厲害,若不是的話,為什麼能開發出這麼多改變人類生活Software,但出來見識過了,才知道在技術上,他們也不過如此,反而覺得國內的高手還多一些。也許這與教育制度有關,國內普遍都認為只要數學學好了,電腦也就沒問題了,君不見國產的教科書都是以那些枯燥的數學問題來教導初學者。誠然,數學思維對寫code有莫大的協助,我也是受益者,所以中國人寫程式在同等外界條件下(硬體,資料等)絕對比鬼佬強。但同時也帶來了嚴重的錯誤觀念——“編程研究到一定程度,歸根結底是數學問題”。 剛出來的時候,我也是這樣認為。
我哥也是Master of Computer Science出身,由於他自己的努力,還沒到30歲,已經在3com總部擔任Project manager了。他以前在silion valley 多間公司做過,包括Symantec。兄弟倆經常就computer的問題進行討論,他為了我能儘快適應silicon valley的文化,不斷把不少經驗告訴我,使我收益非淺。發現其實是觀念上的不同。這裡認為“編程研究到一定程度,歸根結底是管理和人類發展的問題”。
一、管理問題: 其實寫code在一個software product生產過程中只佔一小部分,關鍵在於如何使product佔有market和有效管理整個pro- duct的開發過程。這學期在Project Management Course學習中,有兩點很有感受。
(1) At some point in the development, Better becomes the enemy of Good.
(2) Engineers are very good at taking more time and sp- ending more money to make "better" than what the customer ever wanted or has the time or money to pay for.
(3)一群水平一般的Engineers + 一個優秀,經驗豐富的Manager >> 一群拔尖的Engineers。
而中國恰好在管理上缺乏優秀人才,制度和觀念更是與silion valley 的不能同日而語。因此,儘管國內優秀的programmer相當多,但是只是一盤散沙,白白浪費掉。可歎的是有不少國人還白日做夢地期盼著中關村能取代矽谷。若制度和觀念不改變的話,即使把全國最優秀的程式員聚積在中關村,也別想追上矽谷。另一個典型的例子,Linux 如今高唱入雲,而且聚積了世界上許多優秀程式員的成果,但是若它的開發和維護仍停留在以個人或小群體的基礎上,沒有系統性,正常化。即使它的效能比Windows 要好許多,也只能成為那些發燒友桌上的寵物,永遠不能登大雅之堂!如今不少大公司加入其中,對它開發和維護的管理有很大協助,才有可能向microsoft叫板!
二、人類發展從電腦技術的發展曆史來看,電腦最終解決的是人類發展問題,而不是數學問題。很簡單的例子就是,Programming Language的發展,asm-> c-> c++-> java-> CORBA(注意:CORBA不是一種語言)
可以看到這樣的發展,主要是為了方便一個Software,一個Pro-duct 的更有效開發和應用。簡單地說,c使程式員擺脫了機器語言的苦澀,c++(也可以說Object-oriented Languages)使產品的組成、開發、維護更符合人類的思維方式,java在Internet流行的這個年代,順理成章地成為了寵兒,CORBA更是進了一大步,承諾Language-inde-pendence, Platform-independence, Location-independence。已經是相當成熟的Distributed Object Computing。看了許多CORBA 的書,頗有感歎,CORBA應該說是人類思維的發展的一個體現。同時,為中國電腦的研究無奈!這裡的研究可以說是以人為本,為的是在整體上運用電腦促進人類發展,而國內的研究更多的是在於演算法等局部,微觀的研究,這方面雖然是必要,但在觀念上可以看得出人家已經高一個層次了。不誇張地說,silicon valley,它有自己獨特的文化,在這裡,不但可以看到到電腦技術的飛速發展,同時也從中感受到人類思維的發展。這也是為什麼要獨立開辦一個Computer science department的緣故。畢竟,數學與電腦有緊密聯絡,但同時也有許多本質的不同。
以上是我出國後感覺到的不同,歸根到底就是兩個字:“觀念”。這也是我一家之言,盼能與大夥討論一下,為中國的電腦發展出一分綿力。