Skip to content

6.1 敏捷开发与 Scrum

引言

在软件行业,"敏捷"(Agile)已经成为最主流的开发方式。作为产品经理,你几乎不可能绕开敏捷开发。无论你加入大厂还是创业公司,团队大概率在使用 Scrum 或 Kanban。理解敏捷不仅是面试加分项,更是日常工作的生存技能


一、瀑布模型 vs 敏捷开发

1.1 什么是瀑布模型?

瀑布模型(Waterfall Model)是最早的软件开发方法,像瀑布一样从上往下、一步一步推进:

  瀑布模型流程图

  ┌──────────┐
  │ 需求分析  │
  └────┬─────┘


  ┌──────────┐
  │ 系统设计  │
  └────┬─────┘


  ┌──────────┐
  │ 详细设计  │
  └────┬─────┘


  ┌──────────┐
  │ 编码实现  │
  └────┬─────┘


  ┌──────────┐
  │ 系统测试  │
  └────┬─────┘


  ┌──────────┐
  │ 部署上线  │
  └────┬─────┘


  ┌──────────┐
  │ 运维维护  │
  └──────────┘

  特点:每个阶段完成后才进入下一阶段
        前期需要非常完整的需求文档
        一旦进入开发,需求变更成本极高

1.2 什么是敏捷开发?

敏捷开发是一种迭代式、增量式的开发方法,将大项目拆分成多个小迭代,每个迭代都交付可用的产品增量:

  敏捷开发流程图

  ┌─────────────────────────────────────────────────────┐
  │                                                     │
  │   迭代1          迭代2          迭代3          ...   │
  │  ┌──────┐      ┌──────┐      ┌──────┐             │
  │  │计划   │      │计划   │      │计划   │             │
  │  │设计   │ ──►  │设计   │ ──►  │设计   │ ──► ...    │
  │  │开发   │      │开发   │      │开发   │             │
  │  │测试   │      │测试   │      │测试   │             │
  │  │发布   │      │发布   │      │发布   │             │
  │  └──────┘      └──────┘      └──────┘             │
  │     │              │              │                 │
  │     ▼              ▼              ▼                 │
  │  可用产品v1     可用产品v2     可用产品v3             │
  │                                                     │
  │  每个迭代都交付可工作的软件,持续获取用户反馈          │
  └─────────────────────────────────────────────────────┘

1.3 瀑布模型 vs 敏捷开发 对比

维度瀑布模型敏捷开发
开发方式线性、顺序执行迭代、增量交付
需求定义项目初期一次性确定持续演进、允许变化
交付周期数月甚至数年1-4 周一个迭代
用户反馈项目末期才能获得每个迭代都收集
文档要求详尽的前期文档够用就好,重视沟通
变更成本越晚变更成本越高拥抱变化,成本可控
风险管理风险后期才暴露风险尽早暴露和处理
团队协作各阶段团队分离跨职能团队紧密协作
适用场景需求明确、变化少的项目需求不确定、需要快速验证
典型行业航天、建筑、医疗器械互联网、移动应用、SaaS

PM 要点:在互联网行业,你遇到的几乎都是敏捷开发。但瀑布思维不是完全没用的——在一些大型项目的前期规划阶段,瀑布式的系统思考仍然有价值。


二、敏捷宣言的四大核心价值观

2001 年,17 位软件开发者在美国犹他州签署了《敏捷软件开发宣言》(Agile Manifesto),提出了四大核心价值观:

  ┌─────────────────────────────────────────────────────┐
  │                                                     │
  │              敏捷宣言四大价值观                       │
  │                                                     │
  │   个体和互动      >      流程和工具                   │
  │                                                     │
  │   可工作的软件    >      详尽的文档                   │
  │                                                     │
  │   客户合作        >      合同谈判                     │
  │                                                     │
  │   响应变化        >      遵循计划                     │
  │                                                     │
  │   ───────────────────────────────────                │
  │   也就是说,虽然右边的也有价值,                       │
  │   但我们更重视左边的。                                │
  │                                                     │
  └─────────────────────────────────────────────────────┘

