1 minute read

在软件开发的历史长河中,有两个名词如同璀璨星辰,照亮了无数开发者前行的道路,它们就是敏捷宣言和雪鸟会议。这两个看似平凡却又非凡的存在,共同铸就了现代软件开发的辉煌篇章,深刻地改变了整个行业的面貌与走向。

孕育敏捷理念的摇篮

盐湖城是著名NBA球队犹他爵士队所在的城市,同时也是美国顶级的滑雪胜地,在这座城市里共有6座世界级的滑雪场,并在2002年承办了第十九届冬季奥运会,位于盐湖城南部坐落于小卡顿伍德峡谷的花岗岩山峰之间的雪鸟村便是其中一座。 

https://www.snowbird.com

2001年2月,一群软件开发领域的先驱者齐聚美国犹他州的雪鸟村。这里,远离尘世的喧嚣,宁静而祥和,仿佛是专为这场思想盛宴而存在的世外桃源。17位业界精英(详见附录一),他们怀揣着对传统软件开发模式的困惑与不满,渴望探寻一条新的道路,以解决长期以来困扰软件项目的种种难题。

在雪鸟村,他们深入探讨、激烈辩论,分享各自在软件开发实践中的经验与见解。他们发现,尽管各自所处的领域和采用的技术有所不同,但在面对快速变化的市场和技术环境时,都有着相似的挑战与困惑。他们逐渐认识到,软件开发不应该是一个僵化、刻板的过程,而应该更加灵活、适应性强,更加注重人的因素和团队的协作。

正是在这片充满智慧与灵感的土地上,敏捷软件开发的理念开始萌芽。雪鸟会议成为了敏捷理念的发源地,那些在会议中碰撞出的思想火花,最终汇聚成了影响深远的敏捷宣言。

回望十年来时的路

20世纪90年代,以美国为核心的全球互联网(Internet)迅速发展并成型,与此同时,面向对象编程语言如Java和C++兴起,带来了对更优秀软件工程实践的诉求。

Crystal方法提出

1990年,Alistair Cockburn提出的Crystal方法。一种以人为本、迭代和轻量级的软件开发方法。它强调根据项目的规模、团队成员的能力和项目的重要性等因素,灵活选择合适的实践和过程。Crystal方法有多种变体,如Crystal Clear、Crystal Yellow等,分别适用于不同规模和复杂度的项目。

Scrum方法的问世

1991年,DeGrace和Stahl在《Wicked Problems, Righteous Solutions》一文中将所谓整体方法命名为Scrum。Scrum是一种迭代、增量的软件开发方法,强调团队合作、跨功能团队和领导力。它将复杂的产品开发过程分解为一系列短周期的迭代,每个迭代称为一个“冲刺”(Sprint),通常持续2-4周。在每个冲刺中,团队会从产品待办事项列表中选择一定量的工作来完成,通过每日站会等方式及时沟通和协调,以确保项目按计划推进。

1995年,在OOPSLA’95 会议上,Sutherland和Schwaber共同发表论文介绍Scrum方法。论文为Scrum方法的理论体系和实践框架提供了更详细的阐述,使其在软件开发领域逐渐受到关注。他们明确了Scrum中的关键角色,如产品负责人、Scrum Master和开发团队。

XP方法引入

1996年Martin Fowler,Kent Beck, Ward Cunmingham将 XP方法引入C3(Chrysler Comprehensive Compensation System,克莱斯勒综合薪酬系统)项目,是第一个被正式的XP项目。标志着极限编程正式进入实际项目实践阶段。XP强调快速反馈、持续改进和团队合作,其核心实践包括测试驱动开发(TDD)、持续集成、结对编程、重构等。在C3项目中,开发团队通过编写单元测试来驱动代码的编写,确保每个功能模块都能通过测试,从而提高代码质量。同时,团队成员结对编程,互相监督和协作,及时发现和解决问题。

FDD方法提出

1998年,Jeff DeLuca提出的FDD(特性驱动开发)方法是一种以模型为中心、基于特性的软件开发过程。它将软件开发分解为一系列短期的、以特征为导向的迭代,每个迭代都围绕一个或多个客户价值高的特性展开。

持续集成与规模化敏捷

2000年Martin Fowler的文章Continuous Integration发表,持续集成方法首次正式进入开发视野。持续集成是指开发团队成员频繁地将代码集成到共享的主干分支上,并通过自动化构建和测试来及时发现和修复集成过程中出现的问题。

