都市情绪狩猎者
代码不会骗人,但人会------------------------------------------,已经整整四十分钟没眨眼。,而是因为他不敢。,每一个函数、每一个参数都烂熟于心。那是一个支付接口的签名校验逻辑,看着普普通通,但沈炼知道,这里面藏着一个***定时**。,组长李伟把他拉进一个临时会议,语气急促地说有个紧急需求要上线,让他加个班处理一下。沈炼当时还在改另一个项目的*ug,抬头看了一眼时间,晚上九点四十。他犹豫了两秒,还是点了头。。,说白了就是人和驴的差别。驴干完活还能歇会儿,他不行。他头上顶着“外包”两个字,就像是脸上刻了四个字——随便使唤。,特意嘱咐了一句:“直接上线就行,我已经review过了。”。他做这行五年了,什么样的代码能上线、什么样不能,他一眼就能看出来。这个包里的代码逻辑很奇怪,像是有人在中间强行塞了一段东西。但李伟是组长,是他的直属领导,一个外包员工质疑领导的代码,这不是找不痛快吗?,还是照做了。。,运营部门突然炸了锅。**数据显示,有一笔大额订单的支付状态出现了异常,用户扣款成功了,但系统显示未支付。紧接着是第二笔、第三笔,像多米诺骨牌一样哗啦啦倒了一片。,玻璃墙里面坐着李伟和产品总监,还有两个技术部的核心骨干。沈炼坐在工位上,心脏砰砰跳,他能感觉到周围同事投来的目光,有的是同情,有的是幸灾乐祸,更多的是那种“还好不是我”的庆幸。,李伟推门出来,脸色铁青。,最后落在沈炼身上,像是猎鹰锁定了兔子。沈炼心里咯噔一下,那一瞬间他就知道,这口锅要扣在自己头上了。“沈炼,过来。”
他站起身,发现自己的腿有点软。
会议室里的空气很闷,中央空调的冷气吹不到这个角落,桌上还摆着刚才开会时留下的纸杯,里面的咖啡渍干成了一滩褐色的印子。产品总监赵峰坐在主位上,手指有一下没一下地敲着桌面,那个节奏让沈炼心烦意乱。
“线上支付故障,”赵峰先开了口,语气不轻不重,但每个字都像是秤砣,“影响用户三百四十七人,涉及金额大概十二万。技术排查的结果是什么?”
李伟看了沈炼一眼。
就是这一眼,沈炼全明白了。
“小沈上周五提交的那个版本,”李伟说,声音不大,但在安静的会议室里显得格外清楚,“里面有一段签名校验的代码逻辑有问题,我们review的时候没注意到,是我的疏忽。”
他说“我们”,但所有人都听得出来,这个“们”字是客气。意思是——沈炼写的,我作为组长扛了一部分责任,但主要责任还在沈炼。
“我没——”沈炼刚要开口,就被赵峰抬手打断了。
“代码是你写的吗?”
“……是。”
“上线是你操作的?”
“是,但是——”
“那还有什么好说的?”赵峰靠在椅背上,语气里多了一丝不耐烦,“小沈,你来公司也快一年了吧?这种低级错误,不应该。”
沈炼的血一下子涌上了脑门。他想说那段代码的核心逻辑是李伟打包好的,他只是执行了部署命令;他想说他在群里问过三次有没有人review过,李伟每次都回了“没问题”;他想说他甚至提醒过这代码可能有隐患,但消息发了之后没人理他。
但这些话到了嘴边,又咽了回去。
因为他看到了李伟的表情。
那个四十多岁的中年男人微微低着头,嘴角向下撇着,看起来像是在自责。但沈炼注意到他的眼神——李伟的眼睛正盯着桌面上某个不存在的点,那是一种很微妙的神情,不是愧疚,是笃定。笃定沈炼不会说,也不敢说。
说又怎么样呢?他有聊天记录为证,但聊天记录里李伟说的是“我已经review过了”,没有截屏、没有邮件、没有任何正式文档。这东西拿出来,顶多算是个参考意见,改变不了“代码是沈炼写的、上线是沈炼操作的”这个事实。
更重要的是,沈炼是合同工,李伟是正式编制的组长。公司上上下下都认识李伟,而他沈炼不过是个工牌都和别人颜色不一样的外包。
他没有胜算。
“公司对这次事故的处理意见是,”赵峰开口了,“小沈承担主要责任,考虑到影响较大,建议你主动提离职,这样对大家都好。”
主动提离职。
这四个字像一盆冰水从头浇到脚。沈炼愣了两秒,然后听到自己的声音说:“这是让我背锅?”
会议室里安静了一瞬。
李伟猛地抬头,眼神里闪过一丝慌乱,但很快被他压下去了。赵峰皱起眉头,手指停止了敲桌面的动作。
“什么叫背锅?”赵峰的声音冷了下来,“责任在你,公司已经很大度了,没有走法律途径追究你的赔偿责任。你想想,十二万的损失,公司完全可以——”
“那段代码不是我写的。”
沈炼打断了赵峰的话。他知道自己冲动了,但他控制不住。在这个公司忍了十一个月,每天加班到十一二点,周末随叫随到,连女朋友都因为他没时间陪而分手了。他忍了这么久,换来的是替别人背黑锅。
李伟的脸色变了。他咳嗽了一声,说:“小沈,我知道你心里有气,但咱们一码归一码——”
“那你能不能解释一下,”沈炼盯着李伟,声音有点发抖,但不是因为害怕,是因为愤怒,“为什么那段代码里的签名算法和你之前给我发的demo一模一样?连注释里的错别字都一样?”
李伟张了张嘴,没说出话。
“够了。”赵峰站了起来,“这件事不需要在这里争论。沈炼,公司已经决定了,你要是觉得委屈,可以走劳动仲裁。但我提醒你,公司有完整的git提交记录和上线日志,法律**站不住脚。”
沈炼看着赵峰的背影,突然觉得特别好笑。
他想起了自己刚入职时的样子。那时候他刚从上家公司离职,手里攒了不到两万块钱,房租押一付三直接干掉了一万二,剩下的钱撑不了两个月。他急着找工作,在**网站上看到这家公司的外包岗位,薪资还可以,就投了简历。
面试的时候李伟笑眯眯的,说公司氛围很好,大家都是兄弟,有活一起干有钱一起赚。沈炼当时就信了。
现在想想,信别人画的大饼,是他犯过的最蠢的错误。
从会议室出来的时候,外面的天已经黑了。
沈炼收拾东西,把他工位上的东西一样一样装进纸箱子里。其实也没什么好收拾的,一个水杯,一个笔记本,两支没水的签字笔,还有一个他花了三十块钱买的桌面小风扇。他的工位在最角落,靠着消防通道,空调吹不到,夏天热得要死,他自费买了个风扇,现在也要带走了。
旁边工位的小王假装在看代码,但鼠标半天没动过。对面的张姐倒是直接,站起来说了句“小沈,保重”,然后就去接水了。
没有人问为什么,也没有人说一句公道话。
沈炼不怪他们。成年人的世界就是这样,每个人都有自己的房贷要还、孩子要养,没必要为了一个没什么交情的外包同事得罪领导。换了沈炼自己,他也不敢保证自己会站出来。
他把工牌放在桌上,抱着纸箱子走出了办公室。
电梯里只有他一个人。他看着电梯门上映出来的自己,头发乱糟糟的,黑眼圈重得像被人打了两拳,嘴角往下撇着,看起来就是一副倒霉相。他才二十六,看起来像是三十六。
走出写字楼的时候,天上下起了雨。
不是那种淅淅沥沥的小雨,是那种突然之间就倒下来的暴雨。沈炼站在写字楼门口的雨棚下面,看着雨帘像瀑布一样挂在面前,心想老天爷你可真会挑时候。
他没带伞。早上出门的时候天气预报说晴天,他就把伞扔在家里了。现在好了,工作没了,还要淋着雨回家。
沈炼抱着纸箱子冲进了雨里。
雨点砸在脸上生疼,没几秒钟他就浑身湿透了。纸箱子被雨水泡软,底儿直接塌了,东西撒了一地。水杯滚到了马路上,被一辆经过的出租车轧过去,咔嚓一声碎了。
他蹲在地上,把笔记本和签字笔捡起来,看了看那个碎成渣的水杯,突然就觉得鼻子一酸。
这是他女朋友——不,前女友,送他的。在一起三周年的时候,她送了他一个保温杯,说“你总是不记得喝水,这个保温效果好,你倒一杯能喝半天”。杯子上面还刻了一行字,“沈炼,记得多喝水”。
分手的时候她把所有东西都拿走了,就这个杯子没要。沈炼知道她不是忘了,是觉得他可怜,不好意思连杯子都带走。
雨水混着眼泪顺着脸颊往下淌,沈炼分不清哪个是哪个。
他把碎杯子留在马路上,抱着一堆破烂回了出租屋。
出租屋在城中村,离公司骑车要四十分钟。说是单间,其实就是一间隔出来的隔断,进门就是床,厨房和卫生间挤在一起,转身都困难。月租一千八,占他工资的五分之一。
沈炼把湿透的衣服脱了扔在地上,光着膀子坐在床上,盯着墙上的电费催缴单发呆。
单子上写着欠费三百二十七块钱,再不交就要断电了。他的***里还剩四千二,交完房租就剩两千多,撑不了多久。
手机震了一下。
他拿起来看,是前同事陈磊发来的微信:“炼哥,听说你走了?李伟那***又甩锅了?”
沈炼没回。
又震了一下:“你别着急,我这边认识一个外包公司的HR,要不要帮你问问?”
沈炼想了想,打了一行字:“好,谢谢。”
然后他放下了手机,躺倒在床上。
天花板上有一块水渍,形状像是某个**的版图,沈炼之前无聊的时候研究过,觉得像智利。现在他看着那块水渍,脑子里乱糟糟的,一会儿想起李伟那张假惺惺的脸,一会儿想起赵峰那句“主动提离职,对大家都好”,一会儿又想起杯子碎在马路边上的声音。
人活着到底是为了什么呢?
他闭上眼睛,迷迷糊糊地睡着了。
他做了一个梦。
梦里他站在一片漆黑的空间里,没有上下左右,没有声音,什么也没有。他想喊,但发不出声音。他想跑,但脚底下没有地面。
就在他快要被这种虚无逼疯的时候,眼前突然亮起了一行字。
那行字像是用火焰写的,在黑暗中一跳一跳地燃烧着:
“情绪超频系统绑定中……10%……30%……”
沈炼猛地睁开了眼睛。
他还躺在出租屋的床上,窗外的雨还在下,电费催缴单还贴在墙上。一切都没变,除了他的眼睛。
他看到的东西变了。
那个电费催缴单上面,除了打印出来的黑色字体,还多了一行不断跳动的数字。
残留情绪值:焦虑 83%,无助 57%,愤怒 12%
他揉了揉眼睛,数字还在。
他看向别处。墙角那堆脏衣服上面飘着一串数字:愧疚 21%。桌上那个外卖盒上面:恶心 34%。甚至天花板上那块水渍上面都有:烦躁 6%。
沈炼的心跳加速了。
他站起来,走到窗前往外看。城中村的巷子里,路灯昏黄,雨水顺着屋檐往下流。但在他眼里,整个世界都变了样。每一个人、每一件物品、每一个角落,都漂浮着密密麻麻的数字和文字,像是一个隐藏在世界背后的数据层突然被打开了。
他的手机又震了。
沈炼低头一看,不是微信消息,是一个从没见过的黑**标弹出来的通知:
“情绪超频系统绑定成功。”
“宿主情绪识别权限已开启。”
“首次任务已生成——请查看。”
沈炼盯着手机屏幕,手指悬在“查看任务”的按钮上方,迟迟没有按下去。
窗外的雨越下越大,雨点砸在铁皮棚子上,发出密集的鼓点声。远处有野猫叫了一声,声音被雨声吞没了大半,听着像是有人在哭。
沈炼深吸一口气,按了下去。
屏幕上弹出一行字:
“超频指令 #001”
“目标对象:李伟”
“任务内容:让目标体验一小时的绝望感。”
“任务时限:72小时。”
“任务奖励:情绪点数 ×500,现金 ¥50,000。”
“失败惩罚:情绪反噬——宿主将承受双倍的绝望。”
沈炼盯着那行字看了很久。
五万块。
他的***里只有四千二,欠着房租,欠着电费,连明天吃饭都要精打细算。而现在,一个手机里的程序告诉他,只要让李伟绝望一个小时,他就能拿到五万块。
这不是选择题。
但他也清楚,这不是一个普通的手机程序。他能看见情绪了,这件事科学解释不了。如果这东西是真的,那它背后的东西,可能也不是他能惹得起的。
雨还在下。
沈炼看着窗外的黑暗,慢慢攥紧了拳头。
不管这东西是什么来头,不管它要他付出什么代价——
李伟,你欠我的,该还了。
他站起身,发现自己的腿有点软。
会议室里的空气很闷,中央空调的冷气吹不到这个角落,桌上还摆着刚才开会时留下的纸杯,里面的咖啡渍干成了一滩褐色的印子。产品总监赵峰坐在主位上,手指有一下没一下地敲着桌面,那个节奏让沈炼心烦意乱。
“线上支付故障,”赵峰先开了口,语气不轻不重,但每个字都像是秤砣,“影响用户三百四十七人,涉及金额大概十二万。技术排查的结果是什么?”
李伟看了沈炼一眼。
就是这一眼,沈炼全明白了。
“小沈上周五提交的那个版本,”李伟说,声音不大,但在安静的会议室里显得格外清楚,“里面有一段签名校验的代码逻辑有问题,我们review的时候没注意到,是我的疏忽。”
他说“我们”,但所有人都听得出来,这个“们”字是客气。意思是——沈炼写的,我作为组长扛了一部分责任,但主要责任还在沈炼。
“我没——”沈炼刚要开口,就被赵峰抬手打断了。
“代码是你写的吗?”
“……是。”
“上线是你操作的?”
“是,但是——”
“那还有什么好说的?”赵峰靠在椅背上,语气里多了一丝不耐烦,“小沈,你来公司也快一年了吧?这种低级错误,不应该。”
沈炼的血一下子涌上了脑门。他想说那段代码的核心逻辑是李伟打包好的,他只是执行了部署命令;他想说他在群里问过三次有没有人review过,李伟每次都回了“没问题”;他想说他甚至提醒过这代码可能有隐患,但消息发了之后没人理他。
但这些话到了嘴边,又咽了回去。
因为他看到了李伟的表情。
那个四十多岁的中年男人微微低着头,嘴角向下撇着,看起来像是在自责。但沈炼注意到他的眼神——李伟的眼睛正盯着桌面上某个不存在的点,那是一种很微妙的神情,不是愧疚,是笃定。笃定沈炼不会说,也不敢说。
说又怎么样呢?他有聊天记录为证,但聊天记录里李伟说的是“我已经review过了”,没有截屏、没有邮件、没有任何正式文档。这东西拿出来,顶多算是个参考意见,改变不了“代码是沈炼写的、上线是沈炼操作的”这个事实。
更重要的是,沈炼是合同工,李伟是正式编制的组长。公司上上下下都认识李伟,而他沈炼不过是个工牌都和别人颜色不一样的外包。
他没有胜算。
“公司对这次事故的处理意见是,”赵峰开口了,“小沈承担主要责任,考虑到影响较大,建议你主动提离职,这样对大家都好。”
主动提离职。
这四个字像一盆冰水从头浇到脚。沈炼愣了两秒,然后听到自己的声音说:“这是让我背锅?”
会议室里安静了一瞬。
李伟猛地抬头,眼神里闪过一丝慌乱,但很快被他压下去了。赵峰皱起眉头,手指停止了敲桌面的动作。
“什么叫背锅?”赵峰的声音冷了下来,“责任在你,公司已经很大度了,没有走法律途径追究你的赔偿责任。你想想,十二万的损失,公司完全可以——”
“那段代码不是我写的。”
沈炼打断了赵峰的话。他知道自己冲动了,但他控制不住。在这个公司忍了十一个月,每天加班到十一二点,周末随叫随到,连女朋友都因为他没时间陪而分手了。他忍了这么久,换来的是替别人背黑锅。
李伟的脸色变了。他咳嗽了一声,说:“小沈,我知道你心里有气,但咱们一码归一码——”
“那你能不能解释一下,”沈炼盯着李伟,声音有点发抖,但不是因为害怕,是因为愤怒,“为什么那段代码里的签名算法和你之前给我发的demo一模一样?连注释里的错别字都一样?”
李伟张了张嘴,没说出话。
“够了。”赵峰站了起来,“这件事不需要在这里争论。沈炼,公司已经决定了,你要是觉得委屈,可以走劳动仲裁。但我提醒你,公司有完整的git提交记录和上线日志,法律**站不住脚。”
沈炼看着赵峰的背影,突然觉得特别好笑。
他想起了自己刚入职时的样子。那时候他刚从上家公司离职,手里攒了不到两万块钱,房租押一付三直接干掉了一万二,剩下的钱撑不了两个月。他急着找工作,在**网站上看到这家公司的外包岗位,薪资还可以,就投了简历。
面试的时候李伟笑眯眯的,说公司氛围很好,大家都是兄弟,有活一起干有钱一起赚。沈炼当时就信了。
现在想想,信别人画的大饼,是他犯过的最蠢的错误。
从会议室出来的时候,外面的天已经黑了。
沈炼收拾东西,把他工位上的东西一样一样装进纸箱子里。其实也没什么好收拾的,一个水杯,一个笔记本,两支没水的签字笔,还有一个他花了三十块钱买的桌面小风扇。他的工位在最角落,靠着消防通道,空调吹不到,夏天热得要死,他自费买了个风扇,现在也要带走了。
旁边工位的小王假装在看代码,但鼠标半天没动过。对面的张姐倒是直接,站起来说了句“小沈,保重”,然后就去接水了。
没有人问为什么,也没有人说一句公道话。
沈炼不怪他们。成年人的世界就是这样,每个人都有自己的房贷要还、孩子要养,没必要为了一个没什么交情的外包同事得罪领导。换了沈炼自己,他也不敢保证自己会站出来。
他把工牌放在桌上,抱着纸箱子走出了办公室。
电梯里只有他一个人。他看着电梯门上映出来的自己,头发乱糟糟的,黑眼圈重得像被人打了两拳,嘴角往下撇着,看起来就是一副倒霉相。他才二十六,看起来像是三十六。
走出写字楼的时候,天上下起了雨。
不是那种淅淅沥沥的小雨,是那种突然之间就倒下来的暴雨。沈炼站在写字楼门口的雨棚下面,看着雨帘像瀑布一样挂在面前,心想老天爷你可真会挑时候。
他没带伞。早上出门的时候天气预报说晴天,他就把伞扔在家里了。现在好了,工作没了,还要淋着雨回家。
沈炼抱着纸箱子冲进了雨里。
雨点砸在脸上生疼,没几秒钟他就浑身湿透了。纸箱子被雨水泡软,底儿直接塌了,东西撒了一地。水杯滚到了马路上,被一辆经过的出租车轧过去,咔嚓一声碎了。
他蹲在地上,把笔记本和签字笔捡起来,看了看那个碎成渣的水杯,突然就觉得鼻子一酸。
这是他女朋友——不,前女友,送他的。在一起三周年的时候,她送了他一个保温杯,说“你总是不记得喝水,这个保温效果好,你倒一杯能喝半天”。杯子上面还刻了一行字,“沈炼,记得多喝水”。
分手的时候她把所有东西都拿走了,就这个杯子没要。沈炼知道她不是忘了,是觉得他可怜,不好意思连杯子都带走。
雨水混着眼泪顺着脸颊往下淌,沈炼分不清哪个是哪个。
他把碎杯子留在马路上,抱着一堆破烂回了出租屋。
出租屋在城中村,离公司骑车要四十分钟。说是单间,其实就是一间隔出来的隔断,进门就是床,厨房和卫生间挤在一起,转身都困难。月租一千八,占他工资的五分之一。
沈炼把湿透的衣服脱了扔在地上,光着膀子坐在床上,盯着墙上的电费催缴单发呆。
单子上写着欠费三百二十七块钱,再不交就要断电了。他的***里还剩四千二,交完房租就剩两千多,撑不了多久。
手机震了一下。
他拿起来看,是前同事陈磊发来的微信:“炼哥,听说你走了?李伟那***又甩锅了?”
沈炼没回。
又震了一下:“你别着急,我这边认识一个外包公司的HR,要不要帮你问问?”
沈炼想了想,打了一行字:“好,谢谢。”
然后他放下了手机,躺倒在床上。
天花板上有一块水渍,形状像是某个**的版图,沈炼之前无聊的时候研究过,觉得像智利。现在他看着那块水渍,脑子里乱糟糟的,一会儿想起李伟那张假惺惺的脸,一会儿想起赵峰那句“主动提离职,对大家都好”,一会儿又想起杯子碎在马路边上的声音。
人活着到底是为了什么呢?
他闭上眼睛,迷迷糊糊地睡着了。
他做了一个梦。
梦里他站在一片漆黑的空间里,没有上下左右,没有声音,什么也没有。他想喊,但发不出声音。他想跑,但脚底下没有地面。
就在他快要被这种虚无逼疯的时候,眼前突然亮起了一行字。
那行字像是用火焰写的,在黑暗中一跳一跳地燃烧着:
“情绪超频系统绑定中……10%……30%……”
沈炼猛地睁开了眼睛。
他还躺在出租屋的床上,窗外的雨还在下,电费催缴单还贴在墙上。一切都没变,除了他的眼睛。
他看到的东西变了。
那个电费催缴单上面,除了打印出来的黑色字体,还多了一行不断跳动的数字。
残留情绪值:焦虑 83%,无助 57%,愤怒 12%
他揉了揉眼睛,数字还在。
他看向别处。墙角那堆脏衣服上面飘着一串数字:愧疚 21%。桌上那个外卖盒上面:恶心 34%。甚至天花板上那块水渍上面都有:烦躁 6%。
沈炼的心跳加速了。
他站起来,走到窗前往外看。城中村的巷子里,路灯昏黄,雨水顺着屋檐往下流。但在他眼里,整个世界都变了样。每一个人、每一件物品、每一个角落,都漂浮着密密麻麻的数字和文字,像是一个隐藏在世界背后的数据层突然被打开了。
他的手机又震了。
沈炼低头一看,不是微信消息,是一个从没见过的黑**标弹出来的通知:
“情绪超频系统绑定成功。”
“宿主情绪识别权限已开启。”
“首次任务已生成——请查看。”
沈炼盯着手机屏幕,手指悬在“查看任务”的按钮上方,迟迟没有按下去。
窗外的雨越下越大,雨点砸在铁皮棚子上,发出密集的鼓点声。远处有野猫叫了一声,声音被雨声吞没了大半,听着像是有人在哭。
沈炼深吸一口气,按了下去。
屏幕上弹出一行字:
“超频指令 #001”
“目标对象:李伟”
“任务内容:让目标体验一小时的绝望感。”
“任务时限:72小时。”
“任务奖励:情绪点数 ×500,现金 ¥50,000。”
“失败惩罚:情绪反噬——宿主将承受双倍的绝望。”
沈炼盯着那行字看了很久。
五万块。
他的***里只有四千二,欠着房租,欠着电费,连明天吃饭都要精打细算。而现在,一个手机里的程序告诉他,只要让李伟绝望一个小时,他就能拿到五万块。
这不是选择题。
但他也清楚,这不是一个普通的手机程序。他能看见情绪了,这件事科学解释不了。如果这东西是真的,那它背后的东西,可能也不是他能惹得起的。
雨还在下。
沈炼看着窗外的黑暗,慢慢攥紧了拳头。
不管这东西是什么来头,不管它要他付出什么代价——
李伟,你欠我的,该还了。