《暗涌》楔子

会议室的气压低得能拧出水来。

投影仪的光束打在幕布上,映出“智慧城市交通优化系统3.0”几个大字。我的手指在笔记本电脑触控板上摩挲,指尖冰凉。屏幕上的方案是我过去1095个日夜的心血——从算法框架到实施细节,从数据模型到风险评估,每一个标点符号都浸着我的睡眠和咖啡。

“综上所述,”站在演讲台前的陈锋调整了一下领带,声音平稳自信,“这套系统的核心优势在于它的自适应学习模块,能够根据实时交通数据进行动态优化,预计可降低早高峰拥堵率37%。”

他顿了顿,目光扫过会议室里的高管们,最后落在我身上,微微一笑。

“这得多亏了我们团队三年来的不懈努力。”

我的胃部像是被一只无形的手攥紧了。

那不是“我们团队”的努力。那是我一个人的心血。陈锋在过去三个月里对我的方案表现出异常的兴趣,频繁“请教”,美其名曰“学习经验”,我毫无保留地分享——我们是同期入职的校友,我把他当朋友。

直到上周,他把最终版的方案文件“不小心”拷走,直到今天这场本应由我主讲的汇报会突然换成了他,直到此刻他流畅地展示着我每一个深夜推敲出的算法逻辑。

“有什么问题吗?”副总裁李建明扶了扶眼镜,看向陈锋。

“关于数据安全模块,”陈锋从容不迫地切换到下一页,“我们采用了分层加密技术,确保......”

我听着他用我的语言解释我的设计,手指在桌下攥成拳,指甲掐进掌心。三个月前,部门总监调任,这个位置悬空至今。陈锋上周还在酒桌上拍着我的肩膀说:“咱俩谁上不都一样?都是兄弟。”

原来不一样。

汇报结束,掌声响起。李副总裁站起身来:“陈锋,这个方案做得非常扎实。董事会一直在关注这个项目,如果能够落地,对公司开拓智慧城市业务将起到关键作用。”

“谢谢李总,”陈锋谦逊地点头,“我会继续完善。”

“不用了,”李副总摆摆手,“这个方案已经很成熟。从今天起,你升任技术总监,全面负责这个项目。”

会议室里的空气凝固了一瞬,然后更热烈的掌声响起。同事们纷纷向陈锋道贺,有人拍了拍我的肩膀:“元朗,你们组这次立大功了!”

我张了张嘴,发不出声音。

陈锋被簇拥着走出会议室,经过我身边时,他脚步微顿,低声说:“晚上一起吃饭?庆祝一下。”

他的眼睛里有某种我从未见过的东西——不是愧疚,不是得意,而是一种冷静的疏离,仿佛我们之间从未有过那些称兄道弟的深夜加班,那些互诉职场烦恼的午餐时间。

“不了,”我听见自己的声音干涩如砂纸,“我有点事。”

第一章 离场

辞职信躺在邮箱的草稿箱里已经三天。

鼠标悬停在“发送”按钮上,指尖微微发抖。不是犹豫,是愤怒尚未冷却到可以理性决策的温度。

办公桌上,我和妻子的合照依然摆在那里——苏晓的笑容温柔,靠在我肩头,背景是我们蜜月旅行的海边落日。照片旁摆着她上周塞进我公文包的胃药,便利贴上是她娟秀的字迹:“记得按时吃饭,别又加班到胃疼。”

“元朗,李总找你。”同事小赵探头进来,神色有些复杂。

副总裁办公室的气温永远比外面低两度。李建明坐在宽大的红木办公桌后,示意我坐下。

“我听说你有离职的打算。”他开门见山,手指交叠放在桌面上。

“是的,李总。”

“因为陈锋升职的事?”

我没有回答。沉默有时比控诉更有力。

李建明叹了口气,那声叹息经过精心计算,介于理解与失望之间:“元朗,我理解你的心情。但职场上,很多时候不仅是看能力,还要看综合表现。陈锋在汇报、协调、客户沟通这些方面确实更突出一些。”

“所以他就可以偷别人的方案?”

“注意你的用词。”李建明的表情冷了下来,“公司内部的知识共享是常态。你的方案在部门内讨论过多次,陈锋作为项目参与者,对其进行整合优化,这是团队协作的成果。”

“他三个月前才加入这个项目组!”

“够了。”李建明站起身,走到窗前,背对着我,“元朗,你是个优秀的技术人才,但职场不是学校,不是谁作业做得好谁就能得第一。陈锋能让董事会相信他能带来这个项目,这就是他的能力。”

他转过身,语气缓和下来:“如果你愿意,我可以把你调到另一个项目组,薪资上浮10%。你考虑一下。”

“不必了,”我站起来,“我已经决定了。”

走出办公室时,我的手指冰凉,但头脑异常清醒。李建明的话像手术刀,精准地剖开了我一直不愿直视的现实:在这个地方,我的心血可以被轻易冠以他人之名,我的三年可以成为别人晋升的台阶。

因为陈锋“更会表现”。

因为陈锋“更懂沟通”。

因为我傻到相信专业能力是唯一的标准。

回到工位,我开始收拾东西。三年的积累不多——几本专业书籍,一个护颈枕,一盆绿萝,还有苏晓的照片。同事们或低头假装忙碌,或投来同情的一瞥。职场如戏,每个人都在扮演自己的角色,而我刚刚从“潜力股”变成了“遗憾离场的前同事”。

“真要走啊?”陈锋的声音在身后响起。

他端着咖啡杯,倚在我隔断的挡板上,姿态放松得像是在闲聊天气。新换的西装合体挺括,袖口处露出精致的腕表——是他上周在群里晒过的“升职礼物,犒劳自己”。

“嗯。”我没有抬头,把书籍装进纸箱。

“其实没必要这样,”他啜了口咖啡,“李总很看重你,留下来机会还是很多的。咱们部门现在正是用人之际,智慧城市这个项目很大,需要你这样的技术骨干。”

“需要我继续做方案,然后由你去汇报?”

陈锋的笑容僵了一瞬,随即恢复如常:“元朗,你对我是有误会。那个方案确实借鉴了你的一些想法,但后期的整合优化、风险评估、客户需求匹配,都是我重新梳理过的。董事会看中的是完整的可执行方案,不是某个技术模块。”

他说得那么自然,仿佛在陈述一个客观事实。我忽然意识到,这也许不是他第一次这样做,只是我第一次成为受害者。

“祝你前程似锦。”我盖上纸箱,抱起。

“我送你。”他放下咖啡杯,伸手要帮我拿箱子。

“不必。”我侧身避开,向电梯走去。

陈锋跟了上来。电梯门开时,里面空无一人。我们并肩站着,镜子般的厢壁映出两张脸——他的平静,我的紧绷。

“其实我一直很佩服你,”陈锋忽然开口,声音在密闭空间里显得格外清晰,“你的专业能力,钻研精神,是我见过最强的。但元朗,职场就像下棋,有时候不能只看一步。”

电梯下行,数字跳动。

“你什么意思?”

“我的意思是,你太专注在棋盘的一个角落了。”他整理了一下袖口,“做方案、写代码、优化算法,这些当然重要。但更重要的是让对的人看到你的价值,在合适的时间出现在合适的位置。你埋头苦干三年,而我用三个月让所有人看到这个项目的潜力,这就是区别。”

电梯到达一层,门开了。

大厅里人来人往,前台后的行政助理抬头看了我们一眼,又低下头去。

陈锋伸出手:“还是朋友?”

我看着他的手。那只手曾在我加班到凌晨时递来咖啡,曾在我婚礼上作为伴郎递来戒指,曾在我父亲住院时拍着我的肩膀说“有需要尽管开口”。

现在它偷走了我三年的光阴。

“不了。”我没有握那只手,抱着纸箱走出旋转门。

四月的阳光很好,洒在身上暖洋洋的,但我只觉得冷。回头望去,陈锋站在大厅里,隔着玻璃门看着我,脸上依然挂着那副温和的笑容。

他在向我挥手告别。

第二章 余波

离职第一周,我试图假装一切正常。

早晨七点半准时起床,像往常一样洗漱,穿上衬衫,系好领带。然后在镜子前愣住——我已经不需要去那个地方了。

苏晓从身后抱住我,脸贴在我的背上:“休息一段时间也好,你这几年太累了。”

她的声音温柔,但我听得出里面的担忧。我们刚结婚两年,房贷、车贷、计划中的育儿基金,每一项都建立在双收入的假设上。我的突然离职,让这本就紧绷的家庭财务瞬间失衡。

“放心,”我转过身,吻了吻她的额头,“我很快会找到新工作。说不定是更好的机会。”

“我相信你。”她笑得眉眼弯弯,但眼底的阴影出卖了彻夜未眠的痕迹。

我把她送到地铁站,然后独自回家。路过小区门口的面包店时,买了两份早餐——这是三年来的习惯,我和陈锋都爱吃这家的可颂,以前常常轮流买早餐带到公司。

现在只有我一个人吃了。

书房里,我打开电脑,更新简历。工作经历那一栏,“智慧城市交通优化系统”的项目描述格外刺眼。我盯着屏幕看了十分钟,一个字也写不下去。这个项目已经烙上了陈锋的名字,我如何证明那是我的心血?

电话响了,是猎头。

“元先生,我们看到您更新了简历,目前有一个技术总监的职位,和您之前做的智慧城市项目非常匹配......”

“哪家公司?”

对方报出一个名字,我的心沉了下去——那是我们公司的直接竞争对手。

“我考虑一下。”我挂断电话。

如果我去竞争对手那里,陈锋会怎么想?他会认为我是在报复,用泄露公司技术信息作为筹码。虽然我绝不会这样做,但人言可畏。

午饭时间,我热了昨晚的剩菜,坐在空荡的餐桌前。手机屏幕亮起,是前同事小赵发来的消息:“朗哥,你走之后,陈锋把你的工位给了新来的实习生。那盆绿萝被扔了,我捡回来了,你要吗?”

我看着那条消息,喉咙发紧。

那不是一盆普通的绿萝。三年前入职第一天,苏晓特意买了它,说“绿色植物防辐射,还能提醒你按时下班”。三年来,我加班时它就在屏幕旁静静生长,从一小盆蔓延成翠绿的瀑布。我给它浇水,擦拭叶片,它见证了我每一个凌晨的灵感和每一次挫折的叹息。

现在它被扔掉了,像我的三年一样。

“帮我养着吧,谢谢。”我回复。

下午,我开始整理这三年的技术笔记。十几个笔记本,上千页的手写记录,从最初的概念构思到最终的算法实现。我翻开最早的一本,日期是三年前的五月,页边有咖啡渍,还有一行小字:“苏晓说这个想法太理想化,但我想试试。”

那时我们还没结婚,她周末来我租的小公寓,看我对着白板写写画画,说我是“技术疯子”。我说等我这个项目成功了,就向她求婚。

后来项目真的有了雏形,我真的求婚了,她真的答应了。

现在项目成功了,却被冠以他人之名。

手机震动,是陌生号码。我接听。

“请问是元朗先生吗?”一个沉稳的男声。

“是我,您是哪位?”

“我是天城建设的项目经理,姓周。我们公司和您之前的公司有一个智慧城市交通系统的合作项目,有些技术细节想和您确认一下。”

天城建设,那是这个项目的甲方,国内顶级的城市建设集团。

“我已经离职了,”我说,“这个项目现在由陈锋总监负责,您应该联系他。”

“我们联系了陈总监,”对方顿了顿,“但他对几个核心模块的解释不太清楚。特别是自适应学习算法的数据流逻辑,他说这部分是您独立完成的,所以建议我们直接问您。”

我的心跳漏了一拍。陈锋把我的联系方式给了甲方?这不符合他的作风。

“周经理,我已经离职,不方便介入前公司的项目。如果您有技术问题,建议还是通过正式渠道联系公司。”

“理解,”对方的声音里听不出情绪,“不过元先生,这个项目对我们非常重要,涉及城市主干道的智慧化改造,预算超过三个亿。任何技术细节的模糊都可能带来重大风险。如果您能抽空和我们见一面,纯技术交流,咨询费我们可以按市场最高标准支付。”

三个亿。这个数字让我眩晕。我知道这个项目重要,但没想到重要到这个程度。

“我需要考虑一下。”

“当然。这是我的私人号码,您随时可以联系我。另外,”周经理补充道,“陈总监说您离职有些突然,这个项目失去了技术核心,他非常遗憾。”

挂断电话,我坐在书房里,窗外天色渐暗。

陈锋把我的联系方式给了甲方,还表达“遗憾”。这不像他。以我对他的了解,他应该极力抹去我在这个项目中的痕迹,让所有人相信那是他独立主导的成果。

除非......他遇到了无法解决的问题。

我打开电脑,登录那个已经三年没用的技术论坛账号。在私信里,有一条未读消息,发送时间是两天前,来自一个陌生的ID:“自适应模块的实时数据流在处理突发拥堵时会出现死循环,如何解决?”

没有署名,但问题的描述方式,使用的术语,甚至那个“死循环”的特定表现,都指向我方案中一个极其隐蔽的缺陷——一个我花了两个月才找到解决方案的漏洞。

这个漏洞,我在最终版方案中有意没有写进去。不是疏忽,是出于技术人员的某种执念——我想保留一点只有自己知道的、关于这个“孩子”的秘密。

陈锋偷走了方案,但他不知道这个秘密。

而这个漏洞一旦在实际运行中触发,将导致整个系统崩溃,交通信号灯全面失灵。在早高峰的主干道上,这会是灾难。

我盯着屏幕,手心出汗。

那个陌生ID又发来一条消息:“我知道你在看。周六下午三点,老地方咖啡厅,我们需要谈谈。陈锋不知道我联系你。”

老地方咖啡厅。大学时,我和陈锋常去那里讨论课题。毕业后,我们每年都会在那里聚一次,直到三年前我全身心投入这个项目,聚会才中断。

发信人是谁?

第三章 暗面

周六下午,我提前半小时到了咖啡厅。

靠窗的第三个卡座,那是我们以前常坐的位置。从那里可以看到街道和对面公园的一角,陈锋说那个位置“进可攻退可守”——他总是用这种军事术语形容日常选择。

我点了两杯美式,一杯不加糖,一杯加奶不加糖——那是陈锋的口味。等待的时候,手指无意识地在桌面上敲击,节奏是我设计的一套加密算法的核心序列。

两点五十五分,有人推门而入。

不是陈锋。

是个女人,三十岁左右,短发,穿着剪裁合体的灰色西装,拎着黑色的公文包。她环顾四周,目光落在我身上,径直走来。

“元朗?”她在对面坐下,声音是我在电话里听过的那个。

“周经理?”

“周文婧,”她伸出手,我们短暂相握,“天城建设,智慧城市项目部负责人,也是这个三亿项目的甲方总负责人。”

我重新打量她。之前电话里的声音沉稳有力,我下意识以为是男性。此刻坐在对面的女人,眼神锐利,坐姿挺拔,透着一股久经沙场的从容。

“您在论坛上找我?”我问。

“是我。”她开门见山,“你在那个漏洞描述里用的术语‘非对称数据流阻塞’,是内部术语,没有公开资料记载。只有原始设计者会这样描述问题。所以我确定是你。”

“陈锋不知道您联系我?”

“他不知道。”周文婧端起咖啡,喝了一口,“事实上,我找你的原因之一,就是我发现陈锋对这个项目的理解,远不如他表现的那么深入。”

她打开公文包,取出一份文件推到我面前。是项目技术评估报告,封面上盖着“机密”字样。

“过去一周,我们和陈锋的团队开了三次技术对接会。每次涉及到核心算法细节,他要么含糊其辞,要么说需要‘回去和团队讨论’。最后一次,我直接问到了自适应学习模块的数据预处理逻辑,他给出的解释......”她顿了顿,“漏洞百出。”

我翻开报告。里面详细记录了陈锋在会议上的回答,旁边是周文婧用红笔做的批注,一针见血地指出了每个回答中的技术错误。

“这不能完全证明什么,”我合上报告,“也许是沟通问题。”

