在软件工程环境中实施Scrum,不仅仅需要采用会议日程。它涉及团队在价值交付、风险管理以及持续改进方面根本性的转变。本指南概述了确保您的工程项目建设顺利、能够适应变化并持续产出高质量软件的关键实践。
敏捷方法已成为现代开发的标准,但许多组织在执行过程中仍面临困难。团队是否挣扎与是否高效,往往取决于对核心原则的遵循程度,而非所使用的工具。通过关注人员、互动和可工作的软件,团队能够自信地应对复杂性。

🛠 理解核心框架
Scrum不是构建产品的流程或技术,而是一个你可以运用各种流程和技术的框架。它依赖于经验主义,即知识来自经验,并基于观察到的事实做出决策。Scrum有三个支柱:
- 透明性:过程中的重要方面必须对负责结果的人可见。
- 检查:频繁检查Scrum工件,以发现不期望的偏差。
- 适应:如果产品的某个方面不可接受,则调整流程或材料。
软件工程项目得益于这种结构,因为需求常常会演变。当市场条件发生变化时,僵化的计划往往失败。Scrum允许定期重新评估优先级。
👥 明确角色职责
成功取决于每位成员都清楚自己的职责。模糊不清会导致摩擦和延误。该框架定义了三个具有明确职责的具体角色。
产品负责人
产品负责人代表客户和业务的声音。其主要职责是最大化开发团队工作成果的产品价值。他们负责有效的产品待办事项列表管理。关键活动包括:
- 清晰地表达产品待办事项列表中的各项内容。
- 对产品待办事项列表中的项目进行排序,以最好地实现目标和使命。
- 确保产品待办事项列表对所有人可见、透明且清晰。
- 确保开发团队理解产品待办事项列表中的各项内容。
一个常见的陷阱是允许产品负责人过度管理开发团队。产品负责人决定“要构建什么”,而开发团队决定“如何构建”。这种职责分离使技术专家能够创造性地解决问题。Scrum不是构建产品的流程或技术,而是一个你可以运用各种流程和技术的框架。它依赖于经验主义,即知识来自经验,并基于观察到的事实做出决策。Scrum有三个支柱:一个常见的陷阱是允许产品负责人过度管理开发团队。产品负责人决定“要构建什么”,而开发团队决定“如何构建”。这种职责分离使技术专家能够创造性地解决问题。在软件工程环境中实施Scrum,不仅仅需要采用会议日程。它涉及团队在价值交付、风险管理以及持续改进方面根本性的转变。本指南概述了确保您的工程项目建设顺利、能够适应变化并持续产出高质量软件的关键实践。一个常见的陷阱是允许产品负责人过度管理开发团队。产品负责人决定“要构建什么”,而开发团队决定“如何构建”。这种职责分离使技术专家能够创造性地解决问题。
Scrum主管
Scrum主管负责按照《Scrum指南》中的定义推广和支持Scrum。他们服务于开发团队、产品负责人和组织。他们的角色是促进性的,而非指令性的。他们帮助团队:
- 理解并实践Scrum及其他敏捷框架。
- 消除阻碍进展的障碍。
- 营造持续改进的文化。
- 指导组织完成向Scrum的转型。
有效的Scrum主管专注于服务型领导。他们不分配任务,也不充当项目经理。相反,他们会保护团队免受外部干扰,并确保流程得到遵循,而不会成为瓶颈。
开发团队
开发团队由专业人士组成,他们负责在每个Sprint结束时交付一个潜在可发布的产品增量。他们是跨职能的,意味着他们具备创建产品所需的所有技能。他们是自组织的,意味着他们内部决定由谁在何时以何种方式完成工作。
- 跨职能:包括开发人员、测试人员、设计师和其他专业人员。
- 自组织:没有外部权威规定如何开展工作。
- 规模:通常规模较小,一般在三到九人之间,以促进沟通。
📋 管理工件
工件代表工作或价值。它们的设计旨在最大化关键信息的透明度。Scrum中有三个主要工件。
产品待办事项列表
产品待办事项列表是产品中所有已知需求的有序列表。它是任何变更需求的唯一来源。它是动态的,永远不会完成。
- 细化:项目应定期审查和更新,以确保清晰性。
- 粒度:位于顶部的项目应足够详细,以便立即开展工作。
- 排序:项目按价值、风险、优先级和必要性进行排序。
Sprint待办事项列表
Sprint待办事项列表是为Sprint选定的产品待办事项列表项目,以及交付增量的计划。它在Sprint计划会议期间创建。开发团队致力于完成这些项目。
- 承诺:团队承诺完成他们认为自己能够完成的工作。
- 可见性:进度每天进行跟踪。
- 灵活性:随着团队不断学习,他们会调整计划以实现Sprint目标。
增量
增量是迈向产品目标的具体踏脚石。它是Sprint期间完成的所有产品待办事项列表项目的总和,以及所有之前Sprint增量的价值之和。
- 完成的定义:只有当增量满足完成的定义时,才会被添加到产品待办事项列表中。
- 可用性:无论产品负责人是否接受,它都必须处于可用状态。
🗓 导航事件
事件在Scrum中用于创造规律性,并尽量减少对Scrum未定义会议的需求。它们都有时间限制,以确保专注。
冲刺
冲刺是Scrum的脉搏。它是一个固定时长的事件,不超过一个月,在此期间创建一个“已完成”、可用且可能可发布的产品增量。冲刺包含并由其他Scrum事件构成。
- 一致性:冲刺应一个接一个地进行,中间不留空隙。
- 稳定性:即使工作范围有所调整,冲刺目标也应保持不变。
冲刺计划
冲刺计划通过规划冲刺期间要执行的工作来启动冲刺。这将产生一份冲刺计划。整个Scrum团队对输出结果负责。主要讨论两个议题:
- 可以做什么?产品负责人讨论优先级最高的事项。
- 工作将如何完成?开发团队确定将产品待办事项转化为增量所必需的工作。
每日站会
每日站会是开发团队用于检查冲刺目标进展并根据需要调整冲刺待办事项的15分钟事件。应做出影响或受前一天工作影响的调整。
- 专注:它是一次计划会议,而不是向管理层汇报进展的会议。
- 参与:只有开发团队参加,尽管Scrum主管和产品负责人若被邀请也可参加。
- 问题:通常围绕已完成的工作、将要完成的工作以及障碍展开。
冲刺评审
冲刺评审在冲刺结束时举行,用于检查增量,并在需要时调整产品待办事项列表。产品负责人解释产品待办事项列表中哪些事项已“完成”,哪些尚未完成。
- 协作:这是利益相关者提供反馈的机会。
- 透明度: 团队展示已完成的工作。
- 适应性: 产品待办事项列表可根据反馈进行调整。
冲刺回顾
冲刺回顾在冲刺评审之后、下一个冲刺计划之前进行。其目的是规划提升质量和效率的方法。Scrum团队会检视上一个冲刺在个人、互动、流程、工具以及其完成定义方面的表现。
- 持续改进: 专注于识别可用于下一个冲刺的可执行改进措施。
- 心理安全感: 团队成员必须感到安全,能够公开讨论问题。
- 行动事项: 至少应实施一项改进实践。
🔍 质量与技术卓越
软件工程需要高度重视技术质量。急于交付功能往往会带来技术债务,从而拖慢未来开发进度。以下实践有助于保持代码健康。
完成的定义(DoD)
完成的定义是对增量在满足产品所需质量标准时的状态的正式描述。当增量满足完成的定义时,便产生了一次检查的机会。
- 一致性: 如果某项工作是“已完成”的,那么它必须与其他所有项达到相同的标准。
- 测试: 包括单元测试、集成测试和验收标准。
- 文档: 相关文档必须及时更新。
- 审查: 代码审查流程应为强制性要求。
技术债务管理
技术债务是指因选择当前容易(有限)的解决方案,而非采用需要更长时间但更优的方法,从而导致未来需要额外返工的隐性成本。团队必须主动管理这种债务。
- 可见性: 将技术债务项包含在产品待办事项列表中。
- 分配: 每个冲刺都应分配一定比例的容量用于减少技术债务。
- 预防:采用结对编程和持续集成等实践。
持续集成
持续集成是一种开发实践,开发者频繁地将代码集成到共享仓库中,最好每天多次。每次集成都会通过自动化构建和自动化测试来验证。
- 早期发现: 缺陷在引入后立即被发现。
- 降低风险: 集成问题被最小化。
- 速度: 团队可以更快地发布,且更有信心。
🚧 常见陷阱与解决方案
即使怀着最好的意图,团队也常常会遇到障碍。下表列出了常见问题及应对的实际策略。
| 陷阱 | 影响 | 解决方案 |
|---|---|---|
| 范围蔓延 | 导致交付延迟并降低质量。 | 保护冲刺目标;将新事项移至产品待办列表。 |
| 微观管理 | 降低团队自主性和士气。 | Scrum Master介入以维护边界并促进自我组织。 |
| 需求不明确 | 开发过程中出现返工和混乱。 | 投资于待办事项列表的细化和“就绪定义”。 |
| 忽视回顾会议 | 重复同样的错误。 | 将回顾会议作为优先事项;确保行动项得到跟踪。 |
| 过度承诺 | 燃尽和错过截止日期。 | 使用历史速度来规划现实的承诺。 |
| 部分完成 | 隐藏的技术债务和浪费。 | 严格执行完成的定义;部分工作不计入。 |
📊 有效衡量进展
跟踪进展有助于团队了解自身表现并识别改进领域。然而,选择合适的度量指标至关重要,以避免产生错误的激励。
速度
速度衡量团队在一个迭代中能够处理的工作量。它是通过计算迭代中完成的项目的故事点(或其他单位)总和来得出的。
- 趋势: 关注长期的平均值,而不是单个迭代。
- 稳定性: 随着团队找到节奏,速度应趋于稳定。
- 使用: 用于预测,而不是用于团队之间的比较。
燃尽图
燃尽图显示了迭代或项目中剩余的工作量。它帮助团队判断是否按计划完成迭代目标。
- 每日更新: 每日更新图表以反映实际进展。
- 模式: 水平线表示无进展;急剧下降表示快速完成。
- 调整: 如果线条高于目标,应讨论范围缩减或支持需求。
交付周期和循环时间
交付周期衡量从请求提出到交付完成的时间。循环时间衡量从工作实际开始到完成的时间。
- 效率: 更短的循环时间表明流程更高效。
- 流程: 专注于减少项目处于“进行中”状态的时间。
- 反馈: 更快的循环时间能为利益相关者提供更快的反馈。
🌱 培育健康的文化
技术实践只是问题的一半。团队周围的氛围决定了长期的成功。信任、尊重和开放的沟通至关重要。
心理安全
团队成员必须感到安全,敢于冒险并在彼此面前展现脆弱。他们应该能够坦率承认错误,而无需担心遭到报复。
- 开放讨论: 在规划过程中鼓励不同意见。
- 错误承担: 将错误视为学习的机会。
- 支持: 确保团队拥有成功所需的资源。
协作优于层级
软件工程是一项需要多样化专业技能的复杂工作。层级化的决策方式会减缓创新速度。
- 共同目标: 专注于冲刺目标,而非个人任务。
- 配对: 通过配对会议促进知识共享。
- 共同拥有: 代码属于团队,而非个人。
持续学习
技术环境变化迅速。团队必须投入时间学习新的工具、语言和方法。
- 培训: 安排时间用于技能提升。
- 分享: 举办内部技术分享会或便餐交流会。
- 实验: 留出时间进行概念验证工作。
🔄 扩展考量
随着项目规模扩大,单个团队可能不足以交付产品。扩展Scrum需要在多个团队之间保持协调,同时维护核心价值观。
- 共享待办事项列表: 多个团队通常共同处理一个共享的产品待办事项列表。
- 集成: 团队必须频繁地整合工作,以避免集成困境。
- 协调: 尽早识别依赖关系,并主动进行管理。
在扩展规模时,不要忽视客户价值。很容易陷入流程而忽视产品目标。
🔧 日常工作的实用建议
除了正式的仪式之外,还有一些习惯可以改善日常的工作生活。
- 限制在制品数量: 在开始新任务之前,专注于完成现有任务,以减少上下文切换。
- 可视化管理: 使用看板让每个人都能看到工作的状态。
- 时间盒: 遵守会议的时间限制,以尊重每个人的时间。
- 反馈回路: 缩短编写代码与获得反馈之间的时间。
- 环境: 确保开发环境稳定且可访问。
📝 关键要点总结
有效实施Scrum需要纪律和承诺。它不是万能的解决方案,而是一个为复杂工作提供结构的框架。
- 角色: 确保产品负责人、Scrum主管和开发团队都清楚各自的职责。
- 工件: 保持清晰、有序的产品待办事项列表和透明的冲刺待办事项列表。
- 事件: 每次仪式都应有明确的目的和专注。
- 质量: 严格执行完成的定义,以防止技术债务。
- 指标: 使用数据来指导改进,而不是惩罚绩效。
- 文化: 建立信任和心理安全的基础。
通过遵循这些最佳实践,软件工程项目的可持续速度和高质量得以实现。这一过程包含持续的学习和适应。专注于为客户创造价值,其余的一切自然会随之而来。
请记住,框架是一种帮助你更好地工作的工具,而不是一种限制。利用Scrum中的灵活性,根据你的具体情境和需求定制流程。定期反思哪些做法有效,哪些无效,并相应调整。这种持续改进的心态正是Scrum的核心。
从小处着手。专注于把一个冲刺(Sprint)做好。然后在此基础上逐步推进。一致性比完美更重要。随着时间推移,这些习惯和流程将变得自然而然,使团队能够全身心投入当前的工作。












