CY
CY

在成為獨當一面的軟件開發者的道上迷途的程式人。興趣廣泛但學無專精,除了會寫code,偶爾也會寫寫字,射射箭。

[Meetup 筆記] 反覆試探、修正的工作框架──從Cynefin Framework看Agile

推廣Agile(敏捷開發)的時候,無可避免會遇到一條提問:到底Agile 能夠解決甚麼問題?這條提問並不容易回答,而Cynefin Framework 可以幫助我們更清楚地描述Agile 適合解決的問題性質。

講題:A Language of Problems: using the Cynefin to talk about Agile
講者:Sean Coleman
主辦:Agile Hong Kong
時間:2019/07/24 晚上
場地:WorldFirst 在銅鑼灣的辦公室

是次Meetup活動專頁演講錄影

Sean Coleman:

Cynefin Framework

Cynefin Framework 是一套解決問題的框架,由Dave Snowden 於1999年在IBM提出。Cynefin 這個詞來自威爾斯語,譯成英語的話大致是habitat、familiar,意思是一個人感到歸屬於此的地方,筆者的理解近似中文的「歸宿」。

Cynefin 框架將問題區分為四大領域:

  • Obvious 明顯
  • Complicated 繁雜
  • Complex 複雜
  • Chaos 混亂

其核心思想是:知道身處何地(問題屬於哪個領域),自然能知道該如何反應(應對問題的方式)。

四個問題領域

Chaos 混亂

混亂領域中,事情的因果關係無法確立,我們無法預知一個行動會帶來什麼結果。災難、戰場、創業都屬於這個領域。混亂通常是暫時性的,而且即使不採取任何行動,隨着時間流逝情況也會自行不斷變化,直至混亂狀態結束。不過這樣的結束方式通常都不是我們所希望的。例如當發生火災,即使不去撲救,到大火將一切燒光燃淨就會熄滅。

適合混亂問題的處理方式是 Act-Sense-Respond (行動 > 理解 > 反應)。由於因果關係不明,而且局勢不斷變化,分析預測往往徒勞無功,先採取行動更為迫切。行動後觀察變化,從中找出可能出現的規律,再作出反應,逐漸將問題帶離混亂狀態。

不過這種處理方式並不考慮可持續性,用來處理其他領域的問題的話效益不彰。

Obvious 明顯

明顯領域的問題,因果關係清晰明暸,解決方法顯而易見。例子有幼兒玩具、信用咭審批。解決辦法通常會有標準運作程序(SOP)、最佳實務(best practice)。

處理方式是 Sense-Categorise-Respond (理解 > 歸類 > 反應)。理解後將問題歸類,然後按對應的既定程序來處理。

要注意處理明顯問題容易令人自滿鬆懈,因疏忽而一下子令問題跌入混亂領域。例如安全檢查,習慣只檢查清單上的事項,忽略清單外的潛在風險,當意外發生便釀成災難。

Complicated 繁雜

繁雜問題的因果關係雖然不明顯,但只要具備所需的專業知識,經過調查分析,就能夠理清箇中緣故並找出解決辦法。例子: 維修汽車、建造橋樑。

因此適合的處理方式是 Sense-Analyse-Respond (理解 > 分析 > 反應)。

Complex 複雜

複雜問題的因果關係難明,往往事後才會明朗,而且每個行動會都會對情況造成變化。問題的複雜性亦無法消除,但其規模能夠被縮減。例子:圍棋,對局雙方都會因應對手的每步棋不斷調整自己的策略。

處理方式是 Probe-Sense-Respond (試探 > 理解 > 反應),透過反覆試探令因果關係逐漸明朗,不斷修正解決方法。

為何開發軟件適宜用Agile ?

透過Cynefin 框架了解到各種問題領域和處理方式,就不難理解,為何強調事前規劃,準確定義問題的Waterfall ,只適合用於解決明顯或繁雜的問題,用來應付複雜甚至混亂的問題會捉襟見肘。

軟件開發屬於複雜問題

開發軟件是創造新事物、製作由人使用的系統。與人的互動是複雜的,而開發過程中,亦要不斷應付系統需求的轉變。即使有時候成品本身只是繁雜的,開發時的團隊合作仍然是個複雜問題。

Agile 就是反覆試探、修正的框架

Agile 提倡的開發方式,各方面都很符合解決複雜問題的原則:

  • Fail Fast, Fail Safe 鼓勵低成本的試探
  • Sprint 是從時間上縮減規模
  • 小型開發團隊就是從人的因素上縮減複雜性
  • Review 和 Retrospective 是試探後的理解,從而在下一次Sprint 作出反應

以多次sprint cycle 開發,其實就是反覆「試探 > 理解 > 反應」的過程——摸索、收集回饋、檢討、調整解決方案。


聯想

(發想於2019–7–30香港社會動盪之際)

我們的學校教育,著重教授知識和實務技能。

我們普遍的職業工種,諸如文員、倉務、廚師、會計師、工程師、醫生、律師,每日要面對的是明顯和繁雜的問題(雖然視乎人的因素,多少帶複雜性)。

我們的社會價值,強調秩序和守法。

我們的文化傳統,恥於失敗。

以上種種,令很多人只擅長和習慣先理解、分析的問題處理方式,凡事先計算成效得失,謀定而後(敢)動。以致近乎情感上抗拒面對複雜、混亂的問題,甚至排拒其他處理方式。面對失序難題仍然只願意有序思考,無濟於事。在失效的社會,既有制度已被扭曲,惟有從衝突中勇於不斷嘗試各種未知成效的新方法,才能從中摸索出解決之道。

Originally published at CY L. @ Medium on Sep 14, 2019.

CC BY-NC-ND 2.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…

发布评论