“也许。”周文婧看着我,“但元先生,三个亿的项目,我不能赌‘也许’。我们选择与你前公司合作,是因为看到了那份方案的潜力。但如果执行者连基本原理都说不清楚,我不得不怀疑,这份方案到底出自谁手。”

窗外,一个老人牵着狗走过,狗在路灯柱旁嗅来嗅去。平凡得令人心安的午后场景,与我此刻的处境形成荒诞对比。

“您想让我做什么?”我问。

“两件事。”周文婧竖起两根手指,“第一,我需要你确认,这份方案的原创者是你。第二,如果确认,我需要你以技术顾问的身份,秘密加入我们的监管团队,确保项目不因执行者的能力问题而失败。”

“秘密加入?”

“陈锋不会希望你知道这个漏洞的存在,更不会希望你介入项目。但我们需要你。”她的目光如刀,“这个系统将应用于七个主要路口,日均车流量超过五十万辆。如果因为那个死循环漏洞导致系统崩溃,会发生什么,你比我清楚。”

我想象那个场景:早高峰,红绿灯全部失灵,车辆在路口挤成一团,急救车被堵在车流中,整个区域的交通瘫痪......我的后背渗出冷汗。

那个漏洞,我本该在最终方案中修复的。但我没有,因为当时的我想:“反正这个项目是我负责,我知道问题在哪,实施时会注意。”

然后陈锋偷走了方案,他不知道有漏洞。

而现在,这个漏洞可能引发一场灾难。

“我可以帮您解决这个技术问题,”我说,“但不需要加入监管团队。我可以把解决方案写出来,您交给陈锋。”

“他不会用的。”周文婧摇头,“昨天我旁敲侧击地提到了‘非对称数据流’可能存在的问题,他的反应是极力否认,说这个设计绝对可靠。一个不愿承认问题存在的人,怎么会接受别人提供的解决方案?”

她停顿了一下,语气缓和:“元先生,我调查过你。过去三年,你的考勤记录显示你平均每周加班二十小时。你的直属上级对你的评价是‘技术能力突出,但缺乏管理思维’。而陈锋,过去一年有六次被记录与客户的高尔夫活动,三次与高层的‘非正式汇报’。”

“您想说什么?”

“我想说,这个世界有时不公平。”周文婧的声音很平静,“有能力的人埋头苦干,会表现的人平步青云。但这一次,你的能力关系到公共安全,我不能让会表现但不懂技术的人主导这个项目。”

我沉默了很久。咖啡冷了,表面凝出一层薄薄的膜。

“如果我答应,陈锋会发现。我的职业生涯就毁了。”

“如果你不答应,”周文婧直视我的眼睛,“项目失败,你的职业生涯一样会毁掉。陈锋会把责任推给‘前任留下的设计漏洞’,你还是罪人。而且,会有无数普通人因为交通瘫痪而受到影响,可能有人会因此错过重要会议,错过火车,错过医院预约,甚至......”

她没有说下去。

“我需要时间考虑。”我说。

“你没有时间了。”周文婧看了一眼手表,“下周一,陈锋会提交最终的技术实施方案。一旦通过评审,项目进入开发阶段,再修改核心设计的成本会呈指数级增长。今天是周六,你有一天时间。”

她站起身,从包里取出一张名片放在桌上:“上面有我的私人电话。如果你决定加入,周日晚上之前联系我,我会安排。如果你拒绝......”她停顿了一下,“我会启动项目风险评估,建议天城建设撤资。但那样的话,你三年的心血,就真的付诸东流了。”

她走向门口,又回头:“顺便说一句,你妻子在‘晨光教育’做课程设计,对吗?我妹妹的孩子在那里上课,她说苏老师是个非常负责的好老师。”

门上的风铃响动,她离开了。

我坐在卡座里,浑身冰冷。最后那句话不是随口一提。她在告诉我,她调查了我的一切,包括我的软肋。

手机震动,是苏晓发来的消息:“晚上想吃什么?我买了你最爱吃的排骨,庆祝你离职一周,脱离苦海~”

后面跟着一个笑脸表情。

我盯着那条消息,眼眶发热。

脱离苦海?我可能刚刚跳进了另一个,更深的漩涡。

第四章 抉择

周日清晨,我在书房坐了一夜。

窗外天色从漆黑转为深蓝,再到鱼肚白。桌上摊着那份方案的所有笔记,屏幕上打开着算法模拟程序。那个漏洞,我比谁都清楚它的可怕之处。

模拟结果显示,在特定车流量和天气条件下,死循环触发的概率是3.7%。看起来不高,但一旦触发,系统恢复需要至少十五分钟。十五分钟,足够让七个路口全部瘫痪。

我尝试推演各种可能性。

如果我不帮周文婧,她真的会撤资吗?三个亿的项目,撤资不是小事,需要充分的理由。但如果她坚持,以天城建设的体量,完全可能这么做。届时,陈锋会失去这个让他晋升的项目,我的方案也会被废弃。

那如果我帮他呢?把解决方案匿名发给他?

他大概率不会用。以他的自负,不会承认自己没发现这个漏洞,更不会采用一个“匿名好心人”提供的补丁。他只会认为这是无稽之谈,然后继续推进。

周文婧说得对,唯一的办法是从内部介入,确保漏洞被修复。

但那样做,意味着背叛。不是背叛陈锋——他已经背叛了我——而是背叛我曾经对这个公司的忠诚,背叛我对职业操守的理解。意味着我要成为“告密者”,成为“背后捅刀的人”。

苏晓轻轻推开门,端着一杯热牛奶进来。她穿着我的旧T恤,下摆垂到大腿,头发睡得乱蓬蓬的,眼神里满是担忧。

“你一晚上没睡。”她把牛奶放在桌上,手搭在我肩上。

“在想事情。”我握住她的手,她的手很暖。

“那个周经理又联系你了,对吗?”她轻声问。

我惊讶地抬头。

“昨晚你说梦话了,”苏晓坐在椅子扶手上,“一直重复‘漏洞’和‘三个亿’。我查了你的手机,看到那个通话记录。”

她没有责怪,只是陈述事实。我们之间从无秘密,这是结婚时的约定。

我把一切告诉了她。陈锋的背叛,周文婧的提议,那个可能导致交通瘫痪的漏洞,以及我面临的道德困境。

苏晓安静地听完,很久没有说话。她只是握着我的手,拇指轻轻摩挲我的手背。

“你觉得我该怎么办?”我问,声音沙哑。

她没有直接回答,而是问:“你还记得我们是怎么认识的吗?”

我点头。五年前,一个暴雨天,我打不到车,冒雨跑向地铁站,在路口差点被一辆闯红灯的车撞到。是她拉了我一把,我们俩都摔在水坑里,浑身湿透。后来一起去了最近的咖啡馆躲雨,就这样聊了一下午,然后是一辈子。

“那天如果不是我拉住你,你可能已经躺在医院了。”苏晓说,“而那个司机闯红灯,是因为前面的车突然急刹,急刹是因为信号灯故障,一直闪黄灯。”

我记得那天。那个路口的信号灯坏了三天,一直没修。

“所以,”苏晓看着我的眼睛,“技术不只是代码和算法,它关系到真实的人,在真实的街道上,有真实的家庭在等他们回家。如果你明明知道一个漏洞可能让人受伤,甚至更糟,却因为不想惹麻烦而保持沉默......”

她没有说下去。

“但那样做,我的职业生涯可能就完了。”我低声说,“陈锋不会放过我,行业里也会传开,说我背叛前公司,说我......”

“说你是那个阻止了交通瘫痪的人。”苏晓打断我,“说你是那个坚持对的事情,哪怕对自己不利的人。”

她捧住我的脸,让我直视她的眼睛:“元朗,我爱你,不是因为你将来能当总监,能赚多少钱。我爱你,是因为你是那种会在暴雨天把伞给陌生人,自己淋雨回家的人。是因为你是那种为了一个理想化的算法,愿意钻研三年的人。别让陈锋改变你是谁。”

我的眼眶发热,紧紧抱住她。

“而且,”她在耳边轻声说,“我相信你的能力。就算这家公司待不下去,你也能找到更好的地方。但如果你明明能阻止一场灾难却没有做,你一辈子都不会原谅自己。”

她说得对。

我松开她,打开电脑,开始写邮件。给周文婧,告诉她我的决定。

但就在手指即将按下发送键时,手机响了。是前同事小赵。

“朗哥,出事了!”他的声音慌张,“陈锋刚才在会上晕倒了,送去医院了!”

“什么?”

“好像是急性胰腺炎,医生说挺严重的,要住院至少一两周。”小赵压低声音,“而且朗哥,有个事我得告诉你。陈锋住院前,正在和甲方开紧急会议。我听说......甲方可能要撤资。”

我的手指僵在键盘上。

“撤资?为什么?”

“具体不清楚,但好像是因为技术问题。陈锋在会上和甲方代表吵起来了,对方质疑方案可行性,陈锋坚持说没问题,然后突然脸色惨白,捂着肚子倒下了......”

挂断电话,我看着那封未发出的邮件,忽然意识到,事情比我想象的更复杂。

陈锋住院,项目群龙无首。如果他真的和甲方吵到要撤资的地步,说明周文婧已经开始行动了。她没有等到我的回复,就启动了施压程序。

她在逼我做选择,用更激烈的方式。

手机又响了,这次是周文婧。

“元先生,相信你已经听说了。”她的声音一如既往的冷静,“陈锋住院,项目陷入停滞。我们需要你立即介入。作为方案原创者,你最有资格暂代技术负责人的位置。我已经向你的前公司提出了正式请求。”

“什么请求?”

“请求你以技术顾问身份,紧急支援这个项目,直到陈锋康复。”她停顿了一下,“当然,这是官方说法。实际上,我需要你全面接手,在两周内解决所有技术隐患,重获董事会的信任。”

“公司同意了?”

“李副总裁正在犹豫。但他没有选择——要么同意,要么失去三亿的项目和天城建设这个重要客户。”周文婧说,“元朗,这是你的机会。不是报复的机会,是纠正错误的机会。你愿意吗?”

我看着屏幕上那封未发送的邮件,又看看书房门外,苏晓正在厨房准备早餐的身影。

“我需要和公司谈条件。”我说。

“可以。一小时后,我去公司接你,我们一起见李副总裁。”

电话挂断。我坐在晨光中,第一次感到离职后,命运的方向盘重新回到了我手中。

只是这一次,我知道前路并非坦途。陈锋不会轻易放弃到手的一切,即使躺在病床上,他也一定在谋划着什么。而我,即将回到那个刚刚离开的地方,以一种谁都没想到的方式。

苏晓端着早餐进来,煎蛋的香味弥漫书房。

“决定了?”她问。

“嗯。”我站起来,抱住她,“谢谢你。”

“谢什么,”她把脸埋在我胸口,“无论你做什么,我都支持你。只是答应我,这次要保护好自己,好吗?”

“我答应你。”

一小时后,我穿上那套为重要场合准备的西装,系上苏晓送的领带。镜子里的人,眼底有疲惫,但背挺得笔直。

出门前,我看了看那盆被小赵救回来的绿萝,它在新花盆里重新焕发生机。有些东西被丢弃,但只要根还在,就能重新生长。

手机响起,周文婧发来消息:“我在楼下。”

新的战役,开始了。而这一次,我不再是那个埋头苦干、任人宰割的技术员。我要拿回的,不仅是我的方案,还有我的尊严,和阻止一场灾难的责任。

第五章 回旋

天城的黑色轿车停在小区门口,流畅的线条在晨光中泛着冷硬的光泽。周文婧坐在后座,车窗降下一半,她正对着平板电脑处理邮件,短发在晨风中纹丝不动。

“元先生,请。”司机为我拉开车门。

车内空间宽敞,弥漫着淡淡的皮革和柑橘香薰的味道。周文婧收起平板,侧身看我:“李建明九点有空。现在是八点二十,我们有四十分钟沟通时间。”

“沟通什么?”

“你的条件,以及我们的底线。”她递过来一份文件,“这是暂聘合同草案。顾问期两周,日薪是市场价的三倍。两周后,如果项目通过天城的技术评估,你可以选择正式加入天城建设,职位是智慧城市项目技术总监,或者回到前公司,我会确保你得到应有的职位和补偿。”

我接过文件,快速浏览。条款清晰,待遇优厚,甚至包括保密协议和竞业禁止的豁免——这意味着即使我回到前公司,天城也不会追究我这段时间的介入。

“很慷慨。”我说。

“值得的投资。”周文婧直视前方,“元朗,我不喜欢说漂亮话。我选你,因为你是这个方案真正的设计者,也因为我在调查中发现,过去三年,你拒绝了两次猎头的高薪挖角,原因是‘项目还没完成’。在这个时代,这种责任心很少见。”

车子汇入早高峰的车流。窗外,熟悉的街景向后掠过。再过三个路口,就是那座我工作了三年的大厦。我曾无数次在这个时间点,挤在地铁或公交上,奔向那个后来背叛了我的地方。

“陈锋真的病得很重?”我问。

“急性胰腺炎,饮酒和高压所致。医生说要住院至少两周,完全恢复需要一个月。”周文婧的语气没有波澜,“李建明今早去医院看过他,带了一束花和一个果篮,谈了十五分钟。谈话内容我没法知道,但结果是他同意了我的提议。”

“这么容易?”

“三亿的合同,和一份可能引发公共安全事故的方案,这个选择题不难做。”她转头看我,“但元朗,你要明白,这只是权宜之计。陈锋不会就此出局,他的总监职位依然保留,病愈后他会回来。这两周,是你唯一的机会。”

“什么机会?”

“证明这个方案离了你不行,证明你是不可替代的。”周文婧的目光锐利如刀,“或者,用这两周时间,找到陈锋的其他问题,让他无法回来。”

我心头一震:“这不是我的作风。”

“我了解。”她转回头,“所以我只是陈述可能性。职场如棋,现在轮到你落子。怎么下,看你自己。”

车子驶入地下车库。熟悉的空气,混合着汽油和灰尘的味道。电梯上升时,我看着楼层数字跳动,胃部微微抽搐。不是紧张,是某种更复杂的情绪——愤怒、屈辱,还有一丝可悲的期待。

电梯门开,前台看到我,明显愣了一下。

“元......元哥?你怎么......”

“我和李总有约。”我说。

“李总在会议室等您。”她的目光在我和周文婧之间游移,职业素养让她迅速恢复了标准微笑,但眼神里的好奇掩饰不住。

推开会议室的门,李建明已经在那里了。他站在落地窗前,背对着门,听到声音转过身来。三天不见,他看起来有些疲惫,眼下的阴影明显。

“元朗,来了。”他的语气是刻意调整过的平和,“坐。周总,感谢您亲自过来。”

我们三人围着会议桌坐下。气氛微妙,像绷紧的弦。

“情况周总应该已经和你说了,”李建明开门见山,“陈锋突发疾病,项目不能停。你是这个方案最了解的人,公司希望你能以顾问身份回来,协助项目度过这两周的难关。”

“顾问身份,”我重复这个词,“不是正式员工。”

“你刚刚离职,马上复职,流程上......”李建明的话被打断。

“流程可以走特批。”周文婧说,“如果元先生同意回来,天城希望他能有明确的职位授权,至少在项目层面,他的技术决策需要被完全尊重。”

李建明的手指在桌面上轻轻敲击,这是他思考时的习惯动作。

“可以。”他终于说,“元朗,这两周你暂代技术负责人,直接向我汇报。项目组所有人配合你的工作。但有一点,”他看着我,“这次合作仅限于解决当前的技术问题,确保项目不因陈锋的缺席而延误。至于其他......”

他没有说完,但意思明确:不要搞事,不要想着报复,不要试图夺回职位。

“我只有一个条件。”我说。

“你说。”

“我要这个项目的原始需求文档、所有的会议记录、以及陈锋过去一个月经手的所有技术文件。”我看着李建明,“完整的,未经删改的。”

李建明的表情微变:“为什么需要这些?”

“要修复问题,首先要了解问题是如何产生的。”我说,“如果陈锋在技术沟通中有误解或错误,我需要知道这些误解发生在哪些环节,才能对症下药。”

“这涉及到公司内部文件......”李建明犹豫。

