楔子

我叫沈玉,在这家做智能仓储设备的老公司干了整整五年。

五年里,我熬走了三任技术总监,带出了七个能独当一面的徒弟,经手的项目从没出过一次交付事故。

可年终奖发下来那天,信封里只有三张皱巴巴的百元钞。

我没吵,没闹,签完字就回了工位。

只有我知道,抽屉最底层压着的那份文件,快到期了。

第一章 三百块

财务室的小窗口前排着长队。

我站在队伍末尾,手里捏着那张薄薄的签收单,前面几个同事拆开信封时脸上的表情,从期待到僵硬再到强撑笑意,像一排被霜打过的茄子。

“沈工,到你了。”

财务小周把信封递出来的时候,眼神躲了一下。我接过来,捏了捏,心里就有了数。

拆开,三张。红票子,崭新得割手。

身后有人倒吸一口气。我没回头,从兜里掏出签字笔,在签收单上写下“沈玉”两个字,笔画稳稳当当。

“沈工,这……”小周欲言又止。

“没事。”我把钱揣进口袋,信封叠好放进工装上衣兜里,转身往外走。

走廊尽头,技术二部的马副总正端着保温杯跟人聊天。看见我出来,他笑呵呵地扬了扬下巴:“小沈,今年收获不小吧?你们一部那个智能分拣项目,听说客户很满意嘛。”

我停下脚步,看着他油光满面的脸。

“还行。”

“年轻人好好干,明年公司肯定亏待不了你。”他拍了拍我的肩膀,力道不轻不重,像拍一条听话的狗。

我点点头,没说话,继续往工位走。

身后传来他和旁人的低笑:“沈玉这人就是老实,好使唤。”

工位上,电脑屏幕还亮着。我负责的智能仓储调度系统V3.0版本,代码写到第三十七个模块,注释写得清清楚楚。桌角放着昨晚加班到凌晨两点的泡面桶,汤已经凝成了果冻状。

隔壁工位的小刘探头过来,压低声音:“沈哥,你年终奖多少?我只有八百。”

我把泡面桶扔进垃圾桶,顺手把桌上的文件码整齐。

“够买几桶泡面。”

小刘张了张嘴,想说什么又咽回去了。他知道我的脾气,看着闷,其实心里有本账。

我打开抽屉,最底层压着一个牛皮纸文件袋。摸了一下,还在。封面上用黑色记号笔写着一行小字:聘任合同(2019.03.15—2024.03.14)。

今天是2024年2月28日。

还有半个月。

手机震了一下,是妻子发来的消息:“晚上回来吃饭吗?小橙子说想爸爸了。”

我盯着屏幕看了几秒,打字:“回。想吃什么,我路上买。”

“不用买,家里有菜。你早点回来就行。”

我把手机扣在桌上,继续写代码。屏幕上,V3.0版本的最后三个模块提示着“待完成”。整个系统上线后,理论上能让客户的分拣效率提升百分之四十,出错率降到万分之零点三。

这个项目从头到尾是我一个人扛下来的。需求调研、架构设计、核心算法、现场调试,中间马副总换了两任项目经理,一个被他挤走,一个自己辞职。最后收尾的时候,他把我的名字从项目负责人一栏挪到了“技术支持”。

我没去争。因为争了也没用,这家公司的规矩是:谁官大,谁的贡献就大。

但现在回想起来,那会儿的人活得实在。搁现在,年轻人早拍桌子走人了,可我们那批人,总觉得把活干好是本事,别的都是虚的。

代码写到下午五点半,我关了电脑。

收拾东西的时候,手机又震了。这次是个陌生号码,我按掉了。没过十秒,又打来。我接了。

“请问是沈玉沈工吗?”对方声音很客气。

“我是。”

“您好,我是盛恒智能的HR,我姓林。我们技术总监看到了您在行业期刊上发表的那篇关于仓储调度算法的论文,想跟您聊一聊。方便的话,明天下午您有时间吗?”

我愣了一下。那篇论文是三年前发的,当时投出去还被马副总嘲笑过,说“写这些虚头巴脑的东西不如多干点活”。

“明天下午……”我看了一眼桌上那份还没写完的周报,“可以。”

“那好,我把地址发到您手机上。对了,这件事……”

“我明白。”我打断她,“不会往外说。”

挂了电话,我把手机揣进口袋。窗外天已经暗了,办公室里剩的人不多。马副总办公室的灯还亮着,玻璃门里透出他打电话的笑声。

我拎起包,路过小刘工位时低声说了句:“走了。”

小刘抬头:“沈哥,明天见。”

明天见。但有些事情,可能不会再有明天了。

走出公司大门的时候,保安老赵跟我打招呼:“沈工,又加班啊?”

“今天没加班,正常下班。”

老赵笑:“难得难得。对了,你们那个马总刚才出去吃饭,喝了不少,走路都打晃。”

我笑了笑,没接话,往公交站走。

北方的二月,风刮在脸上像细刀子割。我把工装领子立起来,手插在兜里,指尖碰到那三张钞票的边缘。

三百块。五年。平均一年六十。

公交车上人不多,我坐在最后一排靠窗的位置。车子晃悠着往家走,路灯一盏一盏往后倒。手机亮了一下,是盛恒智能那位林HR发来的地址,在城东高新区,离我家不算太远。

我把地址复制到备忘录里,然后锁了屏。

车窗玻璃上映出我的脸,三十三岁,看着像四十。头发白了几根,眼袋明显。但眼睛还算有神,起码自己这么觉得。

到家的时候快七点。楼道里飘着邻居家的饭菜香,三楼东户,门口放着小橙子的滑板车。我掏钥匙开门,刚拧了一下,门就从里面拉开了。

“爸爸!”

小橙子一头撞过来,我弯腰把她抱起来。五岁的小丫头,扎着两个小揪揪,脸上还贴着幼儿园奖励的小红花贴纸。

“今天乖不乖?”

“乖!妈妈说我要是乖,周末带我去动物园。”

厨房里传来炒菜的声音,妻子探出头来看了我一眼:“洗手吃饭。”

饭桌上三菜一汤,西红柿炒鸡蛋、醋溜土豆丝、红烧鸡翅,紫菜蛋花汤。小橙子拿鸡翅啃得满嘴油,妻子往我碗里夹了一筷子土豆丝。

“今天发年终奖了?”她问得很随意,但夹菜的动作停了一下。

“发了。”

“多少?”

“三百。”

妻子的筷子顿住了。她抬头看我,嘴唇抿了抿,没说话。过了几秒,她把那盘鸡翅往我这边推了推。

“吃吧。我明天去超市找个兼职,小橙子放学可以让对门王姨帮忙接一下。”

“不用。”我往嘴里扒了口饭,“我心里有数。”

她看了我一眼,没再追问。结婚七年,她了解我的脾气——话不多,但说出来就算数。

晚上把小橙子哄睡着以后,我坐在客厅沙发上,打开了那个牛皮纸文件袋。合同一共八页,我直接翻到最后一页的补充条款。第三条,用铅笔轻轻圈出来过,是我五年前签的时候自己画的。

那一行写着:“合同期满,甲方须在到期前三十日以书面形式通知乙方是否续约。若甲方未履行通知义务,且乙方继续提供劳动满十五个工作日的,视为双方同意按原条件续约五年。”

当时人事部老赵让我签字的时候还笑:“这就是个格式条款,走个过场。”

他不知道,我记住了。

手机又亮了,这次是马副总发来的微信语音。我点开,他那边背景音嘈杂,明显在酒桌上。

“小沈啊,你们一部那个调度系统,客户催着要终版。你辛苦一下,这周末加个班,周一之前把最终版本发我邮箱。对了,那个项目奖金的事,我跟上面再争取争取。”

我听完,把手机放在茶几上。

窗外夜色沉沉,对面楼的灯一盏盏灭了。

我拿起手机,打了六个字发过去。

“好的马总,收到。”

然后我打开盛恒智能林HR发来的那条消息,回了一个字。

“好。”

发完,我把手机调成静音,起身去卧室看了一眼小橙子。她踢了被子,我给她掖好被角,小丫头嘟囔了一句梦话,翻个身又睡了。

回到客厅,我重新坐到沙发上,翻开那份合同的第二页。目光停在“乙方权利”那一栏,第三条写着:“乙方有权在合同期满前六十日内,向甲方提出书面续约申请。甲方应在收到申请后十五个工作日内予以书面答复。”

我算了算日子。合同三月十四号到期,六十天前是一月十四号。早就过了。

但我没提。

因为有些事,得等对方先出手。

第二章 沉默的工位

第二天一早,我照常七点四十到公司。

保洁阿姨刚拖完地,走廊里一股消毒水味。我工位上的电脑还是昨晚关机前的样子,主机箱上那盆绿萝有点蔫,我拿起杯子去茶水间接了半杯水浇上。

小刘来得也早,顶着两个黑眼圈。

“昨晚又熬夜了?”我问。

“别提了,马总让我改方案,改到凌晨一点。结果今早发给他,他说‘再想想’。”小刘趴在桌上,声音闷闷的,“沈哥,你说他到底想要什么样的?”

我没回答。这个问题我听了五年,答案早就烂在肚子里了。

马副总想要的东西很简单:一份看起来是他主导的方案。至于方案本身好不好,他不在乎。反正最后干活的是我们,背锅的也是我们。

九点整,马副总踩着点进了办公室。西装笔挺,头发梳得溜光,手里拎着楼下便利店的三明治和咖啡。路过我工位的时候停了一下。

“小沈,那个终版今天能出来吧?”

“我尽量。”

“不是尽量,是必须。”他语气重了些,“客户那边催得紧,王总昨天开会还专门问了。你加把劲,这个项目成了,我给你申请特别奖金。”

特别奖金。上次说这话是半年前,智能分拣项目一期验收通过的时候。后来奖金没见着,项目负责人换成了他外甥。

“好。”我点了一下头。

马副总满意地走了,皮鞋敲在地砖上咔咔响。小刘从屏幕后面探出半个脑袋,冲我做了个鬼脸。

我没笑,打开开发环境,继续写代码。屏幕上,V3.0的调度算法核心模块还差最后一部分。这个算法我打磨了三个月,把原来平均两秒的响应时间压到了零点四秒,客户现场实测的时候,他们的技术主管连着说了三遍“没想到”。

但我提交的验收报告上,署名是“技术二部项目组”。

中午去食堂吃饭,排队的时候听见前面两个同事在小声聊天。

“听说了吗?一部那个沈玉,年终奖就发了三百。”

“真的假的?他不是干得挺好吗?那个智能分拣的项目,客户满意度不是挺高?”

“干得好有什么用,他不拍马屁啊。你看看人家二部那些,天天跟着马总出去吃饭,哪个年终奖低于五千了?”

“啧啧,这也太欺负老实人了。”

“可不是嘛,不过他自己都不吭声,别人操什么心。”

我端着餐盘从他们身边走过去,找了个角落的位置坐下。餐盘里是土豆炖肉、炒白菜、米饭。肉块切得极小,得在菜汤里扒拉才能找到。

吃了两口,对面坐下来一个人。技术一部的老陈,五十多岁,头发花白,是公司里少数几个从不掺和派系斗争的人。

“小沈。”他把自己盘里的一块肉夹给我,“我今天血脂高,你帮我吃。”

我知道这是借口,但还是接了过来。

“陈工,您别这样。”

“我哪样了?”他埋头吃饭,含含糊糊地说,“肉太肥,我吃不惯。”

吃了几口,他压低声音:“盛恒那边,是不是联系你了?”

我筷子停了。

“别紧张,我跟他们技术总监老周是大学同学。他前天跟我打电话,问你的情况。”老陈抬起头,眼镜片后面的眼睛浑浊但透亮,“我就说了一句——沈玉这个人,技术扎实,人品过硬,就是不会来事。”

“陈工……”

“你不用解释。我就问你一句:合同是不是快到期了?”

我点了点头。

老陈把最后一口饭扒完,站起来端盘子,经过我身边的时候拍了拍我的肩膀。力道很轻,但比马副总那种拍法实在得多。

“心里有数就行。该干嘛干嘛。”

