時至今日,依然有很多專案受困於專案管理鐵三角:範圍、時間和成本。是啊,
- 必須在2月底完成,因為報稅高峰期3月份就來了。必須在10月底完成,因為要撐過雙十一的併發量。必須在10.1前完成,因為要國慶獻禮。
- 這些需求都得做,因為被替換的系統已經有這些功能了,好多人在用,沒了他們會叫的。
- 就這些人了,招人短時間內也招不到,再說你們不是說了加人反而會降低開發速度嗎?
這些都是現實的困難,很難突破,這也是前面幾項被稱為"鐵三角"的原因。那是否就一點辦法沒有了?
打破一條規則最有效的方法是推翻它的前提和假設。當我們重新審視鐵三角的時候,會發現它至少有四個假設。其中有兩個假設比較明顯,早早就被人發現並利用了。而另外兩個假設則需更進一步的洞察力,敏捷專案管理正是對準了這兩個不那麼明顯的假設。對這四個不同假設的顛覆,導致了截然不同的軟體過程管理方法。下面我們依次來看一下。
時間變慢
第一個假設較為明顯,即鐵三角中的時間是按每週工作5天,每天8小時來計算的。無數的團隊發現了這一點,然後毫不猶豫的打破了它。每週工作6天,每天12小時如何?工作吞吐量立即可以提升(72-40)/40=80%。相當於時間的流逝減緩了近一倍。這就是我們常見的加班背後的原因之一。
犧牲質量
第二個假設也不難發現,即鐵三角中沒有提及質量,尤其是內部質量。其實就算客戶和供應商的合同中對質量做出一定要求,由於其難以衡量和驗證,以及延時效應,通常也淪為最弱的一種約束。"精明"的團隊對此心知肚明,通過拷貝貼上等犧牲內部質量的方式來快速堆積功能。這就是我們常見的匆忙趕工的產品其程式碼難以長期維護的原因之一。
對以上兩個假設的顛覆導致了不利於團隊,不利於客戶的開發方法,長期來看都是輸家。所幸我們還有第三和第四個假設,對它們的重新審視把我們引導到更加合理的專案管理角度。
關注價值
第三個假設是這樣的:鐵三角之所以這麼引人關注,是因為大家認為只要在固定的範圍,時間和成本的約束內完成專案,就是成功的。
這是一個看似合理的假設。然而考慮以下兩種情況:第一種是在規定的時間和預算內完成了全部預期的功能,但產品沒人用,投向市場沒啥反應。第二種是工期超了一點,預算也超了,計劃的功能有很多沒做,相反根據變化做了點別的,但產品推向市場後反應不錯,帶來了利潤。那麼兩種情況哪種算是成功呢?
我會選第二種。這麼選的還有一個叫JimHighsmith的。他針對這個問題提出了新的三角,他稱之為敏捷三角:價值,質量和約束。見下圖(摘自Agile Project Managment):
其中傳統的鐵三角被區域性化成一個維度,稱為約束。而引入了新的維度,價值和質量。其中價值代表的是利潤等正向的因素,而質量代表的是變化的成本。質量越好,意味著變化的成本越低。據此,我們打破鐵三角的第一個手段是,關注真正的使用者價值,降低變化成本,併為此而調整計劃。
提高生產效率
鐵三角的第四個假設是生產效率不會發生變化。因此固定其中兩個只能調節第三個,鐵三角因而是鐵的。
這個假設具備一定合理性的原因是短時間內生產效率很難發生突破性的變化。但這不妨礙我們持續去提高生產效率,從而軟化鐵三角。
這方面有眾多的選擇,比如通過自動化減少手工工作,通過預防錯誤避免返工,而這裡面最重要的,是持續學習,提升每個個體的效率。我們通常說程式設計師之間的效率差異會達到數量級的差別。花些時間在溝通交流培訓反饋上,是我們即使在最嚴格的外部約束下,也可以做的,並且是為數不多的手段之一。
其實我們從來就只有兩個問題…
做什麼和如何做。
對做什麼保持關注,就會得到敏捷三角;對如何做保持關注,就會得到持續改進;不思考才會被約束住。
文/李光磊
更多精彩洞見,請關注微信公眾號:ThoughtWorks洞見