“如果天城撤资,这些文件就只是一堆废纸。”周文婧平静地说,“李总,我们的信任已经出现裂痕。要重建信任,需要透明和坦诚。元先生的要求很合理。”

沉默在会议室里蔓延。窗外的城市在晨光中苏醒,车流如织,每个人都在奔向自己的战场。而此刻,这个小小的会议室里,正在进行一场没有硝烟的谈判。

“可以。”李建明最终说,“但我需要在场监督文件调取。”

“当然。”我点头。

谈判结束,周文婧起身:“那我先告辞。元先生,项目组九点半有例会,你需要出席。李总,希望这次合作愉快。”

她离开后,会议室里只剩下我和李建明。

“元朗,”他开口,语气复杂,“我知道你心里有怨气。但职场上,有些事......不是非黑即白。陈锋有他的问题,但你也有你的短板。这次是个机会,对你,对公司,都是。”

“什么机会?证明我比他会写代码的机会?”

“证明你不可或缺的机会。”李建明站起来,走到我面前,“如果你能平稳度过这两周,让项目重回正轨,董事会会看到你的价值。到时候,陈锋回来,我可以为你争取一个独立的技术部门,你直接向我汇报,职级和陈锋平级。”

又一个许诺。和三天前“调岗加薪”的许诺如出一辙。

“李总,”我也站起来,“我不在乎职级。我在乎的是那个系统能安全运行,在乎那七个路口不会因为一个漏洞而瘫痪。我在乎的是我这三年的心血,不被糟蹋。”

我直视他的眼睛:“所以,我会做好这两周的工作。但之后,我不需要您的特殊安排。这个项目结束后,我会离开,彻底离开。”

李建明张了张嘴,最终什么也没说,只是点了点头。

九点二十五分,我走向项目组办公室。熟悉的走廊,熟悉的气味,甚至墙上的抽象画都还是那几幅。但一切都不一样了。

推开办公室的门,十几双眼睛齐刷刷看向我。

小赵第一个站起来,表情尴尬又欣喜:“朗哥,你回来了!”

其他人面面相觑,有人低头假装忙碌,有人交换眼神。陈锋提拔的两个亲信坐在角落里,脸色不善。

“各位,”我走到白板前,转身面对所有人,“未来两周,我暂代技术负责人。我知道大家有很多疑问,但现在不是解答的时候。九点半,天城的人会来开项目例会,我们要拿出专业态度。”

我扫视全场:“有问题吗?”

短暂的沉默后,一个戴眼镜的年轻程序员举手:“元哥,陈总监之前安排的工作计划要调整吗?有些模块的优先级......”

“把陈总监过去一周的工作安排和所有邮件转发给我。”我说,“一小时后,我们重新评估计划。”

“可是陈总监说......”

“他现在在医院。”我打断他,“而项目要继续。如果对我的临时负责有疑问,可以去问李总,或者,”我停顿了一下,“等陈总监康复后亲自问他。但现在,在这里,我是负责人。”

语气平静,但不容置疑。那个曾经埋头写代码、不愿与人争执的元朗,正在死去。一个新的、强硬的版本,被迫诞生。

九点半,天城团队准时到达。周文婧带队,六个技术人员,个个表情严肃。例会开始,对方直奔主题。

“上周三,我们提出了数据接口的七个问题,陈总监承诺周五前回复。但到目前为止,我们只收到三个问题的部分解答,且无法通过测试。”天城的技术负责人调出投影,“更严重的是,昨天我们在模拟环境中运行了自适应模块,在车流量达到峰值时,系统出现了卡顿,三分钟后才恢复。”

投影幕布上,曲线图清晰地显示着系统性能的断崖式下跌。

项目组一片寂静。陈锋的两个亲信低下头。

“这个问题我们已经定位,”我开口,所有人的目光集中过来,“是数据流预处理的一个设计缺陷,在特定并发条件下会触发。解决方案我已经有了,今天下班前提交详细修复方案。”

“今天下班前?”天城的技术负责人挑眉,“你确定?陈总监上周说这个问题需要‘深入研究’,至少需要一周。”

“我确定。”我在白板上快速画出数据流图,“问题的根源在这里,缓存队列的溢出机制有误。解决方法是增加一个动态调节算法,根据实时负载调整队列长度。这个模块的原始设计文档第三十七页有相关描述,但实现时被简化了。”

我准确报出页码,在场的天城技术人员立刻翻看手中的文档。几秒钟后,有人点头:“确实,文档里提到了动态调节,但代码里没有实现。”

“因为当时认为那部分可以二期优化。”我说,“但这个判断是错误的。高并发场景下,它是必须的。”

会议室里的气氛微妙地改变了。天城团队看我的眼神,从审视变成了认可。而项目组这边,几个老同事的眼神亮了起来——他们记得,这个模块最初就是由我设计的。

“修复需要多久?”周文婧问。

“核心算法今天可以给出。完整测试和集成,如果加班,三天。”我说。

“好。”周文婧合上笔记本,“那就三天。这三天,天城团队会留在这里,配合测试。元先生,希望你不要让我们失望。”

例会结束,天城团队去了隔壁会议室。我回到工位,打开电脑,开始工作。

邮件提示音不断响起。陈锋过去一周的工作安排、会议记录、邮件往来,陆续发到我的邮箱。我快速浏览,越看心越沉。

他完全误解了方案的核心设计理念。为了“简化实现”,他删除了三个关键的安全校验模块。为了“提升性能”,他改动了数据同步机制,但这可能导致数据不一致。更严重的是,他自作主张增加了一个“智能预测”功能,但这个功能的算法未经充分验证,极不稳定。

这已经不是“能力不足”的问题。这是用三亿的项目和自己的职业生涯赌博。

“朗哥,”小赵悄悄凑过来,压低声音,“有件事,不知道该不该说......”

“说。”

“上周,陈总监让我改了一段代码,说是天城的要求。但我看了需求,不像是甲方提的,倒像是......”他犹豫了一下,“倒像是为了赶进度做的偷工减料。我按照他的要求改了,但心里一直不踏实。代码在这里。”

他把笔记本推过来。我只看了一眼,冷汗就下来了。

那段代码删除了一个重要的异常处理机制。如果系统运行中出现某种特定错误,不会报警,不会记录,只会悄无声息地继续运行,带着错误的数据。

“这个模块影响什么?”我问。

“交通信号灯的优先级计算。”小赵声音更低了,“如果计算错误,可能会导致主干道的绿灯时间异常缩短,或者支路长时间红灯......”

我闭上眼睛,强迫自己冷静。这个错误如果在实际运行中出现,不会导致系统崩溃,但会导致交通效率严重下降,甚至可能因为绿灯时间不足而引发路口堵塞。

“还有谁知道这个改动?”

“应该只有我和陈总监。他让我‘悄悄改掉,不要声张,免得大家觉得方案不成熟’。”

我盯着屏幕上的代码,手指冰凉。陈锋不只是偷了我的方案,还在用危险的方式修改它,为了在甲方面前营造“一切顺利”的假象。

“备份原始代码了吗?”

“备份了,在我的私人U盘里。”

“恢复原始版本。现在。”我说,“如果有人问起,就说是我在代码审查中发现了问题,要求回退。”

“可是陈总监那里......”

“他现在在医院,管不了这里。”我看着小赵,“而且,你认为如果他在这里,会承认自己要求了一段有风险的代码吗?”

小赵脸色发白,摇了摇头。

“去做吧。有事我担着。”

他匆匆离开。我坐在电脑前,看着收件箱里堆积的邮件,忽然明白周文婧为什么如此急切地要我回来。

陈锋不止是能力不足。他在用危险的方式掩盖自己的不足。而天城的人,也许从一开始就察觉到了问题,所以才会如此强硬,如此不信任。

手机震动,是苏晓发来的消息:“怎么样?还顺利吗?”

我盯着那条消息,很久,回复:“发现了一些问题,比想象中严重。今晚要加班,别等我吃饭了。”

“注意身体。无论如何,我都在。”

简单的几个字,让我几乎崩断的神经稍微放松了一些。我深吸一口气,开始工作。

下午三点,我正在修改自适应模块的核心算法,办公室的门被推开了。

陈锋的妻子站在门口,眼眶红肿,手里拎着一个保温桶。

所有人都愣住了。

“元朗,”她的声音颤抖,“我能和你谈谈吗?”

(第五章完,字数约5000)

第六章 病床前的对峙

茶水间里,咖啡机的指示灯闪烁着红光,发出低沉的嗡鸣。陈锋的妻子——林薇,把保温桶放在桌上,手指无意识地绞在一起。

“医生说他需要静养,不能受刺激,”她声音很轻,像是怕被外面的人听见,“但我必须来找你。陈锋从昨晚开始就睡不着,一直在念叨项目,念叨你......”

“嫂子,”我打断她,“陈锋现在需要的是休息。项目的事,公司会处理。”

“公司?”林薇抬起头,眼泪在眼眶里打转,“元朗,我和陈锋结婚七年,他是什么样的人,我最清楚。他是有野心,有时候方法不太妥当,但他绝不是坏人。这次的事......”

她停顿,似乎在组织语言:“那天他晕倒前,接了一个电话,情绪很激动。我隐约听到他在说‘元朗’、‘漏洞’、‘不可能’......之后他就脸色惨白,捂着肚子倒下了。元朗,你能不能告诉我,到底发生了什么?”

咖啡机“嘀”的一声,咖啡煮好了。浓郁的焦苦味弥漫在狭小的空间里。

“嫂子,工作上的事,我不方便......”

“是因为那个方案,对吗?”林薇直视我的眼睛,“陈锋升职用的那个方案,其实是你做的,对吗?”

我沉默。

“他上周喝醉了回家,一直在说胡话。说对不起你,说他不该那样做,但他没办法,他需要那个位置,我们需要钱......”她的眼泪终于掉下来,“他爸肺癌晚期,每个月的靶向药要三万多,医保不报销。我爸妈去年车祸,现在还在康复中心,每个月又是两万多。我们俩的工资加起来,根本不够......”

她捂住脸,肩膀抖动:“我知道这不能成为他伤害你的理由。但如果可以,他也不想这样的。元朗,你看在这么多年朋友的份上,能不能......能不能别赶尽杀绝?”

茶水间的门虚掩着,外面办公室的键盘敲击声隐约传来。有人走过,脚步声停在门外,又迟疑地离开。

“嫂子,”我递给她一张纸巾,“我没有要赶尽杀绝。我只是在做我的工作,确保项目不出问题。”

“但陈锋说,你要是回来了,他就回不来了。”林薇擦着眼泪,声音哽咽,“他说李总已经答应他,只要这个项目顺利落地,年底就提拔他当部门副总。可现在你回来了,甲方又那么信任你,他怕......”

“怕我抢走他的位置?”我问。

她默认了。

我走到窗边,看着楼下街道的车水马龙。那些匆匆的行人,那些在红灯前等待的车辆,每个人都有自己的战场,自己的不得已。

“嫂子,我可以向你保证,”我转身,面对她,“我对陈锋的总监位置没有兴趣。两周后,无论项目如何,我都会离开。但在这两周里,我必须确保这个系统是安全的,不能因为它出问题而让任何人受伤。这和陈锋无关,和我也无关,只和那七个路口每天经过的几万个人有关。”

林薇怔怔地看着我,似乎想从我脸上找出谎言的痕迹。

“陈锋的父亲......”我问,“病情严重吗?”

“晚期,医生说最多还有半年。”她低下头,“陈锋一直不敢告诉你,他觉得没面子。他从小就好强,什么都想做到最好,不想让人看到他狼狈的样子。”

我忽然想起,三个月前,陈锋确实有段时间频繁请假,问他只说家里有点事。当时我以为是他妻子身体不适,还给他推荐了一个中医。

原来如此。

“这保温桶是?”我看向桌上的东西。

“我给陈锋炖的汤,医生说他只能吃流食。”林薇勉强笑了笑,“顺便......也想来看看你。元朗,我知道陈锋对不起你,我也没脸替他求情。但如果可以,至少......别让他失去工作,好吗?我们真的需要这份收入。”

她提起保温桶,走到门口,又回头:“他住在市一医院住院部903,如果你有空......算了,当我没说。”

门轻轻关上。我站在茶水间里,咖啡已经凉了。

手机震动,是周文婧的消息:“刚刚得到消息,陈锋今早要求护士帮他拿笔记本电脑到医院,被医生制止。但他还在通过手机处理工作邮件。看来他没有完全‘静养’。”

我盯着那条消息,心里五味杂陈。

陈锋在病床上还在操心工作,是因为责任心,还是因为害怕失去?林薇说的那些话,是真的无奈,还是苦肉计?我和他认识十年,曾以为彼此了解,现在却发现,我从未真正看清过他。

或者说,职场这个人性放大器,让我们都暴露了自己最不堪的一面。

回到工位,小赵已经恢复了那段被删改的代码。他发来确认消息,附带一句:“朗哥,我刚才查了日志,陈总监上周还改了几个其他模块,都是类似的问题——为了赶进度,牺牲了安全校验。要不要一起恢复?”

“把所有他单独修改过的模块列出来,下班前给我清单。”我回复。

“明白。还有......”小赵迟疑了一下,“刚才陈总监的一个朋友,在财务部的,过来‘顺便问问’项目进展。我说你在负责,他表情有点怪。”

消息灵通。陈锋虽然人在医院,眼线还在。

下午五点,我提前完成了自适应模块的修复方案。发给天城团队后,周文婧很快回复:“效率很高。但我们需要看到测试结果。今晚能安排测试吗?”

“可以,但需要测试环境配合。”

“天城已经准备好模拟环境,接入权限会发给你。我们的人会全程跟进。”

我召集项目组开会,分配今晚的测试任务。听到要通宵测试,有人面露难色,但没人敢反对。陈锋的两个亲信借口家里有事想先走,被我驳回。

“测试需要所有人都在,”我说,“家里有急事的,现在去处理,两小时后回来。没有急事的,点外卖,公司报销。”

会议室里气氛压抑。我知道他们在想什么——以前陈锋在时,加班虽然也多,但至少会说些漂亮话,画些大饼。而我,只是个临时回来的“前同事”,没有给过任何承诺,却要求同样的付出。

“这次测试关系到项目能否继续,”我看着所有人,“也关系到在座各位今年的奖金,和这个团队未来还能不能存在。天城如果撤资,这个项目组会被解散,所有人重新分配。分配到哪里,我不确定,但肯定不如现在。”

这话很直接,很难听,但有效。几个原本漫不经心的人坐直了身体。

“测试通过,项目保住,每个人都有功劳。测试失败,”我顿了顿,“责任我负,但各位的履历上,会留下一个失败项目的记录。在裁员季,这意味着什么,大家清楚。”

会议室里落针可闻。

“现在,去吃饭,两小时后集合。”

人群散去。我回到办公室,关上门,终于能稍微喘口气。太阳已经西斜,金红色的光线透过玻璃窗,在桌面上投下长长的影子。

手机响了,是陌生号码。我接听。

“元朗吗?我是陈锋。”电话那头的声音虚弱,但清晰。

我沉默了两秒:“听说你住院了,还好吗?”

“死不了。”他苦笑,“胰腺炎,喝酒喝的。医生说要戒酒,静养。但你知道,我静不下来。”

我没有接话。

“林薇去找你了,对吗?”陈锋问,“她跟我说了。元朗,对不起,她不该去打扰你。那些家里的事,我也不想让她说的,但......她太担心了。”

“嫂子说的是真的吗?”我问,“你父亲,还有她父母......”

“真的。”陈锋的声音低下去,“很可笑吧?我每天在办公室人模人样,实际上家里一团糟。我爸的药,一个月三万二,自费。她爸妈的康复费,一个月两万五。我们的房贷,一个月一万八。车贷、生活费、孩子的补习班......元朗,我不是在诉苦,我只是想说,我需要那个位置,需要那份工资。总监和高级经理,年薪差四十万。四十万,对我家来说,是救命的钱。”

窗外的天色渐渐暗下来,城市的灯光次第亮起。那些灯火里,有多少个像陈锋这样的家庭,在体面之下,是勉力维持的脆弱平衡?

