点绿色语音图标开始收听
数字化协会顾问专家:龙广宇,2004年起,就职于IBM等多家500强国际企业,从事系统工程与软件工程方面的技术支持及顾问工作,目前龙广宇专家在领导华为上海无线数字化设计转型
开发过程中的随机事件
在大中型团队的软件开发过程中,主要的设计、开发及测试等工作是计划中的,这些可以被我们看成是确定性事件。但在团队实际的日常工作中,有大量工作并不会按照项目计划按部就班进行,如测试发现的缺陷需要马上修复、集成环境编译不通过需要快速解决、业务方提交的紧急需求变更、试运行过程中发现严重的安全问题或性能问题需要对架构进行调整,还有上线运营时收到客户的严厉投诉等等。这些随机性事件会严重干扰我们的开发节奏,随着项目的持续进行,随机事件日积月累对项目进度与质量造成的影响是巨大的,绝对不容许项目团队轻视与低估。
掷硬币随机过程
提到随机事件,一个大家最容易理解的类比就是掷硬币事件。
掷硬币事件在应用统计学领域叫随机过程,它研究随机变量的顺序。掷硬币会生成一个随机变量,如果我们跟踪一连串掷硬币过程,我们就会观察到随机过程。一般说来就算有数学头脑的人对随机过程的直观认识也存在偏差。
以一个概率论经典案例来说,丢硬币出现人头的概率是50%。我们丢1000次,每次出现人头时在数轴上加1,出现字时我们减1,我们在坐标图上给出散点图。包括数学家在内,很多人相信1000次下来的结果,累积值应该在0附近。
然而,实际结果确让人大跌眼镜:

本图摘自唐-雷纳特森的著作《产品开发流的原则》
事实上,我们发现随着次数越来越多,累积和偏离原点越来越大,要么向上偏离要么向下偏离。事实正如统计学家费勒指出的,最后500次丢硬币的累积值穿越0点的概率是50%,尽管零点是很可能的概率值,但随着试验次数越来越大,累积值的变异也会越来越大。
为什么会造成这个违反人们常识的现象呢?
我们还是要从概率论中的高斯分布说起,如下图所示:

本图摘自唐-雷纳特森的著作《产品开发流的原则》
在数学上,该掷硬币随机过程的累积值满足二项分布。著名的中心极限定律指出,如果试验次数足够大,该二项分布会满足高斯分布。随着时间推移高斯分布曲线越来越平。尽管累积值从概率上应该为零,但它达到这个值的可能性会越来越小。随着时间推移累积值越来越偏离它的均值。
也就是说,试验次数较小时累积值为0的概率很高,如图中的“早期尖曲线“所示;但当试验次数足够大时,该随机过程的累积值还是有趋向于0的可能性,但概率很低。从图中最扁的曲线可以看出,该累积值是其他数值的概率也是相当的,即有相似的等可能性。
不要随机对待随机事件
这个结论为什么重要呢?相比产品开发过程而言,硬币问题有较少的可变性。掷硬币的时间可预测,每个硬币事件都遵循统一的随机分布;相比到达时间以指数分布的泊松分布而言,硬币事件的变异性小很多。
然而即使在这种低变异性的试验情况下,结果也会由于时间消磨而失控。对管理者而言该模型有很大的指导作用,特别是当我们想消除昂贵的团队任务高等待状态时,我们不能简单地依赖随机性来纠正由随机事件造成的问题。
如果我们任由软件开发的任务队列随机发展会给项目团队造成失控现象,累积的随机任务会发展成持续高等待状态从而对项目造成巨大经济影响。根据排队论的原理,随机事件对如何到达当前状态没有记忆力,因而它无法优雅地返回前面的低等待状态。
假设我们在硬币实验中在某个点已经得到累加值为10,我们接下来10次实验都掷出“字”的概率为多少呢?千分之一。随机队列的无记忆性决定了未来的概率事件与前面的事件完全无关,所以有很大可能性未来偏离度越来越大。
在软件开发中我们了解到团队的高等待状态会造成不成比例的损失。当队列中有20个任务时,单个任务5分钟延时会造成总共100分钟延时;如果队列中只有两个任务,它将造成10分钟总延时。因此队列长度相当于一个乘数,增加我们的延迟成本(COD: Cost of Delay)。(注:针对COD的定义、解释及应用请参见唐-雷纳特森的著作《产品开发流的原则》)
高等待状态造成的损失也取决于等待持续时长,复杂的软件项目中我们看到高等待状态可能持续很长时间,因此我们快速应对此类意外等待就很关键。如果队列被允许持续,它会造成更多经济损失。如果决定干预就必须尽快坚决地干预,我们越拖延提高系统服务处理能力或在前端控制需求,问题就会变得越来越大。
限制在制品数量
针对队列等待问题,如果反应快速,我们可能限制队列长度。这对我们的控制策略有很大影响。我们可以任由随机性来创建队列,但不能依赖随机性来修正队列。当队列变大时,我们需要进行快速并有力的干预。精益理论建议我们可以设置队列长度极限并在接近极限时主动干预;它也建议如果我们越频繁监控并快速应对,队列的损失就越小。
上述限制队列长度的方法在精益方法中被称为约束WIP,这是精益看板方法的精髓。WIP(Work in Process)也称为在制品、或在制品存货,大量的软件开发管理实践证明:限制开发项目中在制品数量是极为有效的改进项目管理方法。我们将在下集精益文章中专题讲到看板方法的理论基础及约束WIP的问题。
敬请期待!
One more things
数字化学会社群正在招募,旨在为数字化行业从业者、学习者和爱好者搭建一个交流平台。请仔细阅读下列分类,并准备名片。企业工程师优先入群。
加群方式:在公众号后台回复“加群”,按照步骤操作即可。
1、数字化学会(华为群)
2、大数据AI群
3、智能制造业群
4、数据分析师群
长按识别二维码,了解更多学会信息

