顯示具有 SCRUM 標籤的文章。 顯示所有文章
顯示具有 SCRUM 標籤的文章。 顯示所有文章

Scrum Note

ChatGPT generated


 Scrum 是一種敏捷軟體開發的框架,它的核心包含了三個支柱 (Pillars)、五個價值觀 (Values) 和十個原則 (Principles)。


三個支柱 (Pillars) 包括:


  1. 透明度 (Transparency):所有的工作都必須對所有人可見,這樣才能確保所有人都對工作的進度有共識。
  2. 檢驗 (Inspection):Scrum 團隊必須定期檢查進行中的工作和工作成果,以確保向著目標前進。
  3. 調整 (Adaptation):如果在檢驗過程中發現實際的結果與預期的結果有偏差,團隊必須調整他們的行為或者計劃。

五個價值觀 (Values) 包括:


  1. 承諾 (Commitment):團隊成員對於達成共同目標的承諾。
  2. 勇氣 (Courage):面對困難和挑戰時,團隊成員需要有勇氣去做出改變。
  3. 專注 (Focus):團隊成員專注於工作和目標,並且優先處理最重要的事情。
  4. 開放 (Openness):團隊成員對於工作、挑戰和進度要保持開放的態度。
  5. 尊重 (Respect):團隊成員相互尊重,認識到每個人都是獨一無二的,並且有他們自己的技能和能力。

敏捷宣言 (Agile Manifesto) 的四個核心價值包括:


  1. 個人和互動高於流程和工具 (Individuals and interactions over processes and tools)
  2. 可用的軟體高於詳盡的文件 (Working software over comprehensive documentation)
  3. 客戶合作高於合約談判 (Customer collaboration over contract negotiation)
  4. 回應變化高於遵循計劃 (Responding to change over following a plan)

敏捷宣言的十二個原則包括:

  1. 我們最高優先的是透過提早並持續地交付有價值的軟體來滿足客戶。
  2. 即使在開發的後期,我們也歡迎改變需求。敏捷流程利用變化為客戶獲得競爭優勢。
  3. 經常地交付可工作的軟體,交付的頻率可以從幾週到幾個月,交付的時間間隔越短越好。
  4. 業務人員和開發人員必須每天都要一起工作,直到項目完成。
  5. 建立項目周圍的人們的熱情,給他們所需要的環境和支持,並且信任他們能完成工作。
  6. 最有效且最有效率的傳遞信息的方法,就是面對面的交談。
  7. 可工作的軟體是進度的主要度量標準。
  8. 敏捷流程提倡可持續的開發。贊助者、開發者和使用者應該能夠保持恆定的步伐。
  9. 持續關注技術優秀性和良好的設計增強敏捷性。
  10. 簡單——使未完成的工作最大化的藝術——是必要的。
  11. 最好的架構、需求和設計出自自組織的團隊。
  12. 團隊定期反思如何能夠更有效,然後調整和改變其行為。

刺蝟原則 (Hedgehog Concept) 是由吉姆·柯林斯 (Jim Collins) 在他的書《從優秀到偉大》(Good to Great) 中提出的。這個概念源於古希臘詩人伊索的寓言,故事中的狐狸雖然有許多聰明的策略來捕捉刺蝟,但刺蝟只做一件事,且做得很好:捲成一個球來保護自己。柯林斯將這個故事用來形容公司和個人應該專注於他們可以做得最好的事情。


刺蝟原則包含三個部分:

  1. 你最熱衷什麼?(What are you deeply passionate about?)
  2. 你在什麼能力上可以成為世界最頂尖的人?(What can you be the best in the world at?)
  3. 你的經濟引擎是什麼?(What drives your economic engine?)

Scrum 定義了五種主要的會議,每種都有其特定的目標和結構:


  1. Sprint 規劃會議 (Sprint Planning Meeting):在這個會議中,團隊會決定下一個 Sprint 要完成的工作。產品擁有者 (Product Owner) 會解釋他們希望團隊在下一個 Sprint 中完成的項目,並且團隊會決定他們能夠完成多少工作。
  2. 每日 Scrum 會議 (Daily Scrum Meeting):這是一個每天都會進行的短會議,通常只會持續 15 分鐘。在這個會議中,團隊會分享他們在前一天完成了什麼,今天計劃完成什麼,以及是否有任何阻礙他們工作的問題。
  3. Sprint 審查會議 (Sprint Review Meeting):在每個 Sprint 結束時,團隊會舉行一個審查會議,以展示他們在 Sprint 中完成的工作。這是一個讓所有利益相關者了解項目進度的機會。
  4. Sprint 回顧會議 (Sprint Retrospective Meeting):這是在每個 Sprint 結束後的一個會議,團隊會討論在過去的 Sprint 中什麼工作得,什麼不好,以及他們可以如何改進。
  5. 產品 Backlog 整理會議 (Product Backlog Refinement Meeting):這是一個可選的會議,用於審查和更新產品 Backlog。在這個會議中,團隊會評估 Backlog 項目的優先順序,並可能將大的項目分解成更小、更可管理的項目。