“所以你就偷了我的方案?”我问,声音平静得自己都惊讶。

电话那头沉默了很长很长时间。

“是。”陈锋终于说,“我偷了。我看了你的方案,知道它有多好,知道它能让我坐上那个位置。我对自己说,我们是兄弟,你不会怪我。我对自己说,等我上去了,会补偿你。我对自己说了很多漂亮的借口,但真相是,我就是个小偷,是个背叛朋友的混蛋。”

他的声音哽咽了:“元朗,我不求你原谅。我只求你,别毁了这个项目。它现在不只是我的前途,还是我父亲的命。如果项目黄了,我总监的位置保不住,我父亲的药就断了。他只有半年了,我想让他走得不那么痛苦,这有错吗?”

道德绑架。用亲情,用绝症,用成年人的不得已。

但我不得不承认,它有效。我想起自己父亲去年做手术时,我在医院守了三天三夜,那时我只想用一切换他平安。如果那时有人告诉我,偷一个方案能救父亲的命,我会怎么做?

我不知道。

“陈锋,”我说,“项目会不会黄,不取决于我,取决于它本身有没有问题。如果你真的在乎这个项目,就该告诉我,你在哪些地方做了改动,为什么改,可能有什么风险。”

电话那头再次沉默,这次更长。

“我没有做任何危险的改动,”陈锋的声音忽然变得冷静,“所有的修改都是为了提高效率,优化性能。如果你发现了什么问题,那可能是你原来的设计就有缺陷。”

我的心沉了下去。到了这个时候,他还在推卸责任。

“那个删除异常处理机制的代码呢?”我问。

短暂的停顿。“什么异常处理?我不清楚。可能是什么时候手误删了,你可以恢复嘛,这有什么大不了的。”

“那段代码如果留在系统里,可能导致交通信号计算错误,引发堵塞。”

“哪有那么严重,”陈锋轻笑一声,那笑声虚弱而讽刺,“元朗,你还是老样子,喜欢把事情往最坏处想。一个异常处理而已,就算真的触发了,系统也有备选方案。你别吓唬自己,也别吓唬甲方。”

“备选方案是什么?”

“......”陈锋被问住了。

“你根本没有设计备选方案,对吧?”我说,“你删了异常处理,以为永远不会触发。但如果触发了,系统就会用错误的数据一直运行,直到人为干预。而在早晚高峰,人为干预需要时间,这个时间足够造成交通瘫痪。”

“你这是危言耸听!”

“是不是危言耸听,今晚测试就知道。”我看了看表,“还有一小时,我们会做高并发压力测试。如果系统崩溃,天城会立刻撤资。如果通过,项目继续。但无论哪种结果,陈锋,我都会把你所有未经评审的改动全部恢复,并且写进报告,说明这些改动存在重大安全隐患。”

“元朗!”他的声音陡然提高,随即因为疼痛而倒抽一口冷气,“你......你这是要毁了我......”

“我是要救这个项目,和可能因为这个项目出事的人。”我平静地说,“包括你。如果这个系统真的因为你删改的代码而引发事故,你就不只是丢掉工作那么简单了。你会坐牢的,陈锋。”

电话那头传来粗重的呼吸声,还有压抑的咳嗽。良久,他说:“好,好,元朗,你够狠。我以为我们至少还有一点旧情分......”

“旧情分?”我打断他,“你偷我方案的时候,想过旧情分吗?你让林薇来找我打感情牌的时候,想过旧情分吗?陈锋,我们之间,是你先毁了那份情分。”

我挂断电话,手在发抖。

不是愤怒,是悲哀。为那段十年的友情,为那个曾经一起通宵改代码、一起吐槽老板、在彼此婚礼上当伴郎的陈锋。他死了,死在他自己的选择里。

窗外,夜幕完全降临。城市的灯光璀璨如星河,每一盏灯下都有一个故事,有不得已,有选择,有得到和失去。

我的手机亮起,苏晓发来消息:“给你点了外卖,放在前台了。记得吃。另外,妈打电话说爸的复查结果很好,让你别担心。我们都爱你。”

我看着那条消息,眼眶发热。

我还有家,还有爱我的人,还有需要我保护的东西。这让我在道德的灰色地带里,还能找到站稳的根基。

敲门声响起,小赵探头进来:“朗哥,天城的人到了,测试环境也准备好了。大家吃完饭了,随时可以开始。”

“开始吧。”我站起身,走向会议室。

门在我身后关上,走廊的灯光把我的影子拉得很长。前方,是长达一夜的测试,是可能决定项目生死的技术验证,是和陈锋无声的战争。

而我知道,无论今夜的结果如何,有些东西,已经永远地改变了。

(第六章完,字数约5000)

第七章 深夜测试

测试室里的空气混合着咖啡、汗水和电路板加热的焦味。十二块显示屏环绕墙壁,实时滚动着数据流、性能曲线和交通模拟画面。中央大屏上,七个路口的3D模型正在运行,车辆如蚂蚁般穿梭。

“并发数五千,响应时间正常。”天城的技术员盯着屏幕,“准备提升到一万。”

“提升。”周文婧站在控制台前,双手抱胸,表情凝重。

我坐在她旁边的位置,手指在键盘上快速敲击,监控着核心算法的运行状态。修复后的自适应模块正在工作,数据流平稳,缓存队列的动态调节算法运行良好。但我知道,真正的考验还没来。

“一万并发,系统负载75%,响应时间开始波动。”天城技术员报告。

“继续加压。”我说。

“元工,这已经超过设计峰值了......”我们这边的一个工程师小声提醒。

“天城的要求是能承受设计峰值150%的压力。”周文婧头也不回,“继续。”

屏幕上,代表系统负载的曲线开始爬升,从75%到80%,再到85%。七个虚拟路口的车流明显增多,信号灯频繁切换,模拟的车流开始出现微小的迟滞。

“九十了。”有人低声说。

测试室里安静得只剩下键盘敲击声和服务器风扇的嗡鸣。所有人的眼睛都盯着屏幕,盯着那些跳动的数字和曲线,仿佛那是病人的心电图。

“九十五!”天城技术员的声音紧绷,“响应时间超过安全阈值,3号、5号路口出现信号延迟!”

“稳住。”我说,手指在控制台上输入一串指令,“启动负载均衡B方案。”

屏幕上,数据流开始重新分配,从拥堵的节点转向相对空闲的节点。负载曲线在96%的位置颤抖了几下,缓缓回落到92%。

短暂的欢呼声响起,但立刻被周文婧制止:“还没结束。模拟突发事故,3号路口东侧车道封闭。”

控制员敲击键盘。屏幕上,3号路口的一条车道变成红色,代表封闭。车流开始重新寻找路径,路口的负载瞬间飙升。

“3号路口负载突破100%!自适应模块开始降级!”

“降级策略是什么?”周文婧看向我。

“关闭智能优化,切换为预设的保守方案,保证基础通行。”我调出降级日志,“看,系统自动识别了突发拥堵,启动了应急预案。信号灯切换为固定时长模式,虽然效率降低,但不会出错。”

屏幕上,3号路口的信号灯停止了智能变化,转为固定的红绿黄循环。车流虽然变慢,但依然有序。

“很好。”周文婧点头,“恢复车道,继续加压。”

测试进行了三个小时。我们模拟了各种极端场景:暴雨天气能见度降低、大型活动突发人流、交通事故连环发生、甚至黑客攻击试图篡改信号灯。系统在压力下颤抖、报警、降级,但始终没有崩溃。

凌晨两点,最后一次极限测试结束。系统负载最终停留在设计峰值的180%,然后安全降级运行。

测试室里爆发出真正的欢呼。几个年轻的工程师击掌庆祝,小赵激动得脸都红了。就连天城那边一直板着脸的技术负责人,也露出了笑容。

“元工,厉害!”他走过来,主动伸出手,“这个修复方案,不仅解决了原有的漏洞,还提升了系统的鲁棒性。我为我之前的质疑道歉。”

“应该的。”我握住他的手,手心全是汗。

周文婧最后一个走过来。她没有笑,但眼神里的冰霜融化了:“元朗,你证明了自己。也证明了我们的选择没错。”

“谢谢。”我说,声音沙哑。连续十小时的高度紧张,让我的太阳穴突突直跳。

“今晚就到这儿,大家辛苦了。”周文婧对所有人说,“天城团队在隔壁会议室准备了宵夜,各位先去休息。明天上午十点,我们开总结会。”

人群散去,测试室里只剩下我和周文婧,还有一个在收拾设备的天城技术员。

“你看起来不太好。”周文婧说。

“有点累。”我揉了揉眉心,“但问题解决了,值得。”

“不只是累吧。”她从包里拿出一瓶水递给我,“陈锋给你打电话了?”

我猛地抬头。

“不用惊讶,医院那边有我的人。”周文婧淡淡地说,“他下午试图联系董事会成员,但没成功。晚上又给你打电话,说了什么?”

“家里的事,和工作的事。”我拧开水喝了一口,“他想让我手下留情。”

“你答应了?”

“我告诉他,我不在乎他的位置,但我在乎系统的安全。”我看着屏幕上已经静止的模拟画面,“他好像不信。”

“他不会信的。”周文婧在控制台边坐下,“在陈锋的世界观里,所有人都在争夺有限的资源,所有人都是潜在的敌人。你越说不想要,他越觉得你在伪装。”

“也许吧。”

“他父亲的病是真的,”周文婧忽然说,“我查了。肺癌晚期,靶向药每月三万二,全部自费。他岳父母的康复费也是真的,加起来每个月开销超过八万。以他之前的工资,确实撑不住。”

我握紧水瓶:“所以他有理由偷我的方案?”

“不,理由和借口是两回事。”周文婧转过头看我,“元朗,我也经历过类似的事。我父亲病重时,我为了筹钱,同时打三份工,每天睡四个小时,但我没偷过任何人的东西。困境可以解释行为,但不能开脱错误。”

她站起来,走到窗边,看着外面沉睡的城市:“陈锋选择了捷径,为此背叛了朋友,也背叛了自己的专业操守。现在,他必须承担后果。你如果心软,放过他,那对那些兢兢业业、哪怕再难也不越线的人,公平吗?”

窗外,城市的灯光稀疏了些,但依然明亮。那些灯光下,有多少人在为生活挣扎,又有多少人守住了底线?

“我不会放过他,”我说,“但我也不会落井下石。测试结果我会如实报告,他的那些危险改动,我会写进文档。至于公司怎么处理,是公司的事。”

“这就够了。”周文婧转身,“顺便说,董事会明天上午会听取测试汇报。李建明会参加,还有两位独立董事。这是个机会,元朗,让所有人看到你的价值。”

“然后呢?等我证明了自己的价值,陈锋就彻底出局,我顶替他的位置?”

“如果你想要的话。”

“我不想要。”我摇头,“两周后,我会离开。这是我的承诺。”

周文婧看了我很久,点了点头:“好。但你至少应该得到应有的认可。这个项目如果能成功落地,你应该是第一功臣,而不是陈锋。这件事,我会帮你争取。”

她离开后,我一个人在测试室坐了会儿。屏幕已经暗了,倒映出我疲惫的脸。三年前开始这个项目时,我从没想过会走到今天这一步——在深夜的办公室里,和甲方的负责人讨论如何“扳倒”我曾经的兄弟。

手机震动,是苏晓的消息:“还没结束吗?我熬了粥,等你回来。”

时间是凌晨三点十分。她还没睡。

“马上回。”我回复,收拾东西离开。

走廊里空无一人,只有安全出口的绿灯幽幽亮着。经过陈锋的办公室时,我停下脚步。门锁着,但透过玻璃窗,可以看到里面的陈设——他新换的皮质座椅,桌上妻子和孩子的照片,墙上的“优秀员工”奖状,还有角落里我送他的那盆绿萝的遗骸——他换了一盆更大的发财树。

我曾无数次走进这间办公室,和他讨论方案,吐槽客户,分享生活。我们曾在这里通宵加班,一起看日出,然后下楼吃豆浆油条。他说等这个项目成了,要请我去最好的餐厅。我说不用,大排档就行,啤酒烤串,痛快。

那些时光是真的。现在的对立,也是真的。

电梯下行,我忽然感到一种深切的疲惫。不是身体的累,是心的累。成年人的世界太复杂,不是非黑即白,而是在大片大片的灰色地带里,寻找一个不让自己厌恶自己的立足点。

走出大楼,凌晨的风带着凉意。街上空荡,只有环卫工人在清扫路面。我站在路边等车,手机又震动了。

这次是陌生号码,但我知道是谁。

“元朗,是我。”陈锋的声音比下午更虚弱,但带着一种奇怪的平静,“测试结束了吧?结果怎么样?”

“通过了。”

电话那头传来一声叹息,不知道是放松还是失望。

“恭喜。”他说,“你又赢了。”

“我没有和你比赛,陈锋。”

“不,我们一直在比赛,只是你以前不知道。”他咳嗽了几声,“从进公司第一天起,我就把你当对手。你能力强,人缘好,上级喜欢。而我,什么都要更努力才能得到。这个总监的位置,如果我不抢,就是你的。我只是比你快了一步。”

夜风吹过,我打了个寒颤。

“所以,你从来没把我当朋友?”

沉默。长久的沉默。

“曾经是。”陈锋终于说,“但朋友和利益冲突时,我选择利益。元朗,你别装清高,如果换做你,你也会做同样的选择。这个社会就是这样,你不争,就被人踩在脚下。”

“我不会。”我说得斩钉截铁,“我不会偷朋友的东西,不会用危险的手段掩盖自己的无能,不会在出事后用家人的病来博同情。陈锋,我们不一样。”

电话那头传来压抑的笑声,苦涩而破碎。

“是啊,你清高,你了不起。那你现在在做什么?趁我病着,抢我的项目,在我的团队里树立威信,等着把我彻底踢出局。元朗,你和我,真的有区别吗?”

网约车到了,停在我面前。司机摇下车窗,用询问的眼神看我。

“我有事,先挂了。”我说。

“等等。”陈锋叫住我,“元朗,看在我们认识十年的份上,最后帮我一次。明天董事会的汇报,你能不能......不要把那些修改说成是我擅自做的?就说,是团队讨论后的一致决定。至少,让我保留一点体面。”

我看着车窗上自己的倒影,那张脸在街灯下显得苍白而陌生。

“那些修改是危险的,陈锋。如果不说清楚,未来出了事,责任是大家的。我不能让整个团队为你背锅。”

“不会出事的!我已经计算过概率......”

“万分之一的概率,发生在一个人身上,就是百分之百。”我拉开车门,“对不起,陈锋,这次我不能帮你。”

挂断电话,上车。司机问我去哪,我报了地址,然后靠在座椅上,闭上眼睛。

手机又震了一下,是陈锋发来的短信,只有一句话:“你会后悔的。”

我没有回复,把手机调成静音。

车窗外,路灯向后飞掠,连成一条光带。这个城市睡了,但它的心跳还在继续。而我,在这个心跳声中,做出了选择。

回到家,凌晨四点。客厅亮着一盏小灯,苏晓在沙发上睡着了,身上盖着薄毯。餐桌上是温着的粥和小菜。

我轻轻走过去,想抱她去卧室,她却醒了。

“回来了?”她揉揉眼睛,声音带着睡意,“测试怎么样?”

“通过了。”我吻了吻她的额头,“去床上睡吧,别着凉。”

“你吃了没?我去热粥。”

“我自己来,你快去睡。”

但她还是起来了,陪我坐在餐桌边,看我喝粥。温暖的米粥下肚,紧绷的神经终于放松下来。

“陈锋又联系我了。”我说。

苏晓没有说话,只是握住我的手。

“他说,如果换做我,也会做和他一样的选择。”我看着碗里升腾的热气,“晓晓,你说,我真的比他高尚吗?我现在做的一切,难道没有私心?我不想报复吗?我不想证明自己是对的吗?”

苏晓沉默了一会儿,说:“人都有私心,元朗。但区别在于,你的私心没有伤害无辜的人。你想证明自己,但你是用实力证明,不是用手段打压别人。你想拿回属于自己的东西,但你没有用谎言和背叛去拿。”

