十年一梦
124/180

42017·暗流

124V4_C16_1.97%

4372字 · 约9分钟

阅读进度 0%已读 0 分钟 / 共 9 分钟

V4_C16_1.97%

田总的电话。

下午两点。我在外面。嘉定。跟一个做物流的客户谈。谈到一半手机响了。田总。

我跟客户说了句"不好意思接个电话"。走到走廊。接了。

"赵总。"

田总的声音很平静。比平时平静。比我平静。这就是最可怕的。真正出事的人不会喊。喊的人事还不大。不喊的人事已经大了。

"你们那个系统有问题。视觉检测。误检率飙到百分之三十。我这边产线停了半条。"

百分之三十。产线停了半条。

"一小时损失十二万。已经停了四十分钟了。"

四十分钟。八万。

"田总我马上处理。"

"好。我等你消息。"

挂了。没有骂。没有威胁。没有"你们再不修好我就换供应商"。只有"我等你消息"。四个字。这四个字比任何威胁都重。因为它说的是:我还信你。但我的信任有时间限制。

我站在走廊里。手指按住了手机。打给刘海洋。

响了三声。接了。

"海洋。田总那边出事了。视觉检测。误检率百分之三十。产线停了。"

"什么时候的?"

"四十分钟前。"

"我在常州。出差。今天参加一个技术论坛。"

"你什么时候能回来?"

"下午最早。高铁两个半小时。赶一点的话四点半到。"

四点半。那时候田总的产线已经停了三个多小时了。损失二十多万了。

"你远程能不能看?"

"这个模块我需要进服务器的。远程可以看日志但改不了。需要在机房里调。"

挂了。打给周小薇。

"小薇。田总那边系统出问题了。你能帮忙联系一下技术看看吗?"

"赵总。技术的事我帮不了。我不碰代码。你找海洋或者许畅。"

许畅。

我犹豫了一秒。打给许畅。

犹豫是因为这不是他负责的模块。视觉检测是刘海洋的代码。许畅负责的是NLP部分。让他去修别人的代码——这件事在技术团队里通常是有争议的。自己的代码自己维护。这是程序员的边界。

但产线停着。一小时十二万。

响了两声。接了。

"许畅。田总的视觉检测模块出了问题。误检率百分之三十。产线停了。海洋在外地赶不回来。你能看看吗?"

停了一秒。这一秒里他大概也在犹豫。不是犹豫要不要帮忙。是犹豫刘海洋回来以后会怎么想。别人动他的代码。他会不会不高兴。

"我回公司看看。"

五个字。犹豫了一秒。说了五个字。然后挂了。没有多问。没有说"这不是我负责的"。没有说"等海洋回来吧"。


我跟嘉定的客户道了歉。"有个紧急情况要处理。下次再约。"客户点了点头。大概习惯了。创业者的约总是被打断。

回到公司。三点十分。地铁。从嘉定回张江。一个半小时。站了一路。手拉着吊环。脑子里全是田总的声音。平静的声音。"一小时损失十二万。"

推开公司的门。

办公室里的人都在。许畅已经到了。他比我先到。他大概是接完我电话就出门了。从他住的地方到公司地铁四十分钟。他到的时候已经把笔记本电脑连上了服务器。

他的工位没有坐。他站在服务器柜子旁边。柜门打开了。绿色的指示灯在闪。两条网线。蓝色的。从服务器后面伸出来。连着他的笔记本。屏幕上是黑底白字的日志。一行一行往上滚。他的脸被屏幕的光照着。蓝白色。

我叫了个全员小会。所有人围过来。十二个人。站着。

"田总工厂的视觉检测模块出了问题。误检率从百分之二飙到百分之三十。产线停了半条。一小时损失十二万。海洋在外地。下午四点半才能回来。"

没有人说话。

