手机屏亮起时,保温杯刚凑到唇边。
短信提示音轻得像灰尘落进耳道。
我划开屏幕。
数字躺在那里:280.00。
不是两千八,更不是两万八。小数点前只有三位数,末尾还跟着两个规整的零。茶水间的咖啡机在身后嗡鸣,像某种沉闷的心跳。窗外,十二月的天灰得像是要压下来。楼下有电动车“嘀嘀”两声,刺破这层寂静。
保温杯底磕在桌面上,“咚”地一响。
“看什么呢,这么入神?”
周芸从对面探出半个身子,手里捏着半片苏打饼干,碎屑沾在嘴角。
“垃圾短信。”
我把手机屏幕朝下,扣在桌上。
“新到的海盐味,尝尝?”
她递过来饼干,我摆摆手,起身朝经理办公室走去。
过道两侧的工位亮着零星几盏灯。有人抬头,目光在我脸上停了一瞬,又迅速埋回屏幕里。
日光灯管在天花板上滋滋作响,一根灯管明明灭灭。
经理办公室的门虚掩着,透出缝里一线暖光。
我敲了两下。
“进来。”
王建民的声音隔着门板传来,有点闷。
推开门,暖气混着烟味糊在脸上。王建民窝在办公桌后头,手里捏着支红笔,正往摊开的表格上画圈。技术组的赵志强杵在旁边,弓着背,两个人脑袋凑得很近。
听见动静,王建民摘了老花镜,用指节揉了揉鼻梁骨。
“小韩啊。”他抬起眼皮,“有事?”
我没往前挪,就站在门边。“王总,想问下年终奖。”
手垂在裤缝边,指甲掐进掌心。
“刚才到账了,”我说,“两百八。”
办公室忽然很静。
只有那根坏灯管还在头顶滋滋地响。
王建民和赵志强飞快地对看了一眼。
赵志强扯了扯嘴角,没吭声,低头继续盯那份表格。王建民清了清嗓子,端起茶杯,慢吞吞地呷了一口。
“没搞错。”他放下杯子,杯底磕在玻璃台面上,“就这个数。”
我掏出手机,解锁,点开计算器。
屏幕的光映在脸上。
“我去年十一月入职的。”我说,手指在屏幕上戳着数字,“到现在,一年零一个月。”
“公司制度写得很清楚,年终奖是底薪的一点五倍。”
“我底薪六千。”
“九千。”
数字报出来,声音在安静的办公室里显得特别脆。
茶杯“咔”一声磕在玻璃桌面上。
王建民没抬头,指尖在杯沿轻轻摩挲了两下。
“小韩,你坐下说。”
“我就站着。”
他肩膀往后靠进椅背里,眼皮慢慢掀起来看我。那眼神我太熟了——像看一个算错账的实习生,三分无奈七分不耐烦,还掺着点居高临下的同情。
“公司规定,”他开口,每个字都拖出停顿,“年终奖要和绩效挂钩。”
“我绩效怎么了?”
“C档。”
空气静了两秒。茶水间的打印机突然嗡嗡响起来。
“我经手的项目零延期,零重大事故。”我往前走了半步,“四月份系统迁移,我连加半个月班,凌晨两点走都是早的。国庆七天,我在这儿处理了十一起来电报修——这些周报里写得清清楚楚。”
“公司有公司的评估标准。”
“什么标准?”
他食指敲了敲桌面。一下。两下。
“综合考量。”
“考量出C档?”
“对。”
他伸手去端茶杯,热气早就散光了。
他转向赵志强,办公椅发出轻微的咯吱声。
“志强,你是技术组组长。”
“你说说。”
赵志强抬起头。
他的眼镜片在日光灯下反了道白茫。
手抬到一半,又放下去——这个推眼镜的动作他做了三年,每次开会都这样。
比我大五岁,早来三年,说话前总要抿一下嘴唇。
像在斟酌。
但我知道不是。
他只是在表演斟酌。
“韩林。”
他开口,声音不高不低,刚好能让会议室每个人都听清。
“你的技术水平,确实不错。”
“这个大家都承认。”
他停顿两秒。
空调出风口嗡嗡响。
“但是绩效评估——”
他换了个坐姿,后背靠上椅背。
“不只是看技术指标。”
“还要看团队协作。”
“沟通能力。”
“工作态度。”
“这些软性指标。”
他看向我。
镜片后的眼睛没什么情绪。
“你的问题就在于——”
他又抿了一下嘴唇。
“你太独了。”
“什么意思?”
我的声音比预想的要平。
“什么意思你自己心里清楚。”
他把眼镜推回原位,手指在镜框上多停留了一瞬。
“项目例会上。”
“你经常直接反驳同事的意见。”
“不太注意方式方法。”
他翻开面前的笔记本。
纸页哗啦一声。
“上个月跟产品部开会。”
“你当着所有人的面说——”
他抬眼。
“‘人家的需求文档写得像小学生作文’。”
会议室里有人轻咳。
“产品部刘经理后来专门打电话过来。”
“说我们技术组的人态度有问题。”
“这种事儿——”
他合上笔记本。
“不是一次两次了。”
我张开嘴。
空调冷气灌进喉咙。
想说那文档确实一塌糊涂。
想说里面逻辑矛盾的地方有七处。
想说我要是不指出来,后续开发至少要多花两周时间。
但话卡在舌尖。
赵志强已经移开了视线。
话到嘴边,又咽了回去。
这种场合,说什么都是徒劳。
“所以王总,”我的声音比想象中干涩,“我这一年,算是白干了?”
“怎么能叫白干呢?”王建民的手在空中摆了摆,像在掸灰,“基本工资每月都准时发你了呀。年终奖是额外激励,又不是合同里写死的条款。”他身子往后靠进椅背,“年轻人,眼光放长远。明年绩效提上来,什么都有了。”
我把手机屏幕转向他。
数字亮得刺眼。
“两百八。”我说,“王总,我加班熬夜一整年,就值这个数?”
王建民脸上的笑意消失了。
他盯着我,嘴唇抿成一条直线。
“韩林,”他放慢语速,“公司给你平台,给你机会,是在培养你。”
他抬手,指了指门的方向,“你觉得委屈,门在那儿。没人拦你。”
“我没说要走。”
“那你到底想怎么样?”
暖气片在墙角咕噜作响。
赵志强垂着头,红笔在表格上悬了很久,没落下。
他手指攥得发白,骨节凸着。
真奇怪。
他紧张什么?
一个拿C档绩效的人,也值得他这么紧张?
“我没什么别的意思。”我放下那张纸,声音比想象中要平静,“只是想当面确认,这个数字,确实就是公司对我这一年工作的全部评价。”
“确认完了?”
“确认完了。”
王建民重新拿起那支黑色签字笔,笔尖在表格的空白处画了一个不规则的圈,墨水洇开一小片。他没抬头,只挥了挥手:“没事就回去干活吧。年终总结,明天上班前交到我邮箱,别耽误。”
我转身,带上了他办公室那扇厚重的木门。
回到自己的格子间,我坐下,对着屏幕上那片幽蓝的光。密密麻麻的代码像一片沉默的、排列整齐的墓碑。我盯着它们,看了很久。一年零一个月,七个核心模块,上百个漏洞修复,数不清的性能优化……最后换来的,是这张纸,和纸上那个轻飘飘的数字。
两百八十块。
旁边工位传来窸窣的响动。周芸又探过身来,她手里的饼干袋已经空了,正慢条斯理地用一张印着卡通图案的湿巾,一根一根擦着手指头。
“怎么样?”她凑近,压低了嗓子,带着点糕点的甜腻气味。
“没怎么样。”
“到底多少嘛?”她不依不饶,眼睛瞟向我桌上那张对折的纸。
我没回答,直接站了起来。开始收拾桌上零碎的东西。公司发的鼠标垫,边缘已经卷起,那个硕大的logo被磨得几乎看不清原色。我把它卷成筒,塞进了抽屉最深处。黑色的保温杯,杯身上那道划痕是去年某次加班到深夜,不小心撞在金属文件柜上留下的。我拧开盖子,把里面剩下的半杯冷水倒进了脚边的垃圾桶。
我将杯里剩下的水倒进垃圾桶,水流声在安静的办公室里显得格外清晰。
拧紧杯盖时,塑料螺纹发出轻微的摩擦声。
背包侧袋的拉链有些卡顿,我拉了两下才完全塞进去。
“韩林?”
周芸的声音从隔板后面飘过来,尾音带着试探。
我没应。
拉上背包主拉链时,金属齿咬合的声音很干脆,像刚才手机震动时那声短促的提示音。
我扫了眼桌面——键盘、鼠标、公司发的笔记本,都留在原位。
私人物品只剩半包纸巾,我抽出来塞进外套口袋。
起身时椅子轮子向后滑了半米,撞到隔板发出闷响。
“你别冲动。”周芸站起来时碰倒了笔筒,几支笔滚到地上,“年终奖的事还能谈……”
“没冲动。”
我拎起背包带子甩到肩上,对她笑了笑。
“就是觉得冷。”
她眨了下眼,嘴唇微张却没发出声音。
茶水间的磨豆机正好停止运转。
赵志强端着咖啡走出来,杯沿冒着热气。
他看见我肩上的背包,脚步停在茶水间门口。
咖啡杯在他手里晃了晃,深褐色的液体差点溅出来。
他喉结动了动。
最终只是侧身贴墙站着,给我让出一条通道。
电梯门反射着走廊顶灯的白光。
我走进去,转身按下那个鲜红的“1”。
电梯门缓缓合拢。
金属表面映出我的脸——模糊的,像被水浸过的油画颜料。
我盯着那团晃动的倒影,忽然扯了扯嘴角。
十二月的风是带着刀片的。
刚出写字楼,冷气就劈头盖脸砸过来。
我把羽绒服拉链拽到下巴,缩起脖子,朝地铁口挪。
路灯已经醒了。
橘黄的光晕淌了一地,把行人影子拉成细长的鬼。
台阶上坐着个卖烤红薯的老人。
铁皮桶咕嘟咕嘟冒着白汽,甜香混在冷风里,勾着人的胃。
他抬头看我。
眼珠浑浊,映着两盏小小的路灯。
我摸出手机。
“要两个。”
红薯烫得隔着塑料袋都咬手。
我递回去一个。
老人愣住,手指在衣角蹭了蹭才接过去。
“姑娘……”
他咧嘴笑,缺了颗门牙。
我没应声,转身踩下台阶。
地铁车厢空荡荡的。
我挨着门坐下,把背包抱在怀里。
烤红薯在塑料袋里慢慢散着热气。
手机在掌心震动,像是心脏漏跳了一拍。
周芸的微信头像跳出来。
“你真走了?”
“王总刚才出来找你,看你工位空了,脸当场就黑了。”
屏幕的光映在脸上,我只看了一眼,就把手机翻过去,扣在腿上。
地铁在隧道里轰鸣,车厢摇晃得像摇篮。
头顶的扶手吱呀吱呀地摆动。
对面坐着个穿校服的学生,耳机线垂在胸前,手指飞快地划着屏幕。
旁边是个中年女人,拎着超市塑料袋,里面几盒速冻水饺挤在一起。
再旁边是个穿西装的男人,领带歪了一半,眼神空荡荡地盯着对面玻璃窗上的倒影。
每个人都在自己的轨道上跑。
谁也没空看谁。
我在家那站下了车。
天已经黑透了,路灯把影子拉得细长。
小区门口的水果摊正在收摊,老板娘蹲在地上,把没卖完的橘子一个个捡进纸箱。
橘子滚了一地,她伸手去够,袖口蹭了灰。
刷卡,进单元门,爬楼梯。
三楼,钥匙插进锁孔,转动时发出干涩的“咔哒”声。
屋里是暗的,安静得能听见冰箱的嗡鸣。
室友还没回来。
我在玄关踢掉鞋子,背包扔进沙发,陷进去一片。
走进厨房,拉开冰箱门。
冷气扑出来,里面孤零零躺着一罐啤酒。
我拿出来,食指勾住拉环,“嗤”一声轻响。
就站在厨房的瓷砖地上,仰头灌下第一口。
冰凉的液体滑过喉咙,带着点苦。
啤酒很冰,灌下去时激得牙根发酸。
胃里却慢慢烧起一点暖意。
楼上邻居的孩子在弹《致爱丽丝》,琴键磕磕绊绊,错了好几个音。
我倚着厨房台面,把空罐子丢进垃圾桶。
哐当一声。
客厅茶几上的手机震了起来。
是个陌生号码。
“喂?”
“韩林!你现在在哪儿?”电话那头的男声又急又喘,像刚爬了十层楼。
“哪位?”
“赵志强!”他几乎在喊,“公司出大事了!你走之后系统崩了,数据库被锁,线上全瘫!客户电话都快打爆了——你快回来,这事儿只有你能搞!”
我盯着地板缝里的一点污渍。
两秒。
“赵组长,我下班了。”
“我知道!可这是紧急状况!”他声音嘶哑,“王总亲口说的——你回来解决,年终奖的事……可以谈!”
我把手机从耳边挪开,屏幕的冷光刺进眼里。
七点二十三分。
离开公司还不到两小时,桌上那杯凉透的咖啡大概还没被保洁收走。
“明天再说吧。”
“明天?”赵志强在电话那头倒抽一口气,声音像卡了鱼刺,“韩林,你疯了是不是?系统瘫了!上百个客户干瞪眼,每分钟都在烧钱!你跟我说明天?”
我盯着窗外逐渐暗下去的天色。
路灯一盏盏亮起来,在玻璃上投出昏黄的光斑。
“我现在往回赶,十一点能到公司。”
“从十一点干到天亮,你觉得我能修好吗?”
“能啊,当然能!”他急吼吼的,“这堆代码都是你亲手搭的,你比谁都清楚!”
“那公司的损失……”
我顿了顿,声音轻得像在问晚饭吃什么。
“关我什么事呢?”
听筒里突然安静了。
只有电流的嘶嘶声,还有赵志强越来越重的呼吸——一下,两下,像破风箱在拉。
五秒。
也许更久。
“韩林。”
电话那头换了个声音,低沉,压着火,每个字都像从牙缝里挤出来的。
“我是王建民。”
我换了个手拿手机。
掌心有点潮。
“王总,您说。”
小韩,现在不是闹情绪的时候。
公司遇到紧急情况了,你必须回来处理。
作为公司员工,你有责任——
王总。
我打断了他,声音很轻。
您觉得,一个月两百八十块钱的员工,该负多大责任?
听筒里传来他急促的呼吸声。
韩林。
王建民再开口时,语气完全变了。
刚才那份压着火气的焦急不见了,取而代之的是某种金属质感的东西,冷,硬,像冬天凌晨的铁轨。
你这是威胁公司?
临阵脱逃,见死不救。
公司培养你一年,发工资,交社保,你就这样回报?
我没威胁谁。
我往后陷进沙发里,把腿伸直,光着的脚丫搁在茶几边缘。
茶几玻璃冰凉。
我只是觉得挺有意思。
既然公司认定我只值两百八十块,那这些钱能买到的服务,我下班前已经给完了。
剩下的,不归我管。
你——
王总,我先吃饭了。
有事明天聊。
电话挂断。
屏幕暗下去,又亮起来。
赵志强发来十几条微信,全是语音条。
红色的未读提示像一排小伤口。
我没点。
把手机调成静音,翻过来,扣在茶几上。
屏幕朝下。
世界安静了。
我走进厨房,烧水,煮了一碗最简单的挂面。
敲了个鸡蛋进去,看着蛋清在滚水里迅速凝固成白色的云朵。
又从冰箱里翻出半根火腿肠,切成不均匀的薄片,撒在面上。
端着碗回到客厅,窝进沙发,点开手机里早就下好的电影。
片子很老了,讲一个程序员被公司坑了三年,最后发现自己的代码全被拿去做黑产。
主角一路开挂,用技术把公司整垮了,结局挺解气。
我看着看着,夹起一筷子面。
“太假了。”
现实里被压榨的程序员,哪有这种本事。
大多数人,就像我现在这样。
煮一碗面,看一部电影,在心里把老板和公司骂上一百遍。
然后第二天早上,照样挤地铁,打卡,坐在工位上对着bug发呆。
碗底最后一口汤喝完的时候,我还是没忍住,按亮了手机屏幕。
锁屏界面上,未读消息的数字刺眼地跳着:37。
未接来电的红色标志更吓人:22个。
拇指在屏幕上悬停了几秒,还是划开了解锁。
微信图标上的小红点几乎要炸开。
最顶上是周芸。
一连串消息,时间间隔越来越短,语气也越来越急。
“韩林,你真不回来了?”
“系统瘫了,王总在办公室摔东西,我隔着玻璃都听见了。”
“赵志强说数据库被加密了,他一点办法都没有,整个技术组现在全傻站着。”
“客户电话快打爆了,法务那边说可能要收律师函。”
“你人呢?”
“回句话行不行?”
我手指往下滑。
赵志强的头像旁边,挂着16条语音消息的小红点。
最长的那条,显示1分23秒。
我划开最短的那条语音。
三秒钟。
赵志强咬牙切齿的声音挤出来:“韩林,你他妈到底想干什么?”
我盯着屏幕,嘴角动了动。
往下翻。
公司内部系统的告警短信,一条接一条,红得刺眼。
每一条都标着“紧急”,每一条都在我离开后的整点跳出来——核心数据库异常,服务中断,请立即处理。
我把手机丢到沙发另一头。
电影的光映在墙上,明明灭灭。
片尾字幕刚滚起来,屏幕又亮了。
这次是邮件。
发件人:HR总监。
收件人:我。
抄送栏挂着王建民和总经理的名字。
标题一行字:“关于韩林同志年终奖申诉的回复”。
点开。
正文很短,措辞像从模板里抠出来的。
“经复核,年终奖发放金额无误。绩效考核结果由直属领导评定,符合制度。如有异议,请于三个工作日内提交书面申诉。”
最后,HR总监单独添了一行:
“另,据反馈,今晚公司系统出现重大故障。你作为主要技术负责人,拒绝配合紧急处理。”
“经核实,该行为已构成严重违反公司规章制度。”
屏幕上,那行字冷冰冰的。
“请于明天上午十点前,到人力资源部说明情况。”
我盯着它。
看了很久。
严重违反。
十点前。
年终奖没了。
还要被追责。
我今晚没回公司处理故障,倒成了我的错。
我关掉邮件。
手机被我扔在沙发角落,屏幕朝下。
卫生间的水龙头拧到最左。
冷水冲在脸上,我打了个寒噤。
抬起头。
镜子里的人头发湿漉漉地贴在额头,眼下的青黑像是用墨涂上去的,嘴唇干裂,起了一层白皮。
二十六岁。
看起来像三十六。
客厅里,手机又在震。
嗡嗡的闷响,从沙发缝里传出来。
我扯过毛巾,胡乱擦了把脸。
走过去,捡起手机。
屏幕亮着。
这次不是王建民。
也不是赵志强。
来电显示:李建国。
公司的总经理。
我入职一年多,从没和他直接通过电话。
年会时,他在主桌喝酒,我坐在最后一排吃果盘。
手指悬在接听键上,停了两秒。
按下去。
“韩林。”
电话那头的声音传过来,平和,甚至有点温和。
像长辈在饭桌上随口问起晚辈的工作。
“我是李建国。”
“刚才听说了今晚的事。”
我握着手机,没吭声。
“年终奖的事,”他顿了顿,语气没变,“我让HR重新查一查。”
“如果确实有问题。”
“该补的补,该调的就调。”
“你现在马上回来一趟,把系统的问题处理掉,好不好?”
他的声音像温水,缓缓淌过来。
几乎要漫过我的脚踝了。
我张了张嘴,话就堵在喉咙口——却忽然想起李建国在这家公司当了八年总经理。王建民是他一手提拔的,王建民做的每一个决定,包括给我评C档绩效的决定,他不可能不知道。
这个电话,不是因为我受了委屈。
是因为系统瘫了。
“李总,”我听见自己的声音,比想象中平静,“我想问您一个问题。”
“你说。”
“如果今晚系统没有出问题,您会给我打这个电话吗?”
听筒里传来呼吸声。
很轻。
三四秒的停顿,像胶片卡住时的那段空白。
我等着。
“韩林啊,”他避开了问题,语气里那点温和没变,只是多了层薄薄的警告,“年轻人容易钻牛角尖。你现在回来,把问题解决了,今晚的事,我可以当没发生过。”
“年终奖的事,我会亲自过问,一定给你一个满意的答复。”李总的声音从听筒里传来,顿了顿,又压低了些,“但如果你今天不回来……那就不是年终奖的问题了。这关系到你的职业操守。传出去,对你未来的发展,恐怕不太好。”
“李总,谢谢您还特意打电话来。”
我听见自己的声音很平静,甚至带着点礼貌的疏远。
“我今天确实累了,需要休息。有什么事,我们明天再谈吧。”
没等他再开口,我按下了挂断键。
这一次,指尖没有半点迟疑。
我把手机调成飞行模式,随手扔进沙发靠垫的缝隙里,像丢掉一块烫手的石头。然后坐回原位,把电影剩下的部分看完。屏幕里,主角终于拿到了巨额赔偿,反派公司宣告破产,字幕缓缓升起。
我关掉电视。
客厅陷入一片柔软的黑暗,只有路由器指示灯在墙角幽幽地亮着红光。
窗外的路灯透过没拉严的窗帘缝隙,在天花板上切出一道细细的、苍白的光痕。楼上练琴的孩子早就停了,整个小区安静得能听见自己的呼吸。偶尔有车从远处的马路驶过,轮胎摩擦地面的声音由远及近,又迅速滑走,消失在夜色里。
明天。
HR大概会约我谈话。王建民会拍桌子吧。赵志强肯定要跳着脚指责我拖累团队。同事们会用那种混合着好奇和避之不及的眼神偷偷打量我。
也许,我真的会被开除。
这个念头冒出来的时候,我靠在沙发里,忽然很轻地笑了一下。
奇怪的是,我并不害怕。
甚至……隐隐期待着明天快点到来。
因为离开公司前,我瞥过一眼系统报错时自动生成的日志。
那串错误代码,我记得很清楚。
那不是普通的系统故障。
是一次有预谋的攻击。
入侵路径藏在三个月前的代码里——那段赵志强强行要求合并的代码。
合并评审会上,我盯着投影屏摇头。
“没走完安全审查流程,不能上线。”
赵志强当时跷着腿,笔尖在会议桌上敲了敲。
“出了事我负责。”
他的声音盖过了空调的嗡鸣。
现在,事出了。
第二天早上,敲门声像锤子砸在耳膜上。
我从沙发上弹起来,脖子“咔”地响了一声。
昨晚在沙发上蜷着睡,脊椎现在像生锈的铰链,每动一下都扯着疼。
窗帘缝隙透进灰白的天光,茶几上的手机屏幕暗着,像块冰冷的墓碑。
又一阵敲门声。
更急了。
“韩林!你在不在?开门!”
是赵志强。
嗓子哑得厉害。
我搓了把脸,走到门口。
猫眼里,赵志强头发像被风掀过的草窝,羽绒服拉链只拉到一半,里头的衬衫领子翻在外面,皱得像抹布。
他眼睛红得吓人,眼袋浮肿,整个人像被抽空了气。
另一个是周芸。
她裹着件白色长款羽绒服,像团移动的雪,站在赵志强身后半步的位置,手指绞着拉链头,表情僵在尴尬的刻度上。
我拧开门锁。
“你他妈终于开门了!”
赵志强一把搡开门板,门框差点磕上我的额角。他身上的寒气扑进来,混着烟味。“知不知道我打了多少电话?公司现在什么情况?你他妈——”
“赵组长。”
我侧身让开通道,声音平得听不出波纹。
“进来坐。”
赵志强噎住了。
他大概准备了一套完整的流程——先骂,再逼,最后押着我回公司谢罪。可我这么平静地邀请他进屋,反倒让他张着嘴,半天没挤出下一个字。他喉结滚了滚,把后半截话咽回去,大步跨进客厅,沙发被他坐得一声闷响。
周芸跟了进来。
她在玄关脱了鞋,露出一双灰色棉袜,脚趾在袜子里不安地蜷了蜷。踩上木地板时,发出细碎的、像落叶摩擦的声响。
她抬头看了我一眼。
那眼神复杂得很——三分担忧,两分好奇,剩下的五分,大概是等着看戏。
“韩林。”
她声音压得低,几乎只剩气音,好像这话被邻居听去会惹祸。
“你昨晚到底怎么回事?王总气得摔了两个杯子,李总亲自打电话你都不接……整个公司,昨晚都炸了。”
“知道。”
我转身走进厨房。
水龙头拧开,水流砸在不锈钢水壶底,声音清脆。我把壶搁上电磁炉,按下开关。
“你们喝什么?”
“茶还是咖啡?”
韩林的声音从厨房传来,轻得像在问今天天气如何。
赵志强从沙发上弹起来,冲进厨房时差点撞上推拉门。
他站在我面前,胸口剧烈起伏。
“你现在还想着喝茶?”
他声音压得很低,每个字都像从牙缝里挤出来的。
“系统瘫痪十一个小时了,数据库全被加密,客户数据锁死,线上服务全断——”
他抬手看了眼表,手腕在抖。
“每分钟都在赔钱,客户已经发了律师函。”
我没接话,转身打开橱柜。
茶叶罐摆在最里面,铁皮盖子已经有些锈迹。
拧开时发出细微的摩擦声。
“赵组长。”
我把茶叶放进杯子,铁观音的碎屑在杯底铺开浅浅一层。
“你冷静一下。”
“我怎么冷静?”
赵志强突然提高音量,又猛地压下去,手指攥紧了流理台边缘。
“你昨晚就该回来。”
他盯着我,眼睛里有血丝。
“要是你在,事情根本不会闹这么大。”
水壶在这时烧开了。
蒸汽顶开壶盖,发出尖锐的鸣叫。
我提起水壶,热水冲进杯子时茶叶翻滚着浮上来,颜色从深褐慢慢晕开成淡绿。
把其中一杯推过去时,杯底在台面上划出轻微的声响。
赵志强没看那杯茶。
他盯着我,喉结动了动。
“全公司都知道你见死不救。”
“HR已经在走纪律处分程序了。”
他顿了顿,声音忽然变得很轻。
“你以为这是在报复谁?”
“你这是在毁你自己。”
我端起茶杯,轻轻吹散飘起的热气。
“赵组长,问你个技术问题。”
他的目光钉在我脸上。
“昨晚系统出问题的时候,你第一反应是查哪儿?”
“什么?”他喉咙里挤出一声。
“我问你,”我把茶杯放回桌面,瓷器碰到玻璃发出清脆的响声,“最先检查了哪部分。”
赵志强那双布满血丝的眼睛死死盯着我,像一张湿漉漉的渔网罩过来。他手指在膝盖上攥紧又松开,手背上青筋突突跳着。
我知道他在想什么——他想立刻把我拖回公司,按在工位上,逼着我修好那摊烂摊子。
但他更清楚,如果现在不顺着我的问题走,我连门都不会出。
“数据库服务器。”
这三个字从他牙缝里挤出来,硬邦邦砸在地上。
“先是数据库报错,”他语速加快,像在背诵一份事故报告,“然后整个服务集群像多米诺骨牌一样,一层层垮下去。我查了日志——”
他忽然顿住,呼吸粗重了几分。
“日志显示,有人从公司内网进来的。”
他抬起眼皮看我,眼白里的血丝更密了。
“用的管理员账号,直接对核心库执行了加密操作。我们试了所有常规解密手段,”他摇头,肩膀垮下去一点,“全部无效。”
“内部入侵?”
“对。”赵志强猛地前倾身体,手肘撑在膝盖上,“入侵者的IP是公司内网地址,权限是合法的最高管理员权限。这意味着什么?”
他不需要我回答。
“要么是内鬼干的,”他声音压得很低,每个字都像在磨刀石上磨过,“要么就是有人把权限卖出去了。不管是哪种——”
他后槽牙咬得咯咯响。
“都他妈是捅破天的大事。”
“入侵路径呢?”
我打断他,重新端起茶杯。
赵志强没接话。
他盯着我,眼神里的火苗慢慢熄了,换成一种更沉的东西——像深夜的湖面,底下不知道藏着什么。他松开攥紧的拳头,指节泛白,肩膀却绷得比刚才还直,整个人像一根拉到极限的弓弦。
“你问这个干什么?”他声音压得很低。
“入侵路径。”我晃了晃手里的茶杯,茶叶在杯底转了个圈,“从哪台机器进来的?用的谁账号?怎么拿到的权限?”我靠在厨房台面边沿,语气轻得像在问今晚吃什么,“你查过吧?”
赵志强喉结动了动。
“查了。”他声音更低了,低得几乎只剩气音,“起点是开发服务器……技术组那个公用测试账号。权限L3。”
他停顿了一下。
“但三个月前系统更新,它被错加进L4权限组了。所以能通过跳板……直接访问核心库。”
“哪次更新?”
赵志强突然不吭声了。
客厅那边,周芸还站在沙发边上。她手指绞着羽绒服下摆,布料被她捏得皱巴巴的。她听不太懂我们在说什么,但能看见赵志强的背影——刚才进门时那股冲劲儿全没了,现在僵在那里,像被什么钉住了脚。
韩林,你到底想说什么?
赵志强放下手里的文件。
我想说,三个月前那次系统更新。
负责代码合并的负责人是你。
我把茶杯搁在台面上。
陶瓷杯底碰出一声脆响。
当时你强行要求合并的那段代码。
我在代码审查时提了反对意见。
理由有三条。
第一,代码来源不明。
没有经过第三方安全审计。
第二,代码里藏了个未公开的管理员权限提升模块。
功能描述模糊。
潜在风险极高。
第三,代码作者是外包团队的临时工。
那人提交代码后第三天就离职了。
联系方式全部失效。
你——
赵志强张了张嘴。
我的反对意见。
你全部驳回了。
我继续往下说,声音没什么起伏。
你当时讲,这段代码是李总亲自交代的。
必须按时上线。
出了事你负责。
这话是你说的吧?
赵志强的脸色变了。
不是那种剧烈的颜色转换。
是瞳孔细微地收缩。
眼角肌肉轻轻抽了一下。
他把嘴唇抿成一条笔直的线。
那些变化快得几乎抓不住,快到我以为是自己眼花了。
但我清清楚楚地知道,我没有。
“你记错了。”赵志强开口,声音硬得硌人,像块砸在地上的石头。
“我记错了?”
“那段代码合并,是你亲自同意的。”他眼皮都没抬,目光钉子似的钉在我脸上,每个字都吐得极其缓慢,“去查系统记录。三个月前,九月十七号,你提的合并审批,审批方是技术组。最后点确认上线的,是你。”
我没接话。
他也没移开视线。
厨房里只剩下电磁炉风扇的嗡鸣,混着窗外断断续续的汽车喇叭声。周芸在客厅站着,目光在我和他之间来回转,眉头越拧越紧。
“赵组长,”我放缓了语速,让声音沉下去,“代码系统的操作日志,是可以改的。”
“……什么?”
“我说,操作日志可以修改。”我一字一顿,确保他听清每一个音节,“只要拿到L4级别的管理员权限,就能进后台改日志。改提交人,改审批人,改确认人。”
我停顿了一下,听见自己很轻地吸了口气。
“而三个月前系统更新完,碰巧拿到那个权限的人——是你。”
赵志强的脸色一寸寸褪成惨白。
他的手重重按在厨房冰凉的台面上,指关节绷得发青。
呼吸声变得又粗又急,像破旧的风箱在拉扯。
他盯着台面上那杯早已凉透的茶——茶叶蜷缩在杯底,水面上浮着一层腻腻的油膜。
“你……查了代码库的提交日志?”
他的声音哑得厉害,像砂纸磨过喉咙。
“没查。”
“那你怎么——”
“三个月前,我就觉得味道不对。”我打断他。
“那段代码的骨架,和外包团队之前交上来的所有东西,完全是两套写法。”
“命名习惯,注释的口气,连报错时甩出来的提示信息,都透着另一股劲儿。”
“我当时就猜,这玩意儿根本不是外包写的,是有人披了层皮,塞了进来。”
“可惜,当时没抓到尾巴。”
“现在呢?”他猛地抬眼,瞳孔里有什么东西闪了一下。
那不是怒气,也不是焦躁。
是货真价实的恐惧——被逼到死角、退无可退的动物才会有的眼神。
“现在?”我向前挪了半步。
“现在证据自己走到我面前了。”
他肩膀抖了一下。
“你从昨晚开始,就在等我回来找你,对吧?”
我的声音放得很轻。
“故意不接电话,故意整晚不见人影……你等的就是这个。”
他喉结滚动,没出声。
“等我主动把操作记录翻出来。”
我补上了最后半句。
空气里只剩下他粗重的喘息,和冰箱压缩机沉闷的嗡鸣。
我接过他的话,指尖轻轻摩挲着温热的咖啡杯壁。
“如果你昨晚没有去查入侵路径。”
“如果你没有发现入侵的起点是那台开发服务器。”
“如果你没有发现入侵者用的账号,就是三个月前系统更新时被提权的那个账号——”
我抬起眼睛,看着他。
“我今天什么都不会说。因为没有证据。”
“可你自己查出来了。”
“你亲手把证据,交到了自己手里。”
我放下杯子,陶瓷底座碰在桌面上,发出清脆的声响。
“你比谁都清楚。昨晚那场攻击的根源,就是三个月前你强行要求合并的那段代码。”
赵志强的肩膀猛地一缩。
他往后退,后背撞上厨房门框,发出沉闷的撞击声。
嘴张开了,又合上。
嘴唇在抖,下巴在抖,连垂在身侧的手指都在轻微地痉挛。
那个总是昂着头的技术组长不见了。
现在站在这里的,是个被剥开所有伪装、连呼吸都变得艰难的人。
客厅传来周芸的声音,带着迟疑。
“你们在说什么?”
她往前挪了半步,目光在我和赵志强之间来回移动。
“赵组长,你的意思是……昨晚系统故障,是你三个月前埋下的隐患?”
赵志强没有回答。
他抬起手,手掌重重地盖住整张脸。
手指插进油腻的头发里,用力地抓挠,仿佛要把什么东西从头皮深处挖出来。
过了很久。
手慢慢放下来。
他抬起头,眼眶红得吓人,眼白里布满血丝。
“不是我写的。”
赵志强的声音像砂纸磨过铁皮,每个字都带着撕裂感。
“那段代码……是有人让我合并的。”
周芸往前倾了倾身:“谁?”
赵志强看向我。他的目光在灯光下晃动,像水面上漂着的油渍,浑浊又黏稠。他咽了下喉咙,喉结上下滚了滚。
“李建国。”
他说得很轻。
轻得像一片碎玻璃,掉在厚地毯上。
客厅里只剩下呼吸声。
楼上的钢琴又响了。还是《致爱丽丝》,还是那几个错音——第三小节总按成降B,第五小节漏了半拍。琴声从楼梯缝里漏下来,在沉默的空气里一圈圈荡开。
我端起茶杯。
茶水早就凉透了,表面浮着一层薄薄的油光。我喝了一口。苦味混着铁锈味冲进喉咙,我皱着眉咽下去,连茶叶渣都嚼碎了吞掉。
喉咙里的干涩感缓解了些。
“赵组长。”我把杯子放回台面,瓷器碰出清脆的响声,“你打算怎么办?”
赵志强盯着自己的手。
他的手在抖。
“我不知道。”他重复了一遍,声音空洞得像被掏空的树干,“我真的不知道。”
“HR已经在准备我的纪律处分了。”我说,“但他们不知道事故根源是什么。你是技术组组长——”
我停了一下。
“你的报告,会决定整件事的定性。”
内部入侵,还是外部攻击?
员工疏忽,还是管理失职?
或者……是更严重的问题?
赵志强没吭声。
他靠在厨房门框上,背脊贴着木头,整个人像被抽了脊梁骨。晨光从窗外漫进来,越来越亮,把他眼角的纹路、鬓角新冒的白茬照得清清楚楚。他才三十一,看着像四十岁的人。
“韩林。”他声音发干,“你到底想干什么?”
“让该负责的人负责。”
“不是我。”我补了一句,“也不是你。”
“你疯了。”赵志强猛地直起身,语速快得发颤,“你以为你是谁?李建国做了八年!董事会一半是他的人,客户全捏在他手里!你一个二十六岁的码农,年终奖都拿不到——”
“我没说要跟他斗。”
“那你什么意思?”
我走到窗边,看着楼下开始拥堵的早高峰。
“昨晚十一点,我在家看了部电影。”
赵志强盯着我。
“里面有句台词。”我转回身,“说得挺对——当你发现自己在一条沉船上,该做的不是拼命舀水。”
我顿了顿。
“是跳船。”
赵志强僵在原地。
他盯着我,眼里的血丝像蛛网,缠着恐惧、愤怒、困惑,还有一丝他自己都不愿承认的东西——那东西亮得扎眼,像沉船前最后瞥见的灯塔。
“你想拖我一起死?”他声音发干。
“船在沉。”我移开视线,“跳不跳,是你的事。”
玄关传来钥匙转动声。
门开了,沈砚拎着两袋早餐进来,塑料袋窸窣作响,油条和豆浆的热气糊满了塑料膜。他弯腰换拖鞋,抬头看见客厅里的周芸,又瞥见厨房门口的赵志强,动作顿了一下。
“哟,来客了。”他把早餐放上餐桌,搓了搓冻红的手,“林哥,你朋友?早饭买多了,一起?”
“不用。”赵志强从厨房走出来,动作像生锈的发条玩具。他蹲在玄关系鞋带,手指抖得厉害,第三次才把结打好。
起身时,他回头看了我一眼。
“你今天来公司吗?”
“来。”
“几点?”
“十点。”
他没再说话,拉开门走了。楼道里的穿堂风灌进来,吹得餐桌上的塑料袋哗啦作响。
他的脚步声在楼道里回响,一步,两步,渐渐弱下去。
电梯“叮”的一声,门开了,又合上。
周芸还站在客厅中央。
她转过头,嘴唇动了动,终究没说出什么。
然后她弯腰,从鞋柜里抽出那双米色平底鞋,蹬上,拉开门就追了出去。
门“砰”地关紧,震得玄关的挂画轻轻一晃。
沈砚举着半根油条,僵在餐桌边。
他腮帮子鼓得像仓鼠,看看空荡荡的门口,又看看我。
“林哥,”他费力地咽下一口,油条屑掉在桌布上,“这……唱哪出啊?”
“没事。”
我走过去,从他手里那个皱巴巴的塑料袋里也抽了一根。
油条刚炸出来不久,外皮酥脆,咬下去“咔嚓”一声,甜腻的糖霜粘在舌尖。
“公司有点麻烦。”
“麻烦?”沈砚把剩下的油条全塞进嘴里,含糊地问,“啥麻烦能让人大清早追出去?”
“船要沉了。”
他眨眨眼。
一小截油条从他嘴边掉下来,在白色桌布上滚了半圈。
“……哈?”他眉头拧得能打结,“你们公司不是写代码的吗?哪来的船?代码船?沉海底了?”
我没接话。
吃完油条,喝完那杯凉透的豆浆,我进了卫生间。
热水劈头盖脸浇下来,皮肤渐渐泛红。
昨晚蜷在沙发里睡的酸痛,被水流一寸寸冲散。
镜子上蒙着雾气,我用手抹开一道。
刮胡刀在下巴上移动,泡沫一点点消失。
然后我看见了自己嘴角——很淡,但确实在。
一丝笑。
我换了身干净衣服,把手机从飞行模式调回来。
屏幕亮起的瞬间,消息提示像炸开的烟花。
微信、短信、邮箱——通知栏挤得密密麻麻。
我扫了一眼,没点开任何一条。
手机揣进口袋,背包甩上肩,推门出去。
地铁车厢连接处晃得厉害。
我单手抓着吊环,另一只手划开屏幕。
昨晚的新闻推送还挂着:**“某知名软件服务商系统瘫痪十小时,多家企业业务停摆”**。
点进去,正文没点名,可每个细节都对得上。
文章末尾引了段“业内人士”点评:
“这次事故暴露了该公司在安全管理和技术储备上的严重漏洞。”
我截了图,存进相册。
地铁到站的广播响了。
我跟着人潮涌出闸机,走上那条熟悉的街道。
天色比昨天更沉,云层压得很低,像蘸饱了水的灰棉絮。
空气干冷,吸进鼻腔像有细小的冰碴在刮。
写字楼大堂空荡荡的。
保安大叔在前台后面打盹,听见脚步声掀了掀眼皮。
他看了我一眼,又合上了。
刷卡过闸机时,指尖传来金属的凉意。
电梯旁的电子屏正循环播放宣传片。
李建国穿着熨帖的西装,对镜头露出标准微笑:“我们致力于为客户提供最可靠的技术服务。”
电梯门开了。
我走进去,按下十二楼。
玻璃门后的景象从走廊就能看清——人影晃动如沸水,有人小跑着穿过工位,有人把手机贴在耳边,几群人簇在一起,声音隔着玻璃闷闷地传出来。
像捅了蜂窝。
推开门的瞬间,嘈杂声扑面而来。
前台空着,电话听筒歪在一边,红色指示灯急促闪烁。
我往里走。
过道两侧,有人对着屏幕发呆,有人抱着胳膊低声说话,隔壁组的同事捏着手机来回踱步,鞋跟敲着地板。
周芸坐在工位上。
她双手托着下巴,盯着黑掉的显示器。
听到脚步声,她转过脸。
眼神晃了一下。
“你来了啊。”
“嗯。”
我在工位坐下,按下了开机键。
屏幕暗着,映出周芸欲言又止的脸。她盯着我,嘴唇抿了又松。
电脑风扇开始嗡嗡低鸣。
她终于站起来,椅子腿划过地板,发出短促的刮擦声。她弯腰凑近,洗发水的淡香飘过来,声音压得很低。
“韩林。”
“嗯?”
“赵组长回来以后……直接进了李总办公室。”
“多久了?”
“快一个钟头了。”她顿了顿,“门一直关着。”
我点了点头,没接话。
屏幕亮了。桌面背景是去年冬天在公司楼下拍的:积雪覆盖着街道,屋顶白得刺眼,天空是那种化雪前沉甸甸的灰。我挪动鼠标,点开浏览器。
登录内部系统。
进度条走得很慢,像在泥泞里拖行。服务器大概还没缓过劲来。
页面终于跳出来了。
一条加粗的公告钉在最上面。
标题黑体字写着:“关于12月18日系统故障的初步调查通报”。
我点开。
正文不长,三四段的样子。措辞很官方,大意是:18号晚上,公司核心系统遭到外部攻击,服务中断。技术部门连夜排查,初步锁定了来源。应急机制已经启动,也报了案。具体原因还在查,有进展会再通知。
我盯着“外部攻击”那四个字,看了好几秒。
窗外传来隐约的车辆鸣笛声。
我盯着屏幕上的“外部网络攻击”几个字,嘴角无声地弯了弯。
那笑意太淡,连邻座的周芸都没察觉。
关掉通知,我点开代码管理系统。
账号,密码,回车。
系统卡顿了几秒,弹出一个刺眼的红框。
“您的账号已被暂停使用。”
“如需恢复,请联系系统管理员。”
我对着那两行字,看了足足三秒。
然后关掉浏览器,整个人向后陷进椅背里。
双手交叠搁在小腹上,抬眼去看天花板。
那根日光灯管从昨天起就一直闪,滋啦,滋啦,没人管。
可能永远也不会有人来修了。
走廊那头传来开门声。
脚步声由远及近,拖得很慢。
赵志强低着头从会议室方向挪过来,整个人像被抽空了,直挺挺栽进组长的工位里。
他盯着黑掉的电脑屏幕,眼珠半天没动一下。
我在椅子上又坐了片刻。
起身,朝总经理办公室走。
经过茶水间时,门缝里漏出压低的嗓音。
“听说……和三个月前那次系统更新有关?”
“嘘,别乱讲。公司不是定性了么,外部攻击。”
玻璃杯底碰了一下台面,清脆的一声响。
第三个声音插进来,带着毫不掩饰的怀疑:“那韩林的账号,怎么就被冻结了?”
空气突然安静了。
三份沉默堵在走廊里。
我脚步没停。
皮鞋底敲在大理石地面上,声音很轻,但足够清晰。
走到那扇厚重的胡桃木门前,我停下。
抬手。
指节叩在门板上——咚,咚,咚。
三下,不紧不慢。
里面传来李建国的声音,隔着门板,有点闷。
“进。”
我推门进去。
李建国的办公室大得有点空旷。
整面落地窗吞掉了半面墙,窗外是挤在一起的高楼,玻璃幕墙映着铅灰色的天,云层压得很低,像要塌下来。
他的办公桌大得能打乒乓球。
一台笔记本电脑亮着,屏幕上是密密麻麻的表格。
旁边摆着个白瓷咖啡杯,杯沿沾着一点干涸的褐色渍迹,杯里的咖啡早就凉透了,表面凝着一层皱巴巴的奶皮子。
李建国坐在宽大的皮椅里。
两只手交叉搁在桌面上,手指又粗又短,指甲修剪得干干净净。
左手无名指上那枚金戒指,在顶灯光线下泛着暗沉的光。
他面前站着两个人。
王建民站在左边,双手贴着裤缝,肩膀微微塌着,脖子往前探了一点——那姿势,活像教导主任面前罚站的小学生。
HR总监陈雅琴站在右边。
深蓝色西装套裙,头发在脑后盘成一个紧实的髻,一根碎发都没有。
她手里捏着一份打开的文件夹,正侧着头,压低声音对李建国说着什么。
门轴转动的声音响起时——
三个人,六道目光,齐刷刷地转向门口。
落在我身上。
李建国抬了抬眼皮。
“韩林。”
他叫我的名字,声音平得像读天气预报。
“来了。”
正好,我们正在讨论你的事。
坐吧。
他指了指办公桌对面那把高背皮椅。
我走过去,坐下。
椅面比他的位置矮半截,我的视线刚好落在他衬衫的第二颗纽扣上。
双手搁在膝盖上,没动。
陈雅琴翻开文件夹。
纸张摩擦的窸窣声在安静的办公室里格外清晰。
她抽出一页,推过桌面。
打印的公司规章制度,其中一条被荧光笔涂成刺眼的黄色。
旁边粘着张便签,上面是几行娟秀的小字。
“韩林。”
她开口,声音像调过温度的温水。
“今天主要谈三件事。”
指尖在文件夹边缘轻轻敲了两下。
“第一,关于你昨天申诉的年终奖。”
“我们复核过了。”
“结果昨天已经邮件通知你——发放金额没有问题。”
“如果你有新证据,现在可以拿出来。”
我的目光停在那抹荧光黄上。
没说话。
她翻过一页纸。
“第二件。”
“昨晚系统故障期间,你拒绝配合紧急处理。”
指甲在某个段落上点了点。
“员工手册第三十七条。”
“紧急情况下,员工有义务配合公司应急措施。”
"你的行为已经严重违反公司制度。"
陈雅琴的声音像一把尺子,量着每个字的刻度。
"根据规定,可以记大过。"
她顿了顿,指尖在文件夹边缘轻轻一敲。
"情节严重的话,公司有权单方面解除劳动合同。"
王建民的喉结动了动。
他刚张开嘴,李建国的目光就扫了过去。
那目光很轻,轻得像一片纸,却让王建民立刻闭上了嘴。
"还有第三件事。"
陈雅琴合上文件夹,双手交叠放在上面。
她看向我时,眼睛像两潭深水。
水面平静,底下却藏着锋利的石头。
"技术部反映,你昨天离开前对系统做了异常操作。"
"故障发生前半小时,你的账号多次访问核心数据库。"
"非正常访问。"
她把这个词单独拎出来,放在空气里。
"我们需要一个解释。"
暖气片又在咕噜咕噜响。
那声音闷闷的,像有人被捂住了嘴还在挣扎着说话。
李建国一直没出声。
他只是坐着,十指交叉搁在桌上,像在审视一件需要鉴定的物品。
王建民站在旁边,额头的汗珠在日光灯下泛着细碎的光。
他不停地用袖口去擦,却越擦越亮。
我把手从膝盖上抬起来。
动作很慢,慢到能感觉到布料从掌心滑走的触感。
指尖碰到桌面时,冰凉的感觉瞬间爬了上来。
"陈总监。"
我的声音比想象中平稳。
"您刚才说的三件事——"
我停了一下,让每个字都落得清楚。
"我可以一件一件回答吗?"
“当然可以。”
“第一件,年终奖。”
我的声音平得过分,连喉头的颤动都压住了,“昨天和王总谈过了。他说我绩效是C档,按规定没有年终奖。”
我顿了顿,“这个结果,我接受。”
陈雅琴的眉毛极其轻微地抬了抬。
她大概准备了一肚子关于绩效考核的条款,等着我争辩。
我却直接熄了火。
“第二件,昨晚拒绝配合紧急处理。”
我向前倾了倾身,手肘搭在冰冷的会议桌沿上,“我想先确认,员工手册里写的‘紧急情况’,具体指什么?”
“泛指一切可能对公司造成重大损失的事件。”
陈雅琴的语速很快,像背诵课文,“系统故障、数据丢失、网络攻击……都算。昨晚的服务器宕机,完全符合定义。”
“如果这故障,”
我盯着她镜片后的眼睛,“是内部人员操作失误引发的呢?也算‘紧急情况’吗?”
陈雅琴的嘴唇抿成了一条细线。
她向后靠进椅背,指尖在桌面上轻轻敲了一下。
二十年的人力资源生涯,她见过太多面孔了。
哭闹的,拍桌子的,掏出手机录音的,搬出法律条文一条条驳斥的。
她对付过每一种。
但像我这样,平静得像在讨论别人事情的,不多。
她的指尖在桌沿停住了。
没有立刻接话。
她的目光在我脸上绕了两圈,像在检查饵料里有没有藏着倒刺。
“你想说什么?”
声音很平,平得让人发毛。
“昨晚系统瘫痪,不是意外。”
我转向王建民那边,椅子腿在地板上刮出短促的声响。
“也不是外面的人干的。”
“是三个月前,公司自己人埋的雷。”
王建民正在转笔。
笔啪嗒掉在会议记录本上。
“九月十七号,技术组那次系统更新。”
我盯着他开始泛白的指关节。
“我反对过那段代码,邮件抄送了全组。”
“您批了‘通过’。”
他猛地站起来,椅背撞到后面的白板。
“胡扯!”
声调尖得劈了岔。
“什么代码?什么后门?证据呢!”
“代码管理日志里有。”
我从口袋里抽出U盘,轻轻搁在桌子中央。
“今早我账号被封了。”
“幸好——三个月前那封审查意见的原始邮件,我还留着。”
“反对理由,驳回记录,一字没删。”
U盘的金属外壳碰着木质桌面,发出很轻的“咔”一声。
会议室里只有空调在嗡嗡响。
“需要我调出来给你们看吗?”
王建民闭上了嘴。
他的嘴唇开始发颤,下巴也跟着抖,整个人像台超负荷运转的机器,能听见内部齿轮嘎吱作响、逐个崩裂的动静。他猛地扭过头,看向李建国,眼神里全是求救的信号——可李建国没看他。
李建国在看我。
那目光沉甸甸的,像潭深不见底的水,表面平静,底下却不知道藏着什么。
“韩林,”李建国开口了,声音不高,“把邮件调出来。”
我从裤兜里摸出手机,解锁,点开邮箱。手指往下滑,找到三个月前那封。然后我把手机屏幕朝上,轻轻搁在光洁的办公桌面上,推了过去。
李建国垂下眼。
他看得很慢,一个字一个字地读,像在审阅一份至关重要的合同。读完一遍,手指又往上划了划,从头再读了一遍。
然后他放下手机,抬起了头。
视线转向王建民。
“建民,”他问,语调还是平的,却平得让人后背发凉,“这封邮件,你知道吗?”
“李总……我……”
王建民的声音卡在喉咙里,像硬生生吞了根鱼刺,咽不下去,也吐不出来。
“我不知道,”他挣扎着说,语速快了起来,“我当时真的不知道韩林提过反对意见……是赵志强,赵志强跟我说那段代码没问题,我才……我才签字批准的。我——”
“你签字批准了?”
李建国打断了他。
平静的声音里,终于透出一丝极细微的、锋利的什么东西。
“代码合并的审批流程,”他缓缓地问,每个字都像钉子,一下一下敲进空气里,“什么时候,需要你签字了?”
“技术组的代码审查,难道不该由技术组长亲自负责吗?”
“是赵志强让我签的字。”王建民的嗓音已经开始发颤,像绷紧的弦,“他说那是外包团队的紧急提交,时间卡死了,必须走加急通道,需要部门负责人签字确认。我……我没细想,就签了。李总,我真不知道那代码有问题,我发誓我不知道。”
“你签了字,你说你不知道?”
李建国笑了。
那笑容没一点温度,像手术刀划开空气。王建民脸上的血色一下子褪得干干净净。他往后退,脊背撞上冰冷的墙面,“咚”的一声闷响。他张着嘴,喉咙里发出嗬嗬的抽气声,却挤不出半个字。额头的汗珠滚下来,划过太阳穴,滴在雪白的衬衫领口,晕开一小圈深灰的湿痕。
陈雅琴原本抱着手臂站在一旁,脸上是公事公办的疏离。此刻她合上手里的文件夹,夹在臂弯,目光转向我。
她看了我几秒,眼神沉了沉。
“韩林,”她开口,声音不高,但每个字都咬得很清楚,“你刚才提到的第三件事——关于你昨天对核心数据库的非正常访问记录。现在,请你解释。”
她抬起眼。
“我昨天下午,确实进了核心数据库。”我迎着她的视线,“日常巡检时,发现一条异常日志——有个L3账号,被错配进了L4权限组。时间戳是三个月前,正好卡在上次系统更新的节点。”
我顿了顿。
“刚想往下深挖,王总的电话就来了,催我去办公室谈年终奖。”
“所以,你只是查看。”她的笔尖悬在纸页上方,“没有进行任何写入或修改操作?”
“没有。所有动作,系统日志都有记录,可以调取。”
陈雅琴低下头,在本子上迅速划了几笔。然后她侧过脸,看向李建国的方向,眉梢很轻地扬了一下——那是无声的询问。
李建国没接她的眼神。
他一直盯着我。那目光沉甸甸的,像机场安检的扫描仪,缓慢地、一寸一寸地移动,试图穿透皮肉,把藏在骨骼缝隙里的那点真实意图给照出来。
办公室里只剩下空调低沉的送风声。
“韩林。”李建国终于开口,声音不高,却压得人耳膜发闷,“你还有要补充的吗?”
“有。”
“说。”
我慢慢把搁在桌面上的手收回来,掌心贴住膝盖,坐直了背脊。
“李总,您刚才提到,昨晚的故障需要定性。”我听见自己的声音,比想象中平稳,“如果定性为外部攻击,公司需要向客户赔付,但内部……不会有人为此担责。”
“如果定性为内部管理失误,就需要有人担责。”
王建民的声音在会议室里显得很干。
“但公司可以走保险理赔,减少损失。”
他顿了顿。
“您觉得,该定为什么性质?”
李建国没接话。
他往后靠进椅背,双手交叠搭在肚子上。
婚戒在日光灯下泛着一点暗金色的光。
沉默拉得很长。
王建民在墙角挪了挪脚。
陈雅琴翻开文件夹,纸张哗啦一声,又轻轻合上。
窗外的云压得更低了,天色暗得像是傍晚。
“韩林。”
李建国终于开口。
声音又慢又沉,像老唱片机的转轴。
“你今天来公司,不是为了解释你自己的问题。”
他停了一下。
“你是来逼我做决定的。”
“我没有逼任何人。”
“你刚才说,三个月前那封邮件的备份,你留了。”
李建国身体微微前倾。
两只手放在办公桌上,十指交叉,像搭了一座桥。
“那你有没有想过——”
他抬起眼睛。
“如果这封邮件公开,会是什么后果?”
“想过。”
“说。”
“公司会面临客户和投资方的信任危机。”
我语气很平,像在读一份数据报告。
“股价会跌。”
“可能会有人因此失业。”
“但这不是我的选择造成的。”
“是三个月前那次违规操作埋下的。”
“我只是把被掩盖的事实,重新摆到桌面上。”
李建国的目光钉在我脸上。
他的眼球极轻微地颤动了一下,像老式计算机的指示灯在高速运算。嘴唇抿紧,法令纹深陷下去,几乎要割开脸颊的皮肤。八年总经理,他见过太多人,处理过太多事。可此刻他看我的样子,像在观察实验室里突然变异的样本。
“你清不清楚,”他开口,声调里那点好奇是真的,“这么干,你自己的路也断了。”
他身体前倾,手肘压在桌沿。
“没有公司会要一个公开内部文件的员工。你在亲手拆自己的桥。”
“李总,”我说,“我能问您个问题吗?”
“问。”
“如果一个人,在这公司干满一年。”
我语速很慢。
“每天加班到凌晨,周末手机不敢静音,一个人做完七个核心模块,修了上百个漏洞。”
暖气片咝咝的响声不知何时停了。
“到头来年终奖发两百八十块,还被人事威胁要记大过。”我停顿,“这样的人,本来还有什么路可走?”
办公室陷入一种彻底的安静。
窗外的风声也消失了。墙角,王建民把头埋得更低,肩膀的线条僵着。
陈雅琴的手指在文件夹边缘来回摩挲,纸张被捏出细密的褶皱。
李建国的视线钉在我脸上,连睫毛都没颤动一下。
“你想要什么?”
他的声音像生锈的齿轮在转动。
“我什么都不要。”
我听见自己的声音很平静,“该负责的人,把责任背起来就行。”
他盯着座机电话看了三秒,才伸手按下快捷键。
“让赵志强过来。”
经过王建民工位时,他猛地抬头。
嘴唇动了动,最终什么也没说。
走廊的灯管滋滋响着,在瓷砖上投下晃动的影子。
我坐下,开机。
登录界面顺畅地跳了过去。
代码管理系统的操作日志里——
三个月前那条合并记录的操作人,已经换成了赵志强。
我松开鼠标,后仰靠进椅背。
关掉网页,我整个人陷进椅背里。
呼出的那口气在空气里凝成白雾,慢吞吞往上飘,最后碎在头顶惨白的灯光里。
手机在桌面上震了一下。
屏幕亮起,沈砚的名字跳出来:
“林哥,新闻我刷到了,你们公司是不是出事了?你人没事吧?”
我按着键盘回他:“没事,船快沉了,我在找救生艇。”
“哈?什么救生艇?你说清楚点啊!”
我没再回,把手机屏幕朝下扣在桌上。
窗外天色已经暗透了,云层压着对面写字楼的楼顶,灰蒙蒙的,像要下雪。
茶水间传来咖啡机的蒸汽声,噗嗤噗嗤的。
几个同事压着嗓子说话,声音断断续续飘过来:
“看见没?赵志强被叫进李总办公室了。”
“什么事啊这么急?”
“不知道,但王总刚才从里面出来的时候,脸都是绿的。”
“是不是跟昨晚那件事有关?”
“嘘——别问了,领导的事少打听。”
说话声低下去,彻底被咖啡机的噪音吞没了。
我盯着窗外那片灰蒙蒙的天。
在等什么?
等赵志强从李建国办公室里出来?
等这场雪终于落下来?
还是等一个……我自己都没想明白的答案?
手机又震了一下。
这次不是沈砚。
屏幕上跳出一串没有备注的数字,尾号四个数我很熟悉——赵志强的号码。拇指悬在接听键上停了两秒,才按下去。
“韩林。”
他的声音像砂纸磨过生锈的铁管,沙哑得几乎听不出原声。
“你赢了。”
嘟。
忙音短促地撞进耳膜,一声,两声,三声。像心率监视器上最后那几下跳动。我把手机扣在桌面上,转头看向窗外。
第一片雪花正巧飘下来。
它很轻,被风托着打了个旋,最后贴在冰冷的玻璃上,迅速化成一滴水痕。
然后第二片,第三片。
密密麻麻的雪开始往下落。
下午三点,十二楼最大的那间会议室。
李建国站在投影幕布前,双手撑在长桌两端。暖气开得太足,空气里有股干燥的焦味。有人把西装外套搭在椅背上,衬衫袖口卷到肘部。有人不停地拧开矿泉水瓶,喝一口,又拧上。角落里传来压抑的咳嗽声。
长桌两侧坐满了人。
技术组的老王在转笔,产品部的小刘低头刷着手机屏幕,运营部的张姐捏着会议记录本边缘,指节微微发白。粗略数过去,四十多号人。技术骨干,部门负责人,核心员工——能来的都来了。
我和周芸坐在长桌最末端的角落。
她侧过身,压低声音:“你猜这次要宣布什么?”
我没接话。
只是看着李建国松开撑在桌面的手,直起身,拍了拍话筒。
她手里的笔尖在纸上不停地打转。
一个圈,又一个圈,叠成了密密麻麻的乱麻。
一整天了,她几乎没开过口。
每次抬眼望过来,眼神里总藏着点什么——小心翼翼的,话到嘴边又咽回去。
李建国站在长桌尽头。
深灰色西装,领带打得笔挺,头发梳得纹丝不乱。
面前的笔记本电脑亮着,投影屏上是那则公告:《关于12月18日系统故障的初步调查通报》。
他看起来不像刚熬过一场危机,倒像准备登台演讲。
可我知道不是那么回事。
他伸手去拿话筒时,手指在微微发抖。
隔得远根本注意不到,但我坐的位置正好看得清。
他握得很紧,指节都泛了白,仿佛攥着的不是话筒,是根救命的绳子。
“各位同事。”
他的声音从扬声器里传出来,掺着细微的电流杂音。
“临时召集大家,是为了通报昨晚系统故障的最新进展。”
顿了顿,他又开口。
“在通报之前,我代表管理层,感谢所有通宵参与应急处理的同事。”
“你们的努力,大家都看在眼里。”
他停顿了一下,目光缓缓扫过会议室。
在技术组的方向,他停住了。
赵志强坐在第一排,低着头,两只手紧紧绞在一起,压在桌面上。
从早上走出李建国办公室到现在,他几乎没换过姿势,只偶尔端起水杯,抿一口,又放下。
“经过技术部门排查,昨晚的系统故障,源头已经找到了。”
李建国的声音很沉。
会议室里响起一阵低低的骚动,像角落里窜过的风。
“是三个月前一次系统更新里,埋下的代码漏洞。”
他按下键盘。
投影屏亮了,一张时间线图表跳出来:九月十七日,系统更新;十二月十八日,攻击发生。
三个月,被几个红点标得清清楚楚。
图表旁边贴着一张操作记录截图。
“操作人”那一栏,有个名字被红圈死死圈住——赵志强。
“关于这次事故的责任……”
李建国吸了口气,目光从屏幕移回众人脸上。
“技术组组长赵志强,在代码合并过程中,未按规定执行安全审查。”
他的话音一字一顿。
“导致带漏洞的代码上线。”
“对此,公司认定,他对本次事故负有直接责任。”
经公司研究决定,免去赵志强技术组组长职务,调离技术岗位,留岗查看三个月。
李建国的声音透过麦克风,在会议室干燥的空气里砸开。
潮水般的议论声轰然涌起。
椅子腿刮擦地砖,刺耳地响。有人猛地站起,带倒了桌上的矿泉水瓶。水渍在会议记录上无声地洇开。好几道目光齐刷刷钉在赵志强后背上,他坐着的那片区域,气压低得吓人。
周芸手里的笔滚落,在木桌面上弹了一下,那点微弱的声响瞬间被吞没。
赵志强的头始终没抬。
他盯着自己紧握的拳头,指节捏得发白,手背上青色的血管清晰可见。脖颈侧面,一道筋络在皮肤下急促地跳动,一下,又一下。
“安静!”
李建国提高了音量,手掌重重往下一按。
“都安静!让我把话说完!”
嗡嗡声勉强压下去几分,但没散。空气里飘着窃窃私语,像无数细小的火星,在紧绷的沉默底下暗暗烧着。
李建国清了清嗓子,目光扫过全场。
“除了对赵志强的处理,公司还将对相关部门的管理责任,进行追查。”
李建国还在继续。
“部门经理王建民,在加急审批流程里,没有履行审核职责,直接签字同意。”
他顿了顿,目光扫过前排。
“对本次事故,负有管理失职的责任。”
会议室里响起一阵交头接耳的嗡嗡声。
“公司决定,免去王建民部门经理职务,降为普通员工,留岗查看三个月。”
这次的声音更大了。
王建民就坐在前排靠走道的位置。
听见决定时,他肩膀猛地塌了下去,整个人像被抽了气的皮球,软绵绵地陷进椅子里。
脸色从红转白,最后变成一片死灰。
嘴唇动了动,没发出声音。
旁边的人赶紧伸手扶住他的胳膊——怕他真从椅子上滑到地上去。
角落里忽然响起两下掌声。
很轻,很突兀。
接着,又有几个人跟着拍起来。
掌声不大,但很密,噼里啪啦的,像雨点砸在铁皮棚顶上。
这掌声不是给谁的。
就是给这个结果。
王建民在这公司当了五年部门经理。
压过多少人,抢过多少功,在座的人心里都清楚。
今天他倒了。
不少人觉得胸口那口气,终于顺了。
可我注意到一件事。
李建国从头到尾,没提别的名字。
除了赵志强和王建民,再没第三个人。
三个月前那次系统更新的代码,到底是谁让赵志强合并的?
赵志强亲口说过。
是李建国本人。
但李建国在刚才的通报里,只字未提他自己。
“最后,关于昨晚事故中部分员工拒绝配合应急处理的问题。”李建国的声音停了停,目光像探照灯般扫过全场,最终稳稳落在我坐的角落,“公司经过详细调查,认为该员工的行为并未违反任何规章制度。”
会议室的白炽灯照得人皮肤发烫。
“因为事故发生时,该员工已完成当日全部工作任务。”他扶了扶眼镜,“事故根源也与其职责范围无关。”
有人轻轻抽了口气。
“公司对该员工在此次事件中受到的误解——”李建国顿了顿,每个字都咬得很清楚,“表示歉意。”
四十多道视线同时转过来。
那些目光扎在皮肤上,有的带着好奇的打量,有的藏着隐约的敌意。周芸在桌子底下碰了碰我的手腕,指甲刮过表带。
“他居然道歉了?”她声音压得极低。
我没动。
主席台上,李建国正看着我。那眼神像长辈看着闹脾气的孩子,温和里透着审视。他刚才那番话,表面是替我洗清嫌疑,实际上——
是在告诉我,他清楚我手里攥着什么。
那封邮件。
他知道我能把整件事掀翻。
现在这个台阶,是让我闭嘴的代价。
会议室里的掌声再次响起。
这次的掌声比刚才更响。
也更刺耳。
我能感觉到有人在看我。
有人在交头接耳。
有人低头摆弄手机——大概是在群里传播消息。
我坐在长桌末端。
像一块被丢进水里的石头。
激起了无数涟漪。
自己却沉在底部。
沉默无声。
会议结束。
人群陆续散去。
我起身准备离开时,袖子被人拉住了。
“韩林。”
是周芸的声音。
她的声音很轻,但抓着我袖子的手很用力。
“你等一下。”
我重新坐下。
她松开手,低头看着桌面,两只手绞在一起。
手指不停地绞着衣角。
那件浅灰色衬衫的下摆已经被她揉得不成样子。
她犹豫了很久。
久到会议室的灯自动熄灭了一半。
“三个月前,”她终于开口,声音压得很低,“九月十七号那天,我加班到很晚。”
我点点头,等她继续。
“大概十一点多,”她说,“我准备走的时候,路过赵志强的办公室。”
她的手指绞得更紧了。
“门没关严。”
“我看到他坐在里面。”
她停顿了一下。
“对面还坐着一个人。”
“谁?”
“李建国。”
我没说话。
窗外的天色暗了下来。
“他们在说什么?”
“我听不太清,”她摇头,“只听到几句话。”
周芸的嘴唇开始发颤,指尖无意识地摩挲着咖啡杯的边缘。
“李建国当时就站在办公室门口,”她的声音压得很低,“他说那段代码必须月底上线,不管用什么方法。”
窗外传来隐隐的雷声,她肩膀瑟缩了一下。
我安静地等着。
“赵志强小声说,韩林在审查记录里提了反对意见,不好办。”
她顿了顿,指甲在桌面上划出一道浅痕。
“李建国回他,那就想办法绕开韩林。”
咖啡已经凉了,表面的奶沫塌陷成灰白的斑点。
“然后他们……”周芸突然停住,目光飘向墙角,“然后他们就凑得更近,后面的话……我一个字都听不清了。”
她说完这句话,整个背脊垮了下来,像根绷得太久终于断掉的弦。
长长吐气的时候,我看见她锁骨下方那块皮肤在微微起伏。
她终于抬起眼睛看我。
眼眶里没有泪,只有一层湿漉漉的光,像雨天蒙着雾的玻璃窗。
“我本该早点告诉你。”
声音哑了。
“但我害怕。怕得罪李建国,怕丢了工作。”
她伸手去够纸巾,却碰倒了糖罐。
“房贷、孩子学费……我不敢冒这个险。”
糖粒撒了一桌,细碎得像她此刻的呼吸。
“能理解吗?”
“能。”
“真的?”
“真的。”
她眼眶瞬间红了,却猛地仰起脸,用力眨了几下眼睛。
喉结滚动,把什么咽了回去。
然后她抓起那张画满圈的白纸,双手将它揉成一团。
纸团在她掌心越攥越紧,指节泛出青白色。
“现在怎么办?”
她盯着那个纸团,像盯着一枚即将引爆的炸弹。
“李建国把责任全推给赵志强和王建民了,自己干干净净。”
纸团开始微微发抖。
“你要是公开那封邮件……他会说那是伪造的。”
她终于看向我,嘴角扯出一个不像笑的弧度。
“或者他会说,是赵志强在审查记录里做了手脚。”
“他当了八年总经理,在公司里根基太深,你斗不过的。”
周芸的声音压得很低,手指无意识地揉皱了纸巾。
“我知道。”
我听见自己的声音平静得有些陌生。
“那你打算怎么办?”
她往前倾了倾身,椅脚在地板上刮出短促的摩擦声。
我没接话。
起身时,西装袖口蹭过桌沿。
手机屏幕在掌心亮了一瞬,又被拇指按灭。
走到会议室门口,我回头看了一眼。
周芸还坐在那儿。
那团纸巾在她指间越捏越紧,指节泛白。
她仰着脸看我,睫毛在顶灯下投出细碎的影子。
“周芸,谢谢你告诉我这些。”
我握住冰凉的金属门把。
“接下来的事,你别管了。”
“韩林——”
她突然站起来,椅子向后撞上墙壁。
“放心。”
我拉开门,走廊的光涌进来。
“我不是一个人在划船。”
走廊里散着还没走远的人。
三两个聚在窗边,烟灰缸里堆着半熄的烟蒂。
“赵志强算是完了……三年内别想往上走。”
“王建民更惨,经理直接撸成专员,工资对半砍。”
有人咂了下嘴。
“他上个月刚换了学区房吧?”
我从他们身边经过。
有人抬眼瞥我,话音立刻低下去。
“韩林这回算是因祸得福?”
“福什么?年终奖飞了,还得罪了王建民。”
另一个声音从茶水间飘出来。
“赵志强倒了,王建民可还活着呢。”
“以后谁敢用他?”
电梯数字缓慢跳动。
我盯着金属门上映出的自己——领带歪了半寸。
指尖按下电梯钮,金属门滑开。
我走进去,按亮一楼。
门缓缓合拢,把走廊里那些压低的议论声截断在外。
光亮的门板映出一张脸,模糊,扭曲,和昨天没什么两样。
可我知道,有些东西彻底变了。
昨天跨出这门时,我还是那个只拿了二百八十块年终奖的普通程序员。
今天再跨出去,我成了让两个顶头上司丢了饭碗的人。
电梯开始下降。
红色数字一格一格跳动:十二、十一、十、九……
手机在口袋里震了一下。
我掏出来,屏幕亮着,是银行的短信。
「账户收入人民币9,000.00元。附言:年终奖补发。」
八、七、六。
又一条短信挤进来,来自公司财务系统。
「您的11月工资已发放,请查收。」
我点开详情。
数字比往常缩水了近一半。
备注栏里冷冰冰地写着一行字:「扣除绩效工资50%,原因:12月18日拒绝配合公司应急处理。」
五、四、三。
我盯着这两条消息,一条补发,一条扣罚,金额几乎扯平。
李建国这一手玩得真漂亮——公开道歉,补发奖金,面子里子都做足了。
钱没多给,却让所有人都觉得,他仁至义尽。
电梯门滑开。
我踏入一楼大堂。
玻璃门外,雪下疯了。路灯、车顶、人行道——全被埋进厚厚的白色里。吸一口气,冷气像冰针扎进肺管子。
推开玻璃门,踏上台阶。雪片落在发梢、肩头、睫毛上,凉意一闪,就化了。
我从兜里摸出手机。
指尖在屏幕上划了几下,停在一个没存名字的号码上。
拨过去。
只响两声。
“喂?”那头传来男人的声音,稳得像块石头。
“陆律师,”我开口,寒气让声音有点发僵,“我是韩林。”
电话那头静了一瞬。
“韩林。”他再开口时,声线里掺进一点很淡的笑意,“难得。找我,是又摊上事了?”
“不是事。”我望着前面乱扑的雪片,“是机会。”
“您上回提过,遇上公司踩劳动法红线,可以找您。”我顿了顿,“那如果……公司拿绩效当借口,砍了年终奖,事后又换个名目,把补发的钱变着法儿扣回去——”
台阶下的雪被风吹得打旋。
“这算违法吗?”
“算。”
陆律师的声音从听筒里传来,干净得像冰面裂开第一道缝。
“但需要证据。”
他顿了顿。
“你有吗?”
“有。”
我握紧手机,雪花落在屏幕上,瞬间化成水痕。
“什么证据?”
“银行到账短信,工资系统后台截图,还有——”
我吸了口气,冷空气刺得喉咙发疼。
“今天下午全员会议的录音,他们当着整个部门念的处理决定。”
电话里安静了片刻。
能听见他那边纸张翻动的轻响。
“就这些?”
“不止。”
我抹掉睫毛上的雪。
“三个月前系统更新的代码审查邮件,服务器日志备份,全在手里。”
陆律师笑了。
很低的一声,像石子投入深井。
“韩林。”
他叫我的名字。
“你准备了多久?”
我没回答。
抬头看向十二楼。
那排窗户还亮着,隔着纷扬的雪,光晕糊成一片暖黄色。
像蜂巢。
密密麻麻的格子间里,还有人对着屏幕敲键盘,有人端着咖啡穿梭在过道,有人把烟灰弹进盆栽。
而我站在街边,雪已经埋到鞋面。
“我想申请仲裁。”
“可以。”
他答得很快。
“流程走完至少三个月,对方有完整的法务团队。”
笔尖划过纸面的沙沙声传过来。
“你确定要一个人扛?”
雪花扑在脸上,冰凉。
我眨了眨眼。
“确定。”
“我想好了,但不是劳动仲裁。”
“那是什么?”
雪花沾上我的唇,冰得我一颤,舌尖尝到一丝微涩的凉。我深深吸进一口寒气,肺里像结了冰碴,然后慢慢吐出我的计划。
陆律师那头安静了。
静得我只听见自己睫毛上雪片融化的细微声响。我甚至把手机从耳边拿开,屏幕亮着,通话计时还在跳。
“韩林,”他终于开口,声音沉得像压了雪的松枝,“你知道这事要是成了,会怎么样吗?”
“知道。”
“不止你一个人,”他顿了顿,纸页翻动的沙沙声透过听筒传来,“会有人丢饭碗的。”
“我怕。”我盯着远处越来越模糊的楼影,“但我更怕的是,往后每年,都得对着两百八十块钱说‘新年好’。”
他那边又安静了。
只有纸张摩挲的声响,一下,又一下。
“明早十点,”他说,“带齐东西,来我办公室。”
电话挂断。
雪更密了,白茫茫地盖下来,街对面的招牌只剩个轮廓,像宣纸上洇开的淡墨。我把手机塞回口袋,手指冻得有些僵。
鞋底碾过新落的积雪,发出细碎的咯吱声。
那声音脆得短暂,像冬夜里最后一根还在颤动的弦。
我走到广场边缘时,回头望了一眼。
十二楼那间最大的会议室,灯刚灭。
整片玻璃幕墙暗下去,像突然闭上的眼睛。
周一早晨,公司门厅的暖气开得很足。
前台的姑娘已经回来了,正低头整理访客登记簿。
听见脚步声,她抬起头——嘴角往上提了提,又很快抿住。
那种笑我见过太多:想打招呼又怕说错话,最后卡在喉咙里。
我朝她点点头,侧身刷开闸机。
过道里的盆栽绿得发假。
几个同事从隔间探头,目光扫过我的肩膀,又迅速缩回去。
周芸的工位在斜对角,她盯着屏幕右下角——
那里有个聊天窗口在闪,蓝光映在她镜片上,一跳一跳的。
我坐下,开机,输入密码。
系统日志一行行弹出来,光标安静地闪烁。
赵志强调岗之后,技术组暂时归我管。
上周五的会上,李建国只说了句:“近期工作由韩林协调。”
没有任命文件,没有正式通知。
像把钥匙递给你,却不告诉你它能开哪扇门。
又是他惯用的伎俩——让你拼命干活,却随时准备换掉你。
我点开数据库管理后台,指尖在键盘上停顿了片刻。
屏幕冷光映在脸上,凌晨的办公室安静得能听见机箱运转的嗡鸣。
昨晚的运行日志一条条跳出来。
系统已经恢复正常了,加密数据在技术组连熬三个通宵后逐渐解开。
大部分客户服务重新亮起绿灯。
但有些东西永远找不回来了——那些被加密后又覆盖写入的数据库碎片,像摔得太碎的玻璃,怎么拼都有裂痕。
我的目光忽然停在某一行记录上。
凌晨两点十五分,一个L4管理员账号对核心数据库做了全量备份。
备份地址指向外部云存储服务器。
这个时间点……不对劲。
常规备份应该在四点,那时候只有值夜班的运维盯着。
两点?大部分人都趴桌上补觉呢。
我顺着那个账号往前翻操作记录。
过去三天,它分七次把核心数据分批导出去。
每次量都不大,刚好卡在系统告警的阈值下面。
七次加起来,几乎搬空了公司最值钱的家底。
我截了图。
手指在鼠标上按得有些发白,然后拖进一个加密文件夹,设了两层密码。
文件夹命名的时候,我敲了三个字母:B-A-K。
备份的缩写,也是“背后”的拼音首字母。
然后我点开代码管理系统,调出三个月前那段代码的完整操作日志。
屏幕光映在眼镜片上。
日志列得很清楚——每次修改,每次审查,每次合并。
时间戳精确到秒,操作人姓名工整地挂在每条记录后面。
我挪了挪鼠标。
从早上九点到中午十二点,我把所有日志整理成带时间轴的报告。
每个操作记录后面,我都附了对应的权限变更和审批流程。
保存文档的时候,指尖在键盘上停了两秒。
中午十二点整。
我端着保温杯去茶水间接水。
路过第三会议室,玻璃门关着,百叶窗拉下一半。
能看见里面坐着几个人。
李建国坐在主位上,背挺得有点僵。
陈雅琴在他旁边,手里转着一支笔。
对面是几个生面孔,西装,笔记本电脑翻开,文件夹摊在桌面上。
像律师。
或者审计。
我收回视线。
茶水间里飘着咖啡味。
两个产品部的同事靠在料理台边,声音压得很低。
“李总这次……”
“董事会那边……”
他们看见我进来,同时收了声。
杯子举到嘴边,朝我扯了扯嘴角。
然后一前一后快步走出去,脚步声在走廊地毯上闷闷地响。
门轻轻合上。
我刚才听见了几个词。
“问责。”
“索赔。”
“七位数。”
热水从饮水机流进保温杯,咕嘟咕嘟响。
我拧紧杯盖。
站了一会儿。
喝了一口。
热水顺着喉咙下去,在胃里慢慢摊开,暖意从里往外爬。
窗外的雪还在下。
比前几天小了些,细碎的雪粒扑在玻璃上,沙沙的,像谁在耳边磨着砂纸。
下午三点,邮箱提示音跳了出来。
发件人:陈雅琴。
收件人:我。
抄送栏里,李建国的名字安静地挂着。
标题是“关于技术组临时工作安排的确认”。
我点开。
正文很短。技术组组长空缺,公司将通过内部竞聘产生新负责人。竞聘完成前,日常工作由我继续协调。
邮件末尾,多了一行字。
“竞聘预计于本月内完成,请做好准备。”
我盯着那行字。
屏幕的光映在眼镜片上,有些刺眼。
内部竞聘。
这四个字在舌尖滚了一圈,泛出点熟悉的涩味。在职场里泡久了的人都明白,它有时候是擂台,更多时候,是戏台。锣鼓敲得震天响,角儿却早就内定好了。
陈雅琴这封邮件,不是在发通知。
是在划界限。
我关掉页面。
文档里,未完成的报告光标还在闪烁。
四点十分,座机响了。
铃声在安静的隔间里显得特别尖。
我拿起听筒。
“韩林。”是陈雅琴的声音,平直,听不出情绪,“有空吗?来一下小会议室。”
“现在?”
“对,现在。”
电话挂断的忙音短促地响了一声。
我保存报告,加密。动作很慢,像在拖延什么。
然后起身。
穿过格子间时,能感觉到几道视线若有若无地扫过我的后背。
小会议室在走廊尽头。
门虚掩着。
小会议室在走廊尽头。
十平方米,一张圆桌,四把椅子。
平时用来面试或一对一谈话。
我推门进去时,陈雅琴已经坐在里面了。
她面前摊开一份文件,手边咖啡一口没动。
圆桌对面还坐着一个人。
三十出头,深蓝西装,无框眼镜。
脸很瘦,没什么表情。
他双手交叉放在桌上,手指长,指甲干净。
面前一台超薄笔记本亮着屏幕。
文档封面标题是:**补偿协议**。
陈雅琴指了指男人对面的椅子。
“韩林,这位是公司法务部的张律师。”
她的声音还是职业化的温和,但今天多了一层东西。
很薄,能感觉到。
像汤里悄悄多放了一勺盐。
“今天找你,是想谈谈你年终奖和绩效工资的后续处理。”
我拉开椅子坐下,双手放上桌面。
目光停在陈雅琴脸上。
“陈总监,您说。”
“是这样。”
她微微前倾,指尖在文件边缘轻点了一下。
“公司复核后认为,你在12月18日系统故障期间的行为……确实存在一些争议。”
陈雅琴翻开面前的文件,指尖轻轻点在一行字上。
“公司最初的处理决定,是扣罚你50%的绩效工资。”
她顿了顿,抬眼看了看我。
“作为你不配合应急处理的处罚。”
办公室里很安静,只有空调发出轻微的嗡鸣。她将文件朝我的方向推近了些,纸张摩擦桌面发出沙沙的声响。
“但考虑到你在故障排查过程中提供的配合……”
她又停顿了一下,似乎在斟酌用词。
“以及你平时的工作表现,公司决定取消这次处罚。”
她的指甲修剪得很整齐,指尖在“取消处罚”四个字下方划了一道看不见的线。
“补发被扣除的绩效工资。”
我接过文件。那是一份正式的决定书,人力资源部的公章盖得很端正,墨迹清晰。底部有李建国的签名,笔锋凌厉,最后一笔拉得很长。
陈雅琴双手交叠放在桌面上。
“另外,关于年终奖的事。”
她的语气平稳得像在念一份操作手册。
“公司也已经补发了。”
她身体微微前倾,声音压低了些。
“所以到现在为止,你该拿的钱,都已经拿到了。”
文件在我手里有些发凉。我低下头,一行一行地读。读得很慢,每个字都像要拆开来看。
决定书的措辞很讲究。
只说“取消处罚”。
只说“补发工资”。
没有“错误”两个字。
没有“道歉”两个字。
这是一份经过反复推敲的文件。每个字都像精心摆放的棋子,确保不会留下任何对弈的破绽。
我抬起头。
“陈总监。”
纸张的边缘被我捏得有些发皱。
“我理解。”
陈雅琴的肩膀微微松了下来,嘴角向上弯了弯,露出那种标准到能放进员工手册里的笑容。她大概觉得,这事儿就这么翻篇了,我认了,公司赢了。
“那就好,那就好。”她终于端起了那杯一直没动的咖啡,抿了一口,“韩林,你是个聪明人。你的能力,上面都看在眼里,以后机会多的是。”
“陈总监。”
“嗯?”
“我还想请教一件事。”我的声音不高不低。
“你说。”
“关于12月18号那场系统故障,公司最后定的性,到底是什么?”
她手里的杯子,悬停在了嘴唇和桌面之间。
很短。非常短的一瞬。
杯子落回桌面,发出一声清脆的“咔哒”。
“通报不是发了吗?外部恶意攻击。”
“外部攻击,利用的是三个月前系统更新时埋下的漏洞。”我接得很快,几乎没给她换气的空当,“通报里说,漏洞是赵志强审查不严导致的。我就想问,赵志强当时,为什么非要合并那段有问题的代码?”
我停顿了一下,看着她。
“他收到过任何……来自上面的指令吗?”
陈雅琴脸上的笑容,像被橡皮擦擦掉了一样,干干净净。
她看着我。眼神里那点职业性的温和,褪得一点不剩。
换上了一样东西。
冷冰冰的,带着棱角。
二十年HR生涯,她什么弯弯绕绕没见过。
我话音刚落地,她就听出了弦外之音——这不是提问,是敲打。
“韩林,”她声线陡然降温,“你想表达什么?”
“只是请教个问题。”
“今天不讨论这个。”
“那今天讨论什么?”
暖气片突然咕噜作响,在寂静的会议室里格外清晰,像谁的肠胃在空虚地蠕动。
张律师始终沉默,指尖在触摸板上偶尔滑动,留下看不见的轨迹。
陈雅琴深吸一口气,重新拾起文件。
翻到末页时,纸张发出清脆的“哗啦”声。
那里别着一份独立协议,纸更厚,边缘带着细密的齿孔。
她把纸推过来,指甲在标题处压了压,留下浅浅的月牙印。
“公司请你来,”她又换上那种职业性的温和,这次却像糖衣裹得太厚,甜得发腻,“除了撤销处分,还有件事想商量。”
指尖点了点协议,“你先看看这个。”
我低头,目光落在纸面上。
标题那行加粗的黑字格外刺眼——“经济补偿及离职协议”。
正文不长,一页纸,密密麻麻的条款像蚂蚁爬满糖块。我逐字读过去,指尖在纸沿无意识地摩挲。三个月工资。自愿离职。保密声明。免责条款。
每一个词都裹着糖衣。
读完最后一行,我抬起眼睛。
陈雅琴坐在对面,双手交叠搁在膝上,指甲修剪得圆润干净,涂着裸粉色的甲油。
“公司想让我走?”
“不是让你走。”她声音放得又轻又软,像在哄不肯吃药的孩子,“是给你一个选择。”
她往前倾了倾身,手肘撑在桌沿。
“韩林,你聪明,应该看得出来。再闹下去,对谁都没好处。”
她顿了顿,观察我的表情。
“公司愿意给这笔补偿,咱们好聚好散。你拿着钱,休息一阵,找份更好的工作。以你的能力——”
“如果我不签呢?”
她嘴角的弧度没变,但身体往后靠了靠。
椅背发出轻微的吱呀声。
双手交叉,搁回桌面。这个姿势,和李建国一模一样。在他身边待久了,连坐姿都成了翻版。
“不签,公司也尊重你。”
语气还是温和的,但温和底下多了层硬壳,像核桃外面那层青绿色的果皮,指甲掐上去会留下涩痕。
“不过你得想清楚。”她慢慢说,“现在你档案里,只有一条绩效处罚记录。我们已经准备撤销了。”
“如果你不签,这份记录会一直跟着你。”
她放下咖啡杯,杯底轻叩桌面。
“还有十二月十八号那次,你拒绝配合应急处理——公司完全可以重新启动纪律处分程序。”
指尖在协议边缘点了点。
“到时候,可能就不是协商离职了。你会被直接辞退,拿不到补偿金,档案里也会留下辞退记录。”
她说完,重新端起杯子。
咖啡的热气模糊了她的表情。
张律师在此时翻开文件夹,纸张发出清脆的响声。
“从法律角度说,韩先生,这个方案对您有利。”
他的声音平稳得像在念条文。
“自愿离职能拿到N+1,离职证明上也会写‘个人原因’。如果走纪律处分……”
他顿了顿。
“结果就很难预测了。”
我看着他们。
一个靠在椅背里,小口啜饮咖啡;一个坐得笔直,手指按在文件上。
红脸和白脸。
这套组合拳,对付二十六岁的程序员,通常够用了。
但他们不知道。
今天早上七点,我和陆律师通了四十分钟电话。
“陈总监。”
我拿起协议。
“张律师。”
纸张在手里发出轻微的摩擦声。
“关于这份协议,有几个条款我想确认一下。”
我拿起那份协议,翻到第二页,指尖停在某一行。
“这里写着,我承诺离职后不泄露任何与公司相关的信息。”
我把纸页转向张律师。
“这个‘信息’的范围,具体指什么?”
张律师推了推眼镜。镜片后的目光很稳。
“包括但不限于商业机密、技术资料、客户信息、内部管理信息,以及您在职期间接触的一切非公开内容。”
“三个月前那次系统更新的代码审查记录——也算在内?”
张律师的眉毛极其轻微地动了一下。
他没立刻回答,转头看向坐在一旁的陈雅琴。
陈雅琴没看他。
她一直看着我,脸上那种惯有的温和褪得干干净净,只剩下一层冷硬的审视。
张律师转回脸。
“算。”
“12月18日系统故障的完整日志记录?”
“算。”
“公司内部会议上通报的内容?”
“算。”
我把协议放回桌面。
手指在纸面上轻轻敲了两下。
“那如果我不签,”我说,“这些东西,我就可以合法地公开出去了。”
张律师的嘴唇抿成一条直线。
他听懂了。
我刚才问的不是条款——
我问的是,签了字,我就要永远闭嘴。
但如果我不签,这些材料就没了保密协议的约束。
我随时能把它们摊在阳光下。
“韩先生,请您再想想。”
张律师的声音里,那层公事公办的冰壳裂了条缝。
他食指无意识地敲了下桌面。
“公开这些……可能涉及商业秘密泄露,公司有权追责。”
“张律师,您刚才亲口说的——这些属于我任职期间接触的非公开信息。”
我往后靠了靠,椅背发出轻微的咯吱声。
“可如果公司行为本身踩了线呢?克扣工资,伪造系统故障的责任认定……那这些就不是商业秘密了。”
“它们是违法证据。公民提交证据,是权利,不是义务。”
张律师的喉结滚动了一下。
他没接话,只是摘下眼镜,用袖口慢慢擦着镜片。
做了十年法务,劳动合同纠纷堆起来能压垮档案柜,但没遇见过这样把法条当刀使的。
他伸手去拿咖啡杯,指尖碰到杯壁才想起早就空了,只好又把手缩回膝盖上。
会议室安静得能听见空调的嗡鸣。
陈雅琴一直坐在阴影里,这时忽然倾身向前,手肘压住了桌沿。
“韩林。”
她声音很轻,像在试探什么。
“你究竟想要什么?”
“我刚才说了,我什么都不想要。”
我把那份协议推回她面前的桌面,纸张边缘摩擦出细微的沙沙声。
“三个月的补偿金,我不需要。”
我盯着她的眼睛。
“我只要一个答案。”
会议室里的空调发出低沉的嗡鸣,出风口正对着陈雅的侧脸,几缕碎发在她耳边轻轻颤动。
“三个月前,赵志强强行合并那段核心代码——到底是谁让他做的?”
陈雅脸上的血色瞬间褪了。
比上周赵志强在技术评审会上被我当场拆穿时,褪得更快,更彻底。
她的嘴唇张开又合上,像缺氧的鱼。
手指攥紧了文件夹的硬壳边缘,指甲陷进纸面,留下几道深深的月牙形凹痕。
“这个问题……”
她的声音压得很低,低到几乎被空调的噪音吞没。
“我不能回答你。”
她避开我的视线,目光落在桌面的木纹上。
“你应该去问赵志强本人。”
“我问过了。”
陈雅猛地抬起头。
瞳孔缩成了针尖大小的黑点,在眼眶里微微震颤。
她的下巴在抖,连带着肩膀也在轻微地起伏,整个人绷得像一根拉到极限的弦。
“他跟你说了什么?”
“他跟我说——”
会议室的门突然被推开了。
李建国站在门口,深灰色西装外套的扣子系得一丝不苟,手里拿着一份蓝色封面的文件。
他的目光扫过房间,在我身上停顿了半秒,然后转向陈雅。
“在谈事情?”
他的语气很平稳,像往常一样。
雅琴姐的手指还按在文件边缘。
李总推门进来时,她指尖明显抖了一下。
“谈得……还顺利吗?”
“李总。”
陈雅琴立刻站起来,把散开的纸张往文件夹里塞,纸页窸窣作响。
她侧过身,挡住桌上那份协议。
“韩林对几个条款有疑问,张律师正在解释。”
“不用了。”
李建国摆摆手,在陈雅琴让出的椅子上坐下。
他把手里的文件夹平放在会议桌上,推到我面前。
文件夹是新的,封皮还泛着冷光。
“小韩。”
他看着我,声音放得很缓,像在安抚一只受惊的鸟。
“你的顾虑,我都明白。”
他翻开文件夹,里面是另一份协议。
纸张很薄,能透出下面桌面的木纹。
“这样吧。”
他食指点了点补偿金那栏。
数字变了。
“六个月工资。”
“年终奖照发。”
“这几个月的加班费,全部折算。”
他顿了顿,等我抬头。
“签了字,之前所有事,到此为止。”
“离职证明上,我会让人写‘表现优秀’。”
“档案干干净净。”
“这笔钱,够你缓一阵子,或者直接找下家。”
他往后靠了靠,椅子发出轻微的吱呀声。
“你考虑考虑。”
“如果你愿意,我个人还可以额外给你写一封推荐信。”
他把离职协议推到我面前。
办公室安静得可怕。
陈雅琴在旁边屏住呼吸,连耳环都不晃了。
张律师的手指悬在键盘上方,像被冻住的雕塑。
暖气片的水流声停了。
窗外的雪也停了。
整个世界被按下了暂停键。
我低头看那份协议。
六个月工资。
年终奖。
加班费。
算下来,六七万。
对于一个二十六岁的程序员来说,足够付半年房租,还能换个新手机。
如果签了,今天就能收拾东西。
明天就能投简历。
一切干干净净。
像什么都没发生过。
但有些东西,确实发生了。
“李总。”
“嗯?”
“我能问个问题吗?”
他抬了抬手,示意我说。
“三个月前,九月十七号晚上,您在赵志强的办公室里,跟他说了什么?”
李建国的表情没变。
他的脸像一面打磨过的石板,光滑,平整,连最细的纹路都找不到。
他看着我。
目光温和得像在看一个闹脾气的孩子。
“韩林。”
他的声音平稳得像一面镜子。
“你记错了。”
“那天晚上我在外地出差。”
“不在公司。”
“你可以查我的行程记录。”
“那周芸那天晚上看到的人,是谁?”
李建国笑了。
他靠在椅背上,十指交叉放在桌面上,无名指上的婚戒在灯光下泛着很淡的金色。
“周芸可能看错了。”
他的语气轻松得像在聊天气。
“公司里人员来来往往,,
晚上十一点多,
灯光又暗,
看错人很正常。”
他顿了顿,
目光落在我脸上。
“你总不会因为一个同事的一面之词,
就来质疑我吧?”
我没说话。
我看着他那张脸——八年总经理,他应付过太多人,太多事。这张脸已经修炼得无懈可击,连嘴角那抹笑都像是量过角度的,不深不浅,刚好够表达从容,又不会显得轻浮。
在他眼里,我大概就是只蚂蚁。
二十六岁的程序员,
刚调来总部三个月,
没背景,
没人脉。
一只蚂蚁。
但他不知道。
这只蚂蚁已经在他脚下,
安安静静地,
挖了三个月的洞。
“李总,”我说,“我没有质疑您。”
我的声音很平。
“我只是想确认一下,
您那天晚上,
确实不在公司。”
“确实不在。”
“那好。”
我站起来,
拿起桌上的手机。
屏幕亮了一下,
又暗下去。
“既然您不在,”我转身朝门口走,手已经搭上了门把,“那赵志强说的那个人,
就不是您。”
门把冰凉。
身后有声音传来。
“韩林。”
李建国叫住我。
他的声音还是稳的,
平稳得像会议室那张红木桌面。
但有什么东西藏在下面。
很细,
很锐利。
像一根针,
藏在厚厚的天鹅绒里。
“你等一下。”
“赵志强跟你说了什么?”
我的手搭在冰凉的门把手上,停住了。
没有回头。
“赵志强没跟我说什么,李总。”
“那你刚才为什么说——”
“因为我在诈您。”
会议室里静了下去。
不是寻常的静。
是那种空气突然被抽干的静,连呼吸都压成了薄片。
我听见身后传来极轻的一声“嗒”。
陈雅琴的笔滚到了文件夹边缘,晃了两下,不动了。
李建国笑了一声。
很轻,像冻河底下的水在流。
“韩林,”他慢慢说,“你比你看起来要聪明得多。”
我转过身。
他靠在椅背里,双手交叠搭在小腹上,无名指那圈金属在灯下反着一点浮光。
脸上的笑还挂着,底下却换了东西。
硬了,冷了。
“不过,”他把每个字都掂了掂才放出来,“你有没有想过,你手里的那些证据——全是公司内部系统里的记录。”
他顿了顿,声音更缓了。
“我只需要打一个电话,那些记录……就可以变得干干净净。”
你的代码审查邮件,系统日志截图,操作记录——我都能让它们消失。
到时候,你拿什么跟我斗?
我看着他,没说话。
他往前倾了倾身子,声音压得极低,像毒蛇吐信。
“韩林,你以为你赢了?赵志强,王建民……那都是小虾米。真正捏着你命脉的,是我。”
他顿了顿,手指在桌沿轻轻敲了两下。
“我能让你体面地走,也能让你狼狈地留。六个月补偿金,或者……一分钱没有,档案里还多个被辞退的污点。你选哪个?”
我握着门把手,指节微微发白,脸上却没什么表情。
从口袋里摸出手机,按亮屏幕。
“正在录音”四个字旁边,红色计时器跳动着——八小时四十七分。
我把屏幕转向他。
“李总,您刚才说的每句话,包括修改系统记录、销毁证据那句,都在这儿了。”
“代码审查邮件,系统日志截图,操作记录,还有三个月前九月十七号晚上门禁的刷卡记录……”
“我备份了三份,放在不同的云服务器上。”
李建国的笑容僵在脸上。
不是慢慢褪去。
是瞬间冻住,像有人按下了暂停键。他嘴角还挂着那个弧度,可眼睛里的光已经熄了,只剩两个深不见底的黑洞。
“你——”
“我四点三十分有个电话会。”我抬腕看了眼表,秒针正一格一格往前跳,“还有九分钟。参会的有我的律师,劳动监察大队的人,还有两家科技媒体的记者。”
会议室空调的冷风嘶嘶作响。
“如果四点三十五分我没打电话报平安,他们就会收到我提前设置好的邮件。”我顿了顿,“附件里是过去六个月所有的代码修改日志、合并记录,还有三次技术评审会的录音。”
陈雅琴猛地站起来。
椅子腿刮过地板,发出刺耳的尖叫。
“韩林!”她的声音劈了,“你知不知道自己在做什么?客户会跑,投资方会撤资,董事会追责下来,整个公司几百号人——”
“陈总监。”
我打断她。
“船三个月前就漏水了。”我转向李建国,他脸上的肌肉抽动了一下,“李总强行合并那段漏洞代码的时候,就已经在船底凿了个洞。现在洞裂开了,水漫进来了,他只是想让大家相信,这艘船还漂得好好的。”
我的手从门把上滑落。
转身,走回圆桌边。
椅子腿在地面摩擦出短促的声响。
我重新坐下,背往后靠,手肘支上桌面,十指松松交叠——和李建国此刻的姿势,分毫不差。
“李总。”
我的声音不高,但每个字都像从冰水里捞出来,带着沉甸甸的凉意。
“现在,您面前有两条路。”
我停顿了一下,看着他镜片后骤然收缩的瞳孔。
“第一条路。您自己,向董事会递辞职信。主动认领十二月十八号系统崩盘的全部管理责任。您走人,这件事,在我这儿就算翻篇。我手里的东西,一个字都不会漏出去。公司可以对外发通告,说这是一次令人遗憾的技术意外,相关责任人已引咎离职,内部正在全面整改。”
我往前倾了倾身,桌面上的光影被切割开。
“这么办,公司的脸面保住了。客户不会跑。底下那些敲代码、跑运维的员工,饭碗也还能端稳。”
“第二条路。”
我往后靠回去,椅背发出轻微的吱呀声。
“您选择不辞。”
墙上的挂钟,秒针走动的声音忽然变得很清晰。
“那么,下午四点三十分整。我电脑里的所有材料——邮件截屏、代码合并记录、系统日志的修改痕迹、还有三次内部会议的部分录音——会同时发到三个地方:我的代理律师邮箱,市劳动保障监察大队的公开举报平台,以及两家以追根究底出名的科技媒体记者的收件箱。”
我抬起眼,目光平直地看过去。
“明天太阳升起来的时候,所有人都会知道,这家公司的总经理,三个月前是怎么跳过所有安全评审,强压着技术团队,把一段来路不明的代码塞进了核心系统。所有人也都会知道,系统被攻破、客户数据像沙子一样漏出去之后,这位总经理的第一反应,是试图擦掉服务器日志,伪造一份干净的记录。”
窗外的天色,不知何时暗沉了几分。
“您觉得,董事会到时候会要求您辞职吗?”
李建国没应声。
他坐在那儿,双手交叠搁在小腹上,无名指的婚戒还在反光,可指节在抖。那抖法很轻,轻得像隔着一层毛玻璃看烛火,只有凑到一米内才瞧得真切。他嘴角还挂着那副凝固了的弧度,脸色却变了——从常人的肤色褪成一种灰白,像块在冰箱里搁久了的豆腐,表面浮着层冷气。
陈雅琴在旁边张了张嘴,又合上了。张律师合上笔记本,摘下眼镜,捏着衣角慢慢擦镜片,一下,又一下,慢得像在数自己的心跳。
会议室里静了整整六十秒。
挂钟的秒针咔哒、咔哒,走得格外响。
“我需要时间考虑。”李建国终于开口,嗓子哑得像砂纸磨过粗粝的水泥墙。
“您还有九分钟。”
我站起身,把手机屏幕转向他。亮起的白光刺得他眯了眯眼。
“四点三十,系统自动发送。这是条定时指令——”我顿了顿,“连我也取消不了。所以,九分钟内,您得做个决定。”
李建国抬起眼。
他看了我很久,久到陈雅琴不安地挪了挪脚。最后,他眼里那点残存的温和彻底熄灭了,只剩下一片黑,深不见底的黑。他在这个位置上坐了八年,扳倒过多少人,吞掉过多少公司,从没输过。
一次都没有。
房间只有十平米,挤得人喘不过气。
二十六岁的程序员站在我对面,白炽灯管在他镜片上反着冷光。
“如果我不信呢?”
他的声音太轻了,轻得像手术刀划开皮肤的第一下。
“如果我觉得你手里根本没有东西,只是在吓唬人?”
我手指搭在门把手上,金属的凉意顺着指尖往上爬。
“您可以赌。”
门开了条缝,走廊的风灌进来,吹动了桌上散着的代码打印纸。
“但我劝您别赌。”
我侧过身,没完全回头。
“您赌不起。”
李建国坐在椅子里没动,但指关节按在桌沿上,已经泛白了。
“凭什么?”他声音有点哑,“我凭什么信你真有那些东西?”
走廊的灯管坏了半截,一闪一闪的。
光打在他脸上,忽明忽暗的,像老式电影放映机卡住的画面。
“昨天下午。”
我停在走廊中间,影子被拉得很长。
“您把赵志强调去行政部的时候,他塞给我一张纸条。”
李建国的呼吸停了半拍。
我看得见他喉结动了一下。
“什么纸条?”
“密码。”
我转过身,正对着他。
“三个月前,您让他合并那段问题代码的时候,他留了后手。”
会议室安静得能听见电流穿过灯管的滋滋声。
“他觉得不对劲,就偷偷录了屏。整个操作过程,从打开文件到最后提交,一帧没漏。”
李建国整个人僵在椅子里。
像突然被拔了电源的机器人。
他张了张嘴,但没发出声音。
只有一声很轻的、从喉咙深处挤出来的气音。
像什么东西终于断了。
我转身走向工位,没再开口。
走廊的日光灯管还在闪,
但这次,
那闪烁的节奏像在敲打我的心跳。
电脑屏幕亮着,
系统日志的页面泛着冷光。
我坐下,
把手机屏幕朝上放在桌边——
录音计时器还在跳动。
四点二十一分,
还剩九分钟。
周芸从隔壁格子间探过身,
声音压得很低:
“有进展吗?”
“快了。”
“他……答应了?”
“还没,但快答应了。”
她咬住下唇,
手指在键盘上敲了几个字母,
又全部删掉。
深吸一口气后,
她突然说:
“韩林,如果需要我作证,我可以去。”
眼泪毫无预兆地掉下来,
砸在键盘的空格键上,
“那天晚上我确实看见了,就是李建国。
我敢对任何人说,包括调查组。
这一年我帮你瞒了太多事,
这次我不想瞒了。”
“不用。”
“为什么?”
“证据已经够了。”
“那你还差什么?”
我转过脸,目光钉死在会议室那扇虚掩的门上。李建国还没出来。陈雅琴和张律师也没出来。门缝底下漏出一点光,还有断续的低语,压得很急,像困兽在笼子里打转。
“我什么都不差了。”我的声音很平,听不出起伏,“现在,只等。”
手机屏幕亮着。
计时器的数字,正一秒一秒地,跳向四点二十九分。
我把它拿起来,搁在桌面上。手指悬在屏幕上方,指尖冰凉。四点三十分,我会按下取消键。如果他在最后一分钟低头。如果他不。
那么,一切都会自己往前走。
四点二十九分三十秒。
门开了。
李建国走了出来。陈雅琴和张律师跟在他身后,隔了两步远。他走得很慢,每一步都像拖着重物。西装还是那身西装,领带结打得一丝不苟,头发梳得整整齐齐。
可他的眼神空了。
那点惯常的、掌控一切的从容,被抽干了。只剩下疲惫,沉甸甸地挂在眼皮底下。
他停在我的工位前。
“韩林。”
“李总。”
他没立刻说话,只是看着我。空气里只有空调出风口单调的嗡鸣。几秒钟,长得像被拉长的皮筋。
然后,他伸手探进西装内袋,摸出一支黑色的钢笔。又从陈雅琴手里接过一份对折的文件,摊开,按在我的桌面上。
他弯下腰。
笔尖落在纸页下方,沙沙地响。他签下了自己的名字。
笔尖沙沙作响。
像秋天最后一片叶子,擦过水泥地。
他签完字,直起腰,把钢笔插回西装内袋。那双眼睛看着我——瞳孔里什么都没有,连倒影都吞掉了。
“你赢了。”
声音干得像晒了三天的谷壳。
我拇指按下取消键。手机屏幕亮起绿光:“定时发送已取消”。
李建国转身走向电梯。
脚步很慢,但背挺得僵直。西装肩线绷成两条锐利的折痕。陈雅琴踩着小羊皮高跟鞋追上去,鞋跟敲打大理石地面,哒、哒、哒,节奏全乱了。张律师把笔记本夹在腋下,低头从我身边掠过,领带尖扫过空气。
电梯门开了。
李建国走进去,转身。在门缝合拢前的三秒里,他朝我这边望了一眼。
那眼神像口枯井。
井壁上还留着水渍爬过的印子,一道,两道,浅浅的灰白色。
门关了。楼层数字开始跳动。
手机在掌心震动。
周芸的消息弹出来:“真签了?”
我低头。
辞职申请书摊在桌面上。李建国的签名躺在最后一栏——字迹比平时飘,最后一笔拖出去老长,墨迹洇进纸纤维里,像道没愈合的疤。
我没回周芸的消息。
手指在键盘上敲了几下,调出邮件客户端。
新建邮件。
收件人栏里,一字一字输入董事会秘书的邮箱。
正文只有一行:
“李建国已签署辞职报告,请安排后续交接事宜。”
发送。
后背陷进椅子里,我长长地吐出一口气。
白雾在冷空气里凝成一团,慢悠悠往上飘,最终散在那根总在闪的日光灯管周围。
灯还在闪。
可忽然间,我不觉得它刺眼了。
周芸的声音从旁边飘过来,轻得像在对自己说:
“他居然……真的签了。”
“嗯。”
“你怎么做到的?”
我转过脸看向窗外。
雪停了,暮色压下来。
城市的灯一盏接一盏亮起,像谁擦亮了一盒火柴,远远近近地烧起来。
写字楼的玻璃幕墙映着霓虹——红的、蓝的、绿的,在雪后干净的空气里,鲜艳得有点不真实。
“我没做什么。”我说,“只是让他相信,他面前就两条路。”
“一条是悬崖。”
“另一条也是悬崖,不过矮半米。”
“他选了矮的那条。”
周芸没接话。
安静在空气里蔓延了几秒。
然后我听见她吸了口气,声音压得更低:
“韩林……这些准备,你从什么时候开始的?”
三个月前,9月17号,晚上十一点。
“代码出事那晚,你就知道了?”
“不知道。”我端起桌上的保温杯。
水凉透了,滑过喉咙时带着铁锈味。
“但我那晚看见赵志强了。他在空会议室里见人,门没关严。”我放下杯子,杯底碰着桌面,咚的一声。“他背对着走廊,没瞧见我。从那天起,我开始存东西。”
“存什么?”
“所有。”
“邮件,备份,茶水间的闲聊录音。凡是能留下痕迹的,都存。”
周芸的睫毛还湿着。
她盯着我,像在辨认一个陌生人。
“存了……三个月?”
“对。”
“为什么不早说?”
“火候不够。”我的手指在鼠标上点了两下,“三个月前捅出去,赵志强最多调个岗。一个月前抖出来,王建民挨个处分也就到头了。得等到今天,年终奖打进来的今天。”
我转过屏幕。
文件夹展开,密密麻麻的条目排列整齐,日期、类型、摘要一目了然。
“李建国才会自己拿起笔,签那份问责书。”
周芸吸了吸鼻子。
她嘴角扯了扯,那笑容没到眼睛里去。
“你这个人,”她声音很轻,“真让人后背发凉。”
我没接话。
电脑屏幕的光,映在保温杯的金属外壳上,冷冷的一小片亮斑。
我用了三个月,像蚂蚁搬家,把这些东西一点点攒成山。今天,我把这座山推到了李建国面前。
不签,山会塌下来压死他。签了,山会原路退回,像什么都没发生过。
窗外,城市的灯光越来越密,连成一片发光的海。雪停了,夜空露出几颗星星,淡得几乎看不见,但确实在那儿。我起身,背包甩上肩,朝电梯走去。
路过小会议室时,我停了一下。里面空着,圆桌上留着陈雅琴的咖啡杯,半杯冷咖啡结了层奶皮。文件散在桌上,有一页掉在地上,公司公章红得刺眼,像滴干涸的血。
电梯门开了,我走进去,按下一楼。
电梯下降时,我在想。李建国辞职了,这事算完了吗?我花了三个月收集证据,等待时机,一步步把个总经理逼到绝路。这件事本身,对我又算什么?
电梯到底,门开,冷风灌进来。
我踩着高跟鞋走出写字楼,台阶上还残留着未化的雪。
十二楼那间最大的会议室,灯还亮着。
玻璃窗在夜色里泛着冷白的光,像一块巨大的冰。
不知道里面还有没有人。
我仰起头,雪花落在睫毛上,很快化成了水珠。
空气清冽得刺人,每一次呼吸都像吞刀子,肺叶被刮得生疼。
这种疼反而让我清醒。
手机在掌心震动。
屏幕亮起,是陆律师的消息。
“韩林,情况怎么样?”
“需要我取消定时发送吗?”
我低头打字,指尖冻得有些僵。
“已经取消了。”
“他签了。”
对方秒回。
“很好。”
对话框上方显示“对方正在输入中”,持续了很久。
我等着,呼出的白气在屏幕前散开。
消息终于弹出来,很长的一段。
我站在风里,一个字一个字地往下读。
“韩林,你没有做任何违法的事。”
“你没有伪造证据,没有威胁恐吓,没有泄露公司机密。”
“你只是把别人做错的事记录下来。”
“在合适的时候拿出来。”
“这不是算计。”
“如果一个人连保护自己的权利都没有——”
“那这个世界才真的病了。”
我盯着屏幕,指尖停在冰凉的手机边缘,许久才按熄屏幕,把它塞进大衣口袋。
地铁站的方向,路灯一盏接一盏亮起。
橘黄的光晕在积雪上铺开,把整条人行道染成暖烘烘的调子。靴子踩进雪里,咯吱,咯吱,每一步都陷得深,像要把什么埋进去。
昨天那个卖烤红薯的老人还在。
三轮车,铁皮桶,热气从桶盖缝隙里钻出来,红薯的焦甜混着冷风往鼻子里钻。他没在车上,坐在旁边台阶,双手捧着个搪瓷杯,对着路灯发呆。
我走过去。
扫码,自己掀开桶盖,热气扑了一脸。挑了俩最烫手的,扫码付款。老人听见声音站起来,朝我点头,咧嘴笑——缺了颗门牙,牙床露出来一小块暗红。
“小伙子,今天又加班啊?”
“今天不加。”
“那是……早下班?”
“最后一天了。”我说。
老人愣了愣,重新坐回台阶,捧起杯子喝了一大口。“辞职了?”
“还没。”我掂了掂手里的红薯,烫得指尖发红,“快了。”
“那也挺好。”他望着马路对面,“年轻嘛,多换换,没坏处。别像我——”
他停顿很久。
“一辈子蹲这儿,把人都熬走了,就剩自个儿。”
我站在台阶上没动。
红薯的热度透过纸袋传过来,远处车灯连成一条流动的河。我盯着那光带,雪落在睫毛上,化了。
第二天清早,公司就传开了。
李建国辞职了。
周芸的微信像炸开的烟花一样蹦出来。
我眯着眼划开屏幕。
十几条。
每条后面都跟着感叹号,密密麻麻的,像她激动到语无伦次时喷出的唾沫星子。
“董事会!昨晚!视频会议开到凌晨一点!”
“早上八点全员通告!李建国!个人原因!辞去总经理!即刻生效!”
“接替的是个女的!投资方派的!姓陈!四十多!原来管华南区!”
“她上来第一件事就是调档案!王建民不是降职留察吗?她直接改成辞退!说留着他就是留个炸弹!”
“赵志强也被叫去谈话了,还没出来,但肯定完蛋。”
“对了,HR把你那封处罚邮件撤了。系统里绩效扣罚的记录也删了。”
“陈雅琴今天请假,说身体不舒服。骗鬼呢,她是不敢来。”
“你呢?你什么打算?”
我把手机扔在枕头边上。
床垫很软,身体陷进去一点。
我盯着天花板。
吸顶灯的磨砂玻璃罩子里,积了厚厚一层灰。光线透出来,是那种浑浊的、发黄的亮,像被水泡过的旧报纸,也像冬天下午四五点,太阳将落未落时那种有气无力的天光。
三个月了。
三个月前,也是这样一个晚上。我躺在这张床上,也盯着这盏灯。
那时候心跳得像要从喉咙里撞出来。
手心里全是汗,擦在床单上,留下一个湿漉漉的印子。
我不知道自己在做的事,到底是对,还是错。
事办完了,心跳反而平了。
像一面被风吹皱很久的湖,风忽然停住,水静得能照出人影。
我坐起来,给周芸发消息:“今天去办离职。”
她回得很快:“你真要走?”
“嗯。”
“为什么?李建国走了,你留下——这不就是你想要的吗?”
“我想要的结果,从来不是让谁滚蛋。”
手指在屏幕上停了一下,才继续打:“我只是不想待在一家年终奖发两百八的公司。”
对话框上方,“对方正在输入中”闪了又灭,灭了又闪。
最后跳出来两个字,干巴巴的,连个句号都没有:“也对。”
衣服套上身,冷水扑了把脸。
电脑、工牌、门禁卡,还有抽屉里那半包没吃完的饼干,一股脑塞进背包。
地铁车厢连接处,肩膀抵着冰凉的金属壁。
窗外隧道灯一盏接一盏掠过,明,暗,明,暗——像一条永远走不到头的斑马线。
前台看见我,嘴角抽了抽,连句“早”都忘了说。
我径直走到工位,按下开机键。
屏幕亮起来,蓝光映在脸上。
新建邮件,标题栏敲下“离职申请”。
正文只三行:
第一行,“因个人原因申请离职”。
邮件发送成功的提示框弹出来时,周芸从旁边递过一块苏打饼干。
海盐味的。
和一个月前她递给我的那块包装纸一模一样。
“最后一次了。”她指尖捏着饼干边缘。
我接过来咬了一口。
脆响在安静的工位区显得有点突兀。
咸味混着麦香在舌尖化开——上次吃的时候,我还在修改年终述职PPT。
“接下来?”她压低了声音。
“先睡三天。”
“然后呢?”
“有家开源项目的创业公司在接触,技术栈全是新的。”我拍了拍手上的碎屑,“还有家传统企业,薪水开得比这边高百分之三十。”
“选哪个?”
“不知道。”我关掉邮箱界面,“但下次签合同前,我会把薪酬制度那几页打印出来,用荧光笔划清楚——年终奖怎么算,绩效怎么评,调薪机制写在第几条。”
周芸笑了。
她转回自己的工位,敲键盘的声音重新响起来。
周芸笑了。
眼睛弯成两道弧线,和平时那个总把嘴角抿得紧紧的她不太一样。
“你变了不少。”
“哪里变了?”我敲键盘的手停了一下。
“以前你从来不谈钱。”她掰开手里的饼干,碎屑落在桌面上,“加班不谈,调休不谈,年终奖也不谈——好像只要让你安安静静对着屏幕,其他事都无所谓。”
她把剩下的饼干袋抖了抖,转过脸来,“现在你会说,这些得白纸黑字写进合同里。”
“所以呢?”
“所以,”她声音轻下来,“你终于觉得自己的时间值钱了。”
我没接话。
手指在键盘上悬了几秒,然后收回来,开始收拾东西。
黑色的保温杯先被拿起来。
杯身有道浅划痕,去年入职第一天在桌角磕的。
当时周芸正好路过,说了句“小心点”。
耳机是头戴式的。
耳罩的皮磨得发亮,边缘已经微微开裂。
但降噪效果还是很好,戴上就像沉进海底。
《代码大全》的扉页上写着自己的名字。
购买日期是三年前。
旁边贴的便利贴已经卷边,上面记的Linux命令,有几个墨迹都淡了。
魔方是三阶的。
闲的时候随手拧两下,解压。
贴纸磨掉了一半颜色,黄色那面最严重。
最后是小仙人掌盆栽。
周芸去年生日送的。
养了一年,居然还活着。
顶端冒了个小小的新芽,嫩绿嫩绿的,在显示器旁边探着头。
我把那些东西一件一件塞进背包。
指尖碰到键盘时,想起上个月为了赶项目,敲坏三个键帽。
拿起水杯,杯底还留着昨天没喝完的咖啡渍。
每放进去一样,心里就空掉一块——这是最后一样了。
然后手指在背包最外侧的夹层里,摸到了那个牛皮纸信封。
封口用胶水粘得死死的,一个字都没写。
我愣了几秒,才想起来。
上周年会,周芸替我领的。
“你的红包,”她当时把信封往我桌上一扔,“不去也得领啊。”
我正盯着屏幕上的代码,随手把信封塞进背包夹层,转头就忘了。
撕开胶水粘住的地方。
一张红色钞票滑出来。
一百块。
底下压着卡片,印着公司logo,还有那句印了八百遍的“感谢有你,携手同行”。
我把钞票捏在手里。
正面,国徽。
反面,人民大会堂。
翻过来,又翻过去。
一百块的红包。
两百八的年终奖。
三百八十块钱。
我在这干了一年零一个月,所有额外回报,就这些。
钞票和卡片被我一起塞回信封。
站起身,走到陈雅琴办公室门口。
门开着。
她果然没来。
桌上那杯咖啡已经凉透了,杯沿留着口红印。
我把信封放在她办公桌正中央,用那个咖啡杯压住一角。
转身往外走。
路过茶水间,里面声音飘出来。
“听说技术部那个……”
“真走了?”
“早上看见她在收拾东西。”
声音压得很低,像怕谁听见似的。
“听说了吗?陈总刚来,上午第一件事就是召集技术部开会,追问12·18故障的复盘报告到底卡在哪了。”
“不止呢,她还说要全面重审过去一年的绩效评估,绩效制度得大改。”
“早该动了。王建民在经理位子上坐了五年,底下人被他榨得差不多了,能跑的早跑了。”
“走了倒清净。你看韩林,一年到头加班,补了多少漏洞,年终奖就拿了二百八。谁听了不心凉?”
“这公司啊,是该换换血了。”
我推开茶水间的门。
里头的谈话声戛然而止。
产品部的刘经理和另一个同事同时转过头,眼神撞上我,表情僵在脸上——好奇还没退干净,尴尬又浮上来。刘经理的嘴角不太自然地抿了抿。
我走到饮水机前,按下热水键。
“刘经理,”水流声里,我的声音没什么起伏,“聊你们的,我接杯水就走。”
刘经理盯着手里的咖啡杯,拇指无意识地蹭着杯壁。
他喉结动了动,抬眼看向我。
“韩林,”他声音有点干,“你上次提的需求评审意见……我回去又看了一遍。”
他顿了顿。
“那七处逻辑矛盾,确实存在。我当时……嘴上没认,但心里清楚,你是对的。”
“不重要了。”我摇摇头。
周芸盯着我:“重要。你现在说的话,公司里终于有人听了。”
他端起马克杯,朝我举了举——像某种无声的敬酒,转身走出茶水间。
我靠在台面边缘,水杯在手心里转着圈。雪停了,天空亮得晃眼。阳光撞在对面的玻璃幕墙上,碎成一片刺眼的白。
回到工位时,周芸把一个塑料袋推过来。
我拆开看,是苏打饼干。海盐味的,和她刚才递给我那块一模一样。
“路上吃。”她说。
“提前送我?”
“先送一程。”她敲了敲键盘,“等正式离职那天,再送一程。”
我把饼干塞进背包,拉链咬合时发出细碎的声响。背包比早晨重了——多了一包饼干,多了一个信封,多了一整年沉甸甸的时间。
“周芸。”
“嗯?”
“还记得上个月你问我年终奖吗?我说是垃圾短信那次。”
她停下手里的活,抬头看我:“记得。”
“当时不想说,不是怕丢人。”我捏了捏背包带子,“是觉得……说出来,就等于认了。”
“现在呢?”
“现在明白了。”我背起包,“说出来只是说出来。说完了,你才能决定要不要继续认。”
背包带子勒进肩膀的时候,我深吸了一口气。
起身的瞬间,椅子轮子在地板上刮出短促的声响。
路过开发组那片格子间,老张先站了起来。
他什么也没说,只是伸手和我用力握了一下。手掌很厚,全是茧。
小王跟着站起来,拳头在我肩胛骨上轻轻捶了一记。
小刘还在改bug,抬眼看我,点了点头。
没有一个人开口。
电梯门叮一声滑开,我走进去。
门缝渐渐收窄,像舞台幕布缓缓拉拢。
日光灯管的嗡嗡声,键盘噼里啪啦的敲击,还有那些埋在显示器后面的、一动不动的背影——都被一寸寸隔在了外面。
不锈钢门上映出我的脸。
扭曲的,拉长的,像游乐场里那种哈哈镜。
但这次我没移开视线。
嘴角是松的。
眉间那道褶子,好像比上个月浅了一点。
大堂的电子屏换了新内容。
红底,白字,滚得飞快。
“关于组织架构调整及薪酬福利制度全面优化的公告”
我停下脚步,仰头看。
屏幕光映在眼镜片上,一跳一跳的。
“新任总经理将于下周到岗”
“技术中心重组方案已获批准”
“公司承诺,将以本次调整为契机,全面提升员工薪酬福利体系”
最后那句在屏幕上滚了三遍。
我推了推眼镜。
想说点什么,张了张嘴。
又闭上了。
公司当然会变。
新领导上任当然要出新政。
这些都不需要怀疑。
但有些东西变了,有些东西没变。
那些深夜加班的疲惫是真的——咖啡凉透了还握着杯子,屏幕的光在凌晨三点刺得眼睛发酸。
那些被驳回的反对意见是真的——我在会议室里说完最后一句话,领导只是抬了抬眼皮,把打印纸翻过去一页。
那些系统日志里留下的漏洞痕迹是真的——红色的警报像心跳一样在后台闪烁,没人提起,但所有人都知道。
那些在茶水间咽回去的话也是真的——小张刚开了个头,听见脚步声就拧开了水龙头,水流声盖住了后半句。
还有那两百八十块钱。
它钉在那儿,拔掉也会留下洞。
走出写字楼时,阳光突然劈头盖脸砸下来。
雪后的空气清冽得像刀片,每次呼吸都刮得喉咙生疼。
我眯起眼,看见马路对面那棵梧桐。
残雪挂在枝头,正一滴一滴往下砸,在人行道上洇出深色的圆点。
一个月前我站在这儿,手机震了,短信显示到账两百八。
当时觉得自己的价值被扔进了碎纸机,连个响儿都没有。
现在卡里的余额没多多少。
但脚踩在地上,是实的。
不是谁赏的,也不是平台突然开了眼。
是我自己——用一年证明能写出像样的代码,再用三个月证明,膝盖弯不下去。
我转身朝地铁站方向走。
烤红薯摊的铁皮桶还冒着热气,炭火在暮色里烧成暗红色。甜腻的焦香混着冷风钻进鼻腔——老人果然还在老位置。他抬起被煤灰染黑的手指,朝我挥了挥:“今儿下班这么早?”
“没上班。”
扫码时屏幕映出我发青的眼圈。
老人夹红薯的动作顿了顿:“调休?”
“辞了。”
火钳悬在半空。他慢慢把烤裂皮的红薯夹出来,报纸裹了两层,又抓了把炒栗子压进袋底。“拿着。”他摆手拒绝我补钱的举动,坐回那张快散架的折叠椅,手掌悬在炭火上方翻烤,“换地方是好事……但别把自己也换了。”
“什么叫……换了自己?”
“我守这摊子十七年。”火钳拨弄炭块,溅起的火星子在他浑浊的瞳孔里一闪即逝,“见多了——从前骂甲方孙子的人,自己开公司后比孙子还孙子;嫌领导画饼的,当上领导饼画得更大。”他忽然抬头盯住我,“你不一样。你眼里还烧着火。”
袋底栗子烫着掌心。
“听不听随你。”
“我正听着呢。”
烤红薯的甜香混着炒栗子的焦糖味,被我拎进了地铁站。站台挤满晚归的人,列车进站时带起的风灌满隧道,吹乱了我的头发。我缩进车厢角落,把背包按在腿上。手机在掌心震动。
陆律师的消息跳出来:“韩林,李建国的律师今天联系我了。”
“他想干什么?”
“想协商签互不追究协议。愿意额外补偿,金额可谈。你愿意谈吗?”
我往后靠进冰冷的椅背,手指悬在屏幕上。打了一行字,删掉。又打,又删。最后只发了三个字。
“没必要。”
他的回复快得像在等我这句话:“我也这么想。不过还有件事——12·18故障损失最大的那两家客户,他们的技术负责人托我问你,有没有兴趣接他们的安全系统升级项目。项目合作,按市场价算报酬。”
“他们怎么知道我?”
“你以为你拒绝回去加班的事,只有你们公司的人知道?”陆律师发来一个微笑表情,“技术圈子里传了快一个月了。”
有人觉得你不专业,但更多人觉得你做得对。
那两家公司安全部的主管,就是后一种。
陆律师的短信还亮在屏幕上。
地铁钻进隧道,车窗外的广告灯箱连成昏黄的光带,一根根向后抽走。
我攥着手机,金属边框硌着掌心。
忽然想起李建国上个月在电话里的声音,沙沙的,像砂纸磨过木头。
“没有哪家企业会要一个敢公开内部文件的员工。”
他说。
“你这是在断自己的后路。”
窗玻璃映出我自己的脸,模糊地晃动着。
他错了。
后路不是别人赏的。
是你自己一块砖一块砖,趁着夜深人静,偷偷铺起来的。
每做一件夜里能睡得着觉的事,就是往那看不见的路上,多垫了一块结实的砖。
砖铺够了,路自己就显出来了。
手指在屏幕上敲得飞快。
“下周三下午三点。”
“让他们来我新办公室谈。”
“什么办公室?”
陆律师几乎是秒回。
“你什么时候租办公室了?”
“明天去租。”
对话框顶端“正在输入”闪了半天。
最后弹出来三个竖着大拇指的黄豆表情。
我没再回。
列车冲出隧道,突如其来的阳光劈头盖脸浇进来,刺得我眯起眼。
玻璃窗被晒得发烫,脸颊贴上去,暖意一直渗到骨头缝里。
我靠着窗,闭上眼。
车厢规律地摇晃,铁轨哐当哐当,像个笨拙却安稳的摇篮。
背包贴着后背。
里面塑料袋窸窣轻响,烤红薯的温吞热气,正一丝一丝透过滤布,烘着脊椎骨。
像揣着一小块不会熄灭的炭。
钥匙插进锁孔,转动半圈。
门开的时候,游戏音效混着激烈的枪声扑面而来。
沈砚盘腿坐在客厅地板上,手柄按得噼啪响。
屏幕蓝光映亮他半边侧脸。
他看见我背着鼓鼓囊囊的背包进门,手柄啪嗒一声搁在茶几上,耳机线从脖颈扯下来,挂在那儿晃荡。
“真辞了?”
那张脸上,明明白白写着“果然如此”。
“辞了。”
我把背包墩在沙发里,拉链嘶啦一声划开。保温杯,耳机,砖头厚的《代码大全》,魔方,还有那盆蔫头耷脑的仙人掌。一样一样,摆在空荡荡的茶几面上。
沈砚从沙发上弹起来,挪到餐桌边的椅子上,就那么看着我掏家当。
屋里只有塑料和书本磕碰的轻响。
过了好一会儿,他的声音才又响起来,闷闷的。
“接下来呢?”
“接点外面的活。再看看。”
“还干这个?”他手指了指那本《代码大全》。
“不然呢。”
“我是说——”他抓了抓头发,手指插进发根里,又松开,“你这次动静不小。圈子里就那么点大,万一传开了,说你就是那个把总经理掀下去的主儿……”
我拿起《代码大全》,书脊对准茶几边缘,慢慢推过去,严丝合缝。
然后坐下来,双手交叠,搁在膝盖上。
这姿势让我愣了一下。
以前总觉得李建国这么坐着,是在拿捏场面。
现在发现,可能只是因为这样放着,手不知道往哪儿摆。
沈砚,如果有人看了我的简历,知道我做过什么项目,写过什么代码,解决过什么技术难题,最后却因为一个圈子里的八卦就拒绝我——
那这种公司,不去才是对的。
不是,我是担心你——
我知道。
我打断他,声音放轻了些。
但你想过吗?如果我这次忍了,拿了那两百八十块钱,继续加班,继续忍。
明年年终奖可能还是两百八。
后年也是。
因为公司会发现,给你两百八你就愿意加班,那为什么要给你九千?
底线不是别人给的。
底线是自己划的。
你不划,别人就会替你划。
划到你觉得疼,又不敢喊疼。
这次我划了一条线。
然后呢?你把总经理搞下台了。
不是我把他搞下台的。
是他自己三个月前,决定强行合并那段代码的时候,就已经站在悬崖边上了。
我只是在他想推别人下去垫背的时候——
没有主动往前迈那一步。
沈砚看着我,嘴唇动了动,没发出声音。
他比我小三岁,刚毕业一年,在一家小公司做前端开发,眼睛里还带着点没被磨平的困惑。
但困惑底下,慢慢浮起一点别的什么。
像是终于看懂了棋盘上的某步棋。
他不知道一个人能在同一天收到年终奖和处罚通知。
也不知道领导能在同一个会议上夸你能力强,转头把你打进绩效最末档。
但他亲眼见到了——
他那平时话比代码还少的程序员室友,被公司逼到绝境后,没哭没闹。
花了三个月,收集齐所有证据。
然后只用一下午,就让总经理签了离职协议。
“你之后打算怎么办?”
他又问了一遍,但语调变了。
第一次问,是担忧。
这一次,是真正在向我讨答案。
我从背包里掏出那个牛皮纸信封。
抽出里面的一百块钞票,还有那张卡片,轻轻搁在茶几玻璃上。
钞票崭新挺括。
卡片印着公司logo,下面一行烫金小字:“感谢有你,携手同行”。
“我给自己一年。”
我盯着那张钞票。
“把我该得的,凭自己本事挣回来。不是年终奖——年终奖已经要回来了。”
“是我的职业尊严。”
“之前把它落在这家公司了,走的时候没顾上捡。”
“现在,我得去捡回来。”
沈砚没说话。
他盯着茶几上那一百块,看了很久。
久到窗外路灯都亮起来了。
他才起身,走进厨房。
冰箱门打开,冷气混着灯光涌出来。
他拿出两罐啤酒。
他推过来一罐啤酒,金属罐身碰在木桌上发出轻响。自己手里那罐被他利落地拉开,铝环弹开时带着细微的“哧”声。他朝空中虚虚一举,泡沫从罐口涌出,溅了几滴在桌面,亮晶晶地摊开,他没去擦。
“那祝你早日拿回来。”他说这话时没看我,盯着窗外。
“谢了。”
我拉开拉环时感觉到罐身的冰凉。啤酒滑过喉咙,先是一阵苦,接着麦芽的甜味在舌根慢慢化开。冰得牙根发麻,但胃里渐渐暖和起来。窗外突然炸开一朵绿色的烟花——砰的一声,光点四散着落下,把夜空映亮又暗下去。不是节庆那种连片的,就零散两三发,大概哪个孩子偷放的。
烟花炸响时,茶几上那盆仙人掌跟着轻轻一颤。新芽嫩绿,毛茸茸的,在灯光里晃了晃。我伸手用指尖碰了碰芽尖。软乎乎的,还没长成硬刺。但仔细摸,能感觉到尖端有一点点发硬——它正悄悄变成该有的样子。
三个月后,春天。
办公室租在城西老写字楼四层。二十来平米,朝东的窗,上午阳光会泼进来,把地板晒得发烫。
楼下的法国梧桐才抽新芽。
三月的风路过枝头,嫩绿苞衣簌簌作响,像在窃窃私语。
隔窗能望见菜市场的铁皮顶棚。
下午四五点,喇叭声和讨价还价声准时漫上来——
“三块五!昨天还三块呢!”
“阿姨你看这芹菜多水灵,加一毛嘛。”
起初觉得吵,后来竟品出滋味。
比写字楼上那种真空般的寂静,多了些活气。
办公室的白板被我画满了。
蓝黑马克笔勾勒出两个项目的骨架:左边是客户的安全系统升级,右边是开源社区的技术顾问合同。
陆律师打电话来介绍时,语气难得带了点不好意思:“他们技术底子好,就是缺个懂行的人把关……报酬按市场价上浮百分之十五,你看?”
我盯着白板上交错的箭头,没立刻应声。
电话那头传来纸张翻动的窸窣声。
“合同条款我亲自审过,”他补了一句,“每笔款怎么付,每项成果怎么验,写得明明白白。”
我这才说好。
现在两个项目的收入加起来,比从前工资高出一截。
更重要的是——
没有模糊地带。
没有弹性解释。
没有哪个领导能在年终拍着我肩膀说:“今年绩效是C,奖金要打七折。”
刚接手那阵子,我忙得脚不沾地。
白天泡在客户机房,摸服务器烫不烫手,查日志有没有异常登录。
晚上回来对着一屏幕代码写方案,键盘敲到后半夜。
凌晨三点,电脑屏幕幽幽亮着,耳机里传来开源社区负责人的英式英语:“这个加密模块的漏洞……”
我灌下最后一口冷咖啡,在聊天框里打字:“给我二十分钟,重写验证逻辑。”
有一次我连续工作了三十多个小时没合眼。
靠在椅子上眯了十分钟。
醒来时发现键盘上全是额头压出来的印子。
那种累和以前在公司加班不一样。
以前加班是疲惫的,压抑的,像被人按在水里。
拼命挣扎却怎么也浮不上去。
现在的累是兴奋的,踏实的。
像在爬一座自己选择的山。
每一步都踩在自己想踩的地方。
后来赵志强来找过我一次。
那是个下雨的午后。
我正蹲在办公室地上组装新买的电脑主机。
螺丝刀还没拿起来,门铃就响了。
打开门,他站在走廊里。
头发被雨淋湿了,一缕缕贴在额头上。
比三个月前瘦了不少,颧骨都显出来了。
但他的眼神变了。
不再是躲闪的,紧张的。
而是平静的,像雨后的湖面。
“我找了好几个地方才找到这儿。”
他站在门口,没有进来的意思。
低头看了看自己沾满泥水的鞋。
又看了看我刚拖过的、还泛着水光的地板。
“进来坐吧。”
我从架子上抽了条干毛巾递过去。
他接毛巾时指尖有点凉。
他在沙发上坐下来,动作很轻。
环顾这间小小的办公室。
目光从白板上的架构图慢慢扫过。
扫过书架上排列整齐的技术书籍。
最后停在窗台上那盆小小的仙人掌上。
仙人掌比三个月前长大了一圈。
顶端那个新芽已经变成一根完整的小刺。
旁边又冒出了两个更小的芽点。
嫩绿色的,顶着细细的绒毛。
那盆东西……居然还活着?
他认得它。
在我工位上摆了整整一年的仙人掌,刺都磨秃了几根。
“活得挺好。”
我把浇水的喷壶放下。
“周芸送的。”
“你们还有联系?”
“偶尔聊几句。”
窗外的雨声渐渐密了,玻璃上划开一道道水痕。
“她说新来的陈总改了绩效制度,年终奖怎么算,现在全公司都能看见明细。”
我顿了顿。
“还说技术组的黑名单上,你名字已经撤了。”
他肩膀微微动了一下。
“虽然你辞职了,但新领导坚持要记录——12·18那次故障排查,你提供的帮助。”
赵志强没说话。
他盯着茶几上那盆仙人掌,看了很久。
然后伸手,指尖碰了碰粗糙的陶土盆沿。
雨水把对面菜市场的灯光晕开,黄澄澄的一片,在玻璃上流淌。
他清了清嗓子。
声音有点哑。
“三个月前,会议室里。”
“你说过一句话。”
我等着。
“你说,我从来只是个执行的人。”
他手指停在盆沿上。
“真正该负责的,是让我执行的人。”
雨声忽然大了起来。
“我当时……没敢接话。”
他抬起头。
眼神里有种很沉的东西。
“我怕。”
“怕丢工作,怕在这行混不下去,怕我妈知道我背了处分。”
他笑了一下,很短,很干。
“可你说话的时候,我心里在喊——”
“你说得对。”
他收回手,握成拳,又松开。
“我对不起你。”
停顿。
“也对不起我自己。”
那件事后,公司辞退了我。
我在家待了整整两个月。
每天脑子里就转着一个问题——
我到底是从什么时候起,变成了会替领导捂盖子的人?
他把那盆小小的仙人掌放回玻璃茶几。
动作很轻,像是怕碰碎了什么。
“后来我想通了。”
他声音低下去。
“不是从李建国让我合并那段该死的代码开始的。”
“是从我第一次在绩效评估里,给一个表现很好的下属打了C。”
“那小伙子跟你挺像,技术硬,嘴笨。”
“王建民当时跟我说,名额紧,把他分数拉低点。”
“我照做了。”
他抬起眼,看向窗外。
“从那以后,我就再没什么底线了。”
“底线这东西……不是一次性丢掉的。”
“是一点一点,磨没的。”
我把热茶推过去。
杯子还是原来那个,黑色保温杯,杯身上有道深深的划痕。
他从公司带回家,又跟着我到了这儿。
他接过去,指尖碰到那道痕,顿住了。
“你还留着?”
“杯子又没做错什么。”
他低下头,很短促地笑了一下。
嘴角只动了一瞬,像被什么烫着了似的,迅速收回去。
可那确实是三个月来,我第一次看见他脸上有表情。
“韩林。”
我等他下文。
“接下来怎么办?就一直自己接项目做?”
“先做着看。”
我转着手里同样的黑色杯子。
“如果项目多了,可能得招人。”
“招人有什么要求?”
“技术过硬。”
会不会说话不重要。
但有一件事,必须在面试的时候就讲清楚——
项目上的任何问题,不管多小,必须当面提出来。
反对意见要写在文档里,留痕。
你可以反对我,我也可以反对你。
反对不是不尊重,是把问题摆在桌面上解决,别让它们在底下烂掉。
赵志强没接话。
他盯着茶几上那道水渍划出的圈,食指在膝盖上敲了两下,又停住。
窗外的雨不知什么时候停了。
菜市场的高音喇叭又响起来,一个女声用本地话拖着长音喊:“韭菜——两块五一斤——新鲜的韭菜——”
他把杯底那点凉透的茶喝干净,站起来,从外套内袋里掏出一张对折的纸。
纸边有点毛了,折痕很深,像被反复打开又合上过。
他把它放在茶几上,用指尖轻轻推过来。
“这是我的新简历。”
他的声音比刚才低了些。
创作声明:本文情节均为虚构故事,所有人物、图片、地点和事件均为艺术加工,与现实无关。
本文借虚构故事传递积极价值观,呼吁读者遵纪守法,弘扬友善、正义等正能量,共建和谐社会。
(全文完)