核心要点
先看结论——该做什么、什么时候做:
- 6月9日,也就是下一个周一的快照,把你用到的每一个门户的中位数和第90百分位等待时间拉出来,来源可以是这份周快照,也可以是你自己的靠泊时间戳,然后开始留你自己的序列。责任人是维护可视化数据流的那个人。目标:从6月8日起,每个在用门户每周都要有一条记录下来的中位数和一条记录下来的尾部分布;任何供应商给不出尾部的门户,标记为未知,不许估算。
- 本周内把触发条件写成文字:如果某个你依赖的门户的锚地到靠泊中位等待,比你自己过去四周的中位数高出两天以上,或者绝对值突破七天,就在两个工作日内按观测值重排该航线上所有未完成的货,并把接下来四周货量的30%挪到备选港。在接下来两个周一的快照上各复盘一次,决定是继续还是撤回。
- 6月30日前,把所有挂到这些门户的航线的计划门到门重算一遍,口径是海运段加观测到的中位等待加内陆段,并把新数字写进计划表,也写进任何按旧数字定过的合同价格里。责任人是计划负责人,财务联签。目标:6月30日前全部航线完成重定基准;任何观测值超出计划值20%以上的航线,当周升级给商务负责人。
- 6月30日前,让你的内陆承运人画出从两个候选港到你配送中心的实际公路路线,确认两条走廊重合不超过一半距离。如果重合超过一半,备选港就不构成冗余,导入工作到此为止,结论和路线图一起归档。
- 从6月15日那一周起,用一个季度的时间,故意把10%的货量放到备选港走,从锚地到靠泊到出闸全部打时间戳,目的只有一个:攒出你没有的那段序列。目标:一个季度内至少9个箱子走备选港,并且两个时间戳都记录下来。
- 把这份周快照放进未来十二个月的固定周一复盘里;任何一个门户的中位等待连续四份快照都在七天以上,就在当月启动路径或采购地的复审,不要等到下一轮招标。责任人还是那位计划负责人,复盘日期现在就写进日历。
Portcast 5月24-30日拥堵快照显示,全球十大最拥堵港口中非洲港口占据六席。阿尔及利亚贝贾亚港以11.89天的中位等待时间位居榜首,几内亚科纳克里港11.68天紧随其后,莫桑比克贝拉港9.49天。中国港口包括青岛2.06天、宁波1.50天和上海1.30天处于中等拥堵水平,而美国和欧洲主要港口延误极小。
详细拆解
把地图摊开看,别把这张表当成排行榜。排行榜只告诉你谁最差,地理告诉你为什么。Portcast 5月24日至30日这一周的拥堵快照里,全球最拥堵的十个港口有六个在非洲。阿尔及利亚地中海沿岸的贝贾亚以11.89天的中位等待时间排在第一;几内亚的大西洋门户科纳克里11.68天紧随其后;莫桑比克海峡边的贝拉是9.49天。我反复看的不是这个水平值,而是挂在它旁边的那个数:一周之内恶化了5.45天。也就是说七天之前,这个港的数字是6.44天。这不是一个港过了一个糟糕的礼拜,这是一个港挪了位置。
再说清楚这个数是怎么算的,因为口径决定了整件事。这份快照里的船舶中位等待时间,是从船舶抵达锚地那一刻算到它成功靠泊那一刻。所以11.89天是排在起重机碰到你的箱子之前的队。卸船、堆场、出闸、内陆运输,全都加在这上面,一个都不在这个数里面。同一套方法里还有一条值得划两遍的注脚:船舶也可能在离岸处被扣住而不进锚地排队。也就是说,一个港完全可以给出一个很低的读数,而它的船其实还在等,只是没等在模型盯着的那个锚地上。所以这张表安静的那一头,在纸面上比在水面上要安静。
而惊喜恰恰在安静的那一头。青岛2.06天、宁波1.50天、上海1.30天,被归在中等拥堵,等待时间的描述是“在上升”;美国和欧洲的主要港口则是延误极小。把这句话反过来读一遍:承载着全世界绝大部分集装箱吞吐量的那些港,这一周没什么可报的;而吞吐量只占一个零头的那些港,一条船要靠个泊位得等将近十二天。十年前我不会想到这张表会长成这个样子,而它值得你花十分钟去看的原因在于,这个形状是花了好些年慢慢挪过来的,不是五月份突然出现的。
十个里占六个落在同一个大陆上,这不是运气不好,在任何人开始解释某个国家之前,先把这个说清楚。这条海岸线上的港口共享的是一种结构,而不是一组问题。一个只有一两个集装箱门户的市场,不管当初有没有人做过决定,它已经把风险集中起来了。这些门户只有不多的几个深水泊位、零星几条挂靠航线,内陆靠一条公路和一条铁路去够,一旦排队形成,它无处可泄,因为下一艘有舱位的船是一周之后的事,不是一天之后的事。
而在一个每周十五条航线挂靠的枢纽,同样数量的延误船几天就消化完了,因为总有下一个泊位窗口、下一票订舱。冲击之后的恢复时间,是由有多少条航线在挂靠决定的,不是由码头有多好决定的。这是关于网络的事实,不是关于这一周的事实。
十年前这里是另一回事,我不是在怀旧。你那时候问我拥堵在哪里让进口商最花钱,我会指着中国的高吞吐量海岸、指着美国西海岸、指着欧洲的大门户,换句话说,我会指着你的箱子真正所在的那些地方。钱也就是往那儿投的,而且投对了。泊位挖深了,岸桥长高了,堆场自动化了,青岛、宁波、上海今天的码头,让上一个十年走过一遍的人来看是认不出来的。证据就摆在这份快照里:上海1.30天。活干完了,约束挪走了。
真正变的是这张网,不是那些港。如今世界上更多的进口需求,压在那种一个月只有四五班船、而不是一周四五班船的门户后面,内陆只有一条路,备选港只有一个像样的,而拥堵根本不跟着吞吐量走。它跟着到港量与该地清关能力之比走,而这个比值恰恰在那些吸收糟糕两周的余量最薄的地方最差。这就是为什么一份全球最拥堵十大港口的名单,会被一些加起来只占全球吞吐量很小份额的地方占满。吞吐量告诉你起重机在哪里,它不告诉你你的船在哪里等。
把这个数换成你计划里真正用的单位,因为小时比天诚实。贝贾亚11.89天是285小时,科纳克里11.68天是280小时,贝拉9.49天是228小时,上海1.30天是31小时。贝贾亚是上海的九倍多一点,同一套方法、同一个星期量出来的。一条周二早上到贝贾亚外锚地的船,按中位数算,到下一个周末后半段还停在贝贾亚外头,而且还没开始卸货。如果你的生产计划对一个在这张名单上的港,用的是接近中国那头的数字,那么这中间差的不是几天的迟到,这是另一条航线。
恶化量是我真正会动手的地方,它值得单独占一段。水平值告诉你该按什么做计划,恶化量告诉你计划已经错了。贝贾亚七天里挪了5.45天,从6.44到11.89。用变化量除以起点,这条队在一周之内长了大约85%。一个港口的物理吞吐能力不可能在一周里变动85%,所以动得这么快的,是到港节奏、航线节奏,或者是上游有什么东西把一批船推进了同样的那几天。如果你之前是按6.44在做计划,那你是在按一个已经不存在的数字做计划,而下一份快照——不是再下一份——才会告诉你这是一次台阶式的位移还是一次尖峰。
接下来要想清楚水平值和事件的区别,因为进口商擅长处理事件,不擅长处理水平值。事件有名字、有开头、有结尾,所以有人通报,有人拍板,计划重新打开。水平值这三样一样都没有,所以什么都不触发,多出来的那些天就悄悄变成了这条航线本来就要花的时间,然后被永久吸收进安全库存里。11.89天不是事件。它是那一周该港中位船舶的平常体验。如果你把它当成罕见的七天去备库存,那你是在用一次性的理由,为一个长期存在的状态付钱,而且明年你还得接着付。
再看名单的另一头,那边水平值很低,但在动。青岛2.06、宁波1.50、上海1.30,全是中等,全被描述成在上升。一个正在上升的低值,和一个稳定的高值,是两个完全不同的计划问题,原因恰恰在于你的计划是建在这个水平值上的,而这个水平值正在底下移动。两天是可以过日子的;一个上季度还是1.6、现在正往某处去的两天,是你每个月都得重新做一遍计划的数,而代价不在那两天上,代价在反复重做计划、在扯皮、在你因为从来没把数字谈拢而不断往上加的库存。对你依赖的港口,既要看状态,也要看变化。
中位数是排在中间的那条船,而中间那条船从来不是毁掉你那个月的那条。让你疼的是排在最后的那条。这份快照背后的同一套方法里,除了中位数还描述了第75和第90百分位的等待时间,而老实的做法是按第90百分位做计划,因为第十条船才是错过生产窗口和客户交期的那条。如果你手上只有一个中位数,你是在按那条表现规矩的船做计划。去找卖你可视化的人要尾部分布;如果他们不给,你自己留着,因为靠泊时间戳是你的,任何报告都不会是。
这里有一件好事,值得拿走。这条队排在水上。锚地上的船是可以数的,一条十一二天的长队,给了你十一二天的提前量去知道你的箱子要晚,前提是你正好在看锚地。大多数进口商没在看锚地,他们在看承运人的船期表,而船期表是围着这艘船本该拿到的那个泊位窗口搭起来的。这两者之间的差,恰好就是这条队的深度。这个偏差看得见、不要钱、而且公开,它是整张名单上最便宜的一个预警。
现在算账,所有假设都摊在桌面上,你可以跟方法吵架,不用跟我吵。假设你从贝拉进口。假设你一个月走30个40英尺箱,也就是一天一个箱的流量。假设你的计划表和你的合同都按港口等待两天算,这大致是中国那头给出的数。假设到锚地的海运段是28天,到配送中心的内陆段是5天。你计划里的门到门是35天。贝拉观测到的中位等待是9.49天,所以同一条线实际跑42天半。这条线比计划长约21%,而且是对中位那条船而言,不是对倒霉的那条。
这段延误的持有成本是个小数,在别人拿它说事之前,我先给你看清楚为什么。计划和现实之间差7.49天。一天一个箱,那就是七个半箱的额外库存。假设每箱货值40,000。那就是大约30万的营运资金是你没打算占的,在假设8%的资金成本下,一年大约24,000的持有成本,只要这个水平值还在,你就年年付。如果这个水平值是长期存在而不是暂时的,那它就不是该记在某个糟糕季度头上的事件成本,它是你服务成本里一条永久的线,诚实的去处是产品定价,而不是供应链团队的差异栏。
所以真正值得算的是替代方案,而它有自己的假设。假设你在同一条海岸线上另一个位置的备选港,海运段多4天,但中位等待是3天而不是9.49天,再假设从它出发的内陆段同样是5天。它的门到门是40天,对42天半,所以光在中位数上就快两天半,这还没算两个港口的等待互不相关带来的好处。两天半在一天一个箱下就是两个半箱,大约释放10万营运资金、一年大约8千的持有成本。另一头,给这个备选港的导入标个价:一个项目、一次内陆招标、某人一个季度的时间。这两样里,一样只让你花一次钱,另一样让你年年花钱。
注意这个算式里哪个假设最脆。是内陆段。如果从备选港出来的那条路是8天而不是5天,算式就翻过来,备选港尽管锚地排队更短,门到门反而更慢。这是我看了很多年的一个错:他们换了港,留着走廊,然后纳闷为什么什么都没改善。在你把任何一个备选港叫作备份之前,让你的内陆承运人把两条路线都画出来,看看两者有多少距离是重合的。如果它们在你到配送中心的路上重合超过一半,你买的是另一个港和同一份风险。
在这条海岸线上,冗余是真的有,这很不寻常,所以用起来。这张名单上十个地方有六个在同一个星期里拥堵,但原因基本都是各自本地的:一个泊位、一个堆场、一段路、一种航线节奏。本地原因彼此不相关,而这恰恰是让备选港成为真保险而不是摆设的那个属性。拿它跟另一种情况比一比:两个港口共用一个原因,你会发现备选港在第一个港出事的同一个早上也出事。问一句,要让你的两个门户同时关掉,需要哪几件事同时成立。如果诚实的答案是两件不相干的事,那这个备选港值得导入;如果是一件,那它不值得。
十年尺度上的那个问题,决定了你是在管理这件事还是在为它付钱。如果你要签一份三年供货协议,进的是由这些门户之一服务的市场,那么拥堵水平是这笔交易的条款之一,不是风险登记表上的一行。一份按两天港口等待定价、而签约港口中位等待是十二天的合同,在签字那天就定错价了,而代价会晚一点以安全库存、以错过窗口、以“谁本该早知道”的争吵的形式回到你身上。把观测到的中位数放进价格里,把复盘放进日历里,这个水平值就不再是你吸收的意外,而是有人认领的一个数字。
然后说说那种修不好的东西,很多钱就是花在这上面的。一个泊位大概是三年的物件:设计、招标、施工、调试,最后得到的是一个你能站上去拍照的东西。而港口背后的网络是十五年的物件,由一堆根本不属于港口的决定组成:有多少条航线挂靠、铁路由谁来跑、那条路与这个项目是否在同一个预算周期里升级、班制是否覆盖高峰。一个门户可以加一个泊位、按时完工,然后在三年后仍然交给你同样的门到门服务,因为约束你的是航班数量和箱子离开的速度。你读到扩建公告的时候,问的是预计每周几条航线,以及箱子下了码头之后会怎么样。
再讲一件关于度量的事,因为这是“吵架”和“知道”之间的区别。留你自己的序列。你的箱子、你的出闸日期、你的靠泊日期,表格里一列,一周十分钟,你就会拿到任何报告都不会给你的东西:一段用你自己的货量量出来的尾部。给你报平均数的供应商,说的是那个表现规矩的箱子;让你花钱的是第十个。除非你指名要分布,没人会把那个尾部分布递给你,而且你一开口,不少供应商会悄悄拿平均数来顶替。
这些坑几乎全是“量错了那一头”的变体。按承运人的泊位窗口做计划、而不是按观测到的锚地到靠泊时间,意味着一条十一二天的长队根本不会出现在你的数字里。用中位数而不是尾部,意味着你的计划描述的是那条表现规矩的船。把一个大枢纽的低读数当成没有延误的证明,忽略了那些被扣在离岸处、没进锚地排队的船。不等下一个周一就断定恶化是尖峰,意味着你要重做两次计划而不是一次。把针对水平值买的库存叫成事件库存,意味着两年后你还在为它付钱。而换了港、留着走廊,意味着这个项目最后交付的只是提单上换了个名字。
把地图收起来。这份快照让我看到的、也是我更愿意记住而不是记住上面任何一个数字的,是等待的地理已经悄悄对着吞吐量的地理翻转过来了。承载了世界增长的那批码头,花了十五年在水侧把自己做好,而且大体做成了,于是这条队去找别的地方住了。它找到了那些货量薄、航线少、内陆只有一条路的地方。十年前这里是另一回事,我当年学会读的那张地图不会给我看这个。真正变的是这张网。港口只是你能从水上看得见的那一小部分。
↑ 返回核心要点