淺談Scrum
正好歷經公司手機部門的擴增,與核心團隊一同製作很多教學和各種制度,方便新人可以快速上手,
當然其中也有包含如何開發產品,當初公司主推 Scrum,不能只是會寫程式而已,
因此這裡記錄了一下帶領新人的跑專案的心得。
封面兩個圈圈是 scrum.org組織的標誌
在理解 Scrum 之前,先理解什麼是 Agile(敏捷軟體開發)?
- Agile 述說的是一種精神或是哲學
- 重點是”快速疊代”、”快速回饋”,詳細可以看 敏捷軟體開發
- 沒有回饋就沒有敏捷 !!!
Waterfall vs Agile
聽過一種說法:
- Waterfall = 按照完整計畫進行 => 給客戶合約上的東西
- Agile = 小增量、反覆運算、回饋 => 給客戶有價值的東西
什麼是 Scrum ?
其實 Scrum 是 Agile(敏捷軟體開發) 的其中之一種明確地實行方法,
由於 Agile 是一種精神,它沒有一定的執行方式,所以很多人幫它想出了很多明確地實行方式,
例如極限編程等等,而 Scrum 也是。
如何執行 Scrum ?
Scrum 有三個主要元素
- 角色(roles)
- Product Owner(PO,產品負責人): 與開發團隊合作一起定義產品需求,負責產品成敗
- Scrum Master(SM,Scrum大師): 協助團隊持續改善開發流程
- Developer(開發人員): 跨職能團隊的開發軟體(包含工程師、PM、美術、行銷等等)
- 活動(activities)
- Sprint:為期 2-4 週的開發活動
- Planning meeting: 在每個 sprint 開發活動的第一天,確認需求與開單
- Daily meeting: 每日會議
- Review meeting: 回饋會議
- 產出物(artifacts)
- Epic、Feature、UserStory: 有記錄需求與驗收項目(藍單)
- Task: 工作項目(黃單)
- Burndown chart: 燃盡圖
選擇工具
在使用 Scrum 跑專案時,一定會需要先選擇一項工具才行,用來記錄工單或是預估時間用的,
當初有使用過 Trello、Basecamp、TFS 等等,各有好壞沒有最好的,
選擇適合目前公司的工具,並且確實執行敏捷精神才對。
角色認知
在一開始要訓練新人跑專案時,好奇自己到底是在做什麼樣的工作,後來查了一下有下方這幾類的人。
- 公司內的團隊角色
- Scrum Master: 所屬開發團隊的一員,帶領團隊跑 Scrum 流程、主持會議、解決團隊上的問題。
- Agile Coach: 意義上是跨團隊,指導每個團隊的 SM 都能正確實施敏捷開發,宣達開發的精神。
- 公司內的培訓師:依照 Scrum.org - SCRUM TRAINER 簡單分三類
- Professional Scrum Master Trainer: 培訓 Scrum Master 的人
- Professional Scrum Product Owner Trainer: 培訓 Product Owner 的人
- Scrum for Software Development Trainer: 培訓使用 Scrum 軟體開發 的人
所以當初我在訓練手機組新人時,較接近 Scrum for Software Development Trainer 這種定位
提倡精神
以下的精神有來自網路上的、有些是自身發生的感想。
- 為什麼要跑敏捷?
- 程式的素養 -> Building the thing right 做出好的產品(重點:速度和品質)
- 敏捷的素養 -> Building the right thing 做出正確的產品(重點:方向)
- Scrum Teams 是跨職能(cross-functional)
- 成員們擁有在 Sprint 內創造價值所需的所有技能
- 他們也是自我管理(self-managing)的,也就是說,他們在團隊內部決定誰做什麼、何時做以及如何做
- 沒有絕對的規則
- 一開始 Trainer 應該只教導基本的開單方式和帶領新人們執行 Planning, Daily, Review
- 在每次的會議中詢問遇到的問題、想反饋的事項
- 一些開單拉單方式的是由這個 Team 的所有成員們共同討論出的,所以每個 Team 有不同的規則是正常的,下專案也是
- 例如:CodeReview 修正的單該如何開?新人無法在第一天就知道要修正的項目?臨時被亂入的事情該如何記錄?
- 沒有絕對的產品
- Training 的需求書像是初版的規劃,當新人對 Training 需求有提出任何疑問時,應該保持開放態度
- 不應該直接跟他說答案或規則,而是應改用提問的方式,問他為什麼會這樣想,然後再經過討論才得出結果
- 就像 Scrum 精神一樣,不斷反饋且不斷修正,才會有更好的產品
- 往往反饋更多的狀況下,Training的成果會更好
- 例如:有新人反饋說登入頁輸入鍵盤起來時,是不是有可能擋到輸入框,應該要做輸入框上滑的動作
- 多多用團隊的力量解決問題
- 因為大家都是團隊的一份子,都應該為團隊”文化”和”產品”而努力
- 當問題發生了,鼓勵大家提出想法和意見,進而討論結果,最後再化成行動
- 例如:有新人開單遇到時間不準的問題,大家一起討論如何讓單開的更精準,並且下一期確實執行
Agile 的本質是 “替用戶解決真正問題”,精神還是老話一句 “快速疊代”、”快速回饋”
關於 Scrum 的延伸讀物
- Scrum 指南 (必讀)(Scrum之父寫的)
- SCRUM:用一半的時間做兩倍的事 (選讀)(Scrum之父寫的 - Jeff)
- Essential Scrum中文版:敏捷開發經典 (選讀)(超硬)
希望這篇文章有幫助到您的開發之路!如果能給我一些按讚支持,我會非常感謝您的鼓勵!祝壞蟲遠離您!
評論