InfoQ

新闻

随着敏捷文化的传播,软件开发是否也得到了提升?

作者 Amr Elssamadisy译者 张雪 发布于 2007年9月14日 上午4时51分

社区
Agile
主题
敏捷实施
标签
评论

Philippe Kruchten在《敏捷文化基因群落之旅——在敏捷开发的世界,环境因素是关键》(html,pdf)中深入思考了敏捷的文化。他用了代表文化复制基本单位的“文化基因”这个概念,来描述各种敏捷思想和实践,并且称敏捷的文化就是许多的文化基因在传播的过程中聚集在一起,形成“文化基因群落”。Kruchten声称敏捷的文化,无论其是否对于一个组织有明显的帮助,都极具感染力和传播性。

Kruchten称敏捷是一组很容易复制的思想:

组成敏捷文化核心的50来种基因存在很大的内联性,并且相互支持,XP的创始人曾经提到并且强调过XP那一小群敏捷文化基因的这种特点。敏捷团队(以及敏捷用户组以及敏捷咨询师)已经被证明是一种在敏捷文化群落中复制、演化和扩散敏捷基因的有效方式。

遗憾的是,这些敏捷基因被从他们赖以生存的环境中剥离开来了。这也就意味着许多思想被认为是放之四海而皆准的真理——被应用到任意的环境中。因此直接导致了许多项目的失败,并且使敏捷思想对许多组织产生负面的影响:

有些时候,我们会看到有人明确地否定环境的相关性,思想的载体明确地或隐含地宣称敏捷思想的广泛适用性。比如“一个迭代必须有三周”这样一条文化基因,如果脱离了外部环境的定义,就变得毫无意义(如果我的项目本身只有三周的时间,就有三个人该怎么办?)。其他耳熟能详的规则包括“no BUFD”(big upfront design,重量级的前端设计),YAGNI(you aren't going to need it, 你并不需要它),他们都只在一定的环境下能体现出价值,但是往往在多次传播复制的过程中,这些规则逐渐被脱离开环境来对待。我看到这种态度导致许多敏捷项目严重失败,当有人把精力放到软件架构本身,而不是为最终用户产出立即可见的价值的时候,马上就会被那些敏捷文化的鼓吹者(agilistas)系统地否决掉,直到他们撞上南墙(即如果不进行大规模的重构,项目将无法继续下去,而重构所需的时间也并非一个很短的周期)。

Kruchten将这种脱离开外部环境来实施敏捷的形式称作“病态敏捷”(Agilitis)。治愈这种病态的方法就是将敏捷融入环境,并且抛弃那种认为每一种敏捷思想和实践都能给每一个项目带来益处的盲目信仰。你和你的团队是否也正在被病态敏捷折磨呢?

查看英文原文:As Agile Memes Spread, Does Software Development Improve?


译者简介:木雨宝道,Ruby On Rails开发者,关注各种Web开发技术,敏捷开发爱好者,很少饮酒。参与InfoQ中文站内容建设,请邮件至china-editorial[at]infoq.com。

没有回复

回复

独家内容

专访开源项目Amoeba架构师陈思儒

DBA notes站长冯大辉(Fenng)代表InfoQ中文站采访了分布式数据库Proxy开源项目Amoeba的架构师和主要开发者陈思儒,内容包括Amoeba项目的起因、功能及其愿景等。

使用JSF、Ajax和Seam开发Portlets(2/3)

作为三期系列文章的第二部分,本文延续了上一期内容,介绍了RichFaces,包括如何把RichFaces集成到之前提到的示例应用中、如何部署RichFaces porlet和RichFaces的多种特性和功能。

Jeff Barr谈论Amazon Web服务

Amazon Web Services(AWS)的传道者Jeff Barr讨论了SimpleDB、S3、EC2、SQS、云计算、Amazon的不同服务如何与应用交互、AWS的起源、SimpleDB和微软SQL Server Data Services、AWS cloud的全球化、三月份的AWS停机。

用Erlang实现领域特定语言

Erlang的并发模型很有名,它的健壮性也很有名。但其他方面呢?在这篇文章里,Dennis Byrne演示了如何用Erlang建立内部DSL。

基于Rails的企业级应用剖析

本视频主要以FreeWheel为例,对一个基于Rails的企业级应用进行了剖析。其中包括:FreeWheel的架构、部署、数据库的问题、REST API、敏捷开发过程、如何去写测试以及持续集成等等。

JavaFX技术预览

JavaFX显示了Sun的Java系列产品市场方向的一个重大转变。随着1.0版的即将发布,InfoQ以JavaFX预览版为参考,与Sun高级工程师Joshua Marinacci探讨了即将发布的1.0正式版。

剖析短迭代

敏捷教练Dave Nicolette提出:我们应该如何设定迭代长度?是要根据发布周期的时间么?使用短迭代又有哪些好处?

应用JSF、Ajax和Seam开发Portlets(1/3)

本文主要讲述了如何用JBoss Portlet Container 和JBoss Portlet Bridge创建新项目,怎样配置一个JSF应用去使用JBoss Portlet Bridge,以及JBoss Portlet Bridge所具备的功能。