董宏达的手指第三次划过手机屏幕。
陈澄泓的电话依旧无法接通。
办公室窗外的城市灯火通明,可他却觉得一阵阵发冷。八个亿。每小时都在叠加的损失数字,像烧红的烙铁烫着他的眼皮。
项目组那边已经乱成一团,薛冠宇苍白着脸,嘴里反复嘟囔着“不应该,明明测试通过的”。
那些技术术语董宏达听不懂,他只知道,能解决问题的人,似乎只有一个。
“卢经理,立刻,马上,把陈澄泓给我叫回来!现在!不管他在哪儿!”
人力资源部的卢曼妮站在办公桌前,手指在平板电脑上快速滑动。
她的动作忽然停住了。
目光在屏幕上某处凝固了几秒,喉头轻微地滚动了一下。
“董总……”她的声音比平时低了一度,带着某种不确定的迟疑,“陈澄泓的离职流程……系统显示,昨晚已经自动核批完成了。”
董宏达一时间没反应过来,眉头紧锁:“什么流程?谁批的?我不是说了关键时期任何人不得离职吗?”
卢曼妮抬起头,脸色有些发白,避开了他的视线。
“是……按规定提前两个月提交的辞职申请。今天,是流程生效的最后一天,也是他工作的……最后一天。”
董宏达愣住了,像被什么东西狠狠砸中胸口。
两个月?提前两个月?
一股冰冷的麻意顺着脊椎窜上来。
他猛地推开椅子,撞开办公室的门,几乎是冲着跑向那个熟悉的、靠窗的工位。
走廊的光线晃眼。
他心里只有一个念头:找到他,必须立刻找到他!
工位越来越近。
可那里,似乎过于整洁了。
![]()
01
键盘敲击声在深夜的办公室里显得格外清晰,单调,带着一种固执的节奏。
陈澄泓盯着屏幕上滚动的代码,眼白里爬着几缕血丝。
窗外,城市的灯火流淌成一片倒悬的星河,远处偶尔有晚班飞机的航行灯缓慢划过。
而他这片方寸之间,只有屏幕冷光映着他没什么表情的脸。
测试报告下午就发到了项目组群里,一片“通过”的绿色标识。
只有他在一堆祝贺的消息里,默默下载了错误日志。
一个边缘场景,触发概率低到万分之一以下。
但一旦触发,会导致核心数据校验链路静默失效,像一道细微裂痕出现在大坝深处。
薛冠宇在群里回复:“小概率事件,不影响主体流程上线,标注为已知问题,后续迭代优化。”
后面跟着几个人的“收到”和点赞的表情。
陈澄泓的手指在“回复”框上停了一会儿,又移开了。
他关掉通讯软件,重新打开了开发环境。
现在,办公室里只剩他一个人。
空调早已停止送风,空气凝滞,带着机器运转后残留的淡淡金属气味。
他找到问题根源,是一个外部合作方提供的加密模块,在极端并发下内部状态锁会异常释放。
对方的技术文档对此只字未提。
修复它不容易,需要绕过那个黑盒模块,在应用层重新构建一套轻量的校验机制。
他写得很慢,时不时停下来,看着某行代码思索。
鼻梁上的眼镜有些下滑,他腾出手推了上去。
这不是他份内必须做的事。
项目主负责人是薛冠宇,技术方案评审会他陈澄泓甚至没有发言席位。
上周的碰头会上,他刚对那个外部模块的可靠性提出一点疑问,薛冠宇就笑着打断了他。
“澄泓,你呀,就是太谨慎。合作方是国内这个领域的顶尖团队,董总亲自敲定的,他们的东西能有问题?”
旁边也有人附和:“就是,咱们时间紧任务重,得相信合作伙伴嘛。”
陈澄泓便不再说话,低头在本子上记了点什么。
此刻,他独自面对着这个“没问题”的模块引发的问题。
手指在键盘上起伏,像在进行一场沉默的对话。
偶尔,他会因为某个逻辑卡住,身体微微后仰,盯着天花板角落的烟雾探测器出神几秒,然后俯身继续。
时间一点点流过去。
窗外某栋大厦的景观灯熄灭了,大概过了零点。
他最后编译了一次,跑通了测试用例。
那个万分之一概率的错误没有再出现。
他没有立刻提交代码。
新建了一个加密文档,将解决方案和详细分析放了进去,设置了一个复杂的密码,然后存档在项目共享服务器的某个深层目录下。
文档标题是简单的日期和“备用方案笔记”。
做完这一切,他揉了揉发涩发胀的眼睛,关节有些僵硬。
关机,起身。
办公区一片漆黑,只有安全出口的绿灯幽幽亮着。
他的脚步声在空旷中回响,走到门口,刷卡,嘀的一声。
电子锁合上的轻响之后,是无边的寂静。
走廊的声控灯应声亮起,照亮他平静而疲惫的侧脸,随即又在他身后依次熄灭,将他连同刚刚完成的修复,一起吞没在黑暗里。
02
会议室里坐满了人,空气因为人多而显得有些闷热,弥漫着咖啡、茶水以及某种隐约的兴奋气息。
投影幕布上挂着业绩增长曲线,一条陡峭向上的箭头,尽头是令人咋舌的数字。
董宏达站在最前面,西装笔挺,头发梳得一丝不苟。
他红光满面,手里拿着激光笔,红光点在图表上跳跃。
“过去一年,不容易!”他声音洪亮,压过了底下细微的交谈声,“市场环境复杂,竞争激烈,但我们杀出来了!靠的是什么?是在座每一位的拼搏和汗水!”
掌声适时地响起,夹杂着几声轻笑。
薛冠宇坐在第一排靠中间的位置,鼓得格外用力,脸上堆着笑,侧过头对旁边的人低声说了句什么,引来对方会意的点头。
陈澄泓坐在靠后靠窗的角落,膝上摊着笔记本。
他手里握着一支黑色的签字笔,笔尖悬在纸面上方,偶尔落下,记录几个关键词:Q4数据、新市场拓展、研发投入……
董宏达还在讲,从宏观环境讲到公司战略,再讲到团队精神。
语调抑扬顿挫,充满感染力。
“公司不会亏待任何一个奋斗者!”他挥了一下手臂,姿态有力,“所以,经过董事会研究决定——”
他故意停顿了一下,目光扫过全场。
会议室瞬间安静下来,所有的目光都聚焦在他身上。
薛冠宇不自觉地挺直了背。
“从下个月开始,全体员工,薪资普调百分之五十!”
“哗——”
短暂的寂静后,更大的掌声和欢呼声炸开。
有人吹了声口哨,后排几个年轻人兴奋地互相捶了一下肩膀。
“董总威武!”
“太棒了!”
喜悦的情绪像潮水一样在会议室里蔓延。
董宏达满意地看着这一切,双手虚按了几下,等声音稍稍平息。
“这是大家应得的!接下来,更大的项目在等着我们,八个亿的‘磐石’项目,只许成功,不许失败!有没有信心?”
“有!”回应声参差不齐但响亮。
薛冠宇第一个站起来,声音最大:“跟着董总,肯定成功!”
陈澄泓也随着众人鼓着掌,嘴角礼节性地弯了一下,但眼睛很快又落回自己的笔记本。
他在刚才那行“薪资普调”下面,轻轻画了一条横线。
然后翻到下一页,开始画一个简单的系统架构草图,笔尖摩擦纸张,发出细微的沙沙声。
窗外的阳光透过百叶窗,在他本子上切出明暗相间的条纹。
欢呼声还在继续,董宏达已经开始布置下一个季度的冲刺目标。
陈澄泓偶尔抬头看一眼投影,大部分时间都低着头。
他画着画着,笔尖在某处停住了。
那是草图里代表外部加密模块的方框。
他用笔在那个方框上点了点,留下一个浓重的小黑点,然后慢慢涂成了一个实心的黑块。
周围的笑脸、掌声、充满希望的话语,似乎都被隔在一层透明的薄膜之外。
他合上笔记本,发出轻微的啪嗒声。
会议终于散了,人们簇拥着董宏达,说着感谢和表决心的话,鱼贯而出。
薛冠宇挤在董宏达身边,声音清晰地传过来:“董总,您放心,‘磐石’项目我们组保证按时保质上线,绝不给您掉链子!”
陈澄泓等人都走得差不多了,才站起身,把笔记本和笔收好。
椅子推回桌下的声音,在渐渐空荡的会议室里显得有点突兀。
他走到门口,最后回头看了一眼。
幕布上的业绩曲线还在,那个向上的箭头,锐利得有些刺眼。
![]()
03
调薪确认通知是午休后发到各部门邮箱的。
邮件正文是统一的措辞,附件里有一个加密的Excel名单。
密码早就通过内部通讯工具发给了每个人。
陈澄泓吃完午饭回到工位,桌上还放着半杯已经凉掉的茶水。
表格很大,按照部门排序,密密麻麻的名字和调整后的薪资数字。
他拖动滚动条,找到技术中心,再找到自己所在的项目组。
目光顺着名单往下移。
薛冠宇,调整后薪资那一栏的数字很醒目。
旁边几个熟悉的同事名字,后面的数字也无一例外地增加了百分之五十。
他继续往下。
没有。
鼠标又往上滚动了一点,生怕自己看漏。
还是没有。
他关掉表格,重新打开一次,这次看得更慢,几乎是一个字一个字地核对。
技术中心,项目组,名单截止到……他前面那个同事为止。
再下面,就是另一个小组的名字了。
自己的名字,确实不在上面。
陈澄泓握着鼠标的手停了很久,然后松开。
后背慢慢靠进椅背,皮质座椅发出轻微的受压声。
他看着电脑屏幕,屏幕光映在他的眼镜片上,反着白花花的一片,看不清眼底情绪。
办公室很安静,大部分人还没从午休状态完全回来,只有角落里传来隐约的键盘声。
过了一会儿,他伸手拿起那杯凉茶,喝了一口。
茶水又苦又涩。
他咽了下去,把杯子放回原处,杯底和桌面接触,轻轻一声“嗒”。
然后,他像是没事人一样,点开了另一个工作窗口,开始处理上午没写完的代码注释。
键盘声重新响起,和之前没什么不同,平稳,均匀。
大约过了十几分钟,薛冠宇端着一杯刚冲好的咖啡,从过道那头走过来。
他今天穿了件新衬衫,显得很精神。
路过陈澄泓工位时,他脚步慢了下来,脸上带着惯常的笑。
“澄泓,看名单了没?这次董总真是大手笔啊。”他抿了口咖啡,热气氤氲,“对了,晚上咱们组几个核心成员聚餐,庆祝一下,你也一起来吧?”
陈澄泓转过头,看了他一眼。
薛冠宇的笑容很自然,眼神也落在陈澄泓脸上,只是那眼神深处,似乎有点别的什么,像是观察,又像是一种很淡的、心照不宣的东西。
“晚上有点事,就不去了。”陈澄泓说,声音不高,也没什么起伏,“你们聚吧。”
“有事啊?那太可惜了。”薛冠宇语气遗憾,但也没多劝,又拍了拍陈澄泓的肩膀,“那你忙,这次调薪是公司对大家过去努力的肯定,以后好好干,机会还多。”
他拍肩的动作很实在,手心温热,透过薄薄的衬衫面料传过来。
拍完,他没再多停留,端着咖啡往自己独立的办公室走去。
陈澄泓等他走远了,才稍微动了一下被拍过的肩膀。
然后,他移动鼠标,打开了项目服务器。
找到那个深夜创建的加密文档“备用方案笔记”。
光标在删除选项上悬停。
屏幕的光照着他没什么表情的脸,只有睫毛在眼下投出一小片阴影。
他没有立刻点下去,就那么停了几秒钟。
最后,他关掉了服务器窗口,没有删除文档,而是清除了自己电脑上保存的文档访问路径和密码记录。
就像从未打开过那个深夜的加密文件一样。
04
人力资源部的办公室在走廊另一头,采光很好,绿植也比其他部门多些。
陈澄泓敲门进去的时候,卢曼妮正在接电话。
她用手捂住话筒,朝他礼节性地微笑点头,示意他稍等。
他就在门边的椅子上坐下,看着窗外明晃晃的阳光。
电话讲得有点久,卢曼妮的声音温和但职业,偶尔笑一声,也是恰到好处的分寸。
“……是的王总,您放心,推荐的人选我们一定会优先考虑……好的,再见。”
她放下电话,脸上的笑容收敛了些,转向陈澄泓。
“澄泓,有事?”她态度很客气,身体微微前倾,做出倾听的姿态。
陈澄泓坐直了些。
“卢经理,我想了解一下这次调薪的情况。”他话说得直接,但语气平稳,“我看到名单里没有我,想确认一下是不是有什么遗漏,或者我这边需要补充什么材料。”
卢曼妮脸上掠过一丝极短暂的、几乎捕捉不到的情绪。
她很快恢复了那种专业的平静,双手交叠放在桌面上。
“哦,这个事情啊。”她声音放缓了一些,“名单是经过综合评估后确定的,各部门负责人提报,公司管理层统一审议。你的情况,我了解过,董总那边也亲自过目了。”
她停顿了一下,似乎在斟酌词句。
“评估是基于过去一段时间的整体表现、项目贡献、还有团队协作等多个维度。可能……在一些软性指标上,你的评分没有那么突出。比如跨部门沟通的主动性,或者在项目决策中的visibility,这些也都是考量的因素。”
陈澄泓安静地听着,没有插话。
卢曼妮看着他,继续说:“当然,你的技术能力大家有目共睹。这次没赶上普调,也不要有什么想法。公司的发展是长期的,你的专业能力是宝贵财富,未来还有机会。”
她的话说得滴水不漏,既解释了原因,又给予了勉励。
但原因本身,像一团柔软的棉花,碰上去无处着力。
“我明白了。”陈澄泓点了点头,脸上看不出失望,也看不出不满,“谢谢卢经理。”
“别客气。”卢曼妮笑容舒展了一些,“好好干,下次肯定没问题。”
陈澄泓站起身,椅子腿和地面摩擦,发出轻微的声响。
“那我先回去了。”
“好。”
他走到门口,手搭在门把上。
卢曼妮的声音从后面传来,依旧温和:“澄泓,工作上、生活上有什么想法,随时可以来沟通。”
陈澄泓回头,又对她点了点头,然后拉开门走了出去。
走廊里空调很足,和外面阳光下的热度形成反差。
他没有立刻回工位,而是去了茶水间,接了一杯温水。
慢慢喝着,看着楼下街道上如织的车流。
水喝完了,他洗了杯子,擦干,放回柜子。
回到自己座位,打开电脑。
屏幕亮起,桌面很干净,除了几个工作文件夹图标,没什么多余的东西。
他移动鼠标,点开了和许静萱的聊天窗口。
上一次对话还是几个月前,她离职时发的告别消息,他回了一句“保重”。
他敲了几个字:“静萱,最近怎么样?”
手指在发送键上停了片刻,又逐字删掉了。
关掉窗口,他深吸了一口气,又缓缓吐出。
然后,他新建了一个文档,开始写一份技术报告。
标题是:“关于‘磐石’项目外部加密模块的潜在风险分析与应对建议”。
![]()
05
报告写了两天。
陈澄泓把能收集到的日志、测试用例、甚至通过一些公开渠道查到的该合作方模块在其他公司应用中出现的零星问题,都整理了进去。
推导过程严谨,风险影响评估量化到了可能造成的直接经济损失和项目延迟天数。
建议部分写了三条:一是立即启动联合压力测试;二是准备备用技术方案;三是考虑引入第二家供应商作为备份。
他没有提自己已经写好的那个备用方案。
打印出来的报告有十几页厚,拿在手里沉甸甸的。
他走到董宏达办公室外间,秘书说董总正在见客,让他稍等。
等了约莫二十分钟,会客室门开了,薛冠宇陪着两个西装革履的人出来,满脸笑容,握手道别。
薛冠宇看见陈澄泓,笑容不变:“澄泓,找董总?”
“嗯,有点技术问题想汇报。”
“技术问题?”薛冠宇眉毛微挑,语气依旧和善,“哪方面的?要不先跟我聊聊?董总忙,一些细节未必需要他亲自过问。”
“是关于外部模块的风险,比较重要。”陈澄泓说,手里捏着报告。
薛冠宇看了一眼他手里的文件,厚度让他眼神动了动。
这时,里间门开了,董宏达站在门口,送另外两位客人。
客人走后,董宏达揉了揉眉心,看到陈澄泓。
“小陈啊,有事?”
“董总,关于‘磐石’项目,我写了一份风险报告,想请您看看。”陈澄泓上前一步。
董宏达接过报告,随手翻了翻前面几页,密密麻麻的文字和图表。
他眉头很快皱了起来。
“风险?什么风险?项目不是快要上线了吗?测试都通过了。”他语速有点快,带着些许不耐。
“测试可能存在覆盖不足,外部模块在极端并发下……”
董宏达抬起手,打断了他。
“这个模块是合作方核心产品,他们做过大量测试,我们也验证过。小陈啊,我知道你做事认真,但有时候不能过于钻牛角尖,要相信合作伙伴的专业性。”
他把报告合上,递还给陈澄泓,动作随意。
“这样,你既然有疑虑,报告先放薛经理那里。”他转向薛冠宇,“冠宇,你是项目负责人,你看看小陈提的这些,评估一下。没问题的话,就按计划推进,别耽误上线。”
薛冠宇立刻点头:“好的董总,我一定仔细看。澄泓也是为项目负责,谨慎点是好事。”
董宏达嗯了一声,拍了拍薛冠宇的胳膊:“你多费心。我还有个电话会议。”
说完,他转身回了办公室,门轻轻关上。
走廊里剩下陈澄泓和薛冠宇。
薛冠宇伸出手,脸上带着笑:“报告给我吧,澄泓。你放心,我会认真对待的。”
陈澄泓把报告递过去。
薛冠宇接住,拿在手里,另一只手拍了拍报告封面。
“写的挺详细,辛苦你了。不过啊,”他压低了点声音,带着点推心置腹的意味,“董总对这个项目期望很高,压力也大。咱们下面的人,提出问题的时候,最好也能同步给出稳妥的、不影响进度的解决方案。光是风险……有时候不太够,你明白吧?”
陈澄泓看着他,没说话。
薛冠宇笑了笑:“行了,报告我收着。你忙你的去吧,上线前还有很多准备工作呢。”
他拿着报告,转身朝自己办公室走去,脚步轻快。
陈澄泓站在原地,看着他的背影消失在拐角。
然后,他也转身,走向自己的工位。
窗外,天色不知何时阴了下来,远处有隐隐的雷声滚动。
要下雨了。
06
辞职报告是标准模板,陈澄泓只修改了个人信息和最后工作日。
离职原因那一栏,他空着没填。
打印出来,薄薄的一张A4纸,黑色的宋体字,显得很正式,也很疏离。
他拿着这张纸,又去了人力资源部。
卢曼妮这次没在打电话,正对着电脑屏幕处理什么文件。
看见陈澄泓进来,她露出职业化的微笑。
“澄泓,又来沟通调薪的事?其实……”
“不是。”陈澄泓把辞职报告放在她桌上,纸张边缘和木质桌面贴合,发出轻微的沙沙声,“卢经理,我申请离职。按规定提前两个月。”
卢曼妮脸上的笑容凝固了大概半秒钟。
她的目光迅速扫过报告标题,然后抬起来,看向陈澄泓。
惊讶是真实的,从她微微睁大的眼睛和瞬间停顿的呼吸能看出来。
但很快,那惊讶就像滴入水中的墨迹,迅速扩散、淡化,被一种更深沉的、了然的平静取代。
她拿起报告,仔细看了看最后工作日,又抬头确认:“两个月后?”
“对。”
“嗯……”卢曼妮沉吟了一下,手指无意识地在报告纸上点了点,“挺突然的。是找到更好的平台了?”
“个人发展原因。”陈澄泓回答得很简单。
卢曼妮点点头,没再追问具体原因。
她放下报告,双手交握。
“你的技术能力很强,公司其实很看重。之前调薪的事……可能有些误会,或者评估角度不同。如果你是因为这个有想法,我们可以再坐下来,好好谈谈,看看有没有其他补偿或发展方案?”
她说得很诚恳,眼神也带着挽留的意味。
“不用了,谢谢卢经理。我已经决定了。”陈澄泓语气没什么波澜,但很确定。
卢曼妮看了他几秒,似乎在判断他的决心有多坚定。
然后,她轻轻叹了口气,那点挽留的神色迅速褪去,恢复了人力资源经理处理常规离职流程的专业态度。
“好吧,我尊重你的选择。流程我会正常启动。”她从笔筒里抽出一支笔,在报告上签了字,“接下来两个月,按公司规定,你需要做好工作交接。我会通知薛经理,你们协商好交接内容和计划。”
“好的。”
“其他手续,比如离职证明、社保公积金转移,等最后工作日临近时,我会让同事联系你办理。”
“谢谢。”
对话简洁,高效,没有多余的拉扯。
卢曼妮把签好字的报告收进一个文件夹,抬头对他笑了笑,这次的笑容里,多了点别的,像是遗憾,又像是某种程度的放松。
“澄泓,以后常联系。祝你未来一切顺利。”
“也祝您工作顺利。”
陈澄泓走出人力资源部,带上了门。
走廊里安静无声。
他回到工位,坐下,看着电脑屏幕。
桌面上,那份写给董宏达的风险报告电子版还在。
他点开邮件客户端,新建邮件。
收件人输入了董宏达的公司邮箱,又输入了薛冠宇的。
在正文里,他只写了短短一句:“董总、薛经理,附件是关于‘磐石’项目外部加密模块的潜在风险补充报告,请查收。”
然后附上了那份详细的报告文档。
鼠标移到发送按钮上。
他停顿了足足一分钟,眼睛盯着屏幕上那两个收件人名字。
最后,他移动鼠标,删除了董宏达的邮箱地址,只保留了薛冠宇。
点击,发送。
邮件提示发送成功。
他关掉邮件窗口,清空了发件箱里的记录。
然后,他打开私人邮箱,给那个许久未曾联系的地址——许静萱的邮箱,重新发送了这份报告。
这次,他在正文里多写了一句:“静萱,存档备查。若将来有人问起这个模块的事,可作参考。”
点击发送。
做完这一切,他靠在椅子上,闭上了眼睛。
办公室的嘈杂声隐隐传来,键盘声,电话铃声,同事讨论问题的只言片语。
这一切,很快都和他无关了。
两个月,六十天。
倒计时,从这一刻,真正开始了。
![]()
07
最后一周了。
陈澄泓的工位依旧整洁,但一些私人物品已经不见了。
水杯、小盆栽、几年前团队建设合影的相框,都陆续带回了家。
办公抽屉里只剩下公司配发的文具和几本技术书籍,那是准备留给接手同事的。
他每天准时上班,准时下班。
工作内容严格限定在交接文档里列明的“份内事项”:修复几个指派的、无关紧要的边界bug,回答接手同事提出的一些技术疑问,协助梳理部分遗留代码的注释。
薛冠宇来找过他一次,脸上堆着笑,手里端着咖啡。
“澄泓,你看,你这马上就要走了,‘磐石’项目马上上线,正是最关键的时候。你之前不是对那个外部模块有疑虑吗?要不,最后这几天,你再帮忙深度跟一下?你的能力我是放心的。”
陈澄泓从代码编辑器里抬起头,推了推眼镜。
“薛经理,交接计划里没有这部分。我对那个模块的了解,已经都写在交接文档和之前提交的报告里了。”他语气平和,“而且,项目技术方案是您最终评审定的,现在临时调整,可能会引入新的风险,影响上线。”
薛冠宇脸上的笑容有点挂不住。
“话是这么说……但你的经验毕竟丰富些。就当帮个忙,站好最后一班岗嘛。”
“抱歉,薛经理。”陈澄泓摇了摇头,目光转回屏幕,“我手头还有几项交接任务没完成,时间比较紧。模块的事,我相信项目组现有同事能处理好。”
他说完,便不再开口,手指在键盘上敲击起来。
薛冠宇在原地站了几秒,咖啡杯沿抵着下唇。
最终,他没再说什么,转身走了,脚步比来时重了一些。
午饭时,组里几个平时关系还不错的同事围过来。
“澄泓哥,晚上一起吃个饭吧?给你送送行。”
“对啊,附近新开了家馆子不错。”
“好歹共事这么多年,别这么悄无声息就走了。”
陈澄泓咽下嘴里的饭菜,放下筷子。
“谢谢大家。”他声音不大,但足够让桌边的人都听清,“送行就不用了。最近家里有点事,下班得赶回去。心意领了。”
他的拒绝很温和,却也很干脆。
同事们互相看了看,有些讪讪的。
“这样啊……那太可惜了。”
“以后保持联系啊澄泓哥。”
“一定。”
话题很快转到了别的方面,游戏,房价,孩子的兴趣班。
陈澄泓安静地听着,偶尔点点头,不再参与讨论。
他吃得很快,吃完便起身去清洗饭盒。
水流哗哗,冲走泡沫和残渣。
下午,项目组开会,最后确认上线前的各项清单。
薛冠宇主持会议,情绪高昂,反复强调这次上线的重要性。
有人提到是否需要对陈澄泓报告里指出的并发场景做一次补充测试。
薛冠宇摆了摆手:“那个场景触发概率低于万分之一,在统计学上可以忽略不计。我们现在做的全链路压测已经覆盖了百分之九十九点九以上的情况。为了这零点零一的概率,推迟上线,代价太大,董总那里也无法交代。”
他看了一眼列席会议、坐在角落的陈澄泓。
“澄泓,你说呢?你是提出风险的人,你觉得有必要为了这个,推迟整个项目吗?”
所有人的目光都转向陈澄泓。
会议室里安静下来。
陈澄泓面前摊着笔记本,手里拿着笔。
他抬起头,迎上薛冠宇的目光,也扫过其他同事的脸。
“概率确实很低。”他开口,声音平静无波,“技术决策,薛经理和项目组定就行。我的工作已经交接完毕。”
他说完,低下头,在笔记本上写了几个字,可能是会议记录,也可能什么都不是。
薛冠宇像是得到了想要的回答,表情松弛下来。
“好,那我们就按原计划,后天凌晨,准时上线!”
散会后,陈澄泓第一个走出会议室。
他没有回工位,而是去了楼梯间,慢慢走下几层楼,在一个没人的楼道窗户边站了一会儿。
窗外车流如织,夕阳给高楼玻璃幕墙涂上一层暖金色。
他从口袋里摸出手机,屏幕干净,没有未读消息。
解锁,点开日历。
最后工作日的标记,红色的圆圈,像一个句号。
他看了几秒,锁屏,把手机放回口袋。
玻璃窗上,映出他模糊的、没什么表情的影子。
08
上线过程异常顺利。
监控大屏上,各项指标绿灯常亮,用户访问曲线平稳上升。
项目指挥中心里,董宏达亲自坐镇,脸上终于露出了久违的、轻松的笑容。
薛冠宇站在他旁边,指着大屏上的数据,低声解释着,意气风发。
“董总,您看,流量比预期高了百分之二十,系统完全扛住了。我说吧,咱们团队的付出,肯定有回报!”
董宏达拍了拍他的后背:“干得不错!冠宇,这次给你记头功!”
凌晨的紧张和疲惫,似乎都被此刻的喜悦冲散了。
技术团队的人轮流去休息室打盹,只有监控岗还坚守着,盯着屏幕上跳动的数字和曲线。
陈澄泓的离职手续在前一天全部办完了。
他的工位彻底清空,椅子推进桌下,桌面光洁如新,仿佛从未有人在那里坐过六年。
行政部的人来收走了门禁卡和公司配发的笔记本电脑。
人力资源的系统里,他的状态悄然变更为“待离职(最后工作日)”。
所有这些,都发生在上线狂欢的背面,悄无声息。
顺利运行了大约三十六个小时后。
第一个异常报警出现在深夜的监控日志里,很快被自动恢复机制处理,没有引起当值人员太多注意。
只是报警频率在缓慢增加,像远处逐渐密集的鼓点。
第二天上午,鼓点变成了惊雷。
外部加密模块的特定服务接口,在持续高并发访问下,内部状态锁大规模失效。
连锁反应如同雪崩。
依赖其校验结果的核心交易链路成片报错,用户请求超时,支付失败,数据一致性遭到破坏。
自动扩容和故障转移机制在这种底层模块的崩塌面前,杯水车薪。
指挥中心的绿灯一片片熄灭,刺眼的红色和黄色疯狂闪烁。
报警声凄厉地响个不停。
“怎么回事?!”董宏达冲进中心时,脸上昨晚的笑容早已荡然无存,只剩下铁青的惊怒。
薛冠宇额头全是冷汗,手指在控制台上飞速操作,声音发颤:“不……不知道,突然就这样了!模块……合作方的模块好像崩溃了!”
“联系合作方!立刻!”
合作方的技术支持电话占线,好不容易接通,对方的工程师也焦头烂额,初步判断是模块底层一个罕见缺陷被触发,修复需要时间,至少……二十四小时。
“二十四小时?!”董宏达的声音拔高了,指着大屏上每小时都在跳跃增长的“预估损失”数字,“你看看这数字!二十四小时?公司可以直接关门了!”
他猛地转身,血红着眼睛盯着薛冠宇:“你们技术团队是干什么吃的?!测试怎么测的?!为什么没发现?!”
薛冠宇腿都有些软了,脸色煞白:“测试……测试都通过了啊……这种极端情况,概率太低了……”
“概率低?!”董宏达抓起手边一个文件夹,狠狠摔在控制台上,纸张四散飞扬,“现在它发生了!发生了!”
巨大的恐惧攫住了他。八个亿的项目,背后是银行的贷款,是投资人的期待,是公司未来几年的命脉。
每小时都在滚动的损失,像是一个无底洞,正在吞噬一切。
技术团队的人尝试了各种紧急方案,回滚版本,启用备份链路,但问题根植在那个外部黑盒模块里,绕不开,躲不过。
时间一分一秒过去,每一秒都像在油锅里煎熬。
公关部的电话已经打爆,媒体开始捕捉到风声,客户的投诉和质问雪片般飞来。
董宏达瘫坐在椅子上,手指插进头发里,用力抓着。
他抬起头,布满血丝的眼睛里,忽然闪过一道光。
一个名字跳了出来。
一个曾经被他忽略,被他轻易打发走的人。
“陈澄泓……”他喃喃道,猛地站起来,声音因为急切而嘶哑,“去找陈澄泓!他之前不是提过风险吗?他肯定知道点什么!快!立刻把他给我找来!不管他在哪儿,在干什么,让他马上过来!立刻!”