據我對敏捷社區中人們擴張敏捷邊界的建議的審視,我認為敏捷正逐漸進入到局部優化的危險之中。
百度開發者大會:Web App設計、移動互聯網應用、個性化推薦、敏捷(3月23日 免費報名中!)
Visual Studio 11 Beta 和 .NET Framework 4.5 Beta版免費下載中!
軟體研發,不僅僅是持續集成
在繼續下去之前,讓我先回顧一下對優化系統和局部優化系統的定義:
“優化系統是在整個系統的價值流之上對系統的優化或對浪費的消除的系統。”
“局部優化系統是在系統的部分價值流對系統的優化或對浪費的消除的系統。這有可能會導致整個系統效率降低。”
敏捷專註於項目價值流,這很正確,我認為沒人會質疑:以敏捷的方式執行項目時項目價值流是最大化的。
那項目之外的價值呢?項目集和公司價值呢?
如果我通過所聽到的被最頻繁提及的一致的意見來遵循敏捷,那麼就會缺乏下面兩種項目信息:
項目記憶 —— 關於項目是如何規劃和執行的信息。
解決方案記憶 —— 關於項目的技術或功能的解決方案
如果我在便條上寫用戶故事,通過看板進行管理,我的回顧記錄、應用程序和自動化測試用例是最後主要的文檔,那我能回答一下這些問題么?
從本質上說,敏捷軟體開發項目是獨立的項目,主要由全職成員組成,且幾乎沒有跨越項目的監管。這導致了對項目集價值流關注的更大的需求。
或許最近最麻煩的傾向之一是這樣的說法:不應再進行任何估算了,因為它們必然是錯誤且浪費時間的。建議直接啟動項目,在項目進行兩三個迭代之後就可以確認速度了,據此速度給出完成項目的精確估算,並通知客戶。
這一說法是從整個項目的角度來看的。每個啟動的項目都需要商業案例的支持:投入X美元將獲得價值Y的回報,並且這在商業上是可接受的。如果我們不再對項目進行估算,我們將會冒後面這些風險:啟動錯誤的項目;消耗項目的投資,直到我們確定花太多錢了,或是回報的價值太小了。
如果我們真的關心公司長遠的生存能力,那麼宣稱我們不再需要進行估算是荒謬的。這其中隱含了我的信念:用戶故事點必須轉換為小時數。在我與開發人員的討論中,他們要求每個用戶故事都有小時數,以確保他們走在正軌上。
雖然我喜歡拿用戶故事和用戶故事點數來進行估算,但如果我們不把用戶故事點轉換為小時數,那我們就是局部優化的。我們在把開發過程置於滿足商業案例之前。不把與項目的商業案例相關的估算的上下文告訴開發人員,就相當於我們在商業案例和開發人員之間形成一個隔離層。我們會讓項目迭代更加高效,但同時也可能犧牲了滿足商業案例的能力。
但商業案例不正是項目存在的理由嗎?
“我們以敏捷方式運作項目,是否在犧牲企業長遠目標?”我認為沒人會認為敏捷不是最好的執行項目的方式。但我確實認為有時敏捷僅僅關注項目和項目內的客戶的價值,這可能會導致缺乏對項目集和公司價值的關注。
在對過程進行優化時,我們要確保時刻把整個價值流銘記於心。否則,會有一堆非常成功的項目存在於許多失敗的公司之中。
Terry Bunio目前是Protegra的首席顧問。Terry從未想過成為一名項目經理。他的主要職業生涯都是在數據架構方面。隨著時間的推移,Terry發現他喜歡上了幫助建立團隊,增加客戶信賴,促進個人成長,從事項目工作和幫助指導解決方案。這些似乎就是一些人眼中的項目管理。作為一名有實踐經驗的項目經理,Terry以挑戰慣性思維和打破書本上理論的敏捷和現實世界的方法間的平衡而為大家所熟知。Terry致力於遵循精益原則來實現敏捷。
感謝侯伯薇對本文的審校。
[火星人 ] 敏捷是局部優化的嗎?已經有392次圍觀