理解敏捷的价值观和原则
敏捷宣言
敏捷宣言也称敏捷软件开发宣言,软件开发业的先辈们对以下四则价值观达成了一致:
- 个体和互动高于流程和工具
- 可工作的软件高于详尽的文档
- 客户协作高于合同谈判
- 响应变化高于遵循计划
注:下面是这份宣言的完整内容:
我们一直在实践中探寻更好的软件开发方法,身体力行的同时也帮助他人。
由此我们建立了如下价值观。
个体和互动 高于 流程和工具
可工作的软件 高于 详尽的文档
客户协作 高于 合同谈判
响应变化 高于 遵循计划
也就是说,虽然右项有其价值,但是我们更重视左项的价值。
个体和互动高于流程和工具
盲目的遵循流程会让人走入误区,好的工具有时会让人更快速的犯错误。软件世界中存在很多优秀的实践经验,但并不是所有的这些实践都适合项目的当前情况。这个原则团队中的所有成员应该都要心里有数。他们需要理解团队在一起的工作方式,明白每个人的工作会对其他人造成怎样的影响。当我们打算在团队中实施一项流程或工具时,即使在逻辑上和理性上看上去很合理,你还需要做的是(推销流程和技术)让大家明白这么做的理由,知道团队到底在为此做什么。如果不能让团队很好的理解你的目的或初衷,那么在他们看来你只是在发号施令。
可工作的软件高于详尽的文档
在一个软件项目中,有太多的事情可以文档化。很多团队都会决定采用详尽的文档,事无巨细地全部记下来。也不考虑以后会不会有人来阅读。敏捷团队更注重可工作的软件,即可以给公司带来价值的软件(公司可出售或运营的软件,帮助员工高效工作的软件等等)。
所谓的价值:项目能交付的价值或能节省的成本 > 开发软件本身的成本
虽然如此,文档还是要写的很多种类的文档还是很有用的。好文档能帮助团队理解问题,与用户沟通,以及避免将错误的需求开发进软件中。这种文档消耗的成本与后期文档给团队节省的时间和精力相比是划算的。另一方面,关注可工作的软件可以确保团队没有偏离正轨,如果文档能清晰地表明可工作软件的方向,那么这种文档对项目就是有贡献的。团队通常可以采用一些将文档嵌入软件内部的实践,比如TDD(测试驱动开发),关于TDD大家可以查看这里。
客户协作高于合同谈判
当公司的组织架构是按照职能来划分的时候,即程序员,测试人员,产品经理以及运营人员等产品相关的其他人员在不同的部门的时候。那么他们的工作就像是互相遵照合约合作,不同部门团队之间都会把服务级别协议放在台面上讨论。这样做也许会降低风险,减少与老板上级之间的矛盾,因为你可以凭借一纸之文来指责其他团队影响了软件的交付,从而助长所谓的”甩锅文化“。当公司的目标是给公司外的用户交付软件时这种方式只会适得其反。
敏捷团队落实这项价值观的一项实践是在团队中安置一名产品所有者,他可能不会参与具体的开发,但是他会参加会议,贡献想法,最重要的是所有人都把最终的产品当作是自己的东西。
响应变化高于遵循计划
项目管理中通常流行”怎么计划怎么来“,遗憾的是如果计划有误,那么构建出来的产品就是错误的产品。团队需要不断的发现变化,适应变化并且最后能快速的响应变化。制定计划的人抗拒变化是很常见的事情,因为改变计划需要消耗精力。
”任务板“是一项良好的实践,可以帮助团队做出响应变化的正确决策。
敏捷团队通常会使用任务板来展示任务并跟踪进度。他们会把任务或者用户故事写在索引卡片上面,然后根据项目的进展移动这些卡片。很多团队还会在任务板上画图跟踪进度。这样做可以让大家跟上进展,让计划不断地实时地更新。
我们要意识到计划是会变的,交付软件产品比严格遵守计划更重要。
没有具体的实践,原则是贫瘠的;但如果缺乏原则,实践是没有生命,没有个性,没有勇气的。
敏捷软件开发的12条原则
交付项目
1.最优先要做的是尽早、持续地交付有价值的软件,让客户满意。
2.欣然面对需求的变化,即使是在开发后期。敏捷过程利用变化为客户维持竞争优势。
3.频繁交付可工作的软件,从数周到数月,交付周期越短越好。
沟通与合作
4.在团队内外,面对面交谈是最有效、也是最高效的沟通方式。
5.在整个项目过程中,业务人员和开发人员必须每天都在一起工作。
6.以受激励的个体为核心构建项目,为他们提供环境和支持,相信他们可以把工作做好。
项目实施-推进项目
7.可工作的软件是衡量进度的首要标准。
8.敏捷过程倡导可持续开发。赞助商、开发人员和用户要能够共同、长期维持其步调,稳定向前。
9.坚持不懈地追求技术卓越和设计优越,以此增强敏捷的能力。
项目和团队的持续改进
10.简单是尽最大可能减少不必要工作的艺术,是敏捷的根本。
11.最好的架构、需求和设计来自自组织的团队。
12.团队定期反思如何提升效率,并依此调整。
总结
本文主要讲述了敏捷开发中的价值观和原则。正如文章那句话(没有具体的实践,原则是贫瘠的;但如果缺乏原则,实践是没有生命,没有个性,没有勇气的。)所描述的。围绕着敏捷开发的价值观和原则,我们发展出了很多有效的实践,Scrum、XP极限编程、看板方法、精益思维等等。有一个很大的误区是时常在行业内有许多人认为某一项实践就代表着敏捷开发。但是正如本文所描述的敏捷开发提供了他的价值观和原则,敏捷开发并没有一个强制的配套的实践,甚至某些优秀的团队并没有遵循已有的敏捷相关实践,只是在项目进行的过程中遵循的敏捷的价值观和原则,仅仅如此,他们所做的也被称的上敏捷开发。即敏捷的独特之处在于从价值观和原则出发。
关注笔者公众号,推送各类原创/优质技术文章 ⬇️