中國與印度軟件工程師的比較

        在工作中,接觸到印度軟件公司開發出來的軟件: 整個體系架構非常清晰,按照我們的要求實現了全部功能,而且相當穩定。但是打開具體的代碼一看,拖沓冗長,水平不咋樣。我們自己的一些程序員就有怪話了,說他們水平真低。但是! 印度人能夠把軟件整體把握得很好,能夠完成軟件,並得到相當好的設計文檔。而中國人在那裏琢磨數據結構、算法,界面人員就還沒編碼就想着是Outlook式的還是Visual Studio式的界面。到最後就成爲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。Just do it! 一句話,中國的軟件開發水平低得很。趕不上印度人,印度的軟件公司可以讓高中生編代碼,它的軟件工程水平可想而知。當然,你如果是個很牛的程序員。估計夠嗆,因爲中國的氣氛中,很牛的程序員都很難接受軟件工程的。你可以測試一下自己, 看看自己適不適合現在學習軟件工程:

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

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

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

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

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

  以管窺豹──印度神話

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

  他們的軟件教育水平: 我們招聘印度人,給應聘者出了一份與國內差不多的試卷,有基礎概念和編程題目。 等到他們完成後,我們這些中國的自認高手驚呆了!他們的編程題目簡直象是抄襲的?程序結構,註釋,變量命名就不說了吧,全部都是極其類似!反觀中國的牛人、高手,每個人有自己的一套。到了新的崗位,先把前任的程序貶損一通,然後自己再開發更多的問題的代碼來代替。我的公司統計,一個軟件中有4個以上 CSocket版本,

  每個人都覺得別人做得差,自己再搞一套。中國人,就是這個樣子,還會辯解說“我們這樣有創造性”。 其實軟件發展,早就走過了求伯君那個編碼英雄的年代,程序員已經是個坐辦公室的藍領了。你具備擰好一個螺絲釘的能力就可以了。Code是最低級的事情了。

  2、他們許多公司的項目經理根本就不懂技術。 中國的項目經理如果不能在技術上壓服下屬,那麼下屬將與他搞鬼,越是高手越喜歡搞鬼,根本不知道作軟件的終極目的是從別人兜裏掏錢,而在內部搞不團結。技術高手都會糾集一些對他技術上崇拜的菜鳥,與管理層作對。而印度的軟件經理根本就不懂正在做的東西,許多甚至直接就是MBA,或者是領域專家 (工業設計、地理專家等),而不是編碼的專家。但是卻能夠領導大羣素質良好的程序員把工作做好,沒有內部不團結的情況。許多印度的程序員加入一個公司很長時間,都不知道自己整天編的代碼是幹什麼用的。給他們的任務可能就是一個函數的聲明以及該函數要實現的功能。我們呢?

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

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

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