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