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