什么是 Scrum?
Scrum 是一个管理框架,团队用它来自我组织并朝着一个共同的目标努力。它描述了一组用于高效项目交付的会议、工具和角色。就像一个体育团队为一场大型比赛而练习一样,Scrum 实践允许团队自我管理,从经验中学习,并适应变化。软件团队可以使用 Scrum 解决复杂的问题,既经济又可持续。
什么是 Scrum 方法?
Scrum 方法独具特色的原则和价值观:
项目成功的 Scrum 原则
透明度
团队工作的环境是每个人都意识到其他人可能正在经历的挑战。跨职能团队成员和项目负责人之间的定期面对面对话可以防止沟通不畅和信息瓶颈。
反思
框架中构建了频繁的反思点,以允许团队成员审视他们的进展。项目经理利用这些评审会议的见解进行评估和未来规划。因此,项目可以在预算范围内按计划更高效地运行。
适应
团队成员可以根据不断变化的客户需求重新确定任务的优先级。他们决定哪些任务要先完成,哪些要在以后重访。
项目团队的 Scrum 价值观
Scrum 团队遵循五个核心价值观。
承诺
Scrum 团队成员承诺按照规定的时间完成任务和目标,并致力于持续改进以找到最佳解决方案。
勇气
Scrum 团队通过提出开放的、具有挑战性的问题来展示勇气。 他们进行诚实和透明的讨论,以达成最佳解决方案。
专注
在任何给定的时期,团队成员都有需要完成的 Product Backlog 任务。他们会专注于选定的任务,在有限的时间内提供可交付成果。
开放
Scrum 团队成员乐于接受支持个人学习和有助于提高整体项目质量的新想法和机会。
尊重
团队成员尊重项目经理,尊重彼此,尊重 Scrum 流程。这种尊重的文化在团队中创造了一种相互协作和合作的精神。
Scrum 如何运作?
Scrum 是一个易于学习的框架,但是想成为这方面的专家也不容易。Scrum 的联合创始人 Jeff Sutherland 和 Ken Schwaber 在 Scrum 指南中解释了基本概念。该指南详细概述了 Scrum 流程以及如何有效地实施它们。
Scrum 的本质是一个自组织的团队,在一个称为 Sprint 的时限内交付客户价值。Scrum 定义了与每个 Sprint 相关的构件、角色和事件。下面我们来详细了解每项内容。
什么是 Scrum 构件?
Scrum 团队使用称为 Scrum 构件的工具来解决问题和管理项目。Scrum 构件为团队成员和利益相关者提供关键的计划和任务信息。有三个主要构件:
Product Backlog
Product Backlog 是一个动态的功能、需求、增强功能和修复列表,项目取得成功的前提是必须完成这些任务。它本质上是团队的待办事项列表,不断地被重访和重新排序,以适应市场的变化。产品负责人维护并更新该列表,删除不相关的项目或添加客户的新请求。
Sprint Backlog
Sprint Backlog 是开发团队在当前 Sprint 周期中要完成的项目列表。在每个 Sprint 之前,团队从 Product Backlog 中选择他们要处理的项目。Sprint Backlog 非常灵活,可以在 Sprint 期间变化。
Increment
Increment 是向目标或愿景迈进的一步。它是 Sprint 可用的最终产品。团队可以采用不同的方法来定义和展示他们的 Sprint 目标。尽管有灵活性,基本的 Sprint Goal(团队希望从当前的 Sprint 实现的目标)不能妥协。
例如,一些团队选择在 Sprint 结束时向他们的客户发布一些东西,所以一旦软件变更发布,他们的 Sprint Goal 就完成了。其他团队可能倾向于将一组功能一起发布。在这种情况下,当一个功能测试成功时,Sprint Goal 就完成了。
什么是 Scrum 角色?
一个 Scrum 团队需要三个特定角色:产品负责人、Scrum 领导者和开发团队。
产品负责人
产品负责人专注于确保开发团队向企业交付最大的价值。他们了解并优先考虑最终用户和客户不断变化的需求。高效的产品负责人会执行以下事项:
- 给团队明确的指导,告诉他们接下来要交付哪些功能。
- 弥合企业需求和团队理解之间的差距。
- 决定发布的时间和频率。
Scrum 领导者
- 为每个 Sprint 安排所需的资源。
- 推动其他 Sprint 事件和团队会议。
- 领导团队内部的数字化转型。
- 采用新技术时,主持所有团队培训。
- 与外部团队沟通,解决团队作为一个整体可能面临的任何挑战。
Scrum 开发团队
Scrum 团队由测试人员、设计人员、UX 专家、运营工程师和开发人员组成。团队成员拥有不同的技能组合,并相互交叉培训,因此没有一个人成为交付工作的瓶颈。
Amazon 创始人杰夫·贝索斯在决定团队规模时推荐了两个披萨原则:一个团队应该小到可以分享两个披萨。
Scrum 开发团队执行以下事项:
- 协同工作以确保成功完成 Sprint。
- 倡导可持续发展实践。
- 自我组织并以明确的态度对待他们的项目。
- 推动规划和评估他们在每个 Sprint 中可以完成的工作量。
什么是 Scrum 事件?
Scrum 事件或 Scrum 仪式是 Scrum 团队定期举行的一系列会议。某些 Scrum 事件包括以下内容:
Sprint 规划
在这种情况下,团队估计工作将在下一个 Sprint 中完成。成员定义具体、可衡量和可实现的 Sprint Goal。在规划会议结束时,每个 Scrum 成员都知道如何在 Sprint 中交付每个 Increment。
Sprint
Sprint 是 Scrum 团队一起完成 Increment 的实际时间。两周是 Sprint 的典型时间长度,但是可以根据项目和团队的需要而变化。工作越复杂,未知因素越多,Sprint 应该越短。
每日 Scrum 或站立会议
每日 Scrum 是一个简短的会议,团队成员在会上签到并规划一天的工作。他们报告已完成的工作,并提出实现 Sprint Goal 的任何挑战。之所以称之为站立会议,是因为它旨在让会议尽可能简短,就像每个人都站着一样。
Sprint 评审会议
在 Sprint 结束时,团队聚在一起开一个非正式的会议,回顾已经完成的工作,并向利益相关者展示。产品负责人也可能基于当前的 Sprint 将 Product Backlog 返工。
Sprint 回顾会议
团队聚在一起记录和讨论在 Sprint 过程中什么可行,什么不可行。产生的想法用于改进未来的 Sprint。
为什么 Scrum 在软件开发中非常重要?
各种团队,例如人力资源、营销和设计,都高效地使用 Scrum。然而,Scrum 在软件开发和工程团队中更受欢迎。它允许团队更快地响应不断变化的需求,而不会让成本和预算失控。其重要性的原因如下:
在具有挑战性的情况下维持质量的能力
质量保证检查内置于 Scrum 框架中。团队在每个 Sprint 开始时定义需求。团队还全面评估软件或产品的生命周期,同时设定团队愿景。这意味着需求仍然是相关的,并且可以在短时间内实现。产品负责人的定期反馈和 Sprint 评审帮助团队在整个项目过程中不断改进。
增加投资回报
Scrum 团队基于客户价值和风险分析来排定需求的优先级。重点是开发一个主要的工作产品,可以发布到市场上,以收集早期的客户反馈。Scrum 开发的特点是成本高昂的缺陷更少,团队效率更高,采用从长远来看可以省钱的快速失败方法。
更快乐、更高效的团队
改进评估的相关指标
Scrum 团队选择他们自己的指标来衡量项目绩效。他们根据自己的经验和能力评估时间表、预算和质量指标。产品负责人拥有控制权,因为评估是相对的。团队在项目开始时得到更多支持,随着时间的推移自然会加速。项目利益相关者审查工作产品,并提供定期反馈,以确保项目不偏离轨道。
Scrum 与敏捷,有什么区别?
敏捷是指软件开发中的一种思维模式或思维方式。这是一种在组织层面上采用的理念,让每个团队成员专注于持续改进和向客户交付价值。Scrum 是一个在敏捷范围内完成工作的框架。Scrum 使用敏捷的所有核心原则来定义促进项目的方法。然而,需要注意的是敏捷并不总是意味着 Scrum。许多不同的方法都采用敏捷方法进行项目管理。
Scrum 开发团队如何采用 DevOps?
- 自动化软件测试和为每个功能开发编写新的测试
- 使用支持持续部署的技术堆栈和工具
- 在每个 Sprint 结束时发布对产品的变更