雪下了一夜。
整座城市在清晨陷入一种缓慢的寂静。
贾长贵在距离公司大门三十米的地方开始奔跑。
羽绒服裹在身上,像一层笨重的壳。
深色的裤脚溅满了雪水泥点。
他喘着粗气,盯着那扇旋转玻璃门,盯着门内大厅角落那台灰色的考勤机。
指纹按上去的瞬间,屏幕红光闪烁。
时间刚好跳过去。
迟到了。
三十秒。
一个穿着崭新西装的身影,就站在考勤机旁边,手里端着杯咖啡。
那是宋宏盛,技术部新来的负责人。
他抬腕看了看表,又看了看屏幕上刺红的打卡记录。
咖啡的热气模糊了他镜片后的眼神。
他没说话。
只是那目光,像这冬天的空气,又冷又硬。
贾长贵的心,一点点沉下去。
他没想到,这三十秒,会像第一块被抽走的砖。
十八天后,他坐在这座写字楼里。
窗外依旧寒冷。
而他身后,九个耗资巨大、关乎公司命脉的项目,就在这个普通的下午。
一个接一个。
熄灭了屏幕。
陷入死寂。
01
雪是后半夜开始下的。
贾长贵凌晨四点醒来过一次,听到窗外簌簌的声响。
他想起阳台窗户好像没关严,怕雪飘进来,起身去看。
外面已是白茫茫一片,路灯的光晕染开一小团黄,雪花在里面纷乱地舞。
他关好窗,重新躺下,脑子里过了一遍今天要处理的事。
三个系统的日志需要深度分析,一个隐蔽的性能瓶颈可能要在今天定位。
还有梁晟睿那边,新接手的模块有几个历史遗留的耦合点,得找时间跟他讲清楚。
闹钟在六点半准时响起。
比平常早了十分钟。
他知道下雪天路不好走。
洗漱,热了昨晚剩下的粥,就着咸菜吃完。
出门前,他习惯性地检查了背包:笔记本电脑,电源,一个用了多年的保温杯,还有一小瓶救心丸——那是给他母亲备的,偶尔自己胸闷时也会含一粒。
七点整,他锁上门。
楼道里已经能听到邻居家孩子因为下雪兴奋的叫喊。
走到小区门口,贾长贵心里咯噔一下。
平时这个点已经排满的共享单车,今天寥寥无几,而且车座上覆着厚厚的雪。
公交站台上挤满了人,每一辆缓缓驶来的公交车都塞得像个沙丁鱼罐头,车门艰难开合,勉强吞下几个人,又留下更多焦急张望的面孔。
出租车更是踪影难觅,偶尔空车驶过,溅起一片泥水,根本不停。
贾长贵在原地站了五分钟,雪落在他的头发和肩头,融化了一些,留下深色的水渍。
他看了看表,决定往前走一个路口去坐地铁。
平日步行十分钟的路程,今天因为积雪和湿滑,走了将近二十分钟。
地铁站里同样人满为患,空气混浊。
列车延误的广播在头顶回荡。
每一站都停得很久,上车下车的人都带着一股烦躁的戾气。
贾长贵紧紧抱着自己的背包,被人群推来搡去。
他不再看表了,只是沉默地盯着车厢里不断跳动的站名指示灯。
出地铁时,已经比平时晚了近四十分钟。
公司那栋灰色的写字楼就在马路对面,不远,但需要穿过一个十字路口。
红灯漫长。
雪花被风卷着,扑打在他的脸上。
绿灯亮起,他加快脚步,皮鞋踩在积雪上,发出咯吱咯吱的声音,有些打滑。
旋转玻璃门近在眼前。
他甚至能看到大厅里那盆常绿植物,和前台后面空荡荡的座位——还没到上班时间。
也看到了考勤机旁那个端着咖啡的身影。
贾长贵跑了起来。
肺里吸进的冷空气像刀子一样。
旋转门转得有些慢,他侧身挤进去,带进一阵冷风和几片雪花。
大厅里暖气很足,瞬间扑了他一脸。
他几步冲到考勤机前,伸出右手食指。
机器发出“嘀”的一声轻响。
屏幕亮起,先是显示他的名字和工号,然后跳出了打卡时间。
比规定的上班时间,晚了三十秒。
背景色是刺目的红。
贾长贵盯着那行红色的小字,有些发愣。
呼吸还没平稳,白色雾气从他口鼻间逸出。
“贾工。”
旁边传来声音。
贾长贵转过头。
宋宏盛就站在两步远的地方,穿着合身的深灰色西装,头发梳得一丝不苟。
他刚来技术部不到两个月,是公司高薪从外面挖来的“管理人才”。
据说推崇什么“精细化”、“狼性”。
宋宏盛微微笑着,但那笑容没到眼睛里。
他举了举手中的咖啡杯。
“路上不好走吧?”
贾长贵点点头,抬手抹了一下额头上不知是雪水还是汗的水迹。
“雪太大,车不好坐。”
“理解。”
宋宏盛走近两步,目光落在考勤机屏幕上,又抬腕看了看自己那块看上去很贵的手表。
“制度就是制度。”
他声音不高,语气也算平和。
“尤其是我们技术部门,讲究的就是精准和纪律。”
“迟到三十秒,和迟到三十分钟,性质上是一样的。”
“都是打破了规则。”
贾长贵张了张嘴,想说什么。
比如他十几年来的全勤记录。
比如他无数次深夜加班处理故障,从没要过一分加班费。
比如那些只有他能搞定的、合同里根本没写的“杂事”。
但他什么也没说出来。
他只是又点了点头,喉咙里含糊地应了一声:“嗯。”
宋宏盛似乎很满意他这个反应,脸上的笑意真切了一点。
“先去忙吧。”
“后续人事那边会有正式通知。”
贾长贵没再看他,转身朝电梯间走去。
背影有些佝偻,深蓝色的旧羽绒服在明亮的大厅里显得格外黯淡。
电梯镜面映出他的脸,五十岁出头,皱纹深刻,眼神里带着一种长久伏案工作留下的疲惫。
还有一丝刚才未曾显露的茫然。
电梯上行,轻微的失重感传来。
贾长贵靠着轿厢壁,慢慢调整呼吸。
背包似乎比早上出门时重了一些。
02
办公区已经陆续来了人。
敲击键盘的声音,打电话的声音,还有同事间互相抱怨天气的闲聊。
贾长贵的工位在靠窗的角落,相对安静。
他放下背包,脱下湿了边缘的羽绒服搭在椅背上。
按下电脑开机键。
等待系统启动的间隙,他拿起保温杯,想去接点热水。
路过公共办公区时,听见几个年轻人在议论。
“……真狠啊,秒打卡,宋总就在旁边盯着。”
“新官上任嘛,总得烧几把火。”
“贾工也是倒霉,十几年老员工了,第一次吧?”
“规矩就是规矩,谁让你撞枪口上了……”
声音在他走近时低了下去,变成含糊的问候。
“贾工早。”
“早。”
贾长贵点点头,脸上没什么表情,径直走向茶水间。
热水注入杯子,腾起白雾。
他捧着温热的杯壁,站在窗前。
楼下街道上的车辆像甲虫一样缓慢蠕动,整个世界都被这场雪拖慢了节奏。
回到工位,电脑已经启动好了。
桌面很干净,除了几个必要的工作软件图标,只有一个命名为“工作记录”的文件夹。
他点开邮箱。
一封未读邮件躺在最上面,发送者是人事行政部,标题是“关于近期考勤纪律重申及处理通报”。
发送时间是十五分钟前。
他握着鼠标,光标在那个标题上停留了几秒,才点开。
邮件正文是套话,强调公司纪律,号召大家向先进学习。
后面附了一个表格附件。
下载,打开。
表格里只有一行数据。
姓名:贾长贵。
部门:技术研发中心。
事由:迟到。
处理措施:扣除本季度全额绩效奖金(人民币壹万元整),部门内通报批评。
通报批评。
贾长贵往后靠进椅背,椅子发出一声轻微的呻吟。
他端起杯子,喝了一口热水。
水有点烫,顺着食道下去,胃里暖和了一些,但心口那块地方,还是觉得有点空,有点凉。
壹万元。
对他而言不是个小数目。
房贷,孩子的学费,老家父母时不时需要的药费。
这一下,年底的计划就得重新盘算。
屏幕上,那行字方正正,黑体加粗,透着不容置疑的力度。
他移动鼠标,关掉了表格,关掉了邮件。
视线落在桌面那个“工作记录”文件夹上。
他点开。
里面是十几个子文件夹,名字起得简单,甚至有些随意。
“A系统备忘”、“B平台琐事”、“C接口那些坑”、“日志分析心得”……
只有他知道这些文件夹里装着什么。
那不是他本职工作的产出文档,也不是公司流程要求留下的记录。
那是他十几年里,像燕子衔泥一样,一点点积累起来的东西。
某个核心服务在极端并发下会出现的诡异内存泄漏,触发条件非常隐蔽,他花了三个周末才定位到,记录在案,并写了一个临时的监控脚本。
某个老旧系统与新框架兼容时,存在一个底层协议解析的偏差,平时没事,但每过大约十七个月,会在某个特定日期前后引发数据校验错误。
他推算出了下一个可能出问题的日期,做了备注。
某个第三方供应商的接口,文档写得天花乱坠,实际调用却有一堆潜规则和暗坑,他把所有踩过的雷、验证过的有效调用方式,都记了下来。
还有更多。
服务器权限的微妙平衡,某些自动任务的手动干预时机,几个关键数据库账号的密码和备用权限令牌——这些本该由部门共享或上级掌握的信息,因为历史原因和人事变动,最后只有他这个最老的“枢纽”心里清楚。
它们散落在各个角落,不成体系,却像隐藏的血管和神经,维系着整个技术生态脆弱的日常运转。
他给这些文件夹加了密。
密码是他的工号加上入职日期。
没有人知道。
以前他觉得这是责任,是一个老员工该做的。
现在他看着这些文件夹,觉得有点刺眼。
梁晟睿端着杯子走过来,在他隔板上轻轻敲了敲。
“师傅,热水器好像坏了,出的水不够热。”
贾长贵从屏幕前抬起头。
梁晟睿是他一手带出来的,小伙子踏实肯学,对他一直很尊敬。
“嗯,那个加热棒老化了,得报修。”
贾长贵说。
“你打行政电话,报我们这片工区。”
“另外,接水的时候多放一会儿,管道里的冷水排掉,出来的能热点。”
梁晟睿点点头,却没走。
他压低声音。
“师傅,那事儿……我听说了。”
“宋总这也太不近人情了。谁不知道您为公司付出多少?多少次半夜……”
“行了。”
贾长贵打断他,声音不高,但很稳。
“按规定办事,没什么好说的。”
“你去忙吧。”
梁晟睿看着他平静无波的脸,把后面的话咽了回去。
“那……我先去报修。”
梁晟睿走开了。
贾长贵重新把目光投向屏幕。
他移动鼠标,没有点开任何一个加密文件夹。
而是打开了公司的内部规章制度页面。
找到了《员工考勤管理办法》。
又找到了《劳动合同》的电子版。
他看得很慢,很仔细。
像一个第一次接触这些条文的新人。
看完,他关掉网页。
从抽屉里拿出一本新的软面抄,拧开一支黑色水笔。
在第一页,工工整整地抄下了公司规定的上下班时间。
上午九点。
下午六点。
他盯着这行字看了很久。
然后翻到下一页,开始列自己当前负责的、在岗位说明书上有明确列出的工作项目。
一笔一划。
写得极其认真。
03
下午,部门开每周例会。
宋宏盛主持。
他站在前面,投影幕布上是他做的PPT,色彩鲜明,图表专业,充斥着“赋能”、“抓手”、“迭代”、“闭环”这类词汇。
他讲了公司新的战略方向,讲了技术部门要如何“拥抱变化”、“创造价值”。
然后话锋一转,提到了纪律。
“最近我发现,我们部门有些老同志,有些功臣。”
他目光在会议室里扫了一圈,掠过贾长贵时,没有停留。
“可能觉得资历老了,就可以在细节上放松要求。”
“这种思想要不得。”
“公司能发展到今天,靠的不是某个人,而是完善的制度和高效的执行力。”
“一粒老鼠屎,能坏一锅粥。”
“一次小小的迟到,破坏的是整个团队的时间观念,是攻坚克难所需要的分秒必争的精神!”
他的声音拔高了一些,带着某种激昂的调子。
“所以,这次的处罚,不是针对某个人。”
“而是树立一个标准,一个底线。”
“希望大家引以为戒。”
会议室里很安静,只有空调出风口的嗡嗡声。
有人低头看手机,有人盯着面前的笔记本,眼神放空。
贾长贵坐在后排靠窗的位置,手里转着一支笔,看着窗外。
雪还在零星地飘,天空是铅灰色的。
会议最后,宋宏盛让各个项目组汇报进展。
轮到贾长贵时,他只是简单说了几句。
“负责的系统运行平稳。”
“本月计划内的优化点已完成。”
“没有需要跨部门协调的重大问题。”
言简意赅,符合他一贯的风格。
宋宏盛似乎想让他多说点,追问道:“老贾,你那边几个都是核心老系统,潜在风险排查得怎么样了?有没有需要提前预警的?”
贾长贵沉默了两秒。
他电脑里那些加密文件夹中,至少有三条记录,可以算作“潜在风险预警”。
其中一条关于那个十七个月周期的兼容性问题,距离可能触发的时间点,只剩下不到一个月了。
他抬起眼,目光平静地看向宋宏盛。
“按现有监控指标看,都在正常阈值内。”
“没有需要特别预警的情况。”
宋宏盛点了点头,没再追问,转向下一个汇报者。
散会后,人群涌出会议室。
梁晟睿紧走几步,跟上贾长贵,两人并肩朝工位走去。
“师傅,您刚才怎么不提那个兼容性……”
“晟睿。”
贾长贵停下脚步,看着他。
“我的岗位职责里,写的是‘保障指定系统稳定运行’。”
“监控指标正常,系统就在稳定运行。”
“至于那些还没发生、也可能永远不会发生的问题。”
“那不是我的‘职责’。”
他说得很慢,每个字都清楚。
梁晟睿愣住了,他从没听过师傅用这种语气说话。
疏离,准确,像在念一段法律条文。
“可是……”
“没有可是。”
贾长贵继续往前走。
“做好你分内的事。”
梁晟睿看着他的背影,心里涌起一股陌生的不安。
他觉得师傅好像有什么地方不一样了。
那股十几年如一日、把公司事当自己事操心的劲儿,忽然就没了。
像是一盏灯,quietly地熄灭了。
梁晟睿犹豫再三,下午还是敲响了宋宏盛办公室的门。
宋宏盛正在看一份报表,示意他坐下。
“宋总,我想跟您汇报一下……关于我师傅,贾长贵工的事。”
宋宏盛抬起头,饶有兴致地看着他。
“说。”
梁晟睿把贾长贵多年来如何默默处理那些边缘问题,如何掌握着许多系统关键但未公开的细节,如何无数次在非工作时间救急,都讲了一遍。
他讲得有些激动,脸微微发红。
“宋总,师傅他真的为公司付出太多了。这次迟到,确实是意外,这么大的雪……”
宋宏盛抬手,打断了他。
他身体向后,靠在宽大的皮质椅背上,双手交叠放在腹部。
“小梁啊,你的心情我理解。”
“你是贾工带出来的,有感情。”
“但是。”
他语气加重。
“管理一家公司,不能只讲感情,讲苦劳。”
“我们要讲制度,讲规则,讲效率。”
“贾工过去是做了不少事,公司也给予了他相应的报酬和职位,不是吗?”
“不能因为过去有贡献,就拥有了破坏制度的特权。”
“人情味,不能凌驾于制度之上。”
“这是原则问题。”
他顿了顿,看着梁晟睿有些苍白的脸。
“你是个有潜力的年轻人,技术不错。”
“但也要注意,不要把那种旧时代的、模糊的‘师徒情分’、‘主人翁意识’,带到我们现在的管理工作里来。”
“明确责任,厘清边界,这才是现代企业所需要的。”
梁晟睿张了张嘴,却发现自己无话可说。
宋宏盛的话逻辑严密,冠冕堂皇,把他所有想为师傅辩解的理由,都堵在了“人情”、“旧时代”的标签下。
“我明白了,宋总。”
他干涩地说。
“好好干。”
宋宏盛脸上露出笑容。
“多把精力放在新技术和项目本身上。”
“那些陈年老系统,还有老员工的老思路,该淘汰的,总要淘汰。”
梁晟睿不知道自己是怎么走出那间办公室的。
走廊很长,灯光惨白。
他回到工位,看见贾长贵正戴着老花镜,对照着屏幕上的文档,在本子上记录着什么。
神情专注,又透着一股彻底的平静。
仿佛上午的通报,下午的会议,以及他刚才那番徒劳的辩解,都从未发生过。
04
几天过去了。
雪早已融化,城市恢复了往常的节奏。
贾长贵的生活也恢复了一种新的节奏。
早上八点五十五分左右到达公司楼下。
不早,也不晚。
刚好够他等一趟电梯,在九点整准时出现在办公区,走到自己工位,打开电脑。
然后开始工作。
他只处理工作流系统里明确指派给他的任务。
只回复邮件正文里清楚写明的、属于他职责范围的询问。
对于同事口头或者即时通讯软件上发来的、“贾工顺便帮看一眼”、“请教个小问题”这类请求,他一律回答:“不好意思,现在有点忙,你提单走流程吧。”
语气礼貌,无可挑剔。
起初大家有些不适应。
那个总是有求必应、耐心解答的贾工,好像变了个人。
但看他每天准时上下班,交代的工作也完成得一丝不苟,似乎又挑不出什么错。
只是感觉,有什么东西不一样了。
那种技术团队里心照不宣的互助氛围,在贾长贵这里,出现了一个清晰的、冰冷的边界。
宋宏盛对此颇为满意。
他在一次小范围的管理层会议上提到:“看,制度的效果出来了。老同志也绷紧了弦,工作效率反而更清晰。”
没人接话。
有些老项目经理心里打鼓,他们隐约觉得,技术部里那股看不见的、但一直存在的“托底”的安全感,好像变薄了。
但具体少了什么,又说不上来。
贾长贵不再查看那些加密文件夹。
他甚至把桌面那个“工作记录”的快捷方式删掉了。
他的电脑桌面,如今干净得就像他的工作边界。
周五晚上,十一点多。
贾长贵已经睡了。
手机在床头柜上震动起来,嗡嗡的声音在寂静的夜里格外清晰。
他睁开眼,摸过手机。
屏幕上闪烁着公司值班室的号码。
他坐起身,靠在床头,按了接听键,但没有先开口。
“喂?贾工!不好意思这么晚打扰您!”
电话那头是值班的年轻工程师,声音急切,背景里还能听到其他人嘈杂的说话声和键盘声。
“出事了!A项目的预发布环境突然崩溃,所有服务无响应,日志里也看不出明显异常,我们搞了两个小时了,完全找不到头绪!”
“明天一早就要正式上线了,现在预发布环境瘫了,测试都没法做!”
“您看能不能远程连一下,帮我们看看?可能又是那种只有您才知道的……”
贾长贵安静地听着。
等对方连珠炮似的说完,他才开口。
声音带着刚醒来的沙哑,但很平稳。
“现在几点?”
电话那头愣了一下。
“啊?快……快十二点了。”
“谁的值班?”
“是我,还有项目组的周阳德经理也在。”
“嗯。”
贾长贵应了一声。
他侧过身,拧亮床头灯。
拿起床头柜上的那个软面抄,翻到第一页。
就着灯光,他看着自己抄录的上下班时间。
“公司规定的工作时间,是上午九点到下午六点。”
“我现在是休息时间。”
“预发布环境的问题,应该由值班人员和对应项目组按照应急预案处理。”
“我没有接到加班申请批准,也没有收到正式的值班安排通知。”
“所以,很抱歉,我无法提供支持。”
电话那头彻底安静了。
只有沉重的呼吸声传来。
过了好几秒,那个值班工程师才不敢置信地、结结巴巴地说:“贾、贾工……这……这情况真的很急,宋总那边也知道了,说务必……”
“如果有需要。”
贾长贵打断他,语气依旧没什么波澜。
“可以让相关领导,在工作时间内,通过正式流程向我提出协助申请。”
“再见。”
他挂断了电话。
把手机调成静音,放回床头柜。
关掉灯。
卧室重新陷入黑暗。
他躺下,拉好被子。
眼睛适应黑暗后,能看见窗外远处楼宇零星的光点。
很安静。
他能听到自己平稳的心跳声。
很久没有在午夜时分,享受过这种不被打扰的宁静了。
以前,他的手机就像是技术部的第二热线。
无论深夜还是假日,响起的时候,多半意味着某个地方又出了只有他能解的难题。
他从不推辞,总是立刻爬起来,打开电脑。
妻子抱怨过,孩子小时候也埋怨过爸爸总在打电话。
他觉得那是应该的。
他是老员工,他懂得多,他不顶上,谁顶上呢?
现在,那根紧绷了十几年的弦,忽然松开了。
并没有想象中的失落或焦虑。
反而是一种陌生的轻松。
他翻了个身,很快就睡着了。
一夜无梦。
05
第二天是周六。
贾长贵醒得比平时晚一些。
拉开窗帘,是个阴天。
他给阳台上的几盆绿植浇了水,然后去早市买了菜。
回来时,手机上有两个未接来电,都是周阳德的。
还有几条措辞越来越焦灼的即时消息。
“贾工,拜托了,远程指导一下也行!”
“宋总发火了,说今天必须解决!”
“您要什么条件我们可以谈!”
贾长贵一条都没回。
他系上围裙,开始在厨房里忙碌。
洗米,切肉,择菜。
锅里的水咕嘟咕嘟响着,热气弥漫开来,带着食物朴素的香味。
妻子走过来,靠在厨房门边,有些担忧地看着他。
“昨晚……公司电话?”
“没事吧?”
“没事。”
贾长贵把菜倒进锅里,刺啦一声响。
“工作上的事,工作时间再说。”
妻子沉默了一会儿。
“老贾,你……是不是心里不痛快?”
贾长贵动作顿了一下,手里的锅铲停在半空。
他看着锅里翻腾的青菜,蒸汽扑在他脸上,湿湿热热的。
“没有。”
他继续翻炒。
“就是觉得,以前那样,太累了。”
“现在这样,挺好。”
“按规矩来,大家都轻松。”
饭菜上了桌。
很简单的两菜一汤。
吃饭时,手机又震动了几下。
贾长贵拿起来看了看,是周阳德拉的一个临时群聊,里面有宋宏盛,还有几个技术骨干。
宋宏盛发话了:“@贾长贵,贾工,A项目上线是公司重点,预发布环境的问题必须立刻解决。请尽快上线支持。”
措辞是命令式的。
贾长贵放下筷子,擦了擦嘴。
在手机上打字回复。
“宋总,今天是周六,是我的休息日。”
“公司并未安排我周末值班,我也未申请或接受加班。”
“根据劳动合同和公司规章制度,我有权在休息时间不处理工作事务。”
“相关问题,请值班同事按流程处理。”
点击发送。
他把手机屏幕扣在桌上。
继续吃饭。
妻子看着他,欲言又止。
贾长贵给她夹了一筷子菜。
“吃饭。”
手机再没有响起。
那个临时群聊,也再没有新的消息。
下午,贾长贵睡了个午觉。
然后带着妻子去附近的公园散步。
天气依然阴沉,但空气清冷,公园里人不多。
他们沿着湖边慢慢走,看着结了薄冰的湖面,和光秃秃的树枝。
妻子挽着他的胳膊,轻声说着些家长里短。
孩子在学校的情况,老家亲戚的琐事,菜市场哪种菜又涨价了。
贾长贵听着,偶尔点点头,或者简单回应两句。
他很久没有这样,在周末的下午,纯粹地散散步,看看天了。
以前,这样的时间,多半是被一个电话打断,然后他匆匆赶回家,或者赶回公司。
走到公园深处,有一段路比较安静。
妻子忽然说:“老贾,要是公司那边……真有什么事,你也别太拗着。”
“我知道你心里有气。”
“可咱毕竟还要这份工作。”
贾长贵停下脚步,看着湖边一棵歪脖子老树。
树干粗糙,枝条遒劲。
“不是拗气。”
他说。
“就是忽然想明白了。”
“有些事,不是你该扛的。”
“你扛了,别人觉得理所当然。”
“哪天你不扛了,反而成了你的错。”
“不如一开始,就划清楚。”
他拍了拍妻子的手背。
“我心里有数。”
“回去吧,起风了。”
周一上班。
贾长贵准时出现在工位。
办公区里气氛有些微妙。
A项目组的人个个眼圈发黑,神色憔悴。
听说他们折腾了整个周末,最后是找了第三方技术支持,花了高昂的紧急服务费,才勉强让预发布环境恢复。
但原定的上线计划,还是推迟了。
周阳德看到贾长贵,眼神复杂,嘴唇动了动,最终什么也没说,低头快步走过。
宋宏盛上午召集技术部开了个短会。
没有点名,但语气严厉地批评了“某些同志缺乏协作精神和全局观念”。
“公司是一个整体,不能只扫自家门前雪!”
“尤其是老同志,更要发挥传帮带的作用,不能看着年轻人掉坑里!”
贾长贵坐在下面,手里拿着笔,在本子上随意划拉着。
等宋宏盛说完,他合上本子,面色如常地起身离开会议室。
好像那些话,跟他毫无关系。
下午,他提交了上周的工作周报。
周报内容极其规范。
完成了哪几项任务,耗时多久,结果如何。
遇到什么问题,如何解决。
下周计划做什么。
条理清晰,数据准确。
至于那些只有他知道的、关于其他系统或项目的潜在风险点?
周报上一个字都没提。
就像它们从来不存在一样。
梁晟睿私下里又来找过他一次。
小伙子瘦了些,眼神里透着疲惫和困惑。
“师傅,周末A项目那事……您是不是早就知道会出问题?”
贾长贵正在检查一段代码,头也没抬。
“不知道。”
“我的职责范围,不包含预发布环境的日常维护。”
“哦。”
梁晟睿站了一会儿,小声说:“他们最后是重置了整个环境,数据差点丢了……要是您在,可能不至于……”
“重置环境是标准应急方案之一。”
贾长贵打断他,终于转过椅子,看着梁晟睿。
“晟睿,记住。”
“公司有公司的流程,岗位有岗位的职责。”
“做好你该做的。”
“其他的,少管,少问。”
他的语气很平和,甚至算得上温和。
但梁晟睿听出了一道坚固的、不可逾越的屏障。
他默默点了点头,转身离开。
走了几步,又忍不住回头。
贾长贵已经重新面对屏幕,手指在键盘上敲击着。
背影像一座沉默的山。
梁晟睿心里那股不安,越来越重了。
他总觉得,师傅的这种“平静”和“规矩”下面,藏着一些他看不透、也承不住的东西。
像深水下的暗流。
06
时间平缓地流淌。
贾长贵严格遵循着他的新节奏。
九点整,坐下。
六点整,关机,起身,离开。
不多一分,不少一秒。
他不再参加任何非工作时间的线上讨论。
不再回复工作时段外的任何业务咨询。
他的工作产出依旧保质保量,甚至因为心无旁骛,效率似乎还高了一些。
那些加密文件夹,再没有被打开过。
里面记录的“小问题”,就像被遗忘在角落的灰尘,静静地堆积着。
梁晟睿负责的一个辅助系统,需要与贾长贵维护的一个核心老系统进行数据交互。
这部分对接代码,当年是贾长贵亲手写的,里面有一些为了应对当时特定硬件环境而做的“小调整”。
这些调整没有写入标准接口文档,因为太琐碎,也因为后来硬件环境升级,本以为用不上了。
但那个老系统还在跑,那些调整也就一直隐性地生效着,像一层薄薄的、无形的润滑油,确保两个系统之间数据传输的顺畅。
最近,梁晟睿的系统要做一次功能升级。
升级涉及到底层数据格式的微小变动。
按照常规技术评估,这种变动是向后兼容的,理论上不会影响与老系统的对接。
梁晟睿很谨慎。
他记得师傅提过,两个系统之间有些“历史默契”。
他想找贾长贵确认一下细节。
但每次开口,贾长贵的回答都是:“接口文档是标准的,按文档来。”
“如果有文档之外的特殊依赖,那属于设计缺陷,应该走需求变更流程,评审、排期。”
话说得没错。
可梁晟睿心里没底。
那个“历史默契”到底是什么?
他翻遍了交接文档和代码注释,也找不到明确说明。
眼看升级窗口期就要到了。
项目经理在催,宋宏盛也在关注这个“技术债清理”的成果。
梁晟睿一咬牙。
他想,师傅也许只是不想再管“份外事”,但接口文档是公开的,标准流程也是对的。
按标准来,总不会出大错吧?
升级在周三下午部署到测试环境。
最初几个小时,一切正常。
数据在流淌,监控图表上的曲线平稳。
梁晟睿稍稍松了口气。
凌晨一点多。
监控警报响了。
先是那个辅助系统自身报错,数据校验失败。
紧接着,与它对接的老核心系统,日志里开始出现大量“数据格式非法”、“字段解析异常”的错误。
老系统的某个关键进程,CPU占用率飙升,然后僵死。
自动重启后,情况依旧。
连锁反应开始了。
由于老系统僵死,另一批依赖它输出结果的后台任务被阻塞。
这些任务又关联着其他几个系统的数据更新。
错误像瘟疫一样,顺着数据流和依赖链,悄无声息地扩散。
清晨六点。
梁晟睿被电话吵醒时,第一个项目(一个重要的内部运营平台)已经彻底无法访问。
值班人员语无伦次,说错误根本理不清头绪。
梁晟睿脸都没洗,冲出门,打车赶到公司。
办公区里已经亮起了不少灯。
几个相关项目的负责人和技术骨干都被叫来了。
人人脸上都带着宿夜的疲惫和惊惶。
屏幕上,错误日志在疯狂滚动。
报警邮件和消息像雪片一样飞来。
“查!给我查清楚根源!”
宋宏盛也赶到了,西装外套敞开着,领带歪在一边,脸色铁青。
“为什么一个辅助系统的升级,能把核心系统搞崩?”
“应急预案呢?备份呢?”
梁晟睿脸色惨白,手指在键盘上颤抖。
他试图回滚升级。
但回滚后,老系统的问题依然存在,甚至更严重了——似乎有些状态已经被污染。
他尝试直接去查老系统的日志,定位那个解析异常的根源。
可老系统的代码庞大而古老,日志信息晦涩,短时间内根本理不清头绪。
他想起了师傅说过的“历史默契”。
那到底是什么?
一个老技术员试探着说:“宋总,这问题……有点像以前出过的一种情况,那次是贾工处理的,他好像知道哪里有个兼容性的开关或者参数……”
所有人的目光,下意识地投向角落那个空着的工位。
上班时间是九点。
现在,刚过七点半。
贾长贵还没来。
宋宏盛深吸一口气,努力让声音听起来镇定。
“打电话给贾长贵。”
“让他立刻过来!”
梁晟睿拿起手机,找到师傅的号码,拨了出去。
忙音。
再拨。
还是忙音。
“他手机关机了?”
有人小声嘀咕。
“可能……还没起床?”
热门跟贴