张富贵的手攥着手机。周小薇的笔停在本子上。苏晨曦看着屏幕。李明辉和王静互相看了一眼。赵勇不知道这件事跟他有什么关系。林工走到服务器旁边看了一眼许畅的屏幕。

然后许畅说了一句话。

"我看看。"

他说这三个字的时候没有看任何人。他在看日志。手指在键盘上敲了几下。拉了一段日志。

"是视觉检测的后端。推理服务挂了一个线程。导致部分图像没有进入检测流水线。漏检的图像被默认标记为'合格'。误检率不是升高了。是没检的都算了合格。"

"你会那个模块?"

他从屏幕上抬了一下头。看了我一眼。

"我不会。但我能看。"

他不会。这个模块是刘海洋写的。是刘海洋的代码。刘海洋的架构。刘海洋的逻辑。许畅没有碰过这个模块。他的领域是NLP。不是视觉。

但他说"我能看"。

能看的意思是:我不懂这个模块。但我懂代码。代码是通用的。逻辑是通用的。bug是具体的。我可以从日志里找到bug。然后修。

"你确定?"

"先让我看。"

他坐下了。不是坐在他的工位上。是搬了一把椅子坐在服务器旁边。笔记本电脑放在膝盖上。手指开始敲键盘。

其他人散了。各回工位。但没有人真的在工作。每个人都在偷偷看他。


两天。

第一天。许畅从下午三点开始看代码。日志。从最早的错误开始回溯。他在六万行代码里找一个bug。不是他写的六万行。是刘海洋的六万行。他对这些代码不熟。他要先读懂。再找错。再改。

他不让任何人靠近。

林工过去问了一句"要不要帮忙"。他说"不用"。没有抬头。手指没有停。林工站了两秒。走了。他知道这个状态的程序员不需要别人。别人只会添乱。

李明辉想过去看看能不能协助。刚走到一半。许畅头都没转。"别碰。"两个字。很短。很硬。李明辉愣了一下。退回去了。他刚来一个月。还不了解许畅。不了解许畅说"别碰"不是对你有意见。是他在一个需要极度集中的状态里。任何人的靠近都是干扰。任何人的话都是噪音。任何人站在他身后看他的屏幕都会让他分心。他需要安静。需要一个人。需要只有他和代码的空间。

他偶尔说一句话。都是技术词。

"这个线程池的配置……"

"图像预处理的分辨率参数……"

"推理引擎的队列满了……"

他在自言自语。不是说给谁听。是说给自己听。程序员调试的时候会这样。把问题说出来。说出来以后脑子里会更清楚一些。

旁边堆了一个空红牛罐。

六点的时候第二个空罐出现了。

九点的时候第三个。

他的手指在键盘上的速度没有变。从三点到九点。六个小时。速度没有变。不快。不慢。均匀的。每一下按键都有目的。他不是在盲打。他在想。想一步打一步。

晚上十一点。我没走。办公室其他人都走了。张富贵走的时候看了许畅一眼。"需要帮忙吗?"许畅没抬头。"不需要。"张富贵看了我一眼。我摇了摇头。他走了。

周小薇走的时候在许畅桌上放了一瓶矿泉水。没说话。放了就走了。矿泉水瓶子在桌角。跟红牛罐挨着。她的温度永远在细节里。

苏晨曦是最后走的。她经过许畅工位的时候停了一下。看了看屏幕上的日志。没说话。没问。她看了三秒。大概看懂了一些。大概看不懂。但她在看。然后走了。她的平底鞋在地板上没有声音。

办公室只剩我和他。

我坐在自己工位上。做不了什么。我不懂代码。不懂服务器。不懂日志。我能做的只有在。在这里。陪着。如果他需要什么我去买。如果他需要谁我去叫。如果他什么都不需要我就坐着。

"你要不要休息一下?"

"不用。"

他的声音比六小时前哑了。红牛的甜腻在嘴里留了味。他的嘴唇开始干了。嘴角有一点裂。

