我一度以为,只要反应够快,所有问题都能被扼杀在摇篮里。直到读了《系统之美》里关于延迟的那一章,我才发现这个想法有多天真。有时你越是迅速调整,系统反而震荡得越厉害,就像用力过度去扶一个快要倒下的玻璃杯,结果连桌布一起掀翻了。

今年假期,我带了两本书、一张坐标纸出门,打算在旅途中做些和平时不一样的事。坐标纸用来画点阵字体,一本捷克语的后末日小说找找游戏灵感,另一本就是那本吃灰已久的《系统之美》。这本书是同事推荐的,买回来后在书架上一躺就是好几个月,趁着这次旅行,我终于把它翻完了。其中最让我着迷的一章,讲的就是“延迟”。

《系统之美》搭建了一整套观察世界的方法,用源头、汇点、存量、流量、反馈回路这些概念,把复杂系统拆解成一目了然的关系图。虽然底层的数学模型本质上是一组微分方程,但作者并没有掉进公式推导的泥潭,而是用大量例子让你看见那些悄悄控制着系统行为的结构。延迟,正是其中最容易被低估的一个变量。

打开网易新闻 查看更多图片

书里举了一个汽车经销商的例子,我沿着这个思路自己写了一个蒙特卡洛模拟器,把模型跑了一遍。假设你是经销店的经理,停车场里随时要保持一个理想的库存量,你给自己定了个规矩:库存必须等于过去一天销售量的10倍。每天早上,你检查昨天卖了多少辆车,然后立刻向工厂下订单补齐差额。

我们先看一个完美世界:没有延迟。假设顾客需求是固定的,一开始每天稳定卖出20辆,那么你理想的库存就是200辆。到了第二天,你看到昨天卖了20辆,现有库存180辆,于是你立刻下单20辆,这20辆车瞬间就出现在停车场里,库存又回到200辆。系统就这样平平稳稳地运行下去,像一口不起波澜的老井。

更理想的是,即便需求发生变化,只要没有延迟,你的反应也可以像镜子一样同步。假设需求从每天20辆逐渐增加到22辆,每天都多卖一点,你也会每天多订一点,库存始终稳稳地挂在10倍卖量的那个刻度上。即便有一天突然出现一个夸张的销售高峰,比如当天卖出了70辆,你会立刻发现自己少了70辆库存,于是马上订70辆,车辆瞬间到库,第二天库存又完美回到理想线上。一切平滑得如同丝绒。

在这样的理想模型里,销售量就是顾客需求的直接镜像,而库存则是销售量的10倍放大版,滞后时间为零。你只要会做最简单的乘法,就能把系统管得服服帖帖,没有任何意外。然而,现实世界从来不存在“瞬间”这两个字。

一旦把延迟引入模型,哪怕只是隔一夜才到货,系统的行为就彻底变了个样。为了看清楚延迟到底会把这池静水搅成什么样子,我给模拟器加了一条规则:你当天晚上下的订单,车辆要等一天后才能到达停车场。也就是说,你今天看见库存下降,做出订购决策,但补货要到明天早上才到位。就这么一天的滞后,足够把整个系统拖进一场毫无必要的动荡里。

需求还是同样的需求,起始每天20辆,然后慢慢升到22辆,中间照着原先的剧本,有一天爆发式地卖出70辆。可这一次,故事走向完全失控了。在那一天高峰的前夕,你的库存本来还是稳稳的10倍水平,因为你一直跟着需求的步伐在做调整。然而,当70辆的冲击突然降临时,你当天卖掉了70辆,库存猛然掉了一截。那天晚上,你像往常一样检查销售记录,看到70这个数字,毫不犹豫地下了70辆的订单。

问题在于,这70辆车不会马上出现。第二天早上,仓库里并没有补上这些车,而顾客却还在继续上门。你前一天的高销售,让你对今天的需求产生了一种被扭曲的预期。你的规则逻辑是:理想库存应该是上一天销售的10倍,而上一天你卖了70辆,所以你此刻的理想库存被锁定在了700辆。可你手头的实际库存呢?由于高峰消耗了不少,加上今天还没有收到补货,可能只剩下了原先的十分之一,甚至更低。

于是你立刻又下了一个大单,试图把库存一口气拉到700。可这个动作忽略了两个事实:第一,你今天的需求并不会维持在70辆,实际上它已经回落到日常的22辆左右;第二,你昨天就已经下过一个70辆的订单了,那批车正在路上,只是还没到。等到下午或者第二天,两批车同时涌入停车场,你猛地发现库存竟然远远超过了700,一下子就胀破了肚子。

