實踐 DevOps 三步工作法的金幣理論

.

金幣應該放在高業務價值的專案或是高優先順序的需求上。

當業務價值大於開發工作時,大家都會很高興;

當業務價值低於開發工作時,開發部門就會受到責難。

– 金幣理論

.

 

金幣.png

金幣理論的運作圖示

.

 

金幣理論 – 讓你善用資源的解題方案

基於供需問題的前提考量下,並為了將DevOps三步工作法實踐在真實世界的軟體公司裡,思考運用玩遊戲時最常接收到的即時回饋方式,也就是金幣的方式來描述整個企業在產品營運開發的資源(就是金幣)上,如何善用資源的運作方式。具體說明如下: 企業在由業務部門聆聽到市場及用戶的心聲後,向業主爭取資源,由企業決定要投入多少資源來進行產品的開發投資,業務部門將從市場獲取的概念搭配足夠的資源委託專門作需求設計的產品部門去設計產品的功能,讓抽象的產品概念逐漸擁有較清晰的輪廓,接著產品部門再將資源分配給開發部門進行需求的溝通以進行開發作業的研發行為,開發部門接著投入開發人力來製作出可供市場接受的產品的開發作業後,再交由維運部門來配置給客戶使用,隨後再經由客戶取得產品使用後的回饋,透過市場傳遞回給企業,使得企業在獲取市場訊息、學得經驗及獲得利潤後,重新運用資源將所學到的經驗,再投入到產品開發的改善及設計上而形成一種持續改善的循環。

.

什麼時候用金幣理論呢?

》當PO/PM不願意區分需求的優先順序時;

》當開發部門人力不足,但PM確堅持所有專案都一樣重要的時候;

這個時候;給他比需求數目大1的金幣數,讓他無法平均分配,或是給他二倍數目再加一的金幣數,請他把金幣放在專案或需求前,代表投入的資源多寡,此時優先順序就出來了!

.

金幣理論.png

金幣理論運作模式

.

為什麼用金幣呢?

這是為了替專案區分優先級別、為需求制訂優先順序的作法。例如: 有三個專案需要同時進行的時候,而你手上握有四枚金幣,不可能作平均式的分配,此時決定孰重孰輕、該多做投資在哪一個專案,便成了必然要作的抉擇,完整不可切割的金幣成就了這種自然形成的強迫性抉擇(透過衡量的抉擇),目的是要求專案的執行者能夠對專案進行衡量的作業,而不是盲目地作資源的平均分配。由於金幣是完整的不可再作細化的,這樣規定可以避免專案執行者將所有專案都一視同仁的錯誤作法(就如同PO將所有的需求都設定成相同的重要性一般,這是最糟的抉擇)。

 

不是開發的太慢,而是產出的業務價值不夠高

科技進步的實在太快了,越來越少有團隊在開發速度上受到肯定的。當開發團隊遭到抱怨開發速度太慢的時候,管理階層通常首先會想到的便是增加人手,用加人來解決產品部門及業務部門的埋怨,這個現象幾乎已經是擁有開發團隊企業的常態。但加人的措施真的能解決開發速度太慢的問題嗎? 這一點請參考《人月神話》書裏頭所謂的沒有銀子彈的理論(註2)。

 

{書名所謂的「人月」(man-month),是指在做管理專案時,用來計算投入的人力時間的單位(或「人年」),一個人做一個月,就是一個人月。而人月的計算方式實在是一種迷失,因為人月是不能用線性的方式來計算的。例如: 專案落後了三個月,那麼找一個人來補進去,是不是三個月後就能追上進度了。哪麼假設找三個人進來加入專案,是不是一個月就能趕上進度了,順理推論是不是找10個人來加入專案 3天以後就可以追上進度了。《人月神話》的作者Brooks正是要糾正大家這種用人月來計算專案進度的迷失,議題是: 專案來不及了,增加人手有沒有用。}

 

供需的問題 Supply and Demand

當想要開發完成的需求多過現有人力資源所能完成的工作,這個時候便出現供需不平衡的問題了。我們用存量與流量(stock and flow)的系統水管圖示來簡化所要描述的供需問題。

存量.png

簡化供需問題的流量與存量圖示

.

供給和需求是一個經濟學模型,它被應用作決定市場均衡價格和均衡產量。需求指大眾因需要一件產品而產生的購買要求;而供應就指企業響應大眾的購買需求而提供的產品供給。如果以系統思維來分析上面圖示,當水龍頭注入的水量與塞子漏水的流量趨於一致時,就達到了一種系統平衡的現象。

 

企業經營的目的在追求利潤

企業經營的目的在追求利潤,所以這個供需系統不在平衡,而是在追求更大的相對利益,因此專案開發的速度跟數量並不是最關鍵的因素,開發的產品對使用者是否具有高的使用價值才是重點,也就是說;開發部門應該以開發高業務價值的產品為圭臬,相對的開發的需求必須具有較高的業務價值才值得去開發。在這個DevOps 興起的時代,追求快速開發成了顯學,大家都被這一波快速成長的科技潮流壓得喘不過氣來,幾乎所有開發部門都被埋怨開發速度太慢,但實質上是我們開發的業務價值不夠高所致,是業務的方向需要正確,是產品需要真正具有競爭力,是開發團隊是否能及時讓產品上架才是問題,這是一個環環相扣的系統。這是一場團隊的競賽,而不是單一部門是否能盡到它們的職責所致。因此當我們在埋怨開發速度不良的時候,應該以系統思維的角度去觀察市場的全貌,運用數據收集與智能化來協助我們探索全貌,這也正是DevOps開始第一步強調系統思維的目的。

 

