正好歷經公司手機部門的擴增,與核心團隊一同製作很多教學和各種制度,方便新人可以快速上手,
當然其中也有包含如何開發產品,當初公司主推 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 的延伸讀物