下午两点,我把V3.0的终版发到了马副总邮箱。附了一句话:“马总,终版已发。核心算法部分我单独写了说明文档,方便客户技术团队后续维护。”

十分钟后,马副总回复了一个字:“收。”

没有“辛苦了”,没有“做得不错”,什么都没有。

我盯着那个“收”字看了几秒,然后把邮件归档,开始整理自己电脑里的文件。五年积累下来的代码库、技术文档、测试报告,分门别类地拷进一个移动硬盘。硬盘是三年前自己买的,发票还留着。

三点半,手机响了。是盛恒那位林HR。

“沈工,您明天下午方便过来吗?周总说想跟您当面聊聊技术方案。”

“方便。”

“那好,我一会儿把具体地址和路线发您。对了……”她顿了一下,“您那边,离职手续大概需要多久?”

“合同三月十四号到期。”

“明白。那我们这边随时可以推进。”

挂了电话,我把手机翻过来扣在桌上。屏幕上,小刘发来一条微信:“沈哥,马总刚才在办公室摔杯子了。”

我回了一个问号。

“你发的终版他不是要发给客户吗?结果客户那边技术主管回邮件说,‘这不是沈工之前给我们演示的版本,核心模块被改过,响应速度慢了百分之三十。’”

我愣住了。

我发出去的明明是自己写的终版,怎么可能被改过?

点开已发送邮件,找到附件,下载,解压。我逐行对比核心算法模块。没错,被改了。有两处关键参数被调过,导致整体效率大幅下降。

能改我代码的人不多。能在我发出去之后、到客户之前改掉的人,只有一个。

马副总办公室的门关着,百叶窗拉得严严实实。但我能想象里面的场景——他在打电话,脸色铁青,额头上冒汗。

小刘又发来一条:“客户那边说要重新测试,王总知道了,刚才把马总叫去了。”

我关掉邮件,把移动硬盘从电脑上拔下来,装进包里。

然后我打开抽屉最底层,把那份牛皮纸文件袋拿出来,翻到最后一页。

合同到期日:2024年3月14日。

今天是2月29日。

还有十四天。

小刘在下班前又凑过来,声音压得极低:“沈哥,马总刚才出来的时候脸色特别难看。他让我问你,那个核心算法有没有备份。”

我把桌上的文件码好,关掉显示器。

“你跟他说,我明天给他。”

小刘如释重负地点头,转身要走。

“等一下。”我叫住他。

“怎么了沈哥?”

我从兜里掏出那张三百块的签收单,折好,放进工装上衣兜里。拍了拍。

“没事。明天见。”

走出公司大门的时候,天已经黑了。路灯亮起来,照着路边还没化的残雪。我掏出手机,给妻子发了条消息:“今晚我做饭。”

她秒回:“太阳从西边出来了?行,我接小橙子,你慢慢做。”

我把手机揣好,往公交站走。风还是冷,但心里比昨天暖了一点。

明天,得去一趟城东。

第三章 城东的面试

盛恒智能在城东高新区,一整栋五层办公楼,玻璃幕墙擦得锃亮。

我在前台登记的时候,林HR已经迎出来了。二十来岁的姑娘,扎着马尾,笑起来两个酒窝。

“沈工,这边请。周总在会议室等您。”

穿过开放式办公区的时候,我下意识扫了一眼。工位上的人在敲代码、画图纸、开视频会,没人抬头看我。但能感觉到那种氛围——安静,专注,没人端着保温杯到处晃。

会议室里坐着一个五十多岁的男人,头发灰白,穿一件深蓝色工装衬衫,袖口挽到小臂。看见我进来,他站起来伸手。

“沈玉,久仰。我是周建国。”

手很大,掌心有茧。握手的力道很实在,不轻不重。

“周总好。”

“坐。别拘束。”他给我倒了杯茶,“老陈跟我说了你的事。我看了你三年前发的那篇论文,还有你们公司那个智能分拣项目的公开验收报告。”

他从桌上拿起一份打印件,翻开其中一页。“这个调度算法,是你独立完成的?”

“是。”

“为什么署名是项目组?”

我没说话。

周建国看了我几秒,把打印件放下。“行,这个咱们不聊。聊聊技术。你那个V3.0,如果让你重新设计,你会怎么做?”

这个问题我准备了很久,但真正开口的时候,还是从最基础的地方讲起。从仓储场景的复杂度分析,到调度指令的优先级队列,再到异常情况下的降级策略。讲了大概二十分钟,周建国一直没打断,偶尔在笔记本上记几笔。

讲完,他合上本子。

“沈玉,我这么跟你说吧。我们今年在做一个医药冷链仓储的项目,客户要求极高,温度控制精度要到零点一度,分拣准确率要到万分之零点五。现有的技术方案我都不满意。你刚才说的那套思路,比我们现在用的强。”

他顿了顿。

“我想请你来负责这个项目。职位是技术总监,直接向我汇报。薪资方面,你现在的两倍起步,项目奖金另算。团队你自己搭,公司全力支持。”

我端起茶杯喝了一口。茶是温的,刚好入口。

“周总,我合同三月十四号到期。”

“我知道。”

“在那之前,我不能做任何承诺。”

周建国笑了,眼角堆起皱纹。“理解。你那边的事情处理干净再过来,我等你到三月底。但是——”他竖起一根手指,“如果有什么变故,随时打我电话。”

他掏出一张名片放在桌上,推过来。

“老陈说你是个靠谱的人。我信老陈,也信我自己的眼睛。”

我接过名片,放进工装上衣兜里,和那张三百块的签收单并排放着。

回公司的路上,手机响了。小刘打来的,声音压得极低,背景里能听见键盘敲得噼里啪啦。

“沈哥,马总把你那个核心算法改了,又发了一版给客户。结果客户那边说还是有问题,比之前的演示版本慢。马总刚才在办公室里骂人,说你的代码有bug。”

我攥着手机,手背上的青筋跳了一下。

“他怎么说的?”

“他说要追究你的责任,让你写事故报告。还说这个月绩效给你打C。”

绩效打C,意味着扣掉全部绩效工资。算下来比那三百块年终奖还少。

“知道了。”

“沈哥,你就不生气?”小刘的声音有点急。

“生气有用吗?”我看着车窗外掠过的行道树,“你帮我个忙。”

“你说。”

“马总改过的那两处参数,你能不能把修改前的原始代码和修改后的版本都保存下来?不用给我,你自己留着。”

小刘沉默了几秒。“沈哥,你是不是要走了?”

公交车报站的声音响起来,我要下车了。

“小刘,你还记得我去年教你的那个原则吗?”

“记得。‘先看接口,再看实现;先保流程,再保结果。’”

“对。按这个来就行。”

挂了电话,我下车往家走。楼道里飘着隔壁家的排骨香,三楼东户,小橙子的滑板车还在门口。

推开门,小橙子扑过来:“爸爸!你今天做饭了吗?”

“做了。”我弯腰抱起她,往厨房走。

锅里炖着红烧排骨,咕嘟咕嘟冒泡。妻子在旁边切黄瓜,抬头看了我一眼。

“今天去哪儿了?”

“城东。见了个朋友。”

她没追问,把黄瓜递给我。“拍一下,蒜在那边。”

我接过菜刀,拍黄瓜的时候手上使了点劲,砧板发出闷响。小橙子在旁边喊:“爸爸好厉害!”

饭桌上,妻子给小橙子夹排骨,忽然说了一句:“我今天去超市问了,夜班理货员一个月两千八,晚上七点到十一点。可以干。”

“不用。”

“你——”

“我说不用。”我放下筷子,看着她,“下个月开始,情况会变。”

她盯着我的眼睛看了几秒,然后低下头扒饭。

“行。听你的。”

晚上哄睡小橙子以后,我又坐到客厅沙发上。那份合同摊在茶几上,旁边是周建国的名片。我把名片翻到背面,上面印着盛恒智能的地址和一句话:“做真正有价值的事。”

手机亮了一下,是老陈发来的微信。

“老周刚才跟我打电话,说跟你聊得很好。他让我转告你一句话:这边随时欢迎,不用有顾虑。”

我回了一个字:“谢。”

然后把手机锁屏,靠在沙发上闭了会儿眼睛。对面楼的灯又灭了大半,只剩下零星几户还亮着。

三百块。五年。我攥了攥拳头,又慢慢松开。

还有十三天。

第四章 事故报告

三月一号,周五,早上八点半。

我刚到工位,马副总的助理就过来了,一张打印好的事故报告单放在我桌上。

“沈工,马总让你十点之前把这个填好交上去。”

我拿起单子看了一眼。上面已经填好了“事故经过”一栏,大意是:技术人员沈玉在智能分拣调度系统V3.0版本开发过程中,核心算法存在严重缺陷,导致客户现场演示失败,给公司声誉造成不良影响。下面留了空白栏,要求填写“事故原因分析”和“整改措施”。

小刘在旁边急得直搓手。

“沈哥,这明明不是你的问题……”

我抬手打断他,从抽屉里拿出签字笔,在事故原因分析那一栏写下一行字。

“代码提交后、发送客户前,被人为修改关键参数。”

然后我把单子递给马副总的助理。

“麻烦转交马总。”

助理接过去的时候扫了一眼,脸色变了,赶紧走了。

十分钟后,马副总的内线电话打过来。

“沈玉,你来我办公室一趟。”

语气很重,带着压不住的火气。

我站起来,小刘拉住我的袖子。“沈哥……”

“没事。”

马副总的办公室门半开着,我推门进去。他坐在宽大的办公桌后面,手里捏着那张事故报告单,指节发白。

“沈玉,你什么意思?”

“马总,我写的很清楚。”

“你意思是有人改了你的代码?”他把单子往桌上一拍,“谁能改你的代码?谁有那个权限?”

我看着他的眼睛。五年了,这张脸我看了五年——油光满面,眉毛稀疏,说话的时候嘴角习惯性往下撇。

“马总,我提交的代码有版本管理记录,提交时间、哈希值、代码行数都有存档。客户收到的版本,跟我提交的版本不一致。这个调取一下服务器日志就能查。”

马副总的眼神闪了一下。

“你少拿这些技术名词来唬我。我就问你,这个事故报告你写不写?”

“我写了。上面写的是事实。”

他站起来,两只手撑在桌面上,身子往前倾。

“沈玉,我警告你。这个项目出了事,你作为技术负责人,责任跑不掉。你现在认个错,写个整改方案,我还能帮你压一压。你要是不识抬举……”

“马总。”我打断他,“这个项目的技术负责人,早在去年十月就改成您外甥了。我是‘技术支持’。”

他愣住了。

“所以这个事故报告,不该我填。”

我把话说完,转身往外走。走到门口的时候停了一下,没回头。

“另外,我合同三月十四号到期。按规定,公司应该在到期前三十天通知我是否续约。我没收到。”

拉开门,走廊里站着好几个同事,小刘站在最前面。看见我出来,他张了张嘴。

“沈哥——”

“没事。干活吧。”

回到工位,我打开电脑。屏幕上弹出十几条未读邮件,大部分是客户技术团队发来的,询问V3.0版本的异常问题。我点开最新一封,是客户的技术主管老郑,我跟他打过很多次交道。

“沈工,你们公司发过来的版本有问题。我对比了上次现场演示的日志,核心模块有两处参数被改过。这个版本不能用。麻烦你重新发一份原始版本给我。另外,我们王总想跟你通个电话。”

我看了眼时间,上午十点二十。

马副总办公室的门关上了,百叶窗后面人影晃动,隐约能听见他在打电话,声音忽高忽低。

我给老郑回了邮件,附件里放了正确的终版代码,附言只有一句:“原始版本在此,请以这份为准。”

发完邮件,我拿起手机,给周建国发了条短信。

“周总,我这边可能比预想的要快。”

半分钟后,回复来了。

“随时。”

中午去食堂,打饭的阿姨都听说了。给我盛菜的时候,勺子多抖了两下,红烧肉多了好几块。

“小沈,多吃点。”阿姨压低声音,“你受委屈了。”

我笑了笑,没说话。找了个角落坐下,老陈端着盘子过来,坐我对面。

“听说你把马副总顶了?”

“没顶,就事论事。”

老陈夹了一筷子青菜,嚼了两口。“客户那边老郑给我打电话了。他说你们公司发过去的版本被人动过手脚,他给你作证。”

