什么是敏捷
敏捷(Agile)可以被理解为一种产品开发的方法论或理念, 由四种价值观和十二项原则指导, 强调与客户的以及团队内部成员之间的持续沟通,在不断变化的需求下的灵活性,以及产品的可交付性。敏捷方法通过多次迭代以增量方式开发产品。实际上,它的精髓是一个面对不断变化的世界,如何创造性工作以获取最大成功的方法论,承认并拥抱事物的不确定性,承认我们已有知识的局限性并坦然面对,积极适应调整自己。这里重复敏捷的四个价值观:
个体与交流 重于 过程和工具
可用的软件 重于 完备的文档
客户协作 重于 合同谈判
响应变化 重于 遵循计划
从这四个价值观中可以看到在我们机械行业也经常挂在嘴边或写在墙上的“企业文化”: 面向客户、尊重、透明沟通等等。但它们鲜有落地。Scrum 提供了一个落地实施的方式。
什么是Scrum?
在敏捷理念下包括众多的方法和实践,如XP (Extreme Programming), Crystal, DSDM (Dynamic System Development Method),Scrum 等等。其中 Scrum已被证明是基于该理念解决复杂的不断变化的问题的最流行框架, 为这些抽象的敏捷原则提供了实用性。Scrum是以有成效和创造性地交付具有尽可能高价值的产品为目的。Scrum不是构建产品的一种流程或是一种技术,相反,它是一个框架,你可以在其中使用各种过程和技术。Scrum明确了产品管理和开发实践的相对效能,以使你可以不断改进它们。[Schwaber & Sutherland, 2011]。积极实践是Scrum的基础,根据实践得到的新的知识和信息,快速及时反馈并修正行动。在二十多年的软件产品开发实践中验证了它的有效性。这里我们重复下Scrum的价值观:
承诺 愿意对目标做出承诺
专注 把你的心思和能力都用到你承诺的工作上去
开放 Scrum把项目中的一切开放给每个人
尊重 每个人都有他独特的背景和经验
勇气 有勇气做出承诺,履行承诺,改进自己,接受变革
Scrum 一般的实际操作框架是组建一个或多个跨职能小团队,在开发项目启动后,根据客户需求或愿景分解成若干产品需求,并根据其商业价值对其进行优先级排序,把开发周期分割成若干个小的迭代周期(1-4周不等),一个或多个跨职能团队在多个迭代过程中持续地交付递增的可用功能。在交付过程中完成持续的集成和持续的改善。它强调的是对产品和过程进行持续的检视与调整。
在Scrum的工作框架中定义了3个角色:
-产品负责人 (Product Owner)
-Scrum Master
-Scrum 开发团队
定义的5个仪式是:
-产品待办事项(Product Backlog)的梳理会议
-每个小周期(Sprint)的计划会议(Sprint Planning)
-每日站会(Daily Scrum)
-Sprint评审会议(Sprint Review)
-回顾会议(Sprint Retrospective)
定义的3个核心工件是:
-产品待办事项列表 (Product Backlog)
-小周期的待办事项列表(Sprint Backlog)
-产品增量 (Product Increment)
在Scrum框架中对各角色职责有清晰的定义,对仪式的举行,组织和内容有明确的说明和解释,详细内容可参见 Scrum指南 [Jeff Sutherland, Ken Schwaber, 2017]。
Scrum框架 [Deemer et al. 2010]
Scrum的背后
前面简单介绍了Scrum的价值观和它的实际操作框架,笔者认为,Scrum背后几个基本的理念精髓我们必须深刻理解,它们是Scrum赖以实施的前提,同时也是实施Scrum后的成果。