前言

本文翻译自Agile Alliance的Agile 101栏目,仅为学习之用,如有版权方面问题,请与我联系。原文档请点击Agile 101


什么是敏捷?

敏捷是一种创造和应对改变的能力。它是一种成功应对纷繁复杂环境的方法。

敏捷宣言的作者之所以选择“敏捷”这个词作为整个哲学思想的名称,是因为这个词表达了对于外部环境变化的反馈和适应,这在整个方法论中也是至关重要的。

它指导着人们如何看待自己周围所发生的事情,点明了人们正面对的不确定性并且教会人们如何应对。

什么是敏捷软件开发?

敏捷软件开发不仅是Scrum、极限编程(Extreme Programming)或者特征驱动开发(Feature-Driven Development FDD)等总体框架。也不仅是结对编程(Pair Programming)、测试驱动开发(Test-Driven Development TDD)、站会(Stand-ups)、计划会议(planning sessions)或者sprint等具体实践。

敏捷开发是一种宏观概念,是一系列基于敏捷宣言和12条原则所传达的价值原则的实践框架。当人们开发一个软件的时候,遵守这些价值原则通常是比较好的做法,它可以指导人们在特定的场景下去完成正确的事情。

敏捷开发与其它开发方式的一个区别就是,敏捷更关注于开发人员以及开发人员之间如何协调工作。通过在特定工作环境中的正确实践,使得自组织跨职能团队可以协同工作,最终形成解决方案。

在敏捷软件开发社区中,合作和自组织总是人们关注的重点。

这并不意味着团队不需要管理者,而是说团队成员都有能力知道自己需要做些什么来帮助完成最终的事情。

这意味着整个团队是个跨职能的团队,团队成员并不一定拘泥于当初组建团队时的角色,而应该确保团队中的每个人都有完整的技能包。

而管理者在团队中应该是这样的定位:确保每个成员都能学习到完整的技能包,提供合适的环境帮助团队成功。大部分时间,管理者应该退居二线并让团队成员找出交付产品的方法,但当团队遇到无法解决的困难时要站出来。

当一些团队或组织开始使用敏捷开发,他们会关注于帮助团队合作及统筹工作的实践,这当然很好。但还有一些关键实践,并不经常被关注到,但确实是一些特定的帮助人们处理不确定性的技术实践。这些技术实践非常重要,不应忽略。

敏捷简史

下面将讲到敏捷如何出现,又如何获得“敏捷”这一称谓,又是如何一路发展至今。重要的是要了解敏捷软件开发的来源,以了解当下的情况。

暂略

敏捷是一种思维方式

总的来说,敏捷是一种基于敏捷宣言和十二原则价值观的思维方式。这些价值观和原则,指导着人们应对变化时的反应以及如何处理不确定性。

你可以认为敏捷宣言的第一句话就承载了整个思路:我们通过实践和帮助他人实践,来发现更好地开发软件的方式。

当你面对不确定的情况时,做些你认为可能有用的,获取反馈,然后调整。

头脑中要谨记这些价值观和原则。让你的上下文来选择使用哪些框架、实践或者技术,来帮助你与团队合作并给客户产生价值。

什么是敏捷方法论?

如果敏捷是一种思维方式,那什么又是敏捷思想的方法论呢?为了解答这个问题,首先我们要定义什么是“方法论”。

Alistair Cockburn定义方法论为:一组团队成员都同意遵守的规定。这意味着每个团队都有自己的方法论,可能会和其它团队的方法论有或大或小的区别。

因此,敏捷方法论就是符合敏捷价值观和原则并且团队都愿意遵守的规则。

“等下”,你大概在想,“我以为Scrum或者极限编程就是敏捷方法论”。Alistair将术语框架应用于这些概念。它们最初都是诞生于某个团队,但经过泛化之后成为了被各个团队应用的框架。现有框架可以指引团队该如何开始属于自己的框架,但不应该直接成为团队的框架。团队将始终需要调整其框架的使用以使其适合其上下文。

敏捷项目管理和敏捷业务分析是什么?

随着敏捷软件开发越来越流行,在软件行业工作但又不亲自写代码的人们开始思考如何将敏捷的思想应用到自己的工作中。

敏捷宣言和12条原则是由一组软件开发人员(和测试人员)编写的,旨在解决软件开发人员面临的问题。当你将敏捷看作一种思考方式,那就可以将其应用到其它方面。

当你这么操作时,敏捷就变成了一个形容词。它描述了你是如何来完成一项工作的。根据前面提到的原因,敏捷也并不创造新的方法论。

当你尝试去理解敏捷项目管理时,你需要思考“我们在项目管理时该做些什么来对变化做出反应并且解决这些不确定性?”。Agile Alliance和项目管理学院(PMI)做了一系列努力去探究这些问题并创造了敏捷实践指导(对会员开放)。

当你尝试去理解敏捷业务分析时,你需要思考“我们在项目管理时该做些什么来对变化做出反应并且解决这些不确定性?”。Agile Alliance和IBBA做了一系列努力去探究这些问题并创造了敏捷在业务分析方面的扩展知识(对会员开发)。

什么是业务敏捷性?

前面两个例子说明了如何将敏捷的概念从软件开发扩展出去。这个尝试最近在业务敏捷性上看到了结果。

如果你将敏捷看作一种思维方式,那么人们在看待业务敏捷性的时候就会问“我们该如何打造并运营我们的团队,以对变化做出反应并解决这些不确定性?”。

你可能会说,业务敏捷性是对组织中的人员以敏捷思维方式进行管理的一种认可,整个组织都应该遵守整个思路。如果团队不在不确定性的环境中改变自己的结构和运行方式,那敏捷软件开发就不是真正的软件开发。