逐条解读

价值观含义PM 实践
个体和互动 > 流程和工具人是最重要的,面对面沟通胜过工具传话遇到问题先找人聊,而不是发邮件等回复
可工作的软件 > 详尽的文档能跑的产品比100页文档更有说服力PRD 够用就好,快速出原型验证
客户合作 > 合同谈判与客户/用户建立持续合作关系和用户保持沟通,而非甲方乙方对立
响应变化 > 遵循计划需求一定会变,计划也要灵活调整不要死守最初的方案,根据反馈及时调整

三、Scrum 框架详解

Scrum 是敏捷开发中最流行的框架,名字来源于橄榄球中的"争球",强调团队紧密协作。

3.1 三大角色

  ┌─────────────────────────────────────────────────┐
  │              Scrum 三大角色                       │
  │                                                 │
  │  ┌─────────────┐  ┌──────────────┐  ┌────────┐ │
  │  │   Product    │  │    Scrum     │  │  Dev   │ │
  │  │   Owner      │  │    Master    │  │  Team  │ │
  │  │  (产品负责人) │  │  (敏捷教练)  │  │(开发团队)│ │
  │  └──────┬──────┘  └──────┬───────┘  └───┬────┘ │
  │         │                │               │      │
  │    决定做什么        保障流程顺畅      执行开发   │
  │    管理 Backlog      移除障碍         自组织      │
  │    定义优先级        引导团队         跨职能      │
  │    代表用户利益      守护 Scrum 规则   对质量负责  │
  │                                                 │
  └─────────────────────────────────────────────────┘

Product Owner(PO / 产品负责人)

  • 核心职责:定义产品方向,管理 Product Backlog
  • 在国内:通常就是产品经理承担这个角色
  • 关键能力:优先级判断、业务理解、用户代言

Scrum Master(SM / 敏捷教练)

  • 核心职责:确保团队遵循 Scrum 流程,移除障碍
  • 注意:SM 不是"项目经理",也不是"老板",而是"服务型领导"
  • 关键能力:引导、教练、冲突调解

Development Team(开发团队)

  • 核心特点:跨职能、自组织
  • 规模建议:3-9 人(太小没有足够技能覆盖,太大沟通成本太高)
  • 包含角色:前端、后端、测试、设计师等

3.2 五大事件

事件时间参与者目标
Sprint1-4 周(固定)全员一个完整的开发迭代周期
Sprint Planning2-8 小时PO + SM + Dev规划本次 Sprint 要做的内容
Daily Standup每天 15 分钟SM + Dev(PO 可选)同步进度、暴露问题
Sprint Review1-4 小时全员 + 利益相关者演示成果,收集反馈
Sprint Retro1-3 小时PO + SM + Dev回顾改进,持续优化流程

Sprint Planning(冲刺规划会)

  Sprint Planning 流程

  ┌──────────┐     ┌──────────────┐     ┌──────────────┐
  │  PO 讲解  │ ──► │  团队讨论     │ ──► │  确定 Sprint  │
  │  优先级   │     │  拆分任务     │     │  Backlog     │
  │  最高的   │     │  评估工作量   │     │  制定目标     │
  │  需求     │     │              │     │              │
  └──────────┘     └──────────────┘     └──────────────┘

  输入:Product Backlog(已排序)
  输出:Sprint Backlog + Sprint Goal

PM 实操要点

  • 提前准备好需求,确保 Backlog 排好优先级
  • 需求描述清晰,减少规划会上的扯皮时间
  • 不要承诺过多,留 20% 的 buffer 应对意外

Daily Standup(每日站会)

