1. 敏捷开发 vs Scrum#

敏捷开发是一种 软件开发理念,强调:

  • 开发周期短,频繁交付小版本。
  • 需求可以随时调整,而不是一开始就确定所有需求
  • 强调团队沟通,减少文档负担

敏捷开发的理念来自 《敏捷宣言(Agile Manifesto)》:

  1. 个体和互动 > 过程和工具
  2. 可工作的软件 > 详尽的文档
  3. 客户合作 > 合同谈判
  4. 响应变化 > 遵循计划
对比项 敏捷开发(Agile) Scrum(Scrum 只是 Agile 的一种)
概念 一种理念/开发方法论 一种具体的敏捷开发框架
灵活性 可以灵活选择方法 需要遵循固定规则(角色、事件、Sprint)
开发周期 持续迭代 Sprint(一般 1-4 周)
任务管理 任何任务管理方式 通过 Product Backlog、Sprint Backlog
团队结构 没有固定角色 必须有 Scrum Master、Product Owner、开发团队

2. Scrum 实际例子 小型Web应用开发团队#

2.1. 团队组成#

假设有一个小团队正在开发一个在线电商网站,团队成员包括产品负责人(Product Owner/PO)、Scrum Master、开发、测试和设计人员。

2.2. 产品 Backlog#

产品负责人(PO) 根据市场调研、用户反馈和竞争对手分析,将用户需求转化为用户故事,记录在产品 Backlog 中。比如:

  • 用户故事1:作为一个顾客,我希望在网站上能够搜索商品,以便快速找到我需要的产品
  • 用户故事2:作为一个顾客,我希望能够在购物车中添加和删除商品,以便管理我的购物清单。
  • 用户故事3:作为一个管理员,我希望能够管理商品库存,以便保证网站商品信息的准确性

这些用户故事通常会包括详细的描述、验收标准以及大致的业务价值和优先级。产品 Backlog 不仅包含新功能,还可能包含优化现有功能、技术债务和缺陷修复等工作项。

2.3. Sprint Backlog#

当团队准备进入一个两周的 Sprint 时,他们会召开 Sprint 规划会议。会议流程可能如下:

  1. 选择任务:产品负责人和开发团队一起从产品 Backlog 中挑选出优先级最高且在两周内能够完成的用户故事,比如选择了“用户故事1”和“用户故事2”
  2. 拆分任务:对于“用户故事1”,团队将其拆分为具体任务,例如:
    • 任务1:设计搜索框界面
    • 任务2:实现前端搜索逻辑
    • 任务3:后端实现搜索接口
    • 任务4:整合测试并修复可能的缺陷
  3. 任务分配与估算:虽然 Scrum 鼓励团队自组织,任务分配通常是通过讨论达成共识。例如,开发A负责任务2和任务3,开发B负责任务4,而设计师则负责任务1。每个任务还会进行时间或复杂度估算,帮助团队了解工作量
  4. 更新 Sprint Backlog:这些拆分后的任务就构成了 Sprint Backlog。团队在 Sprint 执行过程中,会在看板或任务管理工具上更新每个任务的状态(例如“待处理”、“进行中”、“已完成”)

2.4. 持续管理与反馈#

  • 动态调整:在 Sprint 过程中,如果发现某个任务比预期耗时多,团队会讨论如何调整后续任务;如果某个任务提前完成,团队成员可以从产品 Backlog 中获取额外的小任务,保持持续高效的工作状态
  • 每日站会:每天站会中,团队成员会报告自己当前 Sprint Backlog 中任务的进展、遇到的障碍以及下一步计划,确保大家对整个 Sprint 的进展有清晰认识

3. 项目经理 产品经理#

3.1. 产品经理(Product Manager, PM)#

主要职责:研究市场和用户需求

  • 负责确定这个健身 App 应该有哪些核心功能(比如步数记录、饮食管理、训练计划等)
  • 研究市场,分析竞争对手的 App,看看别人都做了什么
  • 与用户沟通,了解用户需求,比如有些用户可能希望有一个“教练指导”功能,而有些用户想要个性化饮食建议
  • 向公司高层汇报产品方向,确保产品符合公司业务目标(比如希望通过这个 App 吸引更多用户订阅高级功能)

PM 的日常工作例子:

  • 与甲方沟通: 讨论他们的需求、期望的功能,以及目标用户是谁
  • 与开发团队沟通:告诉团队最优先要做的是“智能饮食推荐”,并解释为什么这个功能很重要。
  • 与设计师合作:讨论 App 界面应该怎么设计,才能让用户觉得好用。
  • 向公司老板汇报:说明为什么这个 App 有市场机会,争取更多资源。

3.2. 项目经理(Project Manager, PM)#

主要职责

  • 确保产品开发过程顺利进行,确保开发团队按时完成任务
  • 制定项目计划,比如这个 App 需要 3 个月开发完,前 1 个月做后端架构,接下来 2 个月开发前端功能
  • 协调团队资源,确保开发人员、测试人员、UI 设计师都能顺利完成工作
  • 监控项目进度,发现某个功能开发遇到困难时,及时协调解决问题(比如服务器崩了,联系运维团队修复)

项目经理的日常工作例子

  • 制定开发时间表:确定 1 月份完成步数记录功能,2 月份完成饮食管理功能,3 月份上线测试。
  • 处理紧急情况:本来计划 3 月 1 号上线,但因为 App 存在严重 Bug,项目经理决定推迟一周发布。