陈繁的笑容挂不住了:“这是公司的决定——”
“那就把决定推翻。”
“你——”
“我说,推翻它。”陆司辰的声音平静得可怕,“不然我就去找技术总监,把过去半年你所有甩锅的记录全部调出来。你猜,他看完之后会怎么想?”
办公室里安静得能听见空调运转的声音。
陈繁的脸一阵红一阵白,最后挤出一句话:“陆司辰,你跟她什么关系?”
“不关你的事。”
“你这样护著她,同事们会怎么说?”
“我不在乎。”陆司辰转身,“三天之内,把邮件撤回。不然你知道后果。”
他走出办公室,看到姜荨站在门口,脚步顿了一下。
“你都听到了?”
“嗯。”
“我——”
“陆司辰。”姜荨打断他,“谢谢你。”
他看著她,眼神里翻涌著某种情绪,最后只是点了点头:“走吧。”
他们并肩走回工位,一路上谁都没说话。但姜荨知道,刚才那一幕,陈繁不会就这么算了。
她回头看了一眼陈繁的办公室。
门关著,百叶窗也拉上了。但她能感觉到,有人在里面,正透过缝隙看著他们。
那个眼神,阴冷得像毒蛇。
第二天一早,调令撤回了。
姜荨到公司的时候,邮箱里躺著陈繁发的新邮件,措辞官方得像是什么都没发生过:“经综合评估,原轮岗计划暂缓执行,姜荨继续负责核心系统维护工作。”
她盯著萤幕看了十秒,然后关掉邮件,打开监控面板。
但事情没有就此结束。
茶水间里,有人在小声议论。
“听说了吗?陆司辰直接去找老大了,拍桌子要求把人调回来。”
“真的假的?他为什么这么护著姜荨?”
“谁知道呢。不过你说,一个架构师,一个运维,能有什么关系?”
“说不定就是单纯的技术欣赏?毕竟姜荨能力确实强。”
“能力强的人多了去了,怎么不见陆司辰帮别人说话?”
笑声压得很低,但每一个字都清晰地传进了姜荨的耳朵。
她端著马克杯站在茶水间门口,没有进去。
“靠关系”三个字像一根刺,扎在她最在意的地方。她这辈子最讨厌的就是这三个字——从大学到现在,她所有的成绩都是自己拼出来的,没靠过任何人。
但现在,所有人都觉得她是靠陆司辰。
她转身走回工位,把马克杯重重地放在桌上。赵敏敏被吓了一跳:“怎么了?”
“没什么。”
“你脸色好差——”
“我说没什么。”
赵敏敏闭嘴了。她认识姜荨三年,知道她这种语气的时候,最好什么都别问。
下午两点,姜荨在走廊上遇到了陆司辰。
他正从技术总监的办公室出来,手里拿著一个文件夹,表情看起来很平静。看到姜荨,他走过来,语气自然得像在讨论天气:“调令撤回了,你继续负责核心系统。”
“我知道。”
“陈繁那边你不用担心,我跟老大谈过了,以后他不能再随意调你的人事——”
“陆司辰。”姜荨打断他,“你为什么不先跟我商量?”
陆司辰愣了一下。
“商量什么?”
“去找技术总监的事。”姜荨看著他,“你直接跳过我,去找领导施压,让所有人觉得我是靠你才留下来的。”
“没有人会这么想——”
“茶水间里都在说。”姜荨的声音很平静,但手指攥紧了马克杯,“说我‘靠关系’,说你‘护著我’。你知道我听到这些是什么感受吗?”
陆司辰的眉头皱了起来:“那些闲话我会处理——”
“你怎么处理?再去拍一次桌子?”姜荨终于忍不住了,“陆司辰,你到底明不明白,我不需要你帮我处理这些。我自己能解决。”
“我只是想让你轻松一点。”他的声音低下来,“陈繁那种人,你不擅长应付。”
“我不擅长?”姜荨差点气笑,“我来公司三年,陈繁甩给我的锅我一个一个全部接住了,哪一次让他得逞过?你觉得我应付不了他?”
陆司辰沉默了。
“还是说,”姜荨的声音更冷了,“你觉得我需要被保护?”
“我不是那个意思——”
“那你告诉我,你是什么意思。”
走廊上有人经过,好奇地看了他们一眼,又迅速走开。陆司辰站在原地,嘴唇抿成一条线,似乎在努力组织语言。
“我只是……”他停了一下,“不想看你那么累。”
姜荨看著他,心里涌上一股复杂的情绪。她知道他是好意,知道他昨晚为了这件事可能一夜没睡,知道他写的那些代码优化方案、凌晨送的咖啡、手写的便利贴,全都是他笨拙的表达方式。
但好意不等于正确。
“陆司辰,”她说,“我知道你想对我好的。但你的‘好’,能不能先问问我需不需要?”
她转身走了。
这一次,陆司辰没有追上来。
---
当天下午,整个技术中心都在传一件事:陆司辰和姜荨在走廊上吵架了。
版本有很多个。有人说他们是因为技术方案不合吵起来的,有人说是因为陈繁的事,还有人说陆司辰被姜荨骂得一句话都说不出来。
最后那个版本最受欢迎。
赵敏敏第一时间给姜荨发消息:“你真的骂他了?”
姜荨回了一个字:“没。”
“那他怎么说?”
“他说只是想让我轻松一点。”
“哇……”赵敏敏发了一长串惊叹号,“这不就是传说中的‘我为你好’吗?”
姜荨没回。
她知道“我为你好”这四个字有多沉重。它看起来是关心,实际上是控制。是用自己的标准去定义别人的需求,用自己的方式去安排别人的人生。
她不想成为被安排的那个人。
哪怕安排她的人是陆司辰。
晚上七点,姜荨还在工位上写程式码。她故意没有走,因为不想在电梯里遇到他,不想继续下午的话题,不想看到他脸上那种“我做错了但不知道错在哪”的表情。
但陆司辰还是来了。
他站在她的工位前,手里拿著一个纸袋。沉默了很久,久到姜荨以为他不会开口了。
“对不起。”他说。
姜荨抬起头。
“我不应该不跟你商量就去找老大。”他的声音很认真,像是在念一段写了无数遍的代码,“我以为这是帮你,但其实……”
他停了一下。
“其实是我不相信你能处理好。”
姜荨的手指在键盘上停了。
“这不是你的问题,是我的问题。”陆司辰继续说,“我习惯了把所有事情都当成技术问题来解决——找到最优解,然后执行。但我忘了,你不是一个需要被修复的Bug。”
姜荨看著他,没说话。
“我会改。”他说,“可能不会很快,但我会试著……先问你。”
他说完,把纸袋放在桌上,转身走了。
姜荨打开纸袋。里面是一杯拿铁,还是温的。旁边放著一张便利贴,上面写著:“这杯是问过赵敏敏才知道的。下次我会直接问你。”
她拿著那张便利贴,看了很久。
---
第二天上午的技术会,陆司辰做了一件所有人都没想到的事。
会议进行到一半,技术总监提到这次的调令风波,说“人事安排要更加慎重”。话音刚落,陆司辰举手了。
“我有话要说。”
全场安静。
“关于姜荨的调令,是我找老大谈的。”他的声音不大,但每个字都很清楚,“我承认,这件事我处理得不够好,没有尊重她本人的意愿。”
姜荨坐在会议桌的另一端,手指攥紧了笔。
“但我希望所有人都清楚一件事。”陆司辰的视线扫过在场的每一个人,最后落在陈繁脸上,“姜荨能回到核心项目组,不是因为我说什么,而是因为她的能力。过去三年,核心系统的所有重大故障,百分之七十是她主导修复的。她的技术方案被团队采纳了四十一次,是整个运维组最高的。这些资料,系统里都有记录。”
他转头看向技术总监:“老大,我提个建议。以后所有人事调动,公开评审。谁该在什么位置,用资料说话。”
技术总监愣了一下,然后笑了:“行啊,你提的方案,你来负责。”
“可以。”
陆司辰坐下来,视线越过半张会议桌,看了姜荨一眼。
那一眼很轻,轻得像是一片落叶。但姜荨读懂了。
他在说:对不起,我会改。
会议结束后,赵敏敏拉著姜荨的胳膊,激动得差点跳起来:“你看到了吗!他当著所有人的面承认自己错了!还帮你把业绩全部列出来了!这也太——”
“太什么?”
“太帅了!”赵敏敏压低声音,“说实话,你是不是已经原谅他了?”
姜荨没有回答。她回到工位,打开电脑,看到陆司辰发来的一条消息。
“晚上的拿铁还要吗?”
她想了想,回了一个字:“要。”
过了几秒,又补了一句:“但下次不许再当众念我的业绩资料。很尴尬。”
“好。那我私下念?”
“……陆司辰。”
“开玩笑的。”
姜荨看著萤幕,嘴角弯了一下。但她心里那个疙瘩还在,像一个没有修复完全的Bug,平时不显眼,却总在某个不经意的瞬间跳出来提醒她——
他真的懂她想要什么吗?
还是说,他只是用另一种方式,继续“安排”她的人生?
---
同一时间,陈繁的办公室里。
百叶窗关得严严实实,只有电脑萤幕的光照在他脸上。他靠在椅背上,看著监控画面上姜荨和陆司辰并肩走在一起的画面,嘴角慢慢勾起一个弧度。
他打开电脑里一个加密文件夹。
里面整整齐齐地排列著几十个文件,全是姜荨的部署脚本操作日志。从她入职第一天到现在,每一次变更、每一次配置修改、每一次线上操作,全部都有记录。
时间戳、IP位址、操作指令,一应俱全。
陈繁点开最近的一份日志,慢条斯理地浏览著。萤幕的蓝光映在他的眼镜片上,反射出一片冰冷的白色。
“姜荨,”他自言自语地说,“你以为有陆司辰撑腰就没事了?”
他关掉文件夹,打开另一个视窗。那是一个版本更新的计划表,时间定在下周三——一个涉及核心交易系统的重大版本迭代。
他的手指在滑鼠上轻轻敲了两下,然后开始修改配置文件。
一边改,一边笑。
“这一次,”他喃喃道,“看你怎么翻身。”
版本更新的日子定在周三。
姜荨周二晚上收到陈繁发来的配置文档时,并没有多想。这是一个常规的版本迭代,涉及到三个核心模组的同步更新,她之前已经做过两次预演,所有流程都烂熟于心。
“明天下午两点上线,你负责部署。”陈繁在邮件里写道,“配置文档我已经审过了,直接照著跑就行。”
姜荨打开文档,快速浏览了一遍。跟她之前预演的内容基本一致,只是有几个参数的数值做了微调。她对照著之前的版本检查了两遍,没有发现任何异常。
她把文档存进工作目录,回了一封邮件:“收到。”
赵敏敏从旁边探过头来:“陈繁发的?”
“嗯。明天的配置文档。”
“他会这么好心帮你审文档?”赵敏敏皱眉,“要不要我再帮你对一遍?”
“不用,我已经对过了。”姜荨关掉邮件,“没问题。”
她没有注意到,在那份文档的第七页,有一个配置参数的值被人悄悄改动了。从原本的“max_connections=500”变成了“max_connections=50”。
这个改动很小,小到在几十页的文档里几乎不可能被发现。但它的影响是毁灭性的——上线之后,系统能承受的最大并发连接数会被直接砍掉百分之九十。
陈繁坐在自己的办公室里,看著邮件系统里姜荨的回复,嘴角慢慢翘起来。他关掉邮件,打开另一个文件夹,里面是他提前准备好的“证据”——一份伪造的操作日志,时间戳、IP位址、操作指令,全部对应姜荨的帐号。
他花了整整一个周末来准备这些。每一个细节都反复推敲过,确保看起来无懈可击。
“姜荨,”他自言自语地说,“这次看谁还能救你。”
---
周三下午两点,更新准时开始。
姜荨坐在操作台前,按照文档的步骤一步步执行部署脚本。她的手指在键盘上飞快跳动,萤幕上滚过一行行执行日志。所有步骤都顺利完成,系统重启后一切正常。
“上线完成。”她在工作群里发了一条消息,“所有服务状态正常。”
陈繁秒回:“收到。监控我跟进。”
姜荨关掉操作介面,靠在椅背上喝了口水。窗外阳光明媚,机房里的伺服器风扇发出稳定的嗡鸣声。一切看起来都很正常。
四十分钟后,警报响了。
不是普通的警告,是最高级别的紧急警报——红色的灯光在监控大屏上疯狂闪烁,刺耳的声音响彻整个机房。
姜荨从椅子上弹起来,冲到监控大屏前。
“怎么回事?”她的声音还算平静,但心跳已经开始加速。
“核心交易系统……”值班同事的声音在发抖,“QPS直接归零了。”
“什么时候开始的?”
“三分钟前。没有任何征兆,突然就崩了。”
姜荨迅速坐回操作台,开始排查。她调出系统日志,一行行红色的报错资讯跳出来——连接池耗尽、执行绪阻塞、资料库连接超时。
“并发连接数……”她喃喃自语,手指在键盘上快速敲击,“不对,这个数值怎么会这么低?”
她打开配置档,找到那个参数。
max_connections=50。
姜荨的瞳孔骤然收缩。
“这不可能。”她说,“我记得这里应该是五百——”
“姜荨!”
身后传来陈繁的声音,又急又怒。她转过头,看到陈繁站在机房门口,身后跟著技术总监和两个部门主管。所有人的脸色都很难看。
“你做了什么?”陈繁走过来,声音大得整个机房都在回荡,“系统为什么会崩?”
“我正在排查——”
“排查?”陈繁打断她,“你知不知道这是核心交易系统?每秒钟几百万的流水,你让客户干等著?”
技术总监的脸色铁青:“到底什么情况?”
“配置参数被人改过。”姜荨的声音很冷静,但手指在键盘上微微发抖,“我拿到的文档里,max_connections的值是五十,正常值应该是五百。这个参数——”
“你是在推卸责任?”陈繁的声音提高了八度,“文档是我审过的,我明明写的是五百!你是不是自己改动了没检查?”
姜荨猛地抬头:“我没有改过任何参数。”
“那为什么线上配置跟文档不一样?”陈繁的手机萤幕亮著,上面是一份操作日志的截图,“你看看这是什么——下午一点五十八分,你的帐号登入配置中心,修改了这个参数。时间戳、IP位址都在这儿。”
姜荨接过手机,看到那张截图。她的帐号、她的操作时间、她的IP位址,所有证据都指向同一个结论——是她修改了那个配置。
“这不是我做的。”她说,声音依然平静,但手指已经凉了。
“日志不会说谎。”陈繁转头看向技术总监,“老大,我建议立刻启动事故调查。这次的损失太大了,必须有人负责。”
技术总监沉默了几秒,点了点头:“开会。所有人到会议室。”
---
会议室里坐满了人。
姜荨坐在长桌的一端,面前摆著她的笔记型电脑。对面是陈繁,旁边是技术总监和几个部门主管。所有人的目光都集中在她身上,像一把把无形的刀。
“把你的操作记录调出来。”技术总监说。
姜荨打开操作日志系统,输入自己的帐号。萤幕上跳出一条条记录——登入、登出、指令执行、配置变更。每一条都清清楚楚。
下午一点五十八分,她的帐号登入了配置中心。
下午一点五十八分二十秒,执行了配置修改指令。
下午一点五十八分三十五秒,登出。
时间戳、IP位址、指令内容,跟陈繁手机上的截图一模一样。
“这个时间我在准备上线。”姜荨说,“我没有登入过配置中心。”
“日志在这里。”陈繁的声音不紧不慢,“你总不能说系统记录错了吧?”
姜荨没有理他,转头看向技术总监:“我需要查看完整的操作记录。配置中心的审计日志、机房的监控录影,还有——”
“监控系统正好在那个时间段出了问题。”陈繁打断她,“硬碟故障,没录上。”
会议室里安静了。
姜荨的手指攥紧了笔记型电脑的边缘。她终于明白了——这不是一次意外,是一场精心策划的陷害。从那份错误的配置文档,到伪造的操作日志,再到“恰好”故障的监控系统,每一步都算计好了。
“所以,”陈繁的声音里带著一丝得意,“你还有什么要说的?”
姜荨抬起头,看著他。她的脸色苍白,但眼神倔强得像一块石头。
“我没有做过。”她一个字一个字地说,“这件事我会证明。”
“怎么证明?”陈繁笑了,“所有证据都指向你,你还——”
“够了。”技术总监拍了一下桌子,“现在不是吵架的时候。先想办法恢复系统,责任的事回头再说。”
姜荨站起来:“系统我来修。但修好之后,我要一个完整的调查。”
她转身要走,会议室的门被人推开了。
陆司辰站在门口。
他的呼吸有点急促,像是跑过来的。衬衫领口敞开著,额角有细密的汗珠。他的视线越过所有人,直接落在姜荨脸上。
他看到了她的脸色,看到了她攥紧的手指,看到了她眼神里那团拼命压制的火。
他的眉头皱了起来。
“怎么回事?”他走进来,声音很低。
“版本更新出了问题。”技术总监简单地说,“配置参数被改错了,现在所有证据都指向姜荨。”
陆司辰看向姜荨。
姜荨没有说话。她只是站在那里,手指按在笔记型电脑的键盘上,整个人绷得像一根即将断裂的弦。
“你做的?”陆司辰问。
“没有。”
他点了点头,转头看向技术总监:“这件事,我会查清楚。”
会议室里的空气凝固了。
陈繁靠在椅背上,嘴角勾起一个意味深长的笑。
“陆架构师,”他的声音慢悠悠的,“你是架构组的,运维组的事……你确定要参与调查?”
陆司辰看著他,眼神冷得像冬天的湖面。
“确定。”
两个字,掷地有声。
陈繁的笑容没有变,但他的眼睛里闪过一丝阴冷的光。
“那太好了。”他说,“我也想知道,到底是谁的责任。”
姜荨站在陆司辰身后,看著陈繁那张笑脸,心里最后一丝侥幸彻底消失了。
她终于确定了一件事——这场局,从一开始就是为她量身订做的。
而她现在,连证人都没有。
问责会在周五上午召开。
会议室的规格比上次高了好几个级别——技术总监、营运长、甚至公司的副总裁都来了。长桌两侧坐满了人,空气里弥漫著一种审判式的肃穆。
姜荨坐在被问责的位置上,面前摆著她的笔记型电脑。她穿著一件深蓝色的衬衫,头发扎得整整齐齐,整个人看起来冷静得像即将参加一场技术评审,而不是接受一场可能毁掉她职业生涯的审判。
陆司辰坐在她对面,隔著一整张桌子。
他的脸色很差,眼下有淡淡的青黑,显然这几天没有睡好。从事故发生到现在,他每天都在追查线索,但陈繁做得太干净了——操作日志完美无瑕,监控录影“恰好在关键时刻”故障,连配置中心的审计记录都被人精心修改过。
所有的路都被堵死了。
“开始吧。”副总裁敲了敲桌子。
陈繁第一个站起来。他打开投影仪,萤幕上出现了一份详尽的“事故调查报告”。报告里附满了截图、日志、时间戳,所有的证据都指向同一个结论——姜荨违规操作,擅自修改核心配置,导致系统崩溃。
“当天的操作日志显示,下午一点五十八分,姜荨的帐号登入了配置中心。”陈繁的声音不紧不慢,像一个经验丰富的公诉人,“她修改了max_connections参数,从五百降到五十。这个改动在上线后四十分钟生效,直接导致系统连接池耗尽,核心交易全面崩溃。”
他停顿了一下,看向副总裁。
“这次事故造成的直接经济损失是两百三十万,间接损失还在统计中。根据公司制度,这种级别的重大责任事故,当事人应该承担全部责任。”
会议室里安静得能听见空调运转的声音。
“姜荨,”副总裁看向她,“你有什么要说的?”
姜荨站起来。她的声音很平静,平静得像在读一份技术文档。
“我没有修改过那个参数。当天下午一点五十八分,我正在准备上线,没有登入过配置中心。操作日志被人伪造了,监控录影的故障时间也太巧合——这些都是有人故意安排的。”
“证据呢?”陈繁立刻追问。
“我——”
“你有任何证据证明日志是伪造的吗?”陈繁的声音变得尖锐,“你有任何证据证明监控录影是被人为破坏的吗?你什么都没有,你只有‘我没做过’这四个字。”
姜荨的手指攥紧了笔记型电脑的边缘。
“姜荨,”技术总监叹了口气,“我知道你能力强,但这次的证据确实太确凿了。如果拿不出反驳的证据——”
“我可以拿出来。”姜荨说,“给我三天时间,我能查到配置中心的底层日志。那些日志是不可篡改的,能证明我的帐号在当天下午一点五十八分没有执行过任何配置修改。”
“三天?”副总裁皱眉,“客户那边怎么交代?”
“我可以先承担责任,但请允许我——”
“不行。”副总裁摇头,“事故已经发生了,必须有人负责。你可以事后申诉,但现在公司需要一个明确的结论。”
姜荨沉默了。
她转头看向陆司辰。
那一眼里有很多东西——期待、信任、还有一丝她从不轻易示人的脆弱。她没有说话,但她的眼睛在问他一个问题。
你会帮我吗?
陆司辰的手指在桌下攥紧了。