- 敏捷开发的艺术(原书第2版)
- (美)詹姆斯·肖尔等
- 4826字
- 2024-06-26 17:15:28
前言
问:怎样才能进入卡内基音乐厅?
答:练习,练习,再练习!
我想帮助你掌握敏捷开发的艺术。
敏捷开发与所有基于团队协作的软件开发方法一样,本质上是一种人类艺术,它受制于个体及其互动的变化无常。要掌握敏捷开发,你必须学会每时每刻评估无数的可能性,并凭直觉选择最佳行动方案。
怎么才能学会这样一门困难的艺术呢?答案就是,练习!
首先,也是最重要的,这本书是一本介绍方法的指南。它详细描述了实践敏捷开发的方法。它以极限编程为基础,引入了Scrum、看板、DevOps、精益软件开发、精益创业等思想和实践,最终,成为一本实用指南。它会帮你成功地将敏捷开发引入你的团队和组织,或者帮助你发现敏捷开发可能并不适合你当前的情况。
其次,这本书的存在是为了帮助你掌握敏捷开发的艺术。掌握敏捷开发意味着超越了指导手册本身。软件开发对环境的敏感度太高,没有一种方法是完美的,而且它太细微了,任何书都无法教你如何掌握它。掌握方法来自人们的经验和见微知著的敏感直觉。
我无法教你如何敏锐地洞察你的决策在组织中产生的影响,我也不会尝试这么做。你必须给出自己的洞见和理解,这是掌握这门艺术的唯一途径。遵循实践,观察发生的事情,思考它们为什么有效或无效,然后重复尝试。再思考什么是相同的,什么是不同的,以及为什么,然后不断地重复实践。
起初,你可能很难理解如何应用每一种实践。它们看起来很容易,但将一些做法付诸行动会很困难。继续练习,直到它们变得容易。
随着“敏捷”变得容易,你会发现我的一些建议对你并不适用。起初你可能无法判断问题是出在我提供的指导上,还是出在你执行的方式上。继续练习,直到你确定为止。当你确定时,就打破规则,修改我的指导,以便更适合你的具体情况。每项练习都有一个“替代方案和实验”部分,其中有一些想法可供你探索。
终有一天,你将不再对规则感兴趣。毕竟,敏捷并不是要遵守规则。到那时,你会想:“敏捷就是简洁和反馈、沟通和信任,敏捷就是交付价值,敏捷就是有勇气在正确的时间做正确的事情。”你每时每刻都会评估无数的可能性,并凭直觉选择最佳的行动方案。
当你达到这个境界的时候,请把这本书转交给其他人,尽管它可能已经被磨得破破烂烂了,但依然可以帮助他们掌握敏捷开发的艺术。
对于实用主义者
如果你不想掌握一门所谓的“艺术”呢?如果你只想开发好的软件呢?
别担心,这本书也是适用的。我把我多年来在敏捷开发方面的经验提炼成了一个个定义清晰、全面详尽的方法。
我会使用平实、直接的语言,总结出很多有用的实践技巧。我会坦率地描述我的方法不奏效的场景,以及当它不奏效时应该考虑哪些替代方案。第2章将帮助你开始实践。
只讨论一种方法是有缺点的,因为没有任何方法适合于所有人。我的建议可能不适合你的团队或组织。阅读第4章和第5章,以了解并掌握成功所需的整体条件,查看每项实践的“先决条件”部分,以了解具体细节。
但是,不要完全假设某个特定的实践对你不适用。本书中的一些实践是反直觉的,或者听起来并不有趣。大多数实践与其他实践配合起来效果更好。如果可以的话,尝试一下书中的做法,在几个月内获得一些实际经验,了解它们在你的环境中是如何工作的,然后再改变它们。
我已经将这些想法付诸实践超过20年了。在正确的环境中,它们真的有效。敏捷开发比任何其他的软件开发方法都更有趣、更成功。请加入我们的行列吧!
第2版的新内容
本书是对第1版的全面升级。它保留了第1版中的实用方法以及大部分实践,但几乎所有的实践都被重写了,以吸收14年来整个行业敏捷实践和我自身经验的精华。
我对这本书进行了完全的重组,以便逐步采用部分实践,并真实反映团队敏捷在现实世界的实际落地情况。我把第1版第三部分所讨论的原则和定制化体现在各个实践中,使其更加易于理解,还针对每个实践给出了实验建议。
值得注意的新增内容包括:
• 一份使用敏捷方法、定制化敏捷方法的深度指南:基于我和Diana Larsen共同创建的敏捷流畅度[1]模型。
• 一个关于规模化敏捷的新章:基于我为大大小小的公司提供帮助的经验。
• 一个关于DevOps的新章,有关运维和安全方面的新内容,以及本书其余部分受DevOps启发的更新。
• 一份敏捷和远程团队协同工作的指导方法,以及许多新的实践、故事、想法,还有很多其他的进步与变化将被提及。
本书适用对象
本书适用于所有与敏捷团队合作的人,或者希望在未来进行敏捷开发的人,包括程序员,以及经理、高管、领域专家、测试人员、产品经理、项目经理、架构师、运营人员、安全人员、设计师和业务分析师。本书反映了这一事实:敏捷团队是跨职能部门的。
本书旨在作为参考资料供他人使用,当然,读者也可以从头到尾阅读,而不是只参考某一部分。第二部分至第四部分的每项实践都可被独立阅读。翻开这本书,每当有标注吸引了你的注意力时,你都可以停下来深入阅读。
如果你是一名经理或高管,想了解敏捷在自己的公司中是如何运作的或应该如何运作,请阅读第一部分。如果你是一名团队级别的经理人,请参考10.5节,以及第10章的其他实践。
如果你是一名团队成员或经理,有兴趣将敏捷引入自己的公司或改善公司现有的敏捷实践,请从头到尾阅读全书。第一部分将帮助你了解如何引入敏捷理念,其余部分将帮助你了解如何将敏捷付诸实践。
如果你是敏捷团队的一员,并且只想学习足够的知识来完成工作,可以专注于第二部分和第三部分的实践。从第1章获得概览后,再去理解自己的团队所使用的实践。如果你的团队使用的实践没有在目录中列出,请查看索引,它们可能以不同的名称出现。
如果你不是敏捷团队的成员,但正在与一个敏捷团队合作,请向其成员征求建议,了解应该阅读什么内容。如果你是产品经理、产品负责人和设计师,请从第8章和7.4节开始。如果你是安全人员和运营人员,可以看看15.1节、16.2节以及16.3节。如果你是测试人员,请阅读第16章。
如果你只是对敏捷开发感到好奇,可以先阅读第1章。之后,再看一下第二~四部分。从那些看起来最有趣的实践开始,你可以按任意顺序阅读它们。
关于特邀作者
我很幸运,本书有几位著名的合作者。Gitte Klitgaard在7.3节阐述了心理安全的话题。Diana Larsen撰写了11.2节和11.3节,将她几十年来在组织和团队发展方面的经验融入其中。第1版的合作者Shane Warden没能为这一版贡献新材料,但他仍然提供了宝贵的建议,我们在第1版中的共同成果构成了本书的基础。
Gitte Klitgaard
Gitte Klitgaard是一名敏捷教练、培训师和导师,专注于帮助组织实施心理安全、责任和问责制度。Gitte非常可靠,她会直奔主题,帮助人们成为他们自己,从而达到成功。
她的社区贡献包括组织训练营和会议演讲,聚焦于心理健康和心理安全等话题,并使其变得容易理解。她在工作内外创造了安全的环境。她倾听了很多弱势群体和少数群体的声音。
在业余时间,她喜欢收集乐高和尤达玩具,并与全球各地的朋友保持联系,包括一些她认为是她的第二家庭的成员。
她是Native Wired的所有者,并在乐高、Spotify和Mentimeter等公司领导过变革。
Diana Larsen
二十多年来,Diana Larsen为奠定敏捷思想的基础和进行扩展做出了贡献,并致力于促成敏捷的实践。Diana与他人合著了Agile Retrospectives、Liftoff的第2版、Five Rules for Accelerated Learning,还有两本新书正在编写中,著有电子书The Agile Fluency Model: A Brief Guide to Success with Agile。作为主要的教练、顾问、促进者、演讲者和导师,她持续做着贡献,不辜负敏捷流畅度项目(Agile Fluency Project)首席联系人的头衔。Diana住在美国波特兰。
Shane Warden
Shane Warden是一位工程技术部经理和作家,是《敏捷开发的艺术》和《编程之魂》(Masterminds of Programming)的作者之一。当他不工作的时候,他会帮助动物们安家。
排版约定
标注框强调了重要的概念。
本书中使用了以下排版约定:
斜体(Italic)
表示新的术语、URL、电子邮件地址、文件名和文件扩展名。
等宽字体(Constant width)
用于程序清单,以及在段落中表示程序元素,如变量或函数名称、数据库、数据类型、环境变量、声明和关键词。
等宽粗体(Constant width bold)
表示代码示例中添加的代码。
示例代码
可以从https://www.jamesshore.com/v2/books/aoad2下载补充材料(示例代码、练习等)。
这里的代码是为了帮助你更好地理解本书的内容。通常,可以在程序或文档中使用本书中的代码,而不需要联系O’Reilly获得许可,除非需要大段地复制代码。例如,使用本书中所提供的几个代码片段来编写一个程序不需要得到我们的许可,但销售或发布O’Reilly的示例代码则需要O’Reilly出版社的许可。引用本书的示例代码来回答一个问题也不需要许可,将本书中的示例代码的很大一部分放到自己的产品文档中则需要获得许可。
非常欢迎读者使用本书中的代码,希望(但不强制)注明出处。注明出处时包含书名、作者、出版社和ISBN,例如:
The Art of Agile Development,作者James Shore、Diana Larsen、Gitte Klitgaard、Shane Warden,由O’Reilly出版,书号978-1-492-08069-5。
如果读者觉得对示例代码的使用超出了上面所给出的许可范围,欢迎通过permissions@oreilly.com联系我们。
O’Reilly在线学习平台(O’Reilly Online Learning)
40多年来,O’Reilly Media致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。
我们拥有独一无二的专家和创新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O’Reilly的在线学习平台允许你按需访问现场培训课程、深入的学习路径、交互式编程环境,以及O’Reilly和200多家其他出版商提供的大量教材和视频资源。有关的更多信息,请访问http://oreilly.com。
如何联系我们
对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商。
美国:
O’Reilly Media,Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
要询问技术问题或对本书提出建议,请发送电子邮件至errata@oreilly.com.cn。
本书配套网站https://oreil.ly/art-of-agile-dev-2e上列出了勘误表、示例以及其他信息。
关于书籍、课程的更多新闻和信息,请访问我们的网站http://oreilly.com。
我们在Facebook上的地址:http://facebook.com/oreilly
我们在Twitter上的地址:http://twitter.com/oreillymedia
我们在YouTube上的地址:http://youtube.com/oreillymedia
致谢
本书收集了许多来自各处的灵感。我已经在书中尽可能地列出这些提供帮助的人,但肯定也遗忘了一些(请接受我的歉意)。我要特别感谢Kent Beck、Ron Jeffries和Ward Cunningham,因为他们创造了极限编程,促使我开始了我的敏捷之旅。在这一旅程的开始阶段,Alistair Cockburn和他的“软件圆桌会议”,以及Ward Cunningham在C2维基上的激烈辩论和探讨,都给我提供了重要的指导。还要感谢Diana Larsen,我和她合作了很多年,她的观点很好地平衡了我的观点。当然,还有Martin Fowler,他的文章多年来一直激励着我。
O’Reilly对这个版本的支持堪称典范。我非常感谢我的开发编辑Gary O’Brien,他不断为我提供反馈和支持。还要感谢Melissa Duffield,他帮助我把这本书推向成功;Ryan Shaw,他说服我是时候出第2版了;Deborah Baker,她为本书的早期发行版做了准备;Suzanne Huston,她让人们了解这本书;Nick Adams和O’Reilly Tools团队,他们建立了生产渠道,处理了棘手的格式问题;Christopher Faucher,他监督了从原始手稿到成品书的转变;Tonya Trybula和Stephanie English,他们修正了我的语法怪癖;Kate Dullea,她将我的手绘草图转化为更美观、更易于理解的图形;Estalita Slivoskey,她确保你能在索引中找到所有内容。
说到反馈,在这里要特别感谢我的审稿人。审稿是公开进行的,有几十个人提供了700多封反馈邮件。几乎每一封都很有见地并且很有用,它们使这本书变得更好。也感谢那些对我的具体要求做出回应的人。总的来说,感谢你们:Adrian Sutton、Anthony Williams、Avi Kessner、Bas Vodde、Benjamin Muskalla、Bill Wake、Brad Appleton、C. Keith Ray、C.J.Jameson、Christian Dywan、David Poole、Diana Larsen、Diego Fontdevila、Emily Bache、Erik Peterson、“Evan M”、Franz Amador、George Dinwiddie、Gojko Adzic、Jason Yip、Jeff Grigg、Jeff Patton、Jeffrey Palermo、Johan Aludden、Ken Pugh、Krishna Kumar、Liz Keogh、Luiza Nunes、Marcelo Lopez、Markus Gaertner、Martin Fowler、Michal Svoboda、Nicolas Paez、Paul Stephenson、Peter Graves、Reuven Yagel、Ricardo Mayerhofer、Ron Jeffries、Ron Quartel、Sarah Horan Van Treese、Steve Bement、Thomas J. Owens、Todd Little以及Ward Cunningham。
特别感谢上方或者下方提到的那些不遗余力的审稿人,他们几乎对本书的每个部分都进行了阅读和评论:Bas Vodde、Bill Wake、Ken Pugh、Martin Fowler和Thomas J. Owens。
第1版也受益于开放的审稿过程,这些益处也累积到了这一版。感谢Adrian Howard、Adrian Sutton、Ann Barcomb、Andy Lester、Anthony Williams、Bas Vodde、Bill Caputo、Bob Corrick、Brad Appleton、Chris Wheeler、Clarke Ching、Daði Ingólfsson、Diana Larsen、Erik Petersen、George Dinwiddie、Ilja Preuß、Jason Yip、Jeff Olfert、Jeffery Palermo、Jonathan Clarke、Keith Ray、Kevin Rutherford、Kim Gräsman、Lisa Crispin、Mark Waite、Nicholas Evans、Philippe Antras、Randy Coulman、Robert Schmitt、Ron Jeffries、Shane Duan、Tim Haughton以及Tony Byrne,感谢他们提供意见,并感谢Brian Marick、Ken Pugh和Mark Streibeck对已完成的初版的评论。
最后,再次感谢我的妻子Neeru。这一次,她知道自己置身何处,但她的支持仍然没有动摇。没有她,我无法完成此书。
[1] 敏捷流畅度的英文Agile Fluency是Agile Fluency Project有限责任公司的注册商标。