當前位置:
首頁 > 最新 > 用蒙特卡洛計劃改進決策

用蒙特卡洛計劃改進決策

本文要點

說明蒙特卡洛計劃與基於速度的計劃方法有怎樣的差異

列舉兩個例子,展示蒙特卡洛計劃的好處,並予以探討

用Excel電子表格實現一個簡單的蒙特卡洛示例

看一個很酷、很快速判定人類評估的精確度的方法

了解如何在組織中推廣蒙特卡洛計劃

在2010年,我通過用C#創建了一個定製的蒙特卡洛計劃工具,幫助了一個初創企業IPO,這個工具可評估新的小型業務產品按期交付的可能性。這個工具的輸出,是分布於可能的發布日期上的可能性,幫助軟體交付團隊及其領導做出決策權衡。當產品按期發布時,恰恰比IPO提前了幾周,公司的首席技術官和創始人說,這是史上本公司按期交付的首款產品。在用蒙特卡洛做計劃之前,這個公司用的是標準項目管理和敏捷計劃法。

除了改進評估之外,蒙特卡洛計劃還有助於改變制定計劃相關的文化和思維方式。當C層管理者向工程副總裁詢問一個數據時,能夠就此數據的可信程度進行充滿智慧的交流。該工程副總裁開始說,「發布是不確定日期的,它具有或然率。」這反過來帶來重大變革,包括要跟進的指標(從速率到端到端的精細化管理),以及產品管理組是如何思考風險的。

這是蒙特卡洛帶來更好的結果和決策的眾多示例中的一例。蒙特卡洛計劃基於歷史數據形成完整的可能性分布。與此相反,標準敏捷計劃法形成平均情況分析的直線。

蒙特卡洛計劃的簡單示例

讓我們看一個蒙特卡洛計劃的簡單示例,來了解一下它的好處。

假設一支Scrum團隊,它的速率範圍從80到120呈均勻分布。這支Scrum團隊想要知道在六個迭代版本中將完成多少個點。如果團隊簡單計算平均速率將得出6個迭代能完成600個點(6*100)。與此相反,蒙特卡洛會用20個樣本來進行模擬:

結果顯示,6個迭代有10%的可能速率為平均92,比平均分析顯示的整整少了8%。這個數據馬上引起產品負責人的興趣,發起了一次有意義的討論:「如果在發布日期到來時,待辦事項中8%的內容還未完成會發生什麼?如果這是不可接受的,我們有哪些選擇可以拿出來探討?」

這個可能性是如何計算出來的?蒙特卡洛採樣了歷史分布,在本例中是80到120的均勻分布。為繪製以上圖表,我對此分布採樣了20次。以下為其中一個樣本:

這個樣本由6個迭代構成,因為團隊想要評估6個迭代的發布。在這個具體樣本中,速率範圍最低為91,最高為120。其平均值為108.5。在上個圖片中,這個樣本反映為X軸上的那個「108」塊狀條。

以下為另一個樣本:

在這個樣本中,速率範圍最低為87,最高為113,平均值為95。

假設每個樣本都是一種「未來的可能性」。蒙特卡洛從歷史信息和恰當的權重創建這些未來的可能性。

蒙特卡洛最大的其中一個好處是,它適用於任何分布,甚至每個都是未知的也可以。在本樣本示例中,分布是已知的,問題也足夠簡單,在6個迭代末期可能的分布有一個閉合解。然而,通常實際上沒那麼簡單。

更複雜的蒙特卡洛計劃示例

對於那些在真實世界中遇到的問題,不可能或很難快速用蒙特卡洛法得出封閉解。我在客戶端遇到過這麼一種現實情況,它極為常見,如下:

這個模型的關鍵部分:

有兩個產品開發團隊在並行開發。每個團隊的速率為100上下浮動20(均勻分布)。

每支團隊必須完成575個點。

業務驗收有95%的可能性在一周之內完成,有100%的可能性在兩周內完成。

這個目標是在13周里完成工作:6個迭代(12周)開發,一周為業務驗收。