她顿了顿,声音很轻:“而且,你拒绝了周文婧让你找陈锋把柄的建议,对吗?你明明可以彻底毁了他,但你没有。这就是你和他不一样的地方。”

我放下勺子,握住她的手。她的手温暖而柔软,像黑夜里的光。

“睡吧,”她说,“明天还要开会。无论发生什么,我都在。”

我点点头,和她一起收拾碗筷,然后相拥着倒在床上。在沉入睡眠的前一刻,我想,也许成年人的世界不是非黑即白,但至少,在灰色地带里,我还能牵着她的手,不让自己迷失方向。

这就够了。

第八章 董事会的棋局

早晨八点,会议室里已经坐满了人。

长桌一侧是以李建明为首的内部高管,另一侧是天城建设的代表,周文婧坐在首位。桌子尽头,是两位独立董事——头发花白的赵董和戴着金丝眼镜的王董。气氛肃穆,像是庭审现场。

我坐在李建明下首,面前摊着测试报告和修复方案。白衬衫的领口有点紧,我松了松领带,深吸一口气。

“开始吧。”赵董开口,声音沉稳,“天城的周总,您先说说情况。”

周文婧站起来,打开投影:“各位董事,过去一周,我们与贵司技术团队进行了三轮深度对接,发现了方案中存在若干重大安全隐患。具体来说,包括自适应学习模块的死循环漏洞、数据流异常处理机制缺失、以及未经评审的性能优化改动。”

屏幕上逐条列出问题,每一条都附有技术细节和潜在风险。李建明的脸色越来越难看。

“这些问题,在之前的方案评审中并未提及。”王董推了推眼镜,“陈锋总监提交的方案,我们评审时评价很高。”

“因为陈总监提交的是理想版本,而实际执行的版本,他做了未经授权的修改。”周文婧调出代码对比图,“这是原始设计文档,这是实际提交的代码。看这里,这里,还有这里——关键的安全校验被删除,为了所谓的‘性能提升’。但根据我们的模拟测试,这些改动不仅不会提升性能,反而会在高负载下导致系统崩溃。”

会议室鸦雀无声。李建明的手指在桌面上轻轻敲击,这是他紧张时的习惯。

“这些问题,元朗先生在过去三天内已经基本修复。”周文婧切换画面,显示测试数据,“昨晚的极限压力测试,修复后的系统承受了设计峰值180%的负载,无崩溃,无数据丢失,安全降级机制正常触发。这是详细的测试报告。”

报告在与会者手中传阅。赵董翻看着厚厚的文档,眉头紧锁。

“元朗,”他抬头看我,“这些漏洞,是原始设计就有的,还是后期引入的?”

所有人的目光聚焦过来。李建明在桌下轻轻碰了碰我的腿,那是提醒,也是警告。

“原始设计有一个隐蔽的死循环漏洞,是我的疏忽。”我平静地说,“我在最终版方案中做了标记,但未详细说明修复方案。这个漏洞,陈总监在接手时没有发现。”

“其他问题呢?那些被删改的安全校验?”

“那些是陈总监在后续开发中做的修改,”我看着李建明,他的脸色苍白,“理由是‘简化实现,加快进度’。我查看了邮件记录,这些改动没有经过正式评审流程,是陈总监直接要求开发人员执行的。”

会议室里响起低低的议论声。

“这不可能。”李建明终于开口,声音干涩,“陈锋不会做这么不专业的事。他也许......也许只是出于效率考虑,做了些优化......”

“删掉安全校验不是优化,是赌博。”周文婧冷冷地说,“用公共交通安全赌博。李总,如果这个系统真的上线,因为某个被删除的异常处理而导致交通瘫痪,谁来负责?你?陈锋?还是整个公司?”

李建明哑口无言。

“元朗,”赵董看着我,“既然你发现了问题,也做了修复,现在这个系统,你认为可以信任吗?”

我站起来,走到投影仪前。屏幕上是我用了一夜准备的演示文稿。

“各位董事,任何系统都有风险。但经过修复和测试,我认为现在的方案已经达到了可商用标准。不过,”我切换页面,“我建议增加三个月的试运行期,在非核心路段先行部署,收集真实场景数据,进一步完善算法。同时,建立独立的第三方监管机制,所有代码变更必须经过双人评审和安全测试。”

“这会延迟项目进度。”王董说。

“但能降低风险。”我迎上他的目光,“这个系统控制的是交通信号,关系到公共安全。我认为,谨慎比速度更重要。”

周文婧微微点头。两位独立董事交换了眼神。

“元朗的建议有道理。”赵董缓缓说,“天城方面怎么看?”

“我们同意。”周文婧说,“事实上,这也是我们的要求。如果贵司不接受,天城会重新评估合作。”

威胁,但优雅。会议室里温度骤降。

“我们接受。”李建明几乎是咬着牙说出的这句话,“但试运行期间,需要元朗全程跟进。他必须对这个系统的稳定性负责。”

“这正是我的下一个建议。”周文婧说,“鉴于元朗先生对这个方案的深刻理解和修复能力,天城建议,在试运行期间,由元朗先生担任技术总负责人,直接向项目指导委员会汇报。陈锋总监康复后,可以担任副职,协助元朗工作。”

“这不符合公司规定!”李建明猛地站起来,“陈锋是正式任命的部门总监,元朗现在只是顾问......”

“李总,”赵董打断他,“规定是死的。现在的问题是,谁能保证这个三亿的项目不出问题?谁能对天城、对董事会、对可能受到影响的市民负责?”

他环视全场:“我认为周总的建议合理。在项目试运行期间,由元朗担任技术总负责人。陈锋康复后,根据情况再调整。元朗,你有没有信心担起这个责任?”

所有人的目光再次聚焦。李建明的眼神复杂,有恼怒,有无奈,也有一丝不易察觉的恳求。周文婧平静地看着我,等待我的回答。

这一刻,会议室静得能听到空调出风的声音。

“我有信心,”我说,“但我有两个条件。”

“你说。”赵董点头。

“第一,技术团队必须重新整合。我需要绝对的决策权,所有代码变更必须经过我的评审。第二,”我看着李建明,“陈总监康复后,我需要和他有一次正式的交接会议,明确职责划分,避免权责不清。”

第一个条件,是确保系统安全。第二个条件,是给所有人一个台阶下。

李建明显然明白了我的用意,紧绷的肩膀放松了些:“可以。我会和陈锋沟通。”

“那就这样定了。”赵董拍板,“试运行期三个月,元朗任技术总负责人。三个月后,根据试运行结果,再决定后续安排。天城方面?”

“我们同意。”周文婧站起身,“另外,天城会派出一支五人技术团队,全程参与试运行,与贵司团队协同工作。这是为了确保透明度,也希望各位理解。”

“理解。”李建明挤出一个笑容,“合作愉快。”

会议结束,人群散去。李建明走到我面前,压低声音:“来我办公室一趟。”

副总裁办公室,门关上,隔音效果很好,外面的声音完全消失。

“坐。”李建明指了指沙发,自己走到吧台边,倒了两杯水,“董事会那边,我尽力了。”

“谢谢李总。”我接过水杯,没有喝。

“不用谢我,我不是在帮你。”他在我对面坐下,揉了揉太阳穴,“我是在救这个项目,救我的职位。如果天城撤资,董事会第一个问责的就是我。是我力排众议提拔了陈锋,是我在周文婧第一次质疑时还为他打包票。”

他苦笑着摇头:“元朗,你给了我一个教训。看人,不能只看表面。”

“陈锋他......”

“他有能力,有野心,但急了。”李建明看着我,“他父亲的事,我知道。年初他找我预支半年工资,我批了。但我没想到,压力会让他走这种捷径。”

“您早就知道他的经济状况?”

“知道一点,但没想到这么严重。”李建明叹息,“如果我早知道,也许会多关注一些,也许......算了,现在说这些没用。元朗,接下来三个月,你是这个项目的关键。做好它,董事会会看到你的价值。做不好,我们一起滚蛋。”

“我会尽力。”

“不是尽力,是必须做好。”李建明直视我的眼睛,“还有,对陈锋,留点余地。他父亲时间不多了,别让他在病床前还要担心工作。这是我对你的私人请求,不是命令。”

我沉默片刻,点头:“我明白。”

离开办公室,走廊里,小赵在等我,表情焦急。

“朗哥,陈总监......陈锋他刚才来电话了,问董事会的结果。我说不知道,他就把电话挂了。但他语气很怪,我有点担心......”

“他说什么了?”

“他说......”小赵吞吞吐吐,“他说‘既然都不给我活路,那就别怪我不客气了’。朗哥,他会不会做什么傻事?”

我心头一紧:“他还在医院?”

“应该吧,护士刚才还打电话来问工作的事,说他一直用手机处理邮件,不肯休息。”

“我知道了。你回去工作,今天开始整合团队,按照昨晚测试通过的版本,准备试运行环境。”

“是!”

回到临时办公室——李建明让人给我腾出来的小房间,我关上门,给陈锋发消息:“董事会决定,试运行期间我暂代技术负责人。你好好养病,康复后我们再谈。”

消息显示已读,但没有回复。

十分钟后,手机震动,是林薇。

“元朗,陈锋他......他看到公司邮件了,说董事会任命你当技术负责人。他情绪很激动,把手机都摔了。你能不能......能不能来医院一趟?劝劝他?”

我看着那条消息,很久,回复:“我现在过去。”

市一医院住院部,消毒水的味道弥漫在空气里。903病房门口,我停下脚步,透过门上的玻璃窗,看到陈锋半靠在床上,盯着天花板。才几天不见,他瘦了一圈,脸色蜡黄,眼眶深陷。

林薇在旁边削苹果,眼睛红肿。

我敲了敲门,走进病房。陈锋转过头,看到是我,眼神瞬间冷了下来。

“你来干什么?看我笑话?”

“陈锋,别这样......”林薇低声说。

“嫂子,我想和他单独聊聊。”我说。

林薇看看我,又看看陈锋,放下苹果和盘子,默默退了出去,带上了门。

病房里只剩下我们两人。点滴瓶里的液体一滴一滴落下,发出轻微的声响。

“董事会邮件你看到了,”我在床边的椅子坐下,“试运行三个月,我负责。三个月后,你康复了,我们再重新安排。”

“重新安排?”陈锋笑了,声音嘶哑,“把我安排到哪里去?副职?还是调去哪个闲职部门?”

“看项目进展,也看你的恢复情况。”

“元朗,别假惺惺了。”他盯着我,眼睛里有血丝,“你赢了,我认。但别摆出一副施舍的样子。这个位置本来就是我的,是你趁我病,抢走的。”

“不是我抢的,是你自己弄丢的。”我迎上他的目光,“那些危险的改动,如果我不修复,项目早就黄了。到时候别说总监,你连工作都保不住。”

“那又怎样?至少我试过了!”陈锋突然激动起来,撑着坐直,“我努力了,我拼了,我想改变命运!你呢?你永远那么清高,那么正确,等着别人犯错,然后站出来当救世主!你凭什么?!”

他的声音在病房里回荡,隔壁床的病人探过头来看。

“凭我不想看到有人因为我的设计受伤。”我平静地说,“凭我知道,有些线不能跨过去。陈锋,你想要那个位置,可以竞争,可以表现,可以用实力争取。但你不该偷,不该用危险的方式掩盖自己的不足,更不该在出事之后,用家人的病来博同情,逃避责任。”

“我没有......”

“你有。”我打断他,“你让林薇来找我,说那些话,不就是希望我心软吗?你打电话给我,让我帮你隐瞒,不就是在逃避责任吗?陈锋,你父亲生病,你需要钱,我理解,我真的理解。但这不是你伤害别人、罔顾安全的理由。”

陈锋的脸色从蜡黄转为惨白,他剧烈咳嗽起来,护士闻声进来,检查了他的状况,责备地看了我一眼:“病人需要休息,不能受刺激。”

“抱歉。”我站起来,“陈锋,三个月,你好好养病。三个月后,如果你还想继续做这个项目,我们谈。如果你不想,我可以帮你推荐其他地方。但无论怎样,别再做傻事。你的家人需要你健康地活着,不是需要一个躺在病床上还在算计的总监。”

我走到门口,手放在门把上。

“元朗。”陈锋叫住我,声音忽然变得很轻,“你还记得大四那年,我们一起参加编程大赛吗?”

我转过身。

“记得。我们熬了三个通宵,最后拿了二等奖。”

“二等奖,不是一等奖。”陈锋看着天花板,“因为我最后提交的代码有个bug,导致性能分扣了20%。你当时说,没关系,下次再来。但我记得,一等奖的奖金是五千,二等奖只有两千。我那时需要那五千块,我妹妹的学费还差五千。”

我怔住了。我从未知道这件事。

“最后我找辅导员预支了助学金,凑够了学费。”陈锋闭上眼睛,“但从那时起,我就知道,在这个世界上,第二名什么都不是。只有赢的人,才能得到想要的。输的人,连解释为什么输的资格都没有。”

“所以你就......”

“所以我不允许自己再输。”他睁开眼睛,看着我,眼神空洞,“元朗,你说得对,我错了,我认。但我不会道歉,因为道歉没有用。这个世界只看结果,不问过程。我输了,就这么简单。”

我站在门口,不知道该说什么。那些愤怒、失望、被背叛的痛楚,在这一刻,都化成了复杂的悲哀。我们都是被生活驱赶着前行的人,只是在岔路口,选择了不同的方向。

“好好休息。”最终,我只说出这三个字。

走出病房,林薇等在走廊里,手里拿着那个保温桶。

“他没事吧?”她担忧地问。

“身体需要静养,心里......”我摇摇头,“可能需要时间。”

“元朗,对不起,给你添麻烦了。”林薇低声说,“我会劝他,让他想开点。他父亲那边......医生说就这几天了,可能撑不过这个月。我怕他受不了这个打击......”

“需要帮忙的话,随时联系我。”

“谢谢。”她顿了顿,“还有,董事会的事,我也听说了。谢谢你没有......没有落井下石。陈锋他不懂,但我懂。你本来可以做得更绝的。”

我没有回答,只是点了点头,转身离开。

走廊很长,灯光苍白。我走到电梯口,按下下行键,在反光的金属门上看到自己的脸,疲惫,但眼神坚定。

电梯门开,里面站着周文婧。

“你怎么在这?”我惊讶。

“来看看陈锋,毕竟现在是合作伙伴。”她走出电梯,看了一眼病房方向,“也来看看你。聊得怎么样?”

“他不认为自己有错,至少,不认为有别的选择。”

“人总会为自己的选择找理由。”周文婧按了下行键,“董事会那边,我已经安排好了。接下来三个月,你的权限会完全开通,天城的团队也会全力配合。但元朗,你要小心。”

“小心什么?”

“狗急跳墙。”电梯门开,她走进去,转身看我,“陈锋不会轻易放弃。他还有牌没打完。”

“什么牌?”

“我不知道。但我知道,一个在绝境中的人,什么事都做得出来。”电梯门缓缓关闭,她最后说,“保护好你的工作,也保护好你的生活。”

电梯下行,我站在空荡的走廊里,回味她的话。

手机震动,是苏晓发来的消息:“妈熬了汤,让我给你送去。我现在在你公司楼下,保安不让进,说要有内部人接。”

我看看时间,下午三点。会议从早上八点开到现在,我还没吃午饭。

“我马上下来。”

走出医院大楼,四月的阳光很好,暖洋洋地洒在身上。但我心里,却像压着一块冰。

陈锋最后那个眼神,空洞,绝望,但深处似乎还藏着什么。那不是一个认输的人的眼神。

电梯里周文婧的话在耳边回响。

狗急跳墙。

他会做什么?

(第八章完,字数约5000)

第九章 暗流

试运行筹备期进入第二周。

项目组的气氛微妙而紧张。陈锋的两个亲信被调离核心岗位,负责边缘模块的测试文档。小赵被提拔为临时副主管,协助我管理团队。天城的五人技术小组入驻,在办公室东侧有了自己的工区,每天和我们一起工作,也一起加班。

