技术开发 频道

Scrum 实现自组织团队的弹性开发

Bakcklog

    环境(源自:Sprint)

  你与一个软件项目或者其他任何项目相关,项目在本质上是不甚清晰的,需要知道下一步该做些什么。

    问题

    用来组织下一步以及在项目任一阶段该完成的工作的非常好的方法是什么?

    作用力

    传统的规划方法,比如计划评价与审查技术(PERT)和甘特图(Gantt),都假设事先已经知道所有的任务、它们之间所有的依赖关系、所有的任务持续时间以及所有可用的资源。假如项目中包含任何学习、发现、创造或者适应性改变,那么这些假设就是错误的。

    解决方案

    使用Backlog组织Scrum团队的工作。

    Backlog是一个具有优先级的清单。优先级最高的Backlog项目将首先投入工作,优先级最低的Backlog项目将最后投入工作。产品中没有什么特征、增加或者增强值得争论。

    Backlog是实现产品需要执行的工作。完成这些工作就会将其从当前的情形转化为产品的愿景。在Scrum中,Backlog随产品和环境的变化而发展变化。Backlog是动态的,进行动态管理,以确保完成的Backlog使产品具有竞争力成为可能。

    Backlog清单有很多来源:产品营销部门加入实现他们对于产品愿景的工作;销售部门加入在已有的基础上增加新的销售额或者扩展有效性的工作;技术部门加入确保产品使用最具创新性和生产力的技术工作;开发部门加入增强产品功能的工作;客户支持部门加入纠正潜藏的产品缺陷的工作。

    只能有一个人确定工作的优先级,这个人负责满足产品的愿景目标。其头衔通常是产品经理(目前在Scrum中正式定义为Product Owner)或者市场营销经理。如果任何人想改变工作的优先级,他们不得不说服这个人去改变优先级。优先级高的Backlog具有最清晰的说明,其优先级的确定同样也要考虑依赖关系。

    当有Scrum团队可用(新成立或者刚刚完成一个Sprint)的时候,这个团队与产品经理见面。集中注意力在最高优先级的Backlog上,团队选择一个自己认为能够在一个Sprint迭代(30天或更短)内完成的Backlog。(目前在Scrum中将此定义为Selected product backlog。)这样,Scrum团队可能通过选择一个相互支持的Backlog,也就是能够立刻开始而不需要等待的Backlog,从而改变这个Backlog的优先级。

    团队选择一组内聚的、高优先级Backlog项目,它们一旦完成,就将达到一个目标或者一个里程碑,这正是Sprint的标所陈述的。在Sprint期间,团队可以有不同工作的自由,只要这个目标达到即可。

    现在,团队将选择的Backlog分解成任务(目前在Scrum中将此定义为Spint backlog)。这些任务是工作的离散部分,由各个团队成员签约完成。执行任务完成Backlog,以便达到Sprint的目标。在Scrum中任务是由团队成员领取的,责任只能接受而非指派,这充分体现Scrum的重要特征——自组织团队。

    应用结果

  动态地确定项目工作和其优先级,根据:


  • 客户的要求

  • 团队所能做的

0
相关文章