常見的對 Scrum 的詬病


  1. 過度的會議和管理:Scrum 需要定期的 Sprint 規劃、每日 Scrum、Sprint 審查和回顧會議。對於一些團隊來說,這可能會感覺像是過度的會議和管理,並可能導致工作時間的浪費。
  2. 難以應對變化:雖然 Scrum 是為了應對變化而設計的,但在 Sprint 進行中改變計劃可能會很困難。這可能會導致團隊在面對變化時感到壓力,或者在需要快速反應時無法做出適應。
  3. 過度依賴 Scrum Master:Scrum Master 的角色是幫助團隊遵循 Scrum 的規則和實踐,並解決阻礙團隊進步的問題。然而,如果團隊過度依賴 Scrum Master,可能會降低團隊的自我組織能力。
  4. 忽視技術實踐:Scrum 並未明確包含如測試驅動開發 (TDD)、持續集成 (CI)、重構等技術實踐。如果團隊僅僅遵循 Scrum 的流程,而忽視了這些重要的技術實踐,可能會導致軟體質量的問題。
  5. Scrum 不是萬能藥:Scrum 並不能解決所有的問題。它是一種工具,需要根據特定的情況和團隊來適當地使用。如果盲目地遵循 Scrum,而不考慮其是否適合特定的情況,可能會導致效果不佳。

Scrum Q&A


Q: 我們用用 SCRUM 想幹嘛? 
A: 我們都曾經遇過在某個專案已經花費很多時間跟人力做得一團亂. 但在某個機緣下少少幾個人展現強大的戰鬥力把待辦清單做完, 成為膾炙人口的佳話. 這個佳話也成為團隊員日後美好的回憶. 會有佳話是因為: 
  1. 待辦事項清單清楚
  2. 有人排出優先順序, 先做重要的, 其他丟掉
  3. 隊員各有擅長的事情, 壓力下大家挑出擅長的事情互相合作完成
  4. 跟使用者端緊密合作, 確保大家做的事情可以上線
就好像玩美式足球. 賽前規劃戰略, 比賽中一球一球緊密配合, 賽後檢討準備下場比賽.
使用 SCRUM, 最終希望在這個組織工作的人都能擁有美好的回憶, 達到卓越的狀態.

Q: 為甚麼要 Daily Scrum? 
A: 因為我 (Scrum Master) 需要知道每個人的狀況, 是否有人被卡住需要我去協調.
此外當隊員都很好溝通, 彼此熟悉, 那當然很好. 如果隊員溝通情況沒那麼好, 或是個性沒那麼搭, Daily Scrum 是個管道強迫大家互相溝通進度或向外求援

Q: 為甚麼要 retrospective meeting?
A: 大家在執行上有甚麼問題, Scrum Master 需要知道, 然後趕快改善, 這是很重要的部分

Q: 為甚麼要 demo?
A: 做出來的東西要快點讓使用者看看是否可用, 還是說應該要快點修正. 
不過 demo 的時候, 使用者的回饋不用照單全收, 比方說他可能會說: 請給我全部欄位都可以排序.
我們可以在 demo 的時候吸收 feedback, 然後分析 feedback 再改善, 而不是把使用者的話當 spec.

Q: 為甚麼要 Story?
A: Story 會描述情境, 別人看了比較知道要滿足甚麼. 你都短短的寫技術或 component 名詞, 只有你現在知道要做甚麼, 以後看 ticket 都需要去爬程式回想才知道想幹嘛. 更糟的是程式不一定能反應當下的情境.

Q: 為甚麼要 Story Point?
A: 為了評估團隊的 througput, 看進步或退步了, 看是否可持續改善.
另外用來跟公司收到的利益結合, 計算 Story 替公司爭取多少利益. 這當成 product owner 的 KPI. 亂開 Story 的 product owner 績效會很差.

Q: Plan Meeting 怎麼進行?
A: 讓每個 member 知道每個 Story 就好了.
"千萬"不要討論實做細節, 那不是 plan meeting 該做的事. 就算實做的"方向"也不該討論.
那是 member 自行決定的東西.
plan meeting 後, member 可以留下來繼續討論怎麼在這個 sprint 內"攻下"這些 story.
照戰略攻克每個 story 很爽...

User Story Template

Reference


User story format:

“As a (user type), I want to (goal), so that (reason).”
Attributes of good user story: INVEST
Independent
Negotiable
Valuable
Estimable
Sized Appropriately
Testable

Best Practices

  • Readability:
    • "One sentence" part is for reader to catch up in 5 seconds
    • The entire user story is for reader to understand in 30 seconds
    • The extra information can be added in notes section. For example, detail requirement, special conditions, and key decisions.
    • Use your best way to communication. For example, for functional requirement, please put it in UI prototype which is more clear than thousand words.
  • Prioritization:
    • Always need to have priority
    • Force ranking from 1 (the top priority) in each category
  • How to improve user story quality:
    • Write often and review with colleagues
    • Share with different stakeholders like customers, NOC, BD, or CEO. Try to get their feedbacks.

Lessons Learned While Benchmarking vLLM with GPU

Recently, I benchmarked vLLM on a GPU to better understand how much throughput can realistically be expected in an LLM serving setup. One ...