Posted on 2009-06-18 09:40
mingj 閱讀(4144)
評(píng)論(0) 編輯 收藏 所屬分類:
agile 敏捷 、
PM 項(xiàng)目管理
(本文發(fā)表于《程序員》2009年第6期,轉(zhuǎn)載請(qǐng)注明。)
在軟件行業(yè),大部分經(jīng)理們都希望自己率領(lǐng)的團(tuán)隊(duì)能像軍隊(duì)一樣具有鐵的紀(jì)律性。在一次敏捷培訓(xùn)中,我們與眾多來自國內(nèi)軟件公司的項(xiàng)目經(jīng)理們討論了敏捷,以及他們現(xiàn)在各自的開發(fā)方法和問題。閑談中,一位學(xué)員冒出一句,“開發(fā)團(tuán)隊(duì)?wèi)?yīng)該像軍隊(duì),不僅要整體陣法嚴(yán)密,而且每個(gè)兵都要紀(jì)律分明。”這次培訓(xùn)主要是介紹敏捷的技術(shù)實(shí)踐,比如測(cè)試驅(qū)動(dòng)開發(fā)、持續(xù)集成、用戶故事等,該學(xué)員認(rèn)為這些敏捷實(shí)踐不僅可以提高員工的技戰(zhàn)術(shù),還可以塑造團(tuán)隊(duì)成員的紀(jì)律性。如果這些敏捷實(shí)踐在日常開發(fā)中都能落在實(shí)處,勢(shì)必將提高團(tuán)隊(duì)成員的“戰(zhàn)斗素養(yǎng)”和“戰(zhàn)術(shù)素養(yǎng)”。一言以蔽之,相較于其他軟件開發(fā)模式,敏捷方法對(duì)團(tuán)隊(duì)成員的紀(jì)律性提出了更高的要求,鼓勵(lì)團(tuán)隊(duì)成員成長(zhǎng)為項(xiàng)目經(jīng)理心中的“合格軍人”。
其實(shí),拋開敏捷方法,哪一種軟件開發(fā)方法又何嘗不強(qiáng)調(diào)團(tuán)隊(duì)成員的紀(jì)律性?計(jì)劃驅(qū)動(dòng)的傳統(tǒng)型開發(fā)方法給軟件過程制定了嚴(yán)格的計(jì)劃書和檢驗(yàn)標(biāo)準(zhǔn),希望能提高團(tuán)隊(duì)的紀(jì)律性。它們的出發(fā)點(diǎn)是對(duì)的,但因?yàn)槿鄙倭司唧w的技術(shù)實(shí)踐導(dǎo)致計(jì)劃書并不能匹配團(tuán)隊(duì)的真實(shí)狀態(tài);檢驗(yàn)標(biāo)準(zhǔn)大多是著眼于與最終交付軟件無關(guān)的中間文檔,這些都使得成員在工作中對(duì)項(xiàng)目開發(fā)的約束力感受不深。比如,很多項(xiàng)目里面的規(guī)范說明書、WBS表和甘特圖都畫得非常詳細(xì),但大多數(shù)時(shí)候這些東西與項(xiàng)目真實(shí)情況的落差太大,很難指導(dǎo)督促成員的日常開發(fā)工作。而且,這些文檔與需要交付的軟件產(chǎn)品的關(guān)聯(lián)性不強(qiáng),也很難能讓成員和其他人通過這些文檔建立對(duì)軟件交付的信心。長(zhǎng)期看到團(tuán)隊(duì)的表現(xiàn)與計(jì)劃的不相符,項(xiàng)目經(jīng)理們往往會(huì)感嘆團(tuán)隊(duì)的紀(jì)律性不行。那么,為什么說敏捷方法能相對(duì)一定有效地提升團(tuán)隊(duì)成員的紀(jì)律性呢?我們先來看看紀(jì)律的定義。
紀(jì)律
一般來說,紀(jì)律有三種基本涵義:1.紀(jì)律是指懲罰;2.紀(jì)律是指通過施加外部約束達(dá)到糾正行為目的的手段;3.紀(jì)律是指對(duì)自身行為起作用的內(nèi)在約束力。這三層意思概括了紀(jì)律的基本內(nèi)涵,同時(shí)也反映出良好紀(jì)律的形成過程是一個(gè)由外在的強(qiáng)迫紀(jì)律逐步過渡到內(nèi)在自律的過程。從紀(jì)律的含義來看,達(dá)到自律是最終的目標(biāo),也是施加外部約束的目的所在。通過獎(jiǎng)懲來達(dá)到一定的紀(jì)律性,比如程序員開發(fā)過程中的bug率等等,這是生活中最常見的一種形式。這種方法因?yàn)闄z查的結(jié)果與具體生產(chǎn)過程差得太遠(yuǎn),而且評(píng)判標(biāo)準(zhǔn)還是比較粗放,所以應(yīng)該是最低級(jí)的方式。施加外部約束,比如檢查列表,指導(dǎo)產(chǎn)品的具體生產(chǎn),可以評(píng)判成員的各個(gè)環(huán)節(jié)是否符合標(biāo)準(zhǔn),應(yīng)該算中級(jí)方式。只有自律,真正讓成員把紀(jì)律的觀念貫穿在生產(chǎn)的每個(gè)環(huán)節(jié),主動(dòng)改進(jìn),從而改善生產(chǎn)。而這,也是紀(jì)律性的高級(jí)方式。
對(duì)比這個(gè)標(biāo)準(zhǔn),我們可以看到:計(jì)劃驅(qū)動(dòng)型的軟件方法學(xué)強(qiáng)調(diào)更多的是獎(jiǎng)懲,也涉及到一些外部約束(代碼復(fù)審等),這也是為什么它們?cè)谂囵B(yǎng)團(tuán)隊(duì)成員紀(jì)律性上難度比較大。而敏捷方法,通過強(qiáng)調(diào)承諾,強(qiáng)調(diào)每個(gè)成員都是“理性人”的事實(shí),借助于成員的自律性來達(dá)到嚴(yán)明的紀(jì)律性。國內(nèi)有一家業(yè)內(nèi)非常有名的技術(shù)網(wǎng)站InfoQ,四月份在北京舉行的QCon
Beijing就是由InfoQ主辦。除了有限的幾位全職員工,大部分的中文編輯都是社區(qū)的活躍分子,他們走到一起,通過之間的承諾和信任維持著日常工作,也給全國技術(shù)愛好者傳播國內(nèi)外的業(yè)界最新新聞和技術(shù)。撇開具體項(xiàng)目團(tuán)隊(duì)而言,這就是敏捷團(tuán)隊(duì)最好的寫照。但是,我們也應(yīng)該看到,InfoQ類型的團(tuán)隊(duì)是可遇不可求的。現(xiàn)實(shí)中,大部分的開發(fā)團(tuán)隊(duì)還是良莠不齊,項(xiàng)目經(jīng)理們很難去完全授權(quán)給手下的員工。為什么敏捷方法又能有效地提升成員紀(jì)律性呢?答案在于敏捷方法不僅僅強(qiáng)調(diào)承諾,也包含了豐富的技術(shù)實(shí)踐:不僅給個(gè)人帶來更短更頻繁的反饋,也給團(tuán)隊(duì)和組織帶來了多層次較全面的反饋。而反饋的頻繁程度,則是外部約束發(fā)揮作用的重要基礎(chǔ),也即提升紀(jì)律性的重要手段。
戴明環(huán)(PDCA)
我們來看看被認(rèn)為是組織或團(tuán)隊(duì)改進(jìn)或解決質(zhì)量問題的基本準(zhǔn)則的戴明環(huán)。戴明環(huán)(PDCA)是由美國質(zhì)量管理博士戴明在20世紀(jì)50年代提出,PDCA是英語單詞Plan(計(jì)劃)、Do(執(zhí)行)、Check(檢查)和Action(行動(dòng))的第一個(gè)字母,PDCA循環(huán)按照“計(jì)劃-執(zhí)行-檢查-行動(dòng)”的順序進(jìn)行,并且循環(huán)不止地進(jìn)行下去,是一個(gè)立體多層級(jí)的螺旋式的演化過程。PDCA循環(huán)最開始是用在質(zhì)量管理領(lǐng)域,但實(shí)際上它是有效進(jìn)行任何一項(xiàng)工作的合乎邏輯的工作程序,是放之四海而皆準(zhǔn)的指導(dǎo)性原則。下面我們就用它來說明外部約束對(duì)紀(jì)律養(yǎng)成是如何影響。
PDCA循環(huán)里面的Action是一個(gè)循環(huán)的關(guān)鍵,對(duì)Check的結(jié)果進(jìn)行處理,成功的經(jīng)驗(yàn)加以肯定并適當(dāng)推廣、標(biāo)準(zhǔn)化;失敗的教訓(xùn)加以總結(jié),未解決的問題放到下一個(gè)PDCA循環(huán)里,但它必須以上一環(huán)節(jié)的Check結(jié)果為基礎(chǔ)。如果Check不到位,不能具體到實(shí)際工作,Action的正確性和出發(fā)依據(jù)就很值得商榷。軟件開發(fā)是一個(gè)以不確定性為主要特征,強(qiáng)調(diào)知識(shí)的活動(dòng)。為了采取的Action具有較高的正確幾率,更需要強(qiáng)調(diào)開發(fā)過程的Check比較頻繁、具體,不斷給團(tuán)隊(duì)提出直接的反饋,這樣才能減少不斷累積的不確定性最后帶來成不可控制的后果。如此來看,短而頻繁的反饋對(duì)外來約束真正施加到個(gè)人的效果是非常重要的。
PDCA循環(huán)還有一個(gè)特點(diǎn)是多層級(jí)性:各層級(jí)質(zhì)量管理都有一個(gè)PDCA循環(huán),形成一個(gè)大環(huán)套小環(huán),一環(huán)扣一環(huán),互相制約,互為補(bǔ)充的有機(jī)整體。軟件開發(fā)通常會(huì)把個(gè)人、團(tuán)隊(duì)和組織都牽扯進(jìn)來:個(gè)人完成功能的開發(fā),團(tuán)隊(duì)完成軟件的開發(fā),組織負(fù)責(zé)完成客戶需求的完成。傳統(tǒng)的軟件開發(fā)方法更多的是強(qiáng)調(diào)團(tuán)隊(duì)、組織層級(jí)的計(jì)劃、圖表等文檔,關(guān)注于團(tuán)隊(duì)與組織層級(jí)的反饋。對(duì)于真正創(chuàng)造產(chǎn)品質(zhì)量的日常開發(fā)環(huán)節(jié),則缺少必要的檢查和反饋。與之相反,支撐敏捷方法的敏捷實(shí)踐,就從“個(gè)人-團(tuán)隊(duì)-組織”的幾個(gè)層面都提供了相應(yīng)的反饋:低層次的反饋,為上一層次的反饋提供了依據(jù),同時(shí)也作為上一層次反饋的落實(shí)和具體。
--未完待續(xù)--