摘要:嘈杂的、混合着香水味和外卖食物残渣味道的空气里,只有我这块小小的格子间,像风暴眼一样平静。
周五下午四点,办公室里弥漫着一种骚动不安的气息。
不是项目要上线的紧张,也不是老板要发飙的死寂。
而是一种类似中小学生春游前夕的、廉价而浮躁的快乐。
“防晒霜带了吗?据说那边紫外线特别强。”
“废话,我连面膜都带了三张,晚上泡温泉必须敷一张。”
“哈哈,老李你还带了泳裤?你那啤酒肚好意思露出来?”
“滚蛋!老子当年也是八块腹肌的好吗!”
嘈杂的、混合着香水味和外卖食物残渣味道的空气里,只有我这块小小的格子间,像风暴眼一样平静。
我叫陈默。
人如其名,沉默寡言,是技术部一个平平无奇的程序员。
显示器上,代码一行行滚过,我正在给一个上周遗留的模块做最后的收尾测试。
企业微信的群聊图标闪烁得像迪厅里的彩灯,屏幕右下角不断弹出他们@我的消息。
“@陈默,你那个破bug搞定了没?别耽误大家出发啊。”
是产品经理小李,一个刚毕业两年的小伙子,最擅长用最天真的语气,说出最欠揍的话。
我没理他。
这个所谓的“破bug”,是他自己提需求时逻辑没想清楚,导致前端数据请求路径混乱,最后屎盆子扣在了后端头上。
我花了两天时间,才把他那坨混乱的逻辑理顺,重构了接口。
现在,他催我了。
好像延误大家去温泉酒店享受人生的,是我。
我敲下最后一行命令,回车。
`Test Passed. All 256 assertions confirmed.`
世界清净了。
我靠在椅背上,长长地出了一口气,感觉身体被掏空。
不是累,是烦。
一种深入骨髓的、对这种职场环境的厌倦。
“搞定了。”
我在群里回了三个字。
瞬间,群里炸了。
“牛逼啊默哥!”
“陈默大佬威武!”
“终于可以解放了!兄弟们,楼下集合!”
刚才还对我怨声载道的人,此刻又换上了一副谄媚的嘴脸。
虚伪。
我关掉聊天窗口,开始收拾东西。
其实也没什么好收拾的,就一个双肩包,里面装着我的MacBook Pro。
这是我的家当,也是我的武器。
行政部的Linda踩着高跟鞋“哒哒哒”地跑过来,脸上挂着职业假笑。
“陈默,收拾好了吗?大巴车在楼下等着了,就差你了哦。”
她的香水味有点冲,熏得我脑仁疼。
“马上。”我把电脑放进包里,拉上拉链。
“快点啦,David总他们都在催了。”Linda的语气里带上了一丝不耐烦,好像我是那个拖堂不走的坏学生。
David,我们部门的总监,一个把“赋能”、“抓手”、“闭环”挂在嘴边的互联网黑话八级学者。
我点点头,没说话,背上包跟在她身后。
整个办公区已经空了,只剩下东倒西歪的椅子和没来得及关的显示器。
桌上还有没吃完的零食,没喝完的奶茶,一片狼藉,像被洗劫过的村庄。
我们公司,一家所谓的“明星创业公司”,最喜欢搞这种团建。
用David的话说,这叫“提升团队凝聚力,打造狼性文化”。
说白了,就是用最低的成本,占用员工的周末时间,再画一个“我们是伐木累”的大饼。
电梯里,只有我和Linda。
她对着镜子补口红,一边补一边用眼角的余光瞟我。
“陈默,你平时也多跟大家聊聊天嘛,别老是自己一个人闷着。你看,今天大家就容易把你忘了。”
这话说的,好像我被孤立,是我的错。
我扯了扯嘴角,算是一个笑容。
“我性格就这样。”
“哎呀,性格是可以改的嘛,”她收起口红,转过头来,一副人生导师的模样,“在职场,光会干活是不行的,人际关系也很重要。你技术这么好,要是再会来事一点,早就像老王一样当上小组长了。”
老王,技术部的另一个老员工,代码写得一塌糊涂,但酒量深不可测,每次都能把David陪得心花怒放。
我不想跟她争辩。
夏虫不可语冰。
电梯门开了,一股热浪涌了进来。
楼下,一辆金色的旅游大巴正停在路边,发动机轰鸣着,喷出难闻的尾气。
同事们三三两两地聚在一起抽烟、聊天,脸上洋溢着即将开始度假的兴奋。
我看到了David,他正被一群人簇拥在中间,手里拿着一个大喇叭,唾沫横飞。
“兄弟们!这次去山里,咱们好好放松两天!暂时忘掉KPI,忘掉deadline!我们只要嗨起来!”
人群发出一阵欢呼。
Linda快步跑了过去,像一只花蝴蝶,凑到David身边,不知道说了句什么,逗得David哈哈大笑。
我背着包,站在人群外围,像一个局外人。
没有人注意到我。
也可能注意到了,但懒得打招呼。
在他们眼里,我大概就是一个会写代码的工具,一个修复bug的机器。
工具用完了,谁还会在意它被放在哪里?
David又用喇叭喊了几句,然后大手一挥:“人齐了!出发!”
人群开始骚动,争先恐后地往车上挤。
我愣住了。
人齐了?
我还没上车啊。
我下意识地往前走了几步,想喊一声。
但话到嘴边,又咽了回去。
喊什么呢?
嘿,哥们儿,你们把我忘了?
太掉价了。
像个没人要的孩子,在后面追着喊“等等我”。
我就这么站着,眼睁睁地看着最后一个同事的屁股消失在车门里。
车门“砰”的一声关上了。
大巴车缓缓启动,从我面前驶过。
车窗里,是一张张模糊而快乐的脸。
有人看到了我,指指点点,脸上露出幸灾乐祸的表情。
我甚至能读懂他的口型。
“你看,那个。”
车开远了,只留下一股浓重的尾气。
我站在原地,夏末的阳光晒在身上,有点刺眼。
手机震了一下。
是Linda在群里发的消息。
“@陈默,啊呀,你怎么还在公司楼下呀?我们点人头的时候看齐了就先走了。要不……你打个车过来?我跟David总申请了,可以报销的。”
后面还跟了一个“捂脸笑”的表情。
我盯着那个表情,看了很久。
“啊呀”。
“先走了”。
“要不”。
每一个词,都充满了轻描淡写的傲慢和施舍。
好像让我打车过去,是对我天大的恩赐。
群里立刻有人附和。
“默哥V5,专车待遇!”
“哈哈哈,陈默这是享受了领导级待遇啊。”
“快来啊陈默,温泉美女等着你!”
我感觉一股火,“噌”地一下从脚底板窜到了天灵盖。
去你妈的温泉美女。
去你妈的领导待遇。
老子不伺候了。
我深吸一口气,然后缓缓吐出。
打开手机,找到航空公司的App,买了一张最近的、飞往南方的机票。
目的地,一个我一直想去但没时间去的海边小城。
然后,我在群里打字。
“不了,家里有点急事,得回去一趟。大家玩得开心。”
发完,我直接开启了免打扰模式。
世界,再次清净了。
我转身,重新走回写字楼。
前台小妹看到我,惊讶地问:“陈哥,你不是去团建了吗?”
“不去了。”我冲她笑了笑,“公司这么大,总得有个人看着家吧。”
小妹似懂非懂地点点头。
我刷卡,走进空无一人的办公室。
刚才还喧嚣吵闹的空间,此刻安静得能听到中央空调出风口的“嗡嗡”声。
夕阳从巨大的落地窗照进来,把整个办公室染成一片温暖的橘红色。
桌上的绿萝,因为几天没浇水,叶子有点蔫了。
我拿起水杯,给它浇了点水。
然后,我坐在自己的工位上,看着窗外的车水马龙,高楼林立。
一种前所未有的自由感,包裹了我。
不用去应付那些虚伪的笑脸,不用去听那些油腻的祝酒词,不用在KTV里忍受David鬼哭狼嚎般的歌声。
这个周末,属于我了。
我打开电脑,不是为了工作。
就是想听听音乐,看看电影。
突然,屏幕右下角,一个红色的警报图标跳了出来。
是服务器的自动监控系统。
`Warning: Abnormal data flow detected on Port 443.`
端口443,HTTPS的默认端口,所有加密流量都从这里走。
数据流异常?
我皱了皱眉。
这通常意味着几种可能:流量激增、有爬虫在抓取数据,或者……
有攻击。
我点开警报详情,查看日志。
一串串密密麻麻的代码滚过屏幕。
大部分是正常的访问请求。
但夹杂在其中的,有几条非常奇怪的请求。
它们的请求头被伪造过,看起来像是普通的浏览器访问,但payload(负载)里,却带了一段经过混淆的、意义不明的字符串。
我的心,沉了一下。
这不是普通的爬虫。
这是在试探。
像一只狼,在羊圈外面,用爪子一遍遍地扒拉着栅栏,寻找最薄弱的那块木板。
我立刻连接到服务器后台,开始追踪这些异常请求的来源IP。
结果让我吃了一惊。
来源IP非常分散,来自世界各地,而且都是通过代理服务器跳转的。
这是典型的分布式试探攻击。
对方很专业。
我的第一反应,是给David打电话。
这是他的职责,他是部门负责人。
我拿出手机,找到了他的号码。
但我的手指,悬在拨号键上,迟迟没有按下去。
脑海里浮现出他那张油光满面的脸,和他此刻可能正左拥右抱泡在温泉里的场景。
我打电话过去,会发生什么?
他会先是一愣,然后极度不耐烦地问我:“什么事?天塌下来了?”
当我告诉他系统可能被攻击时,他会说:“你确定吗?别大惊小怪的。你先盯着,有大问题再跟我说。”
他会把皮球踢回来,让我一个人扛着。
如果最后证明是虚惊一场,他会说我小题大做,影响团队士气。
如果真的出了大事,他会第一时间跳出来,把所有责任都推到我头上。
“陈默,你是干什么吃的?这么大的漏洞你都发现不了?”
我太了解他了。
我把手机扔在桌上。
算了。
求人不如求己。
反正这个周末,我也没什么事干。
就当是……陪这个不知名的黑客,玩玩儿。
我从抽屉里翻出一包泡面,撕开,用饮水机的热水泡上。
浓郁的、廉价的香气在空旷的办公室里弥漫开来。
我一边吸溜着面条,一边盯着屏幕。
那些试探性的请求,还在持续。
而且,频率越来越高。
对方似乎很有耐心。
我需要找出他们到底在试探什么。
我把那段经过混淆的payload复制下来,开始进行反向工程。
这是一个极其枯燥且耗费脑力的过程。
就像在解一个无比复杂的密码。
我需要一层层地剥开它的伪装,还原出它本来的面目。
时间一分一秒地过去。
窗外的天色,从橘红,变成了深蓝,最后彻底黑了下去。
城市的灯火,像洒在地上的碎钻,闪闪发光。
办公室里,只有我的屏幕,亮着幽幽的白光。
键盘的敲击声,是唯一的声响。
“啪嗒,啪嗒,啪嗒。”
泡面已经凉了,坨成了一团。
我没顾得上吃。
我的全部心神,都沉浸在那段代码里。
凌晨两点。
我终于解开了。
当我看到那段代码的真面目时,后背瞬间冒出了一层冷汗。
这不是一个简单的试探脚本。
这是一个后门。
一个隐藏得极深的、可以直接绕过所有安全验证,获取数据库最高权限的后门。
一旦被激活,对方就可以像逛自家后花园一样,随意窃取、篡改、删除我们公司所有的数据。
用户资料、交易记录、核心代码……所有的一切。
那将是毁灭性的打击。
对于一个互联网公司来说,数据就是生命。
我呆呆地看着屏幕,心脏“砰砰”狂跳。
这个后门是谁留下的?
我开始在代码库里疯狂搜索,追溯这段代码的源头。
最终,我在一个三年前的、早已废弃的第三方登录模块里,找到了它的踪迹。
提交者:张伟。
张伟……
我记起来了。
他是公司的初创员工之一,也是曾经的技术大神。
一年前,公司为了“优化人员结构”,把他裁掉了。
据说当时闹得很不愉快。
原来,他走的时候,给自己留了一把“钥匙”。
一把随时可以回来“看看”的钥匙。
而现在,这把钥匙,似乎被别人发现了。
我无法判断,正在攻击我们的,是张伟本人,还是发现了这个漏洞的其他人。
但这不重要。
重要的是,这颗定时炸弹,马上就要炸了。
我再次拿起手机。
这一次,我没有犹豫。
我必须立刻通知David。
这已经超出了我一个人能处理的范围。
然而,电话拨过去,响了很久,都无人接听。
我又拨了一遍。
还是无人接听。
我打开企业微信,想在群里吼一声。
却看到他们正在疯狂刷屏。
一张张照片,温泉池里,男男女女挤在一起,水汽氤氲。
KTV里,灯光昏暗,酒瓶倒了一桌。
David拿着麦克风,满脸通红,正在声嘶力竭地吼着一首我听不出调的《死了都要爱》。
下面一堆人点赞,拍马屁。
“David总麦霸!”
“唱得太好了,堪比原唱!”
我看着那张照片,胃里一阵翻江倒海。
指望他?
等他唱完这首歌,公司可能已经没了。
我关掉微信,把手机扔到一边。
一股无名火和一种奇异的使命感,同时在我胸中燃烧。
你们在花天酒地。
老子在拯救世界。
行。
来吧。
我把椅子拉近,掰了掰手指,发出一阵“咔咔”的脆响。
不就是个后门吗?
老子给你堵上。
不就是个攻击吗?
老子陪你玩到底。
我重新打开代码编辑器,深吸一口气。
战斗,现在开始。
首先,我不能直接删除这段后门代码。
因为这个模块虽然废弃了,但和很多核心功能都有千丝万缕的联系。
贸然删除,很可能会引发系统性的崩溃。
我需要做的,是“拆弹”。
在不影响系统正常运行的前提下,把这个后门给废掉。
这需要对整个系统的架构有极其深刻的理解。
幸运的是,我恰好是为数不多的、完整读过公司所有底层代码的人。
因为我无聊。
因为我没有社交。
当他们在酒桌上推杯换盏,在KTV里勾肩搭背的时候,我都在读代码。
那些枯燥的、晦涩的、像天书一样的代码,在我眼里,却像一本本引人入胜的小说。
我能看到每一行代码背后的逻辑,每一个函数背后的思考。
现在,这些平时看似无用的积累,成了我唯一的武器。
我开始着手编写一个补丁。
思路很简单:在后门被激活之前,加一道“锁”。
这道锁,会验证一个只有我才知道的动态口令。
如果口令错误,请求就会被导向一个我事先准备好的“蜜罐”。
所谓的“蜜罐”,就是一个伪造的、看起来和真实数据库一模一样的陷阱。
攻击者以为自己成功了,在里面随意操作,但其实他看到的所有数据都是假的。
而他的一举一动,都会被我记录下来。
这个方案,既能堵住漏洞,又能迷惑攻击者,为我争取更多的时间。
写代码的过程,高度紧张。
我的大脑像一台超频运行的CPU,每一个毛孔都在发热。
办公室的空调开得很足,但我的后背,已经被汗水湿透。
时间在流逝。
我不知道现在是几点。
我的世界里,只剩下屏幕上的代码,和键盘的敲击声。
写完补丁,只是第一步。
接下来,是测试。
我必须在本地环境中,模拟上千次、上万次的攻击,确保我的补丁在任何极端情况下都不会失效。
这是一个极其繁琐的过程。
我感觉自己的眼睛快要瞎了。
显示器上的字符,开始出现重影。
我站起来,走到窗边,想透口气。
窗外,天边已经泛起了一丝鱼肚白。
原来,已经快天亮了。
整个城市,还沉浸在睡梦中。
我看着这座熟悉的城市,突然感到一阵巨大的孤独。
这座城市里有上千万人。
但此刻,似乎只有我一个人是醒着的。
也只有我一个人知道,一场看不见的战争,正在这座城市的某个角落,悄无声息地进行着。
我回到座位上,喝了一大口已经冰凉的咖啡。
苦涩的液体,刺激着我的神经。
不能停。
我对自己说。
测试还在继续。
每一次失败,每一次修正,都像在刀尖上跳舞。
我不敢有丝毫的懈怠。
终于,在太阳升起的那一刻,所有的测试,全部通过。
我的补丁,完美无瑕。
我长长地舒了一口气,感觉全身的力气都被抽干了。
我靠在椅子上,连一根手指都不想动。
接下来,就是最后一步:部署。
把我的补丁,上线到正式服务器。
这是最关键,也是最危险的一步。
一旦出现任何差错,整个线上服务,都可能瘫痪。
我必须选择一个系统访问量最低的时间窗口。
通常,是在凌晨三四点。
但现在,已经是周六的早晨。
我看了看监控数据,还好,周末的访问量,只有平时的十分之一。
可以操作。
我打开部署工具,把补丁文件上传到服务器。
然后,输入部署命令。
在敲下回车键的那一刻,我的心,提到了嗓子眼。
屏幕上,日志飞快地滚动。
`Deploying...`
`Restarting service...`
`Service started successfully.`
`Health check passed.`
成功了。
我瘫在椅子上,像一滩烂泥。
十几秒后,我猛地坐起来,冲到洗手间,用冷水狠狠地泼了脸。
冰冷的水,让我混沌的大脑清醒了一点。
我看着镜子里的自己。
脸色苍白,眼圈发黑,布满血丝,胡子拉碴。
像个刚从坟墓里爬出来的僵尸。
我自嘲地笑了笑。
这副鬼样子,要是被Linda看到,估计又要说我不注意形象了。
管她呢。
我回到工位,看着监控屏幕。
系统一切正常。
我布下的“蜜罐”,也已经开始工作。
现在,我需要做的,就是等待。
等那只狼,自己掉进陷阱。
我太累了。
眼皮像灌了铅一样沉重。
我趴在桌子上,想眯一会儿。
就一会儿。
……
我不知道自己睡了多久。
我是被一阵急促的、刺耳的警报声吵醒的。
不是一个警报。
是几十个、上百个警报,同时响起。
我猛地抬起头,大脑一片空白。
怎么回事?
我看向监控大屏。
整块屏幕,已经变成了一片刺眼的红色。
CPU占用率,100%。
内存占用率,100%。
网络带宽,100%。
所有的指标,全部爆表。
这是……DDoS攻击!
而且是规模空前巨大的DDoS攻击!
对方疯了!
他们发现之前的试探没用,直接掀了桌子,用最简单粗暴的方式,想把我们的服务器给冲垮。
与此同时,我的“蜜罐”系统,也发来了警报。
有人掉进陷C阱了。
我立刻切换到“蜜罐”的监控后台。
我看到,一个IP地址,正在疯狂地执行各种高危操作。
`DROP DATABASE;`
`DELETE FROM users;`
`FORMAT C:;`
他想删库跑路!
他以为自己已经拿到了最高权限,正在肆意破坏。
但他不知道,他操作的一切,都只是幻象。
而他的IP地址,他所有的操作记录,都被我清清楚楚地记录了下来。
我看着屏幕上那个不断尝试破坏的IP,嘴角泛起一丝冷笑。
小样儿。
跟我斗?
但是,DDoS攻击的问题,依然很严峻。
这种流量攻击,就像洪水一样,我的补丁是防不住的。
它会堵塞我们所有的网络带宽,让正常用户根本无法访问。
如果不解决,我们的网站和服务,在外界看来,跟瘫痪了没什么区别。
我必须想办法,把这些垃圾流量给清洗掉。
我立刻登录了我们的云服务商后台。
我们用的是国内最大的云服务商,他们提供了高防IP服务。
可以将攻击流量,牵引到他们的高防机房进行清洗,然后再把正常的流量,返回给我们的服务器。
但是,这项服务,巨贵。
而且,需要手动开启。
开启的权限,只有David有。
我又一次陷入了两难。
没有David的授权,我开启了这项服务,回头他可以说我滥用职权,让我背这个锅。
不开启,公司就得瘫痪着。
我看着屏幕上那红得发紫的监控图,咬了咬牙。
去他妈的授权。
等他授权,黄花菜都凉了。
老子今天,就滥用一次职权。
我在云服务商的后台,找到了高防服务的开启按钮。
上面清清楚楚地写着价格。
每小时,五千块。
我手抖了一下。
一个小时五千,一天就是十二万。
这要是扛个两三天,我一年的工资都不够赔的。
但是,我已经没有退路了。
我闭上眼睛,点了下去。
`确认开启“D.D.Gaurd Pro”服务?`
确认。
页面跳转,显示服务已开启。
几乎是瞬间,我看到监控大屏上的红色,开始以肉眼可见的速度消退。
CPU占用率,从100%降到了50%。
内存占用率,降到了40%。
网络带宽,也恢复了正常。
洪水,被挡住了。
我瘫在椅子上,感觉自己像是刚跑完一场马拉松。
虚脱。
但又有一种难以言喻的快感。
就在这时,我的手机响了。
是一个陌生的号码。
我划开接听。
“喂?”我的声音沙哑得像砂纸。
电话那头,传来David惊慌失措的声音。
“陈默?是你吗?你在公司?”
我愣了一下。
他怎么知道我在公司?
“是我。”
“系统是不是挂了?!我手机上收到几百条报警短信!后台也登不上去了!”他的声音里充满了恐慌,甚至带着一丝哭腔。
我这才明白,他不是未卜先知。
是监控系统给他这个管理员,自动发送了报警短信。
我淡淡地说:“没挂。”
“没挂?!那他妈是怎么回事?!整个后台跟死了一样!”他爆了粗口。
“被攻击了。”我说。
“攻击?什么攻击?谁干的?”
“DDoS,还有人想利用后门删库。”我言简意赅。
电话那头,沉默了。
长达十几秒的死寂。
我甚至能听到他沉重的呼吸声。
过了好一会儿,他才用一种难以置信的、颤抖的声音问:
“那……那现在呢?”
我靠在椅背上,看着窗外明媚的阳光,轻轻地说:
“已经处理了。”
“……处理了?”他的声音拔高了八度,“什么叫处理了?!”
“字面意思。”我说,“后门我堵上了,攻击者被我引到了蜜罐里,DDoS流量我也切到高防IP上清洗了。现在系统没事了。”
电话那头,又是一阵死寂。
这一次,沉默的时间更长。
我能想象到他此刻的表情。
震惊,疑惑,羞愧,还有一丝恐惧。
他肯定在想,我是谁?我在哪?发生了什么?
这个平时默不作声,被他随意使唤,甚至被他遗忘在公司楼下的工具人,怎么突然之间,变成了拯救世界的超人?
这个剧本,他完全没看懂。
“你……”他终于开口了,声音干涩,“你……昨天晚上……没走?”
“嗯。”
“你……你一个人,把这些都搞定了?”
“嗯。”
“……”
他又说不出话了。
我有点不耐烦了。
“还有事吗?没事我挂了,我得盯着后台。”
“别别别!”他急忙喊道,“陈默,那个……你辛苦了!你……你简直是公司的英雄!”
英雄?
我差点笑出声。
昨天把我当一样扔在楼下的时候,怎么不说我是英雄?
现在公司差点完蛋,被我救回来了,我就成英雄了?
太讽刺了。
“我不是英雄,我就是个写代码的。”我冷冷地说。
“不不不,你就是!陈默,你等着,我……我们马上回来!你千万别乱动,稳住!一定要稳住!”
他说得语无伦次,好像我是那个抱着炸药包,准备和敌人同归于尽的董存瑞。
挂了电话,我看着手机屏幕,发了一会儿呆。
然后,我打开了企业微信。
那个几百人的大群里,一片死寂。
最新的消息,还停留在我发的那句“家里有事”。
想必,David已经在他们的小群里,通报了情况。
我可以想象,温泉池里那群人,此刻是何等的惊慌失措。
KTV里那些谄媚的笑脸,此刻是何等的尴尬。
他们一定在疯狂地讨论。
“怎么回事?公司被攻击了?”
“陈默一个人在公司?他把问题解决了?”
“,真的假的?这么牛逼?”
“那我们……还玩吗?”
“玩个屁!David总让赶紧滚回去!”
想到这里,我竟然觉得有点好笑。
一场精心策划的“狼性团建”,就这么被一场突如其来的攻击,给搅黄了。
而搅黄这一切的,恰恰是他们最看不起,甚至忘了带上的那个人。
生活,有时候比小说还精彩。
我站起来,伸了个懒腰。
肚子饿得咕咕叫。
我走到茶水间,想找点吃的。
零食柜里,空空如也。
都被他们带去团建的路上了。
我只找到一盒被压扁的、过期的苏打饼干。
我撕开包装,拿出一片,放进嘴里。
又干又硬,没什么味道。
但我却吃得津津有味。
这是我应得的战利品。
下午三点。
办公室的门,被“砰”的一声推开。
David一马当先,冲了进来。
他头发凌乱,衣服皱巴巴的,脸上还带着没睡醒的浮肿和宿醉的苍白。
身后,跟着技术部的核心骨干,包括那个代码写得一塌糊涂的小组长老王。
他们每个人的脸上,都写满了焦虑和疲惫。
像一群打了败仗的残兵。
他们看到我,都愣住了。
我正坐在我的工位上,腿上盖着一件不知道谁的外套,睡得正香。
是被他们开门的巨大声响吵醒的。
我揉了揉眼睛,看着他们。
David一个箭步冲到我面前,双手抓住我的肩膀,用力地摇晃着。
“陈默!陈默!你怎么样?没事吧?”
他的力气很大,摇得我头晕眼花。
“我没事……”我挣开他的手,“就是有点困。”
他看着我,嘴唇哆嗦着,半天说不出一句话。
然后,他突然转身,对着身后那群人,用一种近乎咆哮的声音吼道:
“都他妈愣着干什么?!还不快去检查服务器!检查日志!评估损失!”
人群如梦初醒,乱哄哄地散开,各自跑向自己的工位。
一时间,办公室里又充满了键盘的敲击声和各种惊呼声。
“!这攻击流量!也太恐怖了!”
“我的天,数据库差点就没了……”
“快看这个蜜罐系统!太骚了!这是谁写的?”
“是陈默……日志里写的,都是他一个人操作的。”
所有的目光,都像探照灯一样,聚焦到了我身上。
羡慕,嫉妒,敬畏,不可思议。
我被这些目光看得有点不自在。
老王走到我身边,拍了拍我的肩膀。
他什么也没说,只是朝我竖了个大拇指。
眼神里,是纯粹的、一个老技术人对另一个技术人的佩服。
我点了点头。
David把我拉到他的办公室,关上门。
他亲自给我倒了一杯水,双手递给我,腰弯得像一只煮熟的虾。
“陈默,这次……我……我真不知道该说什么了。”
他搓着手,一脸的局促和讨好。
“如果不是你,公司这次就真的完了。我……我代表公司,代表我个人,向你表示最沉重的……哦不,最崇高的谢意!”
他大概是想说“沉痛的哀悼”,一紧张,说错了。
我没忍住,差点笑出来。
“David总,言重了。”
“不重!一点都不重!”他激动地说,“你就是我们公司的定海神神针!是我们的守护神!”
他开始给我戴高帽子了。
一套又一套。
什么力挽狂狂澜,什么临危不惧,什么技术担当。
我安静地听着,不打断,也不附和。
我只想看看,他到底想干什么。
铺垫了足足十分钟,他终于进入了正题。
“陈默啊,你看,你这次立了这么大的功,公司肯定不会亏待你。”
他顿了顿,观察着我的反应。
“我和董事会那边紧急沟通过了,我们决定,给你发一笔特别奖金。六个月的工资!你看怎么样?”
六个月的工资。
对于我来说,确实是一笔不小的数目。
我看到他眼里的得意。
他觉得,这个数字,足以收买我,让我忘记之前所有的不快。
我没说话。
他有点急了,又加码。
“另外,从下个月开始,给你升职!技术专家!P8级别!薪水上浮30%!再给你配两个小弟,让你带个小团队!”
P8,技术专家。
这已经是我们公司技术序列里,非管理岗的最高级别了。
老王奋斗了七八年,也才是个P7。
这个条件,不可谓不丰厚。
David的脸上,又露出了那种熟悉的、运筹帷幄的笑容。
他觉得,他已经吃定我了。
没有人能拒绝这样的诱惑。
他等着我感恩戴德,等着我表忠心。
我看着他,慢慢地把杯子里的水喝完。
然后,我开口了。
“David总。”
“哎,在在在!”
“团建那天,为什么把我落下了?”
我问得很平静。
但这个问题,像一把尖刀,瞬间刺破了他所有的伪装。
他的笑容,僵在了脸上。
“这个……这个……”他支支吾吾,眼神躲闪,“是个误会,绝对是个误会!是Linda……是她点人头的时候搞错了,我当时也不知道……”
他开始甩锅了。
甩给那个踩着高跟鞋的行政小姑娘。
真是个男人。
“是吗?”我看着他的眼睛,“我记得,我从电梯里出来的时候,你正在用大喇叭喊‘人齐了,出发’。你应该看到我了。”
他的脸,瞬间涨成了猪肝色。
“我……我当时……人太多了,没注意……真的,陈默,我怎么可能故意把你落下呢?你是我手下最得力的干将啊!”
“得力的干将,就可以被忘掉吗?”我继续问。
“……”
他彻底说不出话了。
办公室里,一片死寂。
我站了起来。
“奖金,我会收下。这是我应得的,是我用一个通宵换来的。”
“升职,就算了。”
David猛地抬起头,难以置信地看着我。
“为什么?!陈默,你是不是对我有意见?你有什么不满,你可以提!我都可以改!”
“不是对你有意见。”我摇了摇头,“是对这种文化有意见。”
“一个人的价值,不是由他写了多少代码,修复了多少bug来决定的。而是由他喝了多少酒,说了多少漂亮话来决定的。”
“一个能拯救公司的英雄,在你们眼里,还不如一个会活跃气氛的小丑。”
“这样的公司,不值得我留下。”
我说完,转身就走。
David呆在原地,像一尊石化的雕像。
我拉开办公室的门。
外面,所有人都竖着耳朵在偷听。
看到我出来,又都假装在认真工作。
只有Linda,她站在不远处,脸色煞白,看着我,眼神里充满了恐惧和怨恨。
我走到我的工位,开始收拾东西。
我的东西很少。
一个双肩包,一个水杯,还有桌角那盆半死不活的绿萝。
我把电脑里的个人文件打包,清空。
然后,我写了一封辞职邮件。
没有长篇大论,只有一句话。
“因个人原因,申请离职,望批准。”
收件人,是David,同时抄送了HR。
点击,发送。
做完这一切,我感觉浑身轻松。
我背上包,抱着那盆绿萝,朝大门口走去。
经过David办公室时,我停了一下。
他还坐在里面,一动不动。
像一个被打碎了所有骄傲的、可怜的木偶。
我没有进去。
我只是把那盆绿萝,轻轻地放在了他办公室门口的地上。
然后,我头也不回地走了。
走出写字楼,外面阳光灿烂。
我深吸了一口气,空气里,是自由的味道。
手机震了一下。
是银行发来的短信。
一笔巨额奖金,到账了。
我笑了笑。
用这笔钱,去那个海边小城,租个房子,住上一年。
每天写写代码,看看大海,钓钓鱼。
也挺好。
至于未来?
谁知道呢。
一个能单挑黑客,拯救一家公司的程序员,到哪儿,还怕没饭吃吗?
来源:云来暮为伴