我抬头看着老陈。

“老郑这人我了解,技术出身,眼里揉不得沙子。他说他看不过去。”老陈放下筷子,“小沈,我跟你说句实在话。你在咱们公司,屈才了。老周那边是正经做事的地方,你去了好好干。”

“陈工,我……”

“别跟我客气。”老陈摆摆手,“我明年就退休了,走之前能看到你去个好地方,也算没白跟你同事一场。”

下午三点,王总秘书打来电话,说王总要见我。王总是公司一把手,平时很少来技术部,我五年里跟他说过的话不超过十句。

总裁办公室在五楼,地毯很厚,踩上去没声音。秘书把我领进去,王总坐在沙发上,面前泡着茶。旁边还坐着一个人事部的经理。

“小沈,坐。”王总五十来岁,保养得好,脸上没什么皱纹,“马副总的事,我刚了解了一下。”

我坐下来,没说话。

“客户那边投诉了。说我们发过去的版本存在严重技术问题,差点影响他们的系统上线。”王总给我倒了杯茶,“我调了服务器日志,发现代码确实被人改过。马副总承认了,说是‘误操作’。”

他看着我。

“这件事你怎么看?”

我端起茶杯,茶是上好的金骏眉,闻着有股甜香。

“王总,我没什么看法。我就想知道,我合同到期的事,公司这边怎么安排?”

王总沉默了一会儿。

“小沈,你是个技术骨干。公司需要你这样的人。续约的事,我们可以谈。”

“王总,”我把茶杯放下,“按规定,公司应该在到期前三十天通知我。现在离到期还有十三天。这十三天里,我需要公司给我一个书面答复。”

人事部经理在旁边插话:“沈工,这个流程我们确实有疏忽……”

“疏忽?”我看着他的眼睛,“我入职五年,经手了十七个项目,累计加班超过两千小时。去年那个智能分拣项目,我连续四个月没休过周末。年终奖三百块。”

办公室里安静了。

王总脸上的笑僵住了。

“我今天来,不是要跟公司谈条件。”我站起来,“我只想要一个按规矩办事的结果。书面答复,麻烦在到期前给我。至于续不续,公司定。”

我转身往外走。走到门口,王总在后面叫住我。

“小沈。”

我停下。

“马副总那边,公司会按规定处理。”

“那是公司的事。”我拉开门,“不是我的事。”

走出五楼的时候,走廊里的空调吹得人有点发冷。但心里是热的。

手机震了一下,是妻子发来的消息:“今天小橙子说,她长大以后想当工程师,像爸爸一样。”

我站在电梯口,盯着这行字看了很久。

电梯门开了,我走进去,按下一楼。镜面不锈钢映出我的脸——还是那张看着像四十岁的脸,但眼睛比早上亮了一些。

三百块。五年。我攥了攥拳头。

还有十二天。

第五章 书面答复

三月四号,周一。

早上到公司的时候,发现工位被挪了。从靠窗的位置换到了茶水间旁边,美其名曰“方便接水”。小刘的工位也被动了,从我对面挪到了走廊另一头。

我去找行政,行政说“马副总安排的”。

我没说什么,把东西一件件搬过去。电脑、键盘、那盆蔫了的绿萝、抽屉里几本技术手册。搬到最后,抽屉最底层那个牛皮纸文件袋露出来,我拿起来拍了拍灰,装进包里。

小刘跑过来帮我搬显示器,眼圈有点红。

“沈哥,他们太过分了。”

“没事。坐哪儿不是干活。”

刚安顿好,马副总从办公室出来,手里拿着一个文件夹。脸色比上周好了些,头发还是梳得溜光,但嘴角那点得意藏不住。

“沈玉,过来一下。”

我走过去。他把文件夹递给我。

“公司决定,鉴于你在智能分拣项目中的技术失误,调你到售后支持部,负责客户电话接听和技术答疑。调岗从今天开始,薪资按新岗位标准执行。”

我翻开文件夹。调岗通知,白纸黑字,盖着人事部的章。新岗位薪资一栏写着:基本工资三千二,无项目奖金,无绩效。

我合上文件夹。

“马总,这个调岗通知,有王总签字吗?”

马副总的嘴角抽了一下。“王总授权我处理技术部的人事调整。”

“那我的合同续约书面答复呢?”

“什么续约?”他皱起眉头,“你合同不是快到期了吗?到期不续,自然终止。这还用书面答复?”

我看着他,忽然觉得这个人很陌生。五年了,我一直以为他只是贪功、爱摆架子。到今天才明白,他是真的不懂规矩,或者说,他赌我不懂规矩。

“马总,合同第三页第九条。”我声音不大,但走廊里经过的同事都慢下了脚步,“合同期满前,甲方未履行通知义务,且乙方继续提供劳动满十五个工作日的,视为双方同意按原条件续约五年。”

马副总的脸白了。

“你……”

“我继续提供劳动到三月十四号,正好满十五个工作日。”我把文件夹递还给他,“所以现在的情况是:公司没有书面通知我不续约,我也没有主动提出不续约。那么按照合同条款,三月十五号开始,我和公司的劳动关系自动延续五年,条件不变。”

走廊里安静得能听见茶水间饮水机的咕噜声。

马副总攥着文件夹,指节发白。“沈玉,你别跟我玩这套文字游戏。”

“马总,这不是文字游戏。这是您五年前让我签的合同。”我看着他,“当时人事部老赵说‘就是个格式条款,走个过场’。但既然是合同,就得按合同办,对吧?”

他张了张嘴,没说出话来。

我转身回到新工位,坐下,打开电脑。屏幕亮起来,桌面还是我原来的壁纸——小橙子在幼儿园得的小红花照片。

手机震了一下,是盛恒林HR发来的:“沈工,周总问您那边进展如何?我们这边项目启动会定在下周一,如果您能来,周总说想请您主持技术方案评审。”

我回了一条:“我这边在处理,会尽快。”

刚发完,小刘的微信弹出来:“沈哥!马总去五楼了!脸色特别难看!”

我把手机翻过来扣在桌上,打开开发环境,继续写代码。虽然现在是“售后支持部”的人了,但V3.0的优化方案我还没写完。不管在哪,活干好是本分。

中午去食堂,打饭阿姨又给我多盛了半勺红烧肉。老陈端着盘子过来,坐我对面,什么话都没说,只是吃饭的时候嘴角带着笑。

下午两点,人事部经理亲自来工位找我。

“沈工,王总请你上去一趟。”

我跟着他上五楼。总裁办公室的门开着,王总坐在办公桌后面,马副总站在旁边,脸色灰败。

王总看见我进来,站起来,绕过办公桌,走到我面前。

“小沈,坐。”

我没坐。

王总看了马副总一眼。“马副总,你先出去。”

马副总张了张嘴,想说什么。王总抬了抬手,他咽回去了,低着头往外走。经过我身边的时候,没敢看我。

门关上以后,王总叹了口气。

“小沈,这件事,公司处理得确实有问题。”

他从桌上拿起一份文件递给我。是一份书面答复函,抬头写着我的名字。内容大意是:公司决定不与沈玉续约,合同到期后自然终止。落款日期是二月十号。

“这份东西,本该在二月初就给你。”王总的声音低了些,“马副总压下来了,人事部也没跟进。这是我们的管理漏洞。”

我看着那份答复函。如果二月初就给我,按照合同条款,我确实没法要求自动续约。但现在,三月四号了。

“王总,这份函,我不签。”

王总看着我,眼神复杂。

“小沈,我知道你委屈。这样,公司给你补偿。N加三,外加去年项目的奖金补齐。我让财务算一下,大概……”

“王总。”我打断他,“我不要补偿。”

他愣住了。

“我只要公司按规定办。合同条款怎么写的,就怎么办。要么,公司给我正式的、按流程的书面答复,我配合办离职。要么,按合同自动续约,我继续干。”

我看着他。

“您选。”

王总沉默了很久。窗外有只麻雀落在窗台上,啄了两下玻璃,又飞走了。

“小沈,你变了。”他忽然说。

“我没变,王总。我只是把合同看完了。”

他苦笑了一下,坐回椅子上,拿起电话拨了个内线。

“人事部吗?准备一份续约合同,按原条件。对,沈玉的。今天下班前送到我办公室。”

挂了电话,他看着我。

“续约合同,你签不签?”

“签。”我说,“但我有个条件。”

“你说。”

“调岗通知撤销。我回技术一部,继续负责智能分拣项目的技术收尾。”

王总盯着我看了几秒,然后慢慢点了点头。

“行。”

我转身往外走。走到门口的时候,王总在后面说了一句。

“小沈,马副总那边……公司会按规定处理。”

我停下脚步,没回头。

“王总,那是公司的事。”

拉开门,走廊里阳光从窗户照进来,在地上铺了长长一道光。我踩着光往电梯走,手机震了一下。

是小刘发来的:“沈哥!听说马总被停职了?!”

我没回,打开周建国的微信对话框。

“周总,我这边处理完了。续约合同我签,但我可能干不长。”

半分钟后,周建国回了一条语音。我点开,他那边背景音是车间机器的轰鸣,声音很大很实在。

“没事。你先把那边的事情收好尾。我这边项目启动会推到下下周。你什么时候来,什么时候开始。”

我把手机揣好,走进电梯。镜面不锈钢里映出我的脸——还是那张脸,但眼睛里的东西不一样了。

三百块。五年。我攥了攥拳头,又松开。

还有十天。

第六章 收尾

三月五号,我回到原来的工位。行政把电脑和绿萝又搬了回来,小刘帮我把东西归置好,那盆蔫了的绿萝浇了水,看着精神了些。

马副总——不,现在该叫老马了——办公室的门关着,百叶窗拉得死紧。听说他停职检查,配合组织核查。技术二部暂时由老陈代管。

小刘凑过来,压低声音:“沈哥,你知道吗?客户那边老郑给王总发了邮件,把服务器日志的对比分析写得清清楚楚。老马改你代码的事,赖都赖不掉。”

我打开电脑,桌面上弹出十几封未读邮件。最上面一封是客户老郑发来的,标题写着“技术方案确认”。

点开。老郑在邮件里说,收到正确的终版代码后,他们连夜做了测试,核心算法响应速度比之前演示版本还快了百分之五。项目验收通过,尾款已经安排支付。

最后一行,老郑写了一句题外话:“沈工,你们王总给我打电话道歉了。我说你不用道歉,你把沈玉留住就行。技术人才难得。”

我关了邮件,开始写收尾方案。V3.0虽然通过了客户验收,但还有几个优化点可以完善。我列了一份清单,标注了优先级和预计工期,准备交给老陈。

中午去食堂,打饭阿姨看见我,勺子一颠,红烧肉堆得像小山。

“小沈,回来了好。还是你坐这个位置踏实。”

老陈端着盘子过来,坐在对面。他代管技术二部以后,整个人看着忙了不少,但精神反倒好了。

“小沈,你那份收尾方案我看了。”老陈夹了一筷子青菜,“写得细。不过你既然要走了,不用这么费心。”

“干一天,就得干好一天。”

老陈看了我一眼,笑了。“行。那我就按你这个方案排期。”

吃了几口,他压低声音:“老马的核查结果快出来了。调岗,降级,留用察看一年。王总意思是给个教训,但不开除。”

我点了点头,没说什么。

“你不满意?”

“没有。”我扒了口饭,“公司按规定办就行。”

下午三点,人事部把续约合同送来了。厚厚一沓,跟五年前那份格式一样。我翻开第三页,找到那条补充条款,还在。

小刘在旁边伸着脖子看。“沈哥,你真签啊?”

“签。”

“那……盛恒那边……”

“我跟周总说好了。这边收好尾,把V3.0的优化做完,带你把核心模块吃透,我再走。”

小刘眼睛亮了。“沈哥,你要教我?”

“你不是想学吗?”我在合同最后一页签上名字,推给人事专员,“愣着干什么,拿本子去。”

小刘手忙脚乱翻出笔记本,搬了把椅子坐过来。我把V3.0的架构图打开,从最顶层的调度逻辑开始讲。讲到第三层的时候,忽然听见走廊里一阵脚步声。

