十一月的最后一个星期六,陈明难得睡到了八点。
跑步没断,只是推到了下午,他穿著拖鞋在阳台上浇花,琴叶榕又冒了两片新叶,绿萝从花槽边垂下来,藤蔓快够到楼下的阳台了。
手机放在茶几上,屏幕亮个不停苏冉每隔半小时发一条消息,罗湖的铺面平面图、福田的装修报价单、宝安的设备清单、龙华的人员排班表。
他一边浇水一边语音回她:“周末你歇一天,周一再说。”
苏冉回了两个字:“不累。”
陈明摇摇头,把手机翻了个面扣在茶几上。
十家供应商的联繫方式安静地躺在他邮箱里快一个月了,衣索比亚的,肯亚的,哥伦比亚的,巴拿马的,牙买加的,瓜地马拉的,印度尼西亚的,叶门的,巴西的,坦尚尼亚的——十个產区,十个庄园主。
他挨个打过电话,不是商务谈判的那种打,就是聊天,聊產区的天气,聊今年的採收情况,聊海运延误对生豆新鲜度的影响。
聊著聊著,供应商们发现这个中国买家不只是会挑豆子,他对全球精品咖啡產区的微气候和土壤类型了如指掌,能从海拔和年均降雨量一直聊到发酵罐的控温精度。
巴拿马翡翠庄园的老庄主跟他通完第三次电话后,主动派了儿子从博克特专程飞香港,带著当季竞標批次的全部样品和氮氧锁鲜技术资料,在时光咖啡二楼跟他聊了一整个下午。
哥伦比亚棕櫚树庄园的少东家跟他视频通话时,专门把镜头对准窗外火山脚下的种植园,用磕磕绊绊的英语说“你一定得来,我带你去看我们的发酵站,这上面的是今年安第斯山最早的雨”。
苏利南和牙买加的供应商在whatsapp上拉了个小群,把陈明也加了进去,说要搞一个“精品咖啡直供中国”的联合报价机制,群名被埃塞的老庄主改了,叫“chen’s group”,陈明的名字被他们当成了品牌的代称。
这些名字和面孔,不再是邮箱里的邮件地址或whatsapp上的头像,他们会在周末给他发自家的猫趴在生豆袋上的照片,会在他生日那天集体发来一段用七国语言七嘴八舌翻唱的生日歌。
时光咖啡的生豆供应链,从“陈明的供应商”变成了“陈明的朋友们”,以后不管市场上缺什么豆子、涨什么价,他一个电话就能拿到品质最好的批次这已经不叫渠道,叫人脉。
下午三点,陈明到时光咖啡的时候,门口围了一圈游客在拍照,三角梅开得正好,玫红色的花瓣铺了一地,几个姑娘站在门头下举著手机,摆了半天姿势还没拍完。
他从侧门绕进去,刚进吧檯,周悦就凑过来,声音压得特別低,但眼神出卖了她:“老板你今天不该穿拖鞋来的。”
“怎么了?”
“小马哥来了。”
陈明顺著周悦的视线往二楼看了一眼,靠窗的卡座上坐著一个穿深灰色连帽衫的人,很瘦,戴著一副银色细框眼镜,面前是一杯还没喝完的手冲瑰夏。
旁边的包间门开著,看起来是刚从包间里出来换了个位置,他正低头看手机,两个助理模样的人坐在隔壁桌上,一人一杯美式,安静得像是两块背景板。
陈明低头看了看自己脚上的拖鞋——浅灰色麂皮乐福鞋,还好,不是人字拖。
他拿起吧檯上苏冉刚冲好的一杯翡翠瑰夏,端著上了二楼。
“马总,这杯是刚冲的,比桌上那杯更新鲜。”他把杯子放在桌面上。
小马哥抬头看了他一眼,又低头看了看杯子里的咖啡液,端起来抿了一口。
“你就是陈明?”
“是我。”
“我最近总听人提到你,先是老张,然后是老孙,然后是你这家咖啡店自己火起来了,说你以前写代码的,还自己写了一套点单系统,搞得跟我们那帮程式设计师一样什么都想自己动手写。”
“那套小程序只是一套简单的交互逻辑,跟您做的没法比。”
陈明在他对面的椅子上坐下来。
小马哥摆了摆手:“別谦虚,你店里用的点单系统我让同事试了一下,订单並发处理的稳定性比我们园区好几家合作商的saas都好,后厨分单的逻辑是你自己用c++写的?”
“后端核心模块是go写的,做了一些协程池的优化,尖峰时段並发用到厨房和吧檯两个队列自动分流,其实没太复杂,就几个goroutine的调度逻辑。”
小马哥的表情变了一下,不是客套的微笑,是那种技术人对上电波之后特有的专注感,手指无意识地在桌面上点了两下。
“协程池的分流怎么处理优先级?高峰期如果客人催单,你的系统是插队还是顺延?”
“不插队,我在消息队列里设了一个优先权重,往前提半格但不打断当前处理,主要靠分流而不是抢顺序咖啡机和蒸烤箱不能抢,抢了会出事故。”
“这个思路跟我们做服务端的队列调度很像。”
小马哥往前倾了倾身子,银框眼镜反射出笔记本电脑屏幕的一小片蓝光,“你们门店的翻台率是手工统计还是系统实时计算?”
“实时算,座位状態用传感器加扫码点单的时间戳推算,翻台数据和客单价联动,每半个小时更新一次。”
“这个联动模型你怎么调的?”
两个人从协程池聊到了微服务架构,从咖啡机的时序控制聊到了伺服器的容灾方案。
陈明讲到节点切换的延迟问题时,说了一句“需要控制在一点二秒以內,咖啡萃取的黄金窗口是二十七秒,断了就废”,小马哥听完当场用筷子蘸了水在桌上画了一张时序图。
楼下的客人和店员们暗暗注意到了这一幕,周悦端著壶站在吧檯边往二楼偷瞄,蒸汽棒停了好几次都没顾上重新加热牛奶。
旁边一位熟客正在用手机小心翼翼地朝二楼方向拍了几秒视频,发到朋友圈配了句“在时光咖啡二楼看到小马哥在跟老板聊技术”。
小马哥的助理之一轻声提醒了一下时间,他摆了摆手,陈明说到微服务边界拆分的时候,举了一个咖啡豆供应链和三方平台的跨域调用例子,小马哥摘下眼镜擦了擦镜片,说了一句:“你这个思考的深度比我们很多海归博士都到位。”
陈明笑了笑,没有说自己是程式设计师出身,也没有说自己之前在这行干了七年,他只是端起瑰夏又喝了一口,闻到花香的尾调在鼻后慢慢散开。
“我一直觉得咖啡跟代码很多时候是相通的,”
他说,“都是把一堆变量放进去,等一个结果。”
小马哥愣了一下,然后笑了,那笑声不大,但整个二楼都听见了。
“你这个比喻我回去要讲给我们技术总监听。”
他把杯子端起来,跟陈明的杯子碰了一下,碰得很轻,咖啡液晃了晃没洒,“你这家店真的不错,以后我常来,包间帮我留一间,我有时候需要换个地方想事情。”
陈明回头看了一眼楼下,苏冉已经站在楼梯口等著了,他冲她招招手,苏冉立刻上楼,手里拿著新印出来的专属预约卡。
陈明大概五天前让小豪帮店里赶製了一批给特別客人的东西,可以在小程序上直连包间预订的专属通道,她把卡片轻轻放在小马哥面前。
“给马总的预约通道,”
苏冉说著,又补了一句,“瑰夏竞標批次在桌上最后一杯了,再喝就得等明年的新豆了。”
小马哥的助理不动声色地收了预约卡,他倒没多说什么,只是站起来的时候朝陈明点点头,转身跟著助理下了楼。
楼梯踩到一半又回了一下头:“你的系统有更新版本就发我看看,我有个技术群可以把你拉进去。”
陈明靠在二楼栏杆上,看著小马哥一行人走出店门,街对面一辆黑色轿车缓缓启动,融进了科技园周末傍晚的车流里。
他听到身后有动静,转身一看,周悦已经衝上了二楼,手里还抓著咖啡壶,脸上是那种拼命忍住尖叫的表情,整个脸都憋红了。
“小马哥刚才说你的代码比他们海归博士还到位?他说了!我站在吧檯全听见了!”
“你別乱传。”
“我没有乱传阿涛也听见了!小罗也听见了!苏冉姐”她回头看苏冉,苏冉已经若无其事地回了吧檯后面翻帐本,但翻帐本的动作明显比平时快,嘴角还掛著一个压不下去的弧度。
阿涛端著新烤的肉桂卷跟了上来,把盘子往陈明手里一塞:“老板你配肉桂卷,小马哥配瑰夏,我配一个传奇故事。”
他挠了挠头,麵粉蹭在耳后,“以后我出去跟人吹我是时光咖啡的,就不用再解释时光咖啡是什么了,直接说『小马哥来过的店』。”
陈明咬了一口肉桂卷,酥皮在嘴里碎开,黄油的香气混著肉桂的甜辣,他嚼完咽下去,喝了一口瑰夏清口。
楼下的客人们还在交头接耳,三三两两地往二楼指,有两个姑娘跑过来问能不能加单小马哥同款瑰夏,周悦从二楼衝下去连声说“马上马上”。
苏冉已经切出后台排期表,重新检查了一遍下周的包间预留。
桌上的瑰夏还剩最后一点,凉了反而更甜。
陈明对著店堂里此起彼伏的点单声和说笑声看了片刻,耳边响起小豪的声音:“宿主,你的底层架构笔记刚闪了一下云端同步的提醒,看起来你把刚才聊的架构给你自己做了个备忘?”
“同步就同步吧。”
他把最后一口瑰夏喝完,杯子放回桌上,今晚回去把那个时序图的思路整理成一份技术分享文档,改天发给那位同样痴迷底层逻辑的小马哥看看。