l

2014年12月15日 星期一

綁架Story

Dec. 13 10:20~11:32

螢幕截圖 2014-12-13 11.32.14

 

敏捷開發是一種價值驅動(value-driven)的開發方法,藉由固定開發成本與時程,讓團隊專注於優先開發價值較高的功能(請參考〈計畫驅動 vs. 價值驅動〉)。

螢幕截圖 2014-12-13 10.34.58

 

每個開發周期都挑選對使用者價值較高的story,講起來很好,但實際上有些因素會迫使團隊無法這麼作,常見的原因有:

  • Value:對於每個story的價值並沒有仔細的分析,看似挑選出高價值的功能,實際上並不是。
  • Estimation:採用iteration-based的敏捷開發方法,例如Scrum,在挑選高價值的story之後,sprint所剩下的開發時間不足以完成下一個高價值的story。為了「充分利用時間」,團隊只好挑選一個大小適中,但價值沒那個高的story來作。
  • Dependency:不同需求之間經常存在著相依性,例如新增、修改、查詢、刪除,沒有先新增資料,後續的修改、查詢、刪除看起來就沒辦法做。假設使用者認為查詢資料的價值最高,但團隊可能因為需求的相依性被迫先完成價值較低的新增功能。
  • Workload:有時候依據價值高低挑選出來的story,在不同sprint對於不同職能的工作量存在很大的差異,例如sprint N的時候有很多UI/UX的工作,sprint X的時候有很多撰寫程式的工作,sprint Z的時候有很多資料庫開發的工作。雖然Scrum團隊屬於cross-functional團隊,希望團隊成員可以彼此互相幫助,但職能相差太多的人實務上的確很難一下子就可以互相幫忙。因此,有時候團隊會因為想要平衡每個sprint的工作量,而被迫無法依據價值高低來選擇施工的優先順序。

***

價值驅動的觀念強迫團隊時時思考手邊的工作是否對客戶/使用者具有最高的價值,還是拿了一些不明所以的工作,只是為了填滿員工的工作時間,讓大家看起來很忙的樣子。了解上述影響價值驅動的因素,在工作的時候想辦法逐一排除,就會讓自己具有在較短時間開發出提供最高價值產品給使用者的能力。

***

友藏內心獨白:注意閒置的工作而不是閒置的人員。

沒有留言:

張貼留言