老马抱着一个纸箱子从办公室出来。西装还是那身西装,但头发乱了,领带歪着,脸上的油光也没了。他低着头往门口走,经过技术部工位区的时候,脚步顿了一下。

小刘的笔记本翻到一半停住了。

我抬起头,跟老马的目光碰了一下。他嘴唇动了动,像是想说什么,但最终什么都没说出来。抱着箱子继续走,皮鞋敲在地砖上的声音,跟以前不一样了——以前是咔咔响,现在是拖沓的。

他走出技术部走廊的时候,我收回目光,继续讲架构图。

“刚才说到哪了?对,第三层指令队列。你看这里,我用的堆排序,比快排更稳定……”

小刘的笔在本子上飞快地划拉,偶尔抬头问一句。窗外的阳光斜着照进来,落在那盆绿萝上,叶子比昨天支棱了一些。

下班的时候,手机响了。是妻子打来的。

“今天小橙子幼儿园表演,你忘了?”

我一看时间,五点半。演出六点开始。

“马上到。”

关掉电脑,拎起包往外走。经过走廊的时候,看见老陈办公室灯还亮着。我敲了敲门,探进半个头。

“陈工,我先走了。小刘那个模块的学习计划我发他邮箱了,你帮我盯一下。”

老陈抬起头,眼镜架在鼻梁上,冲我摆摆手。

“去吧去吧。小橙子的演出别迟到。”

我一路小跑出公司大门。保安老赵笑着喊:“沈工,又正常下班?”

“今天有演出!”

“赶紧去赶紧去!”

公交车上,我给周建国发了条消息:“周总,我这边开始收尾了。预计三月底能过去。”

周建国的回复很简短:“好。到时候直接来找我。”

到了幼儿园,演出刚开始。小橙子站在舞台上,穿着小白兔的衣服,脸上涂着红脸蛋,正东张西望找观众席上的我。

我站在最后一排,举起手挥了挥。

她看见了,咧嘴笑了,露出缺了门牙的小豁口。

妻子从旁边挤过来,递给我一瓶水。

“今天怎么来这么晚?”

“交接工作。月底走。”

她拧瓶盖的手停了一下,然后继续拧开,递给我。

“下家定了?”

“定了。城东盛恒智能,技术总监。”

她看着我,眼睛亮了一下,又暗下去。“那工资……”

“两倍。项目奖金另算。”

她低下头,过了几秒才抬起来,眼里有点潮。但没说什么,只是把我的手攥住了,攥得很紧。

台上小橙子开始念台词:“我长大以后,要当一名工程师,像我爸爸一样,修好多好多机器!”

台下家长都在笑。我攥着妻子的手,看着台上那个扎着小揪揪的丫头,胸口那块一直绷着的东西,慢慢松了下来。

三百块。五年。都过去了。

第七章 新芽

三月十四号,合同到期日。

早上到公司的时候,工位上放着一盆新的绿萝。旧的那盆被我养得有了起色,新的是行政送来的,叶子更绿,盆是白色的,干干净净。

我拿起杯子接水,浇了一圈。

小刘跑过来,手里拿着打印好的代码文档。“沈哥,第三层那个堆排序我研究明白了!你看我这样改行不行?”

我扫了一眼他的修改方案,思路是对的,只是有两个参数需要调。“这里,和这里。你回去再跑一遍测试。”

“好嘞!”他转身就跑,跑了两步又折回来,“对了沈哥,老郑那边发来一封感谢邮件,抄送给了王总。说咱们V3.0优化版帮他们把分拣效率又提了百分之八。”

“知道了。干活去。”

他嘿嘿笑着跑开了。

人事部把新的续约合同正式归档,五年的合同,条件跟原来一样。但这次,合同最后一页的补充条款旁边,多了一行人事部经理手写的备注:“合同条款已逐条确认,双方各持一份。”

我把合同收进抽屉,和五年前那份放在一起。旧的那份,纸已经泛黄了,边角起了毛。新的那份,白纸黑字,封皮挺括。

两份合同中间,夹着那张三百块的签收单。我没扔,留着当个念想。提醒自己,有些事不能忘。

三月十五号,周五,最后一天在旧公司。

早上开完技术部例会,老陈宣布了两个消息。一是V3.0优化版正式上线,客户满意度回访全优。二是老马的核查结论出来了:调离技术管理岗,降为普通技术员,留用察看一年。

会议室里没人说话,但小刘在桌子底下冲我竖了个大拇指。

散会后,老陈叫住我。“小沈,晚上技术部聚餐,给你送行。”

“陈工,不用……”

“用的。”老陈拍了拍我的肩膀,“你教会了小刘,又帮我把二部的技术文档全理顺了。这一顿,必须吃。”

晚上聚餐就在公司旁边的家常菜馆,大圆桌坐满了人。小刘挨着我坐,一个劲给我倒茶。老陈点了几个硬菜,红烧肘子、糖醋鲤鱼、大盘鸡,满满当当摆了一桌。

“来,第一杯,敬小沈。”老陈端起酒杯,“技术扎实,人品过硬,到哪儿都能干出名堂。”

我站起来,杯子碰了一圈。茶水在杯里晃荡,映着包厢暖黄的灯。

小刘喝的是可乐,碰杯的时候手有点抖。“沈哥,以后我遇到问题,还能给你打电话吗?”

“随时。”

“那……盛恒那边要是招人,能不能……”

“你先把这个项目跟完。”我看着他,“把技术吃透。到时候我帮你递简历。”

小刘眼圈红了,低头猛扒饭。

吃到一半,手机响了。是个陌生号码,我走到包厢外面接。

“请问是沈玉吗?”对方声音有点耳熟。

“我是。”

“我是王总。”那边顿了一下,“你今天办离职手续,我没赶上。给你打个电话。”

我靠在走廊墙上,没说话。

“小沈,公司这边……亏欠你的,我心里有数。”王总的声音比平时慢了些,“马副总的事,公司按规定处理了。你的续约合同,我给你签了。盛恒那边要是待得不顺,随时回来。”

“王总,谢谢。”我看着走廊尽头窗户外面黑下来的天,“但我应该不会回来了。”

那边沉默了几秒。

“行。那祝你前程似锦。”

“谢谢王总。”

挂了电话,我回到包厢。老陈正在讲当年他刚参加工作时候的事,说得眉飞色舞。小刘一边听一边笑,筷子夹着的花生米掉在桌上。

我坐下来,端起茶杯喝了一口。茶有点凉了,但喝着正好。

这顿饭吃到晚上九点多。散场的时候,小刘喝可乐喝撑了,走路直打嗝。老陈拍了拍我的肩膀,什么都没说,转身走了。

我站在饭馆门口,看着他们的背影散进夜色里。北方的三月,风还带着凉意,但没那么刺骨了。

手机亮了,是周建国发来的消息:“下周一,项目启动会。你直接来会议室。不用带简历,我等你。”

我回了一个字:“好。”

然后打开和妻子的对话框,发了一条:“结束了。下周一去新公司。”

她秒回:“小橙子说要给你画一幅画,庆祝爸爸换新工作。”

“画什么?”

“她说画你修机器人的样子。”

我笑了笑,把手机揣进口袋。抬头看了看天,云层散开,露出几颗星星。

三百块。五年。今天画上句号。

明天开始,新的。

第八章 新平台

三月十八号,周一。

盛恒智能的办公楼在晨光里亮堂堂的。我提前二十分钟到了,前台姑娘领我到三楼的会议室。门口贴着白纸打印的桌签:“医药冷链仓储调度系统项目启动会”。

推门进去,周建国已经在里面了。还是那件深蓝色工装衬衫,袖口挽着,手里拿着马克笔在白板上画架构图。旁边坐着五六个人,有男有女,看着都像技术骨干。

“来了。”周建国回头看了我一眼,把马克笔递过来,“正好,你来画。医药冷链这个场景,温度控制是核心约束,你把这个条件加到调度算法里,看看怎么改。”

我接过笔,站在白板前。脑子里快速过了一遍医药仓储的特殊性:温区划分、效期管理、批次追踪、冷链不断链。把这些约束条件抽象成算法里的优先级队列,跟普通仓储的逻辑确实不一样。

“周总,如果温度是硬约束,那调度指令的生成应该分三层。第一层,温区匹配;第二层,效期优先;第三层,路径最优。”我在白板上画了个三层结构图,“这里,温区切换的时间成本要单独建模,不能简单按距离算。”

周建国站在旁边看,时不时点头。等我画完,他拍了拍手。

“好。就按这个思路走。沈玉,这个项目的技术方案你来牵头,团队里的人你随便挑。”

会议室里几个人都看着我。一个戴眼镜的年轻姑娘举手:“沈工,我是做嵌入式开发的,之前跟过两个冷链项目,能跟你一组吗?”

“欢迎。”

另一个中年男人推了推眼镜:“我负责过医药行业的WMS系统,对GSP规范比较熟。”

周建国在旁边笑:“行,看来不用我担心了。你们自己组队。”

启动会开完,周建国把我叫到他办公室。房间不大,墙上挂着一张智能仓储系统的拓扑图,桌上堆着图纸和样品零件。他从抽屉里拿出一个工牌递给我,上面印着我的照片和名字,岗位写着“技术总监”。

“照片是从你简历上扫的,有点糊,回头重新拍一张。”

我接过来,工牌是硬塑料的,边角很光滑。

“周总,有个事我得跟你说清楚。”我把工牌放进兜里,“我在原来公司,合同虽然续了五年,但那边王总答应,只要我把手头的收尾工作做完,随时可以走。手续都办利索了。”

周建国摆摆手。“老陈跟我说了。你那边的事,按规矩处理完就行。我这边不着急,项目周期长着呢,你先把技术方案理清楚。”

他顿了顿,从桌上拿起一份文件递给我。

“这是客户的需求说明书,你先看。医药冷链,温度控制精度正负零点一度,分拣准确率万分之零点五。这个指标,行业里没人做到过。”

我翻开文件,第一页就密密麻麻写满了参数要求。温度、湿度、效期、批次、灭菌状态、包装规格……光是约束条件就列了十几项。

“难。”我合上文件。

“难才有意思。”周建国靠在椅背上,“我找你来,就是觉得你能啃这块硬骨头。”

我看着他,忽然想起老陈说过的话——老周是正经做事的人。

“行。我啃。”

中午在盛恒食堂吃饭,菜品比原来公司丰富不少,两荤两素一汤,还有水果。我端着餐盘找位置,那个戴眼镜的年轻姑娘冲我招手。

“沈工,这边!”

她叫林小满,二十六岁,做嵌入式开发四年,说话语速很快,但条理清楚。旁边坐着那个中年男人,叫郑向东,四十出头,之前在医药流通企业做WMS系统,对行业规范门儿清。

“沈工,我上午把你画的架构图发给我同学看了,他在一家医药企业做仓储主管。”林小满一边扒饭一边说,“他说你那个温区切换的时间成本建模特别关键,他们现在用的系统就是没考虑这个,每次切换温区都要停线十几分钟。”

郑向东点头:“对,GSP规范里对温区切换有明确要求,但现有系统都只是做个记录,没真正把切换时间纳入调度。沈工你这个思路是对的。”

我嚼着饭,脑子里已经在转。温区切换时间纳入调度,意味着算法复杂度要翻倍。但如果不做,切换成本就转嫁给了客户,等于问题没解决。

“下午开个技术讨论会。”我说,“你们俩把各自领域的约束条件整理出来,咱们碰一下。”

林小满比了个OK的手势。郑向东掏出手机开始记。

下午的会开了三个小时。白板上画满了架构图、流程图、数据模型。林小满的嵌入式视角和郑向东的行业视角,补上了我原来没考虑到的几个盲区。散会的时候,天已经暗了。

周建国推门进来,看了看白板上的图,又看了看我们三个。

“怎么样?”

“有眉目了。”我指着白板最下面那行字,“核心算法框架定下来了,接下来需要跑仿真验证。”

周建国点头。“需要什么资源,直接跟我说。服务器不够就加,数据不够就买。”

晚上回到家快八点。小橙子已经吃过饭了,正趴在茶几上画画。看见我回来,举着画纸跑过来。

“爸爸!我画好了!”

