在【PM實戰】新產品開發流程(四)中,筆者先介紹Stage-Gate法(階段關卡法),本篇將介紹Agile Development(敏捷開發法):
- Agile Development的源起與概述
- Agile Development的3-5-3框架
- Agile Development的三大特點
Agile Development的源起與概述
Agile Development(敏捷開發法)是一種90年代起才引起廣泛關注的新型軟體開發方法,是一種應對快速變化需求而產生的一種軟體開發能力。
2001年由Jeff Sutherland、Ken Schwaber和Alistair Cockburn等17位軟體開發人員發起輕量級的開發方法(Agile),並一同發布了「敏捷軟體開發宣言(Manifesto for Agile Software Development)」。
藉著親自並協助他人進行軟體開發,我們正致力於發掘更優良的軟體開發方法。透過這樣的努力,我們已建立以下價值觀:
- 個人與互動 重於 流程與工具
- 可用的軟體 重於 詳盡的文件
- 與客戶合作 重於 合約協商
- 回應變化 重於 遵循計劃
也就是說,雖然右側項目有其價值,但我們更重視左側項目。
相對於傳統開發模式(如:瀑布式開發法),它比較注重以用戶需求為核心,採用持續迭代,循序漸進的開發方式,嚴格來說,敏捷開發並不是一種完整的End-to-End開發方法,而是在軟體產品開發階段加速開發能力的一種方法,所以敏捷開發在需求的變更上並不在意,因為產品開發專案從始至終都處於不斷地調整中,這一點在客戶滿意度上來說,無疑是非常具有競爭力的。 近年來,敏捷軟體開發的框架不斷的發展,最廣泛被使用的有Scrum、XP、Kanban等。
Agile Development法的3-5-3框架
《SCRUM敏捷實戰手冊》的作者同時也是Scrum Inc. 的執行長 JJ Sutherland 提出了實踐Agile的Scrum 3-5-3框架,做為團隊快速檢查的工具,茲說明如下:
Scrum的三大角色
1.Product Owner(產品負責人)
主要負責和客戶溝通確定產品的功能和達到要求的標準,並指定軟體的發布日期和交付的內容,同時有權力接受或拒絕開發團隊的工作成果,一般是由產品經理擔任(有關PO與PM的分別請參考筆者這篇文章)。主要工作內容如下:
- 制定產品待辦清單(Product backlog item)與優先順序調整(Prioritize or De-prioritize)
- 對產品有遠見,並與開發團隊及其他團隊保持一致,以確保實現該產品。
- 負責與利害關係人和客戶進行溝通,並對產品績效負責。
2.Scrum Master
主要負責確保開發團隊遵循正確的Scrum結構,同時也扮演開發團隊的教練或指導者,甚至是捍衛者。當團隊出現瓶頸時,Scrum Masters會立即積極地消除障礙,以確保團隊的工作順利進行。
一個成功的Scrum Master知道團隊的成功就是他們的成功。
3.Development Team(開發團隊)
主要負責軟體產品在Scrum規定流程下進行開發工作,確保完成Sprint待辦清單(Sprint backlog)。人數控制在5~9人左右,每個成員可能負責不同的技術方面,但要求每成員必須要有很強的自我管理能力,同時具有一定的表達能力;不論過程只問結果!只要能達到目標,不論任何工作時間及方式。
開發團隊,他們作為團隊共同努力,以不斷生產高質量,高價值的產品。 如果缺少具有跨部能和共同協作精神的開發團隊,組織將無法創建具高品質的產品或服務。
Scrum的五大事件
1.The Sprint(衝刺)
整個Scrum框架的核心就是 Sprint(衝刺)。每個Sprint都以計劃會議開始,在此期間,產品負責人和開發團隊就Sprint期間將要完成的工作達成一致。而每個Sprint的周期(長度),由Scrum Master決定,可以是一周到一個月不等(通常建議是兩個星期),如果沒有Sprint,Scrum將缺乏節奏感,工作流程勢必受到干擾。
此外,一旦Sprint開始後,產品負責人將回到管控的角色,負責專案最後的驗收,而開發團隊的實際運作則由Scrum Master負責。
2.Sprint Planning(衝刺計畫)
Sprint Planning(衝刺計畫)的主要任務在於確定高價值的工作。在衝刺計畫過程中,必須決定要關注的重點,並製定計劃以有效地完成工作。
此外,衝刺計畫在整個Scrum運行過程當中是不可或缺的重要過程,因為它是對可交付成果和流程的正式協議。
3.Daily Scrum(每日 Scrum 會議)
Scrum是團隊每天舉行的15分鐘站立會議(Stand-up meeting),討論到目前為止的進度以及接下來的24小時將如何使用。簡單來說就是開發團隊中每個人的狀態報告。一般情況,Scrum Master或產品負責人沒有必要參加,主要是讓開發團隊成員彼此討論他們的工作,而不是專注於向Scrum Master或產品負責人報告。
此外,由於團隊中的每個人都更新了每個成員的進度,因此,如果需要進行更改以更快地實現目標,則更容易檢查和調整。
4.Sprint Review(Sprint 評審會議)
Sprint評審會議主要是向利害關係人展示整個Sprint 的成果和決定未來的調適方向。透過向利害關係人展示團隊的工作結果,並討論產品目的之進展情況。
如果沒有Sprint評審會議,團隊將盲目地從事任務或工作,而不知道利害關係人的真正需求。
5.Sprint Retrospective(Sprint 回顧會議)
Sprint 回顧會議的目的是讓Scrum團隊聚在一起討論Sprint過程中的表現,並討論改善下一個Sprint的方法。Sprint 回顧會議有很多種形式,但是最終目標是確定Scrum 團隊可以辨識出最有用的改變以提升其效能。例如:最具衝擊力的改善行動將儘速執行。甚至可以納入到下一個衝刺計畫的 Sprint 待辦清單中。
Scrum的三大工作
1.Product Backlog(產品待辦清單)
產品待辦清單包含產品負責人對產品的願景,是一個小到足以由開發團隊在一個衝刺迭代中完成的工作單元。
產品待辦清單上的工作項目需要被定期維護,由產品負責人負責管理及調整優先順序,例如:如果發現在此期間某項任務很有價值時,應將其添加到待辦事項中,並確保將高優先級、高價值的工作項目放在首位。
2.Sprint Backlog(Sprint待辦清單)
Sprint待辦清單可視為產品待辦清單的子項目,由開發團隊認為可以在當前Sprint中完成的任務組成。開發團隊和產品負責人可以共同協商Sprint待辦清單,以確保實現最高價值的項目。然後,由Scrum Master確保開發團隊承擔的工作不會超出他們的能力。
3.Product Increment(產品增量)
根據Scrum Guide的定義,Product Increment是Sprint期間完成的所有產品待辦清單的總和,以及所有先前Sprint的增量值。如同大家所知,Scrum是一個迭代過程。因此,每次迭代的結果都是該產品的增量,每個產品的增量都有助於團隊更接近於交付最終產品。
Agile Development的三大特點
相較於傳統的軟體開發方法(如:瀑布式開發或迭代式開發等),「敏捷開發」有以下三個特點:
第一,「敏捷開發」周期相對較短。它能更快的滿足客戶的需求,當客戶需求有變更時,它也能更快的做出相對應的改變。正如它的名字一樣,敏捷所代表的即是「最快的速度」。
第二,「敏捷開發」能夠更好地適應快速變化的需求。很多時候,需求都不可能是一成不變的。相信PM們都有共同的經驗,那就是,無論在規劃前期考慮得多麼周到,為了適應快速變化的市場,為了讓軟體系統更加完善,需求永遠都是在不停地改變。例如:我們目前正在開發的功能,或許在它還沒上線的時候,客戶可能已經不需要了。因此,「敏捷開發」較能夠駕馭需求的變化,它主張可以接受變更,以做出更快的回應。
第三,「敏捷開發」採用迭代方式、可頻繁交付、可使用的軟體。在敏捷開發中,可能一個星期就要更新一個版本,交付一個可使用的軟體。然後根據市場需求的變化,快速的交付另一個迭代產品。在這樣頻繁交付過程中,更好的滿足客戶的需求,以適應需求的變化。
結語
綜上所述,「敏捷開發」在技術上的適用範圍可以歸納如下:
1.專案團隊的人數不能太多
2.專案經常發生變更
3.高風險的專案實施
4.開發人員可以參與決策
相信對於「敏捷」有一定了解的PM們應該都清楚,其實「敏捷開發」並不是一種特定的、完整的產品開發方法,而是因應環境及客戶需求快速變化的一種軟體開發能力。「敏捷」兩字對於NPDP知識體而言,是一種提升軟體在產品開發階段更具效率與效果的思維方式(如:Scrum只是Implement Agile 的一種方式)。
對企業高層及產品經理來說,應該根據自身的業務特點和研發體系的成熟度和適應性,針對不同專案來適時選擇不同的產品開發方法。
以上是關於Agile Development(敏捷開發法)的說明,下一篇筆者將針對【市場上常見的新產品開發流程的比較、適用場景及流程治理】來跟大家分享,敬請期待!
本文作者:PM大叔
圖片來源: Image by Julián Amé from Pixabay
若有轉貼需求,請來信(service@pmtone.com)討論。 轉貼時禁止修改內容及標題、須保持所有連結、禁止商業使用,並且必須註明原文標題、連結、及作者訊息。
覺得這篇文章好嗎? 請分享給您的朋友吧~