2009年2月27日 星期五

昨天上了堂課

是我數年來上過最胡說八道的課
細節我懶得講了,我只舉一篇他在教材中引用的文章原文↓

==============================================================

中國軟體業的劣根性(台灣軟體有希望嗎?)

我在工作中,接觸到印度軟體公司開發出來的軟體:整個體系架構非常清晰,按照我們的要求實現了全部 功能,而且相當穩定。但是打開具體的程式一看,拖沓冗長,水平不怎樣。我們自己的一些程式員就有怪 話了,說他們水平真低。但是!印度人能夠把軟體整體把握得很好,能夠完成軟體,並得到相當好的設計 文件。而中國人在那裡琢磨資料結構、演算法,界面人員就還沒寫程式就想著是 Outlook 式的還是 Visual Studio 式的界面。到最後就成為 Code 高手,對某些特定的開發工具精通,但是就是不能保証能 夠把一個軟體穩當、完整的開發出來。

舉個簡單的例子:軟體中需要一個列表,用來表示我們處理的事務。該類表在業務繁忙的時候將變得很大 。中國人就用雙向串鏈,抱著《資料結構》書在那裡寫鏈表的類別。印度人開了一個大陣列,然後就開始 幹。為什麼印度人不用串鏈,他們說:

1. 你們給出的設備最少具備 512M 記憶體,浪費一些沒有什麼。
2. 陣列方式訪問方便、效率高。

看出了一拿到東西就吭哧吭哧寫 Code,和好好進行軟體分析的不同了嗎?

正好前幾天我有幾個同事從印度回來和我們交流,那家公司是 CMM4 級公司,我感受的幾點:

1. 流程重於專案。
2. QC(就是 QA)獨立於研發部門,專門檢查研發部門的開發流程是不是按照既定流程走。如果 QC 覺得流程不對,他會直接上報高層,專案肯定就此停止。
3. 所謂的專案經理(PM)一般也是從程式員升上來的,並不是所謂的不懂技術,一般都至少有四年以上的經驗。
4. PM 主要就是制定開發計劃,負責協調,填寫各種表格。
5. 所有的東西(包括草稿)都有文件。
6. 詳細文件要求達到只有這個文件就可以寫程式的程度,一般寫文件時間占 60%,寫程式時間極少。
7. 有各種詳細的 Review(同行評審),專案組內的,專案組之間的,客戶的...
8. 計劃很詳細,的確能達到小時級,但是實際情況還是誤差比較大,所以他們也有加班.先學習 UML 和 Rose 以及 RUP,不要總是要找著証據。在中國的軟體開發水平下,很難給你一個好的例子,OK?中國人總是要看到一個東西有了試驗田,而且稻子長得好,才換稻種。要知道在國外上述的軟體開發模式的應用,大可以看看 Rational 網頁上的 Story。Just do it!

一句話,中國的軟體開發水平低得很。趕不上印度人,印度的軟體公司可以讓高中生寫程式,它的軟體工 程水平可想而知。當然,你如果是個很行的程式員。估計夠嗆,因為中國的氣氛中,很行的程式員都很難 接受軟體工程的。你可以測試一下自己,看看自己適不適合現在學習軟體工程:

1. 你是不是不能忍受一個寫程式不如你的人做你的專案經理?
2. 你是不是覺得你的老闆對客戶吹牛皮、誇大自己而感到不舒服?
3. 你是不是一個拿到一個需求腦袋裡第一念頭就是如何實現的人?
4. 你是不是很崇拜 Stallman,Linus,很討厭 Microsoft?
5. 你是不是曾經在深夜寫程式的時候,突然感覺到一種乏味,對 code 的生涯感到一種無趣?

我們現在處於深深的自卑當中,感到中國的軟體工程水平的低下已經是牽涉到民族劣根性的問題了。我們 招聘印度人,給應聘者出了一份與國內差不多的試卷,有基礎概念和寫程式題目。等到他們完成後,我們 這些中國的自認高手驚呆了!他們的寫程式題目簡直像是抄襲的?程式結構,注釋,變數命名就不說了吧 ,全部都是極其類似!反觀中國的強人、高手,每個人有自己的一套。到了新的崗位,先把前任的程式貶 損一通,然後自己再開發更多的問題的程式來代替。

我的公司統計,一個軟體中有 4 個以上 CSocket 版本,每個人都覺得別人做得差,自己再搞一套。中國人,就是這個樣子,還會辯解說『我們這樣有創造性』。

其實軟體發展,早就走過了求伯君那個編碼英雄的年代,程式員已經是個坐辦公室的藍領了。你具備擰好 一個螺絲釘的能力就可以了。Code 是最低級的事情了。他們許多公司的專案經理根本就不懂技術。中國 的專案經理如果不能在技術上壓服下屬,那麼下屬將與他搞鬼,越是高手越喜歡搞鬼,根本不知道作軟體 的終極目的是從別人口袋裡掏錢,而在內部搞不團結。技術高手都會糾集一些對他技術上崇拜的菜鳥,與 管理層作對。而印度的軟體經理根本就不懂正在做的東西,許多甚至直接就是 MBA,或者是領域專家(工 業設計、地理專家等),而不是程式的專家。但是卻能夠領導大群素質良好的程式員把工作做好,沒有內 部不團結的情況。許多印度的程式員加入一個公司很長時間,都不知道自己整天寫的程式是幹什麼用的。 給他們的任務可能就是一個函數的宣告以及該函數要實現的功能。我們呢?