画上是三个火柴人,站在一台歪歪扭扭的机器前面。左边那个最高,头上戴着一顶三角形的帽子,手里拿着一把扳手。

“这是爸爸,在修机器人。这个是妈妈,在给爸爸递水。这个是我,在旁边加油!”

我看着那幅画,蹲下来把小橙子抱起来。她身上有沐浴露的香味,头发还湿着。

“画得真好。”

妻子从厨房出来,手里端着一碗热好的汤。“吃饭了没?”

“吃了,公司食堂。”

“新公司怎么样?”

“比原来强。”我把小橙子放下,接过汤碗,“团队里的人都能干活,不搞虚的。”

妻子坐下来,看着我喝汤。过了几秒,她说:“你最近白头发少了。”

我愣了一下,伸手摸了摸头顶。

“真的。之前鬓角那块白了一片,现在好像没那么明显了。”

我没说话,继续喝汤。汤是冬瓜排骨,炖得酥烂,喝到胃里暖融融的。

晚上把小橙子哄睡以后,我坐在客厅沙发上,打开电脑。盛恒的VPN账号已经开通了,我连上服务器,把白天的架构图输进去,开始写核心算法的伪代码。

屏幕上的光标一闪一闪,窗外万家灯火。

手机亮了一下,是小刘发来的微信:“沈哥,新公司咋样?我这边V3.0优化版跑通了!陈工说下个月让我独立负责一个小项目!”

我回了一个大拇指。

然后打开周建国的微信,发了一条:“周总,核心算法框架初稿写完了。明天能跑仿真。”

周建国回得很快:“好。我明天上午看。”

我把手机放在茶几上,继续写代码。键盘敲击的声音在安静的客厅里嗒嗒响,小橙子卧室的门缝里透出夜灯暖暖的光。

三百块。五年。那页翻过去了。

新的一页,刚开头。

第九章 硬骨头

三月二十号,仿真结果出来了。

我盯着屏幕上跳动的数字,眉头越拧越紧。林小满和郑向东站在旁边,三个人谁都没说话。

温度控制精度达标了,正负零点一度。分拣准确率也够了,万分之零点三。但响应时间比预期慢了整整四倍——两秒。医药冷链的作业节奏很快,两秒的延迟,意味着整条线要等。

“问题出在温区匹配那一层。”林小满指着屏幕上的一条曲线,“每切换一个温区,算法要重新计算所有待处理指令的优先级。指令一多,计算量指数级上升。”

郑向东翻着数据:“我看了医药企业的作业日志,高峰期同时在线指令超过三千条。这个量级,不优化不行。”

我靠在椅子上,盯着天花板。空调出风口发出轻微的嗡嗡声,办公室里就我们三个人,安静得能听见日光灯管的电流声。

“把温区匹配从全局计算改成局部计算。”我坐直身子,“每个温区单独维护一个指令队列,温区之间只交换边界指令。这样复杂度从N的平方降到N。”

林小满眼睛一亮:“对啊!我怎么没想到。”

郑向东在纸上画了两笔。“边界指令怎么定义?”

“影响下一个温区调度决策的指令。比如温区A的最后一条指令是送到温区B的某货位,那这条就是边界指令,要同步给B。”

“行,我马上去改。”林小满打开开发环境。

我继续写优化方案,写到晚上七点,终于把第一版跑通。响应时间从两秒压到了零点三秒,其他指标全达标。

“成了。”林小满长出一口气,整个人瘫在椅子上。

郑向东伸了个懒腰,脖子咔咔响。“沈工,你这套算法,要是申请专利,能拿不少奖金。”

“先不着急。”我把代码提交到版本库,“再跑三天压力测试,稳定了再说。”

走出办公楼的时候,外面下起了小雨。北方的春雨,细密冰凉,打在地上冒起一层薄雾。我没带伞,把工装领子立起来,快步往公交站走。

手机响了。一看,是老陈。

“小沈,忙不?”

“刚下班。陈工您说。”

“两件事。第一,小刘那个项目出了点小问题,他不敢给你打电话,让我问问你。”

我停下脚步。“什么问题?”

“客户现场部署的时候,数据迁移报错。他查了两天没找到原因。你方便的话,给他发个消息,不用直接帮他改,给他指个方向就行。”

“好。”

“第二件事……”老陈顿了一下,“老马的留用察看期,昨天刚满。他主动申请调去售后支持部,王总批了。今天下午搬的工位。”

雨落在路边的梧桐叶上,沙沙响。

“他让我带句话。”老陈的声音低了些,“他说,‘替我谢谢沈玉。’”

我没说话,看着雨丝在路灯下变成一片一片的金色。

“我知道了。”我说,“陈工,您跟他说,不用谢。”

挂了电话,我给小刘发了条消息:“数据迁移报错,先看字符集配置,再看时间戳格式。八成是源数据库和目标库的编码不一致。”

三分钟后,小刘回了一串感叹号:“沈哥你太神了!就是字符集的问题!我查了两天啊!”

“下次先看接口层。”

“记住了!”

我把手机揣好,继续往公交站走。雨渐渐小了,云层后面透出月亮的光。

回到家,小橙子已经睡了。妻子坐在沙发上看手机,见我进门,站起来去厨房热饭。

“今天怎么回来这么晚?”

“项目遇到点问题,解决了。”

她端出热好的饭菜,坐在旁边看我吃。

“新公司是不是特别累?”

“累。但干着痛快。”

她笑了一下,从茶几上拿起一张纸递给我。“小橙子今天在幼儿园画的,说要贴在你新公司的工位上。”

画上是一台方方正正的机器,旁边站着一个火柴人,手里举着一根大扳手。机器上面歪歪扭扭写着四个字:爸爸最棒。

“我明天带过去。”我把画折好,放进工装兜里。

妻子看着我,忽然伸手摸了摸我的鬓角。“白头发又少了几根。”

“是吗。”

“嗯。看来新公司不光活好,还能治白头发。”

我忍不住笑了。她也笑,笑着笑着靠在我肩膀上。

窗外雨停了,月亮从云里钻出来,照着对面楼的屋顶。远处高架桥上的车灯连成一条光带,慢慢往远处流。

那天晚上,我睡得很踏实。

第十章 提前交付

四月八号,周一。

医药冷链项目的核心系统提前两周完成开发。周建国来看了仿真结果,又看了压力测试报告,沉默了好一会儿。

“沈玉,你知道这个系统的意义吗?”

我摇头。

“医药冷链的断链问题,行业里困扰了十几年。温度失控、分拣错误,轻则药品报废,重则影响用药安全。”他看着屏幕上跳动的数据,“你这套系统,能把人为失误降到接近零。”

会议室里坐着项目组全体成员,林小满、郑向东,还有后来加入的两个测试工程师。周建国转过身面对大家。

“下周,客户那边组织专家评审。沈玉主讲技术方案。小满准备嵌入式部分的演示。向东把行业合规文档整理出来。测试组出一份完整的测试报告。”

他顿了顿。

“这个项目,我们要做成标杆。”

散会后,林小满凑过来小声说:“沈工,周总很少这么夸人。”

“他夸的是项目,不是人。”

“反正我跟着你干,踏实。”

我看着她笑了笑。这个二十六岁的姑娘,做起事来有股子狠劲,连续加班一周,眼睛都不眨。郑向东更不用说,四十岁的人,跟年轻人一起熬夜写文档,第二天照样准时到岗。

团队里没人讲条件,没人推诿,没人抢功。活儿干完了,名字一起署。活儿出了问题,一起扛。

现在想想,以前那家公司,除了勾心斗角就是推诿扯皮,真正做事的人没几个。但在盛恒,大家的心思都在技术上。这种氛围,让人想起刚入行时候的自己——那时候我也相信,把技术做到极致,就是最大的本事。

晚上加班到十点,周建国拎着两袋外卖进来。

“都别饿着。吃完再干。”

袋子里是饺子和拌面,热气腾腾的。一群人围在会议室桌上,筷子碰筷子,谁也不客气。

“沈工,你这个算法,我回头想了一下。”郑向东嚼着饺子含含糊糊地说,“温区边界指令的同步机制,能不能做成异步的?这样温区之间解耦更彻底。”

我放下筷子,拿起笔在纸上画了个图。“异步的话,一致性怎么保证?”

“用消息队列,每个温区一个独立的队列。边界指令只做单向传递,接收方做幂等处理。”

“行。明天把方案细化一下。”

林小满端着饺子碗凑过来:“那我嵌入式那边也要跟着改,通讯协议得重新设计。”

“一起弄。”

周建国靠在椅子上吃面,看着我们讨论,什么话都没说。但嘴角那点笑,从进门就没下去过。

吃完外卖继续干活。凌晨十二点半,我站起来活动肩膀的时候,看见周建国办公室的灯还亮着。门虚掩着,他坐在桌后面看图纸,手里的铅笔在纸上慢慢描。

这个五十多岁的男人,身家早就够退休了,但还是每天第一个到,最后一个走。项目关键节点亲自盯,技术方案逐行审。

“周总,还不走?”

他抬起头,笑了笑。“看完这点。你先回,明天别迟到。”

我拎起包往外走。经过林小满工位的时候,她趴在桌上睡着了,屏幕上代码还亮着。我把搭在椅背上的外套轻轻盖在她肩上,关掉显示器。

电梯下行的时候,手机亮了。是妻子发来的照片——小橙子穿着睡衣,手里举着一幅新画。画上是一台绿色的机器,旁边站了一圈火柴人。

“她说这是爸爸和爸爸的团队。”

我把照片放大,看着那些歪歪扭扭的小人,心里热了一下。

出了办公楼,夜风里有股青草的味道。四月的北方,春天终于来了。路边绿化带里的连翘开了花,一丛一丛的黄色,在路灯下明晃晃的。

我骑着共享单车往家走,路过原来那家公司的大楼。五楼技术部的灯还亮着,不知道是谁在加班。

我没停,蹬着车继续往前。

三百块。五年。真的过去了。

第十一章 评审会

四月十五号,客户那边的专家评审会。

盛恒智能的会议室改成了评审现场,长条桌上摆着投影仪和茶水。对面坐着七个专家,来自医药行业协会、疾控中心和几家大型医药流通企业。正中间那位头发花白的老先生,是行业标准委员会的副主任委员,姓方。

周建国坐在我旁边,低声说了一句:“方老不好糊弄,问的问题会很细。”

我点头,把PPT翻到第一页。

讲了四十分钟。从医药冷链的行业痛点,到温区调度的技术难点,再到核心算法的设计思路,最后是测试数据和实际验证结果。每一步都有数据支撑,每一条结论都有仿真和实测背书。

讲完,方老摘下眼镜擦了擦,重新戴上。

“沈工,我问三个问题。”

“您说。”

“第一,温区切换的时间成本,你们是怎么建模的?第二,系统在断网情况下的降级策略是什么?第三,这套算法如果用在其他行业,比如生鲜或者化工,需要做哪些调整?”

三个问题,一个比一个刁钻。尤其是第二个——断网降级,这是医药冷链最要命的场景。一旦网络中断,温控系统必须能独立运行,数据要缓存,恢复后要能同步。

我翻开手里的补充文档,先回答了温区建模的具体参数和计算公式。方老边听边点头,偶尔在笔记本上记一笔。

然后讲断网降级。这套机制是林小满负责的,她开发的嵌入式模块支持本地缓存和独立温控策略,断网后系统自动切换为单机模式,数据存满本地存储后开始覆盖最旧的非关键数据,网络恢复后自动同步。

方老转头看向林小满。“小姑娘,你那个缓存策略,覆盖非关键数据的判断标准是什么?”

林小满站起来,条理清晰地回答:“方老,我们定义了三级数据优先级。第一级是温控参数和异常报警,不可覆盖;第二级是批次和效期信息,保留时间最长;第三级是作业路径记录,可以按时间覆盖。缓存空间按这个优先级分配。”

方老点头,又问我第三个问题。

“沈工,跨行业应用,你觉得最大的障碍是什么?”

我想了想。“最大的障碍不是技术,是行业规则的差异。不同行业对温度、时效、安全的要求完全不同。技术上换个参数就行,但规则理解错了,系统就是废的。所以跨行业必须先做行业研究,不能直接套用。”

