排优先级是最基本的敏捷必需的过程。回想一下敏捷12原则的第2条:“欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化。”
敏捷团队一定要拥抱变化,但是无原则的变化必然是低效的、损伤团队士气的,因此我们要掌控变化。如何做到呢?必须通过事先的优先级设定,提前思考与规划。例如,在Scrum 框架中,迭代内的需求是不能随意变化的,迭代外的需求可以调整。这样既保证了一定的稳定性,又拥抱了变化。
优先级设定不是某一个角色的事情,需要引入更多的干系人,综合多方面的意见进行设定。这个工作是需要持续进行的,在不同的敏捷实践中落地有所不同,在Scrum中是“产品待办事项”,在FDD中是“特性列表”,在DSDM中是“设定优先级的需求列表”,在XP中是“用户故事承载的需求文档”。
1.基于价值排定优先级
依据价值大小,直接排定优先级,价值判定可以参考前文所述的价值度量指标,也可以直接由客户或者业务方来判定相对价值大小,实现相对优先级排序。收入的来源指标包括新收入、增量收入、留存收入和操作效率等;经济指标包括现值、净现值、内部收益率、投资回收期等。
2.莫斯科(MoSCoW)原 则
(1)必须有(Must have):如果不包含,则产品不能发布。必须有的功能往往就是所谓最小可行产品(MVP)的功能。
(2)应该有(Should have):这些功能很重要,但不是必需的。通常认为“应该有”的重要性也非常高,但它们有可能用另一种方式来代替,去满足客户要求。
(3)可以有(Could have):这些要求是客户期望的,但不是必需的。可以提高用户体验,或提高客户满意度。如果时间充足,资源允许,则通常会包括这些功能。但如果发布时间紧张,则通常现阶段不会做,会挪到下一阶段做。
(4)这次不会有(Won't have):最不重要,最低回报项目,或在当下是不适合的要求,不会被计划到最近发布计划中。“不会有”需求条目一般可直接删除,也可以做出特殊标记后保留。
3.卡诺(KANO)模型
卡诺模型是东京理工大学教授狩野纪昭(Noriaki Kano)发明的对用户需求进行分类和优先排序的有用工具,以分析用户需求对用户满意的影响为基础,体现了产品性能和用户满意之间的非线性关系。狩野纪昭团队在《魅力质量与必备质量》( Attractive Quality and Must-be Quality )研究报告中提出了“先全力满足基本质量必备需求,再满足期望和魅力需求,减少无差别属性的功能,杜绝反向属性的功能”。这意味着,并不是所有的质量要求都需要满足的,各种属性定义如图2-6所示。
图2-6 卡诺模型属性定义
下面举一个手机功能的例子,如图2-7所示。
图2-7 手机功能的卡诺分析
4.虚拟货币法
给参与优先级讨论的人发放项目预算等额虚拟货币,让大家直接把虚拟货币分配给待排序的需求,然后将投票结果汇总后进行排序。可以针对全部需求,也可以针对部分需求。
5.100点法
100点法与虚拟货币法类似,但利用了相对法,即可以分给每个干系人100点,让他们使用这些点给需求投票,干系人可以将100点以任意方式分配。这种方法最早是由Dean Leffingwell(SAFe的创始人)和Don Widrig提出的。
6.点投票法
每个干系人都会得到一个预先确定的点数(如用投票贴替代),让大家对需求进行投票,然后汇总排序。
当决定给每个人多少票时,一个好的经验是总需求数的20%。如有40个需求需要投票,每个人将获得8张选票。
还可以给不同的干系人的票进行加权,以避免过度平均化。
7.专家打分法
每个专家可以根据自己对需求重要性的理解对需求进行打分,最高可打100分,最低可打0分;然后将专家的分值进行加权平均(根据每个专家的具体情况分配权重);最后从高到低排序,即可得到需求的优先级。
8.重要紧急矩阵排序法
把一个二维的坐标分成4个象限,横坐标是重要性,纵坐标是紧急性。第一象限为重要且紧急,第二象限为紧急不重要,第三象限为不重要也不紧急,第四象限为重要不紧急。可以根据实际情况,把所有需求根据四象限法则进行重要性与紧急性的分析定义,然后把这些需求一一放进相应的象限中,最后按照矩阵分析法的顺序(重要且紧急>重要不紧急>紧急不重要>不紧急不重要)来完成排序。
9.价值困难矩阵排序法
可以画一个象限,纵坐标是价值,横坐标是难度。先按照业务价值大小在纵坐标上进行排序,然后在横坐标上按照难易程度横向移动(切记,竖向不能动),如图2-8所示。很明显,高价值、低难度的应该先做,低价值、高难度的不做。
图2-8 价值困难矩阵
10.风险价值矩阵排序法
把一个二维的坐标分成4个象限,横坐标是价值,纵坐标是风险。优先处理高价值、高风险,这是因为风险越高,不确定性越大,需要优先排除掉风险,否则后期发生,可能对项目产生巨大影响。其次处理高价值、低风险;再次处理低价值、低风险;最后避免/不处理低价值、高风险的事情,如图2-9所示。
图2-9 风险价值矩阵
11.相对权重法
相对权重方法提供了一种使用一个值来对实现一个功能所带来的收益、不实现它所带来的惩罚和实现它的成本进行评估的方法,这个值就代表了优先级。在产品所有人的领导下,开发小组共同对功能进行评估。对每个功能都要评估实现它所能带来的收益和不实现它会招致的惩罚。如表2-1所示,如同故事点和理想日的估算一样,对收益和惩罚的估计也是使用1~9的尺度进行相对度量;总价值=相对收益+相对惩罚。成本的估计值(第5列)按照故事点或者理想日来算,这个例子中采用了故事点。优先级=价值百分比/成本百分比,这种方法依赖专家判断。
表2-1 确定优先级的相对权重法
资料来源:《敏捷估计与规划》。