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