他拿出手机,打开跟她的对话框。
对话框里还是那条三天前的消息。她没有回。
他打了几个字:“烟扔了。”
看了两秒,删掉了。
又打了几个字:“你刚才没说完的话——”
没有打完。他看著这几个字,觉得自己很蠢。她不会在消息里说的。她不会在任何地方说。她只会在那些不经意的、没有防备的瞬间,让那些话自己跑出来。比如在电梯里说“好久不见”,比如在会议室里说“谢谢”,比如在巷子里说“我需要的是——”。
然后在车灯亮起来的那一刻,把它们全部收回去。
他把手机放回口袋,走出巷子。风吹过来,带著十一月夜晚特有的清冷。他站在公司大楼门口,抬头看了一眼。十五楼的灯还亮著。
她回去了。
他也该回去了。不是因为工作,是因为她在那里。
裴衍之走进大厅的时候,电梯正好下来。门打开,里面没有人。他走进去,按了十五楼。电梯上升的时候,他想起她刚才看他的那个眼神——不是生气,不是尴尬,是一种他说不清楚的东西。像一个人在悬崖边上站了很久,回头看了一眼。不是要跳,是想看看身后有没有人。
他看到了。
她在看。
电梯到了十五楼,门打开。走廊上很安静,办公区的灯亮著,但没有人。他走进业务中台的办公区域,坐下来,打开电脑。萤幕上是她今天下午发过来的测试报告,最后一页附的那行注释还在:“权重因子调整为零点一五后重新跑了一遍,数据已更新。明天继续。”
他看著这行字,忽然想起她刚才在巷子里说的另一句话。
“烟不是好东西。”
这句话她三年前也说过。那时候他们还在一起,有一天他抽烟被她闻到了,她皱著眉头说“烟不是好东西”。他说“我知道”,她说“知道还抽”,他说“压力大”,她沉默了一会儿,说了一句他从来没有忘记的话。
她说:“你可以找我。”
那之后他很长时间没有抽烟。不是因为她说了那句话,是因为她说那句话的时候,语气里有一种他从来没有在她身上听到过的东西——柔软。像一块冰,在太阳下面晒了很久,边缘开始融化,滴下来的水是温的。
后来她走了,他又开始抽了。
现在她又说了同样的话。
“烟不是好东西。”
不是“你可以找我”。是“烟不是好东西”。但他在这五个字里,听到了和当年一样的东西。一样的频率,一样的波形,一样的被压缩在理性表层下面的温度。
他关掉电脑,靠在椅背上。天花板上那盏灯还是旧的,光线不均匀,中间亮两边暗。他盯著那盏灯,脑子里反反复复转著一句话。
她刚才差一点就说出来了。
差一点。
他想,也许下一次,车灯不会那么准时地亮起来。也许下一次,巷子会更暗一些,暗到她看不见他的脸,暗到她以为没有人在那里,暗到她终于可以把那句话说完。
也许下一次。
连续三天,程司白都是最后一个离开办公区的人。
第一天她把Raft变体的边缘场景测试从五千次扩大到八千次,跑完最后一轮的时候已经是凌晨一点二十。数据比预期中好,蓝色标注的项目占了百分之九十三,红色的只剩七项。她在笔记本上记录了每一项需要优化的地方,写了整整三页,字迹比平时潦草,但每一个技术细节都写得很完整。
第二天她把那七项红色项目拆解成十四个子问题,每一个都写了两种以上的解决方案,然后用排除法筛选出最优的那个。她在会议室里待到十二点四十,出来的时候走廊上的感应灯已经不太灵敏了,走了三步才亮起来。她没有在意,继续往前走,脚步声在大理石地面上响著,节奏和往常一样均匀。
第三天她开始重构动态超时窗口的校准算法。把指数加权移动平均的权重因子从零点一五调整到零点一二五,跑了一轮模拟,效果不够好。改到零点一三七五,再跑一轮,延迟下降了百分之八,但领导者选举频率又上升了。她在笔记本上画了一张权重因子与性能指标的对照表,横轴是权重,纵轴是延迟和选举频率,曲线在零点一二到零点一五之间反复震荡,始终找不到一个完美的平衡点。
她盯著那张表看了很久,然后在旁边写了一行字:“不存在最优解,只能取舍。”
写完之后她看著这行字,忽然觉得它不仅仅在说算法。
她把那行字划掉了。
何悦是第三天下午发现不对劲的。
她在茶水间碰到程司白的时候,对方正在往杯子里倒热水。水满了也没有停,热水从杯口溢出来,流到台面上,顺著边缘往下滴。何悦喊了一声“程姐”,她才回过神来,关掉水龙头,拿抹布把台面擦干净。动作很从容,一点都不像一个刚刚犯了错的人。
“程姐,你这几天是不是没睡好?”何悦靠在门框上,手里端著自己的杯子,语气尽量放松,像在聊一件不那么重要的事情。
“还好。”
“你眼圈都出来了。”
“昨天睡得晚。”
何悦看著她把杯子擦干净,重新倒水,水位只到杯子的三分之二。这次没有满。
“程姐,你是不是因为——”何悦停了一下,斟酌用词,“裴哥的事烦?”
程司白转头看了她一眼。那一眼很平,平到没有任何情绪,平到何悦觉得自己问了一个很蠢的问题。
“不是。”程司白端著杯子走过她身边,“我在优化算法。”
何悦站在茶水间门口,看著她的背影走远。她没有跟上去,而是拿出手机,在“共识观察小组”里发了一条消息。
“程姐状态不对。这三天她每天都加班到一两点,今天倒水倒到溢出来都没发现。她以前从来不会这样。”
陆维安秒回:“是不是太累了?”
何悦:“不是累。是那种……怎么说,故意让自己累。你们懂吗?”
群组里没有人回。过了大概一分钟,何悦又发了一条:“我觉得她在躲什么。”
裴衍之看到这条消息的时候是下午四点半。他在会议室里整理测试数据,手机放在桌上,萤幕亮了一下。他看了一眼那条消息,没有回,把手机翻过去扣在桌上。
他知道她在躲什么。
那天晚上在巷子里,她差一点把那句话说完。车灯亮起来的时候他看到了她的侧脸——不是尴尬,不是后悔,是害怕。那种害怕他很熟悉,三年前她提出分手的时候,他从她的眼睛里看到过一模一样的东西。
她不是不想说。她是不敢说。
说出来就意味著承认。承认她需要什么,承认她想要什么,承认她不是一座孤岛,承认她也有软弱的时候。这些东西对她来说比任何技术难题都可怕。技术难题总有解法,再不济也可以换一种方案。但人的软弱没有解法,你只能承认它在那里,然后学会跟它相处。
她不会承认的。她只会用工作把自己填满,不给自己留一秒钟去想那些东西。测试、优化、重构、跑数据——这些事情不需要她面对自己,只需要她面对程式码和数字。
他理解她。因为他做过同样的事情。
离职之后那两年,他也是这样过的。接项目、写程式码、修Bug,一天工作十四个小时,不给自己留时间去想那个名字。他以为只要足够忙,就可以忘记。后来他发现忘记不是目的,目的是让自己变得足够强大,强大到即使想起来也不会疼。
但现在他知道了。不会疼不是因为强大,是因为麻木。而麻木不是一种健康的系统状态——它只是把所有的异常都屏蔽了,不报警,不处理,不恢复。系统看起来在运行,但你不知道它什么时候会崩。
他不想看到她变成那样。
第四天早上,程司白到公司的时候发现桌上放著一杯咖啡。
美式,不加糖不加奶。杯壁上没有笑脸,没有记号笔画的任何东西。就是一杯普通的咖啡,放在她键盘的右边,占著她平时放水杯的位置。
她看了一眼咖啡,没有碰,坐下来打开电脑。
萤幕上是昨天没跑完的测试,进度停在百分之六十七。她点开日志,从昨晚中断的地方开始看。日志很长,翻了十几页,每一行都是系统状态的记录——节点启动、领导者选举、日志复制、心跳超时。她盯著那些行,一个字一个字地看,看到第三页的时候发现自己已经把同一段看了三遍,但一个字都没有读进去。
她把日志关掉,重新打开。
又看了两页,还是读不进去。
她靠在椅背上,闭了一下眼睛。脑子里很乱,各种思绪像没有排序的数据集,散落在内存的各个角落,找不到一个统一的索引。测试参数、优化方案、权重因子、边缘场景——这些东西都在,但她无法把它们组织成一个有意义的结构。
她睁开眼睛,看了一眼那杯咖啡。
她没有喝。她把它推到桌子的左上角,离键盘远了一点,然后重新打开日志,强迫自己从头开始看。
上午的会议她迟到了两分钟。这在以前从来没有发生过——程司白是那种会提前五分钟到会议室的人,她说迟到是对别人的时间不尊重。但今天她在走廊上走得很慢,慢到何悦从后面追上来的时候说“程姐你是不是不舒服”。
她说没有,然后加快了脚步。
会议室里裴衍之已经在了。他面前的桌上放著两杯咖啡,一杯放在他自己的位置旁边,另一杯放在她通常坐的位置前面。那杯咖啡和美式不一样,杯壁是白色的,上面没有任何标记。
程司白坐下来,把咖啡推到一边。
“开始吧。”她说。
裴衍之看了她一眼,没有说话,把测试数据投影在萤幕上。两个人用了四十分钟把昨天的进度过了一遍,讨论了三个需要对齐的技术细节,决定了一个参数的调整方案。整个过程高效、专业、没有任何多余的对话。
会议结束的时候程司白站起来准备走。
“咖啡。”裴衍之说。
她停了一下。“我不渴。”
“你早上那杯也没喝。”
程司白转头看著他。他的表情很平静,平静得像在说一个与自己无关的事实。但他说得对——她早上那杯咖啡确实没有喝。她把它推到桌角之后就再也没有碰过,现在应该已经凉透了。
“我不喜欢别人帮我买咖啡。”她说。
“我知道。”
“那你为什么还买?”
裴衍之没有回答。他低下头继续整理桌上的文件,动作很慢,每一页都对得很整齐。程司白站在门口看著他,等了大概十秒,他没有抬头。
她推门走了出去。
中午的时候她又发现桌上多了一杯咖啡。
这次不是美式,是拿铁。杯壁上用记号笔写著一行字,字迹很工整,像是刻意放慢了速度写的:“你以前说过拿铁太甜。”
她看著这行字,想起那是三年前的事了。有一次他们一起去咖啡馆,她点了一杯美式,他点了一杯拿铁。她喝了一口他的拿铁,皱著眉头说太甜了。他说你试试加一份浓缩,她试了,还是不喜欢。后来每次去咖啡馆他都会问她要不要试试拿铁,她每次都说不要。但他每次都还是会问。
她不知道他为什么记得这件事。她自己都快忘了。
她把咖啡端起来,喝了一口。拿铁,加了两份浓缩,奶泡打得不是很细,有一点粗,像是不太熟练的人做的。味道还是偏甜,但没有她记忆中那么甜了。
也许是因为她已经三年没有喝过拿铁了。
也许是因为她的口味变了。
她不知道。
她把咖啡放在桌上,继续写程式码。下午的进度比上午好了一些,日志能读进去了,参数也能调了。她在笔记本上写了两页优化方案,每一条都写得很详细,逻辑清晰,步骤明确。
但她的目光总是不自觉地飘向桌角的那杯拿铁。
她喝了一半了。剩下的一半凉了,她没有再碰。
下午五点,何悦来找她讨论测试用例。推门进来的时候第一眼就看到了那杯拿铁,然后看了看程司白的表情,什么都没有说,坐下来打开笔记本。
讨论到一半的时候何悦忽然停下来。
“程姐,这杯咖啡是谁给你买的?”
程司白的手指在键盘上停了一下。“不知道。”
何悦看了她一眼,嘴角微微翘起来,但很快又压下去了。“哦。那可能是谁放错了吧。”
“可能。”
何悦低下头继续看测试用例,但她的手指在桌子底下飞快地打字。程司白没有看到,但如果她看到,她会发现那条消息是发在“共识观察小组”里的。
“重大进展:程姐桌上有一杯喝了一半的拿铁。她以前从来不喝拿铁。”
陆维安:“?所以呢”
何悦:“所以这不是她自己买的。她自己只喝美式。”
陆维安:“那是谁买的?”
何悦没有回。她觉得这个问题不需要回答。
第四天晚上,程司白加班到十一点。她准备走的时候发现桌上又多了一杯咖啡。
这次是美式。杯壁上写著一行字。
她拿起来看。
“程司白,你不用现在回答我。但别用工作逃避。”