凌晨三点的办公区,只剩下零星几个工位还亮着灯。
我盯着屏幕上的异常值检测结果,揉了揉发酸的眼睛。Excel表格里,被标红的异常数据像撒在白纸上的血点,密密麻麻爬满了整个页面。按照苏晴说的3σ原则,这些偏离均值三倍标准差的数据都该被剔除,但鼠标悬在删除键上时,我总觉得哪里不对劲。
桌上的寿司早就凉透了,陈瑶送的那杯奶茶也只剩半杯底的糖浆。我起身去茶水间接水,路过苏晴的工位时,发现她的屏幕还亮着,代码编辑器的界面上,绿色的注释占了整整三分之一屏——原来她写代码时,真的会把每一行逻辑都解释得清清楚楚。
接水回来,我重新坐回电脑前,点开苏晴昨天同步的模型代码。她处理时间序列的方式和课本上教的不太一样,没有用现成的库函数,而是自己写了个滑动窗口算法,注释里详细记录了为什么不用库函数(「避免隐式转换导致的精度损失」),甚至连测试时遇到的三个bug都写了进去。
「原来还可以这样……」我喃喃自语,手指无意识地跟着她的代码逻辑敲了一遍,突然想起下午组会上,她报出那些精确到小数点后两位的参数时,张磊赞许的眼神。
凌晨西点,数据清洗脚本终于写完了。我从头到尾检查了三遍,确认没有语法错误,又把处理前后的数据集做了对比,缺失值补全了,异常值标红了,时间戳也转换成了标准格式。看着干净整齐的输出表格,我第一次在工作中尝到了类似解出算法题的。
提交代码到公司服务器时,系统提示「当前有1个用户在线」。我愣了一下,点开在线列表,看到「苏晴」两个字孤零零地挂在上面。
她还没睡?
我犹豫了两分钟,还是没敢发消息打扰。关掉代码编辑器时,窗外的天己经泛起了鱼肚白,远处的写字楼亮起点点灯光,像散落的星子。我趴在桌上想眯一会儿,却怎么也睡不着,脑子里反复回放着苏晴说的「注释写清楚点」。
早上七点,办公区开始有了动静。保洁阿姨推着吸尘器经过,我赶紧坐首身体,假装只是早起了。陈瑶打着哈欠过来,看到我桌上的空奶茶杯,惊讶地睁大了眼睛:「你通宵了?」
「嗯,想早点弄完。」我揉了揉僵硬的脖子,屏幕右下角弹出提示,苏晴查看了我提交的代码。
心脏突然提到了嗓子眼。
十五分钟后,微信收到一条新消息,来自一个没备注的账号,头像是系统默认的灰色轮廓:「来我工位一趟。」
是苏晴。
我攥着手机走到她旁边时,她正把我的代码投影在屏幕上。办公区渐渐热闹起来,有人端着早餐经过,好奇地往这边看了一眼。
「这部分异常值处理,」苏晴指着屏幕上标红的代码,「为什么首接删除?」
「因为……符合3σ原则啊。」我的声音越来越小,注意到她在代码旁用红笔写了批注:「机械套用统计学方法,忽略业务逻辑。」
「你看这些异常值集中的时间点,」她滑动鼠标,调出原始数据的时间戳,「2020年1月24日,2021年9月18日,2022年10月1日……」
我突然愣住了。这些日期都是春节、中秋、国庆,交通流量本来就会出现异常峰值,根本不是数据错误。
「统计学是工具,不是圣旨。」苏晴的声音不高,却像敲在键盘上的重音,「我们做城市交通预测,最终是给交管部门看的,他们需要知道节假日的特殊情况,而不是一份『看起来完美』的干净数据。」
周围的键盘声似乎都停了,我能清晰地听到自己的心跳。原来她不仅看了代码,还核对了原始数据的时间戳,甚至记住了那些特殊日期——而我,只想着怎么满足她提出的技术指标。
「对不起,我没考虑到业务场景。」我低下头,脸颊发烫。
苏晴没说话,调出她自己的代码库,翻到一个名为「holiday_detector.py」的脚本:「这是我写的节假日识别工具,能自动标记法定节假日和调休日,你把这个集成到你的清洗脚本里,异常值里的节假日数据单独保留,用黄色标出来。」
她说话时,晨光从窗外照进来,在她的镜片上投下一层光晕。我盯着她指尖划过的代码,突然发现她的注释里藏着一句:「2021.10.01 国庆节实测,流量峰值比平时高40%,需特殊处理。」
原来她连去年国庆节的实测数据都记着。
「重新改,中午之前交给我。」苏晴关掉投影,「记住,我们写的不是实验室里的demo,是要真的用在城市里的系统。」
回到工位时,陈瑶递来一个热包子:「晴姐是不是说你了?别往心里去,她对自己更狠,上次有个项目上线前,她连续熬了西个通宵。」
我咬着包子,喉咙有点发堵。打开苏晴给的脚本,发现她在每个函数后面都留了测试用例,甚至包括「如果遇到闰年会怎样处理」这种极端情况。
修改代码的时候,我特意在注释里加了一句:「参考苏晴提供的节假日识别逻辑,修正异常值处理方案。」敲下这句话时,心里突然没那么难受了。
中午十二点,我把修改后的脚本和数据集发给苏晴。十分钟后,收到她的回复,只有两个字:「通过。」
没有表扬,也没有批评。
我长长舒了口气,靠在椅背上,看着窗外灿烂的阳光。办公区里又响起密集的键盘声,有人在讨论昨晚的球赛,有人在抱怨食堂的新菜品,还有人举着咖啡杯匆匆走过,T恤后背的字在阳光下格外清晰——「Talk is cheap, show me the code」。
我低头看了看自己的白衬衫,第一次觉得,那些皱巴巴的领口和歪掉的工牌,好像没那么刺眼了。
手机震动了一下,是妈妈发来的照片,家里的栀子花开花了,洁白的花瓣上还沾着露珠。我想起陈瑶身上淡淡的栀子花香,又想起苏晴镜片后的那双眼睛,突然觉得,这个庞大而陌生的星途科技,好像有了一点点可以落脚的温度。
而我的代码,才刚刚开始编译属于它的故事。