該項目按期完成的幾率是多少?蒙特卡洛給出的結果是大約45%。

蒙特卡洛計劃與任何直線評估都不近似

由於平均情況分析(比如由許多Scrum團隊使用的基於計劃的標準速率)比蒙特卡洛要更容易,那麼很自然就會去想,是否有些平均情況直線評估和蒙特卡洛的結果近似呢?為驗證這個可能性,我們將看針對這個更複雜的問題,在三種速率假定下會發生什麼情況。

最好的情況假定:項目速率=120個點

平均的情況假定:項目速率=100個點

最差的情況假定:項目速率=95個點

在這三種情況下,業務驗收都花一周。很明顯,在一開始時這三種評估的工作量相差就很遠。最好的情況和平均情況假定下表示有100%的可能按期完成,然而最差情況下表示沒可能按期完成。

既然最初評估相差很遠,那麼針對這些假定,多少迭代後得出的結果能與蒙特卡洛一開始得出的45%的或然率相接近呢?這裡有20個樣本運行的結果:

該圖表顯示:

最佳情況分析(藍線),直到迭代6,成功可能性都是過於樂觀

平均情況分析(紅線),直到迭代3,成功可能性也都是過於樂觀

最差情況分析(綠線),直到迭代4,成功可能性都是過於悲觀

總之,沒有直線與蒙特卡洛的結果近似。為什麼會這樣?置信區間的變化與時間平方根成正比,所以任何直線在較長時間周期上都會越來越遠。此外,平均情況分析總形成一個單一的結果,要麼如期完成,要麼不能如期完成,這顯然是不對的。

有沒有一種方法,可以調整直線分析得出更好的結果嗎?一些敏捷專家建議,創建直線近似數去形成置信區間。例如,取近五個迭代的最低的三個速率得出「悲觀」評估,而取近五個迭代的最高的三個速率得出「樂觀」評估。問題是,這些直線法的實際結果將處於低直線評估和高直線評估之間,而它們會隨著時間的變化而變化,它不是恆定的。所以這些直線「低」和「高」的邊界是不確切的。正如之前所述,置信區間的變化與時間平方根成正比,所以沒有直線接近實際,除非是非常短的時段。

蒙特卡洛的優勢

以下是我為什麼喜歡蒙特卡洛模擬的原因:

它們是向端到端模擬邁進的一步,是對公司運營和績效特徵的理解。最後,蒙特卡洛有助於回答這樣的問題:加一倍的團隊數量,或者加一倍的時間,哪個選擇更好?

蒙特卡洛針對成本、時間和範圍(或其他別的東西)生成完整的可能性分布,它能改進決策制定。

蒙特卡洛克服了標準敏捷計劃法的重大缺陷:

對於多支團隊或有依賴的團隊來說,基於速率的計劃實踐通常是無效的,因為速率根本就未涉及待辦事項中的一個條目到底要花多長時間。而且,在單團隊的情況下,基於速率的計劃就是直線平均情況分析,它未提供對信心或變數的度量。

SAFe建議,投票決定對PI(程序增量)計劃的信心:「一旦程序風險已被處理了,團隊就對實現計劃目標的信心投票。」雖然這種人文主義的計劃方法值得讚賞,但它是不完備的,值得用定量的方法予以補充。

未以嚴謹的方法處理依賴關係。

像所有人類評估一樣,在敏捷計劃中採用的評估往往有嚴重的個人和組織偏見。

對蒙特卡洛的擔憂

以下是我聽說的幾個常見的對蒙特卡洛法計劃的擔憂:

未來與過去不同,由於樣本取自歷史數據,所以會形成不佳的結果。這可能是個非常技術性的問題,但我更願意去簡化它:系統要麼是穩定的,要麼是不穩定的。如果它是穩定的,那麼歷史樣本就充分有效。如果系統是不穩定的,那麼沒有什麼預測方法能使管理者足夠滿意。

