帮单位修好了价值五亿六千万的系统,领导承诺给我一百零八万却只给一千零八十,我笑了:系统再过五分钟就会完全瘫痪,现在求我也没用了
那天下午财务把工资条拍我桌上的时候,我第一眼看见那个数字还以为是小数点打错了。一千零八十块。我盯着看了得有半分钟,又翻出上个月的项目验收单,上面白纸黑字写着:系统修复专项奖励,一百零八万,分三期发放。第一期该到账三十六万。结果工资条上躺着的是一千零八十,备注写的是“加班误餐补贴”。
我拿着工资条去五楼找刘总。办公室门半开着,他正跟几个中层说笑,茶杯端在手里,烟灰缸里戳着三四个烟头。我进去把工资条放他面前。他扫了一眼,脸上的笑没散,说小周啊,这个事呢,公司最近资金链紧,你也知道,外面几个项目款都没收回来,先给你发点补贴表示表示,剩下的等回款了马上补。
我说刘总,验收单上写的是系统修复专项奖励,不是补贴。他摆摆手,说一样的一样的,财务那边走账需要时间,你先回去忙,下个月肯定有说法。
我没动。我说这个系统能跑起来,是我熬了将近两个月,把底层架构整个重新写了。原来的那套东西早就烂透了,随便一个并发就能把数据库冲垮。刘总脸上的笑淡了,说年轻人不要总觉得自己不可替代,公司离开谁都转,这个道理你要懂。
我没再说话,转身出了办公室。回到工位,我打开笔记本,登录了那套价值五亿六千万的生产系统后台。屏幕上跳着一行行绿色的运行日志,一切正常。我点开一个隐藏目录,里面躺着一个我自己写的小程序,安静地运行着,倒计时还剩不到两分钟。
事情得从两个多月前说起。那时候我刚被调到这个项目组,名义上是技术支持,实际上就是背锅的。这套系统是公司花了五亿六千万从外面买回来的,据说是某研究所的成果,专门做大型设备实时监控的。买回来之后就没消停过,三天两头崩溃,最严重的一次直接把三个生产车间的数据全搞丢了,上面查下来,责任全推给运维。
我进去第一周就发现不对劲。这套系统的底层代码乱得跟一锅粥似的,模块之间互相套娃,注释几乎没有,有几个核心进程居然是用一种早就没人维护的脚本语言写的,跑起来内存泄漏得跟筛子一样。更邪门的是数据库里好几张表的主键都对不上,外键约束形同虚设,数据重复写进去不知道多少次。就这玩意儿,标了五个多亿。
我当时跟组长说,这系统得重写。组长看我的眼神像看神经病,说你知道这套系统多少人在用吗?七个生产基地,每天几百万条数据进出,你动一下试试?出了事谁担?我说不动它迟早出大事。组长说你管好你自己那一亩三分地,别给部门找麻烦。
我没听他的。白天正常工作,晚上等没人了,我把代码一点一点扒出来看,越看越心惊。有几个安全漏洞简直离谱,任何人只要拿到一个普通账号,就能顺着接口一路摸到核心数据库,把参数改了都不会留下像样的日志。还有个后门程序,藏在一堆配置文件里,每隔一段时间就往一个外部地址发数据包。我把那个地址记下来查了一下,早几年就被标记成可疑节点了。
这些事我写成报告递上去,石沉大海。后来一次部门会上我提了一嘴,刘总当时脸就黑了,说小周你刚来,很多事情你不了解,不要乱说话。会后组长找到我,压着嗓子说你想死别拉上我,那套系统是上面定的,你知不知道采购合同是谁签的字?
我说再这么下去要出大事。组长叹了口气,说大事小事不是你我能定的,你老老实实待着,等年底调岗吧。
我没等。我知道这套系统要是真出大事,第一个被推出去顶雷的就是我这种没背景的新人。于是我每天晚上等楼里人走干净了,开始动手改。不敢大动,先从外围模块开始,一个接口一个接口地加校验,把能堵的漏洞先堵上。白天系统跑着,我就用备份环境模拟测试,写一段验一段,经常搞到凌晨三四点,第二天早上八点半照样打卡上班。
那段时间我瘦了快十斤,眼窝陷进去,同事问我是不是病了,我说熬夜打游戏。没人信,但也没人再问。大概过了一个月,我发现系统里那个后门程序开始活跃了,日志显示它往外发数据的频率从每天一次变成了每小时一次。我顺着它调用的接口反查回去,发现有人用管理员账号登录过,操作记录被人为删掉了。
我知道不能再拖了。那天晚上我把自己关在机房旁边的隔间里,用备用服务器搭了一套影子系统,把生产库的数据实时同步过来,然后开始做整体迁移。这件事风险极大,稍有差池就是全线崩溃。但如果不做,等那个后门被人利用,整个系统的数据都可能在某个瞬间被抽干或者篡改,到那时连恢复都无从谈起。
连续四十多个小时没合眼,我把核心模块重写了大半,能暂时顶住生产压力的版本终于跑起来了。那天早上系统切换成功,车间那边的反馈是一切正常,数据延迟反而比之前降了一截。我趴在键盘上睡了两个小时,醒来的时候后背全是汗。
后来就是上报、验收、写材料。刘总在总结会上拍着我肩膀,说小周这次立了大功,公司决定给予专项奖励一百零八万,分三期发放。会上还发了红头文件,我拍了照。财务那边也找我要了银行卡号,说流程走完就发。
结果第一期就给我来了一千零八十。
我坐在工位上,看着后台那个倒计时从三分钟跳到两分半。这个小程序是我做迁移的时候顺手写的,逻辑不复杂,就是监测几个核心进程的状态,如果超过一定时间没有收到我写进去的验证信号,就会触发一套应急回滚指令,把系统打回旧版本。旧版本早就千疮百孔,一旦回滚,别说七个生产基地,就连集团总部的数据报表都得乱成一团。
有人会觉得我留这一手太阴。可我想说的是,一个系统值五亿六千万,修它的人被承诺一百零八万,最后到手一千零八十。这一千零八十不是钱多钱少的事,是态度。他们从根上就没打算给,只是想让我把活儿干完,最好还能闭嘴。
倒计时还剩一分多钟的时候,我手机响了。刘总打来的,语气跟上午完全不一样了,问我在哪儿,说小周你赶紧来我办公室一趟,财务那边说走账出了点小问题,我给你解决。
我说不用了,刘总,系统再过五分钟就会完全瘫痪,现在求我也没用了。
电话那头沉默了几秒,然后他嗓门一下子提起来,说你什么意思?你干了什么?我警告你,这是公司财产,你搞破坏要坐牢的!
我挂了电话。坐牢?我把一个本来就要散架的系统撑起来了,他们欠我的奖励不兑现,现在系统要回滚到那个破烂状态,这也能叫破坏?那之前那个后门程序往外发数据的时候,怎么没人说坐牢的事?
倒计时归零。后台日志刷出一大串红色报错,进程一个个挂掉,数据库连接数断崖式往下掉。我没再看屏幕,把手机调成静音,靠在椅子上闭了会儿眼。
过了不到十分钟,整个办公区炸了。电话铃声此起彼伏,有人喊车间数据断了,有人说总部的实时监控页面打不开了,运维组的人像没头苍蝇一样跑来跑去。组长冲到我工位前,脸都白了,问我知不知道怎么回事。我说知道,我干的。
他愣在那儿,嘴张了张,没发出声。我起身去接水,路过刘总办公室门口,里面传出来砸东西的声音,还有人在电话里吼,说必须马上恢复,一分钟都耽误不起。
我没进去。水接回来,我坐回工位,手机上一堆未接来电和消息。刘总发了一条:小周,有事好商量,你先恢复系统,奖励的事我马上给你办。
我没回。上午你跟我说公司离了谁都转,现在你跟我说有事好商量。这才过去几个小时,话风变得倒是挺快。
其实我心里清楚,这事到最后我不可能全身而退。他们有一百种办法把责任推到我头上,说我是恶意破坏生产系统,轻则开除,重则报警。但我也有东西。那套系统的原始漏洞、后门程序、被删掉的操作日志,我早就备份了好几份,存在几个不同的地方。真要把事闹大,谁先坐牢还不一定。
但我不想走到那一步。我只想让他们明白一个最简单的道理:一个人把命都快搭进去给你修东西,你承诺了一百零八万,最后给一千零八十,这不是打发叫花子吗?打发叫花子还得说句好话呢,他直接说公司离了谁都转。
下午三点多,集团总部的人来了。来了七八个,有穿西装的,有背电脑包的,一进来就直奔机房。刘总陪着笑脸跟在他们后面,路过我工位的时候狠狠瞪了我一眼。我没理他。
大概过了两个小时,他们从机房出来,脸色都不太好看。有个戴眼镜的男人走到我工位前,问我是怎么做到让系统在五分钟内全面回滚的。我说没怎么做,就是把迁移前留的应急开关打开了。
他问,你为什么要留应急开关?我说那套旧系统的问题太多了,迁移到新版本之后,我担心新版本有未知风险,留一个回滚机制是标准操作。只是这个回滚机制需要我定期发送验证信号来维持,今天上午我跟刘总谈完之后,信号就断了。
他说你这是在威胁公司。我说我没有威胁任何人,我只是不再义务维持一个本来就不该继续存在的东西。旧系统的问题我早就写过报告,没人处理。新系统我修好了,奖励不兑现。那现在系统回滚到旧版本,正好让大家看看,这五亿六千万买回来的东西到底值不值这个价。
他没接话,转头跟旁边的人低声说了几句,然后对我说,你先把系统恢复,今天的事不追究。
我说恢复可以,先把第一期三十六万打到卡上,我要看到短信到账。
他说这个需要走流程。我说那你们先走流程,我不急。系统瘫着,看谁先熬不住。
他脸色变了几变,最后说小周,你这样搞,以后在这行怎么混?我说我要是把系统修好了,还拿不到钱,那才叫没法在这行混。
晚上八点,集团那边终于松口了。财务连夜操作,给我卡上打了一笔钱,不是三十六万,是五十万。多出来的十四万说是“应急技术支持费”。我看了短信,没说话。然后我打开后台,把回滚指令撤销,系统重新切回新版本。前后不到十分钟,所有数据恢复正常。
车间那边陆续反馈回来,说数据在恢复中,有几个工单补录一下就行。刘总站在我工位旁边,脸上的表情说不上是笑还是怒,最后只憋出来一句:你行。
我说刘总,我不行。我只是个写代码的,公司离了谁都转,这话是你说的。
他没再接话,转身走了。我收拾东西准备下班,经过财务室门口,听见里面有人在议论,说这小子胆子太大了,居然敢拿生产系统要挟公司。另一个说,他这也是没办法,一百多万啊,换你你能忍?
我出了大楼,外面天已经黑透了。手机又亮了一下,是组长发来的消息:兄弟,保重。
我没回。打了个车回家,路上司机在放广播,里面在说什么企业要讲契约精神,要善待技术人才。我听着听着就笑了。
这事还没完。钱虽然到账了一部分,但剩下的六十八万他们肯定不会痛快给。集团那边也不会轻易放过我,今天系统瘫痪这几个小时,损失少说几百万,这笔账他们早晚要算。可我手里有他们最不想让人看见的东西。那个后门程序是谁装的,数据发到哪儿去了,管理员账号是谁在深夜登录的,删掉的日志里藏着什么。这些事捅出去,就不是几百万的事,可能得有人进去。
我回到家,瘫在沙发上,手机扔在一边。厨房里冷锅冷灶,冰箱里还剩半包挂面和两个鸡蛋。我懒得动,就那么躺着,盯着天花板上那盏不太亮的灯。
脑子里乱糟糟的。有时候我会想,要是当初没留那个应急开关,今天是不是就认了那一千零八十?或者再往前,要是压根没接这个活儿,现在是不是还在原来的部门混日子,啥事没有?
可世上没有要是。有些事你做了,就只能扛到底。系统我修了,钱我拿了,脸也撕破了。接下来的路不好走,但至少我不用再在凌晨三四点对着那堆烂代码,一边修一边担心自己哪天被推出去当替死鬼。
手机屏幕又亮了,一个陌生号码。我接起来,对方说是集团人力资源的,让我明天上午去总部一趟,谈一下工作安排的事。我说好,几点?对方说九点。我说行。挂了电话,我把手机扣在胸口上。
明天九点,总部。不知道等着我的是什么。是继续谈钱,还是秋后算账,或者是把我调去一个没人愿意去的部门。但有一件事我确定:那套系统现在能跑起来,是因为我还没把它彻底交出去。他们要是觉得可以随便拿捏我,那下次再瘫痪的时候,希望他们能找到第二个愿意在半夜三更爬起来改代码的人。
我翻了个身,从沙发上坐起来,去厨房煮了碗面。面煮得有点坨,鸡蛋也散得不成样子。我端着碗站在阳台上,楼下小区里几个老太太在遛弯,远远近近的灯火亮着,跟平时没什么两样。
这个世界离了谁都转。可有些东西,离了那个“谁”,就是转不动。
碗里的面凉得差不多了,我扒拉了两口,忽然想起白天那个戴眼镜的男人问我的话。他说你这样搞,以后在这行怎么混。我当时没答。现在想想,这行早就不是靠混出来的。靠的是你能不能被人替代。你越不可替代,别人就越想用最少的钱把你套住。等你真的被套住了,他们就会告诉你,公司离了谁都转。
所以别信什么承诺。红头文件也好,领导拍肩膀也好,只要钱没到卡上,就都是屁话。我这次是运气好,手里有牌。可有多少人手里没牌呢?那些被欠薪的、被画饼的、被一句“下个月再说”拖了半年一年的,他们怎么办?忍着?还是像我一样,把东西砸了重新来过?
面吃完了,我把碗放进水池里。手机又响了,这次是财务发来的消息,说剩下的奖励会按计划分两期发放,下一期时间没写。我回了个“收到”。
窗外起风了,吹得楼下的树叶子哗啦哗啦响。我站在那儿看了一会儿,忽然觉得挺没劲的。这世上的事,怎么总得闹到这一步才有人把你当回事。
我回到屋里,打开电脑,登录了那套系统。一切正常,新版本的日志在安静地滚动。那个应急开关还在,只是这次我把信号周期改得更短了。
不是我不信任他们。是我不敢了。
躺到床上的时候已经快十二点了。手机最后亮了一下,是组长又发来一条:兄弟,明天去总部,该带的东西都带上。
我知道他指的是什么。那几份备份,那些截图,那些他们拼命想抹掉的记录。我回了个“嗯”。
把手机充上电,我闭上眼睛。明天的事明天再说。系统现在好着呢。至于能好多久,那就看他们怎么做了。
我没再想下去。窗外有辆车经过,车灯扫过窗帘,亮了一下,又暗下去。
《全文完》
热门跟贴