Posted on 2009-06-18 09:42
mingj 閱讀(3908)
評論(1) 編輯 收藏 所屬分類:
agile 敏捷 、
PM 項目管理
(本文發(fā)表于《程序員》2009年第6期,轉(zhuǎn)載請注明。)
敏捷實踐
下面,我們從“個人-團(tuán)隊-組織”的不同層次分別選取幾個突出實踐簡要解釋它們是如何提供頻繁、直接的反饋。
l
個人層級
測試驅(qū)動開發(fā)能給開發(fā)人員提供最直接也是最快捷的反饋:先寫測試,再用最簡單的方式實現(xiàn),再重構(gòu)代碼以符合簡單設(shè)計的原則。如此短間隔的反饋能很快地告訴開發(fā)人員剛才增加的代碼是否破壞了已有的功能。而且,已完成test case的列表能很清晰地告訴其他人開發(fā)任務(wù)的完成情況。對比著用戶故事的驗收條件,開發(fā)人員很容易評估剩余的工作量,并不至于破壞已有的功能。
l
團(tuán)隊層級
敏捷實踐中的持續(xù)集成,強(qiáng)調(diào)盡可能快盡可能頻繁地提交代碼,與系統(tǒng)的其他部分進(jìn)行集成。在提交新代碼之前,必須保證本地的構(gòu)建過程是成功無誤的。誰提交代碼使得持續(xù)集成服務(wù)器構(gòu)建失敗,必須立即停下手中的活,負(fù)責(zé)修復(fù)構(gòu)建直到成功。下班之前必須要保證持續(xù)集成服務(wù)器上的集成構(gòu)建狀態(tài)是成功的。這樣,開發(fā)人員和團(tuán)隊很容易檢查新功能與其他模塊的集成,另外也把未來的集成風(fēng)險降到最低。
l
組織層級
用戶故事是開發(fā)團(tuán)隊與客戶之間討論需求的基礎(chǔ)。用戶故事必須對客戶有真實可見的業(yè)務(wù)價值,并且必須包含對該需求完成的驗收條件。用戶故事作為業(yè)務(wù)分析人員、測試人員、項目經(jīng)理與客戶一起確定的用戶需求,具有經(jīng)過驗證的確切性。開發(fā)人員開發(fā)故事之前,必須和業(yè)務(wù)分析人員、測試人員溝通理解需求;開發(fā)完故事之后,必須要由業(yè)務(wù)分析人員與測試人員根據(jù)驗收條件進(jìn)行驗收。組織和客戶之間可以針對達(dá)成共識的故事列表來分析項目狀態(tài),從而驗證或者修改項目計劃。
上面只是從“個人-團(tuán)隊-組織”的層次分別挑出了測試驅(qū)動開發(fā)、持續(xù)集成,以及用戶故事的實踐闡述了敏捷實踐如何在不同的層次提供頻繁的反饋,一孔窺豹,還有其他若干實踐在這里就不再贅述??傊?,敏捷眾多的實踐就像組成了一張全面立體的安全網(wǎng),時時刻刻從各個角度給項目成員、團(tuán)隊,以及組織提供短周期的反饋,幫助團(tuán)隊成員不僅感受到開發(fā)過程中的同伴約束,而且也可以感受到來自整個團(tuán)隊的約束,甚至是來自組織之間的約束。這些外來約束也像是纏繞在個人周圍的催化劑,糾正或改善個人的行為,達(dá)到提升個人的紀(jì)律性。
實際團(tuán)隊
經(jīng)過幾天魔鬼般的技術(shù)實踐培訓(xùn),我們在第三天給學(xué)員們安排了全天的模擬項目演練。在演練中,由學(xué)員自行組織自己的團(tuán)隊:選出自己的團(tuán)隊名稱和口號、推選出項目經(jīng)理、各自分配開發(fā)任務(wù),所有人都信心滿滿。在剛開始接觸開發(fā)任務(wù)的時候,他們還是有一些不好的習(xí)慣,這時候,我們鼓勵他們把前幾天學(xué)到的敏捷實踐都用起來。于是就出現(xiàn)了這樣的形式:當(dāng)結(jié)對中的一人先寫實現(xiàn),而不是先寫測試時,另一個人會指出問題,然后重新使用測試驅(qū)動的方式;在提交代碼時,會有培訓(xùn)講師監(jiān)督著他們按照正確的方式來提交;開發(fā)用戶故事,要求開發(fā)人員必須跟分析人員溝通清楚細(xì)節(jié),驗收故事時,開發(fā)人員必須與分析人員和“現(xiàn)場客戶”同時參與驗收......雖然有些磕磕碰碰,但整體上團(tuán)隊還是有條不紊地進(jìn)行下去,而且每個人只需要關(guān)注自己手頭的那部分工作,也易于讓他們把事情做得正確。
到了下午,隨著學(xué)員對技術(shù)和業(yè)務(wù)理解的加深,他們也開始自覺地維護(hù)起開發(fā)過程,使其保持順暢。開發(fā)過程中,結(jié)對的兩人激烈地討論實現(xiàn)的方法,達(dá)成一致后又一起開懷大笑;碰上了問題,主動招手找業(yè)務(wù)分析師詢問需求細(xì)節(jié),如果業(yè)務(wù)分析師也弄不清楚,再找現(xiàn)場客戶來解答,直到三方都滿意;多人開發(fā)遇上了沖突,主動找到對方,商量溝通解決方案,實在不行,就找項目經(jīng)理進(jìn)行溝通協(xié)調(diào);當(dāng)有人提交了代碼使得持續(xù)集成服務(wù)器構(gòu)建失敗,所有人會善意地提醒犯錯的人,督促他們修復(fù);誰遇上了技術(shù)問題,有人聽見了他們的討論就會自發(fā)上前提供自己的信息;項目經(jīng)理因為團(tuán)隊自組織也就從繁雜的管理工作里面脫身而出,饒有興趣地與開發(fā)人員一起結(jié)對干起了開發(fā)的活......整個團(tuán)隊像一列火車一樣,前輪帶動后輪,后輪推動前輪,井然有序,毫不停歇地往前行進(jìn)。
最后,我們作為模擬客戶參加了這個團(tuán)隊的show
case會議,驚訝地看到這個團(tuán)隊的士氣和活力,以及他們完成的工作。特別是他們表現(xiàn)出來的團(tuán)隊集體感,讓人會以為他們是一個磨合很久的團(tuán)隊。項目經(jīng)理還在為沒有完成更多的工作任務(wù)覺得惋惜,但對于“如果給更多時間,是否有信心這個團(tuán)隊可以更好地完成更多的任務(wù)”這一問題,他表達(dá)了明確的認(rèn)同。然后再問“為什么”,他說,這個團(tuán)隊的士氣和紀(jì)律讓他刮目相看,目前完成任務(wù)的質(zhì)量讓他對未來的任務(wù)充滿信心。最后問“愿意率領(lǐng)這樣的團(tuán)隊么?”,答案是“為什么不?”
作者簡介:金明,ThoughtWorks咨詢師,InfoQ中文社區(qū)編輯,SCJP,系統(tǒng)分析師。他在機(jī)械模具、數(shù)字安全證書,以及海洋航運等行業(yè)擁有超過4年的企業(yè)應(yīng)用開發(fā)經(jīng)驗。他對敏捷方法學(xué),特別是敏捷咨詢和項目管理,以及面向?qū)ο蠓治龊图軜?gòu)設(shè)計等方面有濃厚的興趣。
--完--