IT行業(yè)自上個世紀70年代蓬勃發(fā)展,直到現(xiàn)在,如何管理好軟件項目還一直是大家討論的話題。這是因為軟件項目失敗的太多,比如項目徹底被取消、項目的工期拖延等等。
就中國目前很多軟件開發(fā)團隊的實際情況來看,從某種程度上來說,錯誤的使用和依賴兩個軟件來管理項目是項目失敗的一個重要理由。這兩個軟件就是Microsoft Project和Microsoft Word。 就像釘釘子,總是用一把斧子。
工程項目 vs 軟件項目
Microsoft Project本身是一個不錯的項目管理工具,能夠做任務分配,Petri-NET, Gannt圖,資源使用分析等等。但是,Project是用來管理工程項目的,如造房子,修大橋等等。這些工程類的項目一般使用以任務驅(qū)動的管理方法。而軟件項目和傳統(tǒng)的工程項目有本質(zhì)的差別,那就是任務的不確定性。舉個例子,目前房地產(chǎn)很火,造什么樣的房子,只要資金到位,都能保質(zhì)保量的造好。造10層樓,1層用多少人天,每天做什么,很容易計劃,分配任務,人力資源。而且需求是不會變的。沒見過造房子,蓋了3層之后改主意了,拆了重新蓋。
而軟件就大大不同了,需求的變化是不可避免的,而且凡是做過項目的人都知道,需求的變化實際上還挺頻繁。這樣一來,很容易造成計劃趕不上變化,用Project定義任務,計劃工期通常要耗費項目經(jīng)理大量的時間,而且沒有意義。
有人問,為什么需求不能固定下來呢?定下來就不許變。通常工程師會問這樣的問題。如果他變成了客戶,他可能就不會問這個問題了。需求總是會變的。第一:出錢的總是有更多的話語權(當然改需求是要應該付費的);第二:市場的情況在變,比如競爭對手突然發(fā)布了一個新的產(chǎn)品功能, 那我們也必須做出應對,這就要變更需求;第三:寫需求的不是神仙,人都或犯錯誤的,犯錯誤允許改正(但犯錯誤要有懲罰,就是需求變更是要付費的)。 因此傳統(tǒng)的純瀑布式的開發(fā)方式已經(jīng)成為歷史了,愈來愈多的開發(fā)團隊采用極限編程,迭代的開發(fā),來應付需求的變更。
那么軟件項目的這種特點,需要與之相應的項目管理工具。用斧子釘釘子的做法就有點不合時宜了。
和傳統(tǒng)項目還有一個很大的不同,當工程項目拖后了工期,可以多加人手,把工期趕回來。而軟件就不這么簡單了,新來的人要熟悉項目的內(nèi)容就要花時間,工期很難完全趕上。很多IT的老總們體會不到這個問題,總以為多加人手,加班就能搞定。真正的有效的項目管理是要靠一個有效的管理體系來支撐的。
需求的描述
軟件項目有很多不同類型。目前我們所說的軟件項目,多數(shù)指的是應用類(Application)的軟件項目,而不是系統(tǒng)類(System)的項目,如數(shù)據(jù)庫,文件系統(tǒng),開發(fā)工具。系統(tǒng)類的軟件項目和應用類的項目有很大的不同。系統(tǒng)類的項目花很長時間研究體系架構(gòu)(Architecture),設計系統(tǒng)的框架,模塊之間的關系等等。而應用類的軟件基本上會用現(xiàn)成的框架,如J2EE, 或Microsoft的平臺等等,主要精力放在需求的實現(xiàn)上。中國目前的應用系統(tǒng)多數(shù)是為客戶做定制開發(fā)的項目,比如各大企業(yè)、政府、機構(gòu)、國防等做的系統(tǒng),也有一些做產(chǎn)品的,如中小企業(yè)的財務系統(tǒng),通用辦公軟件等等。 針對應用類的項目,我們看看使用Word寫這類的需求有什么問題,為什么有問題。
一般用Word來寫需要,隱含了一個想法,就是一上來把需求都寫好,定下來,然后給開發(fā)部門去實現(xiàn)。一般Word文檔寫的需求很龐大。 而對于應用系統(tǒng)的開發(fā), 我建議使用迭代的方法開發(fā)。上面提到了,瀑布式的開發(fā)已經(jīng)成為了歷史。需求一次性寫好,很難。軟件是慢慢成長起來的(見Microsoft Secrets),一個mi