讀古今文學網 > 程序員必讀之軟件架構 > 理解「敏捷」 >

理解「敏捷」

要理解你的軟件架構需要多敏捷,就應該看看敏捷究竟是什麼。美國空軍戰鬥機飛行員約翰‧博伊德(John Boyd)提出了一個名為OODA循環的概念2 。本質上,這個循環構成了基本的決策過程。想像一下,你是一個正與敵人纏鬥的戰鬥機飛行員。為了擊敗對手,你需要觀察情況,確定自己的方位(比如做一些分析),決定做什麼,並採取行動。在激烈的戰鬥中,為避免被對手擊落,這個循環要執行得盡可能快。博伊德說,如果你能洞悉對手的OODA循環,執行得比他更快,就能混淆視聽,誤導對手。如果你比對手更敏捷,就能成為最後的贏家。

2 http://en.wikipedia.org/wiki/OODA_loop ——觀察、定向、決策和行動,Observe、Orient、Decide、Act。——譯者注

在一篇題為「What Lessons Can the Agile Community Learn from A Maverick3 Fighter Pilot」(敏捷社區能從特立獨行的戰鬥機飛行員身上學到什麼)4 的論文中,不列顛哥倫比亞大學的史蒂夫‧阿道夫引用了博伊德的概念,將其應用於軟件開發,得出的結論是敏捷是相對的,且按時間來衡量。如果你的軟件團隊交付的軟件跟不上所處環境的變化,就不算敏捷。如果你在一個龐大而行動緩慢、鮮有改變的組織中工作,很可能交付軟件要花費數月,卻仍被組織認為是「敏捷」的;在一個精益初創團隊中,情況多半就不一樣了。

3 Maverick是電影《壯志凌雲》中湯姆‧克魯斯飾演的飛行員的代號。——譯者注

4 http://ieeexplore.ieee.org/xpl/articleDetails.jsp?tp=&arnumber=1667567