同年,ThoughtWorks开始的百人敏捷项目为大规模敏捷项目实施积累了宝贵经验,证明了敏捷方法在大型团队中的可行性。同时,他们开源的CruiseControl工具为持续集成的实践提供了有力支持,促进了持续集成方法在行业内的普及和应用。CruiseControl能够自动监控代码仓库的变化,触发构建和测试流程,并提供详细的构建报告,方便团队成员及时了解项目状态。

敏捷宣言

2001年,敏捷宣言的发表是敏捷开发发展历程中的一个重要里程碑。它由17位软件开发专家共同起草,为敏捷开发的理念和实践提供了清晰的指导。同年敏捷联盟的成立,推动了整个软件行业的进步。

敏捷是许多方法的一个总称(AgilePG)

指引开发方向的灯塔

敏捷宣言的全称是《敏捷软件开发宣言》,它以简洁而有力的语言,阐述了敏捷开发的核心价值观和原则。宣言中明确提出了四大价值观和十二大原则(详见附件二),强调在软件开发过程中,应更加关注人的价值、软件的实际可用性、与客户的紧密合作以及对变化的快速响应。

https://agilemanifesto.org

自敏捷宣言诞生以来,它所倡导的理念和原则迅速在软件开发领域得到了广泛传播和应用。如Scrum、Kanban等新敏捷开发方法的出现,为软件开发团队提供了更加灵活、高效的开发模式。这些方法强调迭代开发、增量交付、持续集成等实践,让开发团队能够快速地响应变化,及时调整开发方向,确保软件产品能够紧跟市场和技术的发展步伐。

敏捷宣言所代表的敏捷理念,不仅改变了软件开发的流程和技术实践,更深刻地影响了软件开发团队的文化和价值观。在敏捷团队中,成员之间的信任与合作成为核心要素。开发人员不再是孤立的个体,而是紧密相连的团队成员,他们相互支持、相互协作,共同为项目的成功而努力。团队的氛围更加开放、包容,鼓励创新和尝试,即使面对失败,也能够从中吸取教训,快速调整策略,继续前行。

如今,敏捷宣言已经走过了二十多个年头,但它所蕴含的理念依然充满活力,继续引领着软件开发行业的发展潮流。而雪鸟村,作为敏捷理念的发源地,也成为了软件开发者们心中的一片圣地。敏捷宣言和雪鸟会议,一个是以文字形式明确阐述了软件开发的全新理念,另一个则是为这些理念的诞生提供了思想碰撞的舞台。它们共同构成了软件开发史上的一座丰碑,激励着一代又一代的开发者们,在追求卓越软件的道路上,不断探索、创新与前行。

附录一:雪鸟会议参会者名单

