什么是Agile

Agile

Agile是一个术语,用于描述强调增量交付,团队协作,持续规划和持续学习的软件开发方法。 “Agile”一词是2001年在敏捷软件宣言中创造的。 该宣言着手制定原则以指导更好的软件开发方法。 宣言的核心是宣告4个代表Agile运动基础的价值观。 正如书面所述,宣言声明...

  • 个体和互动 高于 流程和工具
  • 工作的软件 高于 详尽的文档
  • 客户合作 高于 合同谈判
  • 响应变化 高于 遵循计划

也就是说,尽管右项有其价值,我们更重视左项的价值。

Agile方法和实践

理解Agile不是一件事情是很重要的,你不能说“我要去Agile”。相反,Agile是一种心态。推动软件开发方法的思维模式。这里没有一种方法适用于所有情况,而“Agile”这个术语代表了与宣言中的价值陈述相一致的各种方法和实践。

敏捷方法是软件开发生命周期各阶段的综合方法 - 规划,执行和交付。它规定了完成工作的方法,有明确的指导和原则。 Scrum是最常见的Agile框架。

另一方面,Agile实践是在软件开发生命周期的各个阶段应用的技术。以计划扑克为例,它是一种协作评估实践,旨在鼓励团队成员分享他们对“完成”意味着什么的理解。这个过程非常有趣,并且已被证明有助于促进团队合作和更好的估计。持续集成(也称为CI)是一种常见的Agile工程实践,它将代码更改频繁地集成到主分支中。自动化构建可以验证变化,从而减少集成债务,并且可以持续交付主分支。这些实践(如所有Agile实践)带有“Agile”标签,因为它们与Agile宣言中的原则一致。

Agile不是什么

随着Agile已经普及,许多刻板印象和错误解释为其效力蒙上了阴影。很容易说“是的,我们正在做Agile”,没有任何问责制。考虑到这一点,让我们看看Agile不是的一些东西。

  • Agile不是牛仔编码。Agile不应该与“随着我们走”找出解决方案与软件开发相混淆。这不可能离真相更远。Agile需要在每个Sprint中定义完成并向客户交付价值。尽管Agile重视个人和团队的自主权,Agile强调协调一致的自主权,通过增强自主性确保交付增加的价值。

  • Agile并非没有严密和规划。相反,Agile方法和实践通常强调规划中的规范。关键是在整个项目中持续规划,而不仅仅是预先规划。持续规划确保团队可以从他们正在执行的工作中学习,从而最大化规划ROI(投资回报)​​。

“计划毫无价值,但计划就是一切。” - 德怀特D.艾森豪威尔

  • Agile并不是缺乏路线图的借口。 这个可能对整个Agile运动造成最大的伤害。 遵循敏捷方法的组织和团队绝对知道他们将要去哪里以及他们想要实现的结果。 认识到变化是流程的一部分与每周,冲刺或月份新方向的变化是完全不同的。

  • 没有规范,Agile就不是开发。 在任何项目中都必须让团队与“为什么”以及“做什么”的工作保持一致。 规范的敏捷方法包括确保规格“适合规模”,并适当反映团队如何进行排序和交付工作。

为什么Agile?

那么为什么要考虑采用敏捷方法? 很显然,在过去的10 - 15年里,建筑软件的参与规则已经发生了根本性的变化。 许多活动看起来相似,但我们应用它们的景观和环境明显不同。 考虑一下现在购买软件是什么时候...与2000年初相比。 你最后一次开车到商店购买软件的时间是什么时候? 考虑如何从使用您的产品的客户收集反馈。 我们如何理解人们在社交媒体之前对我们的软件的看法? 最后,考虑您希望更新和改进您交付的软件的频率。 每年提供一次更新听起来不像什么好事。

“今天的企业经历了更高的业务变化速度。 市场机会在几个月或几周内出现或消失,而不是几年。 “ - Diego Lo Guidice和Dave West,Forrester

规则已经改变,世界各地的组织正在相应地调整他们的软件开发方法。 敏捷方法和实践不承诺解决所有问题。 但他们承诺通过合作,持续规划和学习,以及更频繁地运送高质量软件的愿望,建立一种解决方案出现的文化和环境。