Scrum 工件?
Scrum 的工件以不同的方式表現工作任務和價值,可以用來提供透明以及檢視和適應的機會。Scrum 所定義的工件是特別地設計的,是為了給關鍵信息提供最大透明化,因此每個人對工件都需要有相同的理解。
產品待辦列表
產品待辦列表是一份涵蓋產品中已知所需每項內容的有序列表,它是產品需求變動的唯一來源。產品負責人負責管理產品待辦列表的內容、可用性和排序。
產品待辦列表永遠是不完整的。最早開發的產品待辦列表列舉最初所知的以及理解最透徹的需求。產品待辦列表會隨著產品及其應用環境的改變而演進。產品待辦列表是動態的,需要持續更新以反映出產品需要什么來保持其適用性、競爭力和有用。如果產品存在,產品待辦列表也就同樣存在。
產品待辦列表列出所有的特性、功能、需求、增強和修復等對未來要發布的產品進行的更新。產品待辦列表項具有這些屬性:描述、次序、估算和價值。產品待辦列表項通常包括測試描述,將在“完成”時證明其完整性。
隨著產品的使用、價值的獲取和獲得市場的反饋,產品待辦列表會成長為更大和更詳盡的列表。因為需求永不停止改變,所以產品待辦列表就如一份活的工件。業務需求、市場形勢或者技術的變化都會引起產品待辦列表的改變。
多個 Scrum 團隊常常會一起參與對同一產品的開發。一個產品只有一個產品待辦列表用于描述下一步產品開發工作。那么這就可能需要使用能夠對產品待辦列表項進行分組的屬性。
產品待辦列表精化指的是為產品待辦列表項增添細節、估算和排序的動作。這是一個持續的過程,產品負責人和開發團隊協同工作在產品待辦列表項的細節上。在產品待辦列表精化過程中,產品待辦列表項被重新評審和修改。Scrum 團隊決定如何來完成精化以及何時來完成。精化的工作通常占用開發團隊不超過 10% 的產能。然而,產品負責人或者其他人在產品負責人的斟酌下,產品待辦列表項可以在任何時間來更新。
排序越高的產品待辦列表項通常比排序低的更清晰同時包含更多細節。根據更清晰的內容和更詳盡的細節信息就能做出更為準確的估算;同樣,排序越低,則細節信息越少。產品待辦列表項中那些即將會占用開發團隊下一個 Sprint 大部分時間的項會被加以精化,因此,任一產品待辦列表項都能夠在 Sprint 的時間盒期限內適當地“完成”。這些能夠被開發團隊在一個 Sprint 中“完成”的產品待辦列表項稱為“準備就緒”,它們將作為Sprint 計劃會議中的待選產品列表項。產品待辦列表項的足夠透明程度通常要經過上述的精化活動來獲得。
開發團隊負責所有估算工作。產品負責人可以通過幫助開發團隊更好地理解需求,并根據情況權衡取舍來影響他們,但是最終估算是由開發團隊決定的。
監控目標實現的進度
在任何時刻,達成目標的剩余工作是可以累計的。產品負責人至少在每個 Sprint 評審會議中都必須跟蹤剩余工作總量。產品負責人比較這次的剩余工作量與之前 Sprint 評審會議時的剩余工作量,來評估在期望的時間點達成目標的進度。這個信息對所有的利益攸關者都是透明的。
各種不同趨勢走向的實踐已經被使用在預測進度方面,例如,燃盡圖(burn-downs)、燃燒圖(burn-ups)或者累積流圖(cumulative flows)。這些工具都被證實是有用的。然而,它們并不能用來取代經驗主義的重要性。在復雜的環境中,未來將要發生的事是無法預知的。只有已經發生的事情才能用來做前瞻性的決策。
Sprint 待辦列表
Sprint 待辦列表是一組為當前 Sprint 選出的產品待辦列表項,同時加上交付產品增量和實現 Sprint 目標的計劃。Sprint 待辦列表是開發團隊對于下一個產品增量所需的那些功能以及交付那些功能到“完成”的增量中所需工作的預測。
Sprint 產品待辦列表將開發團隊用來達成 Sprint 目標的所有工作變得清晰可見。為了確保持續改進,它至少包括一項在前次回顧會議中確定下來的高優先級的過程改進。
Sprint 產品待辦列表是擁有足夠細節的計劃,任何進度的變化可以在每日 Scrum 站會中清晰地看到。開發團隊在 Sprint 期間修改 Sprint 待辦列表,使得 Sprint 待辦列表在Sprint 期間涌現。涌現發生在開發團隊按計劃開展工作并學習到更多的關于哪些工作是達成 Sprint 目標所必需的工作時。
當新工作出現時,開發團隊需要將其加入到 Sprint 待辦列表中去。隨著工作的執行或完成,剩余的工作量被估算并更新。當計劃中的某個部分失去開發意義,就可以將其移除。在 Sprint 期間,只有開發團隊可以改變 Sprint 待辦列表。Sprint 待辦列表是高度可見的,是對開發團隊計劃在當前 Sprint 內工作完成情況的實時反映,該列表由開發團隊全權負責。
監控 Sprint 進度
在 Sprint 的任何時間點都可以計算 Sprint 待辦列表中所有剩余工作的總和。開發團隊至少在每日 Scrum 站會時跟蹤剩余工作的總和,預測達成 Sprint 目標的可能性。通過在Sprint 中不斷跟蹤剩余的工作量,開發團隊可以管理自己的進度。
增量
增量是一個 Sprint 完成的所有產品待辦列表項的總和,以及之前所有 Sprint 所產生的增量的價值總和。在 Sprint 的最后,新的增量必須是“完成”的,這意味著它必須可用并且達到了 Scrum 團隊“完成”的定義的標準。增量是在 Sprint 結束時支持經驗主義的、可檢視的和已完成的產品組成部分。增量是邁向愿景或目標的一步。無論產品負責人是否決定發布它,增量必須可用。
工件透明
Scrum 依賴于透明。優化價值和控制風險的決定都是基于所獲知的工件狀態。當工件的狀態是完全透明時,這些做出的決定才有一個堅實的基礎;當工件的狀態是不完全透明時,這些做出的決定就會有瑕疵,而價值也可能因此遭受損失,同時風險也可能會因此而增加。
Scrum Master 必須和產品負責人、開發團隊和其他相關人員一起合作,以確保所有工件都是完全透明的。有些實踐就是為應對不完全透明的狀態而生的,Scrum Master 必須幫助每個人,讓他們能夠在遇到不透明的情況下采取最合適的實踐。Scrum Master 能夠通過檢視工件、嗅探模式、傾聽周圍的聲音以及觀察預期和實際結果之間的差異來發現不完全透明。
Scrum Master 的職責就是和 Scrum 團隊以及組織一起合作增加工件的透明化。這一工作通常包括學習、說服和改變。 透明化不會在一夜之間發生,但是這是一條必經之路。
“完成”的定義
當產品待辦列表項或增量被描述為“完成”時,每個人都必須理解“完成”意味著什么。雖然在不同 Scrum 團隊之間或許會存在顯著差異,但是每個團隊成員必須對完成工作意味著什么有相同的理解以便確保透明化。這就是 Scrum 團隊的“完成”定義,用來評估產品增量是否完成。
隨著 Scrum 團隊的成熟,“完成”的定義會擴大,包含更為嚴格的標準來保證更高的質量。當使用新定義時,在先前“完成”增量中可能會發現尚需完成的工作。任何產品或系統都應該對其上面開發的工作有“完成”的定義。