晚上十一点四十,微光总部只剩一盏灯。
调试间的灯。
方远坐在工位上,面前三块屏幕。
左边是v3.0的设计文档,中间是代码编辑器,右边是数据结构的可视化面板。
他已经坐了四个小时了。
桌上的泡面盒里还剩半截面饼,汤凉了,面泡胀了,筷子搁在盒盖上没再动过。
从下午六点其他人陆续下班开始,方远就一个人待在调试间里。
何薇走的时候在门口说了句“方远你早点回去“,他嗯了一声,没抬头。
老周今天回来了,但五点半就走了,搪瓷缸洗了放在台面上,比平时走得早。
林彻的办公室灯在七点关的,脚步声沿走廊远去,大门开了又关了。
然后就剩方远一个人了。
他不是在加班。
他是在想一个问题。
一个从上周就开始想,想了一整周,刻意不去碰,但越不碰越在脑子里转的问题。
v3.0设计文档一共180页,前74页他都看过了,接口定义,数据流图,模块划分,功能清单,没有异常。
第75页不一样。
第75页有一组预留接口槽位。
方远第一次注意到这组槽位是上周,当时他在做常规模块测试,顺手翻了一页,看到了。
预留接口在软件架构里不罕见,很多系统都会留几个空位给未来的功能扩展。
但v3.0的这组预留不一样。
不一样在哪,方远当时说不清。
他只是觉得那几个槽位的数据类型定义很奇怪。
不是常规的物流数据类型。
不是温度,不是位置,不是时间戳,不是订单编号。
那几个字段的类型标注是“OeCt“,没有进一步的说明,只有一个备注:“预留·待定义。“
方远那天在笔记本上写了两行字。
“跟数据有关但不是物流数据。“
“可能跟人有关。“
写完之后合上了笔记本,没再碰。
直到今天。
今天下午方远在做v3.0的药品追溯模块联调测试,跑了一组压力数据。
测试本身很顺利,所有指标在预期范围内。
但跑完之后他习惯性地看了一眼系统日志,发现了一条他以前没注意过的记录。
日志显示,在压力测试过程中,第75页那组预留接口被系统自动调用了一次。
调用时长0.003秒,返回值为空。
空的。
但它被调用了。
一个“预留·待定义“的接口,在压力测试中被自动调用了。
这意味着底层代码里有对应的调用逻辑。
有人写了这段代码。
方远知道是谁写的。
v3.0的底层架构是老周搭的,核心代码是林彻审的。
方远参与了上层模块的开发,但底层他没碰过。
不是不让碰,是没必要。
底层已经搭好了,上层调接口就行。
但现在他看到了底层的一角。
一个不该被他看到的角。
方远坐在工位上,盯着那条日志看了很久。
调试间里安静得只剩风扇转动的声音,屏幕的蓝光照在他脸上,把他的影子投到身后的白墙上。
然后他做了一件他知道可能不该做的事。
他打开了那组预留接口的底层代码。
代码不长,大约二百行,写得很干净,变量命名规范,注释极少。
老周的风格。
方远一行一行地读。
前一百行是标准的接口定义和数据校验,没什么特别的。
从第一百零一行开始,数据结构变了。
不是物流维度的数据结构。
方远的手指停在键盘上。
他看到了一组字段。
“USer_behaviOr_pattern“。
用户行为模式。
下面还有一组。
“health_data_Strea。
健康数据流。
方远把椅子往后推了一点,整个人靠在椅背上。
调试间里很安静,只有电脑风扇的嗡声和远处某个设备待机指示灯的微弱闪烁。
窗外黑透了,连路灯的光都照不进来。
他的心跳快了一点。
不是害怕。
是一种技术人看到未知结构时的本能反应。
像拆一台没见过的机器,突然在里面看到一个不该存在的零件。
这个零件不坏,不多余,它被精确地嵌在那里,和周围的结构严丝合缝。
但它不属于这台机器的功能范围。
它是给另一台机器准备的。
他又把椅子拉回去,盯着屏幕上那两组字段。
USer_behaviOr_pattern。
health_data_Strea
这不是冷链数据。
这不是药品追溯。
这不是CCPS要用的东西。
这是另一个东西。
一个藏在CCPS底层的,用预留接口封装起来的,没有被任何文档描述过的东西。
它的数据结构指向的不是物流,不是温控,不是订单。
是人。
是人的行为。
是人的健康。
方远翻开笔记本。
上周写的那两行字还在。
“跟数据有关但不是物流数据。“
“可能跟人有关。“
现在他知道了,不是“可能“。
是“确定“。
底层代码白纸黑字写着USer_behaviOr_pattern和health_data_Strea
他拿起笔,在下面又加了一行。
写得很慢,一个字一个字地写。
笔尖在纸上划出轻微的沙沙声,调试间里安静得能听到自己的呼吸。
写完之后他把笔放下,看着那行字。
看了大约十秒。
然后合上笔记本。
屏幕还亮着。
数据结构的可视化面板上,那组预留接口展开成一棵树状图。
树的最底层,有一个节点。
节点上标注着四个字。
“预留·待定义。“
方远盯着那四个字看了很久。
他知道这四个字不是真的“待定义“。
有人已经定义好了,只是没有写进文档。
有人知道这组接口最终要接什么数据,只是现在还不到打开的时候。
那个人不是老周。
老周搭的是架构,但架构的方向是谁定的?
180页设计文档,179页都是冷链药品追溯。
只有第75页的一组预留接口,指向了一个完全不同的方向。
这个方向是谁给的?
方远没有继续想下去。
不是不敢想,是想到这里,脑子里有一种说不清的感觉。
像在黑暗中摸到了一扇门的轮廓,但手还没碰到门把手。
他把屏幕调暗了一点,但没有关。
站起来,走到窗边。
窗外什么都看不见,只有自己的倒影。
一个穿着卫衣的年轻人,头发乱糟糟的,眼睛下面有一圈淡淡的青。
他上一次连续几天睡不好,是SM4延迟攻坚的那阵子。
那次是因为技术难题。
这次不一样。
这次是因为一个他不知道该不该继续往下看的东西。
方远看了自己一秒,转身回到工位。
又看了一眼屏幕。
“预留·待定义。“
他关掉了代码编辑器,关掉了日志窗口。
但没有关数据结构面板。
让那棵树状图亮在屏幕上。
他拿起桌上的泡面盒扔进垃圾桶,把桌面收拾了一下。
水杯里的水也凉了,他倒进了洗手池。
然后关了调试间的灯,走出去,带上门。
走廊里全黑了,只有安全出口的绿色指示灯在闪。
他的脚步声在空走廊里回荡,一步一步的,很清晰。
方远走到楼梯口,站了几秒。
调试间的门缝底下还透着一线光,那是他没关的屏幕。
“预留·待定义“四个字还亮在数据结构面板上,面对着一间空荡荡的调试间。
又睡不着了。