里,不同的個人會在不同場合下體現(xiàn)出其領導能力,他們會在其專長的領域里擔負起領導職責。沒有哪個人是永遠的領導,因為如果這樣的話,這個人就無法和其他人融為一個整體,而小組的互動會因此而開始分裂。小組的結(jié)構應該是一個網(wǎng)絡型的而不是一個層次型的?!?/P>
——Tom DeMarco 和 Timothy Lister
微軟的團隊是沒有固定的領導的,因為任何人都是領導,每位成員都有不可替代的作用,每位成員在自己專長的領域中擔當領導的作用。
清晰的責任和共同的職責
測試一下大家對這點的理解,如果你的團隊中出現(xiàn)這樣的問題,這樣處理是否合適?
項目進度推遲、項目預算超出計劃,公司領導把項目經(jīng)理叫去,嚴厲的批評了一頓,而沒有責備過任何其他項目成員。
軟件發(fā)布出去后,發(fā)現(xiàn)嚴重的缺陷,公司領導把測試人員叫去嚴厲批評,也沒有責備過任何其他項目成員。
你們的團隊中,有沒有這樣的情況:
只有項目經(jīng)理為項目的進度、預算勞心勞累,其他人都在“安分”地完成“本職”工作,不會主動過問其他情況。
出現(xiàn)問題時,誰是問題責任人的皮球會被踢來踢去,沒有人愿意承擔責任。
為什么有這樣的問題呢?應該如何處理呢?是責任定得不夠清晰嗎?
團隊的每一位成員,肩負起自己所在領域的責任,團隊的每一位成員共同對最終解決方案負責,同時鼓勵小組成員對非他們直接負責的領域作出評論和貢獻。
軟件開發(fā)團隊中,有項目管理、需求分析、設計、編碼、測試等各個領域的人才,每領域的負責人對自己的工作負責?! ?/P>
另外一個方面,軟件是團隊共同勞動成果,所有人對最終的解決方案負責,最終解決方案只要有問題,就是整個團隊的責任,最終解決方案取得優(yōu)異成績,就是整個團隊的功勞。軟件開發(fā)團隊,是一個“一榮俱榮、一損俱損”的團隊,只有這樣才能把全部人的利益扭在一起。
了解了微軟的這個原理后,大家對前面提到的問題是否有了答案?
關注交付的業(yè)務價值
客戶需要的是一把梯子,系統(tǒng)分析員了解到的是一張凳子,開發(fā)人員做出來的是一張桌子,測試人員以為是一張椅子??瓷先タ尚?,但這樣的情況卻經(jīng)常發(fā)生在我們的身邊。關注交付的業(yè)務價值,意思就我們工作中的每一份工作產(chǎn)品,都應該是需求驅(qū)動做出來的,這樣才能保證我們最終做出的軟件就是客戶所需要的東西。這個原理有以下幾層意思:
◆小組成員要對客戶的需求有一致的充分的理解;
◆要讓客戶積極參與到項目過程中去,隨時了解小組的理解和客戶的需要是否一致;
◆需求驅(qū)動地完成所有工作,保證最后的軟件產(chǎn)品符合客戶的需要。
保持靈巧,預測變化
軟件是智力型創(chuàng)造性活動,保持靈活、適應變化是軟件開發(fā)的最高境界了,筆者認為這條原理是最難把握的一條了。
這個原理主要體現(xiàn)在以下方面:
軟件開發(fā)過程
微軟采用的不是RUP,也不是XP,而是類似于螺旋形的階段式分版本發(fā)布。微軟會把軟件分成若干的版本發(fā)布,除了平時我們見到的Beta版、Release版,其實在Beta版之前還會有若干的內(nèi)部版本。
每個版本都包含相對完整的功能,都能實現(xiàn)部分業(yè)務價值。每一個版本就是一個開發(fā)周期,每個周期包含遠景、計劃、開發(fā)、穩(wěn)定、部署五個階段。這樣的一種開發(fā)模型,能很好地適應需求變化,發(fā)現(xiàn)設計、編碼缺陷,優(yōu)化設計,更容易控制軟件質(zhì)量,便于隨時做出商業(yè)決策。
設計方案
執(zhí)著于優(yōu)雅設計的人士,可能很喜歡做出完美無缺的設計,關注于業(yè)務的人士,可能更關注于盡快要拿出軟件。我們追求的是適度設計,而不是過度設計,如何做出一個簡單的而