創建一個蒙特卡洛模擬很困難。它比做平均情況直線分析要難一些。但使用Troy Magennis提供的Excel電子表格可以容易一些。在下面的段落中,我將說明如何使用Excel去創建一個簡單的蒙特卡洛模擬。

高管不理解可能性分布。我同樣有這樣的體驗。所以與其向高管們展示可能性分布,還不如找出關鍵決策點的可能性,然後這麼去交流:「有15%的可能無法達成你的目標,你將無法獲得回報。」

使用評估的問題不是如何形成結果的,而是如何理解的。無論評估是如何產生的,這都是個非常共性的問題。然而,如果評估方法不是嚴格定量的,就會演變成政治活動和「管理者的預期值」。

當沒有歷史數據時,蒙特卡洛是無效的。這一點兒都沒錯!在這種情況下,我經常建議團隊把做計劃和評估的時間降到最低,而是開始動手幹起來,產出歷史績效數據。

對蒙特卡洛的終極反對意見是,在考慮計劃和檢查評估時,組織經常缺乏信心和共識,它並不能處理這種情況。缺乏信心和共識就邀請管理者在不考慮歷史績效的前提下設定目標。這種擔心可以理解,我建議分別來處理。有許多達成共識的舉措,比如分發「價值美元」,邀請干係人去購買特性或截止日期,這將揭示不同的假定和權衡傾向。一旦參與的每個人對當前現實和目標有了共同的理解,蒙特卡洛計劃可能就適合了。

證明人類評估不精確

阻礙蒙特卡洛計劃的一大障礙是,對人類評估的精確性的盲目自信。

這裡有個簡單的技巧,我拿來證明一個人類評估是精確的還是不精確的:

選擇一個要予以評估的工作事項。在團隊層面,通常會是個用戶故事。在程序層面,通常會是個方案或工程。

選擇一組將要進行評估的專家。在團隊層面,幾乎總是做這項工作的人。在程序層面,經常是一組高級工程師。

把專家分為兩組,請他們分別對該工作事項予以評估。

定義度量的誤差。舉個簡單的例子:設m為兩個估值的平均值,x2為兩個估值中較大的一個。該指標為x2/m - 1。例如,如果兩個 估值為80和120,那麼指標為20%(120/100 - 1)

在形成評估的成本超過其估值之前詢問參與者,這個指標會有多差。針對在之前步驟中定義的指標,範圍通常為10%到25%。

計算指標並彙報結果。

多半,結果會顯示高於需要創建的有用的評估。這為討論蒙特卡洛的估值,以及應對其太難操作的關注點提供了一個契機。在近期對400人的公司的培訓活動中,我在大約30分鐘里執行了這些步驟,一個故事的偏差為33%(也就是說,樂觀估值是悲觀估值的兩倍)。

如果引入蒙特卡洛計劃

蒙特卡洛計劃可能不適用於所有的情況。如果條件具備,我喜歡這樣去引入它:

理解現有做計劃的實踐。

說明現有方法和標準敏捷方法的缺陷。

使用公司的實例說明蒙特卡洛法的好處和不同。

量化商業收益。

推廣蒙特卡洛計劃的應用範圍。

第一步往往會被忽視,但它是引入這種變革的關鍵組成部分(而且,實際上對於任何其他變革來說都是如此)。所幸,我從未遇到過一家享受它的計劃方法或覺得結果高度精確的公司。實際上,在財富500強企業中,我為一些年度計劃負責人提供過諮詢,他們告訴我,「計劃和實際就沒什麼關係!」在這種情況下,主要問題是獲取歷史計劃數據,為工作體系建模。

用一個簡單的電子表格體驗一下蒙特卡洛計劃

在Excel中可以使用randbetween和hlookup函數創建一個簡單的蒙特卡洛計劃電子表格。

公式看起來是這樣的:

單元格A1、B1和C1包含數字1、2和3。把它們假設為最近的三個迭代。單元格A2、B2和B3是團隊在每個迭代達成的速率。

第四行包含以下公式:

=HLOOKUP(RANDBETWEEN(1,3),$A$1:$C$2,2)