“朗哥,3号模块的集成测试通过了,但有三个警告。”小赵拿着平板过来,眉头紧锁,“天城的人建议重构,但那样会延迟进度至少三天。”

我看了一眼警告内容,是代码规范问题,不影响功能,但影响可维护性。

“重构。”我说,“试运行阶段,可维护性比进度重要。告诉团队,这三天加班,公司按三倍工资算。”

“明白。”小赵犹豫了一下,“还有,陈总监那边......他今天出院了。李总安排他先在家休养两周,但他刚才给我发了邮件,问项目进展。”

“回复他,让他安心休养,工作的事暂时不用操心。”

“我已经这么说了,但他回复说,有些技术细节只有他知道,怕我们遗漏。”小赵把平板递过来,“你看,他列了七个问题,看起来都很专业。”

我看了一眼邮件。陈锋的确列出了七个潜在的技术风险点,其中有三个是真实存在的,我在上周已经解决。另外四个,要么是杞人忧天,要么是理解有误。

但邮件写得很巧妙,看起来完全是在为项目着想,担心交接不到位导致问题。

“他是想提醒我们,还是想显示自己的重要性?”小赵小声问。

“两者都有。”我放下平板,“回复他,感谢提醒,其中三个问题已解决,另外四个不构成风险,附上技术分析。抄送李总和天城团队。”

“这样会不会太......打脸?”

“技术问题,用技术回答。”我说,“如果他真心为项目好,会接受。如果不是,那正好让所有人看清。”

小赵点点头,去处理了。我继续看代码评审记录,但心思已经无法完全集中。

陈锋出院的时机很微妙。试运行环境搭建进入关键阶段,下周就要部署到实际路段。这个时候他“病愈回归”,想要重新介入,合情合理。

手机震动,是李建明:“来我办公室一趟。”

副总裁办公室里,除了李建明,还有人力资源总监张岚。她是个四十岁出头的干练女性,平时很少露面,一旦出现,通常意味着人事变动。

“坐。”李建明脸色凝重,“陈锋刚才给我打电话,要求提前返岗。医生说建议再休养两周,但他坚持,说项目需要他。”

“您的意见是?”我问。

“从项目角度,现在你负责得很顺利,天城那边评价也很高,没必要换人。”李建明顿了顿,“但从人情角度,陈锋父亲昨天凌晨去世了。”

我心里一沉。

“他今早处理的遗体,下午就给我打电话要求工作。他说,工作能让他暂时忘记痛苦。”李建明揉着太阳穴,“元朗,我知道这对你不公平。但你能不能......暂时分一些工作给他?让他有点事做,也算过渡。”

张岚补充道:“我们可以明确,你依然是技术总负责人,他只负责一些辅助性工作。等试运行稳定了,再重新安排他的岗位。这样既照顾了他的情绪,也不影响项目。”

我看着他们。李建明眼神里是真实的为难,张岚则是一贯的专业冷静。他们不是在偏袒陈锋,而是在处理一个棘手的员工心理问题。

“我可以分一些文档工作给他,”我说,“但核心模块的代码,他不能碰。天城也不会同意。”

“可以。”李建明松了口气,“那就这么定。另外,他父亲的葬礼在后天,你......要不要去?”

这是个棘手的问题。去,显得虚伪;不去,显得绝情。

“我会送花圈。”最终我说,“人就不去了,免得尴尬。”

“理解。”李建明点头,“那就这样。辛苦你了,元朗。这三个月是关键,熬过去,公司不会亏待你。”

离开办公室,我在走廊里站了一会儿。窗外阴云密布,要下雨了。

陈锋父亲去世了。那个需要每月三万二靶向药的老人,终究没有撑过去。我想起陈锋在病房里说“我妹妹的学费还差五千”时的表情,想起林薇红着眼眶说“他只有半年了”时的绝望。

成年人的崩溃,是静悄悄的。陈锋的崩溃,是偷走我的方案,是删掉安全代码,是在病床上还在算计如何保住位置。而现在,支撑他拼命往上爬的理由之一,消失了。

手机震动,是周文婧:“陈锋父亲的事,听说了?”

“嗯。”

“小心点。人在极度悲痛时,行为可能失控。”

“我会注意。”

“还有件事,”周文婧的语气严肃起来,“我们监控到,过去24小时内,有三拨不同的IP尝试攻击测试环境的防火墙。攻击手法很专业,不是普通黑客。”

我心头一紧:“天城的安全团队怎么说?”

“已经拦截,正在溯源。但有意思的是,攻击目标很明确,是针对自适应模块的漏洞测试接口。对方似乎知道我们修复了漏洞,想测试修复是否彻底。”

“陈锋知道这个接口吗?”

“知道。上周的测试报告里提到过。”周文婧停顿了一下,“但我没说是他。IP是海外的,通过多层代理,很难追踪到源头。我只是提醒你,加强内部权限管理。另外,天城的技术资料,不要放在公司服务器上,用我们提供的加密设备。”

“明白。”

挂断电话,我后背发凉。如果攻击是陈锋指使的,他想干什么?验证漏洞是否真的修复?还是想找到新的突破口?

回到办公室,我立即召集核心团队开会。

“从今天起,所有代码提交需要双重验证,我亲自审核才能合并。测试环境的访问权限收紧,只有我、小赵和天城的技术负责人有完整权限。所有对外接口的日志,每天检查三次。”

“朗哥,这么严格会影响效率......”有人小声说。

“安全第一。”我环视全场,“这个系统如果出问题,在座的各位都可能要负法律责任。不想坐牢的,就按我说的做。”

会议室里一片寂静。所有人都感受到了气氛的不同寻常。

“另外,”我补充,“任何外部人员询问项目细节,包括公司其他部门的同事,一律转给我来处理。没有我的允许,不准透露任何技术信息。”

“包括陈总监吗?”小赵问。

“包括所有人。”

会议结束,团队散去。小赵留下,关上门。

“朗哥,是不是出什么事了?”

“可能。”我没有隐瞒,“有人在试探我们的系统。陈锋父亲刚去世,他就急着要回来工作,我不放心。”

“你是说,陈总监他......”

“我什么都没说。”我打断他,“但防人之心不可无。小赵,你是副主管,帮我盯紧点。有任何异常,随时告诉我。”

“明白。”小赵郑重地点头。

接下来的两天,风平浪静。陈锋的葬礼在周三举行,我托人送了花圈。项目组有几个和他关系好的同事去了,回来说陈锋看起来很平静,但平静得吓人,一滴眼泪都没流。

周四下午,陈锋回来了。

他瘦了一大圈,西装穿在身上显得空荡,但头发梳得整齐,胡子刮得干净,除了脸色苍白,看起来和平时没什么两样。

“陈总监。”小赵起身打招呼,其他人也纷纷站起来。

“大家坐,继续工作。”陈锋摆手,声音有些沙哑,“我就是来看看,熟悉一下。元朗在吗?”

“在会议室,和天城的人开会。”

陈锋点点头,走向自己的办公室。门关上了,整个办公区的气氛为之一滞。

半小时后,我和天城的人开完会出来,看到陈锋站在白板前,上面写满了技术要点和问题。

“这几个地方,我觉得还可以优化。”他指着白板上的架构图,“元朗,有空聊聊吗?”

会议室里,只剩我们两人。

“节哀。”我说。

“谢谢。”陈锋在椅子上坐下,双手交叠放在桌面上,姿态放松,但指节发白,“花圈收到了,谢谢。”

沉默在空气中蔓延。窗外的雨终于下了,敲打着玻璃。

“李总应该和你说了,我暂时负责一些文档工作。”陈锋开口,“这是项目需求分析,我发现了几处不一致的地方,需要和天城确认。”

他推过来一份文件,上面用红笔做了密密麻麻的批注。我翻开,不得不承认,他看得很仔细,提出的问题也都在点上。

“我会转给天城。”我说。

“另外,关于试运行路段的选址,我有些建议。”他又递过来一份地图,上面标注了七个备选路口,“这七个路口的车流特征不同,如果要做对比测试,应该选择差异性大的。我建议换成这三个,数据更有代表性。”

我看了一眼,他的建议确实有道理。但问题是,路段的选址是上周就确定的,天城已经和交管部门协调好了,临时变更会打乱所有计划。

“我会考虑,但变更可能性不大。”

“好吧,你是负责人,你决定。”陈锋向后靠了靠,眼神在我脸上停留,“元朗,这几天我躺在床上想了很多。以前的事,是我对不起你。我不求你原谅,但希望至少,我们能专业地完成这个项目。这也是我父亲最后的心愿,他希望看到我做出点成绩。”

“我会专业地对待工作。”我说,“也希望你能。”

“当然。”他站起身,“那我先去整理文档。有什么需要我做的,随时吩咐。毕竟我现在是你的下属。”

他说“下属”两个字时,语气平静,但眼神深处有什么东西一闪而过。是屈辱,是不甘,还是别的什么,我看不清。

陈锋离开后,我坐在会议室里,看着窗外的大雨。他的表现太正常,太专业,太配合了。这反而让我不安。

以我对他的了解,他不是轻易认输的人。父亲的去世,职位的失去,连续的打击,应该让他更愤怒,更偏激。但现在,他平静得像一潭死水。

除非,他在谋划什么。

手机震动,是苏晓:“晚上能按时下班吗?妈做了你爱吃的红烧肉。”

“应该可以。雨大,你开车小心。”

“好。对了,今天有个奇怪的事。有个人来我们培训机构,说是想做企业培训咨询,但一直问你的情况。问我你在哪里工作,忙不忙,最近是不是经常加班什么的。”

我坐直身体:“男的女的?长什么样?”

“男的,四十多岁,戴着眼镜,说是某咨询公司的。但我查了他给的名片,那家公司根本不存在。我让保安请他离开了。怎么了,有问题吗?”

“可能是商业调查,没事。”我尽量让声音平静,“以后有陌生人问我的事,一律说不知道。”

“嗯,你也是,注意安全。最近你太累了,脸色不好。”

“知道了,爱你。”

挂断电话,我盯着窗外的雨幕。商业调查?不,更像是试探。有人在调查我,从我的家人下手。

是陈锋吗?他有这个能力,也有动机。但他刚失去父亲,会有精力做这些吗?

又或者,是别的什么人?

我打开电脑,登录公司内部系统,查看陈锋这几天的活动日志。他访问了一些历史项目文档,下载了公司组织架构图,还查询了董事会的会议记录权限。这些行为,可以用“熟悉工作”来解释,但结合起来看,总让人觉得不对劲。

特别是,他查询了天城建设与公司的合同细节,包括违约条款和退出机制。

他想干什么?

手机又响了,这次是周文婧:“元朗,出事了。”

“什么?”

“我们追踪到其中一个攻击IP,源头是本市的一家网吧。我们的人赶过去时,人已经走了,但调取监控,拍到了这个。”

她发来一张模糊的截图。画面里,一个穿着连帽衫的男人坐在电脑前,帽檐压得很低,看不清脸。但放在键盘上的那只手,手腕上戴着一块表。

我放大图片。那块表,是陈锋上个月在朋友圈晒过的,他升职时给自己的礼物。

“能确认吗?”我问,声音发干。

“表型一致,但需要更清晰的画面。我们已经联系警方,但需要时间。”周文婧说,“元朗,如果真是他,他的目的可能不只是测试漏洞。攻击测试环境是违法的,他应该知道。”

“他想找到系统的弱点,”我忽然明白了,“然后,在试运行时制造事故,证明我修复得不彻底,证明我不胜任。这样,他就有理由重新拿回控制权。”

“甚至更糟,”周文婧的声音冰冷,“如果事故严重,天城会撤资,项目会完蛋,而你会成为责任人。他得不到的,也不会让你得到。”

雨下得更大了,敲打着窗户,像是某种不祥的鼓点。

“我现在该怎么做?”

“什么也别做,像什么都没发生。”周文婧说,“我们已经加强了监控,他再有动作,我们会抓现行。但元朗,你要做好准备,这场战斗,可能比我们想象的更脏。”

电话挂断。我坐在会议室里,看着白板上陈锋写下的那些技术要点。他的字迹工整,逻辑清晰,每个建议都切中要害。

这样一个聪明、专业、有能力的人,为什么要把才能用在这样的事情上?

我想起他说的那句话:“在这个世界上,第二名什么都不是。只有赢的人,才能得到想要的。”

也许,在某个时刻,陈锋真的相信,不择手段是唯一的出路。而现在,他在这条路上走得太远,已经回不了头了。

窗外,一道闪电撕裂天空,紧接着是滚雷。

暴风雨,真的要来了。

(第九章完,字数约5000)

第十章 风暴前夕

接下来的三天,陈锋表现得很正常。

他每天准时上班,安静地坐在办公室里整理文档,偶尔提出一些技术建议,都在合理范围内。他不再要求接触核心代码,对权限限制也没有异议。他甚至主动请缨,负责与交管部门的日常联络——这是个需要耐心和沟通技巧,但不涉及技术核心的工作。

太正常了,正常得令人不安。

周五下午,试运行前的最后一次全组会议。所有模块集成完毕,测试全部通过,天城的技术负责人签字确认,可以按计划在下周一部署。

“这段时间大家辛苦了。”会议结束时,我站起来,“周末好好休息,周一,我们要打一场硬仗。”

人群散去,会议室里只剩下我、小赵,还有天城的技术负责人刘工。

“元工,有件事。”刘工关上门,压低声音,“我们监控到,昨晚又有一波攻击,这次的目标是部署脚本。”

“部署脚本?”我心头一紧。部署脚本是安装系统的自动化程序,如果被篡改,可能导致系统安装不全,或者埋下后门。

“已经被拦截了。但攻击者很狡猾,用的手法和之前不同,看起来像是两拨人。”刘工调出日志,“一波专业,一波业余。专业的那个,我们还在追踪。业余的那个......”他顿了顿,“IP是陈总监家里的。”

会议室里安静下来。窗外的夕阳斜照进来,在桌面上投下长长的光影。

“能确定是他本人吗?”小赵问。

“IP是他家的宽带,时间点是凌晨两点。但无法确定是他本人操作,还是别人用了他的网络。”刘工说,“不过,这个时间点,他在家的可能性很大。”

“他为什么这么做?”小赵不解,“如果只是想破坏,为什么不直接用专业手法?用自家IP,不是很容易被查到吗?”

“也许他想让我们查到。”我说。

两人看向我。

“如果他真的想搞破坏,不会用自家IP。但如果他想嫁祸给别人,或者,想制造混乱,让我们把注意力放在他身上,而忽略真正的威胁......”我看着日志上那些陌生的IP,“声东击西。”

刘工脸色一变:“你的意思是,还有另一组人在盯着我们?”

“可能。”我揉着太阳穴,连续加班让我的头痛得厉害,“天城那边有什么线索吗?”

“专业的攻击者,手法很老练,跳板用了十几个,最终源头可能在东欧。但攻击模式很熟悉,像是......”刘工犹豫了一下,“像是我们竞争对手的风格。”

“哪家竞争对手?”

“海川科技。他们也在做智慧交通,是我们的主要对手。但去年竞标这个项目时,他们输给了你们公司。”

海川科技。我想起来了。那是一家以“狼性文化”著称的公司,为达目的不择手段。去年竞标时,他们曾爆出贿赂丑闻,但最后不了了之。

如果是他们,动机就充分了。破坏我们的项目,让天城撤资,他们就有机会重新竞标。

“但陈锋和他们有联系吗?”小赵问。

“不知道。”我看向窗外,陈锋的办公室还亮着灯,“但如果有,事情就复杂了。”

手机震动,是周文婧:“来我公司一趟,紧急。”

天城建设的办公楼在市中心的黄金地段,顶层会议室可以俯瞰整个城市。我到的时候,周文婧和两个西装革履的男人正在等我。其中一个是天城的法务总监,另一个是安全主管。

“元先生,坐。”周文婧神色严肃,“有件事必须让你知道。我们查到,陈锋的个人账户,在过去一个月内,有三笔不明来源的汇款,总计八十万。”

八十万。对于一个需要支付巨额医疗费的家庭来说,这是一笔救命钱。

“汇款方是?”我问。

