主流敏捷開發方法:Scrum 基礎知識解釋
人們在自己的工作中和處理問題時,應該像一個成熟的成年人一樣,因此它并不涉及具體的軟件開發技術和人員溝通、期望管理、問題沖突等管理技能,這些都需要其他相關理論和技能來補充。
Scrum概述
Scrum
來自英式橄欖球運動,本質含義就是一群人你推我搡地去搶球和控球。用球賽來類比確實是一個形象又合適的比喻,在賽場上盡管隊員們努力按照既定計劃推進,但是場上瞬息萬變,不可能實時按照教練或者隊長的指令亦步亦趨的去行事,只能靠平時訓練中形成的素養見機行事,達成目標。
Scrum的核心思路
Scrum的核心思路,是首先承認我們的客戶(或者我們的產品服務的用戶)并不清楚自己的需求,并且人類的需求會不斷變化(“requirements churn”:就是需求本身在不斷地倒騰),所以我們默認需求是變化的需求,并且制定出一套策略能讓整個組按照小功能快速開發,并且后續不斷迭代?;貧w Scrum 的英文含義:把開發就搞成一堆人在合力拼搶,把功能分成小塊,快速開發和迭代。
實踐框架
Scrum為軟件開發管理只定義了一個高層次的、易于操作與遵循的非常小的實踐集,Scrum避免了說軟件團隊應該如何開發軟件,它堅持認為:人們在自己的工作中和處理問題時,應該像一個成熟的成年人一樣,因此它并不涉及具體的軟件開發技術和人員溝通、期望管理、問題沖突等管理技能,這些都需要其他相關理論和技能來補充。另外,如同其他項目一樣,需要軟件團隊在其業務領域的專業能力來確保軟件項目的成功。
Scrum價值觀
- 承諾- 愿意對目標做出承諾
- 專注– 把你的心思和能力都用到你承諾的工作上去
- 開放– Scrum 把項目中的一切開放給每個人看
- 尊重– 每個人都有他獨特的背景和經驗
- 勇氣– 有勇氣做出承諾,履行承諾,接受別人的尊重
以上價值觀和敏捷宣言相互呼應,很多人都會忽略這些核心價值和核心思想,而是追求Scrum的一套開發流程或者開發框架。但流程框架這些都只是一個規范,不是每個團隊都能直接硬套上去使用。需要有一定的調整,甚至結合其他開發方法一起使用,沒有領悟敏捷開發思想是沒有辦法靈活使用Scrum的。
Scrum角色
Product Owner(產品負責人):
主要負責確定產品的功能和達到要求的標準,指定軟件的發布日期和交付的內容,同時有權力接受或拒絕開發團隊的工作成果。
Scrum Master(流程管理員):
主要負責整個Scrum流程在項目中的順利實施和進行,以及清除擋在客戶和開發工作之間的溝通障礙,使得客戶可以直接驅動開發。
Development Team(開發團隊):
主要負責軟件產品在Scrum規定流程下進行開發工作,人數控制在5~10人左右,每個成員可能負責不同的技術方面,但要求每成員必須要有很強的自我管理能力,同時具有一定的表達能力;成員可以采用任何工作方式,只要能達到Sprint的目標。
Scrum開發模型
(點擊圖片放大,按“F”鍵查看原圖)
Scrum相應活動
產品待辦事項列表梳理
- 保持產品待辦事項列表有序
- 把看起來不再重要的事項移除或者降級
- 增加或提升涌現出來的或變得更重要的事項
- 將事項分解成更小的事項
- 將事項歸并為更大的事項
- 對事項進行估算(按團隊平均水平計算人時)
Sprint計劃會議
在這個會議中,Scrum團隊共同選擇和理解在即將到來的Sprint中要完成的工作。
Sprint中需要完成的產品待辦事項數目完全由開發團隊決定。為了決定做多少,開發團隊需要考慮當前產品增量的狀態,團隊過去的工作情況,團隊當前的生產能力,以及排好序的產品待辦事項列表。做多少工作只能由開發團隊決定。產品負責人或任何其它人,都不能給開發 團隊強加更多的工作量。
決定如何完成工作是開發團隊的職責,決定做什么則是產品負責人的職責。
總而?言之:在Sprint計劃會議中,開發團隊和產品負責人一起考慮并討論產品待辦事項,確保他們對這些事項的理解,選擇一些他們預測能完成的事項,創建足夠詳細的計劃來確保他們能夠完成這些事項。
每日Scrum會議
每日Scrum既不是向管理層匯報,也不是向產品負責?人或者ScrumMaster匯報。它是一個開發 團隊內部的溝通會議,來保證他們對現狀有一致的了解。
每次會議控制在15分鐘左右,每個人都必須發言,并且要向所有成員當面匯報你昨天完成了什么,并且向所有成員承諾你今天要完成什么,同時遇到不能解決的問題也可以提出,每個人回答完成后,要走到黑板前更新自己的 Sprint burn down(Sprint燃盡圖)
Sprint評審會議
所有Scrum會議都是限定時?長 的,Sprint評審會議的推薦時?長是Sprint中的每一周對應一個小時(譯者注:?比如,一個Sprint 包含2個星期,則Sprint評審會議時?長為2個小時)。
團隊會找到他們自己的方式來開Sprint評審會議。通常會演?示產品增量,整個小組也會經常討論他們在Sprint中觀察到了什么、有哪些新的產品想法出現。他們還會討論產品待辦事項列表 的狀態、可能的完成日期以及在這些日期前能完成什么。
Sprint回顧會議
在每個Sprint結束后,Scrum團隊會聚在一起開Sprint回顧會議,目的是回顧一下團隊在流程人際關系以及工具方面做得如何。團隊識別出哪些做得好,哪些做得不好,并找出潛在 的改進事項,為將來的改進制定計劃。
Scrum團隊總是在Scrum的框架內,改進他們自己的流程。這句話很重要。
滿足條件
Scrum雖然十分熱門,但是要成功,正確的實現它,并達到一定的效果,不是簡簡單單的一個命令就可以做到。特別是國內的一些傳統企業,或者一些組織架構死板的公司,內部改造并不容易。當然也不是扁平化管理的初創公司就能很好的實現Scrum,人員素質,管理者經驗的都是初創公司的短板。所以個人總結了要實現Scrum先要滿足的幾大條件。
理解思想
對Scrum的核心思想和理念真正深入的了解,而不是看中Scrum其管理流程的實現,需要結合敏捷方法的理論,從本質上了解為何Scrum要如此管理開發流程。
適配模型
熟悉Scrum提出的模型,遵循其規范的流程,但又不能被條條框框限定死,需要相關人員結合公司或者團隊本身情況進行適當的調整,只要符合核心思想即可。這需要有一定智慧,知識和經驗的人去了解公司業務,人員素質,再思考總結,才能制定出一套規范的開發流程,并將這套流程嚴格執行,這個過程甚至可能會改變公司架構。
人員素質
團隊人員的素質是一個非常重要的,決定Scrum能否有效實施的條件,它包括自我管理,技術能力,知識積累,做事原則,思想智慧等,是一個綜合素質的考量。關于人員開發素質的要求,可以參考極限開發XP的一些標準,來判斷或者培養高素質開發人員。
有效協定
協定統一溝通的溝通方式,提高溝通效率。協定統一的版本控制方式,代碼管理方式。引入統一的協助工具幫助流程流暢的執行和提高處理的效率。必要時可引入其他敏捷開發方法,相互配合使用。
參考資料
Scrum中文網(很好的一個網站,有比較規范和詳細的文檔)
作者:Frayne,個人網站:https://frayne.github.io/Agile/scrum.html
本文由 @Frayne 原創發布于人人都是產品經理。未經許可,禁止轉載。
您好,看了您的文章深受影響,我們公司也在做敏捷開發,想和您聊一些商務合作,希望您看到能回復下,謝謝