敏捷开发探索和总结记录
Scrum 注重项目管理实践过程
XP 注重编程开发时的实践过程: 结对编程, TDD, 增量设计, 代码集体所有, 持续集成/部署
总结一个用于实践的 Scrum 工作流程实施细则
在开始前, 需要阅读其他人的实践, 然后汇总形成我们团队自己的流程.
- 硝烟中的 Scrum
- 天天学敏捷: Scrum 团队转型记
- Head First Agile
- 人人都是产品经理
在此基础上, 汇总信息和相关的做法, 原理, 优劣, 然后写团队实施流程细则.
疑问
- 什么是 Scrum Master 认证?
- 什么是敏捷开发?
- 什么是 Scrum?
- 实施时都需要哪些活动?
- 完全不了解 Scrum 和 XP 的时候, 应该从哪里入手?
Scrum 简介
基于 scrum 这个链接中的内容翻译.
Scrum 是一种用于项目(特别是软件项目)管理的敏捷方法. Scrum 通常被认为是一种方法学, 但最好是将其看作是一种项目管理的框架.
什么是 Scrum?
在 Scrum 的世界里, 不需要提前对项目中的所有工作"如何去做"的细节进行完整详细描述, 而是将这个工作留给开发团队在解决问题的过程中.
这也是为什么在 Scrum 过程中, 比如在 sprint plan 制定时, 只需要描述"需要的输出(一系列需要在下一个 sprint 中开发的功能)", 而非一系列入口标准/任务定义/验收标准/退出标准等的原因(这些也是大多数传统方法学必须的).
Scrum 依赖于一个自组织且跨职能的团队.
- 自组织: 没有真正意义的规定团队选择执行哪个任务或规定如何完成任务的团队领导. 这些问题都交由团队共同决定.
- 跨职能: 一个功能从设想到实现的过程中, 都需要团队中每个人的参与.
在敏捷开发过程中, ScrumMaster 和 ProductOwner 为 Scrum 团队提供支持.
- ScrumMaster: 类似团队的教练, 帮助团队成员最大限度地利用 Scrum 流程进行工作.
- ProductOwner: 在 Scrum 开发过程中, 代表客户/用户或商务人员, 引导团队构建"正确"的产品.
Scrum 过程都包含哪些活动?
Scrum 建议将工程开发活动划分为若干个 Sprint 过程. 单个 Sprint 不超过一个月, 通常是两周.
- 在每个 Sprint 开始前: 需要召开计划 会议, 每个团队成员确认在这个 Sprint 中他们可用做多少事情, 而后创建 Sprint backlog(在 Sprint 过程中需要执行的任务的列表).
- 在 Sprint 过程中: 团队选择一部分功能进行实现, 并进行测试. Sprint 结束后, 这部分功能被标记为已实现, 已测试且已集成到现有产品或系统中.
- Sprint 过程中每天: 每个团队成员都需要参加每日的 Scrum 会议, 包括 SM 和 PO. 会议不超过 15 分钟, 会议内容为分享每个成员昨天都做了什么, 在过程中都遇到了什么问题或障碍. Scrum 模型将每日 Scrum 会议时团队成员对 Sprint 工作的讨论过程作为同步团队成员工作任务的一种方式.
- Sprint 过程结束时: 团队会进行 Sprint review 会议(评审会议), 即: 将工作成果向 PO 或任何其他利益相关者展示, 并收集可能会影响下一个 Sprint 中进行的相关反馈. 这种在 Scrum 每个 Sprint 过程结束时的反馈可能包括对新实现功能的改动, 或是形成一些能向 product backlog 中添加的新条目.
- Sprint 结束后: 还需要进行回顾会议, 所有团队成员都应参与, 在会议内讨论本轮 Sprint 的实施情况, 并定位过程中任何可能进行改善的地方.
Scrum 过程的主要产物
当然, 最主要的产物是产品本身. 每轮 Sprint 结束后, 都期望能够将产品或系统转换为可发布状态.
另外一个主要产物是 Product backlog. 它是一个待添加到产品中的剩余功能的列表, PO 负责将其中的内容规定优 先级, 这样团队始终都能优先将最有价值的功能进行实现. Product backlog 中每个条目通常以用户故事的形式呈现, 用户故事指: 将需要的产品功能以用户/客户的视角进行简短描述.
在 Scrum 项目管理中, 在 Sprint 的第一天的计划会议时, 团队成员共同创建该 Sprint 的 backlog, 可以将它看作是本轮 Sprint 的 To Do List. 而 Product backlog 是一个需要构建的功能的列表(以用户故事形式呈现). Sprint 的 backlog 是一个团队需要在 Sprint 过程中实现功能的列表.
另外两个产物是 Sprint 燃尽图和 Release 燃尽图. 燃尽图展示剩余的工作量, 用于确定 Sprint 或 Release 是否仍然处于预定的结束时间范围内.
Scrum 过程中的主要角色
Scrum Master 作为团队的 Scrum 教练, 确保参与 Scrum 的成员都能达到最大的生产效率. 不同于传统项目中的项目经理, 这个角色不会给成员提供每日的工作方向, 也不会将工作分配到具体的人. 一个好的 Scrum Master 能够保护团队成员免受外部干扰, 让成员能专注于 Sprint 的目标.
PO 的主要目标是让团队工作在正确的方向上, PO 提供产品的愿景给团队, 并将愿景通过 Product Backlog 的形式展现. 并将优先级高的故事优先提供给团队实现.
类别成企业号飞船的话, PO 就是船长, SM 就是轮机长, 所有团队成员各司其职, 将这艘大船驶向远方.