“通过海外账户中转,很难追踪。但我们调取了他的通讯记录,发现他最近频繁联系一个号码,机主是海川科技的一个部门经理。”安全主管推过来一份通话记录,“时间点很巧合,都在攻击事件发生前后。”

“所以,陈锋可能和海川有勾结?”我听到自己的声音很冷静,尽管内心已经翻江倒海。

“不排除这个可能。”法务总监开口,“但我们没有直接证据。汇款可以解释为借款,通话可以解释为商务往来。即使报警,警方也很难立案。”

“你们告诉我这些,是希望我做什么?”

“我们希望你能配合我们,设一个局。”周文婧直视我的眼睛,“下周一部署时,我们会故意留一个‘后门’,一个看起来很隐蔽,但实际上完全在我们的监控之下的漏洞。如果陈锋真的和海川有联系,他会把这个漏洞告诉他们。届时,我们就能人赃并获。”

“钓鱼执法?”

“是保护项目。”周文婧纠正,“三亿的投资,七个路口的公共安全,我们不能冒险。元朗,陈锋已经走得太远了。如果他真的为了一己私利,出卖公司,出卖这个项目,那他就不仅仅是你的对手,而是罪犯。”

我看着桌上的证据:通话记录,汇款记录,攻击日志。这些冰冷的数字和文字,勾勒出一个我不认识的陈锋——一个为达目的,可以背叛一切的人。

“我需要考虑。”我说。

“你没有时间考虑。”安全主管皱眉,“下周一就部署了。如果我们不提前防范,万一系统真的被攻击,后果不堪设想。”

“如果这是一个陷阱呢?”我忽然说,“如果这些证据,是真正的内鬼故意留下,误导我们怀疑陈锋呢?”

会议室里安静下来。

“什么意思?”周文婧问。

“陈锋不傻。如果他真的和海川勾结,会用自己的账户收款?会用自家IP攻击?会留下这么明显的通话记录?”我站起来,走到窗边,看着脚下的城市,“但如果有人想嫁祸给他,这些证据就太完美了。完美得像是精心设计的剧本。”

“谁会这么做?”

“不知道。也许是海川,也许是我们公司内部的人,也许......”我转过身,“是你刚才说的,真正的内鬼。”

周文婧的脸色变了。她和另外两人交换了眼神。

“你的推测有道理,但风险太大。”法务总监说,“我们赌不起。万一陈锋真的是内鬼,而我们没有防范,项目出了事,谁来负责?”

“我来。”我说。

三个人都愣住了。

“我是技术总负责人,如果出事,我负全责。”我走回桌前,“但我也要求,在我确认之前,不要采取任何针对陈锋的行动。包括你们说的‘钓鱼’计划。”

“你打算怎么确认?”周文婧问。

“给我一个周末的时间。”

离开天城大厦,夜幕已经降临。城市的灯光亮起,车流如织。我在路边站了很久,直到手机再次响起。

是苏晓:“你还在公司吗?妈让我们回去吃饭,她炖了你最爱的鸡汤。”

“我马上回来。”我说,“晓晓,如果......如果有一天,我不得不做一件可能会伤害到别人的事,但那是为了保护更多人,你会支持我吗?”

电话那头沉默了一会儿。

“元朗,”苏晓的声音温柔而坚定,“我知道你。你永远不会主动伤害别人,除非别无选择。如果真的到了那一天,我会支持你,因为我知道,你一定已经试过所有其他路,都走不通了。”

眼眶发热。我抬起头,看着夜空,深深吸了一口气。

“谢谢你,晓晓。谢谢你相信我。”

“我一直都相信你。早点回来,汤要凉了。”

挂断电话,我拨通了另一个号码。铃声响了很久,就在我以为不会有人接时,那边接通了。

“喂?”陈锋的声音,带着疲惫。

“陈锋,是我。我想和你谈谈。”

第十一章 真相与抉择

陈锋选择的见面地点,是大学时我们常去的那家露天烧烤摊。十年过去了,摊主没换,只是头发白了大半。看到我们,他咧嘴一笑:“哟,稀客!老规矩?”

“老规矩。”我说。

羊肉串、烤茄子、韭菜、两瓶啤酒。和十年前一样,只是我们都老了。

陈锋先开口,声音很轻:“我父亲昨天火化了。骨灰暂时寄存在殡仪馆,等选好墓地再下葬。”

“节哀。”

“没什么好哀的,”他拿起酒瓶,灌了一大口,“对他来说,是解脱。每个月三万二的药,打了也只能多活几天,疼得整夜睡不着。最后那几天,他求我拔管子,我说不行,不孝。但我心里知道,我是在用他的痛苦,换我所谓的‘孝心’。”

烟雾袅袅上升,在昏黄的灯泡下盘旋。隔壁桌的大学生在大声说笑,青春的声音刺耳又鲜活。

“元朗,你知道最讽刺的是什么吗?”陈锋看着手里的酒瓶,“他走的那天,我刚收到天城的第一笔款,四十万。我拿着卡冲到病房,想告诉他,有钱了,可以换更好的药了。但他已经没了呼吸。护士说,他是在凌晨三点走的,很平静。”

他的手在抖:“你看,我偷了你的方案,背叛了朋友,做了那么多脏事,终于拿到钱了。但我想救的人,没等到。”

羊肉串在炭火上滋滋作响,油滴下去,腾起一小簇火焰。

“那八十万,是怎么回事?”我问。

陈锋猛地抬头,眼神锐利:“你怎么知道?”

“天城查到了你的账户,三笔不明汇款,总计八十万。他们怀疑你和海川勾结,出卖项目。”

他愣住了,然后笑了,笑声苦涩:“原来如此。原来他们是这样想的。”

“不是吗?”

“是,也不是。”陈锋放下酒瓶,双手交握在油腻的桌面上,“钱是海川给的,但不是卖项目的钱。是他们挖我的定金。”

“挖你?”

“一个月前,海川的人联系我,说他们缺一个技术总监,年薪比我当时高百分之五十,签字费八十万。我拒绝了,因为我觉得咱们公司的项目更有前景,我马上要升总监了。”他顿了顿,“但他们很执着,说钱先打给我,让我考虑。如果我同意,再给一百二十万。如果不同意,这八十万就当交个朋友,不用还。”

“你收了?”

“收了。”陈锋坦然承认,“因为我需要钱。我爸的药断了三天了,医院在催费。我想,先拿着救急,等项目成了,我再还给他们。但后来......后来我偷了你的方案,升了总监,就更不可能去海川了。这笔钱,就成了烫手山芋。”

“所以你没有把项目信息卖给他们?”

“没有。”他看着我的眼睛,“元朗,我承认我偷了你的方案,承认我做了危险的改动,承认我是个小人。但我没有背叛公司,没有出卖项目。那是我最后的底线。”

“那攻击测试环境的事呢?IP是你家的。”

“那不是我。”陈锋的表情忽然变得愤怒,“我查了,是我表弟。他上个月来城里找工作,住在我家。那天晚上我守夜回来,累得直接睡了,他用我的电脑打游戏,后来承认收了别人五百块钱,按照邮件指示攻击了一个网站。他不知道那是什么,只知道点几个链接,输几行代码。”

“谁给他钱?”

“不知道,邮件是匿名的,钱是微信转账,账户是买来的。”陈锋握紧拳头,“我怀疑是海川。他们想逼我,如果我不去他们公司,就毁了我。”

炭火噼啪作响。摊主把烤好的串端上来,看看我们凝重的表情,识趣地没说话,转身走了。

“所以你父亲去世,你需要钱,海川趁机挖你,还设计陷害你,让你在我们这里待不下去?”我梳理着线索。

“大概是这么个局。”陈锋苦笑,“但我没法证明。通话记录是真的,汇款是真的,攻击IP也是真的。我说什么,都没人信。”

“那你为什么不解释?”

“解释什么?说我虽然收了竞争对手的钱,但没有背叛?说我虽然偷了朋友的方案,但没有出卖公司?”他摇头,“元朗,有些事,一旦做了,就洗不白了。偷方案是真的,危险改动是真的,收了八十万也是真的。至于有没有走最后那一步,重要吗?在别人眼里,我已经是叛徒了。”

我沉默地吃着羊肉串,味道和十年前一样,孜然和辣椒的香气,混合着炭火的焦香。但我们都回不去了。

“你今天找我,是来确认我是不是内鬼?”陈锋问。

“是。”

“现在确认了?”

“没有完全确认,”我实话实说,“你的解释说得通,但也可以是编的。我需要证据。”

“我没有证据。”陈锋说,“唯一的证据,就是我从来没把核心代码给过任何人。但这话,说了等于没说。”

他喝光了一瓶啤酒,又开了一瓶:“元朗,如果你是我,你会怎么做?家里需要钱,父亲要死了,工作上被人算计,全世界都怀疑你。你会怎么做?”

我想了很久。

“我不知道。”最终我说,“我不是你,我没经历过你经历的事。但我知道,如果我偷了朋友的方案,我会道歉。如果我做了危险的改动,我会承认。如果我收了不该收的钱,我会退回去。然后承担后果,无论多严重。”

陈锋笑了,眼里有泪光:“你还是这么......这么天真。但你知道吗?我羡慕你的天真。因为这世界上,不是所有人都有资格天真的。有些人,从出生开始,就在泥潭里挣扎,不择手段,只是为了不沉下去。”

他站起来,从钱包里掏出一张卡,放在桌上:“这里面是八十万,我一分没动。密码是我爸的生日。你帮我还给海川,或者交给公司,随便。我不求清白,只求问心无愧。”

“你要去哪?”

“不知道。也许离开这个城市,换个地方重新开始。”他看着远处的灯火,“元朗,这个项目,你好好做。它真的是个好方案,能帮到很多人。别让我毁了它。”

他转身要走,我叫住他。

“等等。”我从包里拿出一份文件,“这是天城准备的‘钓鱼’计划。他们准备在部署时留一个后门,如果你真的和海川勾结,就会上钩。”

陈锋接过文件,快速浏览,脸色越来越白。

“如果你现在走了,他们会认为你做贼心虚。如果你留下,配合他们,证明你的清白......”

“怎么证明?”他抬头,眼神锐利,“配合他们演戏,然后等海川上钩?如果他们不上钩呢?如果他们根本就没打算行动,只是等着看戏呢?元朗,这是死局。我留下,要么被当成内鬼,要么被当成诱饵。无论哪种,我都完了。”

“还有一种可能。”我说,“你留下,我们演一场戏,但不是给天城看,是给真正的内鬼看。”

“什么意思?”

我把我的计划告诉他。很冒险,很大胆,但如果成功,不仅能揪出真正的内鬼,还能保住项目,也许,还能给陈锋一个重新开始的机会。

他听完,沉默了很久。

“你为什么要帮我?”最终他问,“我偷了你的方案,差点毁了你的职业生涯,也差点毁了你的项目。你应该恨我,应该看着我完蛋。”

“我是恨你。”我承认,“每次想到那三年的心血被你轻易拿走,想到你在会议室里用我的方案升职,我都恨。但恨不能解决问题,只能制造更多仇恨。”

我看着他,这个认识了十年的、曾经的朋友、现在的敌人、也许未来什么都不是的人。

“而且,我相信你刚才说的话。关于你父亲,关于那八十万,关于你最后的底线。也许我太天真,但我想赌一次。赌我认识的陈锋,还没有完全死掉。”

陈锋站在那里,夜风吹动他的头发。路灯下,他的影子拉得很长,像个孤独的、快要破碎的剪影。

“好。”他终于说,“我陪你赌。但如果输了......”

“输了,我们一起负责。”我说。

他笑了,真正的笑,虽然疲惫,但真实:“元朗,你知道吗?有时候,我真希望我是你。但有时候,我又庆幸我不是你。因为如果我是你,面对我这样的人,可能会心软,可能会被坑得很惨。”

“已经差点被坑得很惨了。”

我们都笑了,笑声在夜风里飘散。隔壁桌的大学生好奇地看过来,不明白这两个中年男人为什么笑得这么奇怪。

“那么,”陈锋伸出手,“合作愉快?”

我握住他的手。这一次,他的手很稳,很用力。

“合作愉快。”

那晚,我们聊到很晚。关于大学时的梦想,关于刚工作时的雄心,关于这些年的得失。我们不谈背叛,不谈伤害,只是像两个老同学,在深夜的烧烤摊,回忆那些已经远去的时光。

离开时,摊主正在收摊。他看着我们,忽然说:“你俩啊,十年了,还是老样子。一个想太多,一个太认真。但都是好人。”

“好人?”陈锋苦笑,“大爷,我可不是好人。”

“是不是好人,自己说了不算。”摊主擦着桌子,头也不抬,“但这么多年,我在这儿见过太多人。喝醉了哭的,喝醉了笑的,吹牛的,抱怨的。你俩啊,是少数喝完酒还清醒的。清醒的人,再坏也坏不到哪儿去。”

他抬起头,浑浊的眼睛看着我们:“走吧,明天太阳照常升起。日子还得过。”

是啊,日子还得过。

陈锋把那张八十万的卡给了我。我连夜联系了周文婧,把情况和计划告诉她。她沉默了很久,最终说:“元朗,你确定要这么做?风险很大。”

“确定。”

“好。天城会配合。但如果出问题,你要负全责。”

“我负。”

周日,一整天,我和陈锋待在办公室,完善计划。我们需要在周一的部署中,既完成系统安装,又设下陷阱,还要保证整个过程不引起真正的内鬼怀疑。

“这里,”陈锋指着架构图,“我们可以在这里加一个蜜罐,看起来像是自适应模块的调试接口,实际上是监控程序。任何人访问这个接口,都会被记录。”

“内鬼不一定会自己动手,可能会远程操控。”

“所以我们还要在服务器上做手脚。”陈锋快速敲击键盘,“加一个隐蔽的日志模块,记录所有异常访问。如果内鬼通过漏洞进来,我们可以追踪到他的跳板,甚至可能抓到真实IP。”

他工作时的样子,是我熟悉的那个陈锋——专注,高效,思维缜密。只是眼下的黑眼圈和消瘦的脸颊,提醒着我,这个人刚刚失去父亲,正处于人生最黑暗的时刻。

下午五点,苏晓送来晚饭。看到我和陈锋一起工作,她愣了一下,但什么也没问,只是把饭菜摆好。

“嫂子,”陈锋站起来,深深鞠躬,“对不起。以前的事,我真诚道歉。”

苏晓看着他,沉默了几秒,说:“陈锋,我不原谅你。因为你伤害了元朗,伤害了我们的信任。但如果你真的在弥补,在做对的事,我尊重元朗的选择。”

“谢谢。”陈锋的声音很低。

“吃饭吧,凉了就不好吃了。”苏晓转身离开,走到门口,回头说,“元朗,无论你做什么决定,我都支持你。但你要保证,平平安安回家。”

“我保证。”

门轻轻关上。办公室里,我和陈锋相对无言,安静地吃饭。

“你有个好妻子。”陈锋说。

“我知道。”

饭后,我们继续工作。晚上十点,一切准备就绪。蜜罐部署好了,监控程序隐藏完毕,所有陷阱都设下了。只等明天,鱼儿上钩。

“如果他不上钩呢?”陈锋问。

“那说明我们的怀疑错了,或者他比我们想象的更谨慎。”我合上电脑,“但无论如何,系统会正常部署。这是最重要的。”

陈锋点点头,看着窗外。城市的夜景很美,万家灯火,每一盏灯下都有一个故事。

“元朗,如果明天一切顺利,揪出了内鬼,项目成功了,”他顿了顿,“之后,我打算自首。”

我猛地抬头。

“不是去公安局,是向公司自首。承认我偷了你的方案,承认我做了危险的改动,承担所有后果。”他平静地说,“这是我欠你的,也是我欠我自己的。我不能一辈子背着这个包袱。”

“公司可能会开除你,行业里可能不会有你的位置。”

“我知道。但至少,我能睡得着觉。”他笑了笑,“而且,我查了,海川那八十万,如果定性为商业贿赂,可能要坐牢。但如果我主动交代,退还赃款,配合调查,也许能从轻。我想试试,重新开始,从最底层开始。”

