印度是如何做軟體開發的我在工作中,接觸到印度軟體公司開發出來的軟體: 整個體系架構非常清晰,按照我們的要求實現了全部功能,而且相當穩定。但是開啟具體的代碼一看,拖遝冗長,水平不咋樣。我們自己的一些程式員就有怪話了,說他們水平真低。但是!印度人能夠把軟體整體把握得很好,能夠完成軟體,並得到相當好的設計文檔。 而中國人在那裡琢磨資料結構、演算法,介面人員就還沒編碼就想著是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的生涯感到一種無趣?我們現在處於深深的自卑當中,感到中國的軟體工程水平的低下已經是牽涉到民族劣根性的問題了。 1.他們的軟體教育水平:我們招聘印度人,給應聘者出了一份與國內差不多的試卷,有基礎概念和編程題目。等到他們完成後,我們這些中國 的自認高手驚呆了!他們的編程題目簡直象是抄襲的??程式結構,注釋,變數命名就不說了吧,全部都是極其類似! 反觀中國的牛人、高手,每個人有自己的一套。到了新的崗位,先把前任的程式貶損一通,然後自己再開發更多的問題的代碼來代替。我的公 司統計,一個軟體中有4個以上CSocket版本,每個人都覺得別人做得差,自己再搞一套。中國人,就是這個樣子,還會辯解說“我們這樣有創造 性”。其實軟體發展,早就走過了求伯君那個編碼英雄的年代,程式員已經是個坐辦公室的藍領了。你具備擰好一個螺絲釘的能力就可以了,Code 是最低級的事情了。 2.他們許多公司的專案經理根本就不懂技術。中國的專案經理如果不能在技術上壓服下屬,那麼下屬將與他搞鬼,越是高手越喜歡搞鬼,根本不知道作軟體的終極目的是從別人兜裡掏錢,而在內部搞不團結。技術高手都會糾集一些對他技術上崇拜的菜鳥,與管理層作對。 而印度的軟體經理根本就不懂正在做的東西,許多甚至直接就是MBA,或者是領域專家(工業設計、地理專家等),而不是編碼的專家。但是卻 能夠領導大群素質良好的程式員把工作做好,沒有內部不團結的情況。許多印度的程式員加入一個公司很長時間,都不知道自己整天編的代碼是幹 什麼用的。給他們的任務可能就是一個函數的聲明以及該函數要實現的功能。我們呢? 3.他們的編程人員的流動率達到 30%!他們的編程人員流動率(包括內部項目之間的流動)高達 30%,可以想見他們的文檔水平如何。他們的 產品不依賴任何一個人,誰都可以立即辭職,產品的開發還是會正常進行。而中國,是老闆怕總工。技術骨幹擁兵自重,抗拒管理。任何制定好的計 劃,都有可能被技術人員推翻或者跟你消極怠工。 4.他們的開發計劃能夠做到小時層級。如果一個印度公司的專案經理沒有上班,那麼他的下屬將可能不知道作什麼。他們的計劃一般都定到天, 每個基層開發人員每天的工作量就是 8小時。而我們能夠給出月度計劃的公司就很少,而給出的月度計劃要麼不可能實現,要麼就可能被取消。開發人員被初略的給個任務,他在月初,可以慢慢琢磨是做成什麼樣子,然後上上網,聊聊天。到了月中和月末,就開始熬夜編碼。 看到每年,從各大高校不盡牛人滾滾來,我們是不得不要召人,同時又是不抱希望。我公司現在有意以後將核心軟體開發外包給印度公司,中 國人?做做介面吧,中國人做介面會極盡奇技淫巧,搞得花裡胡哨的。BTW,大家不要誤會我有什麼種族歧視。但是我們現在就是對自己歧視,自卑得很。中科院那麼多研究院,連個能用的作業系統 都搞不定。 北大開發一些東西,比如什麼青鳥CASE,就是給一幫人評職稱的。楊芙清院士整天搞來搞去,搞出了什麼東西?B大,T大的人最難管理,牛得看不見人。中國的程式員罵微軟,追 Linux是全世界最狠的,可是我們除了漢化Linux,做了什麼東西出來。CDE 是瑞典人寫的,Linus是芬蘭的,GNome是墨西哥人寫的。哎,我們曾經是多麼的瞧不起印度人...... 來源:http://blog.csdn.net/lin_bei/archive/2006/08/23/1109745.aspx |