注:本文系作者独立翻译,可以随意转载。如有雷同,纯属巧合。原文地址:http://pragdave.me/blog/2014/03/04/time-to-kill-agile/

  P.s. 第一次自己翻译,欢迎批评指正。

Agile Is Dead (Long Live Agility) ( Agile已死,Agility长存)

  13年前,我和17个中年白人在Snowbird(译者注:应该是一个开发者社区,此处应该亦是指其承办的一次开发者大会), Utah(美国犹他州)聚到了一起。我们之所以能走到一起,是因为我们对于软件开发有着共同的信仰,并试图找出一种方法来描绘我共同的信仰。

  我们用了不到一天的时间搞出了一套核心价值清单,然后我们将这套体系连同一些实践这个体系的清单列表作为《Manifesto for Agile Softwar (敏捷开发宣言)》发布了出来。即:

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                  >   随时应对变化     优先于循规蹈矩。

  我对我们所做的事情,不论是过程还是结果,都感到十分自豪。并且我认为这套敏捷开发清单帮助开发人员挣脱了八,九十年代那些浪费和十分枯燥的开发流程。

  但是,自从Snowbird大会结束后,我再也没有参加任何和"Agile"相关的会议,没有作为会员加入任何敏捷开发协会,并且没有提供任何有关"Agile"的咨询服务。甚至没有参加10周年纪念庆典。

  为什么?因为我认为这些不符合我们的敏捷价值观。举办关于敏捷的会议就像举办芭蕾舞会,而围绕着这四条核心价值组成的产业小组在我看来更像是组建了一个贸易联盟。

  并且,不幸的是,我想,时间已经证明了我是对的。"Agile"这个词已经搅乱了人心,但实际上并没有产生多大的意义,而敏捷社区看起来更像是咨询师和小商贩们叫卖服务和产品的市场。

  所以,我认为是时候让"Agile"这个词退休了。

  我想不会有人反对禁用这个词当它已经被当成一个名词来使用。这是一个明显的错误。"Do Agile Right"和"Agile for Dummies"就是无数英文语法错误中的两个。它们毫无意义。"Agile"不是一个名词,这是一个形容词,它必须用来修饰某些东西。"Do Agile Right"就像是在说"Do Orange Right"。

  但是,除了语法错误以外,还有一个严重的问题。自从敏捷宣言流行起来之后,所有人(例如为了支持某个论点,为了某个宣传,为了销售某些商品)都把"Agile"一词作为宣传点。它已经成为一个被用来促进销售的市场营销的专业术语,就像"eco"和"natural"一样。如此滥用这个单词已使它毫无意义,当它成为一个商标时,它的作用已经结束了。

  这伤害了每一个人,但我更在意的是这伤害了开发人员。写代码并不容易,开发人员自然会寻找能帮助他们完成更有效交付的东西。我仍然坚信,坚持敏捷的核心价值并付诸实践将会对开发过程提供帮助。

  但是自从敏捷一词已经失去意义,开发人员不能再将它作为指导准则来找出到底什么在开发过程中是有用的。我们或许简单地在世界范围内把敏捷一词替换成空格(译者注:这样其他人就无法使用”“空白字符串来交流,也就无法被滥用。我是这么理解的。:P)。

Moving to the Right 回到正轨

让我们再看一下这4条核心价值:

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

  左边的短语代表了一个理念 -> 如果能够在左侧或右侧的开发流程中选择的话,想要敏捷开发软件的人员更倾向于左侧的方式。

  现在,让我们看一下那些说自己能让你开始敏捷起来的咨询师和小商贩们。问问你自己,他们在 左-右 这条轴上到底处在什么位置。我猜你会发现他们会像你建议很多工具(提供更多文档式的建议以取悦项目经理)并且制定更多计划远远超出了敏捷所需的一个白板和一些粘到白板上的做记录用的磁贴,不论是过程还是工具都很繁重。

  如果你也发现了这些,那么这更加证明了"agile"一词已经腐败堕落。

  (当然,这些咨询师或许只凭一两天的培训课程就能赚很多钱。但我不行,所以他们是成功的,而我不是,某种角度来讲,我所言可能是错的。)

Back to the Basics 回归本质

下面讲述如何以敏捷方法来做一些事:

做什么:

  • 搞清楚你在什么位置
  • 向你的目标迈出一小步
  • 在这个过程中,基于你所学到的东西重新整理你的认知
  • 重复以上步骤

怎么做:

在同一个结果面前,当你面对两条或更多可以让你选择的路时,选择那条将来更容易改变的。(译者注:此处不是说你选择的路将来发生变化,而是万一出现问题,你更容易换条路走。)

  这就是你所仅仅需要做的。上面这四条基本原则和一条实践路线已经包含了如何有效的进行软件开发所需要知道的一切。当然,这个过程蕴含了大量的思考,并需要将整个基本流程迭代无数次,很多时候,你所需要关注的甚至包括了从变量命名到持续交付过程中的所有事情。但是,记住,任何人提出更高级,复杂的东西,那他只是想向你推销,骗取你的钱财罢了。

  这篇文章所提到的都是当务之急--它们用一些动词来告诉我们做什么和怎么做。

  也正是这些促使我在此给出我的建议。

  让我们放弃使用那些不做实事的人所使用的词"agile"。

  相反,让我使用另外一个单词来描述我们所在做的事。

