“程工,签字吧。”
赵振把解除劳动合同的通知书推到我面前。笔搁在纸上,笔尖对着我的名字。
我签了。
窗外的雨刚停,天边露出一点光亮。
我收拾好东西,一个用了八年的茶杯,一张全家福,一本写了一半的技术笔记。
门卫老刘看见我抱着纸箱出来,愣了一下,说程工你的伞还在保安亭。
我摇摇头,没回头。
身后传来沈浩南的声音,不大不小,正好让我听见:“技术部?换个外包团队,成本省一半。”
三天后,凌晨两点四十七分。手机屏幕亮了。来电显示:沈浩南。
我没接。
第二次响起,我又按掉。
第三次,是另一部手机。叶雅洁的声音发抖:“程斌……系统崩了……”
![]()
01
沈浩南上任的第一天。
会议室里坐满了人。新总裁站在台上,三十出头,西装笔挺,皮鞋锃亮。他说话时喜欢摊开双手,像在向所有人展示什么。
“公司需要年轻化、现代化、国际化。”
他说话的声音不小,每个字都敲在墙上弹回来。台下鸦雀无声。
“技术部,全部裁掉。”
这句话说出来时,会议室里静得只剩空调声。所有人都看着我。
我坐着没动。
赵振站起来,带头鼓了掌。掌声稀稀拉拉的,好几个人没反应过来。他转过头看我,嘴角带着笑意,像是在说“你也有今天”。
我把钢笔帽拧上。
18年前,我进这家公司时,赵振还在街边摆摊卖手机配件。
我们一起吃过泡面,一起熬过通宵,一起在机房里被蚊子咬得满腿包。
那时候他说,程哥,以后咱们发了,谁都不能亏待谁。
后来他学会了敬酒。
我不会。
散会后,我回到工位。
座位靠窗,窗外是一棵老槐树,树冠遮住了半边天。
我在这棵树下坐了18年。
春天看它发芽,夏天听蝉叫,秋天看叶子落光,冬天看着光秃秃的枝条在风里抖。
抽屉里的东西不多。
一把螺丝刀,两本旧书,一双备用的平底布鞋。
我拿起那本技术笔记,翻了几页。
笔迹潦草,涂改痕迹很多。
第47页右下角有一行小字:备份服务器密码同7年前,未改。
我迟疑了一下,把那一页撕了下来,放进口袋。
吕红霞从前台跑过来,眼眶红红的。她在这家公司干了20年,比我还要早两年。她小声说了一句话:“程工,他们怎么能这样?”
我笑了笑,没接话。
赵振走过来,站在离我一米远的地方。他穿着新买的西装,领带打得板正。他看着我收拾东西,双手插在口袋里,脚尖点了点地面。
“老程,别怪我。总部要求降本增效,我也没办法。”
我把笔记本放进纸箱。
“我就是个执行者。”
我把茶杯放在笔记本上面。
“你年纪也不小了,正好歇一歇。”
我把全家福也放进去。照片上,女儿刚上初中,笑得露出两颗虎牙。
“你放心,交接的事我会安排的。”
我抬头看了他一眼,说了一句:“交接文件在我电脑里,D盘有个文件夹叫‘交接’,里面很全。”
赵振愣了一下,点点头,转身走了。
我没说的是,那个文件夹里只有操作手册和接口文档,没有源代码。
源代码里所有关键节点的注释,都是用我自己的方式写的。
不是中文,也不是英文,而是拼音缩写加数字。
比如SQL_LJ_20110324。
只有我自己看得懂。
不只是故意的。
有时候写着写着就习惯了,懒得翻译成大家都看得懂的话。一个系统活了18年,长得跟我身上的疤一样,每个接口我都记得,每段代码我都认得。
但别人不一定。
下午三点,我抱着纸箱走出大楼。老刘在保安亭门口站着,递给我一把伞。
“程工,带着吧。天气预报说晚上有雨。”
我接过来。伞面上的漆已经掉了大半,露出底下的铁灰。这把伞在保安亭挂了三年,每次下雨我都忘带,每次我都跑过去借。
“老刘,你还有几年退休?”
“三年。”
“好好干。”
我拍拍他的肩膀,走了。
手机震了一下。是肖刚捷发来的微信:程哥,晚上七点,老地方。
我回了一个字:好。
老地方是公司后面那条巷子里的川菜馆,开了十几年。以前技术部加班的时候,总去那儿吃饭。老板姓张,四川人,做的水煮鱼又辣又麻。
我抱着纸箱走进巷子时,张老板正在门口择菜。他看见我,手停了。
“程工,你怎么……”
“放假。”
张老板没再问。他把手里的菜放下,转身进了后厨。
我坐在靠窗的位子上,把纸箱放在脚边。窗外又开始飘雨,街道上的行人少了很多。
手机又亮了。是叶雅洁发来的消息。
“程斌,你走得太急了。”
我没回。
七点,肖刚捷来了。
他还穿着公司的工服,胸口的铭牌没摘。
他坐下来,把一瓶啤酒放在桌上,问我第一句话就是:“程哥,你是不是早就料到会这样?”
我拧开啤酒瓶盖,喝了一口。
“料没料到,又能怎么样?”
“那你为什么走得那么平静?”
我看着窗外。雨越下越大了,街面上亮起一片水光。
“我爸退休那年,我问他,爸,你在厂里干了四十年,走的时候什么感觉。他说,没什么感觉,就像是坐了一趟特别长的公交车,到站了就该下车。”
肖刚捷沉默了一会儿,给自己也倒了一杯酒。
“程哥,那系统怎么办?”
“已经交接完了。”
“我不是这个意思。我是说……”
他压低声音:“核心数据库的底层架构,只有你一个人懂。”
我夹了一块水煮鱼,嚼了嚼。辣味从舌尖窜到天灵盖。
“赵振懂。他以前跟我一起搞过。”
“他那是多久以前的事了。现在他连命令行都不怎么碰。”
我没接话。
肖刚捷看着我,又说了一句话:“程哥,我不怕你生气。我在想,如果系统出事了,他们会来找你吗?”
我放下筷子。沉默了。
雨越下越大。
02
散伙饭吃到了晚上十一点。
肖刚捷喝多了,趴在桌上,嘴里嘟囔着“公司就是卸磨杀驴”之类的话。我结了账,四百八。张老板硬要抹零,我没让。
出了饭馆,雨还在下。我把伞撑开递给肖刚捷,他接过去,走了两步又回头,喊了一声:“程哥,你要是开公司,我第一个跟你干!”
我摆摆手,让他赶紧走。
自己淋着雨往家走。雨不大,密密匝匝的,打在身上像有人轻轻拍你。
路上经过公司大楼,灯还亮着。三楼技术部的窗户透出白光。我停下来,看了一眼。窗户里有人影晃动,应该是外包团队的人。
就在这时候,叶雅洁又发了消息过来。
“你睡了吗?”
“没。”
“我有话想说。”
“你说。”
等了大概一分钟,她才回过来:“沈浩南今晚加班到十点半。赵振也在。他们让外包团队连夜熟悉系统。”
我把手机放进口袋,继续走。
叶雅洁跟我是大学同学,比我小一届。毕业后她去了别家公司,后来跳槽到了这儿,我才知道。那时候她已经结了婚,老公是赵振。
那段时间,赵振找我喝酒,高兴得不行。说媳妇儿终于跳槽过来了,以后夫妻俩一起干。我也替他高兴,还包了个红包。
后来我才知道,叶雅洁跳槽来这家公司之前,问过一个人。那个人是我。
但我那时候没接她的电话。
有些事,过去了就过去了。她现在在财务部当副总监,日子过得不错。虽然偶尔会发消息来,但我们都很有分寸,不超过三句。
手机又震了一下。是肖刚捷发来的语音。我点开听,他的声音含含糊糊的,像是已经躺在床上,半梦半醒。
“程哥……我今天听赵振打电话,他说……说系统架构太旧了,要全部换掉。你觉得可能吗?”
回到家已经快十二点。
客厅灯亮着,梁玉蓉坐在沙发上,电视开着,放的是她每天晚上必追的苦情剧。
她看见我回来,把电视声音调小了,也没说话。
我把纸箱放在鞋柜旁边,换了拖鞋。
“吃饭了没?”
“吃了。老张那儿。”
梁玉蓉站起来,走到厨房,端出一碗绿豆汤,放在餐桌上。
“给你留的。”
我走过去坐下,喝了一口。绿豆汤是凉的,甜甜的。
她在我对面坐下来,看着我。
大概过了半分钟,她开口了:“下午隔壁王姐打电话来,说她们公司正在招人,问我你有没有兴趣。工资比你现在……”
“我不急。”
“那你打算怎么办?”
“先歇两天。”
梁玉蓉没再说话。她站起来,把电视关了,又折回来说了一句:“我不催你。但你也别拖。日子要过的。”
我点点头。
她进卧室后,我一个人坐在客厅,喝完了那碗绿豆汤。
然后打开自己的旧笔记本电脑。这台电脑是我好几年前买的,配置不算高,但装了一个备用系统。
我打开一个文件夹。里面有三个文件。
第一个,是完整的系统核心框架。所有底层逻辑,所有数据传输路径,所有接口定义。我花了三年时间写出来的。
第二个,是一个自检脚本。
它能在不连接公司内网的情况下,模拟运行整个系统。
我的所有修改、测试,都是在这上面先跑过,再部署到正式系统的。
第三个,是备份服务器的IP地址。
我盯着屏幕看了好一会儿。
然后我合上电脑,关了灯。
黑暗中,我听见自己的呼吸声。很轻,很平稳。
隔壁卧室里,梁玉蓉翻了翻身,说了句梦话:“别熬夜了。”
我没出声。
窗外又开始下雨。这一次,雨打得窗户啪啪响。
![]()
03
第二天早上,我去菜市场买菜。
我已经很久没去过菜市场了。以前上班的时候,早出晚归,早饭都是梁玉蓉做好放在桌上,我扒拉两口就出门。菜市场在一公里外,穿过两条街。
我买了一斤青菜,半斤肉,两条鲫鱼。卖菜的大姐认识我了:“哎,今天不上班啊?”
“放了几天假。”
“那好啊,多陪陪嫂子。”
我没多解释。付了钱,提着袋子往家走。
路上经过公司门口,老刘在值班。他看见我,挥了挥手,喊了一声:“程工,吃过早饭了吗?”
“吃了。你呢?”
“早吃过了。”
我停下来,跟老刘站在保安亭门口聊了几句。老刘压低声音说:“昨晚那群小伙子熬到凌晨三点。赵总也在,听说发了好几次火。”
“程工,听说系统要改版?”
“有可能。”
“那你的心血不就全没了?”
回到家,梁玉蓉已经去她妹妹那儿了。她妹妹开了一家服装店,她偶尔去帮忙。
我一个人把菜洗干净,切好,炖了一锅鱼汤。
汤开的时候,手机响了。
陌生号码。我接通,对面是个年轻的声音:“程工您好,我是新来的系统运维,姓林。赵总让我向您请教一下数据库的……”
“数据库的事情,交接文件里都有。”
“可是……我们看不懂那些注释……”
我端起碗,喝了一口鱼汤。
“那你们问赵总。”
“赵总说他也不太清楚。”
“那就让他看交接文件。我写得挺详细的。”
我挂了电话。
过了一会儿,第二条短信发进来。这次是赵振本人的号码:“程斌,你那些代码的注释考虑更新一下。年轻人看不懂。”
我看着手机,没回。
把鱼汤喝完,洗完碗,已经是上午十点。
我坐在阳台上,看楼下街道上的人来来往往。有人骑着电动车送外卖,有个老太太推着婴儿车慢慢走,有几个穿校服的学生背着书包跑过去。
一切都挺好。
下午两点,肖刚捷来了。
他拎了一箱牛奶,站在门口,表情有点尴尬。“程哥,我跟我老婆说了,她说来看看你。”
“来就来,带什么东西。”
我让他进门,给他倒了一杯茶。他端着杯子,坐在客厅沙发上,四处看了看。住处的格局不大,但干净。梁玉蓉爱收拾。
“程哥,你家的墙钟,还是以前那个啊?”
“没坏,就没换。”
肖刚捷喝了一口茶,放下杯子,犹豫了一会儿,开口了。
“程哥,我今天去过公司了。”
“怎么样?”
“外包团队换了一拨人。赵振说原来的团队不行,又找了一家。沈浩南发了火,说三天之内要把系统搞清楚。”
我点点头,没说话。
“程哥,你觉得他们搞得清楚吗?”
“交给他们了,他们自己想办法。”
肖刚捷看着我,眼神里有种说不上来的东西。
他张了张嘴,又闭上。
最后他站起来,走到门口。
回头又说了一句:“程哥,我总觉得事情没那么简单。”
“什么事?”
“系统的事。”
他走了之后,我站在窗边,看着楼下他的背影。
肖刚捷今年28岁,跟着我干了五年。他技术不错,就是有一点——太敏感,喜欢想太多。
但这次他没想错。
系统没那么简单。
一套运行了8年的系统,经过无数次修改、打补丁、重构,底层结构早就变得像一棵老树,表面上看着粗壮完整,其实根系盘根错节。
别说外包团队,就算是当年参与开发的几个人,也未必能说得清。
只有我清楚。
因为每一条根,都是我自己埋的。
下午五点,我开了电脑,登录了那个备份服务器。
界面弹出来,显示系统运行正常。所有数据都同步着。订单在走,库存数据在更新,客户信息在流转。
一切正常。
但我知道,这只是暂时的。
因为真正的问题,不在系统本身。
在决策。
我关了电脑,靠在椅背上,闭了一会儿眼。
手机响了。
这次是叶雅洁。
“程斌,方便说话吗?”
“方便。”
“公司出事了。”
04
叶雅洁的声音压得很低,像是躲在什么地方打的电话。
“今天下午,赵振让外包团队修改了数据库分区设置。”
“然后呢?”
“然后系统开始报错。报了很多错。赵振说是小问题,让外包团队压着不改,继续推进。”
我没说话。
“程斌,我知道我不该打这个电话。但我总觉得这事不太对劲。”
“你告诉沈浩南了吗?”
“我跟他说了。他说他相信赵振的判断。”
我沉默了一会儿。
“雅洁,你听我说。”
“嗯。”
“如果明天或者后天,系统真的出了问题,你什么都不要做。不要试图去修,不要给别人任何建议。”
“为什么?”
“因为这不是你能解决的问题。”
电话那头沉默了几秒。
“程斌,你是不是早就算到会这样了?”
“我没算过。我只是了解系统,也了解赵振。”
挂了电话之后,我站在窗前,看着外面的天。太阳快落山了,天边烧起一片橘红色的云。
手机又响了。这次是肖刚捷。
“程哥,你听说了吗?”
“听说什么?”
“系统出问题了。下午五点开始,订单处理速度明显变慢。我以前的同事跟我说,客服电话已经快被打爆了。”
我“嗯”了一声。
“程哥,他们会来找你吗?”
“不知道。”
“如果他们来找你,你会回去吗?”
“看情况。”
这顿饭,梁玉蓉做了四个菜。红烧鲫鱼,蒜蓉空心菜,凉拌黄瓜,还有一个番茄蛋汤。我喝了两碗汤,菜也吃得差不多,没说几句话。
她也没再问工作上的事。她帮我盛了第二碗饭,放在我手边,就自己回沙发上继续看电视。
晚上九点半,我又开机看了一眼备份服务器。
系统日志里,密密麻麻的红色报错信息。
我一行一行地看。
过了大概二十分钟,我得出一个结论。
只要他们明天上午还继续运行现有架构,系统会在最晚明天下午六点之前崩溃。不是缓慢降级,而是突然瘫痪。所有数据都会被锁死,无法读写。
原因很简单。
赵振让外包团队改的那个数据库分区设置,正好切断了核心数据表之间的通信通道。
就像是把一条高速公路的中间挖断了,车辆还在往两边涌,最后堵成死结。
而且这个改动的反向操作,必须通过底层数据库管理员权限才能执行。那个权限只有我一个人有。
我靠在椅背上,闭了一会儿眼。
然后我把备份服务器上所有关于公司的文件,都复制到了自己的移动硬盘里。最后把电脑清理了一遍,关掉了服务器上的所有历史访问记录。
做完这些,我看了一眼手机。没有未接来电。
我洗了澡,躺到床上。梁玉蓉已经睡着了,呼吸很轻很均匀。
我盯着天花板,听着窗外的风声。
明天,会不会来电话?
我不知道。但我知道,不管来不来,我都不准备主动打过去。
凌晨一点四十八分。
我被手机震动声吵醒。
屏幕亮着。来电显示:沈浩南。
我盯着那个名字,看了大概十秒钟。然后按了挂断键。
翻了个身,把手机放在床头柜上。
但没等我闭眼,手机又震了。这次是赵振。
我又按掉。
第三次,是个陌生号码。我还是按掉了。
第四次,是叶雅洁的手机。
我接通了。电话那头不是叶雅洁的声音。是一个男人的声音,急促,沙哑,像是喊了太多次话,嗓子已经哑了。
“程斌……是我,赵振。”
“程斌……系统……炸了。”
![]()
05
我听清了。
但我没说话。
“所有的订单全部死锁了……客户数据没了……库存没法更新……财务对账停摆了!程斌……沈总说让你回来……”
“为什么找我?”
“因为系统……系统我们搞不定!外包团队说他们看不懂你的代码!”
“交接文件里都有。”
“我们看不懂!你那些注释……没人看得懂!”
我坐起来,按亮了床头灯。梁玉蓉被吵醒了,翻了个身,嘟囔了一句:“谁啊?”
“没事。你睡你的。”
我拿着手机走进客厅,关上了卧室门。
“赵振,你听我说。”
“系统崩溃的原因,是因为你让外包团队改了数据库分区设置。”
“你怎么知道?”
“我一共写了八年代码。每个设置是什么意思,我比你们所有人都清楚。”
赵振的声音更低了:“那你……能来修吗?”
“我为什么要?”
电话那头换了一个声音。沈浩南。
“程斌,我叫你一声程工。”
“公司现在每天损失将近两百万。总部已经打电话来质问了。如果明天系统还修不好,我这个位置也坐不住了。”
“这跟我有什么关系?”
“你……”
“沈总,我是被裁的人。”
电话那头沉默了。
过了好一会儿,沈浩南的声音再次响起:“我知道。但是程工,公司是你干了18年的地方。你不能看着它倒下。”
我拿着手机,站在窗边。窗外黑漆漆的,路灯照出一小片光,几只飞蛾绕着灯转圈。
“沈总,你今天白天不是相信赵振的判断吗?”
“……是我判断错了。”
“那你现在怎么判断的?”
沉默。
“我判断……只有你才能救这个系统。”
“程工,你在哪儿?我过去找你。”
“不用了。你们先把所有服务器关掉。任何操作都不要做,尤其是不要重启。明天上午八点,我会去公司。”
“……好。”
我挂了电话,站在窗边,看着外面。
天快亮了。
远处的天际线泛起一层灰白的光。路灯还在亮着,但飞蛾已经散了。
我回卧室,换了一身干净的衣服。梁玉蓉已经醒了,靠着床头,看着我。
“你要去公司?”
“你不是被裁了吗?”
“系统崩了。”
她沉默了一会儿,然后问了一句话:“他们还叫你回去?”
“沈浩南打电话来的。”
她没再说什么。她起身走进厨房,给我下了一碗面。卧了一个荷包蛋,撒了一把葱花。
我坐在餐桌前吃面。她坐在对面,看着我吃。
“吃完就去吧。”
“记住,你不是给他们打工的。你是去解决问题的。”
我抬起头,看着她。
梁玉蓉这个人,平时说话带刺,嗓门也大。但关键时候,她比谁都顶得住。
“我知道。”
吃完面,我洗了碗,换了鞋。
出门前,梁玉蓉递给我一件外套。“早上凉。”
我接过来,披上,走出了门。
06
早晨七点半,我到了公司门口。
老刘在保安亭里,看见我,眼睛瞪得老大。
“程工……你怎么来了?”
“回来看看。”
“你……”老刘压低声音,“他们昨天忙了一整夜。里面的人没出来过。”
我点点头,推门进了大楼。
电梯里只有我一个人。
轿厢在嗡嗡地往上升。
墙上的镜子里,我看见自己。
头发有点乱,眼圈有点黑,外套是深蓝色的,胸口还别着那个以前的技术部工牌。
我没摘。
电梯到了三楼。门一打开,一股烟味扑面而来。
技术部的灯全亮着。屏幕的光映在一张张疲惫不堪的脸上。有人在打盹,有人的杯子空了,有人盯着屏幕发呆,眼睛布满血丝,头发乱成一团。
赵振站在机房门口,手里捏着一杯凉透的咖啡。他看见我,愣住了。
“程斌……”
我没理他,直接走进机房。
机房里的温度比外面低好几度。空调开着,嗡嗡地响。十几台服务器的指示灯在闪烁。
沈浩南也在。他坐在角落的一把椅子上,西装皱巴巴的,领带松了,扣子解开了一颗。他看见我,站了起来。
“程工。”
我没看他,直接走到主服务器前面坐下。
键盘上还有一层灰。我随手擦了擦,手指放在键盘上,开始敲。
一行行命令跳出来。屏幕上闪过绿色的字符。
我敲得很快。不用查手册,不用查阅资料。这些代码太长在我脑子里,每个接口、每张表、每条路径。
六行。
我敲了六行命令。
屏幕上弹出一行提示:缓冲区已清理。
第二行:通信通道重建中。
第三行:通信通道重建完成。
第四行:锁定解除中。
第五行:锁定解除完成。
第六行:死锁清除。
屏幕静止了大约三秒钟。
然后一行字弹出来:数据恢复成功。
整个机房安静了。
我看着那行字,手指从键盘上移开了。站起来,转身。
赵振站在门口,一脸不敢相信的表情。
“就……就完了?”
“完了。”
沈浩南走过来,低头看着屏幕。他看了好久,然后转头看向我。
“程工,你刚才敲了什么?”
“核心数据库的三个死锁节点。把它们解开就行。”
“就这么简单?”
“对于懂的人来说,很简单。”
赵振的脸一下子白了。
沈浩南转头看向他,眼神冷得像刀。
“赵振,你不是说你来搞定的吗?”
赵振张了张嘴,什么也没说出来。
沈浩南没再看他。他走到我面前,低头看着地面,沉默了一会儿,才开口。
“程工,你……留下吧。”
“我是被裁的人。”
“那份裁员通知可以作废。”
我看着他,没动。
“沈总,你来公司第一天,说要裁掉整个技术部。你觉得老员工都是累赘。现在你又想让我留下。你怎么保证以后不会又裁我一次?”
“我……”
“系统现在恢复了。但我问一句。”
我看着他的眼睛。
“系统是修好了。你能保证不会再出问题吗?”
沈浩南没说话。
“你不能。因为你不是技术出身。你不懂这个系统,也不懂这个系统为什么会崩溃。你只看到数字,只看到成本。你没看到人。”
我转身,往门口走。
赵振拦住了我。
“程斌,你等一下。”
我停下来。
赵振低声说:“你刚才说的那三个死锁节点……是不是只有你一个人知道怎么解?”
“是啊。”
“为什么我没在交接文件里看到?”
我看着他的眼睛,笑了笑。
“因为我没写在交接文件里。”
赵振愣住。
“这些是我八年前写进去的。那时候连你都不清楚我在做什么。”
我绕过他,走出去。
刚出技术部的门,叶雅洁站在走廊里,手里捧着一杯豆浆。她看见我,笑了一下。
“挺快的。”
“本来就没什么大问题。”
“那你走吧,好好休息。”
我点点头,走了两步,又停下来。
“雅洁。”