我年终奖是零,董事长庆功宴开除制表人,深知我离职,系统便瘫痪
楔子
“你年终奖多少?”方磊凑过来时,林远刚好点开工资条。屏幕上那个数字让他以为自己看错了。零。六个月加班九十七天,零。方磊瞥见他脸色,把自己屏幕转过来——“十八万六”。林远没说话,往下翻了翻绩效评定记录,签字栏里赵敏的名字工工整整,批准人周振国。他关掉页面,打开了一个空白文档,敲下第一行字。今晚庆功宴,他得去。陈默那张表上,他的名字后面,也该是个零。
第一章 零
林远把工资条页面截图保存,然后清空了记事本里刚敲下的那行字。系统架构文档不需要标题,它需要一个不会被发现的位置。
他起身去茶水间,路过赵敏办公室时门虚掩着,里面传来她打电话的声音:“那个表我早就审过了,制表人自己出的错,还想往上报……”林远脚步没停,接了一杯温水回到工位。方磊正跟组里其他人对年终奖数字,一片抱怨声里唯独没人提林远的名字——技术部的人都知道他干了多少活,但没人敢替他说话。绩效评语就挂在内网系统里,白纸黑字,林远扫了一眼就关掉了。“系统运行稳定,无突出贡献。”赵敏的签字日期是1月15日,三天前。
方磊压低声音凑过来:“远哥,我看了绩效排名,你综合分是全部门第一,这个零是不是系统出了bug?”林远摇头,把文档目录拖进一个加密压缩包:“不是bug。评语是人写的,分数是人调的。”方磊还想说什么,林远拍了拍他肩膀:“先干活,晚上庆功宴别喝酒。”
下午五点,林远把压缩包上传到一个只有他知道路径的服务器目录,顺手在系统后台某个角落保留了最后一道验证密钥的激活状态。六年了,磐石从3台服务器扩展到8台核心节点加12台数据库集群,每一行核心代码的注释风格只有他自己能看懂。赵敏说得对,系统确实运行稳定——稳定到他这个架构师在奖金表上被归零。他打开离职申请的空白模板,填了日期,没填理由。
六点半,庆功宴在园区对面的酒店三楼。周振国还没到场,孙文华已经在主桌敬了一圈酒。林远被安排在技术部那桌,方磊旁边。陈默坐在财务那桌,手边放着一摞打印好的分配表。林远注意到那摞纸的第一页右下角有一行小字,隔着几张桌子看不太清,但那个位置通常是制表人核验栏。
周振国到场时掌声响了半分钟。他举杯致辞,讲去年营收增长四成,讲云集平台日活破千万,讲在座各位都是功臣。林远把酒杯端起来又放下。周振国讲到“公司不会亏待任何一个奋斗者”的时候,陈默从财务那桌站了起来。
“周总,分配表有错误。”陈默声音不大,但宴会厅音响把他的话清晰地播了出来,“技术部林远的年终奖测算以部门绩效第一的基数计算,应为三十八万六,但制表流程中被人为修改为零。修改痕迹在表上有记录。”
赵敏立刻站起来:“陈默,你坐下。”
“表是我做的,我能确认数据被改过。”陈默把那摞纸翻开,指着其中一页,“修改人签字栏是空的,但操作账号和IP都有日志。周总,这个表发出去之前被人动过。”
周振国脸上的笑收了。他看了赵敏一眼,又看回陈默:“你说是谁改的?”
“系统里没显示姓名,只显示了操作时间,1月15日下午四点二十二分,比我完成制表晚了三个小时。”
赵敏开口了:“陈默,你入职一年半,分配表做了几次?年终奖计算规则你吃透了吗?自己出了错就往系统上推?你说有人改,证据呢?监控日志能当证据?”
陈默攥着那张表:“修改记录就是证据。而且我核验过了,林远的名字下面我写了‘无异常’,说明原表数据没有问题……”
“你写了‘无异常’,然后又说被人改了?”赵敏打断他,“这逻辑通吗?周总,陈默的工作能力我们财务部早有反映,这次分配表弄成这样,我觉得是他自己弄错了数据不敢认。”
周振国把筷子往桌上一搁。
“陈默。”他的声音不高,但整个宴会厅安静下来。“今天是庆功宴,你当着全公司的面说这种话,是想让所有人都觉得公司亏待了林远?”
“我不是这个意思——”
“我看你就是这个意思。”周振国站起来,他比陈默高出一个头,“表是你做的,核验是你签的,现在出了事你说有人改了。改的人是谁?你指出来。指不出来,就是你编的。”
陈默张了张嘴,看了一眼赵敏,又看了一眼林远那桌。林远坐在那里没动,手里握着茶杯。
“我指不出来。”陈默说,“但数据修改是事实。”
“好。事实就是你把公司年终奖分配搞砸了。”周振国环视全场,“云创不养吃里扒外的人。陈默,明天不用来了。”
陈默的脸涨得通红,嘴唇抖了两下,没再说话。他把那张表放在桌上,转身往外走。路过林远那桌时,林远看清了表上自己名字下方那行小字——制表人核验:无异常。陈默本可以涂改那个数字,在核验栏里顺手勾个合格,没人会发现。但他没有。他标了真话,然后被开除了。
林远站起来。
“小林。”周振国的声音从主桌传过来,带着刚才那股余威,“你那个系统过年没问题吧?”
林远回头。周振国已经坐下了,手里夹着菜,好像刚才什么都没发生。
“六年都没问题,今年也不会有。”
“那就好。”周振国笑了,筷子在空中点了点,“系统稳定就是你们最大的贡献嘛。比什么都强。”
林远没再说话。他拿起外套,从宴会厅侧门走出去。走廊尽头的落地窗外是园区的灯光,他掏出手机,翻到三天前存的一个号码。猎头上周把电话打到了他私人手机上,当时他还没决定。现在他按下拨号键,响了三声。
“林先生?”对面声音热情。
“我之前说考虑一下。”林远看着玻璃上自己的倒影,“不用考虑了,方便的话明天把合同草案发我邮箱。”
挂掉电话,他往回看了一眼。宴会厅里传来碰杯声和笑声,好像陈默从来没有出现过,好像那张表上林远的名字后面从来没有过一个零。他把手机揣进口袋,手指碰到工牌边缘,硬邦邦的。六年,从三台服务器到二十台集群,磐石系统的每一行代码他都能背出来。但今天晚上他忽然觉得,那些代码比人可靠——至少代码不会在你把命搭进去之后,给你一个零。
方磊追出来的时候,林远已经走到电梯口。
“远哥,陈默那事……”
“我知道。”林远按下电梯按钮,“你回去吃饭。”
“那你呢?”
电梯门开了,林远走进去,转身看着方磊。电梯门合上之前他说了一句话,声音不大,但方磊听清了。
“我明天不来公司了。”
电梯往下沉,林远靠在轿厢壁上,手机又震了一下。方磊发来消息:“系统怎么办?”他打了几个字,删掉,重新打:“系统会好好的。你知道我留了多少保险吗?”发完他把手机息屏,闭上眼睛。明天是1月19日,离职申请该填理由了。
第二章 最后一次巡检
1月19日清早,林远比平时早到了四十分钟。园区里只有保洁阿姨在拖地,电梯间飘着消毒水的气味。他刷卡进技术部,灯还没开全,方磊昨晚留在工位上的半罐可乐已经没了气。林远没坐下,先去了机房。八台核心服务器——R-01到R-08——指示灯规律地闪烁,风扇声平稳得像心跳。他逐台登录,检查了交易队列、结算批处理、数据同步延迟,每一个指标都在正常区间。然后他打开后台,找到一个挂载了三个月的临时调试接口。
这个接口是去年十月为了排查一次缓存穿透问题临时开的,按规范应该在问题解决后四十八小时内关闭。但林远当时发现,这个接口的记录通道能绕过常规审计日志,又不影响生产环境性能。他犹豫了几秒,把关闭命令撤销了,留了下来。此刻他调出接口配置,确认只有自己的密钥才能激活权限,其他人即便知道路径也调不通。他把开放时间设置成永久,然后退出系统。整个过程两分钟不到。
回到工位,方磊已经到了,正对着屏幕啃包子。看见林远,他三两口咽下去:“远哥,你昨天说的‘保险’,是啥意思?”
“没什么,说顺嘴了。”林远打开邮箱,调出离职申请模板。标题、姓名、部门、入职日期,这些他不用看键盘就能敲。离职原因一栏,他停住了光标。屏幕上闪了几下,他打了一行字:个人职业规划调整。打印,签字,塞进人事部信封。
路过方磊工位时,方磊问:“真交啊?”
“嗯。”
“周总那边……”
“不需要他批。”林远头也没回,“人事流程走完就行。”
人事部在十二楼东侧,赵敏的办公室门虚掩着。林远敲了两下,推门进去。赵敏正在涂护手霜,见是他,手上动作没停,嘴角先弯了:“小林,这么早?”
林远把信封放在她桌上。赵敏看了一眼信封上的“离职申请”四个字,护手霜的盖子慢慢旋上。她没有拆开,而是歪了歪头:“想好了?”
“想好了。”
赵敏拉开抽屉,取出一份交接确认单,边填边说:“你那个系统,方磊能接吧?他跟你四五年了。”语气轻松得像在问中午吃什么。
“能接。”林远说,“我已经把日常运维流程发他了。”
“行。”赵敏在批准人一栏签上自己的名字,字迹圆润,“年前办完,工资结算到下个月十五号。竞业协议周总那边会跟你谈,你等他通知。”
林远点头。赵敏已经把确认单放进了文件夹,低头翻找什么。他没有立刻走,站在办公桌前。赵敏抬头,笑容标准:“还有事?”
“昨天那张年终奖表,”林远的语气没有起伏,“绩效评语是您签的字。”
赵敏的笑容纹丝不动:“公司有公司的评定标准。系统稳定运行,确实没有突出贡献这一项——这是制度,不是针对谁。”她把“制度”两个字咬得清楚,“你要是觉得委屈,可以走申诉流程,不过年前时间紧。”
“不用。”林远说,“我就是问问。”
他转身出门时,赵敏的声音从身后追过来:“小林,外面机会多,好好选。”
林远没接话,顺手带上了门。
走廊尽头靠近茶水间的地方,他看见一个熟悉的身影。陈默坐在走廊长椅上,手里捏着一沓表格,工牌已经摘了,面前的纸杯里水没动过。他看见林远,站起来的动作有点急,膝盖撞到长椅扶手,闷响了一声。
“林哥。”
“手续还没办完?”
“赵总监让我今天来清账。”陈默苦笑了一下,“昨天被开,今天回来结工资,挺有效率的。”他看了一眼手里的表格,压低了声音,“林哥,那张年终奖表……你那一栏,原本我是填了数字的。”
林远看着他,没说话。
“赵总监让我改的。她说系统平稳运行是本职工作,年终奖那一栏填零,理由写‘无突出贡献’。”陈默语速快起来,像是憋了一整夜,“但我改完发现对不上——我核过账,你带的项目,光去年下半年给公司省下来的服务器扩容预算就接近两百万,还不算架构优化带来的交易承载量提升。系统那几个月扛了多少峰值流量,运营那边有记录。她让我改的是个死数,和实际贡献根本没关系。”
“那你为什么又改回来了?”
陈默深吸一口气:“因为我是做数据的。数据要对得上账。改完之后整个表格和系统产出对不上,我看不过去。”他顿了顿,“后来周总在宴会上问,我说了实话,就成这样了。”
林远沉默了几秒。茶水间的饮水机发出咕噜一声,有人从走廊那头走过来,皮鞋声很响。林远掏出手机:“加个微信。”
陈默愣了一下,连忙摸出手机扫了码。林远看着他:“工作的事,年后再说。你先把手头的账结清楚。”
“林哥,你要走?”
“嗯。”林远把手机揣进口袋,“这几天我做最后一次巡检,把该交的交了。”
陈默张了张嘴,最终只说:“那你保重。”
林远回到技术部,方磊已经把他的离职消息传开了。几个同事围过来,有人递了杯咖啡,有人问去哪儿,林远一一应着,语气和平时没有区别。等人散了,他坐到工位上,打开系统后台,开始做交接巡检。第一件事,他将八台核心服务器的运行模式预案手动切换至维护状态——这是标准的离职操作,确保后续维护者能安全调整参数。第二件事,他把数据库集群的自动切换脚本写入定时任务,设定为每小时一次,看起来是常规备份策略的补充。
但这两项操作有一个共同的前提:切换脚本和服务器维护模式的变更指令,都需要通过一个独立验证模块来执行。这个模块的密钥储存在临时调试接口的加密通道里,而通道的访问权,六年来只授权过一个人。
方磊凑过来,屏幕上闪过一行行日志。“远哥,这些定时任务要不要写个文档?万一年后……”
“先按现有流程跑。”林远敲完最后一行配置,按下保存,“年后我再整理一份完整的。”
方磊点头,没再追问。他知道林远做事的风格,说年后整理,那就一定会整理。但这一次,林远没有告诉他,这最后一份文档,需要密钥才能解密。而密钥的有效期,被林远设置成了一个月后的零点。
午饭时间,林远独自去楼下便利店买了饭团。结账时手机震了一下,是猎头发来的合同草案,薪资数字很漂亮。他滑掉邮件,翻开日历。1月22日是周五,距离今天还有三天,但他给自己留的时间只有两天——21号下午之前,所有的交接必须表面上做完。
他咬了一口饭团,冷硬的米粒在嘴里散开。六年,从三台服务器到二十台集群,从零到日均百万级订单。他设计“磐石”的时候,每一个故障预案都写了双保险,每一个数据节点都做了镜像。唯独自己的位置,他没有留备份。
回到机房,他站在R-01面前,手掌贴在冰凉的机柜门上。指示灯规律地跳着,像什么都没发生过。林远从口袋里掏出工牌,看了看上面自己的照片。六年前的照片,头发比现在多,眼神比现在亮。
他把工牌翻过来,背面贴着一张小小的便签纸,是陈默昨天在宴会厅递上来的那张表格的缩影。上面的数字被涂改过,但用铅笔涂的,在灯光下能看出原来的笔迹,一个六位数。
林远把工牌收回口袋,掏出手机给方磊发了条消息:“明天上午十点开个全组会,把年后值班表定下来。”
方磊秒回:“收到。远哥,你还能待到年后?”
林远打了两个字,发送。
“待不住。”
第三章 退场
一月二十二日,周五,小雨。
林远七点四十分到公司,比平时早了二十分钟。停车场空荡荡的,只有清洁阿姨的电动车停在角落里。他刷卡进楼,保安老张从值班室里探出头:“林工,今天这么早?”
“最后一天,收个尾。”
老张点点头,没多问。公司上下都知道架构师要走了,茶水间里传了三天,版本各异,但核心一致:年终奖零蛋,换谁都得走。
林远进机房的时候,空气里还残留着昨晚的凉意。他打开R-01到R-08的巡检终端,逐台看过去。CPU负载百分之三十七,内存占用百分之六十二,磁盘阵列健康度百分之九十八。数据库集群十二个节点全部在线,主从延迟零点三毫秒。一切正常,正常得像一台刚保养过的机器,看不出任何人在三天前动过手脚。
他调出系统日志,翻到最后一页。昨晚凌晨两点十七分,临时调试接口有过一次访问记录,IP指向他自己的办公电脑。那是他在写最后一行定时任务配置时系统自动记录的,他没有清除这条痕迹。没必要,反正密钥在他脑子里。
巡检结束,林远在值班日志上签了名,签完才发现这是六年来的最后一次。他把笔搁下,盯着那个签名看了几秒。字有点歪,笔油也不太均匀,像是不太适应这最后一笔。
九点半,方磊到了。技术组的人陆续进来,围在会议室里。林远把年后值班表投影出来,逐行过了一遍。谁初几值班,谁负责紧急响应,谁盯监控告警,清清楚楚。方磊在底下记笔记,笔尖戳得纸面沙沙响。
“远哥,初五那个班要不要我来?”方磊抬头,“你家在外地,多待两天。”
“不用,按表走。”林远关掉投影,“你们记住一条就行,监控面板上那个‘磐石状态’的灯,只要它是绿的,就别碰后台。有问题看文档。”
方磊张嘴想问什么,又咽了回去。会议散了,林远回工位收拾东西。抽屉里翻出一堆零碎,六年前的工牌挂绳,三年前的优秀员工奖章,去年的项目庆功合影。他挑了几样塞进纸箱,剩下的连抽屉一起推进了垃圾回收区。
东西不多,一个纸箱装不满。林远抱着箱子往外走的时候,走廊里迎面碰上赵敏。人事总监今天穿了件大红色的羊绒大衣,胸口别着工牌,妆容精致得像刚拍完宣传照。
“林远。”赵敏站定,脸上挂着标准的职业微笑,“周总说走之前去他办公室一趟。”
“好。”
赵敏没有让路的意思,往旁边挪了半步,眼神扫过他手里的纸箱:“交接都做完了?方磊那边——”
“交接单签了,系统权限收回申请也提了。”
“那行。”赵敏的笑容收了一分,“周总那边等你。”
林远侧身让过她,往董事长办公室走。赵敏站在原地,手指在手机屏幕上划了两下,像是在确认什么。
周振国的办公室在走廊尽头,门半开着。林远敲了两下门框,里面传来一声沉厚的“进来”。
周振国坐在宽大的红木办公桌后面,面前摊着一份文件。他抬头看了林远一眼,目光在他怀里的纸箱上停了停,没提纸箱的事,用下巴点了点对面那把椅子。
“坐。”
林远把纸箱放在脚边,坐下了。周振国把面前的文件推过来,上面“竞业限制协议”几个字是加粗的黑体。
“走之前把这个签了。”周振国靠在椅背上,语气像在交代一件例行公事,“公司对你不错,六年培养,该有的规矩还是要有。”
林远拿起协议,翻到第二页。核心条款写得明白:离职后一年内不得从事同类业务,不得加入竞争企业,违者赔偿年薪三倍。他翻回第一页,又翻到最后一页,两遍。
“周总,协议上没有补偿金条款。”
周振国的眉头动了一下,很快又平了。“你也没带走公司资产,签这个就是个形式。”
“竞业限制没有补偿金,法律上不成立。”林远把协议放回桌上,“这个我不能签。”
周振国盯着他看了几秒。换作别人,这一盯可能就顶不住了,但林远的目光没躲。周振国忽然笑了一声,声音短促,像从鼻腔里挤出来的。
“行。”他把协议收回去,往抽屉里一塞,“你不签就不签。年后系统要是有什么问题,我找你,你别推。”
“系统在,人不在。”林远站起来,抱起纸箱,“周总,那我走了。”
周振国没接话,手已经摸向了旁边的茶杯。林远转身出门,顺手把门带上了,关门的声响很轻,和这间办公室的厚重格格不入。
电梯口,赵敏还在。她手里多了一个牛皮纸信封,封口处贴了财务部的标签。电梯门开的时候,她把信封递过来。
“你的,N加三。”赵敏的声音压得很低,走廊里本来也没别人,“财务已经贴好了,你签个字就行。”
林远看了一眼信封。从厚度判断,里头是一张支票,九十六万,按他税前月薪乘出来的数字。他摇摇头。
“先放着。”
赵敏的手悬在空中,脸上职业性的微笑终于绷不住了,嘴角往下沉了沉:“林远,这是你的钱,你不拿,财务那边走不了账。”
“那就挂在应付账款里。”林远走进电梯,按下一楼,“回头再说。”
电梯门合上,赵敏的脸在门缝里一闪而过,红大衣像一道被掐灭的光。林远靠在电梯壁上,看着楼层数字往下跳。十二楼,十一楼,十楼。怀里的纸箱很轻,六年的东西就装了这么点,轻得有些荒诞。
到一楼,出旋转门,冷风裹着细雨打在脸上。林远站在台阶上吸了口气,掏出手机准备叫车。屏幕亮起来的时候,方磊的消息弹了出来。
“远哥,你走了?”
“刚出门。”
“孙总——孙文华刚来技术部了,说要接管。”方磊的下一条消息隔了半分钟,“他第一道指令,把你所有的后台权限全部收回。系统管理权限、数据库主账号、还有你那个临时接口的访问权,全收。”
林远看着这条消息,拇指在屏幕上停了两秒。雨丝斜着飘过来,落在手机屏幕上,把字迹洇得有点花。他抬手擦了擦屏幕,打字。
“权限可以收,密钥不行。”
发送。
方磊的回复来得很快:“什么意思?”
林远没有回。他把手机揣进口袋,抱起纸箱往路边走。雨不大,但密,走到出租车停靠点的时候肩头已经湿了一片。他回头看了一眼公司大楼,云创科技的招牌在雨雾里还算清晰,底下那行“让交易更简单”的标语他设计了无数遍接口来支撑,此刻看起来有点陌生。
上车后,司机问去哪儿。林远报了家里的地址,然后闭上眼睛。手机在口袋里又震了两下,他没看。方磊看不懂那句话,没关系,系统看得懂。
此刻在云创的机房里,R-01的指示灯和往常一样跳着绿色。系统后台深处,一条定时任务静静地躺在任务队列里,下一次触发时间是二十四小时后。任务执行的内容写得很简单:校验验证密钥是否刷新。如果刷新了,一切照旧;如果没刷新,触发降速规则的第一级。
降速规则的第一级极其温和,只是把订单队列的并发处理上限从默认值调低百分之五。百分之五,对电商平台来说,几乎感受不到。但这只是开始。
林远靠在出租车后座上,雨刮器有节奏地摆着。手机屏幕又亮了一下,是方磊的最后一条消息:“远哥,你到底留了什么?”
林远想了想,打了六个字。
“年后你就知道。”
他没有点发送,把手机翻扣在膝盖上。车窗外的街景一帧帧往后退,雨下大了,路面泛着灰白的水光。司机调高了暖风,车厢里渐渐暖和起来。林远把纸箱往身边拢了拢,里面那枚优秀员工奖章轻轻碰了一下工牌挂绳,发出一声细微的脆响。
像某种倒计时的第一秒。
第四章 新年快乐
春节前三天,林远把家里彻底打扫了一遍。出租屋不大,一室一厅,客厅角落堆着几个没拆封的纸箱,那是从公司带回来的私人物品。他花了整个下午把代码笔记按年份整理进书柜,六年的积累,笔记本摞起来有半人高。手机搁在茶几上,每隔一阵就亮一下。
第一家找上门的是“优选商城”的猎头,电话里语气急切:“林先生,我们知道您刚离职,方不方便聊一下?”林远说年后再说。猎头不肯挂电话,又说了五分钟优选商城的业务增速和技术投入,末了补一句:“我们CTO想亲自和您谈。”
林远把这事记在了心里,但没给确切答复。第二天,第二家来了,是一家做跨境电商的中型公司,给的title是技术副总裁,对方HR发来一份详细的岗位说明,薪资区间比云创高出百分之四十。第三天,第三家,老牌互联网公司“星联科技”,邀请他去做分布式系统首席架构师,对方技术负责人是个说话干脆的女人,电话里只问了两个技术问题就开始谈薪酬方案。
三家。林远把这三个名字写在一张A4纸上,旁边留了空白做对比分析。优选商城财大气粗,业务增长快,但技术底子薄,去了大概率要从头搭一套,和他过去六年在云创做的事情类似。跨境电商那家给的钱最多,但行业波动大,老板是销售出身,技术话语权有限。星联科技技术氛围好,但架构师岗位不带团队,只是一个高级执行者。
他在纸上又写了一行:云创——技术合伙人+股权,但需要周振国低头。
这行字他没写完整,笔尖在“低头”两个字上停了一会儿,然后把纸翻过去扣在桌上。方磊的消息就是这时候进来的。
“远哥,孙文华今天发了邮件。”方磊截了一张图过来。邮件标题是“关于春节期间系统状态上报的紧急通知”,正文写得煞有介事:为确保春节假期云集平台稳定运行,技术部全体成员须每日远程上报系统运行状态,上报内容包括交易成功率、平均响应时间、服务器负载、数据库连接数等十二项指标。上报时间,每天上午九点前。
“这他妈是过年。”方磊在语音里压着嗓子,“他让我们七天不间断,每天填表。他自己倒好,初一到初五在国外度假。”
林远听完,打字回复:“你就照填。”
“关键是,”方磊又发来一条,“他让我牵头做这个事,每天汇总所有人的数据报给他。我看了,第一天的数据都正常,交易成功率99.97%,响应时间238毫秒,所有指标都在阈值内。”
“你填表的时候,有没有注意到什么?”林远问。
方磊那边沉默了十几秒,然后回:“没有啊,指标都正常。”
林远没有追问,也没有解释。他把手机放下,去厨房烧了一壶水,泡了杯茶。窗外有人在楼下放小烟花,零星几声脆响,年味还没彻底起来。他端着茶杯回到客厅,点开笔记本电脑上一个不起眼的图标。
那是一个本地客户端,界面上只有一个状态指示灯和一串倒计时。指示灯是绿色的,倒计时显示:71小时42分钟。
他盯着那行数字看了几秒,然后关掉了页面。方磊没注意到的东西,他很清楚——上报的十二项指标里,没有一项能反映订单队列的并发处理能力。他那条定时任务已经执行过一次了,把并发上限调低了百分之五。春节期间的订单量只有平时的三分之一,百分之五的降速被低负载完全淹没。交易成功率没变,响应时间没变,服务器负载甚至还高了两个百分点——因为队列堵了,线程池里有几个线程在空转。
一切看起来正常。这正是他设计这套逻辑时的核心思路:让系统在崩溃前,始终保持“看起来正常”的假象。只有当负载重新回到正常水平,积压的问题才会像退潮后的礁石一样露出来。
除夕那天,林远回了父母家。年夜饭吃到一半,手机震了,是优选商城CTO的微信好友申请。通过之后对方直接拨了语音过来。
“林远,我就不绕弯子了。”那人的声音很年轻,语速快,“我们技术团队刚扩到八十人,今年准备做交易中台的彻底重构。你开价,股权、现金、团队规模,都可以谈。”
林远走到阳台上,远处有人在放烟花,炸开的光映在对面楼房的玻璃幕墙上。“谢谢,但我还没想好下一步。”
“你是在等云创回头找你?”对方笑了一声,“我听说你们董事长在庆功宴上开了个财务的人?这种公司还有什么好等的。”
林远没接这话。对方又说:“优选这边随时欢迎你,你考虑好给我电话。”
挂了之后,林远在阳台上站了一会儿。冬夜的风不算刺骨,但站久了还是冷。他回屋的时候,母亲问他工作怎么样,他说还在找,不急。母亲唠叨了两句,说邻居家孩子年终奖拿了多少多少,他没往心里去。
晚上回到家,已经过了零点。手机里方磊发来一张截图,是当天孙文华回复的邮件,只有四个字:“收到,继续。”林远回了方磊一句“新年快乐”,然后打开笔记本。
倒计时还剩四十一小时。他点开系统后台的详细日志,翻到交易队列的历史数据。如果把时间轴拉长看,队列的平均等待时长已经从假期前的零点几毫秒,悄悄爬升到了三毫秒。这个数字单独看毫无意义,但它正在朝着下一个阈值稳步前进。
等春节结束,订单量恢复到正常水平,队列等待时长会突破十毫秒的安全线。到那时,系统的响应延迟会变得肉眼可见,第一批用户投诉将出现在客服工单里。然后是第二批,第三批。再往后,就是那个谁都不愿看到的数字——系统进入降速第二阶段,并发上限被进一步压低,交易成功率开始出现波动。
林远合上电脑,从桌上拿起那张A4纸,在三家公司名字后面各画了一个圈。优选商城那个圈画得最重,笔尖几乎要划破纸面。然后他在“云创”那一栏的空白处,用很小的字写了一行备注:周振国不会找我。至少不会在第一周找我。
他了解周振国。这位董事长做了二十多年生意,最大的本事就是扛住压力不认错。系统出问题,他会先让孙文华想办法;孙文华搞不定,他会找外包;外包也不行,他会开会问责,会发脾气,会把责任推给已经离职的人——陈默、林远,甚至赵敏。只有当他发现所有路都走不通的时候,才会考虑回头。
而这个“所有路都走不通”的时间点,林远估算过。以系统目前的降速节奏,从出现明显故障到彻底崩溃,大约需要三周。周振国的耐心,大约能撑两周半。
所以留给他的时间,其实不多。
林远把纸折好,夹进书柜里那摞笔记的最上面。窗外又有人放烟花,这次离得很近,炸开的声音震得玻璃嗡嗡响。他站在窗前看了一会儿,彩色的光映在天花板上,一闪一闪的。
手机屏幕亮了,是方磊发的朋友圈:一张技术部值班群里的截图,孙文华在群里发了个红包,配文“兄弟们辛苦了,春节坚守岗位”。方磊在群里抢了六块八,发朋友圈吐槽。林远笑了笑,点了个赞。
他关掉手机,坐到书桌前,打开一个空白的文档。标题打了个“节后计划”,下面是第一行字:1. 确认系统降速是否按预期触发。2. 等待方磊或孙文华的求助电话。3. 准备回归条件清单。
写完这三条,他盯着屏幕看了一会儿,又敲下第四行:4. 给陈默打个电话。
光标在那里闪了几下,他保存文件,关机。躺到床上的时候,已经快凌晨两点。远处还有零星的爆竹声,渐远渐疏。他闭上眼睛,脑子里却格外清醒。倒计时还剩三十九小时,系统正在他看不见的地方,按照他亲手写下的规则,一步一步走向那个必然的临界点。
像雪崩前的最后一片雪花,正从山顶缓缓滚落。
第五章 第一块多米诺骨牌
2月5日,正月初八,节后复工第三天。
林远是被手机震醒的。他摸过床头柜上的手机,屏幕上显示七点四十分,方磊的来电。他划开接听,还没开口,方磊急促的声音已经灌了进来。
“远哥,出事了。上午十点的促销活动,订单提交成功率从99.97%掉到了82%,现在还在跌。我查了应用层日志,没有异常报错,数据库连接池也正常,但订单就是提交不上去。”
林远从床上坐起来,声音还带着刚醒的沙哑:“降速从哪个节点开始的?”
“十点零三分,很准时。像被什么东西卡住了。”
林远沉默了几秒。窗外的晨光透过窗帘缝隙照进来,在地板上拉出一条细长的亮线。他想起自己离开前留下的那个临时调试接口,想起那套验证密钥机制——系统会定期校验核心模块的签名证书,一旦证书失效或无法验证,容错机制就会启动,主动限制并发量以防止数据损坏。这是他六年前设计磐石系统时写进底层的逻辑,从未对外文档化过。
“检查一下R-03服务器的校验日志,”他说,“看看是不是密钥过期了。”
电话那头传来键盘敲击声,然后是一阵寂静。方磊的声音再次响起时明显紧绷了许多:“远哥,日志显示‘验证密钥超时,自动切换至降速模式’。这什么意思?”
“字面意思。系统的核心签名证书有一个有效期,到期后如果没能自动续签,安全模块就会判定当前环境不可信,主动降级运行以保护数据完整性。”
“那怎么解决?我重新生成密钥行不行?”
“不行。重新生成密钥需要原始签名证书做根验证,那个证书在我的私人密钥库里,公司没有备份。”
电话那头又是一阵沉默。林远听见方磊深吸了一口气,声音里压着难以置信:“远哥,你走的时候没交接这个?”
“交接清单是赵敏列的,她只要求移交日常运维权限和监控账号。核心签名证书不在她的认知范围内,我没主动提,她也没问。”
方磊没有继续追问。他太了解赵敏了,那位人事总监做交接时只关心“哪些账号密码要收回”,至于系统底层机制——她连磐石用什么数据库都不知道。
“那我现在怎么办?”
“先上报孙文华。”林远顿了一下,“他是副总,负责运营,系统故障在他管辖范围内。”
“孙总根本不懂技术。”
“所以他需要供应商。”
挂断电话后,林远没有立刻起床。他靠在床头打开笔记本,登录了一个自己搭建的监控后台——这是他离职前保留的最后一个只读权限接口,赵敏不知道,周振国更不知道。屏幕上跳动着云集平台的实时交易数据:订单成功率83.2%,还在跌。降速模式正在按他预设的梯度往下压,每十五分钟释放一轮新的限制。
他的手放在键盘上停了一会儿,最终只截了一张图存进本地文件夹,然后合上电脑。
上午十一点,方磊出现在孙文华办公室门口。
孙文华正在打电话,看见方磊脸色不对,匆匆挂了。“怎么了?”
方磊把校验日志打印出来放在他桌上:“孙总,系统核心签名证书过期了,导致自动降速。修复需要原始证书,但公司没有备份。”
“那你找林远要啊。”
“联系过了。他说证书在他的私人密钥库里,属于个人资产,不在公司交接范围内。”
孙文华皱起眉头,显然没理解这件事的性质:“那就找供应商。系统是他们做的,他们总该有办法。”
方磊欲言又止,最终只说:“我这就联系。”
供应商的答复在一个小时后通过邮件到达:磐石系统属于云创科技完全自主知识产权的定制开发项目,供应商仅提供基础硬件运维支持,无权限访问核心模块,无法协助修复签名证书问题。邮件末尾还加了一句:“建议联系原系统架构师。”
孙文华看完邮件,把手机往桌上一扣,骂了一句脏话。他在办公室里来回走了两圈,然后做了一个决定:重启R-03服务器。
方磊在电话里听到这个指令时愣了一下:“孙总,重启可能会导致——”
“先恢复再说!促销活动还在跑,每多一分钟都是钱。”
重启命令下达。R-03服务器在中午十二点十七分转入重启流程,十二点二十三分重新上线。奇迹般地,订单成功率在十二点半回升到了97%。孙文华舒了一口气,在群里发了条消息:系统已恢复,兄弟们辛苦了。
方磊看着监控曲线,眉头没有松开。他知道这不是修复,只是重置了计时器。果然,下午两点四十分,降速再次触发。这一次订单提交成功率直接掉到了78%,比上午还低。
更麻烦的是,降速模式出现了连锁反应——校验失效不仅限制订单模块,还波及了库存同步和支付回调。有用户发现自己下单后库存没有锁定,同一件商品被重复购买。
下午三点,客服部门开始接到投诉电话。
下午五点,投诉量突破一百。
晚上七点,周振国的电话响了。
他正在家里吃饭,看了眼来电显示,是云集平台的一个大卖家,月流水过千万的那种。对方语气很冲:系统卡了一天,订单成交率掉了两成,损失谁赔?
周振国压着火气安抚了几句,挂断电话后立刻拨给孙文华。孙文华支支吾吾说了事情经过,提到“证书”和“林远”,周振国沉默了三秒。
“你现在在哪?”
“在公司。”
“系统现在什么情况?”
“还在降速运行,方磊他们在盯着,但……没法修。”
周振国挂断电话,翻开通讯录找到林远的号码。这个号码他存了六年,几乎没有主动拨过——技术上的事他从来不直接管,那是孙文华的职责。他也向来看不上林远那种闷头做事不出声的性子,觉得不够活络,不会来事。可现在他盯着屏幕上“林远”两个字,手指悬在拨号键上方。
时间已经是晚上十点二十三分。
他按下了拨打。
嘟声响了很久。久到周振国以为对方不会接了,电话那头才传来一个平静的声音:“周总。”
“小林,”周振国尽量让自己的语气听起来像平时一样从容,“系统有点小问题,明天来公司看看?”
电话里安静了两秒。然后林远的声音不紧不慢地响起,每个字都很清晰:“周总,我已经不是公司员工了。”
周振国握着手机的手指收紧了一下。他听得出这句话的分量——不是推脱,不是讨价还价,只是一个简单的事实陈述。一个被他亲手批准、亲手送走的员工,在系统出事的时候,确实已经没有义务回来了。
“我知道,”周振国的声音低了一些,“但系统是你建的,你最熟悉。就当帮我个忙。”
“周总,我离职的时候,交接清单是赵敏定的。我该交的都交了,系统现在的状况,责任不在我。”
周振国沉默。电话两头都没有声音,只有轻微的电流杂音。过了十几秒,他才开口,语气里第一次带上了某种不确定:“那你说,这事怎么解决?”
“具体的技术问题,我可以给方磊提供一些思路。但让我回公司处理——周总,我需要先想清楚。”
“想清楚什么?”
“想清楚我回去的身份,和我回去之后能做什么。”
周振国听懂了。他握着手机站在自家书房里,窗外是城市灯火,书房墙上挂着他和历任领导的合影,每一张都在提醒他二十年来他在这座城市积累的地位和面子。可现在,面子解决不了系统的故障,解决不了明天还会跌的订单成功率,解决不了大卖家索赔的电话。
“你考虑一下,”他说,“明天给我答复。”
“好。”
电话挂断。周振国看着手机屏幕暗下去,忽然觉得书房里有点闷。他拉开窗帘,冬夜的冷风灌进来,他打了个寒战,却没有关上窗户。远处有几栋写字楼还亮着灯,其中一栋就是云创科技的办公楼。此刻那栋楼里,方磊和孙文华还在对着无法修复的系统发呆。
而在城市的另一头,林远放下手机,重新打开那台笔记本。监控后台的数据仍在跳动——订单成功率76.8%,降速仍在继续。他在那个名为“节后计划”的文档里,把第二项的“等待方磊或孙文华的求助电话”后面打了一个勾,然后在第三项“准备回归条件清单”下面,敲了一行新的字:
身份:技术合伙人,不是员工。
他保存文档,关掉屏幕。窗外的夜色很浓,远处的写字楼灯火像散落在黑绒布上的碎金。林远站起来走到窗前,手插在口袋里,看着那片灯火最集中的区域。他知道,系统故障只是第一块倒下的多米诺骨牌,后面还有更多——更多周振国从未想过、赵敏从未准备、孙文华从未理解的连锁反应,正在他亲手编写的代码逻辑里,一个接一个地醒来。
第六章 谁能修
2月8日早上九点,云创科技大会议室的门紧闭着。
周振国坐在长桌一端,面前摊着一份打印出来的订单数据报表。从2月5日到2月7日,三天时间,云集平台的订单提交成功率从99.97%一路跌到了83%,然后在这个数字上反复震荡,像一条垂死的心电图。累计异常订单超过四万笔,大卖家“维美家居”已经发来第三封索赔函。
“谁能告诉我,到底怎么回事。”周振国把报表往桌上一摔。
方磊坐在长桌另一侧,黑眼圈很深。他和技术部五个人从6号下午开始排查,已经连续工作了两天两夜。“周总,代码本身没有报错。数据库集群状态正常,服务器负载也在阈值范围内。我们逐行核对了最近一次代码提交记录,最后一次正式更新是去年11月,林哥做的缓存策略优化,逻辑上没有问题。”
“逻辑上没问题,那订单为什么失败?”
方磊沉默了两秒:“问题可能不在代码层面。磐石系统的运行机制里有一套内部的风控降速逻辑,当它检测到特定条件时会自动限制交易吞吐量。但这个逻辑的触发阈值和解除条件,只有它的设计者知道。”
周振国皱眉:“你是说这系统是故意在降速?”
“可以这么理解。但这不是故障,是设计好的保护机制。”方磊翻开自己的笔记本,“系统在自我保护,用降速来避免更大范围的崩溃。只不过这种保护机制一旦启动,常规运维手段停不下来。”
孙文华插话:“那就找人来修。全国做电商系统的公司多得是。”
“孙总,”方磊看向他,“我和技术部五个人花了三天,连磐石系统的完整模块依赖图都画不出来。这个系统的核心架构是林哥一个人设计的,六年时间迭代了几十个版本,模块之间的调用关系有上千条,没有完整文档,我们日常运维只是按照操作手册执行,相当于只会开车不会修发动机。”
会议室安静了几秒。
赵敏合上面前的本子,语气稳当:“周总,我建议找专业的外包公司做系统重构。”
周振国看她一眼:“重构?”
“现在这套系统已经成了黑箱,与其在里面找问题,不如推倒重来。我联系了三家公司,最专业的那家做过好几个头部电商平台,他们评估后报价是三百万,工期四个月,完成整个系统的重新搭建。”
方磊抬起头,表情像是听到了什么荒谬的事:“赵总监,四个月?云集平台现在每天的损失已经超过百万。四个月后这个平台还在不在都是问题。而且磐石系统里有六年积累的用户行为数据和风控模型,重新搭建等于把这些全部清零。”
赵敏皱眉:“那你说怎么办?”
方磊没接她的话,看向周振国:“周总,外包公司的人昨天来看过代码,他们说的原话是——这个系统是好几个人写了六年,核心逻辑完全看不懂。这不是钱的问题。”
周振国的手指在桌面上敲了两下。
“所以,”他的声音沉下来,“你们的意思是,整个公司,没有一个人能修?”
方磊犹豫了一下,还是说了实话:“核心逻辑只存在于林哥一个人的脑子里。我们日常能做的,只是在他的框架内执行既定操作。系统真出了底层问题,只有他能判断,也只有他能修。”
周振国靠在椅背上,目光从方磊移到孙文华,再移到赵敏。孙文华避开了他的视线,低头翻着什么文件。赵敏的表情没什么变化,但她手里的笔在笔记本空白处画了两道没有意义的线。
“那把他请回来,要多少钱?”周振国问。
赵敏接话很快:“他原来的年薪是八十万,加上年终奖包,估计要一百多万。而且他刚离职不到一个月,回来肯定要谈条件。”
她没提林远年终奖为零的事。那份评定表是她主导做的,理由写的是“系统日常运行稳定,无突出贡献”。
周振国沉默了片刻:“你联系他。”
赵敏点头,拿出手机当众拨了林远的号码。会议室里所有人都听着。
嘟了两声,然后被挂断。
赵敏面色微变,又拨了一次,依旧是挂断。她放下手机,改发信息。手指在屏幕上敲了几行字,她特意把手机侧了侧,不让旁边的人看到屏幕内容。信息发出去后,她把手机扣在桌面上,说:“等他回复。”
二十分钟后,林远回了消息。
赵敏看着屏幕上那行字,表情终于有了一丝裂缝。她把手机递给周振国:“他回复了。”
周振国接过来看。屏幕上只有一行字,干净利落——
“我需要周总亲自给我打电话。”
周振国把手机放在桌上,半晌没说话。这行字里没有商量,没有条件罗列,甚至连一句客套都没有。只有一个明确的要求:你来找我,当面谈。
那天下午,方磊带着团队继续排查。他在服务器日志里发现了一个规律:每天凌晨两点到四点,系统会自动进入短暂的恢复窗口,订单成功率短暂回到95%以上,然后再次下降。这个窗口的起始时间精确到秒,像是某个定时任务在执行。他把日志时间戳拉出来对比,发现从2月5日第一次故障那天起,这个窗口每天缩短几分钟。
方磊把数据拿给周振国看:“周总,这个降速是递增的。按照这个曲线,大约二十天后,系统会进入完全停滞状态。”
周振国盯着那张趋势图,曲线陡峭地向下延伸,尽头几乎贴着零轴。
“完全停滞是什么意思?”
“意思是订单提交、支付回调、库存扣减这些核心环节全部停摆。云集平台会变成一个只能浏览不能交易的死站。”
周振国攥着那张纸,指节发白。他拿起手机,翻到林远的号码,拇指悬在拨号键上方。赵敏上午那通被挂断的电话和那条只有一行字的信息,像两记无声的耳光。
窗外的天色正在暗下来。办公区里,技术部的灯还亮着,方磊他们还在试图从那堆看不懂的代码里找到一线生机。孙文华带着运营团队在做应急预案,但所有人都知道,对于一个电商平台来说,系统停摆意味着什么。
晚上十点四十七分,系统第二次大规模降速。
方磊在技术部的群里发了一条消息:订单成功率67.3%,支付回调延迟超过四十秒,维美家居已经切走了一半的流量。
周振国站在自己办公室的窗前,看着手机屏幕上赵敏转来的这条消息。他身后的办公桌上摊着那份三百万的外包报价单,还有方磊画的那张趋势图。办公桌对面的墙上挂着他和历届董事会成员的合影,照片里的他意气风发。
他翻开通讯录,找到林远的名字。拇指按下去,拨号。
嘟——嘟——
第一声铃响的时候,周振国在玻璃窗的反光里看到了自己的脸。五年了,他第一次主动给一个下属打电话。而这个下属,二十天前刚被他用“离了谁系统都能转”这句话送走。
第二声铃响。
远处那栋写字楼里的灯光仍然亮着。周振国知道那束光下面,方磊和孙文华还在守着正在变慢的系统。
第三声铃响。
电话接通了。
第七章 低头
电话接通了,听筒里先传来的是周振国不太自然的笑声。
“小林啊,还在忙?”
林远站在自家阳台上,夜风灌进领口。楼下街道冷冷清清,远处高架上的车灯连成断续的线。他把手机从右手换到左手,没有接话,等了两秒才开口。
“周总,系统的事您了解多少?”
周振国顿了一下:“就是有点慢。方磊他们已经在处理了。”
“不是慢。”林远的声音很平,“是每天都会比前一天更慢。方磊给您看的那张趋势图,尽头贴着零轴。按目前的降速曲线,二十天左右,云集平台会完全停滞。订单提交、支付回调、库存扣减,全部停摆。”
电话那头只剩呼吸声。
“您让人收了我的权限,但没换掉我设计的验证机制。”林远继续说,“磐石系统每天凌晨两点需要一次授权刷新,这套刷新密钥和验证流程是我六年前写的。系统里所有定时任务、监控快照、数据一致性校验,都挂在同一个授权链上。您让方磊接管了后台管理面板,但他没有验证密钥的生成权限。所以每天凌晨的刷新实际上没有执行。系统在靠存量令牌硬撑,每撑一天,令牌池就少一格。”
“什么意思?”
“意思是系统正在用倒计时的方式自杀。”
周振国沉默了很久。听筒里偶尔传来纸张翻动的窸窣声,像是他在翻那份趋势图。
“你要多少钱?”周振国的声音比平时低了许多。
林远没有立刻回答。他想起六年前刚来公司时,周振国在年会上拍着他肩膀说“小林是咱们云创的定海神针”。那天周振国喝了不少酒,笑容真诚。后来公司越做越大,周振国的办公室换了三面落地窗,见林远的次数越来越少。直到年终奖为零那天,他在走廊里碰见周振国,对方只点了点头。
“我不要钱。”林远说,“我要三件事。”
“说。”
“第一,陈默回来。职位由我定。”
周振国呼吸重了:“那个制表的?”
“他制表没错。他发现了问题,向您提出来,您在庆功宴上当众开了他。周总,这个人我要用。”
电话里沉默了几秒。“第二。”
“第二,赵敏不再参与技术相关的任何决策。技术系统的权限、流程、人员安排,人事不得干预。”
“赵敏是人事总监……”
“以前是。”林远打断他,“现在也是。但她的权限边界需要重新划定。周总,她怎么评的我的年终奖,您比我清楚。”
电话那头传来一声闷响,像是周振国的手拍在了桌面上。但他没有反驳。
“第三呢。”
“第三,技术系统重建方案由我全权负责。包括年终奖评定制度的改革。谁拿多少,由技术贡献和系统稳定性指标说话,不由人事部门凭印象打分。”
“你要改革年终奖制度?”
“对。不然陈默回来了,明年还是零。”
周振国没有立刻答应。他说要考虑。挂电话前,他问了一句:“系统还能撑多久?”
“第二十天是极限。方磊那张图上的数据是准的。”
电话挂断后,林远在阳台上又站了一会儿。对面那栋楼还有几户亮着灯,他在那些光里看到了自己的影子。十五天前他提交离职申请时,赵敏当场就批了,速度快得像是怕他反悔。方磊那天晚上给他打电话,声音闷闷的,说“林哥,你把磐石留在这儿了”。
他把磐石留在了那儿。但磐石的魂在他脑子里。
同一时间,云创科技办公楼里,周振国把赵敏叫进了办公室。门关上的声音很重,外面办公区的几个员工互相对视了一眼。
“赵敏,系统的事你打算怎么处理?”
赵敏还带着下午被挂电话的余悸,强撑着说:“外包方案已经报过来了,三百万全面重构,两个月交付……”
“两个月?”周振国把方磊那张趋势图推到她面前,“二十天系统就死了。两个月以后你打算让云集平台变成一个墓地?”
“那林远……”赵敏咬了咬嘴唇,“他这是要挟公司。三个条件,哪一个合理?陈默一个刚来一年半的制表员,他说要就要。赵……我参与技术决策是人事的职责范围,他凭什么剥夺?还有年终奖制度,那是管理层权限,他一个架构师……”
“那你来修系统?”
周振国的声音不大,但办公室瞬间安静了。赵敏张着嘴,嘴唇动了动,没发出声音。窗外夜色沉沉,技术部的灯还亮着,方磊他们还在加班,试图用各种方式延长系统的存活时间。但没有一个人能解开林远设计的授权链。
赵敏低下头,眼圈泛红,但没有眼泪掉下来。她知道现在哭没有用。周振国看着她,眼神里第一次露出明显的失望。
“你去吧。外包方案先放着。”
赵敏走出办公室时,在门口停了一下。她回头看了周振国一眼,嘴唇抿成一条线。周振国没有看她。
那一晚,方磊在技术部群里发了最后一条消息:订单成功率61.8%,维美家居全部切走,安踏和另外三家商户在谈迁移。明天早上孙文华要开运营紧急会。
林远看到这条消息时已经躺下了。他盯着天花板,想起磐石系统第一次上线时,周振国站在他身后,看着监控大屏上跳动的绿色指标,说“小林,这就是咱们的命根子”。那时候周振国还叫他小林,不叫林远,更不叫“架构师”。
第二天上午十点,林远的手机响了。来电显示是一个陌生号码,接起来对方声音很热情。
“林远先生?我是优选商城的CTO,郭明。上周我们通过邮件。”
林远想起来了。春节那会儿有三家公司的面试邀约,优选商城是其中之一。对方开出的条件是他在云创的三倍,但他一直没回复。
“郭总,你好。”
“我也不绕弯子。你在云创的事我听说了,年终奖为零,这种事放到哪儿都说不过去。”郭明笑了一声,语气诚恳,“你开价。年薪,期权,团队规模,只要你来,条件你定。”
林远走到窗边。楼下小区里有个老人正在遛狗,绳子牵得松松的,狗跑几步回头看一眼主人。阳光照进来,落在他桌上的离职证明上。那上面写着“因个人原因申请离职”,盖章日期是1月22日。
“郭总,我考虑一下。这两天给你答复。”
“好。我等你消息。不过林远,优选这边技术团队四百人,基础设施早就建好了,你过来直接就能上手。不用一个人扛六年。”
一个人扛六年。郭明这句话戳到了什么。林远挂了电话,看着通讯录里“周振国”三个字。昨天那通电话里,周振国说“考虑考虑”,没有答应,也没有拒绝。但他知道周振国没有别的选择——方磊修不了,外包看不懂,孙文华不懂技术,赵敏只会推卸责任。
整个云创,能救磐石的只有一个人。
而那个人知道磐石的所有秘密。包括那个每天凌晨两点休眠的验证机制,包括R-01到R-08那八台核心服务器上每一行代码的脾气,包括六年来他写下的所有故障处理笔记——全都在他脑子里,公司服务器上只存着备份,没有完整文档。
林远打开电脑,在搜索栏里输入“优选商城 CTO 郭明”。百度百科显示这个人四十二岁,清华计算机系毕业,在硅谷工作过八年,回国后先后在两家头部电商平台担任技术负责人。简历漂亮得无可挑剔。
他又点开云创科技的官网。首页上“云集”的Logo还是六年前他刚来时的那版,配色土气,一直没换过。周振国说没必要花钱改这个,不如把预算花在服务器上。那会儿他们穷,买不起好的冗余设备,林远就用两台旧服务器做了主备切换,硬生生扛过了第一年的双十一。
那两台旧服务器的编号是R-01和R-02。后来公司有钱了,加到了八台。但R-01还在跑,硬盘换过三次,电源模块烧过一次,被林远修好了。那台机器上藏着他当初写的第一版验证密钥生成器,后来迭代了无数版,核心逻辑一直没变。
他的手机又响了。方磊打来的。
“林哥。”方磊的声音嘶哑,像是熬了一整夜,“那个临时调试接口……我们查后台日志,发现2月5号第一次故障那天,有人用你的旧账号登录过一次。是不是你?”
“不是我。”
“那会是谁?”
林远想了想。他的旧账号在1月22日离职当天已经被赵敏注销了。但注销的是前台权限,后台的验证密钥链上还挂着那个账号的授权凭证。有人用这个凭证登录了,触发了第一轮降速。
“方磊,那个账号是赵敏注销的。你查一下1月22号到2月5号之间,谁动过权限管理后台的操作日志。”
电话那头安静了几秒。“你是说……”
“我什么都没说。你查了再说。”
挂了电话,林远站在窗前。对面那栋楼的灯光已经灭了,白天看起来灰扑扑的,没什么生气。他知道方磊会查出来什么——那个临时调试接口是他留给自己的后路,本意是在万不得已时远程查看系统状态。但他离职那天,接口的访问密钥就被系统自动转存到了一个共享文件夹里。那个文件夹的权限……赵敏也有。
他拿起手机,翻到郭明的号码,看了很久。然后他按了返回键,回到通讯录页面,周振国的名字排在第一个。
他没有拨出去。
他在等周振国的第二个电话。
第八章 第三阶段
二月的杭城湿冷,云创科技的办公楼里却热得发闷。空调开到了二十八度,会议室的玻璃幕墙上蒙着一层水雾,外面的人影都成了模糊的色块。
林远坐在家中的书桌前,电脑屏幕上开着方磊发来的一份后台日志截图。他的手机压在键盘旁边,每隔几分钟屏幕就亮一次,全是方磊发来的新消息。
“订单提交成功率跌到六十七了。”
“首页间歇性挂,前端报502。”
“客服那边的投诉系统已经排队排到九百多号。”
“孙总把技术部所有人叫去开会了,问到底怎么回事。没人答得上来。”
林远逐条看完,把手机翻了个面。窗外的小区里,有小孩在放鞭炮,噼啪声远远地传过来。春节刚过不久,年味还没散尽,但云集平台的后台已经开始坍缩了。
他点开方磊发来的系统监控截图。R-03到R-08六台服务器的CPU占用率全部飙到了红线以上,数据库集群里有三个从节点已经掉线。这是第三阶段的典型特征:系统不会立刻崩溃,而是以每小时约百分之零点三的速率持续劣化。他在设计降速机制时故意留了这个坡度,不是为了让系统突然宕机,而是给决策层留出足够的时间去感受“不可逆”这三个字的分量。
按这个速度,再过七十二小时,订单处理能力会跌破百分之五十的警戒线。
方磊的微信又弹出来。这次是一段语音,背景里有人在喊“叫孙总签字”。林远点开,方磊的声音又急又哑:“林哥,孙文华说他不能签字,他说他不懂技术,要周总拍板。周总在从上海往回赶的路上,董事会临时通知明天上午九点开特别会议。”
林远没有回复。他打开一个空白文档,把光标移到最上面。
这份文件他从一月二十二号就开始起草了。那天他最后一次走出云创的大门,手里拎着一个纸箱,箱子里装着一盆绿萝和几本技术手册。坐进出租车后,他给方磊发了一条消息:“帮我盯着权限后台的变化。”然后他打开手机备忘录,开始列条款。
第一条,技术委员会独立于人力资源部,年终奖评定由委员会负责。
第二条,所有核心系统必须在三个月内完成文档化,文档与代码同步更新。
第三条,技术核心人员离职需提前六个月通知,交接期间保留全部待遇与权限。
他后来又加了十几条细则,每一条都对应着他在云创六年里遇到的某个具体问题。第六条是给陈默写的:因技术管理原因被解除劳动合同的技术人员,享有优先复聘权,司龄连续计算。第七条是给方磊写的:技术人员的职级晋升不再由直属上级单独决定,需通过委员会答辩。
他打印出来,十一页,钉在书桌旁边的墙上。每天看一遍,改几个字。
现在,他把文档从头到尾读了一遍,按下了保存。
第二天上午九点,云创科技的会议室里坐了十二个人。周振国坐在长桌的主位,领带歪了,头发也没平常梳得整齐。他刚从高铁站赶过来,西装外套上还带着雨渍。
孙文华站在投影幕布前面,手里捏着一张A4纸,上面是他让运营部连夜统计的数据。
“各位董事,情况是这样。”他的声音有点发虚,“从二月五号第一笔交易失败算起,到今天,云集平台的日均订单处理能力下降了百分之四十。首页的间歇性加载失败,导致用户跳出率翻了三倍。客服部门收到的投诉工单,昨天一天是四千七百件。”
他翻了一页纸,咽了口唾沫。
“如果系统不能在本月内恢复,按照目前的趋势预估,二月份的平台总GMV损失将超过两千万。三月份……”
“三月份怎样?”一个穿灰西装的中年男人打断他。这是云创的早期投资人之一,姓黄,占股百分之十二。
“三月份如果还不恢复,平台的商户续约率会受影响。已经有三个头部商户在问我们是不是要倒闭。”
会议室里安静了几秒。黄董事把笔往桌上一扔:“那还等什么?把系统废了,推倒重建。”
孙文华苦笑了一声:“黄总,重建周期至少半年。光是数据迁移和灰度上线就要四个月。而且……”
“而且什么?”
“而且这个系统从底层架构到业务逻辑全是定制化的,市面上找不到能直接替代的方案。外包公司来看过代码,报价三百万做评估,还说接不接手要看评估结果。他们的技术负责人原话是,‘这个系统是好几个人写了六年,中间换过至少三茬人,代码里连注释都是乱的。要重构等于重新做一遍。’”
“那就重新做一遍!”
孙文华不说话了。他看了一眼周振国。周振国从进来就一直没有开口,双手交叠搁在桌上,拇指互相绕着圈。他的手机屏幕亮着,是赵敏发来的消息:“周总,要不要先稳住董事们?我这边有个应急预案可以汇报。”
周振国没有回复她。他抬起头,看着孙文华:“磐石系统的核心架构是谁搭的?”
孙文华愣了一下。“是……林远。从零开始搭的,后面方磊他们只是做业务模块。”
“那他现在在哪?”
会议室里又是一阵沉默。黄董事似乎想到了什么,看了周振国一眼:“老周,你年前是不是把人家放走了?”
周振国没有接话。他把拇指转得更快了。过了几秒,他像是下了什么决心,把手机收进口袋,站了起来。
“今天的会先到这里。系统的事,我来解决。”
他走出会议室,在走廊里站了一会儿。走廊尽头的窗户开着一条缝,冷风钻进来,把他额前的头发吹乱了。他拿出手机,翻到赵敏的号码准备拨过去。手指悬在拨号键上,停住了。
他退出通讯录,打开了备忘录。里面有一条他上个月随手记下的内容,只有四个字:林远,零。
那是他批准年终奖方案那天写的。他自己都不知道为什么当时要记这么一笔。
他把手机装回去,进了自己的办公室,关上门,给方磊打了个电话。
“方磊,你帮我约一下林远。今天晚上,就今天晚上。”
“周总,林哥他……不一定肯来。”
“你就跟他说,我不是以董事长的身份请他。是老周请他吃饭。”
电话那头沉默了很久。方磊说了句“我试试”,挂了。
天目山路上一家不起眼的杭帮菜馆,二楼包厢,只有两个人。周振国到得早,一个人坐在桌边,面前摆着一壶温好的黄酒。服务员进来问了几次要不要上菜,他都摆摆手说不急。六点四十分,包厢门被推开,林远走进来。他穿了件深灰色的夹克,手里拎着一个牛皮纸袋,看起来像是下班顺路过来的样子,虽然他已经一个多月没有“上班”这个概念了。
“坐。”周振国站起来,难得地笑了一下,给他拉开椅子。
林远坐下,把纸袋搁在桌边。周振国给他倒酒,黄酒的热气在两人之间升起来。周振国端起自己的杯子,没喝,先开口了。
“当年是我眼光不行。把你的贡献当成了理所当然。”
林远没有碰酒杯。他看着周振国,目光很平,没什么情绪。
“周总,我不需要道歉。我需要一份有约束力的技术管理协议。”
他把纸袋打开,抽出那沓打印好的文件,放到桌上。文件的订书钉旁边有折痕,翻过很多次了。周振国接过去,翻了两页。字很小,条款很密,每一条后面都有括号标注的注释。
“第一条,成立技术委员会,年终奖由委员会评定。委员会成员由技术部门内部推举,人力资源部只有列席权,没有投票权。”林远的声音不大,但每个字都咬得很清楚,“第二条,建立系统文档化制度。核心代码、部署流程、故障预案必须同步更新,不允许存在只有一个人知道的环节。第三条,技术核心人员离职需提前六个月通知并完成完整交接,交接期间享受在职待遇,交接完成后另算。”
周振国翻到最后一页,看到用回形针别着的两份附件:一份是技术委员会章程草案,一份是核心技术人员名录与交接清单模板。他翻着翻着,停了下来。
“这是你这两天写的?”
“离职那天开始写的。”
周振国的目光停在文件的日期栏。那里写着:初稿完成于1月22日,修订于2月10日。一共改了七版。最后一行是今天早上刚加的,墨迹看起来还有点新。
周振国把文件合上,放在桌上,拿起酒杯喝了一大口。黄酒有点烫,他的眼眶湿了一下,不知道是被热气熏的还是什么。
“陈默的事……”他开口。
“陈默的事我已经跟您提过了。”林远打断他,“他回来,进技术委员会,负责数据审计。如果你同意这一条,我们就往下谈。如果不同意,这顿饭我请,协议我带走。”
周振国的筷子停在半空。他想起今天下午赵敏发来的那条消息,问他“陈默能不能换个地方安置”。他当时回了一句:“林远说一不二,你照办。”现在看来,这句话比他自己想的还要准确。
他拿起桌上的签字笔,在协议最后一页签了名字。笔尖有点涩,他用力划了两下,墨迹才连起来。
“明天,”周振国把协议推回去,“明天上午九点,你来公司,我们开全员会。”
林远接过协议,看了一眼签名,把它重新装进牛皮纸袋。他站起来,拿起外套。周振国叫住他:“你不吃点东西再走?”
“回去改文档。”林远走到门口,停了一下,回头说了一句,“周总,R-01的硬盘再过两周就要满五年了。记得换。”
周振国愣了一下,然后苦笑起来。那台服务器的事,他根本不知道。整个公司,大概也只有林远记得。
第九章 回归的条件
二月十四日早上八点四十,林远把车停在云创科技地下车库的同一个位置。熄火之后他没急着下车,坐在驾驶座上把那份已经签了字的协议又看了一遍。周振国的签名比上次饭局时平稳多了,大概是终于睡了个好觉。
他乘电梯到七楼,刷卡进门。前台小姑娘看到他愣了一下,嘴唇动了动,最后说了句“林总早”。
“还是叫林远。”他说。
技术部的灯已经亮了。方磊站在白板前面,拿着一支马克笔在画系统架构图,旁边围了四五个人。看到林远进来,方磊把笔一搁,喊了声“远哥”,语气里有一种绷了很久终于松开的意思。
林远点了点头,把包放在工位上。电脑开机的时候,他打开后台,输入了那串验证密钥。R-01到R-08八台服务器同时接收到指令,临时调试接口在十五分钟内被逐个关闭。监控大屏上的状态指示从橙色转回绿色,订单处理速度开始爬升。方磊凑过来看了一眼,数据曲线正在快速逼近正常值。
“你那个接口——”
“关了。”林远喝了口热水,“早上先做三件事。你通知技术部所有人,九点半在三号会议室开会。另外,把陈默的联系方式找出来给我。”
方磊没多问,转身就去办了。
九点半,三号会议室坐满了人。技术部加上运维组一共二十三人,椅子不够,有几个人靠墙站着。林远站在投影幕布前面,没有用PPT,就一张白板。
“今天开始我回来了。”他说的很简单,“第一件事,方磊。”
方磊坐在第一排,抬头看着他。
“从今天起,方磊任技术副总监,负责日常技术管理和人员调度。系统架构和核心模块评审还是我来,但日常决策方磊签字就行。”
会议室里安静了两秒,然后有人开始鼓掌。方磊没有站起来,只是用力点了一下头,嘴角绷得很紧。林远知道他在想什么——这个人跟着自己写了四年代码,修了无数次紧急故障,从来不说漂亮话,但每行关键代码里都有他的东西。
“第二件事,”林远在白板上写了“文档”两个字,“从现在起,每个人每天必须留出至少一小时写文档。不是给我看,是给接手你工作的人看。系统暂时不修,先把你们脑子里装的东西倒出来。”
底下有人小声嘀咕。林远听到了,转过身。
“你们觉得系统是靠聪明人转起来的,还是靠制度转起来的?”他扫了一圈,“聪明人也会疲劳,会请假,会离职。制度不会。我要的不是你们现在把代码修好,是下次我出差的时候系统照样跑。”
没人再吭声。方磊带头从桌下抽出一沓空白模板开始分发。
会开完已经十点二十。林远回到工位,拨了陈默的电话。响了两声就接了,那边很安静,像是在图书馆或者还没找到工作的宿舍。
“是我。过来了。”
“现在?”
“现在。技术运营主管,负责数据规范与流程审计,直接进技术委员会。”
陈默沉默了几秒。林远能听到他呼了口气,像是在把什么东西从嗓子里压下去。
“赵总监那边怎么处理?”
“不用管她。周总已经签了协议,技术委员会由我组建,编制和任命我签字就行。你来了第一件事,把去年年终奖评定的全流程日志调出来——原始数据、评定标准、每一个人的打分依据,一样都不能少。”
“是要查她?”
“是要建制度。以后奖金评定必须有数据支撑、有流程记录、有申诉通道。你做审计,就是干这个的。”
电话那头又沉默了一会儿。“我下午到。”
林远挂了电话,打开系统日志开始检查密钥恢复后的各项指标。数据流很平稳,没有异常波动。他翻到数据库集群节点状态页,十二个节点全部在线,延迟控制在两毫秒以内。他花了二十分钟把每个节点的负载曲线都看了一遍。
快十二点的时候,办公室门被推开了。赵敏走进来,手里捏着一份文件,脚步比平时重得多。她站在林远工位旁边,没有坐。
“周总通知我了。”她的声音不大,但每个字都像是从牙缝里挤出来的,“人事调令,行政专员。你是在报复我吗?”
办公室里其他人都在低头忙自己的事,但林远注意到方磊悄悄把椅子转了个角度,面向这边。
林远没有站起来,也没有提高音量。他合上笔记本电脑,看着赵敏。
“赵总监,你做的年终奖表格我看过。”他的语气很平,“你在评定标准里把‘系统架构稳定性维护’和‘行政岗位日常事务处理’放在同一档,权重都是百分之五。这个判断,你觉得合理吗?”
赵敏没说话,手指收紧了。
“磐石系统六年没出重大故障,平均无故障运行时间是一万八千小时。你说‘系统日常运行稳定,无突出贡献’,给零。行政岗位的日常事务处理,你也给了同样比例的权重。你把公司核心技术和普通行政岗的贡献评价画了等号。这是专业判断问题,和技术没关系。”
他停了一下。
“陈默比你专业。他在年终奖发放当天就发现了评定标准里的逻辑错误,并且提出了异议。他入职一年半,比你这套方案更懂什么叫数据逻辑。”
赵敏的脸涨得发白,嘴唇动了动,最后只说出一句:“你知道我是谁。”
“我知道你是周总的外甥女。”林远还是那样平,“所以周总没有一开始就让你走,只是调岗。但如果你觉得周总的关系可以代替专业判断,那你确实不适合管人事。”
赵敏盯着他看了三秒,然后把文件往他桌上一摔,转身走了出去。门被带上的声音比平时大了不少,走廊尽头的玻璃墙都跟着震了一下。
下午两点,陈默到了。他手里就一个双肩包,背包侧面插着一瓶矿泉水。
方磊带他去领了新工牌。陈默把工牌翻来覆去看了两遍,职位一栏写着“技术运营主管”。他把工牌套在脖子上,问林远的第一句话是:“系统日志在哪台机器上?”
林远指了指向南的那排机柜。陈默走过去,拉开椅子坐下,看了一眼屏幕,手指已经放在键盘上了。
下午四点,周振国的助理给林远发了条消息:赵敏提交了辞职信,周总已经批了,没有挽留。
林远回了个“收到”,然后把消息转给了方磊。方磊看了一眼手机,没说什么,继续在白板上画他的架构图。
五点半,林远收拾东西准备走。经过陈默的工位时,那台电脑屏幕上已经打开了好几个日志查询窗口,数据一行行往上滚。陈默头也没抬,空着的右手在便签纸上飞快地记着什么。
“明天再弄。”
“还有两页就好。”陈默说,“我发现评定系统有一个时间戳不对,今天不捋清楚明天就找不到原因了。”
林远站在他背后看了几秒,便签纸上已经写了七行,每一行都是精确的日期、操作人和数据变更。字迹很小,但每个数字都清晰得像打印的。
他拍了拍陈默的椅背,没再说什么,往电梯走去。
电梯门关上的时候,他看了眼手机。方磊在技术部群里发了一张照片——白板上的架构图旁边多了一行字:“文档模板v1.0已上传共享盘,每人每天至少一个小时,方磊负责考核。”
底下有人回了个“收到”。紧跟着又是一串“收到”。
林远把手机揣进口袋。电梯到地下车库,他坐进车里,发动引擎之前又看了一眼后视镜里的电梯口。没有人追出来。
他踩下油门,汇入晚高峰的车流。窗外路灯一盏一盏亮起来,夜色很稠。手机震了一下,是方磊发来的私信:孙文华那边还在管运营,周总没提他的事,要不要动?
林远想了想,回了一句:先不动,让他自己看清楚。系统的事,技术人员说了算,运营配合就行。
方磊回了个“明白”。
林远把手机扔在副驾驶座上,打开车载音响,切到一张老专辑。车开了大约十分钟,他忽然想起一件事,在红灯前拿起手机给方磊又发了一条:R-01的硬盘采购申请明天发出来,走我签字。别再等它满了。
第十章 重建
二月的云创科技,办公区比往常安静了许多。技术部的灯每天亮到晚上十点,但敲键盘的声音变了节奏——以前是急着敲,现在是边想边敲。方磊把那块白板从会议室搬到了技术部正中间,上面除了架构图,还多了一张进度表:磐石2.0,第一阶段,剩余十四天。
林远每天早上七点半到公司,第一件事是打开文档系统,看昨晚每个人提交的文档进度。第一周他定了个规矩,谁负责的模块谁写,写不清楚的地方标注出来,他亲自补。到第二周周三,技术部的共享盘里已经有了四十多份文档,覆盖了磐石系统从交易链路到结算引擎的全部核心逻辑。方磊负责整理索引,每天下班前更新目录,然后在群里发一句:今日新增五份,完成率百分之六十七。
这天下午,方磊拿着笔记本坐到林远旁边,把屏幕转过来。“R-03的缓存层逻辑我写完了,但有个地方卡住了——你当时为什么用双写而不是先写缓存再异步刷库?文档里只有结论,没有原因。”
林远接过笔记本,翻到对应的文档段落,光标停在“设计决策”那一栏,空白。“因为当时数据库集群只有八台,异步刷库在高并发下会丢数据。后来扩到十二台,这个逻辑就没再改过。”
方磊点头,把原因敲进去。敲完抬头看了林远一眼:“这些东西,以前你从来不写。”
“以前是怕。”林远把笔记本推回去,语气平淡,“怕写了别人看懂了,公司就不需要我了。现在想通了,系统应该属于所有人,但维护系统的人应该被尊重。”
方磊的手指顿了一下,没接话,继续打字。屏幕上那行“设计决策”下面的空白被填满了。
当天下午的部门周会上,林远宣布了第二项安排:从下周起,技术部每个人每天必须留出一个小时专门写文档,不算加班,计入当月绩效考核的独立项,权重占百分之十五。有人小声问,如果写不出东西怎么办。林远说,写不出来就说明你自己都没搞懂自己维护的模块,那就是不合格。
会议室安静了两秒。方磊带头说了句“同意”,其他人跟着点头。散会后,林远叫住方磊,让他起草一份《文档贡献度评分细则》,把文档质量、更新频率、他人引用次数都量化进去。方磊问,这个细则要不要先报周总。林远说,技术部内部的事,我来定,报了备案就行。
方磊走了之后,林远打开电脑上的一个加密文件夹,里面是他六年来积攒的全部笔记——服务器部署的每一个参数、每次故障的排查过程、每个报警阈值的调整原因。他把这些笔记按照新模板重新编排,每天整理四个小时,连续做了十一天。二月十五号晚上十点,最后一份笔记编入文档库。方磊在目录里加了一行标注:核心知识库,完整度百分之九十八点六,剩余待补充项为历史验证密钥轮换记录。
林远看到这行标注时正在喝咖啡,他放下杯子,给方磊发了条消息:那个百分之一点四不用补了,是废弃逻辑。
方磊回:好,那就百分之九十八点六封版。
文档库封版那天是二月十六号,星期五。同一天,陈默敲开了林远办公室的门,手里拿着一份二十八页的报告。
“三年的年终奖分配数据,我全部过了一遍。”陈默把报告放在桌上,翻到第五页,“七例明显不合理的评定,全部在技术部门。其中你那一例涉及金额最大,应发三十八万六,实发零。另外六例涉及金额从两万到九万不等,都是技术骨干,评语统一写的是‘系统运行稳定,无突出贡献’。”
林远翻着报告,每一页都是密密麻麻的表格和比对数据。陈默在每一例下面都附了该员工当年的代码提交量、故障响应次数、系统稳定性指标贡献度,旁边用红笔圈出对应的绩效评语。
“这些员工,有三个已经离职了。”陈默说,“还有三个在职,但这一年基本只做维护性工作,没有主动优化。他们心里有结。”
林远合上报告,靠在椅背上想了想。“补发的事,暂时不提。”
陈默皱眉:“他们的钱……”
“钱是小事。”林远打断他,“我要的是以后不再有这种事。你这七例正好是证据,把报告改成议案,提交技术委员会审议。议案的主题是《技术贡献评定标准》,核心是量化指标和评审流程。评定权从人事划到技术委员会,你来做初审。”
陈默愣了一下:“那人事那边……”
“赵敏已经调走了。”林远说,“新来的人事经理还没到位,周总上周批了我一份权限调整申请,技术岗位的绩效初评权已经划过来了。”
陈默拿起报告,翻到最后一页,抬头看着林远:“这份议案如果通过,技术部所有人的年终奖就只能靠数据说话了。”
“对。”林远站起来,走到窗边。楼下的马路正在晚高峰,车灯连成两条反向的光带。“数字不会拍马屁,也不会冤枉人。”
二月二十号,技术委员会筹备组收到了陈默提交的第一份议案。林远以筹备组组长身份签了初审意见:同意,提交委员会全体会议审议。方磊和陈默作为筹备组成员附议。三天后,周振国在议案上签了字,批复只有一行:请技术委员会尽快落地执行。
同一天下午,林远的手机响了。来电显示是一个陌生号码,接起来是优选商城的CTO卢成。
“林远,好久没联系。”卢成的声音很直接,“听说你回云创了,还拿了股权。”
“嗯。”
“那我们之前谈的事就算了。”卢成顿了一下,“不过我想说清楚,优选的技术团队一直给你留着位置,什么时候想换个环境,随时找我。”
林远握着手机,看着窗外。“卢总,谢谢。不过短期内我不会有变动。”
“理解。”卢成笑了一声,“那就以后有机会合作。行业不大,总有碰上的时候。”
挂了电话,林远在电脑上新建了一个文档,文件名“外部联络记录”,把卢成来电的时间、内容和对方意图完整记录,备注栏写了七个字:外部机会,保持联系。然后他把这个文档的权限共享给了方磊和陈默,只读模式。
当天晚上七点,林远在技术部群里发了一条通知:下周一上午十点,技术委员会第一次全体会议,议题三项,请各位提前看材料。
方磊第一个回复:收到。
紧接着是陈默:收到。议案已经打印好了,会议室投影我明天去试。
底下又是一串“收到”。
林远关掉群聊,打开文档系统,找出一份空白的模板,开始写他自己的模块文档。他还欠一份——R-01到R-08八台核心服务器的全量部署记录,这是他六年来唯一没有交给任何人的东西。他敲下第一个标题的时候,窗外夜色已经很沉,办公区只剩下技术部这一排灯还亮着。
键盘声在空旷的楼层里响得很清晰。林远停下来,看了一眼屏幕上刚打的几行字,又继续敲。文档标题那一栏写着:核心服务器部署与灾备切换全流程,版本2.0,作者林远,审核方磊,生效日期待技术委员会批准。
他保存了文档,然后打开下周会议的议程草案,在第三项议题后面加了一行备注:讨论R-01至R-08全面迁移至新架构的时间表。
关电脑之前,他最后看了一眼目录。核心知识库的完整度被他手动改成了百分之九十九,剩下的百分之一是留给后来人的空间。他站起身,拿起外套,走过陈默的工位时发现屏幕上还亮着一份表格,标题是《技术贡献评定标准草案》的第三版。
林远没叫醒趴在桌上睡着的陈默,只是把旁边的外套往他肩膀上搭了搭,然后走向电梯。明天是周六,但群里的文档接力安排上,方磊已经排好了周末的排班表。
第十一章 委员会
三月三日,星期一,上午九点四十分。
技术部大会议室的投影幕布已经拉了下来,陈默站在梯子上调试焦距,方磊在下面递数据线。圆桌上摆着七份打印好的材料,每一份用长尾夹夹着,封面上印着“技术委员会第一次全体会议·议题材料”。
林远推门进来的时候,方磊回头说:“林哥,周总那边说十点整到,孙总也来。”
“知道了。”林远把笔记本电脑放下,接过陈默递来的材料翻了两页。他抬头看了一圈会议室,技术部核心岗位七个人全部到齐,没有人缺席。
十点整,周振国推门进来,身后跟着孙文华。周振国在会议桌主位坐下,扫了一眼桌上的材料,没急着翻,先开口:“林远,你说说,这个委员会到底怎么定位。”
林远没有拿稿子,直接说:“技术委员会不是管理层,是技术决策的评审机构。三个职能:第一,技术岗位的绩效评定标准由委员会制定,提交董事会备案;第二,重大技术方案的评审必须经过委员会三分之二以上同意;第三,技术人员的职级晋升和岗位调整,委员会有建议权,管理层有决定权。边界很清楚。”
周振国点点头,翻开材料第一页。会议室安静了十几秒,只有纸张翻动的声响。
陈默站起来,走到投影幕布前打开第一项议题的幻灯片。屏幕上出现三个维度的柱状图:代码提交量、系统稳定性指标、故障响应时间。
“这三个维度不是我定的,是林远定的。”陈默用激光笔点着图表,“但也不是拍脑袋定的。过去六个月的运维数据我们已经跑出来了,这三个维度的相关性最高,能覆盖技术人员百分之八十七的日常工作产出。剩下百分之十三是跨部门协作和知识分享,建议放在附加分里,由委员会集体评议。”
方磊举手:“附加分有没有上限?”
“有,”陈默翻到下一页,“附加分不超过总分的百分之十。”
林远补充了一句:“附加分存在的意义是鼓励分享,不是给人情留口子。每一项附加分都需要至少两名委员签字确认才能生效。”
周振国在这句话之后抬了一下头,目光从材料上移到林远脸上,没说话,又低下头继续看。
第二项议题是“系统守护奖”,陈默讲得很快。核心只有一条:这个奖不跟绩效挂钩,专门奖励在故障处理和架构优化中有突出贡献的人,单项奖金从公司年度技术预算中列支,不需要走部门审批。
孙文华在这里插了话:“不走部门审批,那谁来定?”
林远回答:“委员会投票,三分之二以上通过,报财务备案。备案不是审批,是审计留痕。”
孙文华看了周振国一眼,周振国没反应,孙文华便不再追问。
第三项议题是季度技术答辩。陈默念完制度条款,会议室的气氛明显收了一下。方磊低头在材料上画了个圈,旁边几个人交换了眼神。
周振国把材料合上,搁在桌上。“答辩这一条,”他看向林远,“会不会太严了?技术人员本来就忙,一个季度考一次,压力太大。”
林远没有直接回答,他说:“周总,您把公司从八个人的小作坊做成现在三百人的盘子,靠的是什么?”
周振国挑了一下眉,没急着接话。
“靠的是您对人心的把握,靠的是您知道谁在干活谁在混。”林远语速不快,每个字都放得很稳,“我把磐石从一行代码做成现在支撑日均百万订单的系统,靠的是规矩。每一次故障复盘、每一行代码审查、每一个接口的变更记录,都有规矩。现在的问题是,您的经验带不走,我的规矩也没人能接。答辩就是让规矩长在每个人身上——答不过的不一定是能力不行,是方向不对,调整岗位对个人对公司都是好事。”
周振国沉默了很长时间。会议室里连翻页的声音都没有了。
“好。”周振国最终说了一个字,然后拿起笔,在会议决议签批栏签了名。“三项制度今天开始试行,试行期半年。半年后我再看。”
他站起身,走到门口时停了一下,回头看着林远:“你说的那个‘答辩不过的调整岗位’,具体怎么调,细则要出来。别让技术部的人觉得这是在变相裁员。”
“细则这周出,委员会内部先试跑一轮。”林远说。
周振国推门走了。孙文华跟着出去,临走时看了林远一眼,表情里说不清是什么。
会议室的门重新关上,方磊长出一口气,靠在椅背上:“我差点以为周总会卡答辩那一条。”
“他不会卡。”林远坐下来,翻开笔记本,“他不在技术决策上跟委员会对着干,他只在人事决定权上守住底线。这是他的地盘,他分得清。”
陈默重新坐到电脑前,调出一张新的表格:“按照刚才通过的评定标准,我把技术部所有人上个月的数据跑了一遍,做了一次模拟测算。”
“说结果。”林远说。
“代码提交量和系统稳定性两项,您都是满分,故障响应时间用的是上个月那三次P3级告警的处置时间,平均四点二分钟,也是满分。”陈默把屏幕转过来,对着林远,“三项加权之后,模拟测算出来的年终奖数额是四十万二千一百元。”
会议室里没有人说话。
四十万二千一。比赵敏当初评的零,多了整整四十万。比林远预期的应得数额三十八万六,还高了五万。
方磊先反应过来:“这比之前HR那边按旧标准算出来的最高档工资还高。”
“因为之前没有客观标准。”陈默点开附注栏,“我给周总和董事会的报告里附了一段备注,你们看一下。”
屏幕上出现一行小字,是陈默的笔迹:“制度调整后,核心技术人员年终奖模拟测算上浮约百分之四点二,非技术岗位下调约百分之一点八,总额与上年度持平,未增加公司人力成本。”
方磊念完这行字,愣了两秒:“上浮加下调等于零?”
“对。”陈默说,“总额没变。去年是赵敏把技术部的份额挪给了行政和关系户。今年只是把东西放回该放的位置。”
林远看着屏幕上的数字,没有表现出太多情绪。他拿起笔,在会议纪要末尾签上自己的名字,然后把纪要递给方磊:“签完字今天发全员通告,委员会正式运行。”
方磊签完,传给陈默。陈默签完,又传回林远。
“还有一件事。”林远把材料收拢,起身走到投影幕布前,把最后那张模拟测算的表格放大,“四十万这个数字不要外传。不是不让人知道,是不想让人把注意力放在钱上。委员会的价值不在一个数字,在三项制度能不能跑满半年。”
陈默点头,把电脑上的测算文件归档,文件名标注了“模拟测算-内部参考-勿外传”。
散会后众人陆续离开,会议室只剩林远和陈默。陈默收拾完设备,忽然说了一句:“林哥,上个月你让我起草技术贡献评定标准的时候,我以为你是想给自己争一个公平。今天我才明白,你要的从来不是公平。”
林远看了他一眼。
“你要的是不依赖任何人的公平。”陈默说。
林远把椅子推回桌下,拿起外套。“走吧,下午还得跑第一轮模拟答辩,方磊排了三个人的名字,先从他们开始。”
陈默关掉投影,会议室暗下来。两个人走出技术部走廊,窗外的阳光正好,三月的天光开始有了一点暖意。走廊尽头是财务部的方向,陈默往那边看了一眼,没说什么,脚步跟上了林远。
当天下午五点,技术部内部系统弹出一条通告,标题是《技术委员会第一号决议》,正文只有三行字:委员会正式成立,林远任主任,方磊任副主任,陈默任秘书。三项制度即日试行。下周起启动首轮技术答辩。
通告最下方有一行小字,是林远加的:规矩不是锁链,是让所有人被公平对待的那条底线。
第十二章 暗流
三月十日上午的董事会持续了将近三个小时。
林远没有列席。技术合伙人不在董事会名单上,这是周振国定的规矩,林远也没主动争取。但会议一结束,方磊就给他发了条消息:周总让你去他办公室,脸色不太好。
林远把手头的代码评审收尾,泡了杯茶,不急不缓地穿过走廊。董事长办公室的门半掩着,周振国站在窗边,背对着门口,手插在西装裤兜里。听见脚步也没转身。
“进来,关门。”
林远把门带上,在他对面坐下。茶几上摊着一份董事会纪要,林远扫了一眼露出的那半页,看到一个用红笔圈出来的名字——是自己的。
周振国转过来,脸上挂着一种刻意松弛的笑,坐下,拿起茶杯又放下,像是找不到合适的开场方式。最后他问:“系统这几天怎么样?”
“平稳。第二阶段重构提前完成,日均订单处理能力恢复到了百分之九十三。”
“好,好。”周振国点了两下头,话锋忽然一转,“远啊,你那个技术委员会,运行还顺利?”
“顺利。上周完成了首轮技术答辩,三个人晋升了职级,年终奖评定标准也已经下发给各部门。”
“这些都挺好。”周振国拉开抽屉,取出一份文件,推到林远面前,“但今天董事会上,有股东提了一个问题,我觉得值得你了解一下。”
林远没去拿文件,只是看了一眼封面,是当初回归时签的合作协议。
“股东的意思是,技术委员会的权力是不是太大了。”周振国的手按在文件上,语气像是随口一提,“年终奖这块,以前是人事部和分管副总一起定,现在变成技术委员会说了算,这不是把管理层的分配权给剥出去了嘛。”
林远端起茶杯,喝了一口。
周振国继续说:“我心里是支持你的。但协议嘛,咱当时签得急,有些措辞可以再推敲。你看协议里写的是‘技术评审’,评审嘛,评完了还是要报管理层。委员会有建议权,最终决定权,是不是还应该放在公司层面?”
办公室很安静,窗外能听见楼下的人声和车流。林远放下茶杯,声音不高:“周总,您说的股东是张总还是刘总?”
周振国愣了一下:“这不重要。”
“不重要。”林远点了一下头,“那我就不猜了。协议是您签的,第七条写的是年终奖技术评审结果具有终审效力。白纸黑字,双方签字,公章也在。您签了,我也信了。”
周振国的笑容收住了。
林远把茶杯稳稳放回杯垫上,目光平静地看着他:“现在您想改,可以,协议里有退出条款。我重新考虑合作方式就行。不过周总,我得提醒您一句,签协议那天,系统正以每天百分之五的速度降速,我手里攥着优选商城的offer,您是带着董事会授权来找我谈的。”
周振国的手指在文件上收紧,指节发白。
“那天您跟我说,‘只要系统能救回来,条件你提’。”林远说完这句,没再往下压,“所以今天您提这个,是真觉得第七条有问题,还是董事会上有人让您试探?”
这句话把周振国问住了。他脸色变了又变,嘴唇动了两下,最后把文件收回去,扔进抽屉,动作有点重。
沉默持续了十几秒钟。
周振国靠在椅背上,长出了一口气,语气里的锐气已经散了:“就按协议办。今天的事,当我没提。”
林远站起身,把椅子轻轻归位。“周总,我今天下午会把第一季度的系统稳定性报告发您。里面有一节专门讲技术委员会对系统可靠性的贡献权重。您要是方便,可以转给董事会看看。”
周振国没接话,只是摆了摆手。
林远走出办公室,顺手把门关上。走廊里方磊正在等他,一脸担忧。
“没事。”林远说,“该干嘛干嘛。”
方磊跟上来,压低声音:“林哥,我有个事跟你说,跟今天的会没关系,但我觉得你得知道。”
两人走到楼梯间,方磊掏出手机划了两下,翻出一条朋友圈截图递过来。是赵敏三天前发的内容,配了一张办公室照片,地段看着不像云创,落地窗外面的写字楼林远觉得眼熟。
“她去了优选商城。”方磊说,“行政总监。今天上午刚从一个同行群里传过来的。”
林远看了一眼那张照片,把手机还给方磊,神情没什么变化。“知道了。不用管。”
方磊急了:“不用管?优选是咱最大的对手,她之前在人事总监位置上待了三年,公司有多少人、什么架构、薪酬体系什么样,她全清楚。她去那边,等于把咱的底牌摊给人家看。”
“她接触不到系统数据。”林远往楼上走,“而且她已经走了,不在我们职权范围内。你盯着这个,精力就放偏了。”
方磊张了张嘴,没再争。
林远回到技术部办公室,坐进自己的位子,打开电脑。他没有去翻赵敏的社交账号,也没有打电话给任何人。桌面上摆着下一轮委员会会议议程,他点开章程草稿文档,拖动光标,在原文件最后一条之后,敲下一行字:
“技术委员会成员离职后六个月内,不得在直接竞争企业担任相关管理岗位。本条自委员会通过之日起生效。”
他停了两秒,又在下面加了一句:“本条款适用于所有现任及曾任委员会成员。”
光标闪了闪。林远看了一眼那行字,按下保存,然后拿起内线电话打给陈默:“下周议程加一条,新增竞业限制条款,我拟了草稿,你和方磊先过一遍。”
三天后,委员会第二次会议,出席的九名委员全票通过了这条规定。方磊在表决前哼了一声,但举了手。陈默做完记录,把决议录入系统时问了一句:“林哥,你写的是现任及曾任,是不是专门给赵敏设的?”
林远正端着杯子往外走,头也没回:“给了所有技术骨干一个保护。谁知道下一个走的会是谁。”
当天下午五点,决议分发至全公司管理层。周振国在OA上点了已读,没有回复。
晚上七点,林远和陈默、方磊吃加班餐。方磊扒着盒饭忽然问了一句:“今天董事会上到底发生什么了?”
“没什么。”林远夹了一筷子青菜,“股东觉得技术委员会管太宽,提了意见。”
“那周总怎么说?”
“他说按协议办。”
方磊愣了两秒,反应过来,闷头笑了一声,什么也没再说。
陈默在一旁默默收拾餐盒,把筷子整齐地归到一边。他看了林远一眼,想起那天散会后自己说的那句话。林远当时没接,现在陈默觉得,有些话确实不用接。
窗外的三月的夜色安静下来,办公楼里还有一半工位亮着灯。技术部这一层,键盘声和低语声混在一起,像一台正常运行的系统,各项指标平稳,偶有波动,但在可控的范围内。
林远打开电脑,把第一季度的稳定性报告发给了周振国。报告第十二页,列的是技术委员会在故障预防中的实际贡献——六次潜在风险预警,三次自动化应急处理,零次宕机。数据不算华丽,但每一个数字都可以查证。
发完邮件,他敲下关机键。屏幕暗下去的一瞬间,他想起来,去年这个时候,年终奖评定也是在这个时段出的结果。那时候赵敏还在人事总监的位置上,系统还没出事,一切都在表面的风平浪静里。
而现在的风浪,他决定只让它在自己的掌控范围里翻涌。
离开公司前,林远在走廊尽头停了一下。那里是人事部原来的办公区,现在挂上了“行政服务中心”的牌子,门关着,灯没开。
他收回目光,脚步平稳地下楼,夜色从旋转门里灌进来,带着初春的凉意。
第十三章 温度
磐石2.0的第一阶段重构比林远预估的提前了四天完成。三月中旬的那个周五凌晨三点,方磊在群里发了最后一条测试报告:核心交易链路响应时间中位数从故障期间的1.8秒降到了136毫秒,比离职前的230毫秒还快了将近一半。陈默在数据层加了一道自动校验,连续压测七十二小时,错误率为零。
林远把报告转发给周振国时是早上七点四十。十分钟后,周振国回了四个字:全员大会。
会议定在当天下午两点,大会议室。林远到时,里面已经坐满了人,连过道都加了椅子。技术部、运营部、财务部、客服部,云创科技在总部的员工几乎全到了。白板上还残留着上午运营会没擦干净的曲线图,跟屏幕上“磐石2.0阶段重构成果”的标题叠在一起。
周振国从侧门进来,没坐主位,站在投影幕布旁边。孙文华给他递了话筒,他摆摆手没接,就那么开口了。
“今天这个会,只说三件事。”周振国的声音不大,但会议室里连空调出风口的嗡嗡声都显得格外清楚。“第一件,磐石系统第一阶段重构完成,稳定性数据我看了,比出故障前还好,比去年这个时候好得多。林远和他的团队用了一个月不到,把三个月的预期工程量压缩完成。这件事,公司记在账上。”
他停了一下,目光扫过全场,在林远身上停了不到一秒。
“第二件事。去年年终奖分配出了问题。具体的方案不是我做的,但我是签了字的人,这个责任在我。”
会议室里安静得能听见有人手里的笔掉在桌上的声音。林远坐在第三排靠窗的位置,手放在膝盖上,表情没变。方磊坐在他旁边,背挺直了,手指压在笔记本边缘压得发白。陈默在最后一排靠门的位置,面前摊着笔记本,笔尖悬在纸面上方,没落下去。
周振国继续说:“评定制度今年动了,技术委员会已经成立了,评审规则也在走流程。我在这里表个态——技术委员会通过的评审结论,我带头尊重。管理层不干预,不复议,不推倒重来。”
他没说“对不起”三个字。林远听得出来,到周振国这个位置、这个年纪,当着一百多号人的面说出“责任在我”,已经是他能给出的最接近道歉的表述。会前他在走廊里碰见林远,什么也没说,只点了个头。林远也点了个头。
“第三件事。”周振国把话筒从支架上取下来,拿在手里,“磐石2.0第二阶段下个月启动,目标是今年年内完成全量切换,同时把技术文档体系建起来。这事林远牵头,方磊具体执行,需要哪个部门配合,直接找孙总协调。散会。”
前后不到十五分钟。周振国说完就从侧门出去了,比进来时还快。会议室里嗡嗡声四起,有人收拾东西,有人凑在一起低声说话。财务部两个去年拿了正常年终奖的同事从林远身边走过,其中一个看了他一眼,欲言又止,最终只是点了下头。
林远正在合笔记本电脑,陈默从后排绕过来,在他旁边的空位坐下。方磊被运营部的人拉住问接口文档的事,一时半会儿脱不开身。
“林哥。”陈默压着声音,把手机屏幕递到他面前。
屏幕上是一张截图,系统后台的审计日志。时间戳是去年十二月二十八日,操作人赵敏,操作类型是“修改年终奖评定权重参数”。原始数据里,林远的权重系数是1.15,属于核心技术岗位的最高档。修改后的数据里,这一项被清零,备注栏里写着“系统日常运行稳定,无突出贡献”。
“她改了权重,但没删操作日志。”陈默的声音很平,像在念一份普通的数据报表。“我刚才又核了一遍,如果按新制度的技术评审标准反推,你去年的年终奖应该是三十八万六。去掉已发的部分,差额三十八万六。”
林远看了那张截图几秒,把手机推回去。
“要不要追究?”陈默问。
走廊里传来方磊的声音,在跟运营部的人解释什么。会议室的人走得差不多了,只剩下靠墙那排椅子上还坐着一个客服部的女生在回消息。
“不追究了。”林远把电脑装进包里,拉上拉链。“把那份原始记录归档到技术委员会档案里,作为制度改革的案例。文件名你自己拟,关键信息保留就行。”
陈默愣了一下。“就这么算了?”
“文件归档,比追她的责有用。”林远站起来,拎起包,“你让后面的人知道,旧制度出过什么问题,新制度为什么要有,这比处理一个人有意义。”
陈默张了张嘴,没再问。他打开笔记本,当着林远的面新建了一个文档,把截图贴进去,敲下文件名:旧制度重大缺陷案例_2024Q4年终奖评定权重异常_归档备查。敲完他停了一下,在备注栏加了一行字:本案例证明旧制度存在系统性缺陷,不作为个人追责依据。
“加上‘不作为个人追责依据’这句,是给谁看的?”林远问。
“给赵敏看的,也给以后可能坐她那个位置的人看的。”陈默合上电脑,“制度改了,人得给条路走。你教我的。”
林远没再说什么,拍了拍他肩膀。
两人下楼时已经六点多,三月的天暗得早,街灯全亮了。林远问陈默想吃什么,陈默说随便。最后在园区后门找了家面馆,一人一碗牛肉面,加了个凉拌黄瓜。
陈默吃了半碗,放下筷子。“林哥,我问你个事。”
“嗯。”
“你为什么不早点走?去年年终奖那事之前,以你的能力,外面机会多的是。优选那边一直在挖你吧。”
林远把嘴里的面咽下去,喝了口汤。“我在等一个能让我把话说完的时机。”
陈默看着他。
“周总这种人,你不让他疼,他听不见你说话。系统不出事,我说一万遍技术重要也没用。年终奖为零我递离职,他觉得无所谓,离了谁都能转。那就让他转一个月试试。”林远夹了块黄瓜,“系统崩了,他才愿意坐下来听我说完。”
“所以你什么都知道。”陈默低声说,“验证密钥也好,临时调试接口也好,你走的时候就留了后手。”
“留后手不是为了害谁。”林远放下筷子,正色道,“系统是我六年搭起来的,我知道它哪里会先出问题,哪里会连锁反应。我走之前想的不是报复,是怎么让这套系统在我走之后还能撑一阵。但撑不住的那天总会来,这不是我设计的,是我预判的。”
陈默沉默了好一会儿,搅着碗里剩的面汤。“我以前觉得,技术人员只要好好干活就行了。把代码写好,把系统做稳,别的不用管。”
“好好干活是对的。”林远把碗推到一边,拿纸巾擦了擦手,“但你要让别人看见你的活。这不是邀功,这是让劳动被正确定价。看不见,就会被当成理所当然。理所当然,你的年终奖就是零。”
“这也是技术的一部分?”
“这就是技术的一部分。”林远说,“能被看见的技术,才是完整的技术。剩下的是艺术,交给命运。”
陈默被他这话逗得笑了一下,低头把剩下的面吃完。
两人走出面馆时,园区后门的小吃街喧闹依旧。炒粉的锅气、烧烤的烟、奶茶店门口排着的队,三月夜晚该有的热闹一样不少。陈默走在林远右边,忽然说:“档案今天归档,明天我把技术委员会的评审细则初稿发你。”
“好。”
“方磊今天在台上一直攥着笔,我看见了。”
“他攥他的,不耽误干活。”
走到园区门口,两人分开。陈默往地铁站方向走,林远回身往办公楼去——他笔记本还落在工位上。走了几步,陈默回头喊了一声:“林哥。”
林远停下。
“你今天在会上,听到周总说‘责任在我’的时候,是什么感觉?”
林远想了想。“觉得他说出来比我预想的容易。可能董事会那边逼得紧,也可能是他自己想通了。不重要。”
“那什么重要?”
“后面每个月,技术委员会的评审结论他是不是真的不复议。一次不算,连续十二次才算。”林远挥了下手,“回去路上小心。”
他转身走进园区,背影在路灯下拉长。办公楼八层的灯还亮着大半,技术部那面玻璃墙透出来的白光映在深蓝色的天幕上,像一块嵌进夜色的屏幕。
林远回到工位,翻开笔记本,在技术委员会工作日志里新增了一行:3月14日,旧制度年终奖评定权重异常案例归档,备注不作为个人追责依据。他保存,关闭文档,又打开了磐石2.0的第二阶段设计草案。
屏幕上的架构图铺展开来,密密麻麻的模块和接口连线交错。他看了一会儿,在文档末尾加了一段备注:所有核心模块逻辑须在六月前完成文档化,评审后对全技术部开放查阅。这条备注他加了粗体。
做完这些,他合上电脑,关灯,离开。
走廊尽头的行政服务中心门依然关着,灯没开。林远没往那边看,径直走向电梯,按下了一楼的按钮。
第十四章 零的对面
三月二十五号,周一,上午十点。
技术部的玻璃墙后面,白板上还留着上周架构评审的草图。林远站在白板前,正在跟方磊和陈默过第三阶段重构的接口设计。他手里捏着一支黑色记号笔,刚画完一个数据流向箭头,裤兜里的手机震了一下。
他没看。笔尖继续落在白板上,把接口调用的时序图补了两笔。
“这里如果并发超过一千五,队列会堵。”方磊指着图上的一个节点。
“所以要把缓冲层拆出来独立部署。”林远把箭头划掉,重新引了一条线,“这周把方案敲定,下周开始做压力测试。”
陈默在笔记本上记了一行,抬头问:“预算呢?独立缓冲层要新增两台服务器,技术委员会那笔钱够不够?”
“我算过了,够。”林远说完最后一个字,把记号笔盖好,扔回白板槽里,“具体数字下午给你们。”
会开了将近一个小时。散会时众人各自收拾电脑和水杯往外走,方磊磨蹭了两步,凑到林远旁边。
“林哥,你手机是不是响过?”
“嗯。”
“你不看看?”
林远这才从裤兜里掏出手机,划开屏幕。一条银行短信躺在通知栏里,内容简短:您的账户于3月25日入账人民币402000.00元,摘要:年终奖金。
他看着那行数字,表情没什么变化,把手机递给了方磊。
方磊接过去扫了一眼,眼睛先是一愣,随即嘴角往上一扯:“四十万两千。”
“嗯。”
“比去年赵敏给你评的零,多了四十万两千。”
“多了个数字而已。”
方磊把手机递回来,摇着头笑:“你这话说得跟没感觉似的。去年你那个零,全公司都知道。今年这个数,不用半天也会全公司都知道。”
林远把手机揣回兜里。“知道是一回事,怎么看是另一回事。”
“那你怎么看?”
林远走到工位边,弯腰拿起桌上的水杯喝了一口。“别把数字看得太重,要看数字背后的东西。”
方磊张了张嘴,想说什么又咽了回去,最后点了点头:“行,你这话我记着了。”
中午吃饭前,林远坐在工位上,打开手机相册,翻到银行那条短信,截了个图。他打开朋友圈,选好图片,在配文框里只打了一个字:新。
发送。
不到五分钟,底下就有了回复。
陈默:从零到四十万,用了不到三个月。
隔了两分钟,方磊跟了一条:从零到破产,也用了不到三个月。
然后三个人谁也没再回复。那条朋友圈静静躺在列表里,配图是那条冷冰冰的短信,一个字的配文,加上两句一针见血的评论,像一场无人喝彩却心照不宣的仪式。
下午两点,林远把陈默和方磊叫进了小会议室。
会议室很小,只有一张圆桌和三把椅子,窗户对着园区后门的巷子,阳光斜斜地照进来,在桌面上铺了一层暖色。林远先坐下了,把手里三份文件夹一字排开,推到桌子中间。
“看看。”
方磊先拿了一份翻开。封面页上打印着几个黑体字:磐石系统3.0技术方案。他翻了两页,满眼都是架构分层、容灾设计、灰度发布流程,密密麻麻却条理分明。这份方案的完整度,比公司过去六年来任何一份技术文档都要高。
陈默拿的是第二份。技术委员会未来两年预算——人员编制、服务器采购、培训经费、外部评审专家费用,每一项后面都附了测算依据和三档可选方案。数字精确到百位,逻辑写得像审计报告。
第三份文件,方磊先没注意到,翻完方案才顺手拿起来。封面上的字让他愣了一下。
《技术合伙人退出机制》。
他抬头看林远:“你怎么写这个?”
林远把水杯放在桌上,十指交叉搁在面前。“从这次的事情里学到的。制度不仅要管年终奖,也要管我。”
“管你什么?”
“万一哪天我又被当成零,这个机制能让我有序退场。”他的语气很平,像在讲一段普通的代码逻辑,“技术合伙人如果因为任何原因需要退出,职责交接分三个阶段,每个阶段有明确的时间节点和验收标准。所有核心系统的完整文档、密钥移交清单、故障处理预案更新责任,全部写清楚了。谁接、怎么接、接多久,全在文件里。”
方磊翻到最后一页,看到一行手写批注的小字,是陈默刚才在上面添的。他凑近看——无论林远在不在,系统都要能转。
方磊抬起头,看着林远。
林远也看见了那行字。他把文件从方磊手里接过来,目光在那句话上停了两秒。“对。”
他把文件合上,推到圆桌正中。“但这需要三年。”
“三年?”陈默问。
“磐石现在能修、能改、能撑,是因为所有关键逻辑还只在几个人的脑子里。这是最大的风险。”林远用手指点了点3.0方案的封面,“全部文档化、全部可追溯、全部有冗余理解的人——做到这个程度,我算过,三年。”
方磊把退出机制那份文件重新翻开,从第一页开始细看。陈默拿起笔,在预算文件最后一页的空白处开始列问题清单。三把椅子围着的这张小圆桌上,三份文件、三个人、三年规划,像三个支点稳稳撑住了一个原本摇摇欲坠的局。
窗外巷子里有人在搬货,沉重的木箱落地时闷响了一声。阳光移过桌面,照在那份退出机制的扉页上,林远的签名是手写的,三个字,没有盖章,没有花哨的虚词。
“退出机制这边,有一个细节要补。”陈默抬起头,笔尖点着文件上的某个段落,“如果退出是因为不可抗力——比如健康原因——交接周期是不是要缩短?”
“缩短到六周。”林远说,“但核心模块的解耦必须在四周内完成,剩下的两周用来验证。”
“那如果……”
“你先把问题都列出来,晚上发我邮件。”林远看了眼手表,“预算那边,周三之前要定稿。方磊,3.0方案的技术评审安排在下周一,评审组名单你跟我一块儿定。”
方磊点头,手却没离开那份退出机制文件。他像是想问什么,又压了回去,最后只说了一句:“这个机制,你希望永远用不上。”
“对。”林远站起来,把三份文件分别收好,交给对应的负责人,“但写出来,比不写强。写出来、公开、进入流程——它就不再是一个人的承诺,而是一套制度。”
他把自己的那份退出机制文件夹在腋下,走到门口时停了一步,回头看了一眼陈默和方磊。
“今天到账的那个数,我会把它拆成三份。一份留着,一份投到技术委员会的培训基金,一份——”
他顿了一下。
“算我先补给陈默的。”
陈默摆手要说什么,林远抬手拦住。
“不是补偿。是制度里本来就应该有的——关键岗位风险预留金。这轮制度修订把这条加上,以后凡是涉及系统核心的人员变动,预留金自动触发。”
他推开门,走廊上的光线涌进来,把他的轮廓勾出一道清晰的边。身后,陈默拿起笔,在笔记最后一页写下四个字:预留金条款。
方磊把自己面前的方案又翻开,从第一页重新看起。
第十五章 磐石
林远按下评审室墙上的电子屏开关,屏幕亮起来,三组数据并列铺开。
第一组是过去十二个月的磐石系统可用性:99.998%,全年非计划停机总时长不到十一分钟。第二组是核心交易峰值处理能力:从一年前的每秒四千笔提升到一万两千笔。第三组是云集平台年度交易总额曲线,从二月开始陡峭上扬,到十二月形成一个几乎垂直的仰角。
“交易量是去年的三倍。”陈默站在屏幕前,手里的激光笔红点落在第三组数据的最顶端,“技术委员会的年度报告已经自动分发到全员邮箱,比去年提前了六个工作日。”
方磊坐在评审桌右侧,面前摊着一份纸质版报告,翻到附件页:“技术岗位年终奖平均上浮百分之二十二,核心贡献者和普通贡献者之间的差距拉升到三倍以上。最高和最低之间的倍数差是四点七。”
“四点七这个数太高了。”评审组的一位后端工程师举手,“会拉大内部矛盾。”
林远从桌上拿起水杯喝了一口,放下:“你说得对,所以我们设了封顶系数。四点七是系统自动算出来的原始值,委员会评审时可以调。但问题是——”
“调完之后的数,和原始数都得公开。”陈默接上,“过程透明比结果公平更重要。去年的问题不是分多分少,是分的过程不透明。”
举手的那位工程师想了想,点头。
评审室在云创科技新办公区的七层,三面落地窗,北面正对软件园的人工湖。一年前这里还是孙文华的运营总监办公室,重新装修后变成了技术委员会的固定评审场所。墙上挂着一块铜牌,上面刻着“技术委员会评审室”,落款日期是去年三月九日——委员会成立那天。
林远站在主位前,翻了翻面前的评审清单。这是本年度年终奖分配的最后一轮审议,前面已经过了四轮,累计否决了十七个不合理的评级调整申请,也通过了九个跨级上调。今天要处理的是最后三个争议案例。
“第一个,方磊提的。”林远抬头看了一眼方磊,“运维组张晨,入职四个月,但独立完成了数据库集群从十二台扩容到二十四台的部署方案,并且把整个扩容过程写成了标准操作手册。运维组给的评级是B。”
“我给的A。”方磊说,“理由是标准操作手册这一项。以前这套东西只存在林哥脑子里,现在有人把它写出来了,而且写得比林哥当年写得清楚。”
林远没接话,低头在平板上翻了翻张晨提交的手册目录,一共一百零三页,分七个章节,包含完整的部署拓扑图、回滚方案和验证清单。
“通过。”林远说,“评级调整为A。陈默记录。”
陈默在电子表上点了一下,张晨的名字从蓝色变成绿色,旁边跳出一行自动计算的数字。
“第二个。”林远继续念,“前端组李雨桐,连续两个季度绩效A,但在磐石3.0的前端重构方案中有三次延期,原因是过度设计。”
“这个我保留意见。”前端组组长从后排站起来,“延期是事实,但她的方案后来被证明是对的。3.0的架构文档第一章就引用了她的设计。”
“不是你保留意见的问题。”林远把平板上的评审记录投影到屏幕上,“李雨桐的评级是A还是A减,基于的是完成度,不是后验价值。如果A减,差的那一档不在于她的技术判断,而在于时间管理。”
“那就A减。”前端组组长坐回去。
“通过。陈默记录。”
最后一个案例是跨部门争议。市场部提报了一位数据分析师,说他搭建的实时看板和磐石系统的数据对接存在延迟,影响了活动决策效率。技术委员会这边的初步意见是,延迟的瓶颈不在看板端,而在市场部自己使用的第三方埋点工具。
林远把两份报告并列投在屏幕上:“延迟平均一千四百毫秒,其中一千三百五十毫秒来自第三方工具,看板端处理只用五十毫秒。结论是看板没问题,数据链路的问题需要市场部自己解决工具选型。”
“这个结论回给市场部。”方磊说,“附上抓包的原始数据。”
“陈默,直接把报告抄送孙文华。”林远说,“他现在的岗位是运营协调,不负责工具选型,但让他知道这个事。”
陈默点头,操作了几下,邮件系统自动生成发送任务。
三个案例处理完,评审正式结束。电子表上的最终数据出炉,同步到全员邮箱的同时,也打印了一份纸质版,由陈默、方磊和林远三人签字归档。
方磊靠在椅背上,长出一口气:“一年前的今天,我在工位上刷新了三遍邮箱,等陈默的奖金表。”
陈默笑了:“我当时还在财务部那个角落里,表格做完发给赵敏,石沉大海。”
“现在呢?”林远合上平板。
“现在——系统自动生成、自动分发、自动归档。”方磊扳着指头,“我点开邮件的时候,连算都不用算,每一项都有明细链路。”
评审室的电子屏自动切到了当月磐石系统的运行摘要。林远看了一眼,拿起放在桌上的手机。屏幕上有两条未读消息。
第一条是银行到账通知。数字是四十万两千元。他看了一眼,锁了屏。
第二条是周振国发来的。内容很短:“评审结束了?晚上有空吃个饭吗。”
林远回了一个字:“行。”
方磊在旁边看到了消息提醒,问:“周总现在还有什么事?”
“他现在是顾问。”林远把手机放进口袋,“顾问找我吃饭,估计是闲的。”
方磊和几位评审组的工程师都笑了。
“对了,林哥。”方磊起身收文件时突然转过来,“你现在敢休假了吗?”
林远正在往门口走,听到这句停了一步。他转过身,看了一眼评审室墙上的紧急联络图。图上列了五个名字,每个人后面都标注了负责的模块和备用联系人。林远的名字排在第一位,但对应的备注栏里写着:磐石全架构,文档索引第六章,备用联系人方磊、陈默、周扬。
“敢了。”林远说,“系统不会因为我休假就变慢。”
他走出评审室,走廊尽头的电子屏滚动播放着当日的系统状态:全线正常。屏幕下方滚动的小字标注了最近一次架构文档更新日期——三天前,更新人:方磊。审核人:林远。
他走到走廊尽头的窗边,七层的高度能望见人工湖的全貌,湖面结着薄冰,阳光打上去反射出一层淡金色的光。手机在口袋里又震了一下。
优选商城CTO的消息:“林总,看到你们磐石3.0的架构文档公开摘要了。有没有兴趣过来做技术顾问?不用坐班,按季度出评估报告就行。”
林远想了想,拇指在屏幕上点了几下:“可以聊聊。但我还是云创的合伙人,不坐班这条没问题。”
消息发出去,对方秒回:“行。下周约个时间。”
他把手机放回口袋,没有立刻离开窗边。湖面上有人在沿着步道跑步,远远的,人影很小。风吹得窗户玻璃微微震动,发出很轻的嗡嗡声。
身后传来脚步声。陈默抱着一摞文件从评审室出来,走到他旁边停下。
“下周磐石3.0的第一次全链路压力测试。”陈默把最上面那份文件递给林远,“测试方案已经通过了委员会的技术预审,附件里有两个备用方案,一个针对数据库瓶颈,一个针对网络层。”
林远接过来翻了翻。预审意见栏里密密麻麻写了半页纸,每条意见后面都署了名,有的来自运维,有的来自测试,还有两条来自刚入职半年的新人。
“这两条新人意见提得不错。”林远指出来,“网络层那个方案里,增量校验的逻辑他想得比我细。”
“他入职的时候,你让方磊带他看了磐石的全部文档。”陈默说,“看了一个月,才让他碰代码。”
“以后新人都是这个流程。”林远把文件递回去,“文档齐全的好处就在这儿——不用等一个人悟六年。”
陈默点头,抱着文件往工位方向走。走出几步又回头:“对了,张晨那个A级,刚才自动触发了预留金条款的升级。他的预留金账户从B级升到A级了。”
“按制度走就行。”
林远最后看了一眼窗外。湖上的薄冰在阳光里慢慢变薄,有些地方已经透出水的颜色。他转身往走廊另一头走去,经过技术委员会的铜牌时,随手摸了一下牌面上刻着的第一个名字。
会议室里有人喊:“林哥——3.0的环境部署好了,等你来跑第一轮!”
“来了。”他应了一声,步子不快,但走得很稳。
口袋里的手机屏幕亮了一下。优选商城CTO又发了一条:“对了,问个私人问题。你当年为什么选择回去?”
林远边走边打字,按了两下发送。
“因为那里有没写完的东西。”
(全文完)
文章虚拟演绎,请勿当真。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.