DanLevy.net

优先级陷阱

多选题真的是最优解吗?

Priority 下拉框陷阱

一个创业公司的故事

不出所料,你的 Jira 管理员总能给出一套方案:看好了,这就是 Priority 下拉框字段!(大厂开发者专业提示:它可能被命名为 Priority2P-level。)

奇怪的是,100% 的公司都会在 P1, P2, P3, P4Low, Med, High, Critical 之间做选择——显然,世界上不存在其他选项。

一个硬编码的四项列表?行吧。让我们试运行几周看看……

两天后

在一个意料之中的转折中,组织发现了一个具有更高优先级的新工单,于是不得不进行了一次小规模的“黑客行为”:增加一个 P0,或者叫 Critical Max+

又过了三天

我们无畏的老板在会议上有了些令人兴奋的发现!

不知怎的,他们发现了一个比 P0 还要高的优先级!

从那时起,团队就开始埋头研究如何标记这个新的优先级。

也许是 -1?不,不。那太容易混淆了(P-1 对比 P1)。好吧,那 P0.5 怎么样?也不行。

在一次“灵光乍现”的时刻,团队发明了一个更高的优先级:双零!
也就是现在众所周知的 P00 优先级。

洪水来临前

在所有人意识到之前,你的团队不知为何已经淹没在 P00 工单中了!

我们该如何避免这场愚蠢的“工程演戏”(Engineering Theater)游戏?

如果优先级不再是多选题会怎样?

我们该如何更好地表达“优先级”这种不断变化、流动的感性概念?

那么,接下来该怎么办?

有几种替代方案值得探索,按实施成本从低到高排列:

总结

尽管优先级的衰减速度极快,但人们还是赋予了它过重的负担。昨天的 CRITICAL(紧急)工单很可能不是下个季度的 CRITICAL 工单。

随着时间的推移,旧的高优先级工单会变得难以清理和维护。毕竟,谁愿意去降低一个曾经被宣布为必不可少的任务的“优先级”呢?更不用说删除那些已经无关紧要的工单了……(天哪!想想那积压的工作量!)

我见过多家公司混淆了 Severity(严重程度)和 Priority(优先级)。Severity 描述的是紧急程度(或时间敏感性)。

Priority ≠ Severity。定义 3-5 个严重程度级别是有意义的(通常用于维护服务水平协议 SLA)。

紧急程度级别有助于沟通从“零客户影响”到“部分/完全服务中断”的各种情况。

一点警告

部署一个无限制的优先级字段需要一定的规划和纪律!

如果你熟悉前端开发,可能经历过 z-index 大战。

本质上,z-index 允许开发者设置任何正整数,以确保他们的组件显示在其他低 z-index 内容“之上”。

即使是一个微小的组件更新,也可能改变其 <Dialog /> 的 z-index,导致它突然不可见。当第三方组件、功能开发和其他团队的贡献试图在 z-index 上互相压制时,情况就会变得一团糟。

Z-index 曾经被限制在 ~32,000 左右。然而,我最近看到一段代码,其 z-index 竟然达到了十亿:z-index: 1000000000

看来通货膨胀对 z-index 的打击确实不轻。

讨论

我们可以对着互联网呐喊:“谁来清理这些 P00 工单?”

或者,你可以对你的待办事项列表(Backlog)坦诚一些: