簡介: 《孫子兵法》中的論述雖然是關于戰爭的,但是其思想在項目管理領域對我們也是有借鑒意義的。本文以筆者的實際項目管理經驗為基礎,分享了《孫子兵法》在敏捷項目管理中的應用。希望能夠對讀者的實際項目管理工作有所啟發。
成為“敏捷”,而不是做“敏捷”
談到“敏捷”首先容易讓人想到的是各種優秀實踐。這些優秀實踐固然有可以借鑒的地方。但是在具體實施的時候往往要根據項目的實際情況進行調整,而不是生搬硬套。
故兵無常勢,水無常形。能因敵變化而取勝者,謂之神。
——《孫子兵法•虛實》
作戰沒有固定的方式方法,就像水流沒有固定的形狀一樣。能夠根據敵情的發展變化而采取靈活措施取勝的人,才可以稱得上是用兵如神。
敏捷開發中的各種優秀實踐在具體實施時也同樣要根據項目的實際情況作適當的調整和變通。比如,敏捷開發中優秀實踐“客戶參與”(Customer Involvement)特別強調了現場客戶(On-site customer)對于開發團隊的重要性。而筆者所帶的項目組在無法爭取到這樣的資源的情況下采取了一種變通方式來實現“客戶參與”。我們把需求評審、分析過程中遇到的疑問與問題登記到“需求問題確認列表”。項目組中的每個人都可以自行往這個列表中登記問題。“需求問題確認列表”中的疑問、問題由專人或者問題登記人自己通過電話、電子郵件、即時通訊工具等方式與客戶方的需求負責人進行確認。確認的結果以及確認的原始記錄(如電子郵件內容)都會記錄到“需求問題確認列表”的“確認結果”一欄中,并由問題確認人對確認結果進行知會全組人員。如果有必要的話,項目組的任何一個人都可以組織全體人員對問題及其確認結果進行討論。而“需求問題確認列表”我們也會定期發給客戶方以便再確認和備忘之用。這樣一個過程,雖然沒有客戶與開發團隊在一起辦公,但是一定程度上規避了開發團隊對需求的理解的偏差問題。從而實現了與“客戶參與”同樣的效果。
因此,實施敏捷開發的關鍵是使我們的團隊成為“敏捷”—— 理解并實現敏捷各個優秀實踐所要達到的效果,而不是做“敏捷”—— 對敏捷開發的優秀實踐全盤照搬,為了“敏捷”而“敏捷”。
迭代開發的精髓 —— 順應自然規律和反饋
夫兵形象水,水之行避高而趨下,兵之形避實而擊虛。
——《孫子兵法•虛實》
用兵打仗的規律就像水,水流動的規律是避開高處而往低處流。用兵的規律則是避開敵人的鋒芒而攻擊其薄弱的地方。這是自然界規律給《孫子兵法》的啟示。同時,也給了我們在軟件開發方面的啟示 —— 發現自然規律并順應它。
敏捷開發中往往存在這樣一個現象:某個迭代中提出的需求,過了幾個迭代甚至于下一個迭代就被推翻了。這種現象很大程度上是因為客戶自己也不清楚需求是什么或者說他們的業務需要(need)是什么。而迭代開發的精髓就在于它考慮到這種現象及其產生的原因,因而采取小批量、頻繁交付的開發模式。這使得我們可以根據上一個迭代(或者之前所有的迭代)中獲取的經驗(包括什么樣的需求才是符合客戶的業務需要)對當前迭代的目標和活動作出調整??梢?,迭代開發的精髓在于順應自然規律 —— 人們認識事物需要經歷一個由淺入深、由錯到對的過程。同時,也在于它利用了反饋的功效 —— 當期迭代所掌握的知識和經驗會反饋到下一個迭代,從而影響其目標和活動。
同樣,迭代開發過程中團隊成員對需求的理解也往往一開始不是那么清晰。隨著具體開發、測試工作的進展其對需求的理解才漸漸明朗。
正如《太公陰符》所說“圣人知自然之道不可違,因而制之”。規律是不可抗拒的,順應規律可以幫助我們取勝。人類對事物的認識,往往不可能一下子就洞若觀火,而是要經歷一個逐漸深入的過程。開發人員也好、測試人員也好,其對需求的理解就是一個例子。不管我們如何努力地去理解、分析需求,其結果往往還是一開始理解得不夠全面、透徹,待到具體寫代碼、寫測試用例的過程中,思路才慢慢清晰起來,腦子中的疑問也越來越多。隨著這些疑問的解決,對需求的理解也慢慢變得清晰、全面、透徹了。所以知道了這個規律,我們就要“因而制之”了 —— 迭代開發過程中不要只知道往前走,適當的時候停下來,甚至往回走,重新去審視下需求,往往會有新的發現。此時再根據對需求的新的理解去重新審視代碼和測試用例,這樣就能發現迭代初期時所發現不了的問題,最終使得交付的軟件中隱藏的缺陷數降低。
團隊規模和管理模式
對于敏捷開發常見的一個誤解是“敏捷開發只適用于小規模的團隊”。團隊規模小的確可以減少溝通的復雜性、也某種程度上減少管理的成本。然而大型團隊中也有使用敏捷開發的。敏捷開發是否可以用于管理大型團隊,問題在于我們如何實施。
凡治眾如治寡,分數是也;斗眾如斗寡,形名是也。
——《孫子兵法•兵勢》
要治理好人數多的軍隊如同治理好人數少的軍隊一樣,關鍵在于組織編制好。
類似的,大型團隊中使用敏捷開發,往往可以采用組織多個相對小型的敏捷團隊,實行分而治之。
不要忘記項目經理的職責
有些項目經理對團隊成員很友善、也很照顧,而項目的質量為何還是那么低下呢?
視卒如愛子,故可與之俱死。厚而不能使,
愛而不能令,亂而不能治,譬若驕子,不可用也!
——《孫子兵法•地形》
看待士兵如同看待自己的親生兒子,就可以和他們生死與共。如果這樣也不能夠調動他們、違法亂紀而不能懲治,士兵就像嬌慣的兒子,是不可以用來打仗的。
作為項目經理,能夠真心實意地關心和愛護團隊成員是好事,但是不要忘了作為項目經理的職責:保證項目的成功交付才是最重要的。團隊成員要是不能履行自己的責任,服從主管的安排,具體落實工作,對其再如何關心也是無益的!
原文轉自:http://blog.sina.com.cn/s/blog_c32cbbe20101a5tt.html