第四章 · 送别¶
第二天,周五,陈稳到工位的时候,看到老梁的搪瓷杯还在。但桌上多了张纸,手写的,压在键盘下面。
他走过去,拿起来看。
今晚七点,单位对面那家湘菜馆,包间在二楼,叫“竹溪”。结算组都来,我请。
是老梁的字。笔画很重,第二行写歪了,最后三个字挤在纸边上。
陈稳把纸折好,放回键盘下面。他坐下来,打开电脑,看了一眼邮箱。新的邮件,主题是规则引擎的调度服务升级通告,抄送他,发件人他不认识。
他点开,读了一遍,关掉。
他打开 IDEA,昨天的 MR 还在。他看了一下那个 TODO 注释——跨天时间窗,二十二点到凌晨两点。顾源说要在校验器里处理。但校验器已经提交了,拦截器也跑通了,那个 TODO 只是注释,不是代码。
他想了想,把光标放在 TODO 那行,敲了几行。
他写了一个新的时间解析器,支持跨天段。然后他发了一条消息给 MR 的那个 reviewer:
时间窗配置类增加了跨天支持。单测新增 3 例。要不要合进来,还是单独提一个 MR。
那个人回得很快:单独提,合进来了就不好回了。
他回了一个“好”,然后新建了一个分支,把跨天支持移过去,提交。空的 MR,先放着。
他看时间,十点十五分。
他打开监控大盘,第三行第二格,绿线,平的。刷新了一下,平的。
他把窗口缩小,开始看规则引擎那封邮件的附件。附件是一份技术方案,PDF,二十页。他翻到第三页,看到了一张架构图。他盯着那张图看了五秒钟,确认了一个事情——这个调度服务和结算系统的定时任务用的是同一个资源池。
他关掉 PDF。
下午三点,群里有消息。
是结算组做渠道对账的那个人发的:“老梁说七点,对面湘菜馆,包间竹溪,收到扣 1。”
陈稳打了“1”,发了。
然后他看到蒋辉回了一个:“收到,今晚最后一个到的人买单。”
后面跟了三个表情,一个笑,一个抱拳,一个啤酒。
陈稳没有回复。
他看了一眼手机,何晚下午两点发了一条消息:“周六有什么安排?”
他回了一个:“今晚部门聚餐,老梁请客。”
他等了一会儿,没有回复。
他把手机翻过来,屏幕朝下。
六点四十,他站起来,收拾东西。他把电脑锁了,屏幕灭掉,工位上的东西没有动。他站起来的时候看了一眼老梁的工位——搪瓷杯还在,手写的那张纸还在,键盘的位置没有变过。
他走到电梯口。电梯从 12 楼下来,门打开,里面没有人。
他进去,按了 1 楼。
电梯门关上的时候,他看了一眼楼层按钮面板上的倒影。
他走出大楼,往对面走。湘菜馆在马路对面,要走一条斑马线。他等红灯的时候,看到马路对面已经有两个人站在湘菜馆门口。一个是他不认识的人,另一个是蒋辉。
蒋辉也看见了他,朝他招了招手。
灯变了,陈稳走过去。
“你今天走挺早。”蒋辉说。
“嗯。”
“老梁还没到,先进去坐。”
他们上了二楼,进了包间。包间不小,一张大圆桌,能坐十二个人。桌上已经摆了一盘花生米和一盘凉拌黄瓜。空调开得很低,冷气从头顶的出风口往下吹,陈稳的肩膀凉了一下。
他选了一个靠墙的位置坐下。蒋辉坐在他旁边,对面是圆桌的另一边,现在还空着。
陆陆续续有人来。结算组六个人,加上做渠道对账的那个,做资金报表的那个,还有一个做营销结算的——陈稳不认识他,但蒋辉认识,他们聊了两句,陈稳才知道他是营销结算那边的,刚调过来,跟他们组有对接。
七点零三分,老梁来了。
他推门进来的时候,手里拎着一个塑料袋,里面装着两瓶白酒。他穿着一件短袖的格子衬衫,领口有一块洗不掉的印子,头发比平时乱了一点,像是刚睡醒。
“抱歉,来晚了。”他把酒放在桌上,“楼下超市买了点东西。”
有人起哄:“老梁你今天请客还迟到,自罚三杯。”
老梁笑了一下,没接话。他坐下来,位置是圆桌的主位,正对着门。他坐下之后,看了一眼桌上的人,点了一下头,像在数人头。
“都来了。”他说。“那就点菜。”
菜单传了一圈。陈稳接过菜单的时候,翻了两页,点了一个蒜蓉空心菜,然后把菜单递给旁边的人。
老梁说:“加个剁椒鱼头,再来个辣椒炒肉。他们家的招牌。”
菜上得很快。剁椒鱼头端上来的时候,热气散开,辣椒的味道冲了一下陈稳的鼻子。他吸了一下,没打喷嚏。
老梁给自己倒了一杯酒,站起来。
“来,先喝一杯。”
所有人站起来,杯子碰了一下。陈稳杯子里是茶,他没喝酒。老梁看到了,没说什么。
“第一杯,感谢大家这十一年。”老梁说,“不对,是感谢大家在我的十一年里。”
他仰头喝了一半。
有人笑:“老梁你今天说话怎么这么文绉绉的。”
“我本来就文绉绉的,你们不知道而已。”
大家又笑。陈稳没笑,他喝了一口茶,茶的苦味从舌尖蔓延到舌根。他把杯子放下。
老梁坐下来,夹了一筷子鱼头,吃了一口,说:“还行,没变味。”
陈稳坐在自己的位置上,没有说话。他夹了一块辣椒炒肉,吃了一口,辣味在后脑勺顶了一下。他喝了一口水。
上菜之前,所有人都在聊天。聊的内容从最近的系统升级,到技术支持中心到底在哪栋楼,到老梁新带的团队有几个人。老梁边吃边答,说技术支持中心在 A 座三楼,他现在带六个人,比结算组还多一个,但大部分是新人,要重新带。
“那不就是重新带一拨人。”做渠道对账的那个人说。
“差不多。”老梁说,“但那边的东西不复杂,接入层的东西,逻辑比结算简单。”
蒋辉说:“那也不一定,接入层的坑多,数据量大了之后,什么幺蛾子都有。”
“那倒是。”老梁点头。
陈稳低头吃菜。他注意到老梁说话的时候,左手一直在摸杯沿,拇指沿着杯口转了一圈,又转了一圈。他以前没见过老梁做这个动作。
饭吃到一半,有人提了一个话题:老梁在恒澜十一年,最难忘的是什么。
老梁想了想,说:“最难忘?没想过。应该是某一次上线吧,三四年前,凌晨三点上线,上了四个小时,上完天都亮了。我下楼买包子,包子铺刚开门,第一笼包子还没蒸好,我等了十五分钟。那天的包子特别好吃。”
没有人说话。大概过了两秒,蒋辉说:“老梁,你这说了跟没说一样。”
“事实就是这样。”老梁说,“难忘的事情就是一些很小的事情,大的事情你记不住。”
陈稳把这句话记了一下,没有说出来。
又过了一会儿,老梁的酒喝完了第一杯,他给自己倒了第二杯。
陈稳注意到旁边的蒋辉站起来,举杯走到老梁旁边,说:“老梁,我敬你一杯。”
老梁站起来,两个人碰了一下杯。
蒋辉喝完,说:“老梁,我跟你说的那个事,你考虑一下。”
“什么事。”
“那个。”
蒋辉笑了一下,没说下去。老梁也没有追问,把酒喝完,坐下来。
陈稳不知道他们在说什么。他看了一眼蒋辉,蒋辉的表情跟刚才一样,笑着,看不出什么。
他继续吃菜。剁椒鱼头已经吃了一半,鱼骨头露出来,白森森的。辣椒油在盘底凝住了,因为空调太冷。
八点四十,有人开始看手机。做渠道对账的那个人说家里小孩发烧,要先走。老梁说:“赶紧走,别耽误。”那个人站起来,说了几句客套话,走了。
又过了二十分钟,做资金报表的那个人也走了,说周末要回老家。
剩下六个人。老梁,陈稳,蒋辉,营销结算那个新人,还有两个陈稳叫不出名字的——一个是结算组做测试的,一个是另一个组过来串门的,陈稳不知道他为什么在。
陈稳看了一眼墙上的钟。九点零五分。
他杯里的茶添了三次,已经淡了,颜色跟白水差不多。
老梁喝完了第二杯酒,脸有一点红,但说话还是很清楚。他靠在椅背上,点了一根烟。老板说包间可以抽烟,他把烟灰缸拉到自己面前。
烟雾在空调的风里被拉成一条线,然后散开。
陈稳闻到烟味,没有躲。他不抽烟,但老梁抽烟的时候他从来不躲。
隔壁包间有人在划拳,声音隔着墙传过来,闷闷的。
老梁抽了几口烟,把烟按灭在烟灰缸里。他站起来,拿起酒瓶,看了一眼——空了。他把酒瓶放回桌上,瓶底碰了一下桌面,发出一声闷响。
“差不多了。”他说。
没有人反对。
老梁站起来,去前台结账。陈稳听到前台说了一个数字,他没听清,只听到老梁说“行”,然后是一声扫码的提示音。
陈稳站起来,把椅子推回桌下。
他走到门口的时候,老梁从前台走回来,在走廊里碰到他。
“陈稳。”
他停下来。
“你等一下。”
陈稳站在原地。走廊里只有他们两个人,头顶的灯管有一根在闪,频率很慢,像心跳。
老梁看了他一眼,说:“支援中心那边,我这边有个位置,你做不做。”
陈稳没有马上回答。
“什么位置。”
“技术岗。主要做接入层的问题排查和工具开发。不复杂,但稳定。”老梁停了停,“比结算组轻松。”
陈稳站在走廊里,走廊尽头的窗户开着一条缝,外面是城市的夜色,路灯的光从窗户的缝隙里挤进来,在地上拉出一道窄窄的亮线。
“你什么时候走。”陈稳问。
“下周一正式过去。”老梁说,“但位置一直在,你什么时候想过来,跟我说一声就行。”
陈稳没有回答。
老梁看了他几秒,然后说:“不急。你想想。”
他拍了一下陈稳的肩膀,往楼梯口走了。
陈稳站在走廊里,那根灯管还在闪。
他听到老梁下楼的脚步声,一声一声,逐渐变小。然后是一个开门的声音,然后没有了。
他站了大概十秒钟,然后往楼梯口走。
他下楼的时候,在拐角处看到蒋辉站在门口,正在看手机。蒋辉看到他,说:“走了?”
“嗯。”
“你怎么回去。”
“地铁。”
“我也是。那一起。”
他们没有一起走。蒋辉接了一个电话,走在前面,声音压得很低,陈稳听不清他在说什么。他跟在后面,走到地铁站口的时候,蒋辉挂了电话,回头看了他一眼,说:“那我先走了,十号线。”
“好。”
蒋辉转身走了。他背着双肩包,走路的节奏很快,没有回头。
陈稳站在地铁站口,看着蒋辉的背影消失在楼梯下面。
他没有马上进站。他站了一会儿,拿出手机,看到何晚七点发了一条消息:“好的,别喝太多。”
他回了一个:“结束了。”
他等了几秒,没有回复。他把手机放回口袋,进了地铁站。
他刷卡进站,站台上等车的人不多。他站在靠墙的位置,看着轨道另一侧的广告牌,是一个房地产广告,上面写着“首付三十万,安家上海”。广告牌上的房子是效果图,窗台上放了花,阳台上坐着一个人,在看书。
列车进站,刹车声尖锐,刺了一下他的耳膜。他上了车,找到一个靠门的位置站着,没有坐下。
车厢里有一个小孩在哭,声音很大,母亲在旁边哄,说“到了到了,快到了”。陈稳看了一眼那个小孩,小孩大概三四岁,脸上全是眼泪,鼻涕挂在嘴唇上面。母亲用纸巾给他擦,小孩扭了一下,哭声更大。
陈稳移开视线,看着车窗外的隧道。车窗玻璃上反射出车厢里的样子,那个小孩,那个女人,他自己。他的脸在玻璃上有些模糊,因为隧道里的灯光一直在变,一会儿亮,一会儿暗。
他想起老梁说的那个位置——接入层问题排查和工具开发,不复杂,但稳定。比结算组轻松。
他想起老梁说的“别学我”。那是昨天的事,但今天老梁就在问他过不过去。
他想起老梁的十一年,七个系统,最高绩效 B+ 一次。
他想起老梁今天伸手摸杯沿的那个动作。
车厢里播报声响起:下一站,到站请准备下车。
他坐了四站,下车,换乘,再坐两站。
他出站的时候,手机震动了一下。他拿出来看,是何晚的回复:“到家了?”
他打了一个“刚到”,然后删了,重新打了一个“快了”,发送。
他走回小区,门口的保安坐在岗亭里看手机,屏幕的光照在他脸上,亮了一下暗一下。陈稳从保安面前走过,保安没有抬头。
他上楼,用钥匙开门,屋里灯是黑的。
他没有开灯。他换了鞋,走到客厅,在沙发上坐下来。窗外的路灯透过窗帘的缝隙,在天花板上投出一道细长的光。
他在沙发上坐了一会儿。
然后他站起来,走到厨房,打开冰箱,拿出一瓶水。冰的,瓶身上凝了一层水珠。他拧开瓶盖,喝了一口,水的凉度从喉咙一直往下走。
他关上冰箱门,走回客厅,把水放在茶几上,没再喝。
他打开手机,备忘录里有一条待办:“时间窗跨天校验。v2。”他看了那条待办几秒钟,没有划掉,也没有改。
他打开通讯录,找到老梁的号码,点进去,看了一眼,然后退出来。
他把手机放在茶几上,屏幕朝上。
窗外的路灯照在屏幕上,屏幕反射出一小块光,像一枚硬币。
他坐在沙发上,看着那枚硬币一样的光,坐了很久。
然后他站起来,去了书房。
他打开电脑,打开 IDEA,那个跨天时间窗的 MR 还在空的状态。他打开了那个分支,改了校验器的逻辑,加了对跨天段的支持,改了配置类的注释,跑了单测,全绿。
他提交了 MR。
他写的 commit message 只有一行:
feat: 窗口配置支持跨天时间窗(22:00-02:00)
他按了推送。
键盘的声音在房间里响了两秒,然后安静下来。
他靠在椅背上,屏幕的光照在他脸上。他看了一眼电脑右下角的时间——二十三点四十七分。
他站起来,走到窗边,拉开窗帘。对面那栋楼大部分窗户都是黑的。只有一扇窗还亮着灯,黄色的,窗帘半拉着,看不清里面是什么。那扇窗,他看了十一个月了。
他拉了拉窗帘,把缝隙拉大了一点。
对面那扇窗的灯,灭了。
他站在窗前,看着对面那扇变得漆黑的窗户,站了一会儿。
然后他拉上窗帘,转身,走回卧室。