在聊敏捷軟體開發的規劃前,先來聊聊經典的三角限制吧!
在產品開發中,通常有三個元素去互相影響,分別是代表功能多寡、完整與否的範疇(Scope)、有多少可以開發的時間(Time)、以及有多少資源和人力投入的成本(Cost)。
在比較傳統的產品開發、專案管理,通常會將範疇固定,也就是要有多完整、多好的功能,才會推出上市,一開始可能也會訂個預算、時限,但通常功能沒做完就會不斷地延長、增加支出。
在敏捷軟體開發裡,比較崇尚的是將成本與時間固定,讓範疇變成彈性可以協商的元素。
成本通常就代表有多少人在開發,在敏捷軟體開發裡,通常會使用穩定永續的固定團隊去開發,因為我們知道就算不斷加人手,也不會比較快(就像團隊常開玩笑的,十個孕婦不會讓一個孩子一個月就生出來),這之中會有許多影響導致這個現象,像是溝通成本、訓練成本等等,有機會日後再來聊聊。
而時間固定,就像是我們會針對某個目標,訂定預計要花多少次 Sprint 完成。這時候若是根據目標訂出來要做的功能是無法完成的,我們就會根據目標去協商範圍,在維持達成目標的情況,嘗試盡可能用更少的產出來達到。
就是有這樣的限制,才會讓產品開發團隊選擇當前最有價值的事情去做,以及嘗試用最少的成本去最大化達到目標想要得到的成效。
其實就像我每天寫鐵人賽,一篇只講概念的文章,我通常只會給 15 分鐘的時間,那我就不得不挑選之中最重要的核心概念講述。其他的部分就等完賽後再去補充就好,甚至搞不好當下寫的部分,就已經是覆蓋八成想要表達的了。