这时候规则又反过来抽你一鞭:因为昨天的实际销售量可能只有22辆,理想库存随之骤降到220辆,你眼前却堆着上千辆车。你赶紧削减订单,甚至直接停订,试图让库存慢慢消化。可是工厂那边已经安排好了下一批生产,关不掉的惯性继续把车往你这儿送。于是库存继续飙升,直到你终于成功把订单压到零,库存才开始缓慢下降。而降过头之后,又可能触发新一轮的缺货恐慌,你再次急急忙忙地追加订单,就这样,系统陷入了周期性的剧烈振荡。

打开网易新闻 查看更多图片

最反直觉的地方就在这里:需求本身只是经历了一次短暂的高峰,之后就回归平稳了。如果系统里没有延迟,这个高峰只会让你的库存出现一个同样短暂的脉冲,然后迅速恢复平静。可一旦加上了那一天的订单-到货间隔,一个短暂的干扰就被放大成了长期的震荡,库存像个失心疯的钟摆,好一阵子都停不下来。

为了确认这种振荡不是某种巧合,我在模拟器里反复跑了上百次,每一次都看到了相似的波形。需求只疯了一天,库存却疯了十天以上。而且,你越是努力地想维持那个10倍库存的目标,波动反而越剧烈——因为你的每一次调整,都是基于一个已经过时了的信息。延迟把你的反应变成了“对过去状态的补偿”,而这种补偿一旦错位,就会变成推动系统继续偏离均衡的力量。

这种延迟效应远远不限于汽车经销商。任何包含“感知变化—做出决策—等待结果”这个环路的系统,都可能在延迟面前被同样的逻辑绑架。供应链里的牛鞭效应就是一个典型的放大版:零售商看到一个小需求波动,给批发商下单,批发商又向上游放大订单,每一层都为了自保而多订一点,等到波动传到原材料端时已经面目全非。背后的推手,本质上就是信息传递和物流执行中的多层延迟。

我们平时碰到延迟时,直觉上总是觉得只要加快行动就能抵消它的影响。但《系统之美》里的这个例子清清楚楚地表明,加快行动往往只会让情况更糟。真正有效的策略,反而是放慢脚步,拉长观察窗口,用过去几天的平均销售量来定义理想库存,而不是只看昨天一天的数据。这样一来,决策依据不再被单日的异常波动牵着鼻子走,系统才有可能重新恢复平稳。

这种引入“平滑期”的做法,本身也是在系统里加入了一个新的延迟——信息处理的延迟。有意思的是,一个延迟有时反而能中和另一个延迟带来的破坏性。把反应速度降下来,系统反而稳住了。这听起来像是在帮一个因速度太快而摔跤的人,把他的一条腿故意绑上沙袋,结果他走得比以前更顺了。这就是系统思维的特别之处:它不会要求你每时每刻都做到最优,而是要求你理解各个部件之间的时间差,理解那些你无法消除的滞后正在如何扭曲你的判断。

回过头来想,我们自己的生活里也同样塞满了这类延迟陷阱。比如健身,你练了一天,第二天照镜子看不见腹肌,于是觉得训练没用,猛加重量,结果受了伤。再比如养植物,浇完水叶子不会立刻支棱起来,你以为是缺水,又浇一壶,根反而烂了。所有这些例子都指向同一个事实:你的动作需要时间才能显现效果,如果你等不及,就可能在效果还没抵达之前,做出更多本不必要的动作,从而把系统推进一场失衡的狂潮。

我盯着模拟器里那条上下翻飞、久久不肯收敛的库存曲线,忽然觉得,设计系统和经营生活好像并没有本质的差别。很多时候我们不是不够努力,而是努力得太快,快到错过了反馈真正到来的那个节拍。懂了延迟,你才会甘愿在行动之后,留出那一段必需的空白,不急着追加新的动作,只是看着、等着,相信之前的输入正在路上。

《系统之美》里关于延迟的这一章,没有给出一劳永逸的解决方案,只是反复用案例提醒你:看清系统里存在哪些延迟,承认它们,不要把延迟当成必须消除的敌人,而是把它当作系统自身的一部分。当你开始这样思考,那种面对混乱时的焦躁会减少很多。你不会再慌乱地朝系统扔去更多的指令,而是会停下来想一想:是不是我上一个动作,还走在需要时间才能到达的路上?