Member-only story
[工作效率] Agile/Scrum — 敏捷的工作法

在軟體開發的世界裡,突然間Agile(台灣翻譯成「敏捷」)就像是珍珠奶茶一樣倏地流行起來,每個公司團體都在使用它.
Agile的發展歷史我就省略了,有興趣的請去維基百科查查:
Agile被應用在軟體開發上面,大概是因為軟體的開發快,分工細,軟體的生命週期短,而且在過程中有許多不確定性.
相較於一般的計劃管理流程,是以事先規畫安排好,然後照著計畫去做,確保每一個階段步驟都在計畫之內,並且有「里程碑(milestone)」可以檢查進度,Agile強調的是彈性和快速應對.
這麼說吧,傳統的做法就像是在出國旅行時,先把所有行程規畫好,預算精打細算,每天每段的行程時間和地點清楚標出,也知道食衣住行娛樂各個分配,出門之後就按表操課.
Agile就比喻成給你一筆錢,告訴你旅行的目的地是哪裡,有幾天的時間可以玩,然後就出發.
在每個行程點規劃下一個地點是哪,怎麼去怎麼花錢怎麼玩,都是在前一段才安排好.也就是說除了起點和終點之外,其他都隨便你,只要玩到了你想玩的景點活動,平安回家,剩下的就看你自己任意安排.
這就可以看出,Agile不適合許多行業.
Scrum被稱作是Agile的「框架」,這我還真不知道該怎麼解釋比較好.
在我的想法裡,Agile是種指導大綱,Scrum偏向執行準則.
至少Scrum有許多具體的應用方法,雖然還是可以視情況由使用者改變調整,不過大方向是一樣的.
Scrum的角色(role)
在Scrum的團隊裡面,大概分成三個主要角色:
- Scrum Master:理論上不參與開發行動,擔任溝通協調和指導教練的角色,並且協助其他角色排除障礙.
- Product owner:在計畫開始時給定目標,安排階段工作的優先次序,確認每個Sprint(這個等下講到)的驗收達到標準,回答開發團隊的問題,並且負責整體計劃的成敗.
- Development Team:實際上開發的團隊,理論上是混合技能的小團體,以最少可執行人數為佳,但是實際上會有互補技能和缺員支援後備的情況.
Scrum的流程
Scrum一般是以兩個星期為一個階段,這稱為一個Sprint.
因為當初提出設計Scrum的人是以橄欖球裡的Scrum(每次暫停之後的重新集結)來介紹整個流程,所以用這來命名,而Sprint同樣是橄欖球術語,翻譯成衝刺.
有些團體會把數個Sprint組合成一個週期,稱為一個PI(Program Increment),然後每個PI指定一個達成目標,而PI裡面所有Sprint總合起來就是要達成這個目標.
這就有點像是在做年度計劃時,分成季度計畫和每月計畫.