敏捷与精益
2008年6月26日
我正在考虑使用敏捷软件开发 - 但我是否应该使用精益软件开发呢?
这个问题是我最近遇到过几次的问题。这不是一个我可以快速回答的问题,因为这个问题基于对精益和敏捷之间关系的错误前提。所以首先我需要回顾一些历史来帮助解释这种关系。
“精益”从根本上来说是指制造业中的一种方法,最初由丰田汽车公司在 1950 年代开发。当时日本工业正在从第二次世界大战的破坏中恢复过来。这种方法通常被称为丰田生产系统,主要归功于大野耐一,尽管他受到各种西方思想家的影响 - 特别是戴明。丰田生产系统在 1990 年代在世界其他地区变得广为人知,当时西方人开始写书来解释为什么日本人能在许多行业中击败美国。西方作家将这种方法称为精益制造。尽管日本工业总体上自那以后遇到了更艰难的时期,但丰田汽车公司仍然优于大多数西方汽车公司。
敏捷软件开发是几种软件开发方法(包括极限编程和 Scrum)的总称,这些方法是在 1990 年代开发的。这些方法共享一种共同的理念,在敏捷软件开发宣言中被描述为价值观和原则。(我的文章“新方法”更深入地探讨了这一点。)
从一开始,精益制造和敏捷软件之间就存在着联系,因为许多敏捷方法的开发者都受到精益制造理念的影响。这种联系由玛丽和汤姆·波彭迪克更明确地提出。玛丽曾在一家采用精益制造的制造工厂工作,她的丈夫汤姆是一位经验丰富的软件开发人员。他们写了几本关于精益理念在软件领域的应用的书籍。当人们谈论精益软件时,他们通常指的是这些书中的理念,尽管其他人也一直在建立类似的联系。
精益制造和敏捷软件方法具有非常相似的理念。两者都非常强调适应性规划和以人为本的方法。因此,精益的理念非常适合敏捷软件的故事。玛丽和汤姆在敏捷社区都非常活跃 - 事实上,我认为玛丽在成立敏捷联盟方面发挥了重要作用。(像我一样,她是敏捷联盟的创始董事会成员,但她比我更有效。)
我已经提到精益制造从一开始就影响了敏捷主义者,并且在过去几年中,更多具有明显精益制造传承的理念出现在敏捷领域。这些理念从像价值流图这样的具体技术,到对现有敏捷概念(如做出设计决策的最后责任时刻)的阐述。将分析和设计文档视为库存的想法来自波彭迪克夫妇。我认识的几位敏捷主义者强调缩短循环时间的重要性 - 这是另一个受精益影响很大的理念。我的同事理查德·德纳尔对精益知识如何与敏捷思维融合有一个很好的总结。
精益理念对许多人特别有吸引力,因为它们提供了一种向人们解释敏捷软件开发的方法 - 特别是 IT 内部和高级客户的高级人员。这种解释范围从粗略地呼吁效仿丰田,到详细讨论精益制造的好处如何转化为敏捷软件开发中的理念。
因此,正如您所看到的,精益和敏捷在软件领域是紧密交织在一起的。您不能真正谈论它们是替代方案,如果您正在做敏捷,您就是在做精益,反之亦然。敏捷一直被认为是一个非常宽泛的概念,是一套核心价值观和原则,这些价值观和原则被表面上看起来不同的流程所共享。您不是做敏捷或精益,您做的是敏捷和精益。唯一的问题是您在多大程度上明确地使用直接来自精益制造的理念。
波彭迪克夫妇并没有将精益作为一种独立的理念引入,也没有以 Scrum 或 XP 的风格将精益作为一种已发布的流程引入。相反,他们将精益引入作为一套思维工具,可以轻松地与任何敏捷方法融合。我认为精益是敏捷社区内的一种思维方式,就像一块富丽堂皇的地毯上的图案。
确实存在一个独特的精益软件社区,就像一个自称为精益的邮件列表,以及自称为精益思想家的人。但这与存在强大的 XP、Scrum 和其他社区这一事实没有什么不同。这些社区中的大多数人认为自己是更广泛的敏捷运动的一部分,许多人活跃于多个敏捷社区。创造“敏捷”一词的全部意义在于认识到我们共享一组核心价值观和原则,而这种共同的核心意味着我们共同点大于我们的差异。