我曾任職的某公司軟件工程中心有8位項目經(jīng)理,成功地管理過許多應(yīng)用軟件開發(fā)項目,部門同事戲稱他們“八仙”,因為他們帶項目的風(fēng)格迥異,就像八仙過海,各有神通。
第一位,性格溫和、思路清晰。走的是專家形象的路子,只要和用戶交流一次,就能獲得用戶認(rèn)同和尊重;一般問題剛有苗頭,就會被他察覺,并化解于無形之中。因此被用戶敬若神明,言聽計從。
第二位,性格開朗、善于溝通。走的是關(guān)系調(diào)節(jié)的路子,幾次接觸,就能和用戶稱兄道弟,于是項目中所有的問題都在酒桌上解決。
第三位,善于把握用戶心理和用戶內(nèi)部之間的矛盾。走的是威逼利誘的路子,由于項目中用戶方關(guān)鍵人員有的涉足幕后交易,因此往往有苦難言,只能就范。因此,即使遇到最刁鉆、難纏的客戶,經(jīng)他一番軟硬兼施,最后也都能擺平。
第四位,為人踏實、肯干,富有耐心,走的是埋頭苦干的路子,態(tài)度極佳、有求必應(yīng),和用戶處的時間長了,就是鐵石心腸的用戶也不再忍心刁難。
而其他幾位,也都可以歸結(jié)為以上某兩種或幾種類型的結(jié)合。
在大家津津樂道他們傳奇般的成功項目管理經(jīng)歷之余,我曾私下向他們?nèi)〗?jīng):如何才能取得軟件開發(fā)項目的成功?他們的觀點居然出奇地一致:最重要的是規(guī)范開發(fā)過程管理!
那么,為什么要規(guī)范軟件開發(fā)過程?又如何規(guī)范軟件開發(fā)過程呢?
我認(rèn)為規(guī)范就是要約束自己、約束參與軟件開發(fā)過程的各方,目的是要消除軟件開發(fā)中的種種不良做法和習(xí)慣,采用符合軟件規(guī)律、事半功倍的方法,降低風(fēng)險,以使軟件開發(fā)項目能獲得可重復(fù)、可以預(yù)期的滿意結(jié)果。
總結(jié)多年來項目管理的實踐經(jīng)驗和感悟,我覺得要規(guī)范軟件開發(fā)過程必須做好“三化”、同時避免踏入兩個誤區(qū)。所謂做好“三化”、避免踏入兩個誤區(qū),就是指要堅持固化、簡化、標(biāo)準(zhǔn)化,避免踏入僵化、隨意化兩個誤區(qū)。
第一,要“固化”。
軟件過程又稱“軟件生存周期過程”,是軟件生存期內(nèi)為達(dá)到一定目標(biāo)而必須實施的一系列相關(guān)過程的集合。說白了,就是軟件開發(fā)中一系列最佳實踐的集合。所謂“固化”,其本質(zhì)就是把軟件開發(fā)過程中已被實踐反復(fù)證明的、符合軟件規(guī)律的正確做法(最佳實踐)沉淀在開發(fā)管理流程之中,供后人實踐時借鑒、使用。
軟件企業(yè)是一個天才匯集的地方,是人類智慧最集中的場所之一,同時,由于軟件人才的流動性很強,軟件企業(yè)又是智慧流失最快的地方。我覺得,軟件企業(yè)要想做大、做強,除了采用好的機制留住人才之外,最重要的是沉淀眾人的智慧。而企業(yè)沉淀眾人智慧有三個載體:第一是知識庫,第二是流程,第三是軟件資產(chǎn)庫(面向領(lǐng)域的軟件構(gòu)架及構(gòu)件庫)。沉淀眾人智慧的過程就是“固化”。
有了固化的軟件開發(fā)管理流程,才有了規(guī)范軟件開發(fā)過程的基礎(chǔ)。通過不斷地固化軟件開發(fā)實踐中符合規(guī)律的正確做法,我們得到了流程規(guī)范。然后,用這些流程規(guī)范指導(dǎo)新的軟件項目開發(fā),并在開發(fā)實踐中持續(xù)改進,從而使得我們的軟件開發(fā)過程越來越規(guī)范。
固化的軟件開發(fā)實踐分為兩個層次,一個是制度,一個是指南。制度是公司強制執(zhí)行的一些流程規(guī)范,不可缺失、省略,如公司制定的標(biāo)準(zhǔn)、規(guī)范、管理制度等;而指南是一般情況下推薦執(zhí)行,建議這么做,允許根據(jù)項目實際情況適度剪裁、取舍,如公司定義的軟件開發(fā)過程模型、模板等。實現(xiàn)固化的手段也多種多樣,如通過管理制度、定義開發(fā)過程、采用軟件工具、培訓(xùn)等,根據(jù)本人實踐體會,采用一些項目管理輔助軟件工具,不失為“固化”眾人智慧、規(guī)范軟件開發(fā)過程管理的有效手段!
說到“固化”,有的企業(yè)走向了另一個極端:僵化。不顧本企業(yè)、本項目的實際情況,對ISO9000、CMM、ISO12207等標(biāo)準(zhǔn)盲目地生搬硬套、墨守成規(guī),對其他企業(yè)的成功經(jīng)驗不加消化的照搬照抄、教條主義,從而扼殺了項目團隊的主觀能動性和創(chuàng)造性。殊不知,標(biāo)準(zhǔn)、規(guī)范、過程模型、模板是死的,參與項目的團隊成員才是規(guī)范軟件開發(fā)過程的主角和靈魂。
第二,要“簡化”。
“固化”只是規(guī)范軟件開發(fā)過程的“靜態(tài)基礎(chǔ)”,而“動態(tài)管理”對于規(guī)范軟件開發(fā)過程更為重要。
回顧上個世紀(jì)70年代,軟件開發(fā)很簡單,因此很容易規(guī)范。隨著軟件項目規(guī)模越來越大,軟件開發(fā)過程越來越復(fù)雜,涉及的人、財、物資源也越來越龐大。復(fù)雜導(dǎo)致多變,多變帶來隨意,隨意容易使軟件開發(fā)誤入歧途,使開發(fā)過程難以規(guī)范。所以說規(guī)范軟件開發(fā)過程還必須簡化軟件開發(fā)過程!
說到簡化,也有企業(yè)走進了“隨意化”的誤區(qū)。自由主義、經(jīng)驗主義隨心所欲地發(fā)揮,口頭協(xié)議滿天飛,時間緊、人手不足是他們拋棄規(guī)范、拒絕監(jiān)督的最佳接口。其實,簡化絕不意味著隨意化。
如何簡化呢?我認(rèn)為采用基于構(gòu)件的軟件開發(fā)方法就是一種有效手段。通過對應(yīng)用領(lǐng)域的研究(領(lǐng)域工程),提煉領(lǐng)域需求的共性和變化性,刻畫領(lǐng)域模型,設(shè)計面向領(lǐng)域的體系結(jié)構(gòu),開發(fā)各種構(gòu)件,從而使應(yīng)用軟件的開發(fā)過程更接近于工業(yè)化生產(chǎn)流水線,基于體系結(jié)構(gòu),用各種構(gòu)件進行組裝。簡化了的軟件開發(fā)過程,變化因素更少,更容易規(guī)范管理。
第三,要“標(biāo)準(zhǔn)化”。
前面所說的固化、簡化都只是單個企業(yè)內(nèi)部的實踐行為,而“標(biāo)準(zhǔn)化”則是整個社會范圍內(nèi)的固化和簡化行為。技術(shù)標(biāo)準(zhǔn)化、管理過程標(biāo)準(zhǔn)化、度量標(biāo)準(zhǔn)化、應(yīng)用領(lǐng)域內(nèi)業(yè)務(wù)的標(biāo)準(zhǔn)化,都是推動整個軟件行業(yè)內(nèi)、軟件產(chǎn)業(yè)鏈上各個企業(yè)規(guī)范軟件開發(fā)過程的前提基礎(chǔ)和有力保障。標(biāo)準(zhǔn),凝聚著眾多企業(yè)、科研院所的智慧,同時,又大大簡化了標(biāo)準(zhǔn)所規(guī)范的領(lǐng)域內(nèi)軟件開發(fā)過程。當(dāng)然,標(biāo)準(zhǔn)化也是規(guī)范軟件開發(fā)過程的征途上最漫長、最困難而又最具意義的一步。
總之,失敗的軟件項目各有其失敗,而成功的軟件項目都一樣:離不開規(guī)范的軟件開發(fā)過程管理。固化、簡化、標(biāo)準(zhǔn)化正是規(guī)范軟件開發(fā)過程重要的三個方面。
【?發(fā)表評論?0條?】