收到那笔一万七千块的银行到账短信时,我正陪着妻子陈静在阳台上给多肉浇水。初秋的阳光温和地洒在身上,暖洋洋的,带着一股新翻泥土的清新气味。那一刻,我感觉自己像这些被精心照料的植物一样,终于从长达一年的阴霾中,重新扎下了根。
九个月,二百七十多个日夜,足以让一个因长期过劳和精神内耗而疲惫不堪的灵魂,重新长出保护自己的铠甲。这期间,我拒绝了所有猎头的电话,清空了电脑里所有与工作相关的文档,像个退休老头一样,每天研究菜谱,逛菜市场,甚至学会了打一套漏洞百出的太极拳。
我知道,这一切在别人看来或许有些不思进取,但只有我自己和陈静明白,这是我为自己安排的一场漫长而必要的“术后康复”。而那通电话,就像一颗投入平静湖面的石子,将我从这来之不易的安宁中,猛地拽回了那个我曾拼命逃离的世界。
故事,要从那个周三下午的电话说起。
第1章 不速之客
那个陌生的号码在手机屏幕上震动时,我正在厨房里跟一团面较劲。陈静说想吃我做的手工拉面,我便兴致勃勃地从网上找了教程,结果面团不是太硬就是太软,弄得我满手都是黏糊糊的白色面浆。
“喂,你好。”我用肩膀和脸颊夹着手机,腾出油腻腻的手指去开水龙头。
“林宇吗?是我,张伟。”
电话那头传来一个既熟悉又让我生理性不适的声音。张伟,我上一家公司的主管,那个在我递交辞呈时,用一种“公司没了你照样转”的轻蔑眼神看着我的人。我下意识地皱了皱眉,连水龙头流出的水都仿佛变得冰冷刺骨。九个月了,我以为我们之间唯一的联系,只剩下躺在我微信黑名单里的那个灰色头像。
“张经理,”我尽量让自己的语气听起来客气而疏远,“有事吗?”
“哎,还叫什么张经理,叫张哥就行了嘛!”他的声音带着一种刻意营造的热络,仿佛我们之间从未有过不快,“最近怎么样啊?找到新工作没?你这小子,走得那么干脆,也不跟老同事们联系联系。”
我沉默着,听着他的虚伪客套,手里冲洗的动作都慢了下来。我能想象出他此刻的样子,大概是翘着二郎腿,靠在办公室那张据说是人体工学的椅子上,一手夹着烟,一手握着电话,脸上挂着他那标志性的、皮笑肉不笑的表情。
“还行,在家休息。”我淡淡地回答。
“休息好啊,年轻人就是要劳逸结合。”他话锋一转,终于切入了正题,“那个……林宇啊,是这样的,公司这边有点小麻烦,想请你回来帮个忙。”
我心头“咯噔”一下,一种不祥的预感涌了上来。果然,无事不登三宝殿。
“帮忙?”我把手擦干,走到客厅,给自己倒了杯水,“我记得我离职的时候,工作交接做得很清楚,所有的文档和代码注释都留档了。”
“是是是,你做事我放心,一直都很细致。”张伟的语气急切了些,“问题是出在你之前负责的那个‘星河项目’上。最近系统升级,出了个很诡异的bug,线上系统时不时就崩溃,客户那边意见很大。接手你工作的小王,还有几个技术骨干,折腾了一个多星期了,还是没找到问题根源。这不,大家就想到你了,毕竟这个项目的核心代码是你写的,你肯定最熟悉。”
“星河项目”。这四个字像一把生锈的钥匙,猛地撬开了我记忆的匣子。那些数不清的通宵加班,那些在深夜空无一人的办公室里,独自对着屏幕敲击键盘的夜晚,那些因为一个算法而兴奋得睡不着,又因为一个bug而愁得掉头发的日子,瞬间全部涌了回来。那是我倾注了无数心血的作品,也是压垮我的最后一根稻草。
“张经理,我已经离职了,而且离职快一年了。”我的声音冷了下来,“按理说,公司的事情,我已经没有责任和义务去处理了。”
“哎,话不能这么说嘛!”张伟立刻反驳道,“咱们毕竟同事一场,你也为这个项目付出了那么多心血,难道就忍心看着它出问题吗?就当是帮老同事一个忙,帮公司渡过一个难关。你回来看看,指导一下小王他们,很快就能搞定的。晚上我做东,请大家好好吃一顿,给你接风洗尘!”
又是这样。画大饼,谈感情,用集体荣誉感来绑架个人。在这套话术面前,我曾经无数次妥协,默默地扛下不属于我的工作,燃烧自己的健康去填补项目的窟窿。但现在,我已经不是那个刚毕业没几年,渴望得到认可,不懂得拒绝的愣头青了。
“不好意思,张经理,我现在确实不太方便。”我直接拒绝了。
电话那头的张伟似乎没料到我会如此干脆,噎了一下,语气也硬了起来:“林宇,你这是什么意思?公司以前待你不薄吧?现在公司遇到困难了,让你回来帮个小忙,你就这个态度?”
待我不薄?我差点笑出声。是连续三个月加班到凌晨两点,项目奖金却被他以“团队平衡”为由大笔克扣叫待我不薄?还是在我因为长期熬夜导致心悸,想请两天假去医院检查,他却以“项目正在关键时期,年轻人不要这么娇气”为由驳回叫待我不薄?
“张经理,我很感谢公司曾经给我的平台。”我深吸一口气,压下心头的怒火,“但现在,我只是一个局外人。你们遇到的技术问题,我相信公司内部的技术团队有能力解决。实在不行,也可以寻求外部的技术支持。我就不参与了。”
说完,我没等他再开口,直接挂断了电话。
手机被我扔在沙发上,发出“砰”的一声闷响。厨房里,陈静探出头来,关切地看着我:“谁的电话?怎么脸色这么难看?”
“没什么,一个……骚扰电话。”我勉强挤出一个笑容。
我不想让这些陈年旧事再来打扰我们现在平静的生活。我以为,一次强硬的拒绝,就足以让张伟知难而退。但我显然低估了他的脸皮厚度,也低估了那个bug给公司带来的麻烦程度。
第2章 价值的博弈
挂断电话后的两个小时,我的世界是清静的。我和陈静最终放弃了跟那团面团的搏斗,选择下楼吃了一碗热气腾腾的牛肉面。然而,当我吃完饭回到家,拿起手机时,才发现上面有三个来自张伟的未接来电,还有一条他发来的微信好友申请。
我直接忽略了好友申请,心里却开始犯嘀咕。看这架势,他是不打算轻易放弃了。
果不其然,晚上八点多,又一个陌生号码打了进来。我犹豫了一下,还是接了。
“林工,林哥!我是小王啊!”电话那头传来一个年轻而焦急的声音。小王,那个接替我工作的新人,一个刚毕业一年的小伙子。
“小王?有事吗?”对于这个年轻人,我倒是没什么恶感。交接工作时,他表现得很谦虚,也很认真。
“林哥,你快救救我吧!”他的声音都快带上了哭腔,“‘星河项目’的bug,我们真的搞不定了。张经理把我们骂得狗血淋头,说再解决不了,我们整个项目组的年终奖都别想要了。客户那边也下了最后通牒,明天上午十点前系统再不稳定,就要走法律程序索赔了。林哥,我知道你肯定有办法的,求求你了,就帮帮我们吧!”
听着小王的哀求,我心里有些复杂。我能想象到他们现在的处境,那种被逼到绝境的无助和压力,我感同身受。但我更清楚,这一切的根源,并不在于技术,而在于管理。在于张伟那种只顾邀功、不顾下属死活的管理方式。
“小王,不是我不帮你,”我叹了口气,“我现在的情况,真的不方便回公司。”
“林哥,要不……我把代码发给你,你远程帮我们看看?或者我们开个视频会议,你指导一下我们?”他还在做最后的努力。
我沉默了。远程看代码,意味着我要重新搭建开发环境,熟悉已经变得陌生的代码逻辑,这同样需要耗费大量的时间和精力。而我,凭什么要为一家已经与我无关的公司,为一个曾经那样对待我的上司,去做这些事呢?
就在我准备再次拒绝时,一直坐在旁边看书的陈静忽然对我做了个“暂停”的手势,然后拿过一张便签,在上面写下了一行字,递到我面前。
“告诉他,可以,但这是商业行为,需要付费。”
看到这行字,我愣住了。付费?我从没想过这个。在我的潜意识里,帮忙就是帮忙,是情分,谈钱似乎就变了味。
陈静看出了我的犹豫,眼神变得格外坚定,又在便签上写道:“这不是情分,这是你的专业价值。你为你的知识和时间定价,天经地义。别忘了你当初是怎么离开的。”
是啊,我当初是怎么离开的?最后那段时间,我几乎是以一种自我献祭的方式在工作,换来的却是身心俱疲和尊严扫地。我为什么要因为所谓的“旧情”,再次让自己陷入被动?
我深吸一口气,对着电话说:“小王,你跟张经理说,让我回去解决问题可以。但这不是帮忙,这是技术咨询服务。我需要跟公司签订一个临时的技术服务合同,明确服务内容和费用。如果他同意,我们再谈下一步。”
电话那头的小王显然被我的话惊呆了,半天没说出话来。“啊?这个……要不我还是让张经理直接跟你谈吧?”
“好。”
挂了电话,我看着陈静,苦笑道:“你觉得他会同意吗?”
陈静把书合上,认真地看着我:“他会的。如果这个问题真的像小王说的那么严重,客户要索赔,那损失的就不是几万块钱的事了。而且,这对他来说,是保住自己位子的关键。比起自己的前途,他不会在乎这点钱。关键是,我们要价多少?”
这个问题,我一时间也答不上来。
“你觉得,你花在这个项目上的心血,你解决这个bug所需要的专业能力,以及你这九个月的安宁被打扰的代价,值多少钱?”陈静引导着我。
我想了想,那个bug听起来非常底层且隐蔽,很可能与我当初为了提升性能而写的某个多线程异步调用模块有关。那个模块逻辑极其复杂,文档里虽然有说明,但没有亲手写过的人,很难在短时间内理解其核心。我要解决它,估计也需要花费一整天的时间,全神贯注,还可能要熬个通宵。
“按我之前的工资算,加上加班费,再加上精神损失费……”我掰着指头,心里盘算着。
“别按你之前的工资算,”陈静打断我,“那是你作为员工的价格。现在,你是作为专家,作为乙方去解决问题的。价格,应该由你来定。往高了报,这是你的筹码。”
就在我们讨论的时候,张伟的电话又来了。这次,他的语气里少了几分虚伪的热络,多了几分压抑着的不耐烦。
“林宇,你什么意思?跟公司谈钱?你觉得合适吗?”他一上来就兴师问罪。
“张经理,我觉得很合适。”我平静地回答,陈静在旁边对我竖起了大拇指,“我现在不是你的员工,我们之间是平等的商业合作关系。我提供技术服务,公司支付相应报酬,这是最基本的商业规则。”
张伟在那边冷笑了一声:“行啊,林宇,士别三日当刮目相看啊。那你开个价吧,我倒想听听,你的技术值多少钱。”
他的语气里充满了讥讽,显然是想用这种方式来羞辱我,让我知难而退,或者开一个很低的价格。
我看了看陈静,她用口型对我说了两个字:“大胆。”
我心一横,报出了一个我刚刚和陈静商量好的、自认为绝对会被他拒绝的数字:“两万。”
电话那头瞬间陷入了死寂。过了足足十几秒,张伟才用一种难以置信的语气说:“两万?林宇,你怎么不去抢?你回来动动手指,就要两万块?你以为你是谁?”
“我就是那个唯一能快速解决这个问题的人。”我一字一句地说,“这个价格,包含了我从现在开始到明天上午十点前,解决这个bug所需要付出的所有时间和精力。当然,如果问题没解决,我分文不取。你可以考虑一下,是花两万块钱解决问题,还是等着被客户索赔,然后整个项目组跟着你一起背锅。”
说完,我补充了一句:“这是我的报价,不接受议价。如果你觉得不值,那就另请高明吧。”
我再次挂断了电话。这一次,我的手心微微出汗,心跳也有些加速。我不知道自己做得对不对,但陈静却走过来,用力抱了抱我:“做得好!这才是你应得的尊重。”
那个晚上,张伟没有再打电话过来。我躺在床上,翻来覆去,心里像是有两个小人在打架。一个小人说我做得太过分,不近人情;另一个小人则说我这是在捍卫自己的价值。
直到午夜,我才迷迷糊糊地睡着。我以为这件事就这么结束了,他们会选择内部消化,或者找更昂贵的外部专家。然而,第二天一早,一个意想不到的电话,彻底改变了整个事件的走向。
第3章 沉默的筹码
清晨六点半,天刚蒙蒙亮,我的手机就响了。我以为是张伟又来讨价还价,带着起床气接了起来,声音含混不清:“喂?”
“您好,是林宇先生吗?我是公司的财务总监,我姓李。”电话那头的声音冷静、干练,是一位女性。
我瞬间清醒了。“李总监?您好。”我有些意外,财务总监怎么会亲自给我打电话?在公司时,我跟这位雷厉风行的女领导几乎没有任何交集。
“林先生,很抱歉这么早打扰您。”她的语气非常客气,完全没有张伟那种高高在上的感觉,“关于您提出的‘星河项目’技术服务一事,我已经了解了情况。您的报价,公司原则上同意。但是,走公司的财务流程需要时间,签订合同、审批、付款,一套下来最快也要两三天。但项目那边的情况很紧急,等不了那么久。”
我静静地听着,没有插话。我知道,她打电话来,肯定不是只为了告诉我这些。
“所以,我想跟您商量一个灵活一点的方案。”李总监继续说道,“您今天先来公司解决问题,我们同步进行合同流程。为了表示公司的诚意,我可以先以个人名义,通过财务备用金给您预付一部分款项。等问题解决,合同走完,再结清尾款。您看这样可以吗?”
我彻底愣住了。这跟我预想的剧本完全不一样。我本以为会是一场漫长的拉锯战,没想到财务总监亲自出马,不仅全盘接受了我的条件,还如此高效地提出了解决方案。这足以说明,公司这次遇到的麻烦,比我想象的还要大。
“不过,”李总监话锋一转,“关于服务费的金额,我希望能跟您再确认一下。两万块是税前还是税后?如果是税前,那么扣除20%的劳务税,您实际到手是一万六。考虑到您是紧急被邀请回来解决问题,公司愿意承担这部分税费。我们给您支付一万七千块的服务费,税费由公司代缴,您看如何?”
我脑子飞快地转着。支付一万七,公司实际支出是两万一千二百五十块。她不仅没有还价,反而主动帮我解决了税务问题,让我实际到手的钱比预期的还多了一千。这种专业和尊重,与张伟的态度形成了天壤之别。
“可以,李总监。我同意这个方案。”我立刻答应了。
“好的,林先生。那我们随时恭候您。您到公司后,可以直接来财务部找我,我们先把预付款的事情处理一下。”
挂断电话,我还有些恍惚。陈静也被吵醒了,揉着眼睛问我:“怎么了?”
我把刚才的通话内容跟她说了一遍,她听完后,脸上露出了“果然如此”的表情:“看见没?专业的人做专业的事。那个张伟,格局太小,只想着怎么拿捏你,怎么省钱。而这个李总监,她看到的是整个项目的风险和收益。在她眼里,花两万块钱避免几百万的索赔和信誉损失,是一笔再划算不过的买卖。”
陈静的话点醒了我。是啊,在张伟那里,我是一个可以随意使唤的前下属;而在李总监这里,我是一个能解决问题的专业人士。我的价值,并没有因为我的离职而消失,只是在不同的人眼里,有着不同的标价。
我迅速地洗漱、换衣服。打开衣柜,看着那些曾经为了上班而买的衬衫和西裤,我犹豫了一下,最后还是选择了一件舒适的T恤和牛仔裤。我不是回去上班,我是去解决问题的。
出门前,陈静帮我整理了一下衣领,轻声说:“记住,你今天回去,不是为了向任何人证明什么,只是为了完成一项工作,拿到你应得的报酬。解决了问题,拿了钱,就立刻离开,不要跟他们多费口舌。”
“我明白。”我点点头,心里前所未有的平静和坚定。
我没有直接去以前的技术部,而是按照李总监的指示,先去了位于另一层楼的财务部。李总监的办公室整洁明亮,她本人看起来比我想象中更年轻,大约四十岁左右,戴着一副金丝眼镜,眼神锐利而专注。
她没有多余的寒暄,直接让助理拿来一份早已拟好的《临时技术服务协议》,条款清晰,权责分明。服务内容就是“解决‘星河项目’线上系统崩溃的bug”,服务期限是“24小时内”,服务费用是“税后一万七千元人民币”。
“林先生,您看一下合同,如果没问题,就在这里签字。”
我快速浏览了一遍,确认无误后,签下了自己的名字。紧接着,财务助理就领着我去走了备用金预支流程,不到十分钟,五千块现金就交到了我的手上。
“这是预付款,”李总监说,“剩下的尾款,会在问题解决后的三个工作日内,打到您指定的银行账户。现在,技术部的同事应该都在会议室等您了。”
整个过程高效得令人咋舌。我拿着那五千块钱,感觉有些不真实。这不仅仅是钱,更是一种被承认、被尊重的凭证。
当我拿着笔记本电脑,走进那个曾经熟悉无比的技术部会议室时,所有人的目光都齐刷刷地投向了我。项目组的成员都在,一个个顶着黑眼圈,神情憔M。小王看到我,像是看到了救星,激动地站了起来。
而张伟,正坐在会议室的主位上。当他看到我时,脸上的表情极为复杂,有惊讶,有尴尬,还有一丝掩饰不住的恼怒。他显然没想到,我真的会来,而且是以这种他完全无法掌控的方式。
他大概以为,我会像以前一样,被他几句话就说动,灰溜溜地跑回来无偿加班。他更不会想到,财务总监会绕过他,直接跟我达成了协议。
我没有理会他,径直走到小王身边,把笔记本电脑放在桌上,开口问道:“说一下现在的情况吧。把错误日志、系统监控数据,还有你们这几天尝试过的所有解决方案,都给我看一下。”
我的语气平静而专业,仿佛我们之间只是普通的甲乙方关系。
张伟的脸一阵红一阵白,他大概是想说几句场面话来找回自己的主导权,但看着我公事公办的态度,又不知道从何说起。最终,他只能清了清嗓子,对着项目组的人说:“都……都听林工的安排。”
那一刻,我看到他眼神里的不甘。而我心里清楚,这场关于价值和尊严的博弈,在我踏进这个会议室之前,就已经赢了。
第4章 往事的尘埃
电脑开机,连接上公司的内网,当熟悉的开发环境界面跳出来时,一种恍如隔世的感觉包裹了我。那些曾经被我视为生命一部分的代码,此刻静静地躺在屏幕上,像一群久未谋面的老朋友。
小王在一旁紧张地向我介绍着情况,语速飞快,逻辑却有些混乱。我耐心地听着,同时快速浏览着他调出来的各种日志和数据。系统崩溃毫无规律,有时在高并发时段,有时却在夜深人静的凌晨。错误日志指向了一个底层的内存溢出,但每次溢出的位置都不同,根本无法定位到具体的代码行。
项目组的其他成员也围了过来,七嘴八舌地补充着他们这一个星期以来的发现和猜测。他们尝试过增加服务器内存,优化数据库查询,甚至回滚了最近的几个版本,但都无济于事。问题就像一个幽灵,潜伏在系统的深处,随时准备发动致命一击。
张伟坐在旁边,一言不发,脸色阴沉地看着我们。他大概是想插话,显示一下自己的存在感,但面对这些具体的技术细节,他一个字也说不出来。在技术方面,他一直是个半吊子,更擅长的是向上汇报和向下压榨。
我花了大约半个小时,把所有的信息都消化了一遍。我的直觉越来越清晰地指向了我当初亲手搭建的那个核心模块——一个为了处理海量数据而设计的、基于多线程和内存池的高性能数据处理引擎。这个引擎是我在“星河项目”中最得意的作品,也是最复杂、最容易出错的地方。
为了写这个引擎,我曾经连续一个月,每天只睡四五个小时。我翻遍了国内外所有的技术论坛,阅读了十几篇相关的学术论文,在草稿纸上画的架构图堆起来有半米高。引擎完成的那天,我在凌晨三点的办公室里,激动得差点跳起来。我第一时间把这个好消息通过邮件发给了张伟,邮件里详细阐述了引擎的设计思路、技术难点以及它能带来的性能提升。
第二天,在项目周会上,张伟拿着一份精美的PPT,对着大老板和客户侃侃而谈,把这个引擎说成了是他带领团队、攻坚克难的伟大成果。PPT上,我的名字只在最后“项目组成员”那一页,以一个微不足道的、和其他人一样大小的字体出现。会后,他拍着我的肩膀,语重心长地说:“林宇,做得不错。不过你要明白,功劳是大家的,要懂得低调,这样才能进步。”
我当时虽然心里不舒服,但年轻的我,还是选择了相信他画的饼——“项目上线后,你的奖金绝对是最高的。”
然而,项目上线后,我的奖金却是整个核心团队里最低的。我去问他,他把一份不知真假的绩效考核表拍在桌子上,指着上面的一些无关紧要的“扣分项”说:“林宇,你技术能力是不错,但团队协作能力、沟通能力还有待提高。公司看的是一个人的综合素质,不能只看技术。这次奖金是综合评定的结果,你要正确看待。”
那一刻,我看着他那张一本正经的脸,心里最后一丝幻想也破灭了。我终于明白,在这个人手下,我永远只是一个可以被随意压榨和替代的工具。
真正让我下定决心离开的,是后来发生的一件事。项目稳定运行了半年后,公司决定申报一个市里的科技创新奖。张伟理所当然地把“星河项目”报了上去,申报材料里,关于那个核心数据处理引擎的介绍占了三分之二的篇幅,而“主要发明人”一栏,赫然写着他自己的名字。
我得知后,去找他理论。那是我第一次,也是唯一一次和他正面争吵。
“张经理,这个引擎从设计到实现,每一行代码都是我写的,你凭什么把发明人写成你自己?”我把申报材料的复印件摔在他的办公桌上。
他连眼皮都没抬一下,慢条斯理地喝了口茶,说:“林宇,注意你的态度。我是项目负责人,整个项目都是我来统筹规划的,我作为主要发明人有什么问题吗?再说了,你的工资是公司发的,你做出的所有成果,知识产权都属于公司。公司安排谁是发明人,那是公司的决定。”
“这是剽窃!是无耻!”我气得浑身发抖。
“说话注意点!”他终于抬起头,眼神冰冷地看着我,“什么叫剽窃?没有我给你争取资源,没有我给你顶住压力,你能安安稳稳地做技术吗?年轻人,不要太天真,也不要太自私。眼光要放长远一点。”
那天下午,我回到工位,一言不发地写好了辞职信。第二天一早,我就把它放在了张伟的桌上。他看到辞职信时,没有挽留,甚至没有一丝惊讶,只是轻蔑地笑了一下,说:“想好了?外面的世界可没那么好混。别到时候混不下去了,又想回来。”
我没有回答他,只是平静地说:“工作交接我会做好的。”
那些被践踏的尊严,那些被窃取的成果,那些被无视的付出,像电影画面一样在我脑海中一帧帧闪过。它们提醒着我,我今天坐在这里,不是为了什么狗屁的“旧情”,也不是为了拯救这个曾经让我心力交瘁的项目。我只是来完成一笔交易,一笔用我的专业知识,换取应得报酬和尊严的交易。
“把服务端的源代码管理权限给我打开。”我从回忆中抽身,对小王说道。
我的手指在键盘上飞快地敲击着,大脑高速运转。往事的尘埃,非但没有扰乱我的思绪,反而让我变得更加专注和冷静。我要用最无可辩驳的方式,向他们,尤其是向张伟证明,我的价值,从来不由他来定义。
第5章 意外的盟友
权限开通后,我立刻沉浸到了代码的世界里。整个会议室安静得只剩下键盘的敲击声和服务器风扇的嗡嗡声。项目组的成员都屏息凝神地站在我身后,看着屏幕上一行行飞速滚动的代码,眼神里充满了敬畏和期待。
张伟在旁边坐立不安,他一会儿看看手机,一会儿又装作不经意地走到我身后瞥一眼屏幕。但他什么也看不懂,那些复杂的算法和指针操作在他眼里,无异于天书。这种对自己项目核心技术完全失控的感觉,显然让他非常焦虑。
时间一分一秒地过去,转眼就到了中午。我完全没有察觉,直到肚子发出一声清晰的“咕咕”声。
“林工,要不……先去吃饭吧?”小王小心翼翼地问。
我摇了摇头,眼睛没有离开屏幕:“不用,给我叫一份外卖就行,送到会议室来。另外,帮我泡一杯浓茶,要最浓的那种。”
我已经有了一些头绪。问题确实出在那个多线程模块。当初为了极致的性能,我使用了一些比较激进的内存管理技巧,在正常情况下运行良好,但在系统升级后,新的运行环境似乎触碰到了某个隐藏的临界条件,导致了线程间的内存污染。这是一个非常典型的“海森堡bug”,即当你试图观察它时,它就会消失,极难复现和定位。
就在这时,我的手机响了。是一个陌生的号码。我以为是外卖到了,随手接了起来。
“喂,林宇吗?我是李凯。”
李凯,我以前在公司关系最好的同事,一个同样是技术宅的后端工程师。我离职后,我们还偶尔在微信上聊几句。
“凯子?你怎么用这个号码打给我?”我有些惊讶。
“我用办公室的座机打的。你小子,可以啊,听说你今天回公司了,而且还是财务总监亲自请回来的?”他的声音里带着一丝兴奋和八卦。
“消息传得这么快?”我笑了笑。
“那可不!现在整个技术部都传遍了。”李凯压低了声音,“说你现在是‘林顾问’了,回来解个bug,公司要付两万块的服务费。张伟的脸都绿了,刚才在走廊里抽烟,把烟头都快捏碎了。兄弟,真给我们这些码农长脸!”
听到这话,我心里一阵快意。
“对了,我打电话给你,是想提醒你一下。”李凯的语气严肃了起来,“你小心点张伟。我听行政的同事说,他上午去找过人事和法务,好像是想在你的离职协议里找茬,看有没有什么竞业协议或者保密条款能约束你,不让你收这笔钱。结果人家法务跟他说,你签的只是普通的保密协议,没签竞业,而且你现在是回来帮公司解决问题,不是泄密,公司付费是天经地义的。他碰了一鼻子灰才回来。”
我心中一凛。我没想到张伟竟然会用这么卑劣的手段。他宁愿让项目黄掉,让公司蒙受巨大损失,也不愿意看到我拿到这笔钱,不愿意承认我的价值。
“我知道了,谢了,凯子。”我由衷地感谢他。
“客气啥。你专心搞技术,别被他影响。我们这帮兄弟都挺你。说实话,自从你走了以后,项目组乌烟瘴气的,全靠张伟一张嘴,技术上根本没人能扛大梁。大家都盼着你能回来,杀杀他的威风。”
挂了电话,我看着不远处脸色铁青的张伟,心中再无半点波澜。他就像一只跳梁小丑,所有的伎俩,在绝对的实力和专业的规则面前,都显得那么可笑。
而李总监,这位我素未谋面的财务负责人,在无形中,成了我最坚实的“盟友”。她用专业的商业规则,为我筑起了一道防火墙,挡住了所有来自张伟的明枪暗箭。她要的不是勾心斗角,不是办公室政治,而是一个能解决问题的结果。
这让我更加坚定了信念。我必须把这个问题漂亮地解决掉,不仅是为了那一万七千块钱,更是为了回应这份来之不易的尊重和信任。
下午三点,在喝了三杯浓茶,用尽了半包餐巾纸来演算和画图之后,我终于锁定了bug的根本原因。那是一个极其隐蔽的指针释放问题,在特定的并发场景下,一个线程会错误地释放掉另一个线程正在使用的内存,导致系统随机崩溃。
“找到了。”我长舒了一口气,对身后的小王说。
所有人都围了上来,脸上写满了难以置信。
“把这个文件的第387行,这句‘free(pointer)’注释掉,然后在第412行,增加一个线程锁和引用计数判断,代码我写给你。”我一边说,一边在一个文本编辑器里飞快地敲下修改方案。
小王如获至宝,立刻按照我的指示,在测试环境修改、编译、部署。
整个过程不到十分钟。
“现在,开压力测试,把并发数调到平时的五倍。”我命令道。
测试程序开始运行,所有人的眼睛都死死地盯着监控屏幕上那几条上下起伏的曲线。CPU占用率、内存使用率、网络IO……所有指标都在高位运行,但系统,稳如泰山。
十分钟,二十分钟,半个小时……
系统没有再崩溃。
会议室里爆发出了一阵压抑着的欢呼。小王激动地抓住我的胳膊:“林哥,你太牛了!真的解决了!我们搞了一个星期,你一下午就搞定了!”
我笑了笑,拔下自己的笔记本,开始关机。
张伟也走了过来,脸上挤出一个比哭还难看的笑容:“林宇,辛苦了,辛苦了。我就知道,你一回来,肯定没问题。晚上,晚上我安排……”
“不用了,张经理。”我打断了他,“我的工作已经完成了。按照合同,我该走了。”
我收拾好东西,背上包,在众人复杂的目光中,转身向会议室门口走去。我没有再看张伟一眼。当我走到门口时,我停下脚步,回头对小王说了一句:“记住,好的代码,不仅要考虑性能,更要考虑可维护性和健壮性。有些捷径,最好不要走。”
这句话,既是说给小王听的,也是说给张伟听的。
我头也不回地离开了技术部,径直走向电梯。当我按下下行按钮时,我感觉自己浑身轻松,仿佛卸下了一个沉重多年的包袱。
第6章 重返“战场”
当我推开那扇熟悉的玻璃门,踏入曾经工作了三年的办公区时,空气中弥漫的、那种混杂着咖啡、电子设备散热和外卖盒饭的独特气味,瞬间将我拉回了过去。一切似乎都没变,工位还是那个布局,头顶的白炽灯依旧明亮得有些刺眼,远处服务器机房的风扇声,也还是那熟悉的、永不停歇的低鸣。
但一切又都变了。
迎接我的,不再是同事们热情的招呼,而是一种夹杂着好奇、同情和一丝尴尬的复杂眼神。他们中的许多人,都曾是与我并肩作战的“战友”,我们一起熬过夜,一起在项目上线后击掌欢呼,也一起在楼下的小饭馆里吐槽过张伟。但此刻,我们之间仿佛隔了一层看不见的墙。我是“外人”,一个被请回来救火的“前员工”。
我的旧工位上,坐着一个陌生的年轻面孔,应该就是小王。他的桌子上堆满了各种技术书籍和能量饮料的空罐子,电脑屏幕上闪烁着密密麻麻的代码,整个人看起来憔悴不堪,像一株被霜打过的茄子。看到我,他先是一愣,随即像是抓住了救命稻草,眼中迸发出光芒。
整个项目组的人都被张伟叫进了那个我们曾经戏称为“小黑屋”的会议室。我背着我的双肩包,里面装着我惯用的机械键盘和一台性能强悍的笔记本电脑,平静地走了进去。
会议室里,气氛压抑得几乎让人窒息。张伟坐在主位上,脸色阴沉得能滴出水来。他看到我进来,眼神里闪过一丝不易察觉的愠怒,但很快就被一层虚伪的笑容所掩盖。他大概还在为财务总监绕过他直接与我联系而耿耿于怀,这让他在下属面前颜面尽失。
“林宇来了啊,快坐,快坐。”他指了指旁边的空位,语气客套得有些过分,“大家可都盼着你来呢。”
我没有坐到他指定的位置,而是直接走到了会议室最前端,那里有一块巨大的显示屏。我把自己的笔记本电脑接上投影仪,开门见山地说:“时间紧迫,客套话就不说了。小王,你先给我介绍一下bug的具体情况,把相关的日志、监控数据和代码库权限都准备好。”
我的直接和干脆,让张伟准备好的一肚子场面话全都憋了回去。他张了张嘴,似乎想强调一下自己作为“总指挥”的地位,但看到项目组所有人都用一种充满期待的目光看着我,他最终还是选择了沉默。他很清楚,此刻,谁能解决问题,谁才是这里真正的主角。
接下来的几个小时,我仿佛又回到了过去那种高强度的工作状态。我的大脑像一台精密的计算机,飞速地处理着小王提供的大量信息。代码、日志、架构图……这些曾经熟悉无比的东西,在我脑海中重新构建起一个完整的逻辑世界。
我发现,在我离开的这九个月里,“星河项目”被加入了许多新的功能,代码结构也变得比以前更加臃B肿和混乱。很多地方的修改,明显是为了赶工期而做的“补丁式”开发,缺乏整体的规划和长远的考虑。我甚至看到了几处非常低级的逻辑错误,显然是接手的人并没有完全理解我当初的设计思想。
“这个模块是谁改的?”我指着屏幕上的一段代码,皱起了眉头。
一个年轻的工程师怯生生地举起了手:“林工,是我……当时张经理要求三天内必须上线一个新功能,时间太紧了,我没来得及仔细看您的文档,就……就直接加上去了。”
我看了看张伟,他避开了我的目光,端起茶杯喝了一口水。
我没有再说什么,继续往下看。我心里很清楚,这些问题的出现,技术人员固然有责任,但根源在于张伟这种急功近利、不尊重技术规律的管理方式。他只看得到功能上线,看不到背后埋下的技术债务。而现在,这些债务,终于以一个“恶性bug”的形式,集中爆发了。
整个下午,我几乎没有离开过座位。外卖送到后,我也只是匆匆扒拉了几口,然后继续投入到代码的分析中。会议室里的人来了又走,只有小王和几个核心技术人员一直陪着我。张伟则是在自己的办公室和会议室之间来回踱步,像一只热锅上的蚂蚁。
我能感觉到,他内心是矛盾的。他一方面希望我能尽快解决问题,好让他能向上面交差;另一方面,他又极不情愿看到我如此轻易地就解决了那个困扰了他们整个团队一个多星期的难题。因为我的成功,会愈发凸显出他的无能。
傍晚时分,夕阳的余晖透过百叶窗的缝隙,在会议室的白板上投下几道狭长的光影。就在那时,我脑中灵光一闪,终于将所有零散的线索串联了起来,找到了那个隐藏得最深的“魔鬼”。
那是一个与操作系统内核交互的底层API调用。在我写代码的时候,那个API的一个参数是可选的,但在最近的一次系统底层库升级后,这个参数变成了必填项,而且如果缺省,并不会立刻报错,而是在某些极端并发条件下,引发一连串不可预知的连锁反应,最终导致内存崩溃。这是一个任何静态代码检查工具都无法发现的陷阱。
找到问题根源的那一刻,我没有丝毫的兴奋,反而感到一阵深深的疲惫。我仿佛看到了那个曾经的自己,为了追求那百分之一的性能提升,在深夜里研究着这些晦涩的文档,写下这些“炫技”却脆弱的代码。而如今,我却要亲手来为自己当初的“年少轻狂”买单。
我抬起头,环顾了一下会议室里一张张焦虑而又充满希望的脸,最后,我的目光落在了张伟的身上。
“问题,我找到了。”我平静地宣布。
第7章 无声的惊雷
当我宣布找到问题时,整个会议室的空气仿佛凝固了一秒,随即被一阵压抑不住的骚动所打破。小王和几个技术员几乎是同时冲到了我的身边,脸上写满了“怎么可能”的惊愕和“终于解脱了”的狂喜。
张伟也快步走了过来,他扶了扶眼镜,努力让自己的表情看起来镇定,但微微颤抖的嘴角还是暴露了他内心的激动和不安。他盯着我的屏幕,急切地问:“在哪里?是什么问题?”
我没有立刻回答他,而是不急不慢地将那个API的官方文档调了出来,将升级前后的两个版本并排放在屏幕上,用红色的标记圈出了那个关键参数的变化。然后,我才定位到我代码中的那一行,指给他看。
“系统底层库升级,导致API调用规则发生了变化。这里,少了一个参数,造成了内存泄漏的隐患。”我用最简洁的语言解释道。
会议室里一片哗然。没有人想到,折磨了他们一个多星期的“幽灵”,竟然是这样一个看似微不足道,却又极其致命的细节。这需要对系统底层有极其深刻的理解,以及超乎寻常的敏锐直觉,才能在浩如烟海的代码和日志中发现它。
小王的脸上露出了既羞愧又钦佩的神情:“原来是这样……我们根本没往这方面想,只以为是业务逻辑出了问题。林哥,你真是……”他一时找不到合适的词来形容。
我没有理会他们的惊叹,直接在测试环境里加上了那个缺失的参数,然后重新编译、部署。整个过程行云流水,一气呵成。
“开压测。”我下达了指令。
这一次,监控屏幕上的曲线,平稳得像一条直线。即使并发数已经调到了历史最高值的十倍,系统依然稳如磐泰。
成功了。
确认bug被彻底修复后,我没有丝毫的停留,开始默默地收拾自己的东西。拔掉投影仪的线索,合上笔记本电脑,将那只陪伴我多年的机械键盘装回包里。
整个会议室里,没有人说话。他们只是静静地看着我,眼神复杂。
张伟终于反应了过来,他脸上堆满了笑容,走过来用力地拍了拍我的肩膀:“林宇!好样的!我就知道你肯定行!真是太感谢你了,你这次可是帮了公司一个大忙啊!”
他的手掌拍在我的肩膀上,我却感到一阵说不出的别扭,下意识地侧身避开了。
“张经理客气了。”我拉上双肩包的拉链,语气平淡得像在谈论天气,“我只是在履行合同而已。”
“合同”两个字,像一根针,刺破了张伟脸上虚伪的笑容。他的表情僵硬了一下,随即又恢复了常态:“对对对,履行合同,履行合同。你看,事情解决了,时间也差不多了,我已经在旁边的酒店订好了包间,今天晚上无论如何要让我好好谢谢你,也算是给你庆功!”
“不用了。”我直接拒绝,“我妻子还在家等我吃饭。”
“别啊!林宇,这怎么行呢?大家都在,一起热闹热闹嘛!”张伟说着,向项目组的其他人使了个眼色。
立刻有几个平时和他走得近的员工附和道:“是啊,林工,一起去吧,难得回来一次。”“对啊,大家都很想你呢。”
我看着这些熟悉的脸,心里没有丝毫的波澜。我提起背包,转身准备离开。
“林宇!”张伟见我如此不给面子,声音提高了几分,带着一丝恼怒,“你这是什么意思?我真心实意地想感谢你,你连一顿饭都不肯吃?”
我停下脚步,转过身,第一次正视着他的眼睛。我看到他眼中的色厉内荏,看到他那种被人忤逆后的愤怒。
我平静地说:“张经理,我想你可能误会了。最好的感谢,不是一顿饭,而是按照合同约定,及时支付服务费。”
我的话音刚落,会议室里的空气瞬间降到了冰点。所有人都被我这番不留情面的话给镇住了。
张伟的脸涨成了猪肝色,他大概从未被一个下属(哪怕是前下属)如此当面顶撞过。他指着我,嘴唇哆嗦着,半天说不出一句话来:“你……你……”
就在这时,我的手机“叮”地响了一声。我拿出来一看,是一条来自李总监的短信。
“林先生,听说问题已经解决了,辛苦了。我已经安排加急付款,尾款一万两千元应该会在一个小时内到账。合作愉快。”
我把手机屏幕转向张伟,将那条短信的内容清晰地展示在他的面前。
“李总监已经安排付款了。所以,这顿饭,真的没必要了。”
张伟死死地盯着我的手机屏幕,他的瞳孔猛地收缩了一下。他脸上的愤怒、尴尬、不甘、震惊……所有情绪交织在一起,最后,全都化为了一种灰败的、彻底的懵圈。
他大概怎么也想不通,为什么财务总监会如此高效,甚至不通过他这个项目主管来确认结果,就直接启动了付款流程。他那套拖延付款、饭局上讨价还价、用人情来抵消金钱的 привычные套路,在绝对的专业和规则面前,被击得粉碎。
那一刻,整个世界仿佛都安静了下来。我看到他愣在原地,像一尊被抽掉了灵魂的雕像。
我没有再多说一个字,转身,大步流星地走出了会议室,走出了这个我曾倾注了无数心血,也流尽了无数血泪的地方。
身后,是死一般的寂静。那是我听过的,最响亮的一记惊雷。
第8章 阳台上的新生
走出公司大楼,外面已经是华灯初上。城市的晚风吹在脸上,带着一丝凉意,却让我感觉无比清醒和舒畅。我没有打车,而是选择步行去地铁站。我想一个人走走,慢慢消化这一天所发生的一切。
口袋里的手机震动了一下,我拿出来看,是一条银行的到账通知。
“【XX银行】您尾号XXXX的储蓄卡账户X月X日18:47完成一笔转账交易,人民币12000.00元,活期余额17005.32元。”
加上下午预付的五千现金,一万七千块,分文不少。
我站在人来人往的街头,看着这条短信,忽然有些想笑。我想起了九个月前,我拖着疲惫不堪的身体和一颗破碎的心离开这里时的场景。那时,我账户里的存款,因为长期没有项目奖金,加上身体不适的各种开销,已经所剩无几。我甚至一度怀疑,自己坚持了这么多年的技术,到底有什么价值。
而今天,我用一天的时间,证明了它的价值。这一万七千块,对我来说,早已超越了金钱的意义。它是我失去的尊严,是我被践踏的专业,是我应得的认可。
回到家,陈静已经做好了一桌子我爱吃的菜。看到我进门,她没有问工作的事,只是走过来,接过我肩上的背包,轻声说:“回来了?快去洗手,准备吃饭。”
饭桌上,我把今天发生的事情,从见到李总监,到最后张伟那张懵掉的脸,都原原本本地告诉了她。陈静静静地听着,时不时地给我夹菜,脸上始终带着温柔的笑意。
“我就知道,你一定能处理得很好。”等我说完,她才开口,“那个张伟,他永远不会明白,尊重是相互的。他一直把你当成一个可以随意拿捏的工具,所以当工具开始有了自己的意志和标价时,他就无法理解,也无法接受了。”
“是啊,”我感慨道,“以前我总觉得,只要我技术够硬,做得够多,总有一天会得到认可。现在才明白,在一个不尊重你的环境里,你做得再多,也只是在感动自己。你的价值,首先需要你自己来捍卫。”
陈静给我盛了一碗汤,说:“所以,离开那里,是我们做过的最正确的决定。这九个月的休息,让你找回了健康,更重要的是,让你找回了自己。今天这件事,不过是你康复之后,去拆掉最后一根留在心里的刺而已。”
我喝着碗里温热的汤,感觉一股暖流从胃里一直流淌到心里。是啊,那根刺,今天终于被我亲手拔掉了。虽然过程有些波折,但结果,却比想象中更让人释然。
吃完饭,我们像往常一样,来到阳台上。我浇着那些已经长得郁郁葱葱的多肉,陈静靠在我的肩膀上。
“接下来有什么打算?”她问。
“我想,是时候重新开始了。”我看着远处的城市夜景,灯火璀璨,像一条流动的星河,“不过这一次,我要自己说了算。或许,可以先接一些私活,或者和朋友一起做点小项目。我想做一个纯粹的、快乐的程序员,而不是一个被KPI和办公室政治绑架的工具人。”
“我支持你。”陈静握紧了我的手,“无论你做什么,我都支持你。”
那一刻,我感到前所未有的平静和自由。张伟的错愕,同事的惊叹,那一万七千块钱,都像是昨夜的一场梦,虽然真实发生过,但已经不再重要。重要的是,我穿过了那片曾经困住我的迷雾,看到了一个更清晰、更广阔的世界。
我明白,生活永远不会是一帆风顺的,未来或许还会有新的“张伟”,新的困境。但这一次,我已经学会了如何去设定自己的边界,如何去评估自己的价值,如何在一个不完美的世界里,保护好那个努力生活的自己。
阳台上的晚风轻轻吹过,带着花草的芬芳。我低头看着身边妻子的笑脸,看着眼前这座城市的万家灯火,心里充满了对未来的期待。
那段在旧公司挣扎的岁月,就像一段写满了bug的旧代码,虽然不堪回首,但也正因为有了它,我才写出了属于自己的、更健壮、更优雅的“新程序”。而这个程序的名字,叫做“新生”。
转载请注明来自海坡下载,本文标题:《优化剧本收费(我离职9个月公司让我去修代码)》
京公网安备11000000000001号
京ICP备11000001号
还没有评论,来说两句吧...