方老把眼镜摘下来,放在桌上。

“我做了二十年标准评审,见过的技术方案上百份。”他看着我,“大部分都在讲技术多先进、算法多厉害。你是第一个把行业规则放在技术前面的。”

他转头看向旁边的其他专家。

“我没有问题了。”

评审会持续了三个小时。结束的时候,方老站起来跟我握了握手。

“沈工,这套系统,我会推荐给标准委员会参考。”

周建国送专家下楼的时候,林小满凑过来,眼睛亮晶晶的。

“沈工,方老那句评价,比给我发一万块奖金都值。”

郑向东在旁边点头:“技术被行业认可,这才是真本事。”

我收拾好资料,把笔记本电脑合上。屏幕旁边贴着小橙子那张画,已经贴了一周,边角有点卷。我用透明胶带重新粘了一下。

周建国回来的时候,手里拿着一份文件。

“客户那边刚发来的,合同签了。首期款下周到账。”

他把文件递给我。封面上写着:“医药冷链智能仓储调度系统技术开发合同”,甲方是行业排名前三的医药流通企业,乙方是盛恒智能。合同金额那一栏,数字很大,具体多少我没细看。

“项目奖金,按合同额百分之二算。”周建国说,“团队平分。这是规矩。”

林小满掰着手指头算了一下,倒吸一口气。

“周总……这……”

“拿着。”周建国摆摆手,“该你们的。”

晚上团队聚餐,周建国破例开了瓶白酒,给每人倒了一杯。

“第一杯,敬沈玉。”他端起酒杯,“技术带头人,实至名归。”

我站起来碰杯,一饮而尽。酒辣嗓子,但暖。

林小满喝了一口就咳嗽,眼泪都呛出来了。郑向东帮她拍背,一边拍一边笑。

“第二杯,敬小满。断网降级那个方案,做得漂亮。”

林小满红着脸站起来,端着杯子抿了一口。

“第三杯,敬向东。行业规则这一块,没有你我们得走弯路。”

郑向东站起来,杯子举过头顶,郑重其事地碰了一下。

三杯酒下肚,周建国脸上有了红晕。他坐下来,夹了一筷子菜,忽然说了一句。

“我办公司二十年,最不缺的就是钱。最缺的,是能一起把事做成的人。”

他看着我。

“沈玉,你来了,我这块心病就去了。”

我没说话,端起茶杯碰了碰他搁在桌上的酒杯。

窗外夜色正好。餐厅的窗户开着一条缝,春风裹着槐花的味道飘进来,甜丝丝的。

手机在兜里震了一下。我掏出来看,是小刘发来的照片——原来公司的技术部团建,老陈站在中间,小刘在旁边比了个耶。照片背景是公园的湖面,夕阳照得水面一片金。

底下附了一句话:“沈哥,我们V3.0正式上线了。客户说这是他们用过最顺手的系统。”

我回了一个大拇指。

然后把手机收好,端起茶杯,看着满桌的人——周建国在跟郑向东聊行业标准,林小满在给测试组的小姑娘夹菜,服务员端上来一盆热气腾腾的疙瘩汤。

我喝了口茶,茶是刚续的,热得烫嘴。

但咽下去的时候,是甜的。

第十二章 温暖

四月二十二号,周末。

盛恒的医药冷链项目进入现场部署阶段,我带着林小满和郑向东去客户仓库做最后的系统调试。客户是行业排名前三的医药流通企业,仓库在城郊物流园,占地两万多平,温区从零下二十五度到零上二十五度,划分了十几个不同的库区。

早上八点到现场,换上防寒服,先走了一遍冷库通道。零下二十度的冷冻区,呼出的气瞬间变成白雾。林小满冻得直搓手,但手里的测试仪一直没放下,挨个货架核对温度传感器的数据。

郑向东跟客户仓储主管对接,把GSP规范里关于温度记录的要求逐条对了一遍。仓储主管是个四十多岁的女同志,姓吴,说话干脆利落。两人对着文件讨论了半个小时,吴主管竖了个大拇指。

“郑工,你比我们内部的人还熟规范。”

“干了十几年了,闭着眼都能背。”

中午在客户食堂吃饭,吴主管特意让人多做了两个热菜。

“沈工,你这套系统,我们王总特别重视。他说要是验收通过,下半年还有两个仓库要上。”

“先把这个做好。”

“对对对,先做好这个。”

下午继续调试。核心算法在现场环境的响应时间比实验室稍慢,零点三五秒。吴主管盯着屏幕上的曲线,看了很久。

“沈工,这个速度,比我见过的所有系统都快。”

“还有优化空间。”

“不用了。”吴主管转头看着我,“你知道我们之前用的那套系统,响应时间是多少吗?”

我摇头。

“三秒。高峰期能到五秒。”她叹了口气,“操作员要盯着屏幕等指令出来,等得心焦。你这一下子提到零点几秒,操作员得高兴坏了。”

调试到下午五点,系统稳定运行。吴主管带着我们走了一遍出货流程,分拣、复核、打包、装车,全程没有一次延迟和错误。最后一件药品扫码出库的时候,系统自动生成了一份完整的温度追溯报告,从入库到出库,每个环节的温度记录精确到小数点后一位。

吴主管拿着报告看了又看。

“就这个追溯报告,以前我们每个月要花两个人专门整理。现在系统自动生成。”她抬起头,“沈工,这省下来的人力,我直接转去做复核,准确率还能再提。”

晚上回到公司,周建国在办公室等我们。

“怎么样?”

“一次通过。”我把验收报告递给他。

周建国翻了翻,放在桌上。

“客户那边王总给我打电话了。说下半年两个仓库上系统,让你继续牵头。”

林小满在旁边小声欢呼了一下。

“另外,”周建国从抽屉里拿出三个信封,“这个月的项目奖金,提前发。”

我接过来,捏了捏,挺厚。没有当场拆,装进了包里。

回到家快九点。小橙子已经睡了,妻子在客厅叠衣服。我把包放下,从里面掏出那个信封放在茶几上。

“什么?”

“项目奖金。”

她拿起来拆开,数了数,抬起头看着我,嘴唇动了动。

“这么多?”

“项目提前交付,客户追加了奖金。”

她把钱放回信封,站起来,走到我面前,忽然伸手抱住了我。头埋在我肩膀上,没说话。

我拍了拍她的背。

“以后会更好。”

她嗯了一声,松开我,转身去厨房。“给你热饭。”

我坐到沙发上,打开手机。小刘发来一张截图——原来公司的内部公告,“关于给予马某某调岗处分的决定”。公告里写着:因在智能分拣项目中存在违规操作行为,给予调岗处分,调离技术管理岗位,留用察看期满后安排至售后支持部工作。

我看了两秒,把截图删了。

有些事,过去了就过去了。没必要一直盯着。

妻子端出热好的饭菜,坐在旁边看我吃。忽然说了一句:“对门王姨今天问我,说你是不是换工作了。”

“你怎么说的?”

“我说换了。现在在盛恒,做技术总监。”她笑了笑,“王姨说,早就该换了。”

我也笑了。扒了两口饭,从兜里掏出手机,翻到小橙子那张画,又看了一遍。

“明天周末,带小橙子去动物园吧。她念叨好几回了。”

“行。”妻子站起来收碗,“你明天不加班?”

“不加。项目刚交付,周总说放两天假。”

她把碗放进水池,回头看了我一眼。

“那明天我多买点菜,把老陈和小刘也叫来?上次你说小刘想请教你技术问题,不如来家里吃顿饭。”

我想了想。“行。你看着安排。”

夜里躺在床上,妻子已经睡着了,呼吸均匀。我睁着眼看天花板,脑子里还在转着优化方案——客户那边还有一个细节可以再改进,温区切换的边界指令同步机制虽然已经做了异步处理,但极端情况下还是有可能出现短暂的数据不一致。

明天得跟郑向东和林小满讨论一下。

翻了个身,月光从窗帘缝里漏进来,在墙上投下一道窄窄的白。

手机亮了一下,是周建国发来的消息:“方老刚才给我打电话,说标准委员会想邀请你参加下个月的行业技术论坛,做个主题演讲。你准备一下。”

我回了一个字:“好。”

然后锁屏,闭上眼。

三百块。五年。那个信封里的三张钞票,现在还夹在旧合同里。我没扔,留着提醒自己——被人看轻的时候,不用吵,不用闹。把事做好,比什么都强。

窗外的月光慢慢移过墙面,照在衣柜顶上那盆绿萝上。叶子绿得发亮,藤蔓垂下来,快挨着衣柜门了。

那是从旧公司那盆蔫了的绿萝上剪下来的枝条,插在水里养了半个月,生了根,移栽到花盆里,活了。

长得比原来那盆还好。

第十三章 论坛

五月十号,行业技术论坛。

会场在城西的国际会议中心,能坐三百人的报告厅,坐得满满当当。来的都是医药流通、智能仓储、冷链物流领域的技术负责人和行业专家。方老坐在第一排正中间,周建国在旁边陪着。

我站在后台,看着手里的演讲稿。十分钟前林小满帮我改了一遍PPT,把核心算法的部分精简了三页,又加了现场调试的实拍视频。郑向东把行业合规部分的表述逐字推敲过,确保没有一句话有歧义。

“沈工,该你了。”工作人员提醒。

我深吸一口气,走上台。

台下几百双眼睛看着我。我在台上站定,扫了一圈——方老微微点头,周建国嘴角含笑,后面几排坐着几个熟悉的面孔,有客户方的技术主管,还有行业期刊的记者。

“各位好,我是沈玉,来自盛恒智能。”

开口第一句,声音稳当。

“今天跟大家分享的,是我们在医药冷链智能仓储调度系统上的一些探索。先说一个数字——行业里,因为温区切换和分拣延迟造成的药品损耗,每年大概在千分之三左右。听起来不多,但放到全国医药流通的总量里,这个数字意味着每年有数亿元的药品因为仓储环节的问题而报废。”

台下安静了。

“我们的方案,把温区切换纳入调度算法的核心约束,用异步消息队列做温区解耦,用三级缓存策略保障断网降级。现场实测,温区切换时间从原来的平均十二分钟压缩到四十五秒。分拣准确率万分之零点三。”

我翻到PPT下一页,放出现场调试的实拍视频。画面上,冷库里的自动分拣线高速运转,药品从零下二十度的冷冻区出来,经过温区过渡通道,进入零上五度的冷藏区,全程没有停顿。

“这套系统在客户仓库稳定运行了一个月。操作员培训只用了半天,因为系统不需要他们做任何额外的判断。所有调度指令自动生成,温度异常自动隔离,效期临近自动预警。”

又翻一页,是温度追溯报告。从入库到出库,每一个环节的温度曲线都在上面。

“这是系统自动生成的温度追溯报告。以前这份报告需要两个人花一整天整理。现在,系统自动生成,零人工干预。”

讲完最后一页,我放下翻页笔。

“我的分享就到这里。谢谢大家。”

报告厅里安静了两秒,然后掌声响起来。方老第一个鼓掌,周建国紧随其后。后面几排的观众站起来,掌声越来越响。

我站在台上,微微鞠了一躬。

走下台的时候,林小满在后台入口等着,眼睛红红的,手里攥着纸巾。

“沈工,你讲得太好了。”

“是你PPT改得好。”

“那视频是我拍的。”郑向东从后面冒出来,难得开了个玩笑。

论坛下半场是圆桌讨论,方老主持,我作为嘉宾坐在台上。讨论的议题是“智能仓储技术的行业标准建设”。方老第一个把话筒递给我。

“沈工,你觉得行业标准应该怎么建?”

我想了想。“标准应该从实际应用中来,不能闭门造车。比如温区切换的时间成本建模,这个参数如果不统一,不同系统之间的数据就没法互通。但标准也不能定得太死,要给技术创新留空间。所以我的建议是,定底线,不定上限。底线是安全,上限交给市场。”

方老接过话筒,看着我。“说得好。定底线,不定上限。这句话我记下了。”

讨论结束,方老专门走过来跟我握了握手。

“沈工,你们那套系统,标准委员会打算组织一次专题调研。到时候可能需要你配合。”

“随时。”

周建国在旁边笑:“方老,沈玉现在是盛恒的技术总监,您有事直接找他。”

