(改寫自公司內部 memo)
Hi all guys,
剛從傳統瀑布式專案管理風格轉換到敏捷風格的團隊,最常遇到第一個卡關之處是:如何以敏捷的角度設定里程碑?
最近在協助兩個 Scrum teams 進行 Sprint Planning 時,我都會用以下角度提出挑戰性提問:
- 能否將 User Stories 拆分到:可以在一個 sprint 結束時,端出利害關係人可以據以給出建設性回饋的 end-to-end 成果?
這需要創意,需要練習,需要提升規劃能力,需要提升工程能力,需要時時用挑戰性提問提醒自己。但或許更重要的是:大家需要打從心裡認清且認同這樣做的理由。
理由之一是:精實生產。
七大浪費
7/22 舉辦過的《豐田精實管理的翻轉獲利秘密》導讀會有介紹過,馳名世界的豐田生產 (Toyota Production System) 當中有一個基本信念:「降低浪費,就能提升效率。」另一本書《豐田物語》也如是說:
豐田生產會從降低七大浪費著手:
-
Inventory:庫存、在製品。以軟體研發而言,規格書、wireframe、schema、test case⋯⋯任何無法真正迅速 go to production 轉換成實質價值的中間產物,都是 inventory。
-
Waiting:等待。
-
Defects:不良品。
-
Over-production:過量生產。
-
Motion:動作。
-
Transportation:搬運。以軟體研發而言,「人的 transportation」就是換手、接棒、工作交接,「物的 transportation」就是工單傳遞、簽呈傳遞、規格書傳遞、契約書傳遞。
-
Over-processing:過度加工。
這七大浪費當中,有幾點可以直接對應到敏捷的里程碑設定心法,值得我們時時拿來作為挑戰性提問,時時自我提醒:我們在 Sprint Planning 所規劃的里程碑、進程、作法,是否一不小心就會出現以下幾種浪費?
-
Inventory:在 Sprint Review 當場可以端得出來的成果,真的都是可以 on production 的東西嗎?抑或只是一個又一個的在製品,徒然製造一堆 inventory?
-
Waiting:在 Sprint Backlog Items 的每一個細分的 tasks,彼此之間是否有無謂的 waiting 或 dependency?
-
Transportation:在 Sprint Backlog Items 的每一個細分的 tasks,彼此之間是否有無謂的「人」與「物」(在製品)的 transportation?
若出現無法立即轉換成實質價值的浪費,就該針對這些 User Stories 再予以拆分,或是對執行方式再予以重組——這是我們該發揮創意、練習、提升規劃能力、提升工程能力的地方。
「降低浪費,就能提升效率。」
「已完成」
最後,我再摘錄 Scrum 之父 Jeff Sutherland 在《Scrum:用一半的時間做兩倍的事》第五章〈浪費是一種罪〉的相關內容作為補充。關鍵句在此:
在每一輪或是每段衝刺,團隊都要努力完成幾件事,但是「已完成」意謂著能提供給客戶使用的完整功能。
如果你有大批有價值的資源綁在沒有傳遞出價值的東西上,這些資源就無法用來做其他的事。
在 Sprint Planning 或是在設定專案里程碑時,請時時記得上面的提醒。
當大家致力於「降低浪費」的自我要求,同時也就等於開始實踐 Agile Manifesto 背後的十二原則:
-
原則一:Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
-
原則三:Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
-
原則七:Working software is the primary measure of progress.
-
原則八:Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
-
原則十:Simplicity–the art of maximizing the amount of work not done–is essential.
大家加油!
❸ 事情做一半,等於沒完成:淺談敏捷的里程碑設定