半夜两点。他的手指突然快了。比之前九个小时都快。键盘声密了。连续的。啪啪啪啪。他找到了。或者接近找到了。我能感觉到。因为他的背直了。之前他是弓着背的。弓着背是在找。直了是在改。找和改的姿势不一样。找是犹豫的。改是确定的。

屏幕上出现了一段新代码。绿色的。新写的。他在刘海洋的六万行代码里插入了一段自己的代码。新的和旧的交织在一起。两个人的逻辑在同一个文件里。

我趴在桌上睡了一会儿。不知道睡了多久。醒来的时候窗外有一点光了。不是日出。是天亮前的那种灰。六点。他还在。屏幕的蓝光照着他的脸。脸色发白。嘴唇干了。裂了。眼睛红了。有血丝。但手指还在键盘上。

周小薇放的那瓶矿泉水他打开了。喝了一半。盖子没拧。水瓶歪在桌上。

第二天。下午。刘海洋回来了。四点半。

他从高铁站打车直接到公司。没回家。没换衣服。衬衫——不,格子衫——皱了。他在火车上坐了两个半小时。大概一直在看手机上的服务器日志。大概焦虑了一路。

他放下包。走到许畅旁边。站着。看了一眼屏幕。

他站了大约五秒没说话。五秒里他在看许畅写的那段新代码。绿色的。插在他的代码里面。他能分辨出哪些是自己的哪些是许畅的。因为两个人的代码风格不一样。他的代码紧凑。变量名短。注释少。许畅的代码松一些。变量名长。注释多。

"你在改我的模块?"

"嗯。"

"改到哪里了?"

"线程池的回收逻辑有问题。满了以后新线程被丢弃了。图像直接跳过了检测流水线。我改了回收策略。加了溢出队列。正在跑测试。"

刘海洋看了三十秒。一行一行看。他的手指在嘴唇上点了两下。这是他在审代码的姿势。看到好的代码他会点嘴唇。看到差的他会皱眉。

他点了嘴唇。

然后点了一下头。

"改得对。"

两个字。他没有说谢谢。没有说"辛苦了"。他只说了"改得对"。这是刘海洋能给出的最高评价。比"你说的对"还高一级。"你说的对"是承认你的判断。"改得对"是承认你的能力。

我出去买了外卖。两份。一份给许畅。一份给刘海洋。沙县。八块一份。酸辣粉。

放在许畅旁边。"你吃一下。"

他看了一眼。"等我把这段跑完。"

外卖放冷了。半小时后他还在跑测试。酸辣粉的酸味散了。汤面上结了一层油膜。

他还在。


第三天早上。七点。

我到公司。推开门。

办公室的灯没开。晨光从窗户进来。蓝灰色的。十月的清晨。七点的光还是弱的。

许畅趴在工位上。

他不是在服务器旁边了。他回到了自己工位。搬着笔记本电脑回去的。大概是凌晨某个时候。服务器旁边的椅子歪了。没有推回去。他的笔记本电脑还开着。屏幕没有息。亮着。

屏幕上显示的是一行日志。绿色的。

"误检率 1.97%"

1.97%。从百分之三十到百分之一点九七。他修好了。

旁边有三个空红牛罐。红色和银色的。挤在一起。还有一个半满的。没喝完。红牛还在罐子里。凉了。气泡消了。

他趴在桌上。头枕着右手臂。左手垂在椅子扶手外面。手指松着。键盘上还有他最后按的那几个键的余温。也许没有了。几个小时了。余温早散了。

他的衬衫皱了。白色的。前天穿的。没换。领口有汗渍。干了。干了以后盐分留下了一圈淡淡的痕迹。

我站在他旁边。

脱下自己的外套。搭在他身上。外套是深蓝色的。旧了。穿了两年了。袖口磨了。但还暖。

搭上去的时候他动了一下。没醒。嘴巴嗫嚅了一下。不知道说了什么。也许什么都没说。

我站了三秒。

