尽管我们对需求变更“深恶痛绝”,但毕竟,该面对的还是要面对的。
在敏捷项目管理中,我们要如何应对需求变更的问题呢?
一、设置Product Backlog与Sprint Backlog
Scrum框架针对需求变更,设置了Product Backlog(产品待办列表)和Sprint Backlog(迭代待办列表)。在每个迭代开始时,产品负责人需要在Product Backlog中,通过优先级排序来筛选、整理出这一迭代的Sprint Backlog,也就是这一迭代需要完成的产品需求。也就是说,Product Backlog是不断变化的,而Sprint Backlog是当前迭代中已经确定的产品需求,是不变的。这样就会保证需求的变更不会影响到当前迭代的产出。
二、做好需求排序
设置Sprint Backlog就意味着我们要做好需求排序,那需求的优先级由哪些维度来决定呢? 一个维度是需求的重要紧急程度,比较重要且紧急的需求要往前排,相对不重要不紧急的需求往后排。如果我们要交付一个电商平台的MVP版本,那下单支付的需求会比收藏某一商品的需求重要的多,所以我们自然需要优先解决下单支付的功能。那 另一个维度其实是需求的明确性,因为在项目的前期阶段,客户需求其实也不是那么清晰明确。所以我们要考虑一下优先做已经明确了的需求,同时和客户不断地沟通确认,将那些相对模糊、可能会产生变化的需求确定下来,然后再排进相应的Sprint Backlog中。
客户在描述需求的时候,我们可以用极限编程中的用户故事实践,将需求以“作为一个<用户角色>,我想要<完成活动>,以便于<实现价值>”的形式进行表达,这样更有利于双方沟通、澄清需求。
三、对需求变更进行限制
确认好Sprint Backlog后,原则上不允许再变更需求。所以这就要求产品负责人需要对Sprint Backlog进行负责,提前与客户进行需求的沟通、确认。- 如果遇到必须变更、优先级比较高且对迭代影响较小的需求,我们可以将这个需求放入迭代中,然后将原本迭代中优先级较低的需求替换出来;
- 如果遇到必须变更、优先级比较高且对迭代影响较大的需求,则需要和客户同步并确认后,将当前进行中的迭代暂停,产品负责人重新规划新一期的Sprint Backlog。
“ 欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化。”敏捷项目管理的过程是一个动态过程,在这一过程中,涉及客户、项目团队、利益相关者等多方因素,而且这些因素的变动会影响其他因素的活动。所以在变动不可预知的情况下,我们就需要化被动为主动,积极应对项目过程中的各种需求变化。以提高客户的竞争优势为目的,在变化中寻找解决的方法,寻求双方统一意见的达成,将需求变更的成本降至最低,实现提高效率与保证质量的统一。