這裡談「供需理論」是為了取捨

我們都知道拍照時,你不能把全景都拍下來,那樣就完全沒有焦點了,你必需有所取捨,用局部來代表全部。把當下要傳達的故事聚焦化,先懂得捨才能取(所以拍照常常被稱為減法的行為)。專案開發也是如此,開發團隊的人力資源往往是固定的,但業務單位總是提出一大堆想要的需求,問它們的重要性,回答常是都重要。該如何做抉擇呢? 敏捷的精神告訴我們,以小的增量作依據,運用小迭代來換取經驗然後持續修正它,在資源固定的情境下當然是務實的選擇有把握而投資報酬率又較高的項目來做抉擇,在取得客戶足夠的滿意度後終止開發作業,而不是把所有的需求都作完,相反的;敏捷開發是遺留下來越多需求時則表現得越敏捷。

 

 

試著回想一下,我們在玩電動遊戲的時候,過關則獲得金幣(還有哪令人聽得興奮不已的音效)回饋,沒過關則可能被消滅必須重新來過。試想我們是怎麼過關的,即便是電玩高手也往往要透過失敗來獲取經驗,習得改進的策略後再來通關。所以經由實驗改進策略來獲取勝利似乎是玩電玩再單純不過的原則了。在玩電玩的時候;通常的結局都是明確的,回饋更是立即的,所以我們可以很快的學到訣竅,很快的就能再試一次,學到技巧了自然能夠過關,所以我們願意一玩再玩,即便是明明知道沒有戰勝遊戲的機會,但是這種樂趣就已經足以支撐我們玩上幾個小時不會放棄了。軟體開發則有著異曲通功之妙,只是真實世界裡的成敗與回饋都來的好慢,時間延遲的效應無處不在,很少能有快速又明確的回饋現象,但這並不代表我們就不能依樣畫葫蘆。敏捷開發的做法是採用小作小錯的學習模式,運用小的增量來減少花大功夫,然後依循著小的迭代時間,來快速的學到經驗,採用務實而持續的改善模式來達到終點。每一次的小迭代都會換來一次的抉擇,你都在做取捨,你也都有重新修訂方向的機會,你要盡快弄清楚方向,並做好抉擇。這一點是 DevOps 理論出現後,最被在意的一件事,也就是說快不是唯一重要的事,方向要對了快才有意義。換成軟體開發來說;需求的業務價值要夠高,真正滿足了用戶的需求才是開發的重點,開發團隊做得在快、完成再多需求,如果沒有滿足到用戶的需求,一樣意義不大。

 

三步金幣理論.png

金幣理論是用來實踐三步工作法

.

結論

金幣理論是看著資源不足的開發團隊,卻把所有專案視成一樣重要的行為,所激發出來的處理方法。人們習慣均勻的去分配資源,沒有通過數據化的衡量來做為決策時的依據,但在真實世界裡;幾乎所有的事情都具有優先順序,只是我們偷懶了,沒有去收集數據就直接做決策,犯了胡亂猜測的錯誤,試想;今天如果有三個專案,但我們有四個金幣可以使用來提供支配資源的時候,依照過去的習慣,我們在每一個專案都押下一枚金幣,試問多出來的一枚金幣要給誰呢? 我們是要依據業務場景跟開發週期來作判斷呢? 還是依據專案對企業的重要性來作抉擇呢?不管你做什麼樣的決定,該依據什麼準則來做衡量的標準,應該才是重點。前提是任何衡量總比不作衡量就直接以平均分配的方式來得合理。基於這個理由,所以我才會想到金幣理論。其實使用點數或百分比也可以進行重要性的區分,但獨獨金幣具有不可分性,所以才會逼得你去衡量,再依靠衡量後的數據作較合理的抉擇。這是產品經理人該學會的技能,衡量(3.)

 

想解決的問題

金幣理論的目的在解決長期以來專案及需求被視為一樣重要的問題。設法觸發專案及需求進行數據收集式的衡量行為。簡化企業在部門與部門之間的供需問題。做到符合DevOps 的放大回饋訊息,加強單項工作的意義。促進三步工作法的第三步、加速實驗、學習持續改善的迴路。

.

所有的需求都一樣重要?所有的專案都一樣重要?

問題不在專案或需求是否一樣重要,而是在有限的資源下,我們該如何善用。

.

拍照

將專案開發與拍照相提並論

.

註1. 典型系統中使用的特性/功能

只有20%的功能是使用者經常會使用到的,有將近 45%的功能用戶一被子也不會用到。

2. 《人月神話》書裏頭所謂的沒有銀子彈的理論

The Mythical Man-Month: Essays on Software Engineering是由IBM System/360系統之父佛瑞德·布魯克斯所著經典文集。

沒有銀子彈是布魯克斯所出的經典論文集之一。

3. 參考 如何衡量萬事萬物作者: Douglas W. Hubbard

.

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s