“我知道。”方老拍了拍周建国的肩膀,“老周,你捡到宝了。”

周建国哈哈大笑。

散场的时候,我在报告厅门口被人拦住。一个戴眼镜的中年男人递来名片,是另一家医药企业的技术负责人。

“沈工,我们下半年要上一个新仓库,能不能约个时间聊一聊?”

“可以,您跟我助理约时间。”

名片收好,继续往外走。又有人拦,是行业期刊的记者,想约专访。再拦,是一家猎头公司的,说有个更高的职位想推荐。

我一一应付完,走出会议中心大门。周建国站在台阶下面,手里拿着两杯咖啡,递给我一杯。

“累不累?”

“还行。”

“刚才方老跟我说,标准委员会想聘你当技术顾问。”

我喝了一口咖啡,苦的,但提神。

“周总,你觉得呢?”

“我觉得行。这对公司、对你个人,都是好事。”

我点了点头。五月的阳光照在会议中心的玻璃幕墙上,明晃晃的。台阶两边的花坛里,月季开得正盛,红的粉的黄的,一丛一丛挤在一起。

手机亮了,是小刘发来的消息:“沈哥!听说你今天在论坛上演讲了!我们技术部好几个人在直播上看呢!陈工说‘这才是沈玉’!”

后面跟了一串鼓掌的表情。

我回了一个笑脸。

周建国在旁边看了一眼我的手机。“原来公司的人?”

“嗯。老陈和小刘,以前技术部的。”

“老陈我知道,老技术人了。小刘怎么样?”

“肯学,踏实。就是经验少点。”

周建国端着咖啡想了想。“下半年两个新仓库要上系统,人手不够。你要是觉得小刘行,可以让他来试试。”

我抬起头看着周建国。

“周总……”

“别谢我。你教出来的人,你了解。我看的是能力,不是关系。”

咖啡有点凉了,但喝到嘴里还是香的。

“我回头问问他。”

“不急。先把方老那边的标准调研配合好。”

我点头。阳光照在身上,暖融融的。五月的风从广场上吹过来,带着槐花的甜香。

三百块。五年。论坛的掌声。咖啡的苦。都混在一起,变成了一种说不上来的滋味。

但咽下去的时候,是甜的。

第十四章 传承

五月二十号,小刘来了。

我推荐他给周建国之后,盛恒安排了面试。林小满和郑向东一起面的,技术考核做了三个小时。小刘出来的时候满头是汗,但眼睛亮着。

“沈哥,题目是你出的吧?那个温区边界同步的算法题,跟你在原来公司教我的一模一样。”

“做出来了?”

“做出来了。而且我加了个异步优化,比标准答案还快一点。”

我拍了拍他的肩膀。

面试结果三天后出来——通过。岗位是嵌入式开发工程师,试用期三个月。周建国亲自批的。

小刘正式入职那天,我带着他在盛恒办公楼转了一圈。一楼是展厅,二楼是行政和销售,三楼是技术部。医药冷链项目组占了半个楼层,工位上摆着示波器、开发板和各种测试仪器。

“这边是林小满,负责嵌入式。”我介绍道,“这边是郑向东,行业合规。”

小刘挨个握手,有点拘谨。林小满冲他笑了笑:“沈工教出来的人,肯定错不了。”

郑向东递给他一份文档。“医药行业的GSP规范,你先看看。不懂的问我。”

小刘接过来,翻开第一页就开始认真看。

下午开项目组碰头会,讨论新仓库的方案设计。小刘坐在角落里旁听,笔记本记得飞快。讨论到温区过渡通道的设计时,他忽然举手。

“沈哥……我有个想法。”

“说。”

“过渡通道的温度梯度,能不能用动态控制?根据当前在途的药品批次,实时调整通道每一段的温度设定值。这样不同温区的药品混批过渡的时候,温度波动更小。”

会议室里安静了一下。

林小满先反应过来:“你这个思路,等于把过渡通道也变成了调度的一部分。”

“对。而且可以用我们V3.0那个堆排序改一改,优先级按药品的温敏程度来定。”

郑向东翻着规范文件:“GSP里对过渡通道的温度梯度没有硬性规定,只要求‘符合药品储存要求’。动态控制不违规。”

周建国在旁边听着,点了点头。“方案细化一下,下周讨论。”

小刘激动得脸都红了,低头在笔记本上唰唰写。我看了他一眼,想起五年前自己第一次在项目会上提出算法改进方案的时候,马副总眼皮都没抬,只说了一句“先按现有的做”。

“小刘。”散会后我叫住他。

“怎么了沈哥?”

“你刚才那个想法,很好。回去写份完整的技术方案,我帮你改。”

“真的?”

“真的。以后有想法就直接说,不用等。这里跟原来公司不一样。”

他用力点头,抱着笔记本跑回工位。

晚上加班到八点,我收拾东西准备走。经过小刘工位的时候,他还在写方案,屏幕上开着开发环境,旁边摊着郑向东给他的GSP规范。那本规范被他翻得起了毛边,上面用荧光笔画满了标记。

“别太晚。”我说。

“马上就好。沈哥你先走。”

我拎着包往外走。电梯口碰到周建国,他也刚要走。

“小刘怎么样?”

“进入状态很快。”我按下电梯按钮,“是块料子。”

“你教得好。”

电梯门开了,我们走进去。周建国靠在轿厢壁上,看着楼层数字跳动。

“沈玉,你说,做技术的人最怕什么?”

我想了想。“最怕没机会。”

周建国看了我一眼,点了点头。

“对。最怕没机会。所以有机会的时候,就得抓住。你抓住了。小刘也抓住了。”

电梯到一楼,门打开。大厅里灯还亮着,保安在岗亭里看手机。我们走出办公楼,外面夜色清凉。

“明天见。”

“明天见。”

我骑着共享单车往家走。五月的夜晚很舒服,不冷不热,空气里都是草木的气息。路过原来那家公司的大楼,五楼技术部的灯还亮着。这次我多看了一眼,辨认出那个位置——是我以前的工位,靠窗,旁边是茶水间。

不知道现在是谁坐在那里。

蹬了两圈,骑过去了。

回到家,小橙子已经睡了。妻子在客厅看手机,见我回来,把手机递过来。

“老陈发的。你看看。”

屏幕上是一段视频,原来公司技术部的办公室,老陈站在中间,背后是十几个同事。他们在给我录一段话。

“小沈,”老陈对着镜头,表情认真,“你走了以后,技术部变化很大。马副总调走了,王总调整了管理流程,技术部的项目奖金制度也改了。现在做得多就拿得多,公平透明。小刘也去你那边了,我们虽然人手紧,但心里痛快。”

他顿了顿。

“谢谢你。真的。”

视频最后,十几个同事一起喊了一句:“沈工,加油!”

我盯着屏幕看了很久。

妻子在旁边问:“怎么了?”

“没事。”我把手机还给她,“就是觉得,有些事,做了还是有人记得的。”

她靠过来,靠在我肩膀上。

“当然有人记得。”

夜里躺在床上,我想起很多事。想起那个年终奖三百块的下午,财务小周躲闪的眼神。想起马副总拍我肩膀的力道。想起王总办公室里那杯金骏眉。想起老陈在食堂把肉夹给我。想起小刘第一次独立提交代码时的紧张。

想起周建国第一次见面时握手的力道。想起林小满改代码时的狠劲。想起郑向东翻规范时眼镜滑到鼻尖的样子。

想起方老摘下眼镜说“我没有问题了”。

想起小橙子画的那幅画,贴在盛恒工位上,边角有点卷。

三百块。五年。都过去了。

但有些东西,留下来了。

第十五章 温度

六月,医药冷链项目第二个仓库启动。

我带着小刘去现场做需求调研。客户是另一家大型医药流通企业,仓库在老城区,建于九十年代,货架还是老式的横梁货架,通道窄,叉车转弯半径小。跟之前那个现代化的仓库完全两回事。

“这种老仓库,智能化改造难度最大。”我站在库区入口,看着里面密密麻麻的货架,“空间不够,设备进不去,很多方案用不了。”

小刘在旁边拿着测距仪量通道宽度。“沈哥,主通道只有两米二,标准叉车过不去。得用窄巷道叉车。”

“窄巷道叉车作业效率低,跟智能调度系统的配合需要重新设计。”

“那怎么办?”

我蹲下来,看着地上的旧轨道。仓库早年做过半自动化改造,地面埋了磁导航轨道,但早就废弃了。轨道旁边的混凝土有些开裂,缝隙里长着细细的草。

“把这些旧轨道利用起来。”我站起来,指着地面,“窄巷道叉车走轨道,定位精度靠轨道保证。调度系统只需要管好指令队列,不用管导航。”

小刘眼睛亮了:“旧轨道当导航基准?”

“对。省了改造导航系统的钱,也省了空间。”

客户方的仓储主管老周——一个五十多岁的男人,头发花白,穿着旧的蓝色工装——一直跟在我们后面。听到这里,凑上来问了一句。

“沈工,那些旧轨道废弃了快十年了,还能用?”

“能用。磁导航的原理没变。把轨道清理一下,重新标定,精度可能比新铺的还好。”

老周半信半疑,但没反驳。

下午继续测数据。库区温度分布、货架承重、消防通道位置、电力线路走向——一项一项记在本子上。小刘负责测,我负责画草图。两个人蹲在地上,用粉笔在水泥地面上画出了仓库的平面图和轨道走向。

老周站在旁边看了一会儿,忽然说:“沈工,你这人干活,实在。”

我抬起头,笑了笑。

“我干这行十几年,见过不少搞技术的。”老周蹲下来,看着地上的草图,“有些人来了就讲方案多先进,设备多智能,恨不得把整个仓库推倒重建。你是第一个蹲在地上画轨道的。”

“仓库是客户的,钱也是客户的。能省则省。”

老周拍了拍手上的灰,站起来。“行,你们先弄。中午我让食堂加两个菜。”

调研结束,回公司的路上,小刘坐在副驾驶,一直在翻自己记的笔记。

“沈哥,旧轨道改造的方案,我回去写个可行性报告。”

“好。注意成本核算,客户预算有限。”

“明白。”

车子开过老城区的窄街,两边是上世纪的老房子,墙面斑驳,阳台上的晾衣绳挂着花花绿绿的被单。路边有个老人在修自行车,旁边蹲着一只黄猫,懒洋洋地晒太阳。

小刘看着窗外,忽然说:“沈哥,我原来以为,技术就是写代码、调参数、做仿真。今天才发现,技术还得蹲在地上画轨道。”

“技术是手段。让事情变得更好,才是目的。”

他点了点头,低头继续翻笔记。阳光从车窗照进来,落在他年轻的侧脸上。

我想起老陈说过的另一句话——“搞技术的人,得心里有温度。”

当年没太懂。现在明白了。

第十六章 惊喜

七月初,盛恒智能半年度总结会。

周建国站在会议室前面,身后投影上是一张业绩表。医药冷链项目两个仓库顺利交付,第三个仓库已经签约。公司上半年营收同比增长百分之一百二十,其中医药冷链板块贡献了将近一半。

“上半年最佳团队,医药冷链项目组。”周建国念出名单的时候,会议室里掌声响起来。林小满和郑向东站起来,小刘也跟着站起来,有点不知所措。

我坐在台下,看着他们三个。林小满眼圈又红了,郑向东还是那副稳重的样子,小刘站得笔直,脸涨得通红。

周建国摆了摆手,掌声停下来。

“最佳团队,奖金二十万。另外,沈玉——”他看向我,“个人突出贡献奖,奖金五万。”

掌声又响起来。我站起来,鞠了个躬。

散会以后,周建国把我叫到办公室。

“方老那边发来正式邀请函了,标准委员会聘你当技术顾问,任期三年。”他从抽屉里拿出一个烫金的聘书,“下个月开第一次会。”

我接过来翻开,上面写着我的名字和“技术顾问”四个字。

“周总,这个顾问是兼职的,不影响公司这边吧?”

“不影响。顾问费你自己拿,公司不抽成。”周建国靠在椅背上,“另外还有一件事。”

他从桌上拿起一份文件。

“方老建议,把你们这套医药冷链调度系统,申报行业科技进步奖。申报材料他来指导,年底前提交。”

