Kanban 系列:Drum-Buffer-Rope 對於看板方法的啟發
David Anderson 在《A Brief History of Kanban for Knowledge Work》文章中,描述看板方法演進的歷史。最早起源於 2004 年,David 協助微軟的 XIT 維運團隊的過程中漸漸發展出來。文章中有一小段文字引起我的興趣
The system implemented was inspired by Theory of Constraints Drum-Buffer-Rope and worked on the assumption that Test was the bottleneck.
曾經閱讀過 Goldratt 寫的《目標》這本書,對於「Theory of Constraints」(限制理論)不是太陌生,但是什麼是「Drum-Buffer-Rope」呢?這引發我的好奇心。
剛好在閱讀《Agile Project Management with Kanban》這本書,裡頭提到了這個概念,利用這篇文章將資料做些整理。
在進入 Drum-buffer-rope 之前,我們先理解「限制步驟」這件事情。
「限制步驟」對於系統的影響
需求從開始到完成的過程中,我們可以將工作流程分成多個步驟。每個步驟所需要的處理時間都不同,花費時間最長的步驟會大幅決定整個系統的產出,所以又被稱為「限制步驟」。
無論你選擇什麼方式提高限制,你都不會希望限制步驟花費更長的時間。限制步驟的某些變化是你無法控制的,但你可以控制其中的一些變化。特別是,你可以盡量避免大家經常犯的兩個錯誤:
- 不要讓限制步驟等待:由於系統的吞吐量完全取決於限制步驟,因此其他步驟要盡可能配合限制步驟,不應該讓限制步驟等待。
- 不要強迫限制步驟更快:實際上,能夠讓限制步驟更快當然非常好,但是強迫大家更快的工作通常會導致走捷徑、品質下降、重工等問題。這些問題都會進一步降低吞吐量,並增加同時進行的工作數量,這樣的方式與我們的目標相違背。
「Drum-buffer-rope」如何幫助「限制步驟」
Drum-buffer-rope 是限制理論(TOC)的一種應用,它可以避免上述的兩個錯誤,並確保所有步驟的節奏一致,以實現最佳反應時間。它有三個關鍵的概念:
- Drum:系統中花費時間最長的步驟。其他的步驟都要和 Drum 的節奏一致,以確保 Drum 始終在敲擊,永遠不會被淹沒,並且所有步驟都得到充分利用。
- Buffer:Buffer 可在 Drum 改變速度時預留額外的工作項目。我們無法避免變化,尤其是在產品開發方面,但是當有 Buffer 時,可確保你的 Drum 隨時都在敲擊。
- Rope:Rope 確保在系統中花費時間最短的步驟,能夠以 Drum 的同個速度進行。當有一條 Rope 時,可以確保你的 Drum 不會被工作塞滿,並且所有的步驟都得到充分利用。
以 David、女兒和狗一起散步為例子
在《Agile Project Management with Kanban》這本書提到,David 在他的部落格中提供了一張令人印象深刻的圖片,可以用來理解 Drum-buffer-rope,不過目前我沒有找到出處。
這個故事描述當 David 在遛狗的時候,他的小女兒喜歡一起參加。David 的狗比他的女兒體型大很多,所以移動的速度很快。但是,無論 David 和狗的速度如何變化,整個隊伍的移動速度都由 David 的女兒決定,因為她是這個系統中的限制步驟。
當 David 需要蹲下來收集狗的糞便時,他用繩子來跟蹤他的女兒。繩子足夠寬鬆時,這樣他的女兒就不需要放慢速度,可以持續前進。David 用狗鍊把狗拴住時,可以確保 David 和狗都不會離他的女兒距離太遠。如果狗身上沒有狗鍊的話,可能會讓這個系統變得混亂,節奏無法一致。
在這個系統中,David 的女兒是 Drum,David 和女兒之間的繩子是 Buffer,狗身上的狗鍊是 Rope。只要 David 和狗可以跟上他女兒的步伐,並且設置有一些緩衝 (buffer) 來應對變化,散步就會很愉快。
Drum-buffer-rope 主要應用在工廠的生產排程中,看板方法受到它的啟發,用來確保工作流程中的限制步驟,可以得到最大的利用。