RANDBETWEEN生成一個1和3之間的隨機數(因為這裡有三個迭代)。調用這個隨機數N,HLOOKUP返回第N個迭代的速率。所以第四行採樣歷史分布去創建另一個三個迭代序列。

你可以重複第四行許多次,作為你想要創建的直方圖(可能性分布),然後做其他類型的分析。在本文開始我給出的這兩個例子中,我把第四行重複了20次,創建了20個樣本。大多數蒙特卡洛案例都使用超過1000個樣本。

總結

蒙特卡洛計劃採樣歷史分布以給出未來可能出現的嚴謹的、定量的結果。

相比標準平均情況直線敏捷方法,它具有巨大的優勢,你可以使用一個簡單的Excel電子表格開啟蒙特卡洛之旅。

其他資源

如果你想要更深入地研究蒙特卡洛計劃,可以查閱一下這些其他資源:

InfoQ 文章:#利用蒙特卡洛模擬為未評估的項目制定計劃

視頻:蒙特卡洛計劃

演講:蒙特卡洛計劃(10頁幻燈片)

演講:蒙特卡洛計劃(20多頁幻燈片)

書籍:《預測和模擬軟體開發項目》

網站:專註的目標 (Troy Magennis).

網站:可付諸行動的敏捷 (Daniel Vacanti).

關於作者

Michael de la Maza是一名Scrum聯盟認證的企業教練(CEC)。作為一名敏捷諮詢師,他主要為Paypal、State Street、edX、Carbonite、Unum和 Symantec提供服務。以前,他是Softricity(2006年被微軟收購)的公司戰略副總裁和Inquira(2011年被甲骨文收購)的共同創始人。它是《Professional Scrum with TFS 2010》和《Why Agile Works: The Values Behind The Results》的合著者。他持有麻省理工學院的計算機科學博學位。Michael是一名活躍的教練,還是BayALN的協辦方,這是一個在舊金山的敏捷用戶群。他熱愛參與、創建和分享遊戲,共同組織了2010年敏捷遊戲大會、2011年敏捷遊戲大會和2016年敏捷遊戲西部大會。他就職於Scrum聯盟的認證團隊教練複核委員會和虛擬教練委員會。他熱衷於指導Scrum Master和想要深入理解敏捷的敏捷教練。他還通過 Techstars Boston指導和投資初創企業。

查看英文原文:Monte Carlo Planning Improves Decision Making

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 推酷 的精彩文章:

演進:在工作的前三年里快速成長

TAG:推酷 |

您可能感興趣

希特勒如何計劃裝備伊斯蘭世界
布魯金斯學會:特朗普基礎設施計劃面臨眾多挑戰
美媒披露決策過程:特朗普原計劃同時打擊俄羅斯伊朗在敘設施
《伊卡洛斯》之猖獗合謀——禁藥計劃
洛佩特吉履新先定夏訓計劃 潛力新星盼進入一隊
伊卡洛斯星際計劃,看工程師怎麼解決動力問題?
特朗普訪俄亥俄推銷基礎設施計劃 大談建邊境牆
蘋果計劃用一部動畫片進軍好萊塢,還指望著它拿奧斯卡
沃爾沃計劃向其它品牌共享卡車電池技術 與特斯拉競爭
皇馬計劃引進貝爾新的替代者,被告知需要用阿森西奧進行交換
沙特實施封鎖計劃 欲把卡達變成島國
她曾計劃刺殺希特勒
雷克薩斯改裝計劃,你準備好了嗎?
烏茲別克計劃將比特幣合法化
美國用盡手段制裁俄羅斯,普京一招反擊讓特朗普大計劃破產
坎巴拉太空計劃科研設備使用手冊一覽
希特勒的「巴巴羅薩」計劃
俄羅斯開始實施國家武裝計劃
古德里安堅決反對曼施坦因的計劃,希特勒陷入兩難
德克薩斯州勒令停止加密貨幣投資計劃;俄羅斯最新加密貨幣法案將對智能合約進行定義