美文网首页ACT | 敏捷教练工具箱
等待队列(Queues):今天,你关注了吗?

等待队列(Queues):今天,你关注了吗?

作者: Waaaaaaa111 | 来源:发表于2018-03-11 08:45 被阅读4次

    Our real problem is periods of inactivity, not slow activities.——Donald Reinertsen

    产品开发思想领袖Danald Reinertsen的这句精辟的总结,点明了一个十分重要的但反直觉的“真相”:在大多数情况下,产品开发中真正的问题,并不在于干活时的产能不够高,而在于没有干活时的等待遗憾的是,根据统计数字,98%的产品开发者,并没有真正关注和度量等待队列。

    今天,你关注了吗?如果没有,请搭载本文的列车,将从生活中和产品开发中的例子出发,全面了解及思考等待队列的后果、起因、意义和应对方法。Ready?Let's Go!

    生活中的例子

    等待队列的例子,在我们的生活中俯拾皆是。例如:

    产品开发中的例子

    在产品开发中,等待队列同样无处不在。但是,让我们麻痹的是,它们并不是以某种有形的形式(例如排成长龙的人队、车队)存在,而是潜藏在我们忙碌的开发过程的背后,因而很容易被忽视。典型的等待队列存在的场景如:

    等待测试的队列。从开发人员编码完成,到测试人员开始测试之间,往往存在一个等待队列,尤其是在串行工作、或角色职责界限分明的团队中。

    等待沟通的队列。对于异地团队,地理的距离容易产生心理的距离,随时随地的沟通受到压制,团队成员倾向于积攒沟通内容、拉长沟通间隔,形成了带沟通信息的等待队列。尤其当远程会议室的申请也存在等待队列的时候……

    等待专职角色评审的队列。在很多建立了标准化流程的大公司中,产品的很多评审(如架构、安全、部署)通常需要第3方的专职角色参与把控,申请这些专职角色的请求形成等待队列。

    申请项目资源的队列。在矩阵型的项目管理架构中,项目经理需要向公共资源池的经理申请项目资源,资源池通常都不足以支撑所有项目的资源申请,这些资源申请形成等待队列。

    等待队列的后果

    等待队列的存在是不可避免的,但是,队列长度长、持续时间长的等待,会造成严重的后果。等待队列引起以下后果:

    拉长周期时间:根据利特尔法则,当请求处理速率相对固定时,在队列中的等待时间(Queue Time)与等待队列的长度(Queue Size)成正比。

    增大市场风险:随着时间的流逝,市场环境在发生变化,队列中的请求存在“腐烂”的风险,可能错失市场机会。

    放大不确定性:随机发生的等待,并不会随机的自行消逝,反而很有可能急剧恶化(后面会再说明)。

    增加管理消耗:举个例子,当有100个bug排队等待时,当出现第101个bug时,光是查看这个bug是否已经在前面100个中已经出现过,就要耗费很多的精力。

    质量难以保证:上游环节无法得到下游环节的及时反馈,时间越长,记忆越衰减,诊断、定位、解决问题的变得愈加困难

    降低人员士气:想象你在银行站立排队了2个小时,一个冗长的等待过程足以把客户的耐心消磨殆尽,而客户的抱怨又反过来让银行职员降低工作热忱。

    我们再从经济上,来考量一下等待队列造成的成本损失,看看下面这个例子:

    假设我们1年有8个产品,平均每个产品每延期1周会造成10万美元的损失(即”延期成本“),而我们的产品等待队列的平均长度是3周。这样一算,1年我们就会有2400万的损失!

    有效的前置指标

    与其他指标相比,等待队列长度(Queue Size)是一个首选的过程管理指标。最明显的一个优势是:提前预防周期时间拉长。等待队列能够最早感知系统中出现的变化,而周期时间需要滞后一段时间才能反映出来。参见下图:

    在时间点21,突然来了一大批乘客,排队人数(Cumulative Quantity)迅速增长5倍,而等到时间点41,周期时间(Cycle Time)才开始增长到2倍。

    因此,如果我们有效的监控队列长度,就能够第一时间掌握情况并采取合适的应对行动。如同在一些管理比较到位的超市,有专人监控现有收费通道排队人数,当人数达到一定规模时,就会临时增开新的收费通道。

    产生等待队列的原因

    等待队列的产生,最主要来自2个原因:

    1、请求的变异性。请求到来的时间、数量、大小、复杂度都可能是随机分布且难以精确预测的,如果超市里完成购物进入收费通道的人群,这这不可避免的会在某些时间形成等待队列。

    2、过高的资源利用率。资源利用率是导致等待队列的另一个决定性因素,参见下图,当资源利用率升高到一定比例时,对新请求的响应能力急剧下降,队列长度将呈指数级上升

    管理等待队列

    既然等待队列造成这么多的问题,我们是否应该“秋风扫落叶”般的消灭队列等待呢?其实不然。完全的消除等待队列,从经济上并不划算。合理的队列长度,需要平衡冗余的资源成本、与等待造成的延期成本,来找到一个“U型曲线底部的合理的平衡点

    那么,对无法避免其存在的等待队列,“既来之,则安之”,我们该如何来管理它呢?

    1、可视化等待队列。累积流图(Cumulative Flow Diagram)是可视化等待队列的好工具,在产品开发过程中,建议每日更新。

    2、果断而快速响应。前面提到,随机发生的等待,并不会随机的自行消逝,反而很有可能急剧恶化,因此,必须采取果断而快速的响应措施。这个道理可以参见著名的硬币实验,每扔1次硬币,正面朝上记1分,反面朝上记-1分,当你扔1000次硬币的时候,累积结果之和会趋向于零吗?实验的结果是反直觉的!

    3、降低批量。大的批量会导致长、久的等待队列,因而降低批量,可以直接降低等待队列。这正是各种敏捷、精益软件开发方法所共同遵循的原则,显著区别于瀑布式开发方式下的大批量流转。

    4、避免过高的资源利用率。避免设定过高的资源利用率目标(包括机器和人员),关注等待队列、关注周期时间,胜于关注资源利用率。

    5、建立弹性资源池。例如,运营部门面向不同业务线的事件处理、服务请求处理人力,可以整合形成弹性资源池,来中和掉不同来源的事件、请求的变异性。

    6、设定合理的队列规则。对等待队列的处理顺序,设定最经济合理的处理策略,例如优先处理延期成本高的请求、来降低市场风险。

    本次列车到站。明天,你会开始关注等待队列吗?

    相关文章

      网友评论

        本文标题:等待队列(Queues):今天,你关注了吗?

        本文链接:https://www.haomeiwen.com/subject/yepifftx.html