Ruddy Lee 分享空間

Emergent Design 演化設計

精實原則: 盡量延遲決策 Decide as Late as Possible

with one comment

對於流程而言:

等到真正需要做改變的時候再做決策,提前的變更只會增加無形的成本。

對人而言:

等到要做決策所需的資訊較充分了, 再來做判斷會比較正確.

 

適當等待是作出好的決策時不可缺少的行為

(這裡說的是做決策的時機點而不是如何做正確的決策。)

敏捷開發為了處理需求不斷變更的前提下,鼓勵把決策的下達延到最後可以容忍的時間點再做決定。一個流程決策的好案例: 印表機廠商因出貨國家的電源種類不同而傷透腦筋。如果採用決策的下達延到最後的概念,就是等貨到了該國度之後再由銷售的門市依客戶的選擇把電源線加上去,就可以避開這個複雜的出貨問題。對個人而言;延遲決策是為了避免在早期資訊還不清楚的狀況下, 就迅速作出決定, 或是進行評估作業, 這會是一種浪費, 因為可能會很多東西之後都要再修改, 或是重做.

 

平行開發 Concurrent Software Development

為了同步作業我們可能需要等待。而等待所換來的則是順序性的同步做業。作業原本就可以採用非同步、並行的方式完成,之所以我們沒有採用的原因,是因為太複雜了! 就為了讓工作可以在同步與非同步之間做切換,僅僅在處理那種複雜的機制所損失掉的力量可能會大過並行工作所能取得的收穫。但那是多年以前的說法了,多核心的CPU創造了新的並行開法程式語法,而簡易的語法造就了更快速的運算效能。敏捷開發採用短周期迭代的方式來降低風險,就如同非同步的語法也僅僅是在小範圍的相同理論上運作一般,既便Multitasking is evil,但在受控制的小範圍內實施它卻是利多於弊的。因此決策的時間往往需要參考到並行作業的結果,所以盡量將決策延遲到訊息較明確的狀態在下達是較高效的一種作法。

 

最後負責時刻 The last responsible Movement (LRM)

最後負責時刻並不等於盡量延遲決策。這是豐田精神轉換到軟體開發上較有爭議的一個地方,盡量延遲決策在針對生產線上的決策關鍵時間有相當正面的意義,並無爭議。但對應到最後負責時刻這個並不是那麼正面的用詞,就十分讓人容易迷惑。最後負責時刻: 是指當你再不做出決策時,不做決策的成本就要高於做出決策的成本時就稱之為"最後負責時刻"。明顯的最後負責時刻是針對在作業上可以獲得較高的靈活性。(這個詞彙最初是由精實建築協會所提出www.leanstruction.org),並經常在敏捷開發上被引用來處理尚不明確得需求,建議決策宜延遲到最後一刻,也就是狀態較明朗的時候再做決策。延遲所獲得的時間則讓決策者有較高的靈活性可以拿來處理其他事情。

 

談決策:先深入Depth-First 或是先廣度Breadth-First

在處理人工智慧的程式裡頭,你總是會遇到這種應該先深入問題的探討呢?還是先廣泛搜集更多的類似問題再去逐一深入探討的決策性問題。舉個例子來說;假設我們要找一把槍,我們只知道它被放在一棟四層樓高,每層樓有20個房間的建築裡,試問你要怎麼尋找它?是先把一層樓都找完畢之後在換樓層呢?還是找一個房間後就換一個樓層呢?而先深入Depth-First 的作法就好比將一個樓層都找完在換另一個樓層。它的優點是簡單,你可以很早就下定決策,接著就照著做就是了,它可以迅速降低問題的複雜性。缺點是它會過早縮小各種可能性的研究。例如先探討每個樓層會有幾個樓梯?他們個別又隔幾個房間就有一個之類的解題參考。廣度優先Breadth-First則會延遲決策,當搜尋到有多個樓梯在樓層與樓層之間時,就有機會再擬定新的尋找策略。初學者通常會採用先深入的方式。等到熟悉後有經驗後再做其他嘗試。先深入或是先廣度這二種方法,沒有絕對的對或錯。但不論採用哪一種策略,先搜集相關的專業知識都是不能缺少的(參考上面找槍的例子,設計者通常都會留下一些蛛絲馬跡,讓有經驗的搜尋者做判斷的依據,目的當然是讓使用者能夠迅速累積經驗)。

 

直覺式的決策

最後我們來談一下相對於延遲決策的快速決策: 直覺式的決策 。一種類似「急診室的分類法」先做簡易分類後立刻做決策:(後面是處理等候時間)

  • 第一級:復甦急救 (須立即急救;例如車禍大量出血、意識不清),
  • 第二級:危急 (10分鐘;例如車禍出血,但生命穩定),
  • 第三級:緊急 (30分鐘;例如輕度呼吸窘迫、呼吸困難)
  • 第四級:次緊急 (60分鐘)
  • 第五級:非緊急 (120分鐘)

※ 進入急診室後,請向醫護人員詢問您屬於第幾級傷病?需要等候多久。

通常救護人員、 消防人員很少做決策,他們直覺的依據守則(通常是經驗)走。而非理性決策過程,理性決策:分解問題、移除上下文、應用分析技術、進行討論。這種理性的過程會在有意無意間忽視人們的經驗,而經驗正是敏捷開發最有利的參考。如果能依靠理性分析指出甚麼地方存在不一致,甚麼地方忽略了關鍵因素,固然很好。但他遠遠不如直覺來的有用,因為理性分析移除了上下文之間的關係,所以不太可能觀察到嚴重的失誤。這就是經驗最有價值的地方。

 

培養經驗最有效的方式,建議你;透過閱讀把別人的經驗變成自己的知識。

 

 

 

 

Written by ruddyllee

2014 年 10 月 04 日 於 14:19:00

張貼於未分類

一個回應

Subscribe to comments with RSS.

  1. […] Email 就是有這個好處,它按時間來流動。前一刻所接觸到的人、地、事、物,就在下一刻來重新檢視一遍,思維就會變得不一樣了,精實開發裡稱它為「盡量延遲決策」的法則。目的是做更深層的思考,讓決策擁有更多可以參考的訊息,更能夠客觀的加以評論。 […]


發表迴響

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

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

%d 位部落客按了讚: