1
磷火
今夜,又是凌晨三点。
中央空调早就停了,这鬼地方的空气黏得像化不开的浓痰,泡面的酸腐味混着汗腥,闷得人五脏六腑都错了位。脖子后面那根筋,一下,一下,跟催命的鼓点似的,抽着疼。我疑心再这么熬下去,不等猝死,这根筋先能把我脑子勒爆,然后流一地浆糊。
我敲下最后一个分号,屏幕上的代码终于不再报错,整个世界都安静了一瞬。我长长吐出一口浊气,总算把手头这个紧急bug给解决了。我揉了-揉发胀的太阳穴,指尖刚搭上鼠标,准备点开邮箱看看下一个催命符是什么,却见一封标着红色感叹号的邮件,赫然排在最顶上。它闪着刺眼的红光,像个地狱来的邀请函。
我盯着发件人和标题,心里一阵冷笑。
发件人:赵志强
时间:昨天
17:58
这孙子算得多准。掐着他自己下班,或者说掐着他踏进夜店包厢、搂着嫩模、酒池肉林的黄金时段,给我们这群窑工安排好一整宿的活儿,然后自己安心地去睡他的金丝楠木大床。
内容简洁得如同死神的判决书:
@我
客户又说主数据接口慢了0.3秒。查!明早九点前,优化方案放我桌上!
又是明早。我瞥了眼屏幕右下角的时间——03:19。这明早离现在,也就够睡个囫囵觉的工夫。不,对我这种加班狗来说,睡个囫囵觉都算奢侈。一股馊了的铁锈味从胃里涌上来,我死死咬住后槽牙,才没当场吐在键盘上。这哪里是0.3秒的问题这是拿老子的命,去换他那0.3秒的效率!
人到中年,三十五岁,失业半年,简历投了几百份,最后落到这外包岗上,驻场办公。说是工程师,其实跟旧社会的窑工没两样,只不过我们烧的不是炭,是命。赵志强就是那监工的把头,他嘴里的进度,就是抽在我们身上的鞭子,不管白天黑夜,不分周末年节,抽得我们皮开肉绽。完不成扣绩效。理由都不用给,反正你也没地方说理去。
我闭上眼,想缓口气,眼前却是我家那张旧照片。照片里,我头发还算茂密,抱着刚满周岁的儿子,笑得没心没肺,傻得可以。媳妇儿李娜靠着我,眉眼弯弯,阳光洒在她头发上,是金色的,晃得人心头发暖。那时候,天还总是蓝的,梦想也还未曾被现实的泥泞彻底吞噬。
2
血色黎明
砰!
一声闷响,吓得我一哆嗦。那声音,像重锤敲在心房。
扭头一看,隔壁工位的老张,一头栽在了键盘上,软塌塌地滑到了地。他头发花白,脸色灰败,嘴唇都泛了青,像块风干的树皮,趴在地上。
我心里猛地一紧,赶紧过去喊他:老张!老张!你没事吧!
他眼皮抖了抖,睁开条缝,那眼神里透着一丝痛苦和疲惫,嘴里含含糊糊地念叨:……孩子……明早……家长会……声音细若蚊蚋,却像根钢针,狠狠扎进我心里。
我刚想弯腰把他扶起来,后颈猛地传来一阵灼烧般的剧痛,像一根烧红的铁钎插了进来。这该死的颈椎病也来催命了,我右臂无力,使不上劲,只得双膝跪地,用左手和整个身体的重量,才勉强把他扶坐起来。
老张,别扛了,我把午休椅给你弄过来,你躺会儿!我喘着粗气劝他。
他摆了摆手,手捂着胸口,上气不接下气地说:不行……进度……还差一点……明天,孩子家长会……不能睡……
这句话像一记闷锤,砸在我心口,我竟不知如何作答。我们这样的人,连倒下的资格都没有。
老张伸出颤抖的手,指了指他的抽屉:药……抽屉里……周一刚拿的……心脏……不太好……
我的手也跟着一颤。那瞬间,脖子的剧痛仿佛消失了,取而代之的是一股刺骨的寒意,从尾椎一路窜上天灵盖。同情无奈都不是。那是一种恨,恨这世道的不公,恨自己的无能,恨这毫无人性的项目,像一头怪兽,贪婪地啃食着我们的血肉。
我默默地找出药瓶,倒出两粒,连同水杯一起递给他。
保重身体。我听见自己用一种空洞的声音说,老婆孩子,都指望着你。
这话是说给老张听的,又像是说给我自己听的。是我们这类人,在悬崖边上,唯一的、也是最无力的慰藉。
放眼望去,这偌大的办公区,像一片坟场。零星亮着的几盏灯,就是鬼火。灯下,是一张张跟我一样蜡黄、麻木的脸。
赵志强那间玻璃办公室,黑着灯。他自然是睡得安稳。
我慢慢坐回自己的位置,盯着那封来自昨天的邮件,颈椎的剧痛和胃里的翻江倒海,忽然都消失了。心里,一片死寂。
窗外,天际线透出了一丝死鱼肚般的灰白。我知道,我的明早,已经开始了。
3
送别
老张被送上救护车,红蓝警示灯在漆黑的写字楼下闪烁,像两只血红的眼睛。我和另一个后端同事把他扶上了车,看着他苍白的脸被推进车厢,心里像堵了块磨盘。我俩都没敢跟车去医院,只给老张家人打了电话,然后就赶紧折返回公司。时间,已经指着早上七点。
赶紧搞定自己的代码,不然明天扣你绩效!这话像魔咒,从赵志强嘴里吐出来,能生生把人逼疯。
我敲着代码,脑子里却全是老张那句孩子……家长会……他倒下了,谁替他去我们这群人,为了那点微薄的薪水,把命都赔上了。
8点50分,公司大群里弹出一条消息,来自项目小组长,是赵志强的狗腿子:
@张工,bug还没解决,昨晚干嘛去了
我看着那条消息,一口气差点没上来。老张都躺在急诊室了,这帮人还在催命!甚至没提老张的死活,只字不提通宵加班,只字不提我们熬的夜,仿佛我们就是机器,只要没倒,就得永不停歇地运转。
我的手指在键盘上停住了。我深吸一口气,在群里回复:
张工突发急症已经叫120送医院了,我这边正在合并他的代码,预计三十分钟内完成。
发完消息,我死死盯着屏幕,心想,这下他们总该收敛点了吧。结果呢
项目总监赵志强,直接@我:
进度呢怎么没看到提交记录项目推迟发布30分钟,这个责任谁来负!
我看着他的名字,只觉得胃里翻腾得厉害,像要涌出胆汁。这狗娘养的,还在追着责任,追着那该死的进度!仿佛人命在他眼里,连个屁都不是!他那张油光锃亮的脸,此刻仿佛就浮现在屏幕上,带着那惯常的假笑,以及眼底深处那抹精明的算计。
我手指都在颤抖,可我的眼神却前所未有的坚定。我回复:
报告总监,已完成合并,正在部署。
我用最快的速度完成了任务,确保系统能在预定的高层视察前上线,一切看起来完美无瑕。
data-fanqie-type=pay_tag>
4
抉择
一天下午,一个电话打破了我宁静的思绪。
电话是我媳妇儿打来的。
陈默!大好事!她的声音透着一股压不住的喜悦,像一道闪电,硬生生劈开了我这间铁壁牢笼。我那篇论文评上优了!老家市里那所重点中学,直接给了我offer,带编制的!咱们可以回去了!把这房子卖了,贷款一还,还能剩不少呢!
听到这个我有一种如释重负的快感,老婆自从博士毕业后没工作几年就结婚在家带娃,为了家庭放弃工作当全职妈妈,这事是埋在我心底的一块心病,是我无能,对不住她,没给她带来好的生活。
之前所有受的不公和委屈都没了,老天是公平的只是迟到了一点而已。
回家回那个有江有树,走两步就能吃到热乎乎小馄饨的家,是在外漂泊谋生游子的终极梦想。
……他们让下个月就去报到。媳妇儿的声音把我拉了回来。
下个月我心里一盘算,这么快,还没有做好心理准备呢。
必须走,家庭的安稳,媳妇儿的笑脸,儿子的成长……这一切,不就是我在这儿当牛做马的全部理由吗这是一个完美的逃生舱,能立刻把我们带离这片苦海。
怎么不说话媳妇儿察觉到了我的沉默。
我回过神了,心里有些矛盾,我是想回去,但不想这么快。
刚想说什么,忘了。
陈默,这房子……这工作……咱们不要了,行不行我总觉得你太累了。媳妇儿的声音带着一丝恳求。
媳妇儿,我听见自己的声音,沙哑得厉害,……太好了。这是天大的好事。
我顿了顿,深吸一口气,把心里所有的波澜都往下按了按。
只是,这个项目,是我一手带起来的,算我心血。让我……让我在走之前,把它做完吧,你先回去,我晚一点
电话那头,媳妇儿沉默了片刻,轻轻嗯了一声。我知道。
挂了电话,我陷入了沉思,盘算着后面的路该怎么走。
5
最后的稻草
发薪日那天,工资条像一记响亮的耳光,抽在每个人的脸上。
我和另外几个核心开发,工资都被扣了30%。理由那一栏,白纸黑字写着:因项目推迟发布30分钟,造成严重影响。
我看着那串数字,没愤怒,只觉得可笑。老张的命,就值这30%的工资我们的通宵达旦,换来的就是这句冰冷的严重影响
更狠的还在后面。HR找老张的家属谈话,说是老张请假时间太长,严重影响项目进度,公司决定予以辞退。没有赔偿,没有慰问,只有一纸冰冷的解聘通知书。
老张的家属不愿意签字,大闹了一场,说最低基数的二档社保没有办法报销住院补贴,已经没有钱交医药费了,实在活不下去。
HR回复说给员工交的都是一等社保,是甲方项目组为了降低成本私自改成了最低基数的二等社保,只有这个项目是二等,其它都是一等。
消息传开,整个项目组死气沉沉。大家不说话,但那压抑的沉默,比任何咆哮都更震耳欲聋。我们像一群被蒙住眼睛拉磨的驴,唯一的区别是,驴累死了,主人还会心疼一下损失,而我们倒下了,只会被当成垃圾一样清扫出去,好给后面的驴腾地方。
这根稻草,终于压断了我心里最后一根紧绷的弦。
我不再犹豫。
当晚,我给媳妇儿回了个电话。
房子挂出去了吗我问,声音平静得像一潭死水。
挂了,中介说现在行情不好,看的人多,真心想买的少。你那边……项目什么时候能完她的声音里带着小心翼翼的试探。
快了。我说,就差最后收尾了。这个项目对我挺重要的,做好了,履历上好看,以后回老家找工作也方便。
我撒了谎,脸不红心不跳。我知道,这个项目结束后,我的履历上只会留下一个巨大的污点,甚至可能再也无法在这个行业立足。
电话那头是长久的沉默,最后只剩一声叹息和一句保重身体,便挂断了。
我握着手机,冰冷的机身仿佛将寒意传到了心里。窗外的夜,深不见底。
6
陷阱
一周后,项目架构评审会。
会议室里,空气和投影仪的风扇声一样沉闷。赵志强坐在主位,手指不耐烦地敲着桌面,催促着:时间不多,甲方那边催得紧。架构方案必须今天定下来,谁有想法,赶紧说。
几个年轻同事面面相觑,没人敢先开口。
我清了清嗓子,站了起来。
赵总监,我有一个方案。我将准备好的U盘插入电脑,屏幕上立刻出现了一份详尽的PPT,标题是——《基于凤凰框架的高并发解决方案》。
‘凤凰’赵志强皱了皱眉,显然没听过这个名字。
是的。我指着屏幕上那些复杂的架构图和性能对比曲线,开始了我准备已久的表演。这是一个新兴的开源框架,优点是极其轻量化,性能卓越,尤其在处理瞬时高并发请求时,响应速度比市面上主流的框架快了将近30%。最关键的是,它的代码足够简捷,可以大大缩短我们的开发周期,完全能赶上甲方的死线。
我的语速不快,但每一个字都透着专业和自信。PPT上的那些图表和数据,足以让任何一个技术外行头晕目眩。
赵志强果然很受用,他看着那条陡峭向上的性能曲线,眼睛都亮了,脸上的不耐烦变成了赞许:嗯……不错,这个方案听起来很有吸引力。能缩短周期,还能提升性能,一举两得。
就在他准备拍板时,一个沉稳的声音响了起来。
我反对。
说话的是老吴,一个和老张年纪相仿的资深程序员,也是组里唯一一个能和我掰掰技术手腕的人。他扶了扶眼镜,表情严肃:赵总,陈默。这个‘凤凰’框架我昨晚查了一下,社区太小了,最新的版本是半年前发布的,核心开发者只有两个人。这种框架,我们谁都没用过,里面的坑有多深,谁也说不准。万一出了问题,连个救火的人都找不到。这个风险太大了。
会议室的空气瞬间凝固了。赵志强的脸色沉了下来。
我心里冷笑,但脸上却露出一副被质疑但愿意虚心探讨的诚恳表情。
吴哥,您的顾虑我明白。但风险和机遇并存。我转向他,不慌不忙地说道,社区小,说明它还没被商业化过度污染,技术纯粹。开发者少,恰恰说明核心团队稳定且高效。我已经和核心开发者通过邮件联系上了,对方承诺会提供最高优先级的技术支持。至于坑……
我顿了顿,环视一周,最后目光落在赵志强身上:任何新技术都有坑,但我们不能因为怕踩坑就固步自封。我相信以我们团队的技术实力,完全有能力填上这些坑。而且,一旦这个项目成功,我们不仅向甲方证明了我们的技术实力,在座各位的履历上,也是浓墨重彩的一笔,不是吗
这番话,句句都说到了赵志强的心坎里。他要的就是亮点,是能向上级吹嘘的政绩。
老吴,你的想法太保守了!赵志强果然立刻表态,语气带着一丝训斥,我们做技术的,就是要敢于创新!老陈说得对,风险和机遇并存!出了问题,大家一起扛,我来负责!这事就这么定了,用‘凤凰’!
老吴张了张嘴,还想说什么,但看到赵志强那不容置喙的表情,最终只是叹了口气,坐了下去。
会议结束,大家陆续离开。老吴走过我身边时,停下脚步,用只有我们两人能听到的声音说:陈默,你到底在想什么这不像你,你不是这么冒进的人。
我抬起头,迎上他复杂的目光,平静地回答:吴哥,有时候,人是会变的。
他深深地看了我一眼,摇着头走了。
看着他离去的背影,我缓缓地合上了笔记本电脑。
7
狂欢
项目发布会如期举行。
赵志强站在聚光灯下,容光焕发。他口若悬河,将凤凰框架吹嘘成引领行业未来的技术革命,将项目的成功归功于自己力排众议、敢于创新的卓越领导力。
台下,甲方领导和公司高层们听得频频点头,掌声热烈。
演示环节,一切都完美得像教科书。系统流畅,界面华丽,性能数据好得惊人。甚至在甲方临时提议下进行的真实数据压力测试,系统也扛住了,表现得无懈可击。
发布会取得了空前的成功。
庆功宴上,赵志强喝得满脸通红,端着酒杯,挨个拍着我们的肩膀,说着不着边际的许诺。他走到我面前,用力地拍了拍我,酒气熏天:老陈!你这次是头功!项目奖金,我给你申请最高的一档!好好干,年底的晋升,我保你!
我微笑着,举起酒杯,一饮而尽。辛辣的液体滑过喉咙,像火在烧。
周围是震耳欲聋的欢呼和吹捧,我却觉得异常安静。我看着赵志强那张得意忘形的脸,看着他被众人簇拥在中心,像个凯旋的君王。
我悄悄地退出了喧闹的包厢,走到酒店走廊的尽头。外面下起了雨,冰冷的雨点打在玻璃窗上,汇成一道道水痕,像眼泪。
我拿出手机,拨通了媳妇的电话。
娜娜,我这边……结束了。
……你没事吧电话那头,她的声音里满是担忧。
没事。我靠着冰冷的墙壁,看着窗外模糊的霓虹,长长地吐出一口气,等我处理完手头的事,就买票回去。
8
审判
两周后,一个平静的周一。
灾难,在毫无征兆中悄然降临。
下午两点,公司CEO和法务总监的秘书几乎同时冲进了我们办公区,神色慌张,直奔赵志强的办公室。几分钟后,赵志强面如死灰地走了出来,声音都在颤抖:所有核心人员,立刻到大会议室开会!立刻!
会议室里,气氛凝重得能拧出水来。
公司CTO(首席技术官)脸色铁青地站在前面,他身后的屏幕上,是一封来自甲方的、措辞严厉的律师函。
就在今天上午,CTO的声音冰冷得像手术刀,甲方通知我们,他们的核心数据库遭到入侵,大量未公开的财务数据、客户资料和商业合同被窃取,部分数据已经在暗网上公开售卖。初步估计,直接经济损失超过八个亿,品牌声誉……已无法估量。
轰的一声,会议室里所有人都炸了。
经过甲方安全团队和我们技术部的初步排查,CTO的目光如利剑般扫过每一个人,入侵的源头,直指我们两周前刚刚上线的这个项目。
所有人的目光,瞬间聚焦到了赵志强身上。
赵志强腾地站了起来,汗如雨下,嘴唇哆嗦着:不可能!绝对不可能!我们的系统固若金汤!上线前经过了最严格的测试!
是吗CTO冷笑一声,将一份报告拍在桌上,那你来解释一下,为什么你们要选用一个在黑客圈子里半公开存在‘远程代码执行漏洞’的框架一个连官方都已经放弃维护的框架
什么……什么漏洞赵志强彻底懵了,他转向我,眼神里充满了求救和困惑,老陈,你不是说……
赵总监,我没等他问完,便站了起来,语气平静而客观,在当初的评审会上,我和老吴都明确提出过,‘凤凰’框架存在巨大的未知风险。是您,力排众议,坚持使用,并且在会上亲口说——‘出了问题,我来负责’。
我打开自己的笔记本电脑,连接上投影仪。屏幕上,清晰地显示着那次评审会的会议纪要,以及赵志强回复给我的那封邮件——就这么定了,用‘凤凰’!
白纸,黑字,铁证如山。
老吴被叫了进来,他只是把当初的担忧如实复述了一遍。
赵志强瘫坐在椅子上,面如死灰,一句话也说不出来。他终于明白,他当初引以为傲的魄力和创新,不过是我为他精心搭建的、通往地狱的阶梯。而他,兴高采烈地亲手为自己剪了彩。
当天下午,赵志强被公司停职,接受内部调查和警方的问询。听说,甲方提出的天价索赔,足以让这家分公司直接破产。
我回到工位,默默地收拾好自己为数不多的东西,在OA系统上提交了辞职申请。
走出写字楼的时候,阳光正好。我眯起眼睛,看到一架飞机从头顶飞过,拉出一条长长的白线。
我拿出手机,订了一张第二天最早回老家的票。
屏幕上跳出确认信息,我笑了。那是在这座城市里,我第一次发自内心地笑。
我给老张发了一条消息
老张,现在身体好些了吗,你之前说的哪个框架,在项目上用了,效果很好
手机震动了一下,是一条新消息,来自老吴。
内容只有四个字:一路顺风。
9
归乡
火车到站,汽笛一声长鸣,拉开了故乡的天空。
我拖着行李箱走出车站,一眼就看到了她。李娜穿着一件简单的白色连衣裙,站在午后灿烂的阳光里,正踮着脚朝人群里张望。旁边,儿子举着一块自己画的牌子,上面歪歪扭扭地写着:欢迎爸爸回家!
看到我,她先是愣了一下,随即眼圈就红了,向我走来。
爸爸!儿子挣开她的手,像颗小炮弹一样冲进我怀里。
我把他高高举起,用胡茬去蹭他的脸蛋,他咯咯地笑个不停。那笑声,像一把钥匙,瞬间打开了我心里所有生锈的锁。
李娜走到我面前,什么也没说,只是伸手,轻轻抚平我衬衫上的褶皱,又帮我理了理被风吹乱的头发。她的指尖温热,带着让我心安的熟悉气息。
瘦了。她看着我,轻声说。
没事,回来养养就胖了。我笑着,接过她手里的车钥匙。
回家的路上,车窗外的风景慢了下来。不再是高耸入云的玻璃幕墙,而是低矮的民居、翠绿的稻田和远处连绵的青山。空气里,有青草和泥土的味道。我路过那所重点中学,红砖墙上爬满了藤蔓,能听到里面传来朗朗的读书声。
我教高一的语文。李娜看着学校,脸上是满足的笑意,儿子也安排好了,就在我学校旁边。
挺好。我点点头。
车里安静下来,只有风声和儿子的哼歌声。
你……后悔吗她最终还是忍不住问了,声音很轻。
我握着方向盘的手紧了紧,看着前方延伸的马路,许久,才缓缓开口:不后悔。只是有时候会想,如果不是被逼到那一步,会不会有更好的方式。
我没有告诉她全部的真相,那些最黑暗、最决绝的部分,将永远烂在我心里。我只告诉她,我用合法合规的方式,让一个不负责任的管理者,为他自己的决策付出了代价。
她似乎明白了什么,不再追问,只是伸过手,轻轻覆在我的手背上。
都过去了。她说,欢迎回家,陈老师。
是的,陈老师。
三个月后,我成了本地一所职业技术学院的计算机代课老师。工资不高,课也不多,每天能准时下班,去学校接儿子,然后和李娜一起,牵着手,在夕阳下散步回家。
我的颈椎病好了很多,胃也不再疼了。晚上,能一觉睡到天亮。
偶尔,我也会在行业新闻的角落里,看到那家公司破产清算的消息,看到赵志强因为涉嫌渎职和商业欺诈被提起公诉。我只是平静地划过,心里再无波澜。
那个充满恨意和算计的代码幽灵,连同那座压得人喘不过气的城市,都留在了过去。
这天傍晚,我们一家三口在江边散步。夕阳把江面染成一片温暖的金色,晚风吹来,带着水汽和花香。儿子在前面追着一只蝴蝶,笑声清脆。
李娜把头靠在我的肩膀上,轻声说:你看,今天的天真蓝。
我抬起头,看着那片被晚霞浸染的、一望无际的天空,点了点头。
是啊,天还总是蓝的。
我,回家了。