教堂尖顶上的风标,即使由钢铁制成,如果不懂得顺应风势的艺术,一样会被风暴立即摧毁。
——海因里希.海涅
一、敏捷软件开发宣言
1、个体和交互胜过过程和工具
人是获得成功的最为重要的因素。合作、沟通以及交互能力要比单纯的编程能力更为重要。一个由平均水平程序员组成的团队,如果具有良好的沟通能力,将比那些虽然拥有一批高水平程序员,但是成员却不能进行交流的团队更有可能获得成功。
选择合适的工具而不是大而全的工具,使用过多的庞大、笨重的工具就像缺少工具一样,都是不好的,尝试使用一个工具,直到发现他无法适用时才去更换他。
团队的构建要比环境的构建重要的多。
2、可以工作的软件胜过面面俱到的文档
没有文档的软件是一种灾难,过多的文档比过少的文档更糟。对于一个团队来说,编写并维护一份系统原理和结构方面的文档将总是一个好主意,文档应该是短小的并且主题突出的,文档是为程序服务的,不要为了写文档也写文档。
在给新的团队成员传授知识的时候,最好的两份文档是代码和团队。代码真实的表达了他所做的事情。人和人只见的交互是将内容传递给他人的最快、最有效的方式。
3、客户合作胜过合同谈判
成功的项目需要有序、频繁的客户反馈。不是依赖于合同或者关于工作的陈述,而是让软件的客户和开发团队密切的工作在一起,并尽量地提供反馈。要让客户知道我们和他们是同一战线上的,需要解决的问题才是我们共同的敌人。
4、响应变化胜过遵循计划
响应变化的能力常常决定着一个软件项目的成败,当我们构建计划时,应该确保计划是灵活的并且易于适应商务和技术方面的变化。
计划一定要做,但是不能做过长远的细计划,对短期任务作详细计划,对长期任务作粗略计划。
原则:
1、我们最优先要做的是通过尽早的、持续的交付有价值的软件使客户满意
2、即使到了开发后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势
3、经常性交付可以工作的软件,交付的间隔可从几周到几个月,交付的时间间隔越短越好
4、在整个项目开发期间,业务人员和开发必须天天都在一起工作
5、围绕被激励起来的个人来构建项目。给他们提供所需要的环境和支持,并且信任他们能够完成工作
6、在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交流
7、工作的软件是首要进度的度量标准
8、敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度
9、不断的关注优秀的技能和好的设计会增强敏捷能力
10、简单——使未完成的工作最大化的艺术——是根本的
11、最好的构架、需要和设计出自于自组织的团队
12、每隔一段时间,团队会在如何才能更好工作方面进行反省,然后相应的对自己的行为进行调整