当我们撰写《敏捷软件开发宣言》( Manifesto for Agile Software Development ,简称《敏捷宣言》)时,支持我们的只是一群试图改变行业的少数派。而20年后的今天,“敏捷”已然成为主流。但是,我却把“敏捷”写在醒目的引号里,因为虽然很多人都声称且坚信他们在践行敏捷软件开发,但他们的行动与20年前我们对敏捷的愿景几乎毫不相干。
事实上,要想以敏捷的方式工作,需要践行一组相互关联的实践,这些实践涵盖了软件开发的管理和技术执行。其中的许多实践(尤其是技术性实践)并没有得到很好的理解和广泛的传授。因此,有太多的人对构建软件产品的有效方法有曲解。
James Shore是先驱者之一,他开创了极限编程的先河,这是敏捷运动的核心支柱之一。这本书的第1版是我的最爱,它是一本告诉团队需要了解什么进而才能正确执行敏捷流程的指南。他后来与Diana Larsen合作创建了“敏捷流畅度模型”(agile fluency model),该模型记录了人们在使用敏捷方法的过程中发展自身技能的各类经验。在这个模型中,一般的项目管理技术(通常指基础的Scrum方法)能够通过关注客户需求来产生价值,但往往缺乏释放高生产力和高可靠性的技术技能。
正是这一观点造就了本书的组织结构,它将大部分篇幅放在了如何关注价值,以及如何可靠地交付价值上。注重价值意味着理解这些事情的重要性,培养适应性计划技能,以及与客户和用户密切合作。可靠交付建立在测试、重构、设计和协作开发这些基本技术实践上。它提供了一种反直觉的观念:建立具有高内部质量的软件会降低成本,并提高代码交付的速度。将其与DevOps文化和持续交付相结合,可以使功能高频且快速地投入生产,这也得使团队能够通过观察软件在实践中的使用情况进一步了解什么是有价值的。
20年前,我幸运地在Thoughtworks找到了家的感觉,我们的团队利用这些技能来帮助客户建立新的软件产品并取代旧的产品。像James一样,我们发现极限编程为我们的工作提供了坚实的基础,在过去的20年里,我们通过这些技术取得了巨大的成功。所以我真的很高兴看到James将他十年来的指导经验融入该书。这本书为学习敏捷开发技能提供了良好的途径,为我们带来很大的帮助。就像任何有价值的事物一样,它需要时间来学习,而且会有各种挫折。但是这本指南可以帮助你完成这个旅程——从荒芜的仪式中走出来,走向James和我在多年前第一次使用这些技术时所感受到的活力。
Martin Fowler
Thoughtworks首席科学家