首页 > 读 文 > 【推荐】产品经理必须掌握的10种优先级决策技术详解(第二季)---技术13:加权最短工作优先---WSJF
2023
10-30

【推荐】产品经理必须掌握的10种优先级决策技术详解(第二季)---技术13:加权最短工作优先---WSJF

在本系列的第八个技术《延迟成本---Cost of Delay》中,我提到利用延迟成本这个量可以应用到另一个优先级技术上,就是加权最短工作优先---WSJF上。

本篇呢,我就介绍一下WSJF这个技术该如何使用。

1、WSJF是什么?

很多熟悉敏捷开发的朋友应该知道,WSJF是SAFe中的一种扩展工具,用来对工作计划列表进行优先级排序。

但是再往前倒的话,WSJF可以追溯到20世纪70年代计算机行业,当时因为计算资源昂贵且短缺,人们就发明了一种最短作业优先(Shortest Job First)的算法来安排批处理作业,以充分利用稀缺的计算资源。

关于SJF的解释,大家了解一下即可:

最短工作优先(SJF)是一种选择执行时间最短的进程进行下一步执行的算法。这种调度方法可以是抢占式或非抢占式的。它能大大减少其他等待执行的进程的平均等待时间。

2、WSJF的计算公式是什么?

WSJF的计算公式很简单,大家看下图:

也就是“延迟成本”除以“工作(工期/规模)”。

关于CoD我在技术8中已经讲到,大家可以返回去再看一下。

主要说一下“工作(工期/规模)”。

它是指你完成一项工作所需的时间。但在实践中,确定工期可能是有些困难的,尤其是在早期阶段,因为每项工作的可用能力和所需时间都是未知的,换句话说,在开展工作之前,很难知道谁将参与工作、有多少人可以参与以及需要多长时间。

不过,我们都知道,由于大型工作通常要比小型工作需要更长的时间才能完成,因此,如果你无法确定工期,那么就可以使用工作规模(Job Size)来代替。

打个比方,如果你要骑行从A地到B地,有两条路,甲路的路程是乙路的三倍,那么,我们通常可以认为,走甲路所用的时间就是乙路的三倍。

也就是说,我们在这里不以骑行时间(甲路用X时间,乙路用Y时间,因为在没有骑行前,谁也不知道路况如何)为计算量,我们是以甲和乙的路程比的关系来代表时间为计算量。

如果使用规模作为计算量,那么,就需要我们根据已确定的规模衡量方法来为每个工作分配数字,通常用1-10来定义它们的规模大小。

需要注意的是,规模并不能完全代表时间。让我们考虑两种情况:

1)假设有现成的专业技能,可以比预期更快地完成高价值的大型工作。在这种情况下,它可能会在更短的时间内提供更多的价值。比方说甲路虽然是乙路路程的三倍,但甲路都是一马平川,你可以以匀速骑行,而乙路都是非铺装路面,骑行速度是前者的三分之一,那么,无论是走甲路,还是走乙路,你从A地到B地的时间大致会相同,但是骑行感受却不一样。

2)小规模工作可能存在资源稀缺的问题,或者可能存在依赖关系,这意味着小型工作可能比大型工作耗时更长。

如果是这两种情况,只需使用相对估计工期并做出相应调整即可。

但我们很少需要担心这两种例外情况。在大多数情况下,快速的 WSJF 相对估算就足够了。由于这是一个基于流程的系统,选择中的微小错误并不重要,因为下一个重要工作很快就会出现在积压工作的首位。

3、WSJF实例

假设你现在要评估三个产品的功能,CoD和工作规模也作出了评估,那么计算表如下:

很明显,WSJF值越大,这个任务的优先级就越高。

这里需要注意三点:

1)对于WSJF中涉及到的评估项,我们需要用合理的量表来进行赋值,按照SAFe的建议,可以在“1、2、3、5、8、13、20(斐波那契序列的子集)“这个范围内取值。

2)要确保评估项的每一列都有一个赋值为1的项,这可以理解为是基准项(最小项),其它项以此为基准进行相对性的赋值。

3)如果某个任务的评估赋值高于20,那么,就需要把这个任务继续进行细化分解。

4、为什么要采用WSJF

WSJF是一种现在很流行的需求和功能级的优先级管理技术,但是并不意味着它就要比前面讲过的类似级别的技术更好,我从来没有说过哪种好,哪种不好,关键在于它们的适用性上。

WSJF的流行,主要看和谁比,横向看,每种技术各有优劣,但是纵向看,它就要比FIFO(先进先出)这种传统的,在制造业中流行的思想要好很多。

FIFO,简单说,就是按照功能到达的先后顺序逐一开发和交付,这是制造业常用的排产方法。

比方说还是三个功能,A、B、C,我们评估需要A功能的人等待的时间最长,那么,就优先把A功能提交给开发部门,其次是B和C。

如果是FIFO,那么,假设开发A功能需要五周时间,那么,我们就要承担所有三个功能的延迟成本,假设A是1000元/周,B是4000元/周,C是5000元/周,合计每周10000元,五周就是50000元。

A功能交付后,我们就继续开发功能B(需一周时间),在B和C交付所需的一周内,我们又会产生延迟成本4000元+5000元=9000元,这样就又产生了59000元的延迟成本。

最后,我们开发功能C(需两周时间),它需要两周的开发时间,那么,C的延迟成本就是每周10000元,这样,在已有延迟成本59000的基础上又增加了10000元,总延迟成本就是69000元。

如果使用WSJF,如果我们根据CoD得分最高的功能开始开发,假设为功能B,然后是功能C,最后是功能A。

在开发B的一周内,我们会产生4000+5000+1000=10000元/周的延迟成本,在随后的两周内,我们对C进行开发,会产生5000+1000=6000元/周的延迟成本,两周就是12000元的延迟成本。

最后,我们开发A,五周的延迟成本为5000元,合计总的延迟成本是10000+12000+5000=27000元。

由此可以看出,采用FIFO的延迟成本总额为 69,000元。而使用 CoD 的总延迟成本为 27,000 元,延迟成本降低了 61%,明显具有很大的不同。

不过,这种简单的比较并不能显示出优先考虑较小工作对人的影响,以及对流程和交付周期的影响。

关于WSJF就讲这么多,因为一些影响因素其实主要就和CoD和工作工期/规模有关,而CoD已经专门讲过,可以参考这篇文章来更好的理解WSJF。


本文》有 0 条评论

留下一个回复