他們的編程人員流動率(包括內部專案之間的流動)高達 30%,可以想見他們的文件水平如何。他們的產 品不依賴任何一個人,誰都可以立即辭職,產品的開發還是會正常進行。而中國,是老闆怕總工程師。技 術骨幹擁兵自重,抗拒管理。任何制定好的計劃,都有可能被技術人員推翻或者跟你消極怠工。

他們的開發計劃能夠做到小時級別。如果一個印度公司的專案經理沒有上班,那麼他的下屬將可能不知道 作什麼。他們的計劃一般都定到天,每個基層開發人員每天的工作量就是 8 小時。而我們能夠給出月度 計劃的公司就很少,而給出的月度計劃要麼不可能實現,要麼就可能被取消。開發人員被粗略的給個任務 ,他在月初,可以慢慢琢磨是做成什麼樣子,然後上上網,聊聊天。到了月中和月末,就開始熬夜寫程式 。

看到每年,從各大學不盡高手滾滾來,我們是不得不要招人,同時又是不抱希望。我公司現在有意以後將 核心軟體開發外包給印度公司,中國人?做做界面吧,中國人做界面會極盡奇技淫巧,搞得花裏胡俏的。 BTW,我公司非外資企業,大家不要誤會我們有什麼種族歧視。但是我們現在就是對自己歧視,自卑得很 。中科院那麼多研究院,連個能用的操作系統都搞不定。北大開發一些東西,比如什麼青鳥 CASE,就是 給一幫人評職稱的。楊芙清院士整天搞來搞去,搞出了什麼東西?北大,清大的人最難管理,強得看不見 人。中國的程式員罵微軟,追 Linux 是全世界最狠的,可是我們除了漢化 Linux,做了什麼東西出來。 CDE 是瑞典人寫的,Linus 是芬蘭的,GNome 是墨西哥人寫的。哎,我們曾經是多麼的瞧不起印度人。

最近遊戲橘子出了一款新遊戲叫「天堂」,大家有注意到嗎?我玩了一下。發行方式和經營方向都還不錯 ,找了一個代言人「范曉萱」;拿遊戲光碟不用錢(只要在 7-11 買東西)使用時數卡(在 7-11 有售, 每 12 小時 15 元);電視廣告,雜誌、報紙,不過,技術方面太差了,畫面差,程式能力差,bug 多, 企劃也不行,如果 uo 是 90 分的話,那天堂只有 10-20 分。

這是台灣遊戲的命運,用小錢製作,沒有真正的開發,過分強調執行面而不注重技術面。

這個遊戲若照一般的說法,應該是最好的模式了,在 7-11 的大力支持下,強力的後盾讓他們有了最好的 銷售管道和財力。可是,卻忽略了一個遊戲最重要的部分:「可玩性」。對我來說,這是捨本逐末的做法 。既覺可惜,又覺可惡。可惜的是,還是花了不少人力,財力,卻沒做出像樣的產品;可惡的是,騙了消 費者,又只看錢不好好在遊戲品質上精進。最後的情況是:玩家玩沒多久,就會放棄了。尤其有其他那麼 好玩的外國網路遊戲在競爭。看來,台灣的遊戲軟體還有好長一段路要走呢。

就是中國人的悲哀(台灣也一樣),不管兩岸未來統一或獨立,身上流的都是惡質的血(應該說是基因才 對)誰都不服誰,都想幹老大,很少有團隊精神這一點在基礎科學上已輸給西方國家我們只能在歷史課本 上喊喊中國人的三大發明,真是可笑,我看未來在軟體應用科學上,輸給印度人也是必然的,唉~

感同身受............

==============================================================

這什麼網路小白亂寫的廢水文?

然後居然放在講義裡面當課上,如果管理階層真的這樣想的話,那軟體業吃屎也只是剛好而已 -_-

沒有留言:

CODE { display: block; /* fixes a strange ie margin bug */ font-family: Courier New; font-size: 8pt; overflow:auto; background: #f0f0f0 url(http://klcintw.images.googlepages.com/Code_BG.gif) left top repeat-y; border: 1px solid #ccc; padding: 10px 10px 10px 21px; max-height:200px; height:200px; // for IE6 line-height: 1.2em; } #quote { display: block; /* fixes a strange ie margin bug */ font-family: Verdana; font-size: 10pt; overflow:auto; background: #f7f7f7 url(http://lh5.ggpht.com/_z-VThISftkI/SXUlpyfw9ZI/AAAAAAAABYY/e3GUx9_Z4TE/s288/quote-l.gif) left top no-repeat; border: 4px dotted #ccc; padding: 15px 15px 15px 31px; /*up right bottom left*/ max-height:300px; line-height: 1.2em; }