From:https://agilemanifesto.org/authors.html

     
序号 姓名 简介
1 Mike Beedle 麦克·比窦 • 职位:e-Architects Inc.创始人兼首席执行官 • 专业领域:应用开发,分布式对象和互联网技术,Scrum和XP的结合应用 • 成就:自20世纪90年代中期以来,已将Scrum引入7个组织,擅长辅导公司创建大规模可重用架构,涉及多个应用团队,其记录是17个应用重用相同组件,如工作流、可视化组件、事务、业务对象和架构服务等。出版领域包括对象技术、模式、组件、框架、软件开发、编程语言、可重用性、工作流、BPR和物理学等。与Ken Schwaber合著《Scrum, Agile Software Development》。
2 Arie van Bennekum 阿里·范·本内库姆 • 专业领域:DSDM和DSDM联盟,Rapid Application Development • 成就:自1997年起积极参与DSDM和DSDM联盟工作,对敏捷方法充满热情,致力于以适合最终用户和业务的方式,为客户交付他们真正需要的东西。因DSDM方法中促进会议的重要性以及他对团队流程和人类行为的热情,经常作为促进者和教练参与项目。目前是DSDM联盟Benelux董事会成员,获得DSDM实践者、DSDM培训师、DSDM顾问和IAF认证专业促进者(CPF)认证。
3 Alistair Cockburn 阿利斯泰尔·科伯恩 • 职位:Humans and Technology创始人  • 专业领域:项目团队访谈,方法论设计  • 成就:其20世纪90年代的工作发展成为水晶系列敏捷方法论。与Jim Highsmith合作,将水晶方法和自适应理念演化为创建敏捷软件开发生态系统、通用方法论与项目团队特定情况相结合的建议。共同赞助敏捷软件开发书籍系列,出版个人成长技巧和成功使用的敏捷方法论示例。
4 Ward Cunningham 沃德·库宁汉姆 • 职位:Cunningham & Cunningham, Inc.创始人,曾任Wyatt Software研发总监、Tektronix计算机研究实验室首席工程师  • 专业领域:面向对象编程、极限编程、社区建设  • 成就:在对象导向编程、极限编程和由其WikiWikiWeb托管的社区建设方面有突出贡献。活跃于Hillside Group,曾担任该组织赞助的模式语言程序会议的项目主席。创建了CRC设计方法,帮助团队为程序找到核心对象。为PLoP、JOOP和OOPSLA撰写关于模式、对象、CRC及相关主题的文章。
5 Martin Fowler 马丁·福勒 • 职位:Thoughtworks首席科学家 • 专业领域:面向对象技术在信息系统中的应用,软件设计,软件过程 • 成就:十多年来一直致力于使用面向对象技术进行信息系统开发。主要兴趣在软件设计,但也一直关注软件过程,对使方法论适应人而非相反的方式感兴趣。著有《Analysis Patterns》《UML Distilled》《Refactoring》和《Planning Extreme Programming》。
6 Jim Highsmith 吉姆·海史密斯 • 专业领域:“自适应软件开发”敏捷方法,相关书籍创作 • 成就:是“自适应软件开发”敏捷方法的主要开发者,同名书籍的作者。曾在OOPSLA、Cutter Summit、SD 2001、XP2001 & Flexible Processes、Project World和XP Universe等会议上就自适应开发和其他敏捷方法发表演讲。与Martin Fowler合著《The Agile Manifesto》文章,并有其他多篇“敏捷”文章在筹备中。与Alistair Cockburn合作整合ASD和水晶方法,也是新Addison-Wesley敏捷软件开发书籍系列的共同编辑。并于2019年出版了《EDGE:Value-Driven Digital Transformation》。
7 Andrew Hunt 安德鲁·亨特 • 职位:The Pragmatic Programmers合伙人 • 专业领域:敏捷软件开发咨询,写作,演讲 • 成就:与Dave Thomas合著畅销书《The Pragmatic Programmer: From Journeyman to Master》《Programming Ruby》以及多篇文章。在写作、演讲、木工和弹钢琴之余,还经营着专注于敏捷软件开发的咨询业务。自20世纪80年代初以来,一直在电信、银行、金融服务、公用事业、医学成像、图形艺术和互联网服务等多个行业从事专业软件开发。与合著者Dave Thomas一起,以将独立于方法的实用最佳实践引入美国各地的软件开发项目而闻名。是RTP分会独立计算机顾问协会的会长。
8 Brian Marick 布莱恩·马瑞克 • 专业领域:编程,软件测试咨询 • 成就:作为软件测试社区的一部分代表来到雪鸟村,该社区一直在开发一种强调探索、减少对文档的依赖、增加对变更的接受度以及项目是关于质量的持续对话的测试风格。开始探索“敏捷测试”可能的含义以及它如何与敏捷开发相适应,并在其网页的敏捷测试部分进行探讨。
9 Robert C. Martin 罗伯特C.马丁 • 职位:Object Mentor Inc.总裁兼创始人 • 专业领域:XP和敏捷过程咨询,软件设计咨询,培训,开发服务 • 成就:自1970年以来一直从事软件专业工作。1995年出版畅销书《Designing Object Oriented C++ Applications using the Booch Method》,1997年担任《Pattern Languages of Program Design 3》的首席编辑,1999年担任《More C++ Gems》的编辑。与James Newkirk合著《XP in Practice》,2001年由Addison Wesley出版。目前正在撰写《Principles, Patterns, and Practices of Agile Software Development》,计划由Prentice Hall于2002年出版。1996年至1999年担任《C++ Report》的主编,在各种行业杂志上发表了数十篇文章,是国际会议和贸易展览的定期演讲者。
10 Ken Schwaber 肯.施瓦伯 •职位:Advanced Development Methods(ADM)总裁 •专业领域:软件开发实践改进 •成就:经验丰富的软件开发者、产品经理和行业顾问。发起20世纪90年代初的流程管理产品革命,并与Jeff Sutherland共同制定Scrum开发过程的最初版本。正式化了Scrum,帮助许多组织成功地使用Scrum部署产品和系统,并与Mike Beedle合著《Scrum, Agile Software Development》。
11 Jeff Sutherland 杰夫.萨瑟兰 • 职位:PatientKeeper首席技术官 • 专业领域:移动/无线应用开发,敏捷开发过程改进 • 成就:在九家软件技术公司担任CTO或工程副总裁,并向每家公司引入改进的敏捷开发过程。在过去十年中,通过对象管理组和OOPSLA业务对象研讨会,在可重用业务对象组件方面的工作,导致了新的数据库产品、软件开发环境、CASE/OOAD工具以及多个行业的垂直应用的产生。作为Individual Inc.的创始人和工程副总裁,推出了个人NewsPage。作为IDX Systems的前工程高级副总裁和首席技术官,开发了新的医疗保健互联网应用。在大型基于组件的软件项目方面的工作,导致了银行、保险、图书馆系统、航空航天、航空公司和飞机租赁、核工程和机器人技术等行业的创新。
12 Dave Thomas 戴夫·托马斯 • 专业领域:Ruby语言,敏捷软件开发咨询 • 成就:与Andy Hunt共同创立The Pragmatic Programmers,合著畅销书《The Pragmatic Programmer: From Journeyman to Master》《Programming Ruby》以及多篇文章。在写作、演讲之余,还经营着专注于敏捷软件开发的咨询业务。自20世纪80年代初以来,一直在电信、银行、金融服务、公用事业、医学成像、图形艺术和互联网服务等多个行业从事专业软件开发。与合著者Andy Hunt一起,以将独立于方法的实用最佳实践引入美国各地的软件开发项目而闻名。
13 Kent Beck 肯特·贝克 • 专业领域:极限编程,测试驱动开发  • 成就:极限编程的创始人之一,测试驱动开发的积极推动者,以其务实的理想主义著称。
14 James Grenning 詹姆斯·格伦宁 • 专业领域:软件开发,敏捷实践  • 成就:在软件开发领域有着丰富的经验,积极参与敏捷实践的推广和应用。
15 Ron Jeffries 罗恩·杰弗里斯 • 专业领域:极限编程 • 成就:极限编程的重要推动者,强调敏捷背后的思维方式、价值观和原则。
16 Jon Kern 乔恩·科恩 •职位:Lightship,Inc 创始人 •专业领域:Agile MDA/UML轻量级开发 •成就:致力于帮助团队构建能够实现有效实践以及可靠体系结构的环境,最终高效地交付业务价值。
17 Steve Mellor 史蒂夫·梅勒 • 专业领域:建模,Shlaer-Mellor方法  • 成就:在建模领域有深入研究,认为建模者能从实施敏捷的人身上学到许多,例如尽早为模型构建测试。

