El Psy Congroo

敏捷开发与Scrum学习笔记

Agile

敏捷开发就是在一个高度协作的环境中,不断地使用反馈进行自我调整和完善。

Differences Between Scrum and XP

  • Scrum迭代周期更长,一个sprint通常2周到4周,XP只有1到2周
  • Scrum sprint开始后不允许变更backlog items,XP允许将未开始的任务变更为相同工作量的新任务
  • Scrum PO决定任务优先级,团队成员决定完成顺序,XP全部由PO决定
  • Scrum不强制引入敏捷工程实践,如TDD,结对,重构等,XP反之。Scrum希望由团队自己来发现这些工程实践的价值并进行应用。

Start with Scrum and then invent your own version of XP

ScrumMaster

引导并支持团队成员实施Scrum,促进协作,清除障碍,最大化团队产出。
ScrumMaster仅对流程有控制权,对团队成员没有管辖权。

以促进式和服务式的领导模式,为团队提供指导而非答案

Product Owner

为团队指出目标及边界

PM/客户同团队之间的桥梁,传达产品愿景并落实到Backlog中进行管理,负责解答团队中的业务疑问,并对业务解决方案进行决策

团队

The best architectures, requirements, and designs emerge from self-organizing teams.

团队结构

  • 小团队(9人以下)优于大团队
  • 特性团队优于组件团队
  • 把正确的人放入团队
  • 避免多任务

团队协作

  • 团队承诺,不预分配任务到个人
  • 循序渐进的完成工作,避免瀑布式的交接,不要等sprint快结束时才完成所有任务
  • 一个sprint中承诺不同粒度的backlog
  • 建立学习型团队,分享,激励,容错

Backlog

  • 讨论代替文档,文档记录讨论内容,而非作为交接物,由受益方写文档
  • 在backlog中使用user story,使用固定格式,并写在纸上(保证足够短小)
  • user story point: focus on complexity,not time(man-day)
  • 接纳涌现的需求
  • 冰山型的backlog,并持续梳理(占用10% sprint时间)
  • Detailed Appropriately, Estimated, Emergent, Prioritized
  • 定义完成

Sprint

  • 每个sprint递交可工作(潜在可交付)并且有价值的软件
  • 对user story有必要(非完整)理解,认为可完成时,才能放入下一个sprint(占用10% sprint时间)
  • 使用增量方式处理架构问题,每个sprint中发现架构风险,引入架构决策。尽量保持最小架构,过多的细节会使方案一致性难以维持,同时令架构难以调整
  • 严格保持sprint长度一致,绝不要因为工作未完成延长sprint
  • sprint中不要轻易改变团队目标,若有需要则终止当前sprint
  • 反馈-学习-适应

计划

  • 计划是逐步完善的,参考冰山型的backlog
  • 按可持续步调工作,不要用加班赶计划不要用加班赶计划不要用加班赶计划
  • 范围-质量-进度-资源,只有进度和范围可以牺牲
    • 无论何时,团队都要保证系统内部质量
  • 分清估算和承诺,用数据来估算,用历史估算作为承诺的基础