昨天在敏捷微信群抛出一个问题:
一个开发团队开发了一个产品,在这个团队里,我是客户A的项目负责人,你是是客户B的项目负责人,假设团队每个迭代只能开发一个需求。
在安排下一迭代的开发计划时,我希望做客户A的一个需求,你希望做客户B的一个需求,我们各执一词,争执不下,还差点打起来,差点朋友都没得做了。请问怎么破?
其实这个问题的本质是如何相对客观地计算出优先级,避免因为主观因素带来的冲突,客观是指我和你都按照事先达成共识的优先级公式算出优先级,然后我们比较一下优先级就可以和谐地决定是我让你还是你让我,那么怎么计算出一个需求的优先级呢?我主要参考了下面五个模型:
- KANO定义了需求的3个层次:基本需求,期望需求,惊喜需求。
-
重要紧急矩阵
优先级公式
- CFS定义了需求的三个特性:C代表普遍适用性,F代表使用使用频率,S代表严重性。
- ROI,投入产出比,比如很多需求的实现代价接近于0,优先级就可以提高。
- 前置需求,这个需求没做完,其它需求没法做,或者做了以后还可能重做。
接下来的问题是怎么把这五个模型结合起来得出一个最简和客观的公式?
首先我想到的公式形式是:
优先级 = 权重1 x 因素1 + 权重2 x 因素2 + ... + 权重n x 因素n
因为这个公式可能会持续演化,我想让第一个版本尽量简单,所以先把所有权重都设置成1。因素可以从上述5个模型里面抽取,公式就变成了:
优先级 = 重要性 + 紧急性 + KANO + CFS + ROI + 前置需求
接下来的问题是如何量化每一个因素?为了尽可能简单,我想到了用二值法去量化每个因素,一个因素的得分要不是10,要不是0,以重要性为例,如果重要,重要性=10,如果不重要,重要性=0,这个公式就变成了:
优先级 = 是否重要 + 是否紧急 + 是否是基本型需求 + 是否是普遍适用需求 + 是否是高频使用需求 + 是否是代价接近0的需求 + 是否是前置需求
接下来的问题是怎么定义一个需求是否重要和是否紧急才能尽量排除主观因素?
和产品目标相关的需求一定是重要的,比如我们今年的产品目标之一是服务好C行业的客户,那么来自C行业客户的需求就是重要的,那么就可以把是否重要替换成是否来自C行业客户。通过把是否重要转换成是否和某一目标紧密相关,就可以尽量排除主观因素了。
最后还需要给是否紧急下一个定义,不然不同的人也会有不同的标准,比如我们可以把紧急的需求定义为:
有明确时间要求的需求,如果安排不进下个迭代,很有可能就会延期。
综上所述,我的优先级公式的“内裤版”是下面这样的:
优先级 = 是否和目标相关 + 是否有明确时间要求 + 是否是基本型需求 + 是否是普遍适用需求 + 是否是高频使用需求 + 是否是代价接近0的需求 + 是否是前置需求
对于每一项,如果答案是“是”,则得10分,否则得0分,得分越高的需求优先级越高。
网友评论