程序员人生 网站导航

Agile已死 Agility长存?

栏目:互联网时间:2014-09-13 08:00:00

【编者按】在13年前,Dave Thomas与16位软件专家聚集在犹他州的Snowbird, 一起创建并签署了现在众所周知的敏捷宣言。然而,随着时间的流逝,Dave Thomas发现,“敏捷(agile)"已落入某些顾问/商贩帮他们出售产品的一种工具,并非是用来进行高效开发和保证产品质量的一种方法理念。下面是笔者对原文的翻译:

13年前,我和16名中年白人聚集在犹他州的Snowbird,分享我们在软件开发上的一些共同信仰,我们想知道是否有一种方法能够描述我们的软件开发理念和信仰。

花了不到一天的时间,我们便发表了这些非常有价值的实践列表,即众所周知的 敏捷软件开发宣言:

Individuals and Interactions over Processes and Tools 个体和互动 高于 流程和工具
Working Software over Comprehensive Documentation 工作的软件 高于 详尽的文档
Customer Collaboration over Contract Negotiation, and 客户合作 高于 合同谈判
Responding to Change over Following a Plan 响应变化 高于 遵循计划

我为我们所做的事情感到自豪。我认为,这个宣言的存在已经帮助开发者打破了80、90年代浪费时间和损伤灵魂的开发实践。

然而,除了那次的Snowbird会议,我从未参加过任何与敏捷有关的会议,我也没有担任敏捷顾问。为什么?因为我不认为这些事情与敏捷宣言有任何关系,这些敏捷会议就好比举办芭蕾舞会,在我看来,围绕这四条核心价值观(宣言)的产业小组更像是创建一个贸易联盟。

不幸地是,我的想法已被时间证明是正确。“敏捷(agile)”一词已经被破坏,它已经变的毫无意义,没有任何产生任何价值。所谓的敏捷社区已经变成了顾问和供应商们兜售服务和产品的竞技场。

所以,我认为,“敏捷”一词是时候该退休了。

我相信,当“敏捷”变成一个名词时,是没有人反对禁用这个词的。“Do Agile Right”和“Agile for Dummies”是众多英语词汇中错误且毫无意义的词汇。敏捷不是一个名词,它是一个形容词,它是用来修饰某些东西的。“Do Agile Right”就好比说“Do Orange Right”。

但是,撇开语法错误,还有一个更大的问题。一旦该宣言走红,它就像是一块磁铁,某些人就会把它当成是获利的工具,宣传某种论点或者把它当作一些产品的卖点。它将会成为一种营销术语,就好像一些商人喜欢把eco和natural视为一体一样。“敏捷”一词就这样失去了其本质。

这将伤害到每个人,尤其是开发者们。编写代码并不是件容易的事,因此,开发者会自然而然的寻找某些方法实践来帮助他们提高效率。但我仍然坚信,开发者坚持敏捷宣言的价值和实践将会在开发上助他们一臂之力。

可是,一旦“敏捷”变的毫无意义,开发者们就不会把它当作实践向导。我们不妨简单地在全球范围内把敏捷一词替换成空格。

回到正途

让我们再来看看这四条宣言:

Individuals and Interactions over Processes and Tools 个体和互动 高于 流程和工具
Working Software over Comprehensive Documentation 工作的软件 高于 详尽的文档
Customer Collaboration over Contract Negotiation, and 客户合作 高于 合同谈判
Responding to Change over Following a Plan 响应变化 高于 遵循计划

左边的语句代表了一种理念,如果在左右两边做出选择,那些使用敏捷方法进行开发的开发者更倾向于选择左边。

现在再来看看那些顾问和经销商所说的:让你的工作变的“敏捷”,是左边还是右边,你将发现,他们给你提供的工具和流程是多么的复杂。

回归本源

下面我将会告诉你如何以敏捷的方式来做东西:

做什么:

弄清你目前所处的阶段
朝目标迈一小步
基于所学,对你的理解进行调整
重复以上

如何去做:

当面对两个以上的选择时,它们都可以实现大致相同的价值,最后采取更容易在未来做出变化的那个。

就是这样。这四个思路和一个实践涵盖了高效软件开发的一切。当然,这个过程会涉及到大量的思考,并且在整个开发中会来回多次的循环、迭代该过程。许多时候,你甚至需要专注变量的命名到长期的项目交付等所有事情,但是,只要是向你推荐或试图卖给你一些更大或更复杂的东西的人,他们都是为了骗取钱财。

本文所提到的这些都是当务之急――它们用动词告诉你做什么和如何去做。

让我们抛弃那些不做正事的人所用的“敏捷”。

相反,让我们换个词来描述我们所做的:Let’s develop with agility

You aren’t an agile programmer―you’re a programmer who programs with agility.
You don’t work on an agile team―your team exhibits agility.
You don’t use agile tools―you use tools that enhance your agility.

“Agile”很容易被用到任何地方,而“Agility”很难被挪用。

这是非常重要的,你可以购买和销售标签,通过参加一个短期培训,你就可以突然地在自己的职位上贴上“敏捷”这个标签。但是你买不来经验――你只能赚钱。

保护我们的资产(investment)

不管怎样,我们做什么远胜于我们怎么称呼它。而好的词汇也更有利于我们有效地进行沟通。

我们已经失去了“agile”这个词,让我们试着使用“agility”,让我们保留它的本义和真谛。让我们携起手来一起保护它,以免它落入到哪些出卖“agility”灵魂的人手上,并且最终卖给我们。

文章来自: PragDave

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