1. 程式人生 > >印度程式設計師和中國程式設計師的區別

印度程式設計師和中國程式設計師的區別

一個在美國IBM 工作過2 年,在印度公司工作了4 年的專案經理與我公司資深軟體開發經理有這樣一段對話。   印方經理問:"你們每月生產多少行程式碼?"   我方經理掂量了很久,謙虛地說:"人均程式碼1 萬多行吧,不到2 萬行" 。   印方經理聽後,眼睛瞪得圓圓的:"喔!你們已經遠遠超過國際最高水平了。"   我方經理惴惴不安地反問:"你們的呢?"   印方經理很認真地回答:"我們公司目前的效率為每人每月300 行。"   這是一個真實的故事,我想換了其他人(包括以前的我)也會給出同樣的答案。   為什麼與軟體大國有這麼大的差距呢?  首先我們沒有生產率的概念。大多數人是這麼算的,一天編400 行-500 行程式碼還不是小菜一碟。一個月有30天,這樣每月1萬多行還不是輕鬆搞掂?  殊不知,這個偉大的假設有兩個致命的錯誤:第一、沒有考慮需求分析、概要設計、詳細設計、單元測試、整合測試、系統測試的時間,也沒有考慮文件的時間,甚至都有可能不知道有這些過程。   這不是笑話,試問:我們有需求分析嗎?我們有單元測試嗎?我們有程式設計規範,但我們遵守了嗎?   我們的程式碼花花綠綠,風格千奇百怪――   我們不是有"開發完了,還沒有設計文件的經歷"嗎?   我們不是有"要轉中試了,所有人才開始埋頭苦幹寫文件"的經歷嗎?   我們不是有人在文件中寫過,"該軟體對人畜沒有傷害"嗎?   當然,我們更不可能想到有review 的時間,根本考慮不到質量控制?   我們最熟悉寫程式、系統測試、維護,其他的都是多餘。這是典型的小公司游擊戰的做法,一個人搞一個小軟體,不需要任何流程,沒有任何質量體系,除了寫程式碼,測試以外,什麼都不需要,非常自由,自以為" 牛得不行",這很 easy ,那很容易,"管理是羅嗦,流程是麻煩",但實際的結果是什麼樣大家都知道。   第二、一天能寫 400 -500 行程式碼,並不表示,你平均每個月能寫 12000 -15000 行程式碼,道理很簡單,一個人 100 米速度是12秒,並不表示他的3000米速度是6 分鐘。我們不是機器人,寫軟體需要思考,寫嵌入式軟體尤其需要質量。   印度工程師是人,中國軟體工程師也是人,我們的程式碼生產率與水平能高到哪裡去呢?正如大家都是凡人,你突然說你比子彈還快,一蹦3 層樓高。   這真是"無知"者"無畏"?   其實我們的生產率很低,自己不覺得罷了,很多人並不相信我司的公開數字――月產程式碼才120 行?如果算一算所有的人力,所有階段的時間,我們就不會驚奇這個資料了。不信的話,我們拿一個產品算一算!或許我們的經理自己都不知道在這個產品投了多少人力。華為有職業化的軟體開發管理人才嗎?目前幾乎沒有,或許我們真的有月產 2 萬行的程式設計高手,也有很多自以為能寫2 萬行程式碼的" 泡沫"高手,但我們沒有真正專業的軟體人才!   目前我們公司的銷售情況很好,賣得很火。但這是專案開發成功了嗎?不是,可能更多的是市場的成功,以及產品預研立項人員 的成功。生命週期內還要花那麼多維護費用,這怎麼能算成功?如果我們造飛機,我們可能自己都不敢坐。衡量專案成功的標準與要素是什麼?很多人並不知道。印度發展最快的Infosys 公司告訴我們:衡量專案成功的標準是"質量、成本與進?quot; ,達到這一目標的重要條件是"流程、技術、人"。   我們做計劃時,只有進度,或許會考慮一下成本,但從來沒有考慮過質量。我們知道專案開發的質量活動是什麼嗎?我們不知道; 我們知道我們的質量目標嗎?我們也沒有;我們知道如何控制我們的質量嗎?我們沒有幹過。   所以我們才無所畏懼,百折不饒。但如果我們知道"折"一次要花100 萬,我們還會無所畏懼地"百折"嗎?再回頭看看一些業界標準:某印度合作公司通過了 CMM5 級,聯合開發專案的生產率為每月 400 行。其中編碼階段,印度工程師每天可以寫 200 至900行程式碼。   在4 個月的聯合開發過程中――   在編碼速度上,我方優秀工程師與對方差不多,但別人教會了我們如何保證程式碼規範以及程式設計風格的一致;   在閱讀協議標準方面,對方的速度是我們的4 -5 倍;   在設計方面,對方有明顯的優勢;   在質量控制,我們與他們就沒有辦法比較了;   在預測方面,對方估計工作量為36人月,我方估計為22人月,實際數為35人月。   通過對比,我的結論是:我們富有,因為我們有很多bug ;我們快速,因為我們沒有質量體系。   有些人還以為――   會使用配置工具sourcesafe,就知道什麼是配置管理;   會畫CANTT 圖/PERT 圖,就知道專案計劃是怎麼回事了;   填一下表格就是管理;   吃一頓飯就是溝通。   沒有對質量整體的認識,不瞭解其為什麼這麼做,大家就根據自己的過去經驗"理解"、"推測"、"認識"別人,有這麼巨大的認識差距就不足為怪了。   目前,公司在質量體系方面的培訓與推行力度的不斷加強,印度所經驗的不斷推廣,在很多方面,如流程建設、預測、質量控制、度量系統,我們已經初步瞭解該怎麼做。但我們還要不斷地宣傳、不停地鬆土,讓所有的人承認自己無知,只有這樣,我們才能由"無知"變為" 有識"。   "藝低人膽大",今後,我再也不想聽這種大膽的豪言壯語:“我們每月程式碼1 萬行"!