Let’s develop with agility (让我们"敏杰"开发

  • 你不是一个敏捷程序员--而是一个写程序很敏捷的程序员。

  • 你不是在一个敏捷团队工作--而是你的团队表现的很敏捷。

  • 你不是使用敏捷工具--而是你使用工具让你更加敏捷。

人们很容易把"agile"一词用到任何地方,但"agiility"不易被胡乱挪用。

这一点很重要--标签是可以进行买卖的。参加一个简短的培训,瞬间你就可以给你的职位贴上敏捷的标签。但是你不能买到经验--你只能学到经验。

And let’s protect our investment (让我们保护我们的付出)

  归根结底,我们做什么,怎么做远比我们怎么称呼它更重要。但是一个好的词语帮助我们更有效的沟通。

  我们已经失去了"agile"一词。让我们尝试使用"agility"。让我们保住它的真谛,别让那些别用用心的人窃取敏捷的灵魂思想,转手再把它卖给我们。

Agile已死, Agility长存的更多相关文章

  1. wp已死,metro是罪魁祸首!

    1.这篇文章肯定会有类似这样的评论:“我就是喜欢wp,我就是喜欢metro,我就是软粉“等类似的信仰论者发表的评论. 2.2014年我写过一篇文章,windows phone如何才能在中国翻身? 我现 ...

  2. 泰泽新闻:英特尔三星双否认泰泽Tizen系统已死

    7月8日 据媒体TizenExperts报道,关于“Tizen系统跳票”的传闻已经遭到了英特尔和三星否认. 此前传闻三星自行研制的智能手机Tizen操作系统流产,但如今已经遭到了官方的否认. 英特尔三 ...

  3. Android首席设计师宣称移动概念已死,开发人员应该面向屏幕编写应用而非移动

    腾讯科技对Android首席设计师Duarte"移动已死"訪谈内容的翻译错得离谱,被到处转载,误人视听. 而要真正理解Duarte所想表达的含义,须要深入了解互联网前沿设计理念以及 ...

  4. MVC模式已死

    MVC模式:Model模型 View试图 Control控制器,是目前主流模式,被当作服务器软件入门基本模式学习和掌握,主流框架Struts 1/2 JSF Wicket基本都顺理成章支持MVC模式. ...

  5. 王垠:Lisp 已死,Lisp 万岁!

    王垠:Lisp 已死,Lisp 万岁!_IT新闻_博客园 王垠:Lisp 已死,Lisp 万岁!

  6. JVM学习记录-对象已死吗

    前言 先来回顾一下,在jvm运行时数据区,分为两部分,一个部分是线程共享区,主要包括堆和方法区,另一部是线程私有区分包括本地方法栈,虚拟机栈和程序计数器.在线程私有部分的三个区域是随着线程生和灭的.栈 ...

  7. [转载]致创业者:APP已死 服务永生

    前几日,有位创业者和我讲他在带领团队做一个将爱踢球的人集中在一起的App,我告诉他你的创业方向错了.原因在于你的目的是要为爱踢球的人提供服务,而你现在却在竭尽全力的做App,你应该做的是设计你为爱踢球 ...

  8. Jeff Atwood:软件工程已死?

    原文作者:Jeff Atwood 2009年7月,Tom DeMarco在<IEEE Software>杂志上发表了一篇论文,题为"Software Engineering: A ...

  9. NLP领域的ImageNet时代到来:词嵌入「已死」,语言模型当立

    http://3g.163.com/all/article/DM995J240511AQHO.html 选自the Gradient 作者:Sebastian Ruder 机器之心编译 计算机视觉领域 ...

随机推荐

  1. 即将开始的python之路

    准备开始学py 记录一下 加油

  2. zip压缩工具,unzip解压缩工具

    zip压缩工具,unzip解压缩工具=================== [root@aminglinux tmp]# yum install -y zip[root@aminglinux tmp] ...

  3. php扩展开发-INI配置

    php.ini文件是用来保存各项扩展配置的文件,每个扩展都或多或少需要有一个定制化的配置,ini文件是一个很好的保存配置的方式,我们来看下怎么在自己的扩展里,使用到ini的配置功能 //创建ini的配 ...

  4. Python学习笔记:单例模式

    单例模式:一个类无论实例化多少次,返回的都是同一个实例,例如:a1=A(), a2=A(), a3=A(),a1.a2和a3其实都是同一个对象,即print(a1 is a2)和print(a2 is ...

  5. Django+vue在腾讯云上搭建前后端分离项目

    最近打算用Django+vue搭建一个个人主站,在此记录一下搭建项目的整个过程. 一 开发环境: 腾讯云Centos     7 Python                3.7 Django    ...

  6. iOS常用控件-UIScrollView

    一. 常见属性 @property (nonatomic) CGPoint contentOffset;                      //记录UIScrollView滚动的位置 @pro ...

  7. PHP.27-TP框架商城应用实例-后台4-使用Gii生成品牌表的代码

    Gii安装[GII适用于商城项目] 将Gii文件夹复到application 是,访问http://xx.com/index.php/gii Gii规则[Gii使用规则与建表规则密切相关] 1.建表字 ...

  8. python的列表生成式和生成器

    1.列表生成式是Python受欢迎的语法之一,通过一句简洁的语法就可以对一组元素进行过滤,还可以对得到的元素进行转换处理,语法格式为: [exp for val in collection if co ...

  9. windows 定时任务 - 定时关机

    添加定时关机,刚好可以利用windows定时任务 [开始]->[控制面板]->[任务计划]->[添加任务计划] 1.找到 shutdown.exe 设置每天执行 2.设置晚上10点 ...

  10. ios开发3.5和4.0寸屏幕自适应中的一点问题

    在开发iso应用中需要考虑到ip4的3.5寸屏幕和ip5的4寸屏幕的高度不一样的问题.常见的问题有滚动条位置,底部被挡住等情况:我遇见是tableview中添加下拉上提刷新功能时刷新指示器显示位置的问 ...