敏捷开发与 Scrum:理念与实践
2001 年,17 位软件开发者在雪鸟度假村聚在一起,写下了《敏捷软件开发宣言》。当时他们可能并没有想到,这份简短的共识,会在之后很长一段时间里,持续影响软件团队的工作方式。
如今,敏捷开发已经成了多数国内软件团队的常态配置。但在实践中,敏捷常常被简化为“开会多了”“节奏快了”,而背后的理念却逐渐模糊。本文从敏捷宣言的核心思想出发,结合实际项目中的经验,梳理最常见的落地框架——Scrum,重点放在角色、事件和工件这些具体机制上,看看它们在工程层面到底解决了什么问题。

敏捷宣言与核心价值观
《敏捷软件开发宣言》四大核心价值观:
| 价值观 | 左项(优先) | 右项(次要) |
|---|---|---|
| 个体与互动 | 高于 | 流程与工具 |
| 可工作的软件 | 高于 | 全面的文档 |
| 客户合作 | 高于 | 合同谈判 |
| 响应变化 | 高于 | 遵循计划 |
“也就是说,虽然右边的项目有价值,但我们更看重左边的项目。”
这并非完全否定右项的价值,而是强调在软件开发中,人、可用的软件、协作和适应变化比僵化的流程、文档、合同和计划更为重要。
敏捷与 Scrum 的关系
在实践中,很多人对”敏捷”和”Scrum”这两个概念存在混淆。
graph TD
A[Agile 敏捷理念] --> B[Scrum]
A --> C[Kanban]
A --> D[XP 极限编程]
A --> E[精益开发 Lean]
B --> F[价值观与原则]
B --> G[具体实现框架]
style A fill:#e1f5ff,stroke:#0288d1,color:#01579b
style B fill:#fff4e1,stroke:#f57c00,color:#e65100
style G fill:#ffe1e1,stroke:#d32f2f,color:#b71c1c
关键区别:
| 对比维度 | Agile(敏捷) | Scrum |
|---|---|---|
| 本质 | 理念、价值观体系 | 具体的实践框架 |
| 范围 | 包含多种实现方法 | 敏捷的一种实现方式 |
| 结构 | 原则性指导 | 明确的角色、事件、工件 |
| 起源 | 2001 年敏捷宣言 | 1995 年 Schwaber & Sutherland |
简而言之,Agile 是”为什么”和”做什么”,Scrum 是”怎么做”。
Scrum 框架结构
Scrum 框架可以用 3-5-3 来记忆:3 个角色、5 个事件、3 个工件。
3 个角色
graph LR
A[Scrum Team] --> B[Product Owner<br/>产品负责人]
A --> C[Scrum Master<br/>敏捷教练]
A --> D[Development Team<br/>开发团队]
B --> E[负责产品价值和优先级]
C --> F[负责流程和障碍清除]
D --> G[负责交付可工作的增量]
style A fill:#e8f5e9,stroke:#388e3c,color:#1b5e20
style B fill:#fff3e0,stroke:#f57c00,color:#e65100
style C fill:#e3f2fd,stroke:#1976d2,color:#0d47a1
style D fill:#f3e5f5,stroke:#7b1fa2,color:#4a148c
产品负责人:
- 负责管理产品待办事项
- 决定功能的优先级
- 确保团队最大化产品价值
- 必须由单人担任
Scrum Master:
- Scrum 流程的守护者和教练
- 清除团队面临的障碍
- 确保 Scrum 理论和实践得到正确应用
- 不是传统意义上的项目经理
开发团队:
- 自组织、跨职能的团队
- 通常 5-7 人(双披萨原则)
- 负责 Sprint 期内交付产品增量
- 成员具备多元化技能
5 个事件
Scrum 事件为三大支柱(透明度、检视、适应)提供了定期的实践机会。每个事件都有明确的目的、时间限制和参与者。
graph TD
A[Sprint<br/>1-4周的迭代容器] --> B[Sprint Planning<br/>规划会议]
A --> C[Daily Scrum<br/>每日站会]
A --> D[Sprint Review<br/>评审会议]
A --> E[Sprint Retrospective<br/>回顾会议]
B --> F[确定 Sprint 目标和待办事项]
C --> G[同步进度、协调工作]
D --> H[展示成果、收集反馈]
E --> I[总结经验、持续改进]
style A fill:#ffebee,stroke:#d32f2f,color:#b71c1c
时间盒说明:为了帮助建立约束和聚焦,每个 Scrum 事件都有预定义的时间限制。
| 事件 | 时间盒(1月Sprint) | 时间盒(2周Sprint) |
|---|---|---|
| Sprint Planning | 8 小时 | 4 小时 |
| Daily Scrum | 15 分钟 | 15 分钟 |
| Sprint Review | 4 小时 | 2 小时 |
| Sprint Retrospective | 3 小时 | 1.5 小时 |
Sprint(冲刺)
Sprint 是所有其他事件的容器,是 Scrum 的核心心脏。
- 固定长度的迭代周期,通常 1-4 周,最长不超过一个月
- 一旦确定,周期长度在整个项目期间保持一致
- 为团队提供节奏感和可预测性
- 如果 Sprint Goal 不再可行,产品负责人可以取消 Sprint
Sprint Planning(规划会议)
每个 Sprint 从 Sprint Planning 开始,Scrum 团队共同确定他们在即将到来的 Sprint 中计划完成的工作。
会议关注点:
- 在 Sprint 中能够创造的价值
- 选择将在 Sprint 期间解决的产品待办事项
- 对达成目标所需的工作进行计划
- 计划创建一个满足 Definition of Done 的增量
产出:Sprint Backlog,包括 Sprint Goal、选定的产品待办事项和交付工作的计划。
Daily Scrum(每日站会)
Daily Scrum 是开发人员每天 15 分钟的会议,用于检视实现 Sprint Goal 的进展。
三个经典问题:
- 昨天做了什么?
- 今天计划做什么?
- 有什么阻碍?
重要提醒:
- 这不是汇报会议,而是协同会议
- 如果会议在 15 分钟前达成目标,可以提前结束
- 如果在时间盒内无法达成目标,应该寻找提高效率的方法
Sprint Review(评审会议)
Sprint Review 是一次工作会议,Scrum 团队向干系人展示已完成的工作,并寻求反馈和指导。
会议内容:
- 展示本期完成的产品增量
- 讨论产品目标的进展情况
- 沟通业务或技术环境中的变化
- 共同探讨下一步的行动计划
产出:调整后的产品待办事项,为下一个 Sprint 做准备。
Sprint Retrospective(回顾会议)
Sprint Retrospective 是 Sprint 的最后一个活动,是 Scrum 团队检视和调整工作实践的机会。
讨论主题:
- 团队成员互动和沟通的情况如何
- 团队遇到的任何障碍
- 清除障碍的情况如何
- Definition of Done 是否仍然适用
- 工作方式有哪些可行的改进方法
产出:可行的改进计划,将在下一个 Sprint 中实施。
3 个工件
Scrum 工件代表工作或价值,旨在最大限度地提高关键信息的透明度。每个工件都包含一项承诺,以确保提供用于度量进展所需的透明度。
| 工件 | 描述 | 承诺 | 责任人 |
|---|---|---|---|
| 产品待办事项 | 所有想要的工作的有序列表 | Product Goal | 产品负责人 |
| Sprint 待办事项 | 当前 Sprint 要完成的任务集 | Sprint Goal | 开发团队 |
| 增量 | Sprint 结束时产出的可用产品 | Definition of Done | 开发团队 |
产品待办事项
产品待办事项是一份涌现式的、有序的清单,包含了改进产品所需的工作内容。它是 Scrum 团队开展工作的唯一来源。
特点:
- 动态更新的,永远不会”完成”
- 按价值优先级排序
- 包含功能、需求、技术工作、知识获取等
- 多个团队协作时,相关工作仍在同一个产品待办事项中管理
承诺:Product Goal(产品目标)
产品目标描述了产品未来的状态,可以作为 Scrum 团队进行计划的目标。产品目标是长期目标,团队必须先实现(或放弃)一个目标,再开始下一个。
Sprint 待办事项
Sprint 待办事项由 Sprint Goal(为什么做)、为 Sprint 选择的产品待办事项条目(做什么)以及交付增量的可执行计划(如何做)组成。
特点:
- 在整个 Sprint 中会随着了解到更多信息而不断更新
- 应该有足够的细节,以便在 Daily Scrum 中检视进展
- 如果工作与预期不同,可以与产品负责人协商范围——但不影响 Sprint Goal
承诺:Sprint Goal(Sprint 目标)
Sprint 目标是 Sprint 的唯一目标,它为开发团队提供了灵活性,创造了连贯性和专注点。当需要做的工作与预期不同时,团队可以在不影响 Sprint Goal 的情况下协商范围。
增量
增量是迈向产品目标的一块坚实垫脚石。每个增量都是之前所有增量的累加,并经过彻底验证,以确保整合在一起的所有增量都能工作。
承诺:Definition of Done(完成的定义)
如果你刚刚开始使用 Scrum,会听到很多关于”Done”和”Definition of Done”的说法。Definition of Done 是增量符合产品所需的质量度量标准时对其状态的正式描述。
一项工作除非符合 Definition of Done,否则不能将其视为增量的一部分。
Definition of Done 创建了透明度,让每个人都对”什么样的工作算是已完成的工作”有共同理解。如果没有特定的组织标准,Scrum 团队必须创建适合自己产品的 Definition of Done。
敏捷开发的十二原则
在敏捷宣言的四大价值观之下,有十二条具体原则指导实践:
- 我们的最高目标是,通过及早和持续不断地交付有价值的软件使客户满意。
- 欣然面对需求变化,即使在开发后期也一样。敏捷过程掌控变化,利用变化为客户创造竞争优势。
- 经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。
- 业务人员和开发人员必须相互合作,项目中的每一天都不例外。
- 激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标。
- 不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈。
- 可工作的软件是进度的首要度量标准。
- 敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。
- 坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。
- 以简洁为本,它是极力减少不必要工作量的艺术。
- 最好的架构、需求和设计出自自组织团队。
- 团队定期地反思如何能提高成效,并依此调整自身的行为表现。
Scrum 的理论基础
三大支柱
Scrum 基于经验主义理论,建立在三个支柱之上:
graph TD
A[Scrum 理论支柱] --> B[透明度 Transparency]
A --> C[检视 Inspection]
A --> D[适应 Adaptation]
B --> E[工件和过程对所有人可见]
C --> F[定期检视进度和工件]
D --> G[根据检视结果进行调整]
C --> D
D --> C
style A fill:#f3e5f5,stroke:#7b1fa2,color:#4a148c
透明度:工作中的重要方面必须对负责产出结果的人可见。透明度让决策基于相同的信息基础。
检视:Scrum 的工件和达成目标的进展必须经常地、勤勉地检视,以便及时发现偏差。
适应:如果检视发现过程或材料偏离可接受范围,必须尽快进行调整,使偏差最小化。
五大价值观
Scrum 的成功依赖于团队能否践行五种价值观:
| 价值观 | 内涵 | 实践表现 |
|---|---|---|
| 承诺 | 致力于实现 Sprint 目标 | 团队对自己承诺的工作负责 |
| 专注 | 专注于 Sprint 期间的工作 | 避免多任务,集中精力完成目标 |
| 开放 | 对工作和挑战持开放态度 | 坦诚面对问题,不隐瞒阻碍 |
| 尊重 | 尊重彼此是有能力且独立的人 | 相信团队成员的专业能力 |
| 勇气 | 勇于做正确的事,挑战棘手问题 | 敢于指出问题,敢于说”不” |
这些价值观为 Scrum 团队的工作、行动和行为指明了方向。当这些价值观得到体现时,透明度、检视和适应就会自然实现,并在团队之间建立信任。
实践中的 Scrum
Sprint 的节奏
一个典型的 2 周 Sprint 流程:
第 1 天(周一) Sprint Planning(4小时)
↓
每天 15 分钟 Daily Scrum
↓
第 10 天(周五) Sprint Review(2小时)+ Sprint Retrospective(1.5小时)
↓
第 11 天(周一) 下一个 Sprint 开始
Scrum 指标
“无法衡量,就无法改进。”——Peter Drucker
Scrum 指标帮助团队调整方向并提升效能。以下是关键指标:
| 指标 | 用途 | 使用场景 |
|---|---|---|
| 速度 | 预测团队能力 | Sprint Planning |
| 燃尽图 | 跟踪进度 | Daily Scrum |
| Sprint 目标完成率 | 评估交付质量 | Sprint Review |
| 团队满意度 | 关注团队健康 | Sprint Retrospective |
速度:
- 显示 Sprint 期间传递的价值量
- 帮助预测未来 Sprint 可以执行的工作量
- 只有作为团队一起完成几次 Sprint 后才能了解
- 用于团队内部规划,不应作为团队间比较的 KPI
燃尽图:
- 追踪整个 Sprint 期间的工作完成进度
- 对比剩余时间与待完成工作量
- 如果燃尽图出现急剧下降,可能与工作估算不准确有关
- 帮助预测团队在指定时间内完成工作的能力
重要提醒:Scrum 指标不应该成为管理层的武器,而应该帮助团队确保 Scrum 为他们工作。团队应该协作选择相关指标,用于指导回顾和决策制定。
与其他方法的对比
理解 Scrum 与其他方法的关系,有助于选择适合的实践框架。
Scrum vs 瀑布模型
| 对比维度 | 瀑布模型 | Scrum |
|---|---|---|
| 工作方式 | 顺序阶段,按部就班 | 迭代增量,持续交付 |
| 变化应对 | 难以适应变化 | 拥抱变化 |
| 客户参与 | 主要是需求阶段 | 持续参与 |
| 交付节奏 | 项目结束时交付 | 每个 Sprint 交付 |
| 风险管理 | 后期发现风险 | 早期暴露风险 |
何时使用瀑布:
- 需求明确且稳定
- 有严格的合规要求
- 团队习惯传统开发模式
何时使用 Scrum:
- 需求不明确或可能变化
- 需要快速获得反馈
- 团队愿意适应敏捷方式
Scrum vs 看板
| 对比维度 | Scrum | 看板 |
|---|---|---|
| 时间限制 | 固定长度的 Sprint | 持续流动,无时间盒 |
| 角色定义 | 明确的角色分工 | 角色较为灵活 |
| 工作限制 | Sprint 背景下的范围限制 | WIP(在制品)限制 |
| 变化时机 | Sprint 期间尽量避免变化 | 可以随时调整 |
| 测量重点 | 速度、Sprint 目标 | 周期时间、流动效率 |
何时使用 Scrum:
- 工程、产品、软件开发团队
- 需要较严格的结构
- 有大量积压工作需要处理
- 团队受到快速期限和交付成果的激励
何时使用看板:
- 需要可视化的项目管理系统
- 运行持续流程型项目(如支持团队)
- 工作不是短时间内完成的
- 优先级频繁变动
混合实践:许多团队采用 Scrumban,保留 Scrum 的待办事项和规划机制,同时融入看板的 WIP 限制和流动思维。
常见问题与解决方案
问题 1:Daily Scrum 变成了汇报会议
现象:团队成员向 Scrum Master 或管理者汇报工作进度,而不是协同解决问题。
解决方案:
- Scrum Master 应该引导会议,确保这是团队内部的协同会议
- 强调 Daily Scrum 是为开发人员服务的,不是给管理层看的
- 如果管理者需要了解进度,应该通过其他渠道,而不是占用 Daily Scrum
问题 2:Sprint 目标不清晰
现象:Sprint 只是一堆任务列表,没有统一的目标,团队各自为战。
解决方案:
- 每个 Sprint 应该有明确的、可衡量的目标
- Sprint Goal 应该写在显眼位置,Daily Scrum 时回顾
- 如果工作与预期不同,可以在不影响 Sprint Goal 的情况下协商范围
问题 3:产品待办事项维护不当
现象:待办事项项描述模糊、优先级混乱、长期不更新。
解决方案:
- 产品负责人需要持续投入,定期梳理待办事项
- 每个待办事项应该有清晰的验收标准
- 定期(如每个 Sprint)回顾和调整优先级
- 考虑引入 Backlog Refinement 专项活动
问题 4:团队过度承诺
现象:每个 Sprint 都承诺了很多工作,但经常无法完成。
解决方案:
- 参考历史速度数据,而非凭感觉估算
- 规划时留出 10-20% 的缓冲区应对意外
- 如果团队中有人休假或不可用,相应调整承诺
- 技术债务和缺陷修复要计入容量
问题 5:回顾会流于形式
现象:每次回顾都是”沟通不够”或”文档不完善”,没有实质改进。
解决方案:
- 回顾会应该聚焦具体可行的改进措施
- 每个改进事项应该有负责人和跟进计划
- 在下一个 Sprint 回顾时检查上次的改进是否落实
- 尝试不同的回顾形式,避免陷入套路
总结
回到开头的问题:为什么敏捷常常被简化为”开会多了”“节奏快了”?
这可能是因为很多团队只看到了 Scrum 的形式——会议多了、节奏快了,却忽略了背后的理念。Scrum 不是目的,而是手段。它的角色、事件、工件,都是为了让透明度、检视和适应成为可能,最终实现持续改进。
如果只是机械地开会、走流程,而不去真正践行承诺、专注、开放、尊重、勇气这些价值观,那么敏捷确实会沦为形式主义。
核心要点回顾:
- Agile 是理念和价值观,Scrum 是实现框架
- Scrum 框架:3 个角色、5 个事件、3 个工件
- 理论支柱:透明度、检视、适应
- 五大价值观:承诺、专注、开放、尊重、勇气
- 持续改进是关键,回顾会是重要载体
在实践中,团队应该:
- 理解敏捷的核心价值观,而不只是记住规则
- 根据自身情况灵活应用 Scrum 框架
- 用指标来指导改进,而不是作为 KPI 考核工具
- 避免”敏捷”变味——微观管理、透支团队、固守流程而非原则
最后,正如敏捷宣言所强调的:个体与互动高于流程与工具。Scrum 提供了工具,但真正让敏捷发挥作用的是团队本身。
参考资料: