规模化敏捷需求协作
在敏捷开发中,我们用Product Backlog来承载需求的集合,里面包括需求的优先级以及排序等。进入迭代后用Sprint Backlog来表示迭代内的需求和任务。单个需求用User Story卡片来沟通。高效需求协作在团队规模较小时比较容易开展,但如果团队上了规模,多团队间怎么有效的进行需求沟通,怎么在多团队间进行高效的需求协作呢?以下分三种规模的敏捷团队进行探讨。 1.单团队敏捷 在单团队敏捷中,采用典型的端到端交付敏捷特性团队,整个团队可以完成从需求到产品开发上线等一系列事情。从需求协作的角度来说,一般会经历3个重要的会议: 1.Product Backlog Refinement工作坊 2.Sprint Planning 1 会议 3.Sprint Planning 2 会议 Product Backlog Refinement(PBR)工作坊,主要用于业务方,PO,用户,和团队一起了解下阶段业务目标,分析产品功能以支持业务目标,并对User Story进行拆分,组合,初步估算,同时对Product Backlog进行优先级排序 Sprint Planning 1 会议,PO和团队设定迭代目标,确定迭代内能完成多少User Story卡片,对卡片模糊部分进行再次澄清,对卡片进行再次估算和调整 Sprint Planning 2 会议,团队创建Sprint Backlog,并对迭代内要做的User Story卡片进行任务拆分,估算任务时间,同时领取任务(有些团队采用将Sprint Planning 1&2会议合并为一个会议) 会议发生时间线如图: 可以看出PBR会议在整个迭代期间多次进行,主要集中在迭代后期举行比较多,Sprint Planning会议一般集中在迭代第一天进行,但也有将Sprint Planning 1 会议在前一个迭代末进行,Sprint Planning 2在新迭代开始进行,这就是迭代内敏捷需求协作开展的活动。 2.多团队敏捷 随着市场增长,对产品功能需求增多,产品特性上线时间要求更急迫,单个团队无法满足市场对软件推出速度的期望,这时就需要建立多个敏捷团队并行迭代开发。而且多个团队之间的需求可能具有依赖关系,这时需求协作就比单个敏捷团队复杂一些。敏捷团队结构可以有多种变化。针对PO角色来说一般有3种团队结构。 最常见的一种是多个团队之间有主PO(CPO),每个团队内部有各自的团队PO(TPO)。 第一种PO组织方式-CPO和Team PO 在这种团队结构中,CPO负责整体Product Backlog的梳理,TPO负责迭代内需求的卡片的细化,为团队澄清需求,以及团队间依赖需求的协作沟通 第二种是多团队之间有主PO(CPO),团队内部不再安排团队PO(TPO)。 第二种PO组织方式-CPO 这种结构要求团队和CPO紧密协作,CPO负责整体Product Backlog的安排,同时团队经常参与Product Backlog Refinement和CPO一起进行Product Backlog的梳理。团队也需要经常和业务方进行沟通,了解产品业务目标,以及设计怎样的产品方案以满足业务目标。在这种组织结构下团队对产品方案有更多的设计决策权。 第三种是无主PO,团队里面有团队PO。 第三种PO组织方式-只有团队PO 这种方式并不推荐,但经常出现在采用敏捷的组织结构中,这个组织结构很容易造成团队各自为政,每个TPO只考虑自己团队的需求,需求依赖的团队间需求协作效率降低。容易出现A团队由于依赖B团队的一个需求,而产生等待现象。 不管是哪种团队结构,有个原则是一个产品只建立一个Product Backlog,而不管内部有多少个敏捷特性团队。这里容易出现的敏捷反模式是每个团队都有一个Product Backlog.试想一下针对一个产品每个团队都有自己的PB,就会出现每个团队只关心团队内的PBI,失去对产品全景的理解,同时对PBI的排序只会针对本团队需求进行局部排序优化,缺乏对整个产品需求优先级进行调整的灵活性。而第三种PO结构最容易出现每个团队一个PB,没有一个统一的PB,团队间为了对齐需求花费大量沟通协调成本。 在多团队敏捷中需求协作活动大致有如下几种: 1.总体Product Backlog Refinement工作坊 ...