我看着这个熟悉又陌生的人。十年前,我们在毕业典礼上宣誓,要成为改变世界的人。十年后,我们在深夜的办公室里,讨论如何为过去的错误付出代价。

“无论你做什么决定,我都尊重。”最终我说。

“谢谢。”陈锋站起来,收拾东西,“那我先走了。明天见。”

“明天见。”

他走到门口,又停住:“元朗,无论明天发生什么,无论结果如何,谢谢你今天愿意听我解释,愿意给我这个机会。”

“不客气。”

门关上了。我独自坐在办公室里,看着屏幕上密密麻麻的代码。那是我三年的心血,差点被毁掉,现在又回到了我手里。

手机震动,是周文婧发来的消息:“一切准备就绪。明天,祝你好运。”

我回复:“谢谢。无论如何,保护好系统。”

“一定。”

窗外,夜色深沉。明天,将是一场硬仗。但这一次,我不再是孤军奋战。

(第十一章完,字数约5000)

第十二章 黎明部署

周一,清晨五点,天还没亮。

七个试点路口已经完成交通管制,工程车、技术人员、交管人员各就各位。指挥中心设在天城建设的会议室,大屏幕上分割出八个画面——七个路口的实时监控,以及系统部署状态。

我站在指挥台前,戴着耳麦,面前是四块显示屏。陈锋站在我旁边,负责协调现场团队。周文婧和李建明坐在后排,表情严肃。天城的刘工带着安全团队,在隔壁房间监控网络动态。

“一号点准备完毕。”

“二号点准备完毕。”

七个点位依次汇报。耳麦里传来的声音紧绷而清晰,像战前最后的确认。

“开始部署。”我说。

命令下达,七个点位同时行动。工程人员打开信号控制箱,技术人员接入设备,部署脚本开始运行。大屏幕上,进度条缓慢前进。

时间一分一秒过去。指挥中心里静得能听到呼吸声。陈锋紧盯着屏幕,额头上渗出细密的汗珠。我知道他在担心什么——如果内鬼选择在这个时候行动,如果系统真的被攻击,如果部署失败......

“一号点进度50%。”

“三号点进度45%,网络波动,自动重试中。”

“五号点进度60%,正常。”

汇报声此起彼伏。一切看起来都很顺利。但太顺利了,反而让人不安。

“注意,检测到异常访问。”隔壁房间传来刘工的声音,“来自境外IP,尝试连接蜜罐接口。”

来了。

“放他进来,”我沉声说,“但限制权限,只给假数据。”

“明白。”

陈锋调出蜜罐的监控画面。一个虚拟的调试界面被打开,攻击者正在尝试输入指令。但所有指令都被重定向到一个模拟环境,真实系统毫发无损。

“他在尝试获取系统权限,”刘工汇报,“手法专业,跳板用了七层,源头在......立陶宛?”

“继续监控,不要打草惊蛇。”

部署进度继续推进。六个点位已经完成80%,只有三号点因为网络问题稍慢,但也在可控范围内。

“攻击者获取了‘管理员权限’,”刘工的声音带着一丝兴奋,“他在浏览假的管理界面。现在在尝试修改信号配时参数......他在输入指令,想要在早高峰时,将所有路口的绿灯时间缩短到10秒。”

10秒绿灯。在车流量最大的早高峰,这意味着每个路口只能通过三四辆车,整个区域的交通会瞬间瘫痪。

“记录所有操作,准备溯源。”周文婧站起来,走到我身边,“能抓到真实IP吗?”

“正在追踪,但需要时间。他在用TOR网络,很难......”

“等等!”陈锋忽然说,“他停止了操作,在清理痕迹。他要跑。”

“切断他的退路,”我下令,“启动反向追踪程序。”

“正在启动......追踪到第五层跳板......第六层......锁定目标,IP位于本市!经纬度正在计算......”

大屏幕上弹出一张地图,一个红点在地图上闪烁,位置快速定位。

“新科大厦,17层,1706室。”刘工报出地址。

新科大厦,离我们公司只有三个街区。那是海川科技在本市的办事处。

“报警。”周文婧简洁地说。

李建明已经拿起电话。两分钟后,警方确认出警。

而部署现场,进度条走到了终点。

“一号点部署完成,系统启动正常。”

“二号点完成......”

七点整,七个点位全部部署完毕。大屏幕上,七个路口的信号灯开始按照新系统运行。早高峰的车流缓缓通过,系统自适应调整着信号时长,车流平稳,无拥堵,无异常。

指挥中心里爆发出低低的欢呼。陈锋瘫坐在椅子上,长长地舒了口气。李建明擦着额头上的汗,对周文婧露出笑容。

但我没有放松。因为耳麦里传来最后一个点位的汇报:“三号点系统启动正常,但......检测到异常进程,正在占用系统资源。”

“什么进程?”我问。

“不清楚,不是我们的程序。它在后台运行,试图连接外部服务器......”

“切断外部连接,隔离那个进程。”我快速下令,“陈锋,检查三号点的部署日志,看有没有异常。”

陈锋调出日志,快速浏览。突然,他的脸色变了。

“部署脚本被篡改了。有人加了一段恶意代码,会在系统运行两小时后触发,将所有信号灯设为常绿。”

常绿。听起来是好事,但实际上更危险。如果所有方向都是绿灯,路口会变成碰撞现场。

“能清除吗?”

“可以,但需要重启系统。现在早高峰,重启会导致交通中断至少十分钟。”

“十分钟......”我计算着风险。早高峰的十分钟,足以让七个路口堵死。

“有没有办法不重启,直接清除?”周文婧问。

陈锋的手指在键盘上飞舞:“我在试......找到了,恶意代码被加密了,但加密密钥......密钥是部署时间的哈希值。今天是4月29日,部署时间是6:30,哈希值是......”

他快速计算,然后输入指令。屏幕上,恶意进程停止了。

“清除了。”陈锋的声音有些颤抖,“但篡改者很狡猾,他在部署脚本里还埋了另一个后门,如果第一个被清除,第二个会在中午触发。”

“能一并清除吗?”

“可以,但需要时间。现在最重要的是,找到是谁篡改了脚本。”陈锋调出三号点的访问记录,“昨晚只有一个人有权限修改部署脚本——现场技术员,王强。”

王强,项目组的老员工,平时沉默寡言,技术扎实。他是陈锋提拔的人,但在陈锋“失势”后,很快转向支持我。至少表面上是这样。

“联系三号点,控制住王强,但不要打草惊蛇。”我对现场指挥说。

“明白。”

十分钟后,耳麦里传来回复:“王强不见了。他说去上厕所,已经二十分钟没回来。我们在卫生间找到了他的工牌和手机,人跑了。”

跑了。做贼心虚。

“调取现场监控,看他往哪个方向去了。”周文婧冷静地说,“联系警方,增加一个追捕目标。”

警方那边传来消息,已经到达新科大厦1706室,但里面空无一人,只有还在运行的电脑,和没来得及关掉的远程连接界面。人已经跑了,但电脑没带走,里面存有大量证据。

“至少确认了,攻击来自海川。”李建明说,“但王强为什么帮他们?他图什么?”

“查他的账户。”我说。

天城的安全团队效率极高。五分钟后,刘工汇报:“王强的账户,过去半年有六笔不明汇款,总计一百二十万。汇款方是同一个海外账户,和海川给陈总监汇款的那个账户,是同一个开户行。”

一切都连起来了。海川收买了王强,作为内应。他们原本可能想收买陈锋,但陈锋收了钱却没办事,于是他们启动了备用计划——用陈锋作为烟雾弹,掩护真正的内鬼王强。

而陈锋,差点成了替罪羊。

“所以攻击测试环境,用陈总监家的IP,是王强干的?”小赵问。

“应该是。他住陈锋对门,有他家的WiFi密码。趁陈锋不在,用他的网络攻击,嫁祸给他。”刘工分析。

“那今天早上的攻击呢?海川的人亲自出手,不怕暴露吗?”

“他们可能没想到我们能这么快追踪到真实IP。”周文婧说,“或者,他们以为有王强做内应,可以随时切断追踪。但王强跑了,他们没了内应,就暴露了。”

指挥中心里,众人沉默。真相大白,但代价是,内鬼跑了,竞争对手虽然暴露,但人也跑了,证据能定多少罪,还不好说。

而系统虽然部署成功,但被埋了后门,需要彻底检查。

“各位,”我站起来,“现在最重要的是确保系统安全。我建议,立即组织团队,全面检查所有代码,清除所有可能的恶意程序。同时,七个点位增派人员现场值守,一旦有异常,立即切换回手动模式。”

“我同意。”周文婧说,“天城的团队会全力配合。李总?”

“我没意见。”李建明点头,“陈锋,你负责带团队检查代码。元朗,你统筹全局。”

“是。”

陈锋看着我,眼神复杂。我知道他在想什么——如果没有今天的计划,没有那个蜜罐,没有反向追踪,他现在可能已经被当成内鬼抓起来了。而真正的内鬼王强,可能会继续潜伏,在某个关键时刻,毁掉整个系统。

“去吧。”我对他说,“用你的能力,弥补你的错误。”

“我会的。”陈锋重重点头,转身走向技术团队。

部署后的第一小时,系统运行平稳。七个路口的通行效率提升了15%,早高峰的拥堵时间缩短了二十分钟。交管部门发来感谢信,媒体已经聚集在指挥中心外,等待采访。

但我们都高兴不起来。王强还没抓到,海川的人跑了,系统里可能还有没发现的隐患。

上午十点,警方传来消息:在王强的住处搜到了大量现金,以及一个加密的硬盘。硬盘正在破解,但需要时间。王强的手机定位最后出现在长途汽车站,他可能已经离开本市。

“继续追捕。”周文婧对电话说,“海川那边,我们已经联系了他们的总部,对方表示会配合调查,但我不抱希望。”

商场如战场,输了就认,但想让他们付出代价,难。

中午,系统运行平稳。陈锋带着团队,清除了三号点的所有后门,其他点位也完成了全面检查,确认安全。

“暂时没问题了。”陈锋向我汇报,眼睛里满是血丝,但眼神清明,“但我建议,未来一周,每天早晚高峰都要有人现场值守。我会排班。”

“你排第一班?”

“是。这是我欠的。”

我没有反对。

下午,记者招待会。李建明和周文婧作为双方代表,宣布智慧交通系统一期试运行成功。我在后台,看着屏幕上滚动的新闻标题,心里五味杂陈。

“不想去露个脸?”苏晓不知何时来到我身边,递给我一杯咖啡。

“不想。”我接过咖啡,“功劳是大家的,风险也是大家的。我一个人露脸,不合适。”

“你总是这样。”苏晓握住我的手,“但这次,你做得很好。不只是技术上,更是做人上。”

“我差点就误会了陈锋,差点就成了帮凶。”

“但你给了他解释的机会,也给了他弥补的机会。”苏晓轻声说,“这比单纯的报复,需要更大的勇气。”

也许吧。

记者会结束,人群散去。我走到露台上,陈锋在那里抽烟——我认识他十年,从不知道他抽烟。

“戒了很久,今天又抽上了。”他苦笑,递给我一支,我摇头。

“系统暂时稳定了。但海川不会善罢甘休,王强还没抓到,后面还有硬仗。”

“我知道。”陈锋吐出一口烟雾,“我已经向李总提交了辞职信。等这波稳定了,我就走。”

“没必要......”

“有必要。”他打断我,“元朗,我不是在赌气,也不是在赎罪。我只是觉得,我配不上这里了。偷来的东西,终究要还。骗来的位置,坐不安稳。”

他看着远处的城市:“我想找个地方,从零开始。写代码,做项目,不争不抢。也许去个小公司,也许自己创业。但无论如何,我想重新活一次,像个人一样活着。”

我沉默。这是他自己的路,我没资格劝。

“那八十万,我已经退还给海川了。通过天城转交的,有记录。”陈锋说,“另外,我把这些年存的钱,加上我家的房子卖了,凑了两百万,成立了一个基金,帮助那些家境困难、需要支付巨额医疗费的程序员。名字还没想好,你帮我想一个?”

我看着这个曾经的朋友,现在的陌生人,也许未来永远不会再见的人。

“叫‘黎明’吧。”我说,“无论夜多长,天总会亮的。”

陈锋愣了一下,然后笑了,眼里有泪光。

“黎明。好,就叫黎明。”

他把烟摁灭,转身面对我,深深鞠了一躬。

“元朗,谢谢你。谢谢你在最后,还愿意拉我一把。这辈子,我欠你的,还不清了。下辈子,如果有下辈子,我还你。”

“不用下辈子。”我扶起他,“这辈子,好好活着,就是还我了。”

他点头,转身离开。背影在夕阳下拉得很长,孤独,但笔直。

我站在露台上,看着这个城市。车流如织,信号灯闪烁,系统在默默工作,让这座城市运行得更顺畅。那里面有我的心血,也有陈锋的救赎,有王强的背叛,有海川的算计,有天城的坚持,有无数人的汗水和泪水。

很复杂,不完美,但真实。就像生活本身。

苏晓走过来,从背后抱住我。

“回家了?”

“嗯,回家了。”

夕阳西下,把整个城市染成金色。明天太阳照常升起,日子还要继续。但至少今晚,我可以牵着她的手,平平安安回家。

(第十二章,终章,字数约5000)

尾声

三个月后。

智慧交通系统试运行成功,七个路口的平均通行效率提升22%,事故率下降18%。天城建设决定全面推广,二期工程覆盖三十个路口,预算十亿。

我被正式任命为技术总监,但拒绝了。我选择成立自己的技术咨询公司,专门做智慧城市系统的安全审计。天城是我的第一个客户,周文婧亲自签的合同。

“你确定不留下?”签约那天,她问我。

“确定。”我说,“我想用自己的方式,做点事。”

“也好。”她微笑,“保持联系。有困难,找我。”

陈锋离开了这个城市。听说他去了西南的一个小城,在一家初创公司做技术主管,工资只有之前的三分之一,但他在朋友圈发的照片,笑容是真的。

“黎明基金”已经帮助了七个家庭。陈锋每周会给我发邮件,汇报进展,从不提自己,只提那些被帮助的人。他说,这是他这辈子,做得最对的一件事。

王强在边境被抓,试图偷渡出境。审讯中,他交代了所有罪行——海川给了他二百万,让他在系统中埋后门,制造事故,逼天城撤资。警方顺藤摸瓜,查到了海川的更多违法行为,案件还在审理中。

李建明升任集团副总裁,主管新技术板块。他邀请我回去当顾问,我答应了,但只接项目,不入职。

生活回到了正轨。我和苏晓计划要孩子,周末去看房子,想换个大一点的。我妈依然每周炖汤,说我瘦了,要补补。

一个普通的周六下午,我在书房整理旧物。在一个纸箱里,翻出了大学时的照片。编程大赛的合影,我和陈锋站在一起,举着二等奖的奖杯,笑得没心没肺。

照片背面,有我们当年写的字:“兄弟同心,其利断金。”

十年过去了。同心变成了离心,兄弟变成了陌路。但至少最后,我们没有变成敌人。

手机响了,是陌生号码。我接听。

“元朗,是我。”陈锋的声音,听起来轻松了很多。

“陈锋?怎么换号了?”

“新办的,本地号。”他说,“我下个月结婚,你来吗?”

我愣住了。

“对方是基金帮助过的一个女孩的姐姐,护士,人很好。”陈锋的声音里带着笑意,“不豪华,就请几个朋友,简单的仪式。你来吗?”

我看着照片上那两个年轻的、对未来充满憧憬的脸。

“来。”我说,“一定来。”

“谢谢。地址我发你。还有......对不起,和谢谢。”

电话挂断。我坐在书房里,夕阳透过窗户,在照片上投下温暖的光。

十年青春,三年心血,一场背叛,一次救赎。所有这些,最后都沉淀成两个字:生活。

它不完美,充满遗憾,但只要你还在往前走,天,总会亮的。

窗外,华灯初上。城市的脉搏在智慧系统的调度下平稳跳动,车流如河,灯光如星。而我和我爱的人们,在这星河之中,继续着各自的故事,平凡,真实,但珍贵。

这就够了。

(全文完)