每人回答三个问题:

  1. 昨天做了什么?
  2. 今天计划做什么?
  3. 遇到了什么障碍?
  ┌─────────── Daily Standup ─────────────┐
  │                                       │
  │  时间:每天固定时间,15分钟以内        │
  │  形式:站着开(防止拖延)              │
  │                                       │
  │  ┌────────┐  ┌────────┐  ┌────────┐  │
  │  │ 昨天   │  │ 今天   │  │ 障碍   │  │
  │  │ 完成了 │  │ 计划做 │  │ 需要   │  │
  │  │ 什么? │  │ 什么? │  │ 帮助? │  │
  │  └────────┘  └────────┘  └────────┘  │
  │                                       │
  │  注意:不是汇报会!是同步信息会!      │
  │  详细讨论请会后单独沟通               │
  └───────────────────────────────────────┘

PM 实操要点

  • 站会不是汇报会,不要让它变成逐个质问进度
  • 关注"障碍"栏,这是你需要帮忙解决的
  • 如果某个话题讨论超过 2 分钟,记下来会后单聊

Sprint Review(冲刺评审会)

  • 团队演示本次 Sprint 完成的功能
  • 利益相关者(老板、运营等)参与并给反馈
  • 基于反馈调整后续 Backlog 优先级

Sprint Retrospective(冲刺回顾会)