我看着那份文件,封面上写着“医药冷链智能仓储调度系统科技进步奖申报书”。

“周总,这个奖,我听说过,行业里含金量最高的。”

“对。”周建国看着我,“拿不拿得到另说,但申报本身就是对技术的认可。你准备一下材料。”

“好。”

走出周建国办公室的时候,手机响了。是妻子发来的消息:“小橙子今天在幼儿园得了小红花,老师说她帮同学修好了坏掉的玩具。”

后面附了一张照片——小橙子手里举着一朵纸做的红花,脸上那个得意劲儿,跟我小时候第一次修好收音机一模一样。

我回了一条:“随我。”

她秒回:“自恋。”

我笑着把手机揣好,走回工位。小刘正在跟林小满讨论代码,两个人争论得面红耳赤。郑向东在旁边翻规范文件,时不时插一句。阳光从窗户照进来,落在他们身上。

我坐下来,打开电脑。桌面上是小橙子最新画的一幅画——一台方方正正的机器,旁边站着四个火柴人,高矮不一。机器上面写着:“爸爸的团队”。

屏幕旁边,还贴着那张旧画。边角更卷了,我用透明胶带粘了又粘。

小橙子问过我,为什么不换新的。我说,第一张最珍贵。

那时候她不懂。但长大了会懂的。

第十七章 风向

八月,行业科技进步奖申报材料提交。

九月,方老打来电话,说材料通过初审,进入答辩环节。答辩安排在国家会议中心,面向十一位行业专家,全程录像。

周建国亲自带队。答辩前一天晚上,项目组在酒店会议室做最后准备。林小满把PPT过了三遍,郑向东把行业数据核对了两遍,小刘负责调试演示系统——现场要实时连线客户仓库,展示系统运行状态。

我坐在椅子上,看着他们忙碌。周建国走过来,递了杯茶。

“紧张吗?”

“还行。比面试盛恒那天紧张一点。”

周建国笑了一声。“还记得那天我跟你说的话吗?”

“记得。‘做真正有价值的事。’”

“对。”他喝了口茶,“明天答辩,不管结果怎么样,你们已经做到了。”

第二天上午十点,答辩正式开始。我站在讲台上,身后是大屏幕,面前是十一位专家。连线画面切到客户仓库,实时数据显示系统正在运行,温度曲线平稳,分拣指令流畅。

我讲完技术方案,进入问答环节。第一个问题来自一位资深专家。

“沈工,你们的系统目前只在两家企业应用,样本量是否足够支撑行业推广?”

“推广的前提是稳定性,不是样本量。目前系统的运行数据已经涵盖了一百三十万条分拣指令,温度控制精度在连续运行状态下没有一次超标。等第三家客户上线后,样本量自然增加。但技术验证的充分性,不取决于客户数量。”

专家点了点头,没有追问。

第二个问题更尖锐:“如果核心算法开源,竞争对手直接复制,你们怎么办?”

“算法可以复制,但对行业的理解不能。这套系统的核心不是代码,是温度建模的方法和对医药冷链规则的理解。这些东西在文档里,在流程里,在每一个参数的选择里。竞争对手可以抄走代码,但抄不走我们蹲在仓库地上画轨道的那几个月。”

台下有人笑了。方老坐在最后一排,嘴角微微上扬。

答辩结束,我走下台。周建国在走廊里等着,什么话都没说,拍了拍我的肩膀。

一周后,结果公布。盛恒智能的医药冷链智能仓储调度系统,获得行业科技进步奖二等奖。

周建国在全员大会上宣读了获奖通知。念到“技术负责人沈玉”的时候,会议室里掌声雷动。林小满跳起来鼓掌,郑向东难得笑得露出牙齿,小刘拍得手心通红。

我站起来,鞠了一躬。

那天晚上回家,我把获奖证书放在茶几上。小橙子凑过来看,指着上面的字一个一个念:“科、技、进、步、奖。”

“爸爸得的?”

“爸爸和爸爸的团队一起得的。”

她想了想,跑回房间,拿出一张新画的画。画上是一台机器,旁边站了一圈人,每个人头上都顶着一朵花。

“这是团队的奖。”她认真地说。

我把她抱起来,举过头顶。她咯咯笑着,两只小脚在空中乱蹬。妻子从厨房探出头,看见我们这样,笑着摇了摇头。

窗外九月的天很高很蓝,风从窗户吹进来,翻动着茶几上的证书。证书旁边,是那张旧合同,夹着三百块的签收单。纸张已经泛黄,但边角平整。

我抱着小橙子,看着窗外的天。

三百块。五年。都过去了。

但有些东西,永远不会过去。

第十八章 新程

十月,北方入秋。

医药冷链项目第三个仓库上线。这次是小刘独立负责现场实施。出发前一天,他来找我。

“沈哥,这个仓库我全权负责?”

“对。技术方案、现场调试、客户培训,都你来做。有搞不定的给我打电话。”

他攥了攥拳头,深吸一口气。“好。”

“记住那个原则。”

“先看接口,再看实现;先保流程,再保结果。”他背得一字不差。

小刘去了现场,每天发进度汇报。第三天遇到了问题——客户的老式货架承重不够,自动分拣设备的安装位置需要重新设计。他在电话里跟我讲了二十分钟,我听完,只问了一句。

“如果这是你自己的项目,你会怎么做?”

电话那头沉默了几秒。

“我把分拣设备改成悬挂式,不落地。”

“那就去做。”

挂了电话,我站在办公室窗前。外面下着秋天的第一场雨,梧桐叶被打落一地,粘在湿漉漉的地面上。

林小满敲门进来。“沈工,方老那边来电话,说标准委员会的调研报告初稿出来了,想请你审一遍。”

“放着吧,我下午看。”

她放下文件要走,又停住。“沈工,小刘能行吗?”

“能行。他有那个本事,就差一个机会。”

她点了点头,关上门出去了。

下午看完调研报告,给方老回了邮件,提了三条修改建议。然后打开小刘的进度汇报,最新一条写着:“悬挂式方案客户通过了!比原方案省了七万预算!吴主管说我是‘小沈工’。”

后面跟了一个得意的表情。

我回了一个字:“好。”

十月底,小刘的项目顺利上线。回来那天,他黑了一圈,也瘦了,但精神头足得很。

“沈哥,客户给我写了表扬信。”

“给周总看过了?”

“看了。周总说,下个项目还让我去。”

“那就去。”

十一月,行业技术论坛再次邀请盛恒做分享。这次上台的是小刘。他站在讲台上,讲自己独立负责的那个老仓库改造案例。台下坐着几百人,他刚开始有点紧张,声音发紧。但讲到技术方案的时候,越讲越稳,最后收尾的时候,连方老都点头了。

我在台下坐着,看着他。

想起五年前那个在工位上顶着黑眼圈改方案的小伙子。想起他在我被调岗那天红着眼圈帮我搬显示器。想起他在微信里发“沈哥你是不是要走了”时的忐忑。

现在他站在台上,面对几百人,讲自己的项目。

散场后,小刘跑过来,脸上还带着兴奋的红晕。

“沈哥,我刚才讲得怎么样?”

“比第一次强。”

“跟您比还差得远。”

“不用跟我比。跟自己比就行。”

他笑了,用力点头。

晚上回家,收到小刘发来的一条微信,是一张截图——原来公司的内部群里,老陈转发了论坛的直播链接,底下十几个同事排队发鼓掌的表情。

小刘附了一句话:“沈哥,陈工说,他们都在看。”

我把截图放大,一条一条看那些表情。有老陈的,有原来技术部那些同事的。翻到最后,一个陌生头像发了一条:“技术出身的人,到哪儿都发光。”

头像是老马。

我看了几秒,把手机收好。

窗外的十一月,北方已经很冷了。但屋里暖气烧得足,小橙子穿着单衣在客厅跑来跑去,妻子在厨房炖汤,香味飘了满屋。

那盆绿萝还放在衣柜顶上,藤蔓垂下来,已经拖到了床头柜。叶子绿得发亮,一片一片,在灯光下泛着油润的光。

那是从三百块年终奖的旧公司带出来的唯一一样东西。

长得多好。

第十九章 长路

腊月,一年又到头了。

盛恒智能的年会在城东的一个酒店宴会厅举办。周建国包了整个厅,摆了二十桌。技术部、销售部、行政部、售后部,再加上几个客户代表,满满当当。

我坐在技术部那桌。左边是林小满和郑向东,右边是小刘和后来加入的几个新同事。大家碰杯、说笑、互相夹菜。林小满喝了两杯红酒,话比平时还多,拉着郑向东讲她新发现的算法优化思路。郑向东一边听一边点头,筷子夹着的花生米掉在桌上。

年会中间有抽奖环节,周建国自掏腰包设了特等奖——一台最新款笔记本电脑。抽奖箱摇了几圈,抽出一张纸条。周建国念出名字。

“沈玉!”

全场鼓掌。我站起来往台上走,林小满在背后拍我。“沈工你运气也太好了!”

我接过奖品,周建国递话筒过来让我说两句。我握着话筒,看着台下一张张脸。周建国站在旁边,嘴角带笑。方老作为特邀嘉宾坐在主桌,朝我举了举茶杯。

“谢谢周总,谢谢团队。”我想了想,没多说什么,“明年继续把活干好。”

简短得让主持人愣了一下。台下笑起来,掌声比刚才更响。

年会散场,我拎着电脑往外走。小刘跟在旁边,手里也拎着奖品——一个蓝牙音箱,三等奖。

“沈哥,你知道吗,我以前从来没想过自己能进这么大的公司,还能拿奖。”

“现在想了?”

“现在想的是明年怎么做得更好。”

我看着他。这个曾经顶着黑眼圈改方案改到凌晨的年轻人,现在走路带风,说话有底气,眼睛里那股劲,跟我当年一模一样。

走出酒店大门,外面飘起了雪。细密的雪粒斜着打下来,落在路灯的光晕里,像碎金。

“沈哥,明年你有什么打算?”

“把标准委员会那个调研做完,再带几个新项目。”

“那……我还能跟着你干吗?”

“你现在自己能干了。”

他愣了一下,然后笑了。

雪越下越密,地上铺了薄薄一层白。我掏出手机,给妻子发了条消息:“年会结束了,马上到家。”

她回得很快:“路上慢点。小橙子说等你回来再睡。”

我加快脚步,踩着薄雪往家走。鞋底发出咯吱咯吱的响。路过原来那家公司的大楼,楼顶的霓虹灯还亮着,但五楼技术部的灯已经灭了。

继续往前走。前面是家的方向。

推开门的时候,小橙子果然没睡,裹着小毯子坐在沙发上,眼皮打架但硬撑着。看见我进来,扑过来抱住我的腿。

“爸爸,你拿奖了吗?”

“拿了。”

“什么奖?”

“一台电脑。”

她歪着头想了想。“那你可以给我画机器人了?”

“可以。”

妻子从卧室出来,把小橙子抱回去睡觉。经过我身边的时候,低声说了一句:“桌上给你热了汤。”

我坐到沙发上,端起汤碗。汤是排骨莲藕,炖了一下午,藕都糯了。喝了一口,暖到胃里。

茶几上放着那张旧合同和三百块的签收单。旁边是新的聘书,方老签发的技术顾问,任期三年。再旁边是小橙子的画,画上的机器人和火柴人,在灯光下涂着明亮的颜色。

我把汤喝完,站起来关灯。卧室门缝里透出夜灯暖暖的光,小橙子的声音从里面传出来,迷迷糊糊的:“妈妈,爸爸为什么有白头发?”

妻子轻声回答:“因为爸爸以前很辛苦。”

“那现在呢?”

“现在不辛苦了。”

我站在门外,听着她们的对话。

然后走进卧室,靠在门框上。

“谁说我辛苦了?”我说,“活儿干好了,不辛苦。”

小橙子翻了个身,嘟囔了一句梦话,睡着了。

妻子抬起头,看着我,笑了。

窗外雪还在下。无声无息地落在地上,盖住了一整年的脚印。

但路还长着呢。

创作声明

本文为虚构创作,请勿与实际联系。本文所有素材源于互联网,仅用于叙述呈现,请知悉。