##

附录二:敏捷宣言的价值观与原则

   
四大价值观 1.个体和互动高于流程和工具 2.工作的软件高于详尽的文档 3.客户合作高于合同谈判 4.响应变化高于遵循计划 也就是说,尽管右项有一定的价值,我们更重视左项的价值。
十二条敏捷原则 1.最高优先级的是:通过尽早和持续交付有高价值的软件,满足客户。 2.欣然面对需求变化,即使是在开发阶段的后期,敏捷流程就是用变化来为客户获得竞争优势。 3.频繁交付可工作的软件,从数周到数月,交付周期越短越好。 4.业务人员和开发人员必须相互合作,项目中的每一天都不例外。 5.以受到激励的个体为核心构造项目,为他们提供所需的环境和支持,信任他们可以把工作做好。 6.最有效的、最高效的沟通方法是面对面的交谈。 7.可工作的软件是衡量进度的首要标准。 8.敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。 9.持续地追求技术卓越和良好的设计,以此增强敏捷的能力。 10.简单为本,尽最大可能减少不必要的工作,简单是敏捷流程的根本。 11.最佳架构、需求和设计,来自自组织型的团队。 12.团队定期反思如何提升效率,并调节和调整自己的工作方式。

新的一年,杭州敏捷社区开工大吉!🚀

#敏捷社区 #新年新挑战 #团队协作 #高效创新