经典问法:

  • 做得好的(继续保持)
  • 做得不好的(需要改进)
  • 下次要尝试的(行动计划)
  Sprint Retro 看板

  ┌──────────────┬──────────────┬──────────────┐
  │   做得好 :)   │  做得不好 :(  │  改进行动     │
  ├──────────────┼──────────────┼──────────────┤
  │ 沟通比上次   │ 需求变更太   │ 需求冻结时间  │
  │ 更顺畅       │ 频繁         │ 提前到周三    │
  │              │              │              │
  │ 提测质量     │ 站会经常     │ 站会设闹钟    │
  │ 有提升       │ 超时         │ 严格15分钟    │
  │              │              │              │
  │ 文档更规范   │ 上线前才     │ 建立 Code     │
  │              │ 发现 Bug     │ Review 机制   │
  └──────────────┴──────────────┴──────────────┘

3.3 三大工件

  三大工件的关系

  ┌────────────────────────────────────────────┐
  │  Product Backlog(产品待办列表)             │
  │  ┌──────────────────────────────────────┐  │
  │  │  需求A (优先级: 高)                   │  │
  │  │  需求B (优先级: 高)  ──┐              │  │
  │  │  需求C (优先级: 中)  ──┤  被选入本次   │  │
  │  │  需求D (优先级: 中)  ──┘  Sprint      │  │
  │  │  需求E (优先级: 低)                   │  │
  │  │  需求F (优先级: 低)                   │  │
  │  │  ...                                 │  │
  │  └──────────────────────────────────────┘  │
  │                    │                        │
  │                    ▼                        │
  │  Sprint Backlog(冲刺待办列表)              │
  │  ┌──────────────────────────────────────┐  │
  │  │  需求B → 任务1, 任务2, 任务3          │  │
  │  │  需求C → 任务4, 任务5                 │  │
  │  │  需求D → 任务6, 任务7, 任务8          │  │
  │  └──────────────────────────────────────┘  │
  │                    │                        │
  │                    ▼                        │
  │  Increment(增量 / 可交付产品)              │
  │  ┌──────────────────────────────────────┐  │
  │  │  满足 "完成定义(DoD)" 的可工作软件     │  │
  │  │  可以上线或演示给用户                  │  │
  │  └──────────────────────────────────────┘  │
  └────────────────────────────────────────────┘
  • Product Backlog:产品所有待做事项的有序列表,由 PO 负责维护
  • Sprint Backlog:本次 Sprint 要完成的子集 + 具体任务拆分
  • Increment:Sprint 结束时交付的可工作软件增量

3.4 Scrum 完整流程图

  ┌──────────────── Scrum 完整流程 ────────────────────────┐
  │                                                        │
  │  Product     Sprint        Sprint 进行中                │
  │  Backlog     Planning      (1-4 周)                    │
  │                                                        │
  │  ┌──────┐   ┌──────┐   ┌──────────────────────┐       │
  │  │需求列│   │      │   │                      │       │
  │  │表    │──►│规划会│──►│   每日站会 (15min)    │       │
  │  │(PO   │   │      │   │                      │       │
  │  │维护) │   └──────┘   │  Day1  Day2  Day3 .. │       │
  │  │      │       │      │   │     │     │       │       │
  │  │      │       │      │   ▼     ▼     ▼       │       │
  │  │      │       ▼      │  开发 + 测试 + 集成   │       │
  │  │      │   Sprint     │                      │       │
  │  │      │   Backlog     └──────────┬───────────┘       │
  │  │      │                          │                    │
  │  │      │                          ▼                    │
  │  │      │                    ┌───────────┐              │
  │  │      │                    │  Sprint   │              │
  │  │      │◄───── 反馈 ───────│  Review   │              │
  │  │      │                    │  评审会   │              │
  │  └──────┘                    └─────┬─────┘              │
  │                                    │                    │
  │                              ┌─────▼─────┐             │
  │    ┌────────────┐            │  Sprint   │             │
  │    │ 可交付的   │◄───────────│  Retro    │             │
  │    │ 产品增量   │            │  回顾会   │             │
  │    │(Increment) │            └───────────┘             │
  │    └────────────┘                                      │
  │                                                        │
  └────────────────────────────────────────────────────────┘

四、Sprint 的时间管理

4.1 Sprint 时长选择

Sprint 时长适用场景优缺点
1 周需求变化极快、初创团队节奏快,但规划会频繁,overhead 大
2 周最常见,大多数互联网团队平衡了灵活性和效率,推荐新手选用
3 周较复杂的产品线有足够时间完成较大特性
4 周企业级软件、变化较少接近小型瀑布,灵活性较差

建议:如果你是新手 PM,推荐从 2 周一个 Sprint 开始。

4.2 Sprint 日历示例(2 周)

  Week 1                        Week 2
  Mon  Tue  Wed  Thu  Fri       Mon  Tue  Wed  Thu  Fri
  ┌────┬────┬────┬────┬────┐   ┌────┬────┬────┬────┬────┐
  │规划│开发│开发│开发│开发│   │开发│开发│测试│评审│回顾│
  │会  │    │    │    │    │   │    │    │修复│会  │会  │
  └────┴────┴────┴────┴────┘   └────┴────┴────┴────┴────┘
   ▲                                              ▲
   │                                              │
   Sprint 开始                              Sprint 结束
   
   每天 15 分钟站会贯穿始终

五、用户故事(User Story)

5.1 什么是用户故事?

用户故事是敏捷开发中描述需求的标准格式,它从用户角度出发,描述用户想要什么、为什么想要。

5.2 标准格式

  ┌─────────────────────────────────────────────┐
  │                                             │
  │   As a    [角色/用户类型],                    │
  │   I want  [功能/行为],                       │
  │   So that [价值/目的].                       │
  │                                             │
  │   作为一个 [角色],                            │
  │   我想要   [功能],                            │
  │   以便     [价值]。                           │
  │                                             │
  └─────────────────────────────────────────────┘

5.3 用户故事示例

用户故事角色功能价值
作为一个普通用户,我想要通过手机号注册账号,以便我能使用平台的功能普通用户手机号注册使用平台功能
作为一个卖家,我想要查看商品的销售数据,以便我能优化运营策略卖家查看销售数据优化运营
作为一个管理员,我想要批量导出用户数据,以便我能进行数据分析管理员批量导出数据分析

5.4 好的用户故事标准(INVEST 原则)

原则英文含义
IIndependent故事之间尽量独立
NNegotiable可以协商细节
VValuable对用户有价值
EEstimable可以估算工作量
SSmall足够小,一个 Sprint 能完成
TTestable有明确的验收标准

5.5 验收标准(Acceptance Criteria)

每个用户故事都应该有验收标准,例如:

  用户故事:作为一个用户,我想要通过手机号注册

  验收标准(AC):
  ┌──────────────────────────────────────────────┐
  │ AC1: 输入11位有效手机号,点击获取验证码       │
  │      -> 60秒内收到6位数字验证码               │
  │                                              │
  │ AC2: 输入正确验证码,点击注册                 │
  │      -> 注册成功,自动登录进入首页             │
  │                                              │
  │ AC3: 输入已注册手机号                         │
  │      -> 提示"该手机号已注册,请直接登录"       │
  │                                              │
  │ AC4: 验证码输错3次                            │
  │      -> 锁定5分钟,提示"操作过于频繁"         │
  └──────────────────────────────────────────────┘

六、故事点估算

6.1 什么是故事点?

故事点(Story Point)是一种相对估算方法,不是按"小时"或"天"来估算工作量,而是用一个相对数字来表示任务的复杂度、工作量和不确定性。

6.2 斐波那契数列

常用的故事点取值来自斐波那契数列:

  1,  2,  3,  5,  8,  13,  21,  ...

  ┌───┬───┬───┬───┬───┬────┬────┐
  │ 1 │ 2 │ 3 │ 5 │ 8 │ 13 │ 21 │
  ├───┼───┼───┼───┼───┼────┼────┤
  │极 │小 │中 │中 │大 │很  │巨  │
  │小 │   │小 │等 │   │大  │大  │
  └───┴───┴───┴───┴───┴────┴────┘
   │                          │
   简单的文案修改       需要拆分成更小的故事

6.3 估算示例

用户故事故事点理由
修改按钮颜色1纯前端改动,几行代码
添加用户头像上传5前后端联调,需要图片处理
实现第三方登录(微信+支付宝)13涉及多个第三方 API,联调复杂
搭建完整的支付系统21+太大了!需要拆分成多个故事

6.4 Planning Poker(计划扑克)

Planning Poker 是最常用的估算方式:

  ┌───────────── Planning Poker 流程 ─────────────┐
  │                                                │
  │  1. PO 讲解用户故事                             │
  │  2. 团队提问、讨论                              │
  │  3. 每人同时亮出估算卡片                        │
  │  4. 如果数字差异大 -> 讨论 -> 重新投票           │
  │  5. 达成一致 -> 记录故事点                      │
  │                                                │
  │  示例:                                         │
  │  ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐               │
  │  │ 3 │ │ 5 │ │ 5 │ │ 8 │ │ 5 │               │
  │  └───┘ └───┘ └───┘ └───┘ └───┘               │
  │  小明   小红   小刚   小李   小王               │
  │                                                │
  │  小李估8,其他人估3-5 -> 请小李说明理由          │
  │  可能是小李发现了其他人忽略的技术风险            │
  └────────────────────────────────────────────────┘

七、看板(Kanban)

7.1 什么是看板?

看板(Kanban)源于丰田生产系统,核心思想是可视化工作流程限制在制品数量(WIP Limit)。

7.2 基础看板

  ┌──────────────────────────────────────────────────────────────┐
  │                        看  板  (Kanban)                      │
  ├──────────────┬──────────────┬──────────────┬────────────────┤
  │   Backlog    │    To Do     │ In Progress  │     Done       │
  │   (待办池)    │  (本期待做)   │   (进行中)    │    (已完成)    │
  │              │              │  WIP Limit:3 │                │
  ├──────────────┼──────────────┼──────────────┼────────────────┤
  │              │              │              │                │
  │ ┌──────────┐│ ┌──────────┐ │ ┌──────────┐ │ ┌──────────┐  │
  │ │ 需求G    ││ │ 需求E    │ │ │ 需求B    │ │ │ 需求A    │  │
  │ │ (5 pts)  ││ │ (3 pts)  │ │ │ [小明]   │ │ │ [已上线] │  │
  │ └──────────┘│ └──────────┘ │ └──────────┘ │ └──────────┘  │
  │              │              │              │                │
  │ ┌──────────┐│ ┌──────────┐ │ ┌──────────┐ │ ┌──────────┐  │
  │ │ 需求H    ││ │ 需求F    │ │ │ 需求C    │ │ │ ...      │  │
  │ │ (8 pts)  ││ │ (5 pts)  │ │ │ [小红]   │ │ │          │  │
  │ └──────────┘│ └──────────┘ │ └──────────┘ │ └──────────┘  │
  │              │              │              │                │
  │ ┌──────────┐│              │ ┌──────────┐ │                │
  │ │ 需求I    ││              │ │ 需求D    │ │                │
  │ │ (3 pts)  ││              │ │ [小刚]   │ │                │
  │ └──────────┘│              │ └──────────┘ │                │
  │              │              │              │                │
  └──────────────┴──────────────┴──────────────┴────────────────┘

  WIP Limit = 3:进行中的任务不超过3个,避免多任务并行导致效率低下

7.3 进阶看板(增加更多列)

  ┌─────────┬─────────┬──────────┬──────────┬─────────┬────────┐
  │ Backlog │ To Do   │ Dev      │ Testing  │ Review  │ Done   │
  │ 待办    │ 待开发  │ 开发中    │ 测试中   │ 评审中   │ 已完成 │
  ├─────────┼─────────┼──────────┼──────────┼─────────┼────────┤
  │ ...     │ ...     │ ...      │ ...      │ ...     │ ...    │
  └─────────┴─────────┴──────────┴──────────┴─────────┴────────┘

八、Scrum vs Kanban 对比

维度ScrumKanban
迭代周期固定周期(Sprint)无固定周期,持续流动
角色PO / SM / Dev Team无规定角色
计划Sprint Planning 提前规划按需拉取,无需提前规划
变更Sprint 内尽量不变更随时可以调整优先级
度量速率(Velocity)前置时间(Lead Time)
会议有固定的5个事件无固定会议要求
适用场景需求相对可预测的产品开发需求频繁变化的运维/支持
学习曲线较高,规则较多较低,容易上手
WIP 限制通过 Sprint 容量间接限制显式限制在制品数量

如何选择?

  ┌─────────────────────────────────────────────┐
  │             选择 Scrum 还是 Kanban?          │
  │                                             │
  │  需求是否可预测?                             │
  │       │                                     │
  │    ┌──┴──┐                                  │
  │    ▼     ▼                                  │
  │   是     否                                 │
  │    │      │                                 │
  │    │   团队是否经常处理紧急任务?              │
  │    │      │                                 │
  │    │   ┌──┴──┐                              │
  │    │   ▼     ▼                              │
  │    │  是     否                              │
  │    │   │      │                             │
  │    ▼   ▼      ▼                             │
  │ Scrum Kanban  可以先试 Scrum                 │
  │               不适应再转 Kanban               │
  └─────────────────────────────────────────────┘

实际中:很多团队会把 Scrum 和 Kanban 结合起来使用(称为 Scrumban),取两者之长。比如保持 Sprint 的节奏,但在看板上可视化工作流。


本节小结

知识点关键要记住的
瀑布 vs 敏捷互联网行业几乎都用敏捷
敏捷宣言四大价值观:个体互动、可工作软件、客户合作、响应变化
Scrum 角色PO(产品负责人)、SM(敏捷教练)、Dev Team(开发团队)
Scrum 事件5 个事件保证团队节奏
Scrum 工件Product Backlog → Sprint Backlog → Increment
用户故事As a..., I want..., So that...
故事点斐波那契数列,相对估算
看板可视化工作流 + WIP 限制
Scrum vs Kanban按团队特点选择,也可以结合使用

上一节: 模块概览 | 下一节: 协作工具