向國內的程序員開炮

我在工作中,接觸到印度軟件公司開發出來的軟件:

  整個體系架構非常清晰,按照我們的要求實現了全部功能,而且相當穩定。但
是打開具體的代碼一看,拖沓冗長,水平不咋樣。我們自己的一些程序員就有怪話
了,說他們水平真低。但是!印度人能夠把軟件整體把握得很好,能夠完成軟件,並
得到相當好的設計文檔。

  而中國人在那裏琢磨數據結構、算法,界面人員就還沒編碼就想着是Outlook
式的還是VisualStudio式的界面。到最後就成爲Code高手,對某些特定的開發工具精
通,但是就是不能保證能夠把一個軟件穩當、完整的開發出來。

  舉個簡單的例子:

  軟件中需要一個列表,用來表示我們處理的事務。該類表在業務繁忙的時候將
變得很大。中國人就用雙向鏈表,抱着《數據結構》書在那裏寫鏈表的類。印度人開
了一個大數組,然後就開始幹。爲什麼印度人不用鏈表,他們說:

  1.你們給出的設備(小型機),最少具備512M內存,浪費一些沒有什麼。

  2.數組方式訪問方便、效率高。

  看出了一拿到東西就吭哧吭哧作Code,和好好進行軟件分析的不同了嗎?正好
前幾天我有幾個同事從印度回來和我們交流,那家公司是CMM4級公司。我感受的幾
點:

  1.流程重於項目

  2.QC(就是QA)獨立於研發部門,專門檢查研發部門的開發流程是不是按照既
定流程走。如果QC覺得流程不對,他會直接上報高層,項目肯定就此停止。

  3.所謂的項目經理(PC)一般也是從編碼人員升上來的,並不是所謂的不懂技
術,一般都至少有四年以上的經驗

  4.PC主要就是制定開發計劃,負責協調,填寫各種表格。

  5.所有的東西(包括草稿)都有文檔。

  6.詳細文檔要求達到只有這個文檔就可以編碼的程度,一般寫文檔時間佔
60%,編碼時間極少

  7.有各種詳細的review(同行評審),項目組內的,項目組之間的,客戶
的……

  8.計劃很詳細,的確能達到小時級,但是實際情況還是誤差比較大,所以他們
也有加班。

  先學習UML和Rose以及RUP,不要總是要找着證據。在中國的軟件開發水平下,
很難給你一個好的例子,OK?中國人總是要看到一個東西有了試驗田,而且稻子長得
好,才換稻種。要知道在國外上述的軟件開發模式的應用,大可以看看Rational網頁
上的story。Justdoit!一句話,中國的軟件開發水平低得很。趕不上印度人,印度
的軟件公司可以讓高中生編代碼,它的軟件工程水平可想而知。

  當然,你如果是個很牛的程序員。估計夠嗆,因爲中國的氣氛中,很牛的程序
員都很難接受軟件工程的。你可以測試一下自己,看看自己適不適合現在學習軟件工
程:

  1.你是不是不能忍受一個編程序不如你的人做你的項目經理?

  2.你是不是覺得你的老闆對客戶吹牛皮、誇大自己而感到不舒服?

  3.你是不是一個拿到一個需求腦袋裏第一念頭就是如何實現的人?

  4.你是不是很崇拜Stallman,Linus,很討厭Microsoft?

  5.你是不是曾經在深夜編碼的時候,突然感覺到一種乏味,對Code的生涯感到
一種無趣?

  我們現在處於深深的自卑當中,感到中國的軟件工程水平的低下已經是牽涉到
民族劣根性的問題了。

  1.他們的軟件教育水平:我們招聘印度人,給應聘者出了一份與國內差不多的
試卷,有基礎概念和編程題目。等到他們完成後,我們這些中國的自認高手驚呆了!
他們的編程題目簡直象是抄襲的??程序結構,註釋,變量命名就不說了吧,全部都
是極其類似!

  反觀中國的牛人、高手,每個人有自己的一套。到了新的崗位,先把前任的程
序貶損一通,然後自己再開發更多的問題的代碼來代替。我的公司統計,一個軟件中
有4個以上CSocket版本,每個人都覺得別人做得差,自己再搞一套。中國人,就是這
個樣子,還會辯解說“我們這樣有創造性”。其實軟件發展,早就走過了求伯君那個
編碼英雄的年代,程序員已經是個坐辦公室的藍領了。你具備擰好一個螺絲釘的能力
就可以了,Code是最低級的事情了。

  2.他們許多公司的項目經理根本就不懂技術。中國的項目經理如果不能在技術
上壓服下屬,那麼下屬將與他搞鬼,越是高手越喜歡搞鬼,根本不知道作軟件的終極
目的是從別人兜裏掏錢,而在內部搞不團結。技術高手都會糾集一些對他技術上崇拜
的菜鳥,與管理層作對。

  而印度的軟件經理根本就不懂正在做的東西,許多甚至直接就是MBA,或者是領
域專家(工業設計、地理專家等),而不是編碼的專家。但是卻能夠領導大羣素質良
好的程序員把工作做好,沒有內部不團結的情況。許多印度的程序員加入一個公司很
長時間,都不知道自己整天編的代碼是幹什麼用的。給他們的任務可能就是一個函數
的聲明以及該函數要實現的功能。我們呢?

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

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

  看到每年,從各大高校不盡牛人滾滾來,我們是不得不要召人,同時又是不抱
希望。我公司現在有意以後將核心軟件開發外包給印度公司,中國人?做做界面吧,
中國人做界面會極盡奇技淫巧,搞得花裏胡哨的。BTW,我公司非外企,大家不要誤會
我們有什麼種族歧視。但是我們現在就是對自己歧視,自卑得很。中科院那麼多研究
院,連個能用的操作系統都搞不定。

  北大開發一些東西,比如什麼青鳥CASE,就是給一幫人評職稱的。楊芙清院士
整天搞來搞去,搞出了什麼東西?B大,T大的人最難管理,牛得看不見人。中國的程
序員罵微軟,追Linux是全世界最狠的,可是我們除了漢化Linux,做了什麼東西出
來。CDE是瑞典人寫的,Linus是芬蘭的,GNome是墨西哥人寫的。哎,我們曾經是多
麼的瞧不起印度人。
發佈了30 篇原創文章 · 獲贊 54 · 訪問量 50萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章