敏捷與精實

2008 年 6 月 26 日

我正在考慮使用敏捷軟體開發,但我是否應該改用精實軟體開發?

這個問題是我最近遇到好幾次的問題。這不是一個我可以快速回答的問題,因為這個問題是基於精實和敏捷之間關係的一個錯誤前提。因此,我首先需要回顧一些歷史,以幫助解釋這種關係。

「精實」基本上是指製造業中的一種方法,最初由豐田汽車於 1950 年代開發。當時,日本產業正從第二次世界大戰的破壞中復甦。這種方法通常稱為豐田生產系統,主要歸功於大野耐一,儘管他受到各種西方思想家的影響,特別是戴明。豐田生產系統在 1990 年代在世界其他地區變得廣為人知,當時西方人開始寫書解釋為什麼日本人能在許多產業擊敗美國。西方作家稱這種方法為精實製造。儘管日本產業整體而言自那時以來陷入困境,但豐田汽車仍優於大多數西方汽車公司。

敏捷軟體開發是一個總稱,用於描述在 1990 年代開發的幾種軟體開發方法(包括極限程式設計和 Scrum)。這些方法有一個共同的哲學,在敏捷軟體開發宣言中被描述為價值觀和原則。(我的文章「新方法」深入探討了這一點。)

精實製造與敏捷軟體之間從一開始就有關聯,因為許多敏捷方法的開發者都受到精實製造理念的影響。這種關聯由Mary 和 Tom Poppendieck進一步闡明。Mary 曾任職於一家採用精實製造的製造廠,而她的丈夫 Tom 是一位經驗豐富的軟體開發人員。他們合著了幾本關於精實理念在軟體世界的應用。當人們談論精實軟體時,他們通常指的是這些書中的理念,儘管其他人也做過類似的連結。

精實製造和敏捷軟體方法有著非常相似的哲學。兩者都非常強調適應性規劃和以人為本的方法。因此,精實的理念非常符合敏捷軟體的故事。Mary 和 Tom 都非常活躍於敏捷社群中 - 事實上,我認為 Mary 在組成敏捷聯盟中扮演了重要的角色。(就像我一樣,她是敏捷聯盟的創始董事會成員,但她在其中的表現遠比我出色。)

我已經提到精實製造從一開始就對敏捷主義者產生了影響,而在過去幾年中,更多具有明確精實製造傳統的理念出現在敏捷世界中。這些理念的範圍從具體技術(如價值流圖)到對現有敏捷概念(例如做出設計決策的最後負責時刻)的闡述。將分析和設計文件視為庫存的想法來自 Poppendiecks。我認識的幾位敏捷主義者強調縮短週期時間的重要性 - 這是另一個受到精實影響的理念。我的同事 Richard Durnall 對精實知識如何與敏捷思維融合做了一個很好的總結。

精實理念對許多人特別有吸引力,因為它們提供了一種向人們解釋敏捷軟體開發的方法 - 特別是 IT 內部和高級客戶的高級人員。這種解釋的範圍從粗略呼籲效仿豐田到詳細討論精實製造的優點如何轉化為敏捷軟體開發中的理念。

因此,正如你所看到的,精實和敏捷在軟體世界中緊密相連。你不能真正談論它們是替代品,如果你正在做敏捷,那麼你正在做精實,反之亦然。敏捷一直被認為是一個非常廣泛的概念,是一組核心價值觀和原則,這些價值觀和原則由表面上看起來不同的流程所共享。你不會做敏捷精實,你會做敏捷精實。唯一的問題是你如何明確地使用直接來自精實製造的理念。

Poppendiecks 沒有將精實視為一個獨立的想法,他們也沒有將精實視為 Scrum 或 XP 風格中已發表的流程。相反地,他們將精實視為一組思考工具,可以輕鬆地融入任何敏捷方法中。我認為精實是敏捷社群中的一種思考模式,就像是一塊豐富地毯上的圖案。

有一個明確的精實軟體社群,就像一個自稱為精實的郵件列表,以及自稱為精實思想家的人。但這與也有強大的 XP、Scrum 和其他社群的事實沒有什麼不同。這些社群中的大多數人都認為自己是更廣泛敏捷運動的一部分,而且許多人活躍於這些敏捷社群中的多個社群。創造「敏捷」這個詞的重點在於認識到我們共享一套核心價值觀和原則,而這個共同核心意味著我們的共同點大於我們的差異。