三秒。看着他趴着的背影。看着屏幕上的1.97%。

然后去烧了壶水。

水壶在茶水间。接了水。按了开关。水壶开始嗡嗡响。水在加热。水汽从壶嘴冒出来。

站在茶水间等水烧开。看着窗外。十月的张江。早上七点。路上已经有人了。骑电瓶车的。走路的。有一个穿黄色外卖服的人骑着电动车经过。很快。

水开了。壶跳了。我倒了两杯。一杯放在许畅桌上。一杯自己端着。


八点半。手机响了。田总。

"修好了?"

"修好了。昨晚修好的。误检率降到了1.97%。"

"哪个人修的?"

"许畅。"

田总停了一秒。

"这小子行。"

他又停了一秒。

"等他醒了给我说声谢谢。不是客气。是真谢谢。我那条产线停了一天半。损失够我买一辆车了。他帮我省了后面的。"

"好。我转达。"

"赵总。"

"嗯。"

"你身边有这种人。是你的福气。别亏待他。"

最后那三个字他加重了一点。不是提醒。是嘱咐。田总做了十五年工厂。他见过太多人来了又走了。他知道能在产线停了的时候站出来修两天两夜的人有多稀缺。他不认识许畅。但他知道这种人的价值。比工资高。比股权大。比承诺重。

挂了。

我放下手机。看着还在趴着的许畅。外套搭在他身上。他的呼吸均匀了。不是趴着写代码的那种浅呼吸。是真的睡了。深的。

他修的不是他自己的模块。

他修的是刘海洋的代码。刘海洋的产品线。刘海洋的架构。他用了两天两夜。三个半红牛。一份冷了的酸辣粉。读了六万行不是他写的代码。找到了一个不是他负责的bug。改了。测了。跑通了。1.97%。

他不是在帮刘海洋。他不是在帮田总。他不是在帮我。

他只是觉得这件事需要被修好。系统坏了。有人的产线停了。有人在亏钱。有人在等。他能修。所以他修了。

这才是许畅这个人真实的样子。不是Transformer提案里那个野心勃勃的年轻人。不是被否了以后沉默计算的许畅。不是深色屏幕和古龙水的许畅。

是这个趴在桌上睡着了的许畅。衬衫皱了。嘴唇干了。红牛罐空了。1.97%。

我看着他。想:也许他会留下。

也许。

帮过你两个通宵的人。怎么可能走。

这个"也许"让我后来每一次犹豫都多了一个理由。每一次应该做决定的时候。每一次应该正面回应他的提案的时候。每一次应该在他和刘海洋之间做选择的时候。我都会想起今天早上这个画面。趴着的背影。1.97%。三个半红牛。

帮过你两个通宵的人。怎么可能走呢。

他不会走的。

对吧?

九点。他醒了。

他从桌面上抬起头。眼睛眯着。光线刺得他睁不开。他看了一眼桌上的水杯。热的。冒着气。然后看了一眼身上的外套。我的。深蓝色。旧的。

他把外套拿起来。叠了一下。放在椅背上。

"几点了?"

"九点。"

"误检率呢?"

"1.97%。你修好了。"

他点了一下头。拿起水杯。喝了一口。烫了一下嘴。放下了。等了十秒。又喝了一口。

"田总那边我打过了。他说谢谢你。"

他没有什么表情。"告诉他误检率还可以更低。等我优化一下。"

"你先休息。"

"嗯。"

他站起来。伸了个懒腰。骨节响了几声。走到卫生间。洗了把脸。回来的时候脸上的水还没擦干。滴在衬衫领口上。白衬衫上的水渍。圆的。很快就被干了。

他坐下来。拿起红牛罐。最后那个半满的。摇了摇。喝了。凉的。气泡没了。甜腻的。不好喝。但他喝了。

然后打开电脑。开始优化。

他醒了十分钟就开始工作了。

田总说的对。别亏待他。