概述:
目前一些軟件開發(fā)團隊,特別是中小型團隊,由于在低成本模式下運行,加之對軟件過程管理的不盡規(guī)范,在團隊建設(shè)上只重視代碼開發(fā),不重視設(shè)計,只重視編程技術(shù),不重視需求分析、架構(gòu)設(shè)計等技術(shù),只重視開發(fā)過程,不重視測試過程,只重視任務(wù),不重視風險等問題,是許多軟件公司不能很好的以高效率模式開發(fā)出穩(wěn)定可靠的軟件產(chǎn)品的重要原因。
軟件產(chǎn)品的開發(fā),技術(shù)路線確定以后,團隊組織以及過程管理就成為團隊領(lǐng)導人的核心工作內(nèi)容,項目負責人一般情況下也是技術(shù)決策人,這種角色的兼任對中小團隊來說也是有效的,但問題出現(xiàn)在項目負責人大多都是優(yōu)秀程序員出身,對軟件技術(shù)有著很高的熱情,但對項目管理以及更高層次上的團隊建設(shè)方面就顯得有些能力不足。這也會造成一些軟件開發(fā)的高手做出來的產(chǎn)品卻不盡如人意的尷尬局面。
?
其實在工作中,以公司的現(xiàn)有條件以及技術(shù)特點,在目前一些成熟的模型基礎(chǔ)上建立個有公司自身特點的團隊建設(shè)基本原則以及實施辦法,執(zhí)之以恒的加以貫徹執(zhí)行,對公司產(chǎn)品目標的形成,公司核心技術(shù)的形成,公司核心團隊的形成都會產(chǎn)品重大的影響。
?具有一定普遍意義的風險:
在許多項目開發(fā)或產(chǎn)品開發(fā)中,失敗的原因一般有以下幾類,一是功能及性能沒能滿足應(yīng)用的需求;二是需求變化導致項目成本的增加;三是技術(shù)水平不足導致項目成本的增加;四是團隊出現(xiàn)重大變動,導致研發(fā)過程不能正常繼續(xù)。
?
功能及性能方面:一般來說,功能及性能方面主要是需求目標沒能得到充分重視,特別是性能、安全以及部署等非功能性需求;對核心業(yè)務(wù)本身,需求分析過程中是被關(guān)注最多的,但如何理解這些核心業(yè)務(wù),如何用正確的架構(gòu)完成核心業(yè)務(wù)的實現(xiàn),這期間如果控制不當,也會產(chǎn)生許多導致成本增加、工期延長等許多不確定性結(jié)果。在需求分析階段,對需求沒有系統(tǒng)的過程控制,帶來的風險是非常大的,這往往會成為項目失敗在技術(shù)上的最先出現(xiàn)的原因;雖然所有的軟件團隊對需求分析都非常重視,但如果在方法及管理過程中不能有效的控制與管理,也很難避免由于需求階段存在的風險給整個產(chǎn)品或項目帶來嚴重的問題,幾乎所有的中小型軟件團隊都會有過類似的經(jīng)歷。
需求變化:需求變化是當前軟件產(chǎn)品或項目必需適應(yīng)的,為了具備這個適應(yīng)能力,除了在架構(gòu)設(shè)計方面要考慮到系統(tǒng)的可維護性,可擴展性以外,對需求的變更管理及相應(yīng)的風險評估經(jīng)實踐證明是比較有效的管理手段,在這方面技術(shù)與技術(shù)管理同樣重要,缺少哪個環(huán)節(jié),都會給產(chǎn)品或項目帶來可能導致項目失敗的隱患。
技術(shù)水平不足:在沈陽地區(qū)具有一定的普遍性,目前沈陽市軟件開發(fā)人員資源并不豐富,大多數(shù)優(yōu)秀開發(fā)人員都流向了北京、上海等行業(yè)發(fā)達地區(qū),其它比較好的開發(fā)人員基本上都在大型企業(yè)中,根據(jù)近兩年的經(jīng)驗,能在社會中用招聘方式組建的研發(fā)團隊,即要有一定的實踐經(jīng)驗,同時要保障在同一平臺下工作,其質(zhì)量很難達到快速開發(fā)的目的,即使是存在了許多年的團隊,也會隨著技術(shù)人員的流動對團隊技術(shù)水平帶來許多的不確定性;如何能有效的吸引高素質(zhì)高水平程序員,如何有效的培養(yǎng)高忠誠度的核心員工以及如何有效的利用外部資源,這是目前大多數(shù)軟件開發(fā)團隊所面臨的重要課題。
團隊出現(xiàn)重大變動:這是個比較極端的情況,但卻會經(jīng)常發(fā)生,在對2003-2004兩年政府項目就多次出現(xiàn)了因為項目團隊中人員流動多大,導致項目無法進行的情況(如省民防辦、新聞出版局等),這也是一個不容忽視的風險。
要有效的規(guī)避風險,在其變成問題前采取有效的措施,是風險管理的主要任務(wù),這里并不做具體的風險評估,只是由于在團隊建設(shè)方面存在的一些不完善,會成為這些風險(甚至不只是這些)存在的原因,所以才顯得重要,其實說到底,就是軟件產(chǎn)品不可能是小作坊式的開發(fā)方式能完成的,是否具備完善有效的控制能力,規(guī)避由其所帶來的質(zhì)量與可靠性方面引起的風險是關(guān)系到團隊生存的大事。
?
團隊模型的完善:
團隊模型是軟件開發(fā)隊伍建設(shè)的基礎(chǔ),一個結(jié)構(gòu)合理的團隊,雖然不能保證項目一定成功,但卻是保障產(chǎn)品長期穩(wěn)定的保持高質(zhì)量、高可靠性的基礎(chǔ)。
這里所建議的團隊模型,參考了敏捷開發(fā)和CMM、MSF等重要模型,并在實踐中應(yīng)用了兩年以上,應(yīng)該說是一個有效的中小團隊模型;這個模型本身不是固定不變的,它應(yīng)結(jié)合不同時期,不同團隊的特點,加以完善,提高其可行性與有效性。
?
團隊模型中的重要概念:
團隊的基本構(gòu)思:
為了彌補傳統(tǒng)項目小組自上而下的層次結(jié)構(gòu)的一些不足,研發(fā)團隊應(yīng)是小型、跨學科的小組,在這樣的小組中成員們共同承擔各項職責,權(quán)衡彼此間能力差異,以便將主要精力集中到手頭上的工作中。他們擁有共同的項目前景,以部署產(chǎn)品為中心,堅持高標準的質(zhì)量和溝通,保持樂意學習的心態(tài)。本文描述了小組中的各種角色群,以及他們的目標和職能領(lǐng)域。同時提供了指導,以便根據(jù)產(chǎn)品規(guī)模和復雜性來保障一個高效的團隊。
清晰的責任,共同的職責:
將工作進行中需要共同承擔的職責和確保工作如期完成需明確的工作責任結(jié)合起來。
團隊模型基于這樣一個前提,即小組里的每個角色都代表了對項目的一種獨一無二的觀點,但是沒有哪個個人能夠完全代表所有的不同質(zhì)量目標。為了解決這一問題,把對各種利益相關(guān)人的清晰角色職責與實現(xiàn)這個項目成功的整個小組的責任結(jié)合起來了。
?
在小組內(nèi)部,每個角色通過對小組本身負責(也對他們各自所屬的組織負責)實現(xiàn)該角色的質(zhì)量目標。在這種意義上,每個角色都對最終解決方案質(zhì)量的一部分負責。小組成員之間共同承擔職責(根據(jù)不同小組角色指派)。角色之間是相互依賴的,有以下兩個原因:首先,就其必要性而言,因為把每個角色的工作分隔開來是不可能的;其次,出于優(yōu)先的原因,如果每個角色都了解全局情況,那么小組的效率會更高。這種相互的依賴性會鼓勵小組成員對由他們負責的直接區(qū)域以外的工作做出評論和貢獻,以確保小組所有的知識、能力和經(jīng)驗?zāi)軌虮粦?yīng)用到產(chǎn)品的構(gòu)造里。項目的成功屬于所有的小組成員;他們共同分享一個成功的項目所帶來的榮譽和回報,他們也同時希望,即使是一項不太成功的項目,也能做到全心投入并從中吸取教訓以完善他們的專長。
?
賦予小組成員權(quán)力:
在一個高效的小組里,所有的成員都被賦予權(quán)力以便根據(jù)他們自己的承諾交付任務(wù),并且充分信任小組的其他成員也能實現(xiàn)各自的承諾。類似的,未來客戶也能夠認為小組將會兌現(xiàn)其承諾,并進行相應(yīng)的規(guī)劃。在最壞的情況下,小組也應(yīng)該盡快地告知客戶項目出現(xiàn)了哪些延遲和變化。
賦予小組成員權(quán)力,讓其承擔指派的承諾。這種授權(quán)包括向小組成員提供進行工作所需的各種資源;負責制定決策以有效影響隊員的工作;理解隊員的權(quán)力界限,并不斷增加各種可用途徑來處理越權(quán)問題。
準備好向其他成員允諾。這些準備包含了心態(tài)(進行面談并樂意采取行動)、就緒,并理解承諾的內(nèi)在含義以及它對當前工作量和資源的影響。這樣做的結(jié)果就是,不到小組成員清楚承諾的內(nèi)在含義,就不要作出承諾。相反,小組成員要提出一個更小的、他們能夠理解的承諾,例如對這些承諾的內(nèi)在含義進行研究,然后再迅速堅定地作出承諾。對較小承諾的成功交付將建立小組的信任。
清晰定義自己擔負的承諾。這樣可以避免一些可能會導致小組成員間信任危機的誤會。
做出一切合理的努力來交付承諾的工作。如果一個小組有來自不同組織的成員,那么合理的期望也將因人而異。例如,某些小組成員可能認為在周末工作是合理的;而其他人則可能將他們視為例外或者可能在周末幾乎不會去上班。
發(fā)現(xiàn)承諾陷入危機時進行真誠的溝通。有時將無法避免事情的變化,原因可能是某些任務(wù)的優(yōu)先級調(diào)整、一個意外事件或僅僅是因為一項工作延期完成。及早的進行溝通將使與之相依賴的其他小組成員可以有機會制定相應(yīng)的計劃。也許他們還可以提出解決這些問題的途徑。
這些行為應(yīng)與企業(yè)文化是融合在一起的,隊員們已經(jīng)將它們視為一種文化,因此很少討論它們。但是,團隊有時需要與不同的組織一起工作,在這些組織中的相關(guān)的價值觀念并沒有被完全地了解和注重。這些組織常常呈現(xiàn)出一種高度推諉的文化,這種文化約束著應(yīng)該開放的信息流。在這些情況下,團隊領(lǐng)導應(yīng)當根據(jù)這一點來清楚地陳述他們的期望并幫助新的小組成員適應(yīng)這種工作方式。
共同的項目設(shè)想:
全力提倡采用一個共同的設(shè)想,以便把注意力放在小組的工作方法上,包括在一個操作環(huán)境里交付產(chǎn)品完整的解決方案及服務(wù)。
對項目和過程的目標有一個清晰的了解是很重要的。因為小組成員和客戶都在猜測這項解決方案能為組織做些什么。一個共同的設(shè)想將使這些猜測明確化,并確保所有參與者都在為完成相同的目標而努力著。共同的設(shè)想是團隊組織模型的基礎(chǔ)之一。
當所有的參與者都了解了這一設(shè)想并朝著這一設(shè)想工作的時候,小組便能夠根據(jù)成員使自己的決策與這一設(shè)想體現(xiàn)的更為廣闊的小組意圖相吻合,從而獲得他們的權(quán)力。
沒有共同的設(shè)想,小組成員可能出現(xiàn)與目標相抵觸的觀點,作為一個團體的交付將變得更加困難。并且即便小組完成交付,小組成員也很難確定自己的成功,因為這種成功依賴于他們評價成功的設(shè)想。
?
以客戶為中心:
滿足客戶對任何優(yōu)秀的團隊來說都被看作是第一位的。在整個開發(fā)過程中,以客戶為中心包含了小組對了解和解決客戶業(yè)務(wù)問題的承諾。衡量以客戶為中心的理念體系獲得成功的方法之一是能否使設(shè)計中每一個特性都符合客戶和用戶需求。同樣,實現(xiàn)客戶滿意度的一個關(guān)鍵方式是使用戶積極地參與設(shè)計并在整個開發(fā)過程中提供反饋意見。這樣,小組和客戶都能的使期望和需求更加吻合。
?
零缺陷:
在一個成功的團隊中,所有成員都感到要對產(chǎn)品的質(zhì)量負責。產(chǎn)品質(zhì)量責任不能由一個團隊成員委托給另一個成員或部門。同樣,每個成員都要作為客戶的擁護者,在整個開發(fā)周期中考慮最終產(chǎn)品的可用性。
零缺陷理念是對質(zhì)量的承諾。這意味著目標是盡可能最高效地執(zhí)行工作,這樣即使不得不在明天就交付產(chǎn)品,他們也可以交付出一些東西。這個想法是讓每一天都有一個接近可交付的產(chǎn)品。這并不意味著交付不存在任何缺陷的代碼;這意味這產(chǎn)品滿足或超出了項目出資人的質(zhì)量要求并在預(yù)想階段被小組接受。
用自動機車裝配線作類比最有力的描述了這一概念。傳統(tǒng)上,工作人員將汽車由單獨的部分組裝起來并且為他們自身的質(zhì)量負責。當汽車下線,一名檢查員進行檢查并判斷該汽車的質(zhì)量是否達到售賣的標準。然而在這個過程的后期,大量的時間將花費在查找所有的問題上,因為在此時進行糾錯是極富價值的。同樣,既然質(zhì)量是不可預(yù)計的,在后期決定產(chǎn)品是否可售賣所需花費的時間也是不可預(yù)計的。
在當前的汽車制造業(yè)中,質(zhì)量已經(jīng)成為了“第一工作”。這意味著當工作正在進行時(例如正在裝配一扇車門或是安裝一部收音機),檢查員同時審查該項工作以確保它符合為標準的汽車所定義的質(zhì)量標準。只要在整個裝配過程中保持該級別的質(zhì)量,那么在后期為確保這輛汽車的質(zhì)量可接受只需要花費更少的時間和資源。這使生產(chǎn)過程更可預(yù)測因為檢測員只需要檢查各個部分的整合處而不是所有個別的工作。
?