楔子
李明站在单位大门口,手里攥着借调函的回执单,纸张边缘被他折得起了毛边。远处那棵老槐树比两年前高了半截,树冠密密匝匝的,把门卫室的灰瓦檐遮了大半。门卫老周探头看了一眼,目光在他身上停了两秒,又缩了回去,像是没认出来。
七月的南昌,热浪从柏油路面蒸腾上来,把远处的办公楼都扭曲了。李明深吸一口气,空气里是熟悉的灰尘味和机房散热风扇吹出的那种微微焦糊的气息。他低头看了看自己身上那件浅蓝色衬衫,省厅发的,领口别着一枚小小的党徽。他把衬衫下摆往裤腰里塞了塞,迈步走了进去。
楼道里很静,脚步声在瓷砖地面上回响,一下一下,格外突兀。他经过资料室时听见里面有人压低声音说话,等他走过去了,那声音就断了。两年,不算长,但也不短。走的时候他还是个被借调去省厅帮忙的"苦力",回来时借调函上盖着省厅人事处的红章,写着"圆满完成任务"。他以为至少会有人迎一下,说句"回来了啊"。
没有人。
他推开办公室的门,门轴"吱呀"一声长响。三张桌子,两张空着,靠窗那张坐着办公室主任王世杰。王世杰正端着搪瓷茶杯,盖子一下一下拨着浮沫,眼皮都没抬。
"王主任。"李明把借调函放在门边的桌上,声音不大但足够清楚。
王世杰这才慢悠悠抬起头,目光从杯沿上方递过来,打量了他一番,然后笑了笑,嘴角扯了一下又收了回去。"哟,小李回来了。省厅待两年,人是精神了。"
李明没接话。他注意到自己原来那张桌上落了厚厚一层灰,键盘缝里都是,桌角的文件筐底有一撮老鼠屎。
"刘姐呢?"
"调走了,都调走了。"王世杰站起来,走到窗边,背对着他,两手插在裤兜里,"现在科室合并,人少事多,你回来正好,先把这块卫生搞搞,后面安排再说。"
他说"搞搞卫生"的时候,下巴朝墙角努了努。那里靠着一把扫帚,塑料柄的,颜色褪了,头上一撮灰扑扑的鬃毛歪歪扭扭地翘着。
李明盯着那把扫帚看了三秒钟。然后他走过去,弯腰,把它拿了起来。手指触到塑料手柄的瞬间,一种粗糙的、温热的触感传上来,他想起省厅办公楼里那种自动拖把机,想起自己那个独立隔间,想起"先进个人"水晶奖牌。出发前他把奖牌收进了抽屉,心里想的还是"回原单位后低调点"。
"王主任,下午有会吗?"
王世杰转过身,似乎有些意外他真去拿扫帚了,愣了一瞬,又恢复了不咸不淡的表情。"没有,先搞,搞完了再说。对了,李梅那个小姑娘,新来的,你顺带指点指点。"
李明"嗯"了一声,拎着扫帚走出办公室。他走到自己工位前,把借调函从桌上拿起来,塞进公文包里。公文包是省厅发的,深蓝色尼龙料,侧面印着"XX省XX厅"。里面有一沓文件纸的边缘,是他借调期间参与起草的全省平台建设方案终审稿,上面有陈厅长的亲笔批示。他把包放到椅子上,转身开始扫地。
扫帚在地板上划出细碎的声响,灰尘在斜射进来的阳光里飞舞。他听见隔壁办公室有人压着嗓子说了句什么,紧接着是压低的笑声,又很快掐断了。他没有转头,只是把扫帚杆握得更紧了一些,指节泛出白色。
"看看吧,"他在心里对自己说,"我想看看,这个单位的人,谁还记得李明是谁。"
扫帚划过地板,留下浅浅的水痕。他没有停,一下,两下,认真地扫,每个墙角都扫到,每道砖缝都不放过。头顶的吊扇"嘎吱"转了一圈,把刚聚拢的灰尘又吹散了些。
上午十点四十分,院子里传来汽车引擎熄火的声音。李明听见了。王世杰也听见了,他从办公室探出头来朝院子张望了一眼,皱起眉。来车挂的是省厅牌照,黑色奥迪,车头上那面小红旗被风吹得微微晃动。
车门打开,一个人走下来。灰色短袖衬衫,西裤笔挺,头发梳得整整齐齐。五十八岁,腰背挺得笔直,是那种开会时坐主席台正中间的坐法。
省厅厅长,陈国栋。
院子里瞬间安静下来。门卫老周一个箭步冲出来整理着歪掉的帽子。王世杰的表情变了,那种不咸不淡的优越感瞬间换成满得要溢出来的热络,他从办公室快步走出来,皮鞋在走廊上"噔噔"响。
"陈厅长!"王世杰老远就把手伸了出去,腰弯了十五度,"您怎么亲自来了?我们正要去厅里汇报,您这一来,真是蓬荜生辉!"
陈国栋握了握他的手,目光越过他肩膀,看向走廊深处。那里,李明正握着那把褪色的扫帚,站在办公室门口,灰尘还挂在鬃毛上,在阳光里轻轻浮动。
王世杰顺着视线回过头,一愣,随即像想起什么似的侧过身朝李明招招手:"来来来,小李,别扫了,陈厅长来了,快把那个收拾了。"
李明站在原地没动。
陈国栋看了他一眼,又看了那把扫帚一眼,脸上的表情没有任何变化。他转过头来,对王世杰说了一句话。声音不大,甚至可以说很平和,但走廊太静了,每一个字都清清楚楚落进所有人的耳朵里。
"老王,"陈国栋说,语气像在聊家常,"我来介绍一下,这位是省厅党组刚刚任命的、分管你们这块工作的,李明,李副厅长。"
顿了一秒。可能是两秒。
王世杰的手还维持着朝李明方向招的姿势,五指张开悬在半空,像一把没合拢的扇子。他的嘴唇翕动了一下,没有发出声音。脸上的笑纹还挂着,但笑意已经不见了,剩一层薄薄的皮干巴巴地绷在那里。
走廊那头传来一声极轻的倒抽气。然后什么都没有了。吊扇还在头顶"嘎吱嘎吱"地转,灰尘被吹得到处都是。阳光斜进来,照在李明脚边那一小堆刚刚扫拢的灰上。
李明松开手里的扫帚。塑料手柄从他掌心滑落,靠在墙根,发出"嗒"的一声轻响。他往前走了两步,走到陈国栋面前,伸出手。
"陈厅长。"
"嗯。"陈国栋回握住他的手,用力压了压,"回来了就好。下午两点党组会,你列席。先把这里安顿好。"
"好。"
李明感觉到手心里那层汗已经干了,取而代之的是一阵凉意。走廊里站了好几个人,都在看他,目光里有震惊的,有茫然的,也有几个他认出来了,是两年前一起加过班的,眼神里透着一种复杂的东西,像愧疚又像后怕。
他收回手,转过身看了王世杰一眼。王世杰的腰还弯着,但已经没刚才那个角度了,像是忽然被抽了根骨头,整个人矮了一截。他的嘴唇在动,在说"这""那个""怎么""您"几个碎片词,拼不成完整句子。
李明没等他组织好语言,侧身让开门口:"陈厅长,里面坐吧,地方小,但茶还有。"
他抬手做了个"请"的手势,动作稳当、从容,一点不像刚才那个握着扫帚弯腰扫地的人。只有他自己知道,胸腔里那颗心跳得有多快。但他面上一丝不显。
陈国栋点点头,从他身侧走进了办公室。经过李明身边时脚步顿了一瞬,用一种只有两人能听见的声音说了一句:"扫得挺干净。"
然后他大步走了进去。李明站在门口,看着那个灰色短袖的背影在自己原来的工位前坐下,又看了看门边那把歪着的扫帚。他忽然觉得喉头发紧,压下去,清了清嗓子跟了进去。
身后,走廊里一片死寂。吊扇"嘎吱嘎吱"地转着。
而王世杰的那杯茶,到底也没端起来。
第一章:扫帚与公文包
那场见面持续了不到二十分钟。陈国栋坐在李明原来的工位上,听王世杰磕磕巴巴汇报了几项近期工作。王世杰说话时眼神一直在李明脸上和陈国栋后脑勺之间来回弹跳,语速时快时慢,好几次说一半忘了词,又去翻手里的文件夹。
李明靠着窗台站着,双手抱胸,一言不发。他注意到王世杰汇报材料第一页右上角还印着去年的年份,是去年年终总结改了数字拼凑的。陈国栋显然也看见了,但什么都没说,听完之后"嗯"了一声站起身来。
"下午的会两点开始,厅里有人来接你。"陈国栋对李明说,"车子一点四十到。"
"好。"
陈国栋走到门口回头看了王世杰一眼,目光很淡,王世杰的脊背明显僵硬了一瞬。"老王,借调人员回来该有的程序厅里都走完了。党组会议纪要下午统一发你们办公室存档。"
"是是是,一定配合好李——配合理——"王世杰舌头打了个结,"副厅长"三个字卡在喉咙里,最后硬生生拐了个弯,"配合好工作安排。"
陈国栋没再说什么,迈步走了出去。院子里汽车发动,引擎低低轰鸣了一阵,车胎碾过碎石路面,出去了。
车声消失之后,办公楼像是被人按了"静音"键又松开,各种声音蜂拥而出。茶水间水壶"呜"地烧开了,但没人去关。
李明还站在窗台边,半截身子晒在太阳底下。他低头看自己的手,手指还微微发麻,刚才被陈国栋用力按压的感觉还留在掌心里。他吸了口气,缓缓吐出来。
王世杰还在办公室里站着,脊背对着他,一动不动。李明能看到他后颈那层薄汗,把衬衫领子边沿洇成了深色。大约过了十几秒,王世杰终于转过身来,脸上换了一种笑——比起先前的热络,更像是被人兜头浇了冷水之后硬挤出来的。
"李……副厅长,"他把"副"字咬得很轻,"你看,这事儿闹的,厅里之前也没个通知——"
"王主任。"李明打断他,语气很平,"我叫李明,叫我小李就行。"
王世杰脸上的笑僵了一瞬。就在这时,门口传来一个怯怯的声音:"王主任……陈厅长走了吗?"
两人同时转头。门口探进来一张年轻姑娘的脸,二十七八岁,齐耳短发,圆框眼镜,怀里抱着一沓文件,手在微微发抖。目光从王世杰脸上移到李明脸上,又移回去,像一只误闯了猛兽区的兔子。
"李梅,"王世杰像抓住救命稻草般切入工作状态,"过来,这是省厅的李——你叫人就行。"
李梅一愣,显然没搞清楚状况。李明主动伸出手:"你好,我叫李明。"
"李……李哥好。"李梅有些局促地握了握他的手,手指冰凉,"我是李梅,上个月刚来的,负责文件流转和会务,您——"
"我出去抽根烟。"王世杰突然说,把文件夹往桌上一扔大步走了出去。走廊里传来打火机"咔嗒"一声响。
办公室里只剩下李明和李梅。李梅抱着文件站在原地,嘴唇翕动了好几次,终于小声问:"李哥,大家都说您是——"
"副厅长,"李明替她说了出来,"省厅党组刚下的文,分管咱们单位的技术条线和信息平台建设。"
李梅嘴巴张成了"O"形。她看了看李明身上那件浅蓝色衬衫,又看了看门边那把褪色的扫帚,眼睛写满难以置信。"那……您刚才怎么——"
李明走过去弯腰把扫帚拎起来靠墙放正了,拍了拍手上的灰,转头对她笑了笑。那笑容很轻,像下午的太阳慢慢爬上墙根。
"扫干净了才能看见东西,"他说,"你也坐吧。咱们单位的文件流转之前谁在管?"
李梅赶紧把文件放在桌上,拉了一把椅子坐下,语速还是快,但比刚才顺畅多了:"以前是刘姐,调走之后没人接,堆了快两个月了。王主任说等新人来了再处理,我就先按收发日期码了码,但很多签批件过了时限——"
李明听着她说话,目光落在那些文件上。最上面那份落款三个月前,没有任何后续签批记录。他翻了翻,下面几份情况差不多,有的压了四个月,纸张边缘都卷了。他轻轻叹了口气。他在省厅见过太多基层单位效率低下的实例,心里早有准备,但亲眼看见这些东西堆在面前时,那种"果然如此"里还是掺杂了一丝沉重。
"李梅,带个本子,"他说,"我告诉你哪些该退、哪些该补签、哪些走线上系统。今天下午开会之前理清楚。"
李梅眼睛亮了一下,赶紧翻出笔记本。李明在窗台边坐下来,阳光斜照进来,把他半边身子镀成金色。他开始一份一份翻那些文件,声音不急不缓地落下来,像雨水打在檐瓦上,笃定、清晰。李梅埋头"唰唰"地记,偶尔抬头看他,眼神里怯怯的神色正在一点点褪去。
走廊尽头,王世杰一根接一根抽着烟。烟灰缸里摁了三个烟头,第四个夹在指间烧了半截。他站在楼梯拐角通风口下面,脸冲着墙,没人看得见他什么表情。
办公室里,李明已经把文件理了三分之一。中间有几个地方需要核对编码,他让李梅打开电脑,输入用户名时发现自己账号还能登录,但密码被重置了。三次都不对,李梅小声说:"李哥,系统密码三个月强制换一次,您的账号可能被锁了。"
"嗯,"李明从公文包里摸出手机,翻到信息中心老赵的电话,"我找个人解一下。"
电话接通,老赵的大嗓门传过来:"喂?哪位?"
"赵哥,是我,李明。"
沉默了两秒,老赵的声音陡然拔高:"李——明?!你回来了?!你那个事儿——"
"赵哥,"李明打断他,语气里带着他自己都没察觉的笑,"先帮我解个账号密码,回头再聊。"
"行行行,马上!"
挂了电话不到两分钟,电脑弹出"密码已重置"的提示。李明敲了几个键,界面跳转到内部办公系统首页。桌面上一个文件夹图标安安静静躺着,旁边是两年前他走之前最后处理的那份文件存档记录——2024年7月12日。今天是2026年7月20日。整整两年零一个星期。
"李哥,"李梅在旁边小声叫他,"这有一份文件是给您的。"
李明转过头。李梅递过来一个牛皮纸信封,封口没粘。他抽出来一看,是一份盖着单位公章的通知,日期是今天早上,内容是对"借调期满人员"的岗前安排——"暂定编入行政组,具体职责另行通知"。落款签着王世杰的名字,字迹龙飞凤舞。
李明把通知折好放回信封,塞进公文包里,和那份省厅表彰文件挨着。白纸黑字,清清楚楚。
"去把窗台上那盆绿萝浇了吧,"他对李梅说,声音恢复了一贯的平静,"叶子都耷拉了,再不浇该死了。"
李梅愣了一下,赶紧起身去接水。她路过窗台时,看见李明正低头翻最后几份文件,侧脸被窗外的太阳照出清晰轮廓。眉头微微蹙着,嘴唇抿成一条线,手指在纸页上滑过去,一行一行地扫。
走廊那头,王世杰终于掐灭了第四根烟,狠狠摁进烟灰缸里。他深吸一口气,两只手在脸上使劲搓了搓,然后转过身朝办公室走去。皮鞋踩在地砖上,声音还是"噔噔"的,但比先前沉闷了一些,像鞋底突然厚了一层。
办公室里,李明抬起头,正对上王世杰那张重新调整好了微笑的脸。
"李副厅长,"这回把"副"字念得清楚了些,但语调里还是有说不清道不明的干涩,"快中午了,食堂开饭了,你要不要先吃点?"
李明看着他,笑了笑,和刚才对李梅笑时一样,淡淡的,没有攻击性,却让王世杰觉得脊背上的凉意又浓了一层。
"王主任一起吃吧,"李明站起来,拍了拍裤子上并不存在的灰尘,"我请客,就食堂二楼那个小包间,我记得以前能点炒菜。"
王世杰喉结上下动了动。"行。"
李明从公文包里抽出那份牛皮纸信封随手放在桌上。王世杰的目光跟着落下去又弹起来,撞上李明的眼神。
"走吧,"李明说,"边吃边聊,下午还有个会。"
他率先迈步走出办公室。经过王世杰身边时肩膀和肩膀之间隔了不到一个拳头的距离。王世杰闻到一股很淡的洗衣液味道,干净清冽,和办公室里长久积攒的灰尘气味格格不入。
窗外那棵老槐树的叶子在风里沙沙响着,阳光从叶缝间漏下来,在地板上落下一片碎金。
第二章:厅长突至
食堂二楼的小包间其实谈不上什么"包间",就是楼梯拐角用半截玻璃隔断隔出来的一个小区域,摆了张圆桌六把椅子,顶上挂着一台老式空调,出风口用透明胶带粘了块硬纸板改风向。窗玻璃上贴着褪色的"雅间"二字,其中一个字的金粉掉了一半,看起来像"雅"字缺了条腿。
李明掀开塑料门帘走进去时,空调正"呼呼"吹着冷风。他拉开靠窗那把椅子坐下来,阳光从那个角度照进来,被窗上那层薄薄的灰滤过,变成暖融融的橘色。
王世杰在他对面坐下,椅子腿在地砖上划出"刺啦"一声。他坐下后两只手放在桌面上,十指交叉,拇指来回绕着圈,视线一会儿落在桌面油渍上,一会儿飘向窗外,就是不太看向李明。
服务员进来点菜,是个五十多岁的大姐,围裙上沾着油星子。她看见李明愣了一下,眯眼打量了一会儿,忽然一拍大腿:"哟!小李!你回来了?两年没见了吧!"
李明笑了,这回的笑比在办公室里对着王世杰和李梅的笑都松快了几分:"张姐,你还在这儿呢。"
"可不在这儿嘛。"张姐把点菜本往桌面上一拍,"还是老规矩?红烧肉、辣椒炒蛋、再加个汤?"
李明点头:"再加个清炒时蔬,王主任你看还有什么想加的?"
王世杰拇指停止了绕圈,嗓子发紧:"不用不用,你点就行。"
张姐"刷刷"记完,转身要走又回头瞅了李明一眼:"小李啊,两年不见白了点。回头我得跟老王说一声——哎不是,王主任,小李回来了你们可得多照顾啊,人家在省厅待了两年,眼界开了——"
"张姐,"王世杰突然打断,声音干巴巴的,"菜先上,我们还有事聊。"
张姐"哦"了一声,多看了他一眼,没再说什么,撩帘子出去了。帘子在她身后"啪嗒"甩了一下。
包间重新安静下来。空调出风口那块硬纸板还在"扑扑"响着。李明伸手把它调整了一下角度,冷风"呼"地换了个方向,吹到王世杰那边的墙上。
王世杰干咳了一声。"李副厅长,"这次终于把三个字念全了,虽然中间停了一拍,"上午的事情是我失误。厅里的任命文件我们这边确实没收到,按程序应该先接到人事处通知——"
"王主任,"李明往椅背上一靠,双手松松搭在扶手上,"我说了,叫我小李就行。这儿也不是厅里,没那么讲究。"
王世杰脸上的肌肉抽动了一下。他当然听得出李明话里的意思——"这儿不是厅里",那"这儿"是哪儿?是他王世杰说了算了两年的地方。李明这句话每个字都像钉子扎在他心里最没底的那块地方。
菜上来了。张姐端着托盘"噔噔"走进来,红烧肉还在盘子里"咕嘟咕嘟"冒泡。李明拿起筷子夹了一块放进嘴里,肉炖得烂,酱油和冰糖的味道在舌尖化开,他不禁眯了眯眼。"还是张姐的手艺,在省厅两年吃不到这个味道。"
王世杰也拿起筷子,但夹菜的动作犹犹豫豫的,嚼了两下就咽了,估计也没尝出什么滋味。他放下筷子,端起面前的茶杯喝了一口,茶水已经凉了。
"李……小李,"他终于调整好了称呼,但干涩还没退干净,"下午的会是几点?我让王强把车备好。"
"不用,厅里有人来接。"李明又夹了块红烧肉,慢慢嚼完咽下去才接上,"下午列席,听听近期平台建设汇报。你这边有需要对接的可以准备材料,我帮你递过去。"
王世杰攥着茶杯的手指紧了紧。"帮忙递材料"——这话听起来是帮忙,实际上意味着什么,王世杰比谁都清楚。以前所有往省厅递的东西必经他王世杰的手。从今往后,要过李明那道门了。
"好,"他听见自己的声音说,"我下午让李梅整理一下。"
午饭在一种微妙的氛围里进行。李明吃得很自然,王世杰吃得很零碎,夹两筷子放下来喝口水,再夹两筷子又放下来。他的目光时不时扫过李明浅蓝色衬衫领口那枚小小的党徽,在从窗户斜射进来的阳光里偶尔闪一下光,每一次都让他心里咯噔一下。
"对了,"李明吃到一半忽然开口,"我桌上那个公文包,上午落那儿了,回头帮我拿一下。"
"行,我让李梅送上来。"
"不用,我自己回去取。"李明用纸巾擦了擦嘴角,"还有一个多小时才到一点四十,我先回去把上午那堆文件理完。"
王世杰点了点头站起来,膝盖在桌腿上磕了一下,发出"咚"一声闷响,但他脸上没有任何表示。李明走到门口时侧过头看了他一眼。"王主任,"声音压得不高不低,刚好两人能听见,"我回来不是为了跟谁过不去。这两年我在省厅学了不少东西,想把事儿干好。你是老同志了,以后还得多靠你指点。"
这话诚恳,语气真诚。王世杰愣了愣,嘴角动了动想说点什么,但李明已经迈步走了。他站在包间门口看着李明的背影沿楼梯走下去,脊背挺直,步伐均匀,浅蓝色衬衫在转角闪了一下消失了。
王世杰攥着塑料门帘边沿站了很久。
下午一点十五分,李明回到办公室时,李梅已经把文件按他上午说的分类全部整理好了。三摞整整齐齐码在桌面上,贴着"退""补签""走系统"三张便签纸,边角对得平平整整。李明检查了一遍点了点头:"做得好,比我想的还细致。"
李梅脸微微红了一下。"李哥,下午的会……我能去吗?我想听听平台建设那块的事。"
李明看了她一眼。上午到现在,这个姑娘在他面前的表现他一直看在眼里:做事有头绪,不推活儿,肯学,不打听闲话。走廊里那些人交头接耳时,她是唯一一个稳稳当当坐在工位上把文件从头码到尾的。
"行,"他说,"我让秘书处给你加个旁听。"
"真的?"李梅眼睛亮晶晶的,像两粒浸了水的黑葡萄,"谢谢李哥!"
"别谢,是你自己活儿干得利索。"
李明拿起桌上的公文包,正检查里面的东西,手机突然响了。屏幕上显示的号码他存了两年——"陈厅办"。他接起来,陈国栋的秘书小周声音干净利落:"李副厅长,厅长让我确认一下,下午车一点三十五到您单位门口。另外厅长说,让您把那把扫帚带上。"
李明愣了愣。"什么?"
"扫帚,"小周重复了一遍,语气里带着一丝憋笑的意思,"厅长原话是'让小李把他那把扫帚带来,下午会上用'。"
电话挂了。李梅在旁边小心翼翼地问:"李哥,怎么了?"
"没事。"李明把手机揣回裤兜,转头看了看墙根那把扫帚,还安安静静靠在那里,鬃毛上沾着上午的灰。他走过去弯腰拎了起来,塑料手柄被握了大半个上午,还残留着他掌心的温度。"下午开会,"他对李梅说,"你帮我带个东西。"
一点三十五分,院门口准时响起汽车喇叭。李明拎着扫帚走出办公楼,院子里日光炽白,晒得地砖发烫。他把扫帚横着拿在手里,像一个农夫扛着农具那样自然,阳光从头顶直直照下来,把扫帚的影子拉得又细又长。
门口停着黑色奥迪,车窗降下来一半,露出陈国栋的半张侧脸。老头子今天换了件白色短袖,领口系得严严实实。他看见李明扛着扫帚走过来,脸上浮出一丝极淡的笑意——轻到不仔细看根本发现不了。
"上车,"陈国栋说,"扫帚放后备箱。"
李明拉开后门坐进去,把扫帚顺着后座地板放了,塑料手柄斜靠座椅边缘,鬃毛那头挨着他的脚踝,痒痒的。车子发动,他从后视镜里看见单位大门渐渐缩小,门卫老周站在岗亭外张望着,嘴里叼着半根烟忘了点。二楼走廊的窗户里探出几个脑袋,很快又缩了回去。
车拐上大路时,陈国栋从副驾驶座上转过头来:"上午扫了几个小时?"
"一个多小时。办公室灰不小。"
"嗯。"陈国栋点点头转回去了。过了一会儿他又说了一句,声音不高,像是自言自语:"有些人扫了一辈子地也没扫明白。你扫了一个小时就明白了,挺好。"
李明没有说话,视线转向窗外。梧桐树飞速后退,叶子阴影一片接一片掠过他的脸,明灭交替。他低头看了看脚边那把扫帚,鬃毛上的灰在车子颠簸中微微洒落,在地垫上落了一层灰扑扑的痕迹。他伸手把那层灰拂掉了。
第三章:错位的介绍
省厅会议室在三楼。李明到的时候离两点还差八分钟,长条形会议桌已坐了七八个人。他进门时几个正在低声交谈的人同时抬起了头。
"李副厅长来了,"信息中心老吴第一个站起来,脸圆圆的眼睛眯成一条缝,"快坐,位置给你留着了。"
李明把手里的扫帚靠墙放了,在靠窗第三个位置坐下。他注意到陈国栋还没到,主席台正中空着,茶杯已摆好了,盖子掀着,茶叶在滚水里慢慢舒展。
他刚坐下,老吴就凑过来压低声音说:"厅长上午专门跑了一趟你们单位,你见着了吧?"
"见着了。"
"他做事向来不按常理出牌。上午跟我说'去一趟你那个借调的小李单位',我还以为考察调研,回来之后让我下午加个议程——你猜是什么?"
李明看着他没接话。老吴把声音压得更低了:"让你那把扫帚上主席台。"
说完就撤回去了,端起杯子喝茶,像什么都没说过。李明目光移到墙边那把扫帚上,塑料手柄上的灰被他蹭掉了一些,露出小截原本的深蓝色,像褪了色的旧校服。
两点整,陈国栋走进会议室。他今天走路比上午快了半拍,目光扫了一圈,在李明脸上停半秒,在那把扫帚上停两秒,收了回来在主位坐下。"开会。"
前一个小时是各处室例行汇报。李明全程认真听着,偶尔在本子上记几个关键词。他注意到全省信息平台已进入第二期测试阶段,老吴那边自主研发了数据清洗工具,效率提升近四成。他抬头看了老吴一眼,老吴正低头喝茶,但嘴角那点藏不住的笑意出卖了他。
三点零七分,最后一个处室汇报完毕。陈国栋合上文件夹,端起杯子喝了一口水,然后放下。会议室安静下来,所有目光集中到他身上。
"下面说个事情。"陈国栋声音不高,但每个字都清清楚楚送到每个角落,"今天上午党组会决议已正式下发。根据工作需要,经省厅党组研究决定,任命李明同志为XX市单位分管技术工作和信息平台建设的副厅长,行政级别和待遇按相关规定执行,即日起到岗。"
他说到"李明同志"四个字时,视线转向李明所在方向。十几道目光同时落在他身上,有打量有好奇有祝福也有审视。李明站起来微微欠身:"感谢组织信任,我会尽快熟悉情况,配合好各项工作。"
陈国栋点头示意他坐下,然后做了个所有人都没想到的动作——他转头对角落的小周说:"把东西拿上来。"
小周立刻站起来走到墙边,弯腰拿起那把扫帚,双手捧着走到会议桌前,端端正正放在陈国栋面前的大理石桌面上。塑料手柄磕在大理石上,"嗒"一声轻响。会议室里所有人都愣住了。老吴端着茶杯的手停在半空,茶水在杯沿晃了晃差点洒出来。
陈国栋伸手按了按扫帚鬃毛,把上面沾着的一小片枯叶摘下来放在桌角。"这把扫帚,"他语气平淡得像在介绍今天的会议纪要,"今天上午还在李明同志原来的单位办公室。他借调省厅两年,今天第一天回去报到,被安排先搞卫生。"
会议室里一片死寂。有人的喉咙里发出极轻的一声"呃",立刻被硬生生咽了回去。
陈国栋继续说,声音还是不高不低:"李明同志借调我厅两年,参与了全省信息平台建设全流程,起草了核心架构方案和接口标准,两次获得厅级表彰,党组三次动议留他在省厅,他都拒绝了。理由是'基层的情况我更熟悉,回去能做更多事'。"
他顿了顿,看了李明一眼。李明坐在那里,脊背挺直,目光落在面前笔记本上,表情没有任何波动。但他握笔的手指微微收紧,指节泛白。
"今天上午我到他原单位时,"陈国栋把扫帚拿起来竖着放在手边,"他正拿着这把扫帚扫地。安排他扫地的,是他原来的办公室主任。我想问问在座的各位——"目光在会议室里缓缓扫了一圈,"谁在他那个处境上,能二话不说先把地扫了?"
没有人回答。"我能,"陈国栋替他们说了,"但也得愣一下心里骂两句。李明没有。他扫了一个多小时,扫完还跟人家一起去食堂吃了午饭。"
他放下扫帚,发出第二声"嗒"。"这个任命不是谁打招呼打来的,是他两年来写的每一行代码、改的每一版方案、加的每一个夜班挣来的。厅党组让他回去分管那个单位的技术条线,是因为他最清楚基层结症在哪,也最清楚怎么跟厅里对接。"
陈国栋端起杯子又喝了一口水。他喝得很慢,像给会议室里的人消化的时间。放下杯子时,声音又恢复不咸不淡的调子:"李副厅长,你刚到,情况不熟。接下来两周做一件事——把那个单位的信息系统全走一遍,什么毛病、什么堵点、什么数据孤岛,一样一样摸清楚,拿出整改方案。需要支持你直接找老吴。"
"好。"李明点头。
"另外,"陈国栋拿起扫帚朝李明递过去,手伸过桌面,"这个你拿回去,放在你办公室。以后什么时候觉得自己位置坐稳了、飘了,就看看它。"
李明站起来,走过去,双手接过了那把扫帚。塑料手柄被陈国栋握过的那一端还残留着一点温度,和他掌心的纹路重合。"陈厅长,"他说,声音很稳,"我办公室还没有扫帚,正好缺一把。"
会议室里终于有笑声低低响起来。老吴第一个笑出声,赶紧用手捂住嘴,从指缝里漏出几声闷闷的"噗噗"。其他几个处长也跟着笑了,那笑意不算热烈,但至少松弛了,像绷了一整场的弦终于被允许松一松。
陈国栋也笑了,但只持续一瞬,像水面波纹很快平了。他往椅背上一靠,双手交叉放在腹前:"行了,正经事说完了。李副厅长留一下,其他人散会。老吴,把你那个新工具的操作手册给他一份。"
众人起身。椅子腿在地面上此起彼伏响了一阵,脚步声涌向门口。有人经过时拍了拍李明肩膀说了句"恭喜",有人只点了下头,眼神里带着重新认识的神情。老吴走得最晚,把一沓装订好的A4纸塞进李明手里挤了挤眼睛。
"熬了多少夜?"李明低声问。
"别提了,你走之后那个方案搁了仨月没人管,厅长直接点名让我接的。干了五个多月,比你这把扫帚还秃——走了走了,回头请你喝酒。"
门在他身后轻轻合上。
会议室里只剩陈国栋和李明。陈国栋站起来走到窗边,背对着他。窗外是中庭,一棵银杏树叶在下午日光里泛着油亮亮的翠绿色,风一吹整棵树窸窸窣窣地晃。
"知道我为什么让你把扫帚带来吗?"陈国栋没回头。
李明站在会议桌边,扫帚还握在手里:"知道一点,但不全知道。"
陈国栋转过身来看着他。脸上的表情和上午在走廊里对王世杰说话时一样,平和,带着老派领导特有的笃定。"让你扫地的那个主任叫什么?"
"王世杰。"
"王世杰,"陈国栋重复了一遍这个名字,像在嘴里咂摸什么味道,"这个人干了二十多年,业务没大毛病,但有个根深蒂固的毛病——看人下菜碟。你借调走了两年,他大概觉得你是省厅不要了才塞回来的,安排你扫地是给你下马威,也是让其他人看他对你的态度,好让大家疏远你。"
他停了一下,目光落在扫帚上。"但你扫了。你没摔门没顶嘴没打电话告状,拿着扫帚把办公室扫干净了。这一扫,王世杰就输了。你扫的不只是地,你把他那点小心思扫得干干净净摊在太阳底下了。今天下午消息传回你们单位,你是副厅长,他是办公室主任,以后他用什么样的脸面对你,他心里比谁都明白。"
李明没有说话。他握着扫帚的手松了松,指节上那层白慢慢褪下去,血色回流,指尖泛起正常的微红。他低头看着鬃毛,那些灰扑扑的硬毛在日光里根根分明,磨得长短不齐了,可每一根都硬邦邦挺着,不肯趴下去。
"陈厅长,"他开口,声音有点哑,清了清嗓子才继续,"谢谢您。"
陈国栋摆了摆手:"别说谢。把活儿干好比什么谢都强。你们单位那个系统我看了半年的数据——服务器响应时间比厅里慢了四倍,接口有三十七个断点,窗口办一个业务平均要切六个平台。你回去之后第一件事不是找人谈话,是带技术组把机房打开,一个一个接口查,查完了再谈人事。"
"我知道。李梅今天上午把滞留的流转文件都理出来了,我下午回去就梳理接口清单。"
陈国栋脸上的表情终于放松了一点,眼角微微弯了一下。那是今天他对李明露出的第一个完整的、不加掩饰的笑。"行,你去吧,车还在楼下等着。"
李明把扫帚竖着拎好往门口走了两步,又停下。他转身看着窗边那个穿着白色短袖、脊背依然笔挺的老人。"陈厅长,两年了,谢谢您一直留着我的工位。"
陈国栋没有接这句话。他转过身继续看窗外的银杏树,留给李明一个沉默的、微微佝偻了一点的背影。但那佝偻只是一闪而过,很快他又直起来了。
李明拉开门走了出去。走廊里空荡荡的,下午四点钟的阳光从西面窗户大片灌进来,把他手里的扫帚影子投在地上,斜斜的、长长的,像一条深色的路。
走过走廊拐角时手机震了一下。他掏出来看,是李梅发来的微信:"李哥,我把接口清单初列了一个表发您邮箱了。另外王主任刚才回办公室了,把您桌上的灰又擦了一遍。"
李明看着那条消息,嘴角浮出极淡的笑意。他没回复,把手机揣回兜里,迈步走进电梯。电梯门合上的瞬间,他从镜面不锈钢门板上看见自己——浅蓝色衬衫,领口党徽微微反光,手里竖握着一把褪色的塑料扫帚,鬃毛上的灰尘在电梯间昏暗灯光里看不太清了,但它们在。
他想起上午王世杰那句"先把卫生搞搞",想起自己弯腰拿扫帚时心里那个声音,想起陈国栋在走廊里开口前那短暂的、决定了一切的两秒钟停顿。
"扫把放下,"他心里说,"才是真正的开始。"
电梯"叮"的一声到了底层,门缓缓滑开。外面是省厅一楼大厅,阳光从玻璃门透进来,白晃晃的一大片,亮得让人眯眼。他跨出电梯,走进了那片光里。
第四章:尘埃落定
黑色奥迪从省厅驶出,下午四点多钟的阳光从西边斜照过来。李明坐在后排,扫帚横在膝盖上,塑料手柄随着车身颠簸一下一下轻轻磕着车窗。
司机姓孙,省厅车队的老司机了,话不多但稳当。"李副厅长,您那个单位门口巷子窄,掉头费劲。"
"嗯,"李明应了一声,"回头我让人跟市政协调,看能不能把门口花坛缩一缩。"
孙师傅从后视镜里看了他一眼,没再说话。
车子驶过八一广场时,李明偏头看了一眼窗外。两年前他从这里经过,也是七月,也是下午,坐在一辆金杯面包车的副驾上,抱着装满资料的纸箱,心里想着"借调两年,好好干"。两年后他回来了,以副厅长的身份。人生有时候就是这么不讲道理。
窗外的风景从繁华主干道变成狭窄巷子,老城区梧桐树把整条街罩在浓密绿荫下。李明认出了五金店、修鞋摊、那棵歪脖子老槐树——快到了。巷口有人在修电动车,孙师傅按了两声喇叭,那人把工具箱往里踢了踢,车从旁边挤过去。
灰白色门楼出现在眼前。李明发现,仅仅隔了一个中午,他再看这扇门时感觉已完全不同,老槐树的影子落在柏油路上一道一道的,像刻度线。
车停下来。李明推开车门下去,热浪裹住全身。他回身拿出扫帚,拎着朝院子里走去。
门卫室里,老周这次没有缩回去。他几乎从椅子上弹起来,嘴里还叼着半根没点的烟:"李——您回来了啊。"
"周师傅,"李明脚步没停,"下午热,你屋里风扇是不是坏了?上午听它嘎吱响。"老周愣了一下,弯腰捡烟的时候李明已经走远了。他望着那个拎着扫帚的背影,脊背挺得笔直,每一步都踩在砖缝中间。
二楼走廊窗户里一个人影闪了一下。李明没抬头,继续往前走。
办公楼里比上午更安静。每一扇关着的门后面都有人,但没有出来。李明上了二楼,拐过楼梯转角,迎面撞上王强。王强拿着保温杯,看见他时步子猛地顿住,杯盖"哐当"掉在地上滚了两圈。他弯腰捡起来,手指发抖,不敢抬头。
李明弯腰伸出右手:"王师傅,杯盖。"王强递过来,李明看了看盖子里侧的水垢,抹了一下还给他:"该除垢了,回头让后勤买点柠檬酸泡一泡。"王强攥着杯盖挤出三个字:"李副厅长——"
"刚回。"李明笑了笑,"你忙,我先回办公室。"他侧身走过去。上午所有人都在观望时,只有王强在院子里跟他说了句"回来了啊"。李明没回头,但心里记着。
办公室门开着。李梅正擦桌子,看见他先是一喜,目光落在他手里扫帚上愣了一拍,很快恢复如常。"李哥,您回来了。我把您桌上灰又擦了,键盘缝清了。还有——"她指了指窗台上的绿萝,叶子挺起来了,水珠还在叶尖挂着,"我浇了两遍,第一遍全从盆底漏了,第二遍缓过来了。"
李明走到窗台边碰了碰叶子,凉丝丝的。"养活了,谢谢你。"
李梅脸一红。"对了李哥,您走之后王主任回来过一次。他把您公文包拿走了说要放柜子,后来又拿回来了,放在您椅子上,还把包面擦了。"
李明转头看自己的椅子。深蓝色公文包端端正正放在座垫正中,包面干净,拉链朝外。包里那份省厅表彰文件和单位通知还安静躺着,但牛皮纸信封的边角被捋直了。他坐下摸了摸桌面,指尖滑过去只有木头温润的触感。"李梅,接口清单我收到了。口头跟我说一遍,几个堵点?"
李梅翻开笔记本:"一共三十七个接口,正常在用的二十一个,七个半年以上没数据更新,九个重复——同个业务在两个系统各走一遍,窗口办件要切来切去。"
李明手指敲了两下桌面。七个废弃、九个重复,比他预想稍好,但也有限。两年前离开时至少流程还能跑通。"废弃那七个,是因为业务下线还是坏了没人修?"
李梅又翻了一页:"三个是业务调整后下线,剩下四个接口报错后一直没处理,前端把入口关了。运维说人手不够,加上原开发公司早联系不上了,没人敢动。"
李明点头。"那四个报错接口,我晚上看日志类型,明天上午约运维一起进机房。"李梅犹豫:"可是明天上午王主任安排例会——""几点?""九点半。""你跟王主任说,"李明声音平平静静的,"例会我列席,开完会大家去机房。"
李梅记下来,笔尖"沙沙"划过纸面。她写完抬头,看见李明正翻手机里的技术文档,眉头微蹙,手指在屏幕上划得很快。窗外的太阳开始西斜了。
敲门声响了。"笃、笃、笃。"三声,间隔均匀,力度适中。李明抬起头:"请进。"
门被推开一条缝。王世杰站在门口,端着一个托盘,托盘上放着白瓷茶杯和玻璃杯。白瓷茶杯冒着热气,茶香隔着两三米都能闻到,明前龙井。玻璃杯里是凉白开,杯壁外沁着细密的水珠。
"李副厅长,"王世杰的声音换了种调子,腰微微弯着,笑容用力过猛,"下午天热,我给你倒了杯茶。这是凉白开,你看喜欢喝哪个。"他把托盘放在桌角,端茶杯时手指翘着,"茶叶是今年新茶,你尝尝。"
李明看了看那杯茶,茶叶在水里舒展,水色清亮透绿。白瓷茶杯新洗过,杯沿上还有水渍。"谢谢王主任。"他端起来闻了一下,浅浅抿了一口,"好茶。"
王世杰的腰松了松。他搓了搓手,目光在桌面逡巡,最后落在墙根那把扫帚上。"那个——李副厅长,上午事情确实是我不对。厅里没有提前通知,让你第一天回来就干那个——"
"王主任。"李明放下茶杯,杯底在桌面碰出"嗒"的一声。他表情平静,没有一丝得意。"我说过了,叫我小李就行。工作按程序来,厅里通知下午该发到你邮箱了,收到看看就行。"
王世杰嘴巴张了张又合上。他那些准备好的道歉话一句没能按计划说出来。因为李明太坦然了,坦然到让他觉得自己那些小心思被看穿后又轻轻放下了。"好,"声音有点闷,"那明天例会,您——你——要不要先跟大家见个面?"
"见,"李明说,"我也有几项工作要布置。技术口全部人员,九点半到会议室。""行,我去安排。"王世杰往后退了一步,差点绊到门槛上。"王主任,"李明又叫住他,声音里多了一点温度,"茶很好喝,有心了。"
王世杰表情僵了一瞬,松弛下来,点了点头转身出去了。门在他身后轻轻合上。李梅这才"呼"地吐出一口气:"李哥,王主任刚才在走廊站了好久,端着托盘走来走去的。""嗯,"李明又喝了口茶,"他需要一点时间,没事。"
窗台上绿萝叶子晃了一下,水珠从叶尖掉下来,"啪"一声极轻。李明把视线收回来,重新落在那份接口清单上。翻开第一页,第一行就是红色标注——"社保数据对接"。旁边有李梅的铅笔字:"已断联一百六十三天,前端页面调取失败,窗口工作人员需手动录入重复信息。"
他的手指在那个数字上停了一下。一百六十三天,每一笔业务窗口都要多花五分钟手动打字。乘以每天几十上百笔,乘以整个城市的办件量,是多大的人力成本他已懒得算。他把扫帚从墙根拿起来横着放在膝盖上,手心贴着塑料手柄那处已磨得光滑的凹陷。那凹陷恰好契合他的掌形。今天之前这把扫帚的主人不是他,但从今天开始,他要一直带着它。
暮色从窗外漫进来。李明没有开灯,坐在暗下来的办公室里,手边是那杯已经微凉的茶,膝盖上横着那把褪色的塑料扫帚。窗外的蝉鸣一阵一阵涌上来,和远处巷子里的车声搅在一起,混成南昌夏天傍晚特有的那种喧嚣与安静交织的声音。
他把茶杯里最后一口茶喝完,杯底扣在桌面上,发出一声轻响。"明天,"他心里说,"该干正事了。"
第五章:办公室政治的温度
第二天早上七点二十分,李明到了单位。天刚亮透不久,院子里地砖还带着夜里积下来的潮气,踩上去微微发凉。门卫老周换了班,今天值班的是个戴眼镜的年轻人,看见李明走进来整个人从椅子上弹了起来。
"李——副厅长!您这么早——"
"早,"李明点了点头,"食堂开门了吗?"
"开了开了,一楼六点半就开了。"
李明把公文包放在门卫室窗台上,让年轻人帮忙看着,往食堂走去。穿过院子时看见王强正在擦那辆老旧皮卡的车头,抹布来回抹着,水渍在晨光里闪亮亮的。"王师傅,"李明走过去,"车子昨天下午修过了?"
王强抬头,抹布捏紧了:"哎,李——副厅长,昨儿下午我看右前胎有点慢撒气就补了一下。顺便把机油换了,这车跑得苦,大半年没怎么正经保养了。"
"油费报销的事,"李明说,"以后不用走综合办流程了,直接来找我签。你干活快,别让纸上的事情卡着你的时间。"
王强愣在那里,手里抹布滴下一滴水来落在车头引擎盖上,他张了张嘴又闭上,最后只是用力点了点头,嗓子里挤出一个"哎"字。李明没再多说,抬脚往食堂走了。王强站在原地看了好一会儿那个背影,低头看了看自己手里的抹布,忽然觉得今天早上洗车的水好像比往常暖了一些。
食堂一楼坐了四五个人,都是早到的那批。李明端着一碗白粥和一个茶叶蛋找了个角落坐下。期间有两个同事端着盘子犹犹豫豫经过他桌边,一个小声叫了句"李厅早",另一个只弯腰点了点头,李明都回了笑说"早,坐下一起吃",那两人都摆摆手走开了,带着一种想靠近又不太敢的微妙表情。
吃完早饭回办公室时七点五十分。走廊里已有人声,茶水间饮水机"咕噜咕噜"响着。经过综合办门口时脚步没停,但余光看见王世杰已到了,正站在饮水机前接水,手边放着两个杯子,一白瓷一玻璃。
李明推开自己办公室的门,里面干净得让他脚步顿了一下。地板明显被拖过了,还能看见水渍未干的痕迹。桌上所有东西都重新摆过了——文件按类别码齐了,笔筒里的笔按颜色粗细重新排了队,连显示器边框都用湿布擦过。窗台上的绿萝也换了水,花盆外面那层泥渍洗掉了。扫帚还靠墙放着,但旁边多了一个小挂钩,铁质的,锃亮。
李明在那把扫帚前站了一会儿,伸手拿起来挂到了新钩子上。塑料手柄嵌入挂钩弧度里严丝合缝。他轻轻晃了一下,挂得很稳。
"李哥!"李梅的声音从门外传进来,她今天换了件淡绿色短袖,"九点半例会,王主任让我来问您——要不要提前去会议室看一眼?他把投影仪接好了。"
"不用,"李明坐回椅子上,"我九点二十五过去就行。"
李梅应了一声转身要走又回过头来:"对了李哥,今天早上办公室的门是王主任开的,他来的时候拎着拖把和水桶。"李明没有抬头,只说了句"知道了"。
九点二十五分,李明走进会议室。椭圆形的会议桌坐了十个人,王世杰坐在长边靠主席台那一侧,手边放着一沓材料,封面打印了"技术条线工作汇报",装订得整整齐齐。看见李明走进来他第一个站起来,然后是其他人,椅子腿擦着地面发出一片细碎的声音。
"坐,都坐。"李明抬手往下压了压,自己走到主位坐下。今天穿了件灰色短袖衬衫,袖口卷了两折。坐下后扫了一圈在座的人,大部分面孔都有印象——两年前还在单位时大都打过照面。
王世杰清了清嗓子翻开材料:"李副厅长,今天例会的主要内容是——"
"王主任,"李明开口了,声音不大但所有人的目光都转移了过来,"例会之前有个事情先说。昨天我回来之后看了接口清单,发现了一个比较紧迫的问题。先把这个问题说清楚,然后咱们再按部就班过例会,你看行不行?"
王世杰手里那沓材料的边角被他捏得微微卷起:"行,当然行。"
李明没有拿任何资料也没有翻手机,就这么面对一屋子人开口了。"昨天李梅梳理了咱们目前对外的数据接口,一共三十七个,正常在用的二十一个,七个废弃,九个重复。最严重的是社保数据对接那个接口,断联一百六十三天。"他说到"一百六十三天"时桌尾有两个人目光碰了一下又分开。"一百六十三天是什么概念?咱们每个窗口每天处理社保业务平均三十件左右,每一件因为接口断联需要手动录入五项信息,平均耗时五分钟。三十乘以五,一百五十分钟。乘以一百六十三天——两万四千多分钟,约等于四百个小时。也就是说,过去五个多月,窗口人员为了这个接口白白多干了将近十七天的纯手工录入。"
会议室安静得能听见墙上石英钟的走针声。"这个接口是哪个公司开发的?"李明问。桌尾一个三十五六岁的男人举了手,黑框眼镜,下巴上一片没刮干净的胡茬。"李——副厅长,我叫赵志刚,运维组的。接口是四年前外包给盛达科技做的,后来盛达倒闭了,源代码没有完全移交。"
"你们留了多少文档?"
"架构文档有,但接口层调用的那几个函数没有源码,我们尝试反编译过,但加过壳的,解不开。"
李明点了点头。"行,我知道了。反编译日志还在吗?""在,都在。""好,会完了发给我。另外——"他转向王世杰,"王主任,这个接口当年是谁签的外包合同?"
王世杰手指在桌面下攥了一下,面上还是稳的:"当年是刘副局分管的,她调走之后没人跟进了。后来系统上了新平台,老接口就慢慢——"
"慢慢就没人管了。"李明接过他的话头,语气平和,"我理解,这种历史遗留问题每个单位都有。我今天提出来不是追责,是想说这个问题今天必须开始解决。我昨天跟厅里信息中心老吴沟通了,他那边有数据备份,上午先做技术摸底,之后我来定修口方案。"他在桌面上用指节叩了两下,"技术口今天全员进机房,除了窗口必须值守的人,其他都在。老接口修复之前,新业务往厅里那个过渡平台走,老吴那边接口已经开了,一会儿发给大家。"他把自己手机上的二维码投到屏幕上,"扫这个,测试账号今天有效。先适应一下,明天正式切过去。"
会议桌周围响起一片解锁屏幕的声音。王世杰也扫了,扫的时候手指微微抖了一下。李明等所有人扫完才继续:"好了,接口的事情先说这么多。例会正常开,王主任你继续。"
王世杰重新翻开材料一项一项读例会议程,声音比平时低了一些,语速也慢了。李明全程认真听着,每条都听完才开口,反馈简短而准确——"采购那家供应商比价了吗?""门禁预算列明含三年维护费没有?"——切中要害,没有一句虚的。
例会进行到第四项时赵志刚突然举手了。"李——副厅长,社保接口如果直接切到省厅过渡平台,我们这边有些数据格式对不上——"
"我知道,"李明打断他,"你们之前用的是2007版数据字典,省厅那边是2023年第五版,字段定义有十七处差异。我昨晚看了日志之后就列出来了,老吴那边做了映射转换脚本模板,等我看了你们的原始日志之后改几个参数就能跑。"
赵志刚嘴巴微张,那种"本来想提个难点结果难点已经被解决了"的表情留在脸上。"好,那我一会发您。"
例会又持续了二十分钟,王世杰合上材料时声音里有种说不清道不明的东西:"李副厅长,今天的议程到这里结束了,你看有什么补充?"李明摇头:"没有了,大家辛苦了。技术口的人留一下,十分钟之后机房集合。其他人正常去忙。"
会议室里人陆续起身。几个年纪大的经过时放慢步子点着头叫"李厅",李明一一回了。等人都走得差不多了,王世杰还坐在位置上,手指来回摩挲着材料边角。"李副厅长——"他开口时那种"汇报"的紧绷感卸掉了,"我有个事情想跟你商量。"
李明正在收手机,抬起头:"你说。"
"门禁系统预算,供应商那边其实可以再压一压。他们一直想拿咱们做示范点,我给报的价比给其他单位低了五个点。如果再加签三年维保,他们可能再让两个点。"
李明看着他,那双因为熬夜而有些泛红的眼睛里映着日光灯的白光。"王主任,你昨天下午是不是跟他们那边的人打电话了?"王世杰愣了一下,脸上浮出一种被看穿了之后反倒松了一口的表情:"是,昨天下午你走了之后,我打了两个电话,问了一下他们的底价。"
"那就再谈两个点下来,"李明说,"谈成了,节省的预算进技术条线运维专项。你谈下来的,这单事情你牵头。"王世杰嘴唇抿了一下,点了点头站起来。他往门口走了两步又停下来,背对着李明。"李副厅长,我在这个单位干了二十三年,从办事员干到主任。我见过太多人来来走走了,省厅借调的人回来之后大多待不长,很少有人真回来踏踏实实干事的。所以我——对你开始的时候,态度不太端正。"
他顿住了,李明没有催。几秒钟后王世杰的肩膀微微松了一下,声音更闷了一些:"这个我知道。"李明在他身后说:"王主任,我回来不是为了让人端正态度的。我是为了把那个断了一百六十三天的接口接上。你要是能在别的事情上帮我省点精力出来,让我把时间花在修接口上,那就是对我最大的支持。"
王世杰没有回头,站在那里攥着那个搪瓷茶杯。过了好一会儿,他迈步走了出去。那脚步声和昨天一模一样,但李明觉得今天听着轻快了一些。会议室里安静下来。李明看着桌面那沓被留下的材料,"技术条线工作汇报"几个字清清楚楚。他翻了一下,发现内容充实了不少——昨天中午王世杰说得磕磕巴巴的数据都补全了,还加了一份预算执行明细。他站起来时看了一眼墙上的石英钟,九点五十八分。还有两分钟,他要带技术组进机房了。
走廊里的阳光从东面窗户大片涌进来,照得人微微眯眼。他抬手挡了一下,然后朝机房方向走去。步子不快不慢,每一步都踩得很实。
第六章:旧友与新局
机房在办公楼最东侧地下一层,要下一段又窄又陡的水泥楼梯。李明第一次知道单位还有这么个地方,借调之前那两年从来没人带他下来过。楼梯口的铁门漆成暗绿色,把手已经锈了,拧开时"吱嘎"一声长响。赵志刚走在最前面用力跺了跺脚,头顶白炽灯"嗡"地亮了。空气里有一股潮湿的、混着电路板烧灼气味的闷味。
"就是这儿了。"赵志刚推开第二扇门侧身让李明先进去。机房比李明想象的大一些,三十来平,三排机柜整齐排列着,蓝色指示灯在昏暗环境里一闪一闪。角落里堆着几台拆开的旧服务器,风扇叶片上积了厚厚一层灰。李明走进去第一件事是抬头看空调。两台壁挂空调,一台运行,另一台黑屏。"那台坏了多久?"赵志刚顺着他的目光看过去:"坏了八九个月了。厂家来看了说压缩机需要换,报价六千多,当时预算没批下来。"
李明走到坏的空调下面感受了一下,没有冷气。又走到正在运行的那台下面抬头看,出风口边缘结了一层薄薄的白霜。"这台也要修,结冰说明冷媒不够或者滤网堵了。今天之内让后勤找人来处理。"赵志刚张了张嘴想说什么,但想起了王世杰主动去谈门禁降价的事,又把话咽了回去。
李明走到主控台前,那里有一台老旧的工控机,CRT屏幕亮起来时先"滋"地闪了一下,启动速度慢得像爬坡。"接口日志存在哪个盘?"赵志刚凑过来点开D盘下一个文件夹,名字是一串乱码般的字母数字组合。"当年盛达的人建的文件夹,命名规则没留下来。"李明打开文件夹,几百个日志文件排列着,命名混乱,有的按日期编号,有的只有一串看不出规律的数字。随便打开一个,编码格式还是GB2312,在UTF-8环境下满屏乱码。赵志刚搓着手指站在旁边:"我们试过转码,但文件太多了——"
李明从他手里拿过键盘,手指在键位上停了一瞬,开始敲。输入速度很快,一行行代码在黑色命令行窗口里飞速出现。赵志刚眼睛睁大了:"这是——写了个批量转码脚本?""嗯,"李明没抬头,"还加了时间戳排序和错误日志标记。跑完之后所有文件统一转UTF-8,按日期重命名,出错的单独放一个文件夹。"敲完回车,脚本开始运行,一行行进度提示在黑色背景上飞速滚动。赵志刚拉了一把椅子坐下来,眼睛一眨不眨盯着进度条。"这得跑多久?""大概二十分钟。"
机房里安静下来,只剩服务器风扇的嗡嗡声。几个年轻技术员在后面挤成一堆,有人踮脚往前看,有人小声问赵志刚"那是啥脚本",赵志刚头也没回地摆手示意安静。李明手机震了一下,是王强发来的微信:"李副厅长,你车钥匙在我这儿,昨儿你放门卫室了。我给你拿办公室去了。"他回了两个字:"收到。"又加了一句:"王师傅,抽空把院里那辆皮卡的维修记录整理一下给我。"回复来得很快:"哎,好嘞。"
李明靠在桌沿上,看着屏幕上的进度条。跑到百分之七十三时,机房的门被轻轻推开了。李梅探进来半个身子,手里拎着两杯奶茶。"李哥,给大家买了点喝的。机房待久了容易低血糖。"她把奶茶放在门口备品桌上,轻手轻脚带上门出去了,不到三十秒,像一只猫走过地毯。赵志刚的目光从那两杯奶茶上收回来,说了一句所有人都能听见的话:"李副厅长,你回来之前,从没有人给我们买过奶茶。"李明笑了一下:"那从今天开始有了,以后每周一次轮着请,先从我这开始。"几个年轻技术员在后面低低笑了起来,那笑声在机房的嗡嗡声里格外清亮。
进度条跑到百分之百时李明站直了身子。输出文件夹里所有日志文件已按日期整整齐齐排列好了,统一用"YYYYMMDD_接口名称.log"格式命名。赵志刚凑过来看了几秒,深吸一口气。"这就好了?""好了,"李明说,"接下来按时间顺序找那几天的报错日志,看有没有异常访问或数据格式突变。我只做了格式整理,细节排查靠你们自己。"赵志刚用力点了点头坐到了主控台前,手指放在键盘上,动作比刚才顺畅多了。
李明退到角落里靠着一排机柜,看着赵志刚带着几个年轻技术员围在屏幕前面。他把手机掏出来,翻到跟李梅的对话框,打了三个字:"收到了。"又补了一句:"奶茶钱回头给你。"不到十秒回复弹回来:"不用不用,算我请大家喝的!以后每周都请大家喝,反正我年轻嘛。"
李明把手机揣回兜里,再抬头时赵志刚正转头看他:"李副厅长,你看这里——去年九月份这个接口报错之前,有一个来自外网的批量请求,一次性调了四百多次,之后接口就开始间歇性返回502了。"李明走过去弯腰凑近屏幕,仔细看了那段日志,手指在下巴上轻轻敲了两下。"可能是恶意爬取导致接口过载,触发了保护机制被降级,但降级策略没有自动恢复,所以一直卡在半死不活状态。"赵志刚眼睛亮了一下:"那只要把自动恢复开关打开就行了?""理论上是的。但开之前先加一层流量限制,单IP超过每分钟十次就临时阻断,阻断时间递增。这个我在省厅写过一套规则,一会儿发你。"
赵志刚打开新文档开始记了,键盘按键声响得厉害。李明直起身,注意到机房角落里那几台拆开的旧服务器,走过去看了一眼型号。十年前的主流配置,硬盘只有现在的一半,内存条是旧规格,但机箱外壳擦得干净。他问一个戴厚底眼镜的年轻技术员:"这几台谁拆的?"小伙子怯生生举手:"我拆的。三月份报废的,舍不得扔,拆开看看结构学习学习。"李明笑了笑,拍了拍其中一台的外壳:"留着以后当实训机。供电模块你们可以试着改一改,老机器有时候比新机器更有教学价值。"小伙子脸上那层紧张红色慢慢褪下去,亮晶晶地点了点头:"好的李厅!"
转回主控台时,赵志刚已经把异常日志标记出来了,屏幕上用黄色高亮标出了三个时间点,间隔稳定在三小时左右。"像个定时任务,"他说,"不像是人在操作。"李明看着那些高亮区块,手指在桌面敲了两下:"先把自动恢复开关打开,看看一小时之后状态有没有反弹。如果又断了——那就是接口本身有内存泄漏。"他往后退了一步,"你们先跑着,我上去打个电话。"
推开机房铁门走上楼梯时,上面的日光透过楼道尽头那扇小窗照进来。他一边上楼一边掏出手机拨老吴的电话。响了两声就接了:"怎么样?摸到什么了?""摸到了,"李明推开铁门走回一楼走廊,"有个定时爬虫在扫接口,大概去年九月开始的。让运维先开自动恢复,如果断了就是内存泄漏,得动代码。""你们那个接口用的什么语言?""Java,Spring Boot,外包那一套。"老吴"啧"了一声:"太正常了。你让运维看GC频率,如果异常高就是泄漏。需要帮忙吱声。""暂时不用,"李明走到二楼走廊尽头那扇窗前停了下来,窗外是院子,王强正蹲在皮卡前检查底盘,"我自己先理一遍。""行,你那个扫帚还在吧?""在。""陈厅长今天上午又问了一遍,我说挂墙上了。他说'那就好,还能再用两年'。"
李明笑了一下。窗外的风从半开的窗户灌进来,带着院子里泥土和汽油的气味。"老吴,社保那边备份数据你今天下午发我。""早就准备好了,等你这句话。挂了。"
电话挂断,李明看到时间十一点十七分。端着那杯已经微温的奶茶往办公室走,经过走廊中间时迎面遇上李梅,她抱着一摞文件,目光落在他手里那杯奶茶上弯了嘴角:"李哥,甜不甜?""还行,就是珍珠太多了。""那下回给您买不加珍珠的。"她小跑着走了,短发在穿堂风里飘起来。
李明推开办公室的门,那把扫帚还挂在新挂钩上,塑料手柄在日光里泛着温润的光。他把奶茶放在桌上,走到窗台边看那盆绿萝,叶子已经全挺起来了,油亮亮的,正在往窗外那棵槐树方向伸展。他碰了碰最大那片叶子的叶尖,凉丝丝的,有弹性。然后转回座位上打开电脑,开始整理刚才在机房看到的日志。手指落在键盘上的速度和他写脚本时一样快,一行行技术笔记在空白文档里铺展开来。窗外有鸟叫,老槐树的叶子被风吹得沙沙响,一片一片翻过来又翻过去。远处巷口有人在叫卖西瓜,拖长了尾音的"西瓜——甜西瓜——",一声一声传过来,穿过院子、走廊、半开的窗户,落进办公室里。
李明听着那些声音,手指没有停。键盘的敲击声在安静的办公室里清脆地响着,一下一下,不紧不慢,节奏稳定。窗外那棵老槐树的影子斜斜投在桌面上,随风微微晃动着,像一层薄薄的水纹。
第七章:第一把火
周一早上八点半,李明在办公室门口遇见了赵志刚。赵志刚今天刮了胡子,穿了件干净的白色POLO衫,领口扣得严严实实的,看着比上周五精神了不少。他手里攥着一个U盘,看见李明的时候快步迎上来。
"李副厅长,那个接口——好了。"
李明正要掏钥匙开门,手指停在半空。"好了?"
"好了。"赵志刚点头的时候整张脸都在发亮,嘴角压都压不住,"上周五按您说的开了自动恢复开关之后,接口稳定了整整一个周末,到今天早上为止调用了四百多次,一次报错都没有。而且——"他往前凑了半步,压低声音,"我昨天晚上加了流量限制规则之后,那个爬虫被拦截了七次,也没有再触发保护机制。"
李明拧开门锁推门进去,把公文包放在桌上,然后转过身来:"日志给我看看。"
赵志刚把U盘插进电脑,手指点开一个Excel表格,里面整整齐齐地列着从周五下午到周一早上的全部调用记录,每一行都标注了时间、状态码和响应时长。李明拉过椅子坐下来,一行一行地扫过去,从第一行看到最后一行,花了将近五分钟。赵志刚站在旁边,手指不自觉地绞着POLO衫的下摆,像个等着老师批改作业的学生。
李明看完最后一行的数据,往椅背上一靠,抬起头来看了赵志刚一眼。
"做得好。"
三个字。赵志刚绞着衣摆的手指松开了,他深吸了一口气,像是把这几天一直憋着的什么东西终于吐了出来,喉咙里发出一声极短的、含混的"嗯"。"那——那后面的接口,是不是都可以这样处理?"
"不一定每个都适用自动恢复开关,但排查思路可以复制。"李明站起来,走到墙边那把扫帚挂着的钩子下面,伸手碰了碰塑料手柄,像在确认什么东西还在那里。"下午两点开会,你把这次修复的完整过程整理成文档,注意写清楚每个判断节点和决策依据。以后再有类似问题,新人也能照着做。"
赵志刚应了一声,快步走了出去。门在他身后合上的时候,走廊里传来他压抑不住的、几乎是蹦跳着跑开的脚步声,地板被踩得"咚咚"响。
李明在窗台前站了一会儿。那盆绿萝长出了两片新叶子,嫩绿色的,边缘还微微卷着,在晨光里透着亮。他给花盆里添了水,水珠溅在釉面上,顺着弧线滚下来,在窗台上洇出硬币大小的一圈湿痕。
今天是七月二十七日,他回来正好满一周。
七天的变化比他预想的大。王世杰已经不再叫他"李副厅长"了——改叫"李厅",虽然只是少了一个字,但那个"副"字消失之后,整个称呼的质感都不一样了,少了那种小心翼翼的试探,多了某种被承认之后才有的自然。李梅每天都早到二十分钟,把办公室的地拖一遍,把窗台的灰擦一遍。王强前天把院里那辆皮卡的维修记录送来了,厚厚一本,用牛皮纸包着,边角都用胶带加固过,看得出是认真整理的。
还有一件事李明注意到了,但没有说出来。上周五下午,综合办门口那个挂了四年的"综合办公室"牌子被人摘了下来,换成了白底黑字的"副厅长办公室"。他不知道是谁换的,也没有问,但每次经过那扇门的时候,他都会看一眼那个崭新的门牌,一个字一个字地看过去,像是要确认什么。
下午两点,三楼的会议室里坐了十五个人。除了技术口的人,王世杰还通知了财务、后勤、行政等几个科室的负责人。李明进门的时候发现座位安排变了——以前那种"科长坐一排,办事员坐后面"的格局被打破了,所有人都围着椭圆桌坐了一圈,从资历最深的老会计到昨天刚转正的实习生,都在同一张桌子边上。
李明在主位上坐下来。他今天穿了件浅蓝色的长袖衬衫,袖口扣着,领口的党徽换了一枚新的,省厅发的,镀层还亮堂堂的。他坐下之后没有立刻说话,只是把手里的文件夹翻开,看了一眼里面的议程安排,然后抬起头扫了一圈在座的人。
"今天这个会,主要说三件事。"他说,声音不大,但会议室很安静,每一个人都听得清楚,"第一,社保接口修复完成,这是技术组这周的工作成果,赵志刚已经整理了文档,会后发给大家参考。第二,基于这次修复的经验,我重新梳理了咱们单位信息平台的整体架构,发现了一些可以优化的地方,想跟大家讨论一下方案。"
他顿了一下,翻了一页文件夹。"第三,是关于平台升级的预算和时间安排。这三件事性质不同,但都绕不开一个核心问题——我们的系统到底要往哪个方向走。今天我希望听到大家的真实想法,好的坏的都要。"
会议室里安静了几秒。然后李明把文件夹合上,往桌面上轻轻一推,整个人微微前倾,双手交叉放在桌面上。"先讲第二件事吧,架构优化。"
他站起来,走到白板前面,拿起一支黑色马克笔。马克笔是新的,笔帽上还有标签没撕干净,他揭下来揉成团扔进桌角的垃圾桶里。"咱们目前的平台架构是四年前外包做的,三层架构,数据库用Oracle 11g,中间件是WebLogic,前端用的是JSP+Struts1——"他一边说一边在白板上画出一个简单的拓扑图,线条干脆利落,四五个节点几分钟就画完了,"这套技术栈在四年前算不上新,放在今天就是古董了。"
他把笔帽扣上,转过身来面对会议室里的人。"古董不代表不能用。只要维护到位,老系统也能跑得稳。问题是咱们的维护跟不上,接口断了没人修,服务器内存泄漏了大半年没人查,连最基本的监控告警都没配置到位。赵志刚这周查那个社保接口的时候发现,系统日志里攒了五万多条未处理的异常警告,最早的一条是去年三月份的。"
会议室里有几个人的目光移到了桌面上。赵志刚低头翻着自己的笔记本,耳朵根微微泛红——那些积压的日志有一半是在他任内累积起来的,虽然他接手时就已经乱成一团了。
"这不是技术组的问题,"李明像是看穿了他的心思,加了一句,"前面几任交接时文档断层,又没有统一的运维规范,谁接手谁抓瞎。赵志刚这周的修复文档我看了,做得很扎实,每一步判断都有依据,说明他有这个能力。"
赵志刚抬起头来,耳朵根那点红色还没退,但嘴角已经微微翘起来了。
李明回到白板前面,在刚才画好的拓扑图旁边画了另一个草图。这个图比刚才那个复杂一些,增加了数据中台、API网关、统一认证等几个新模块,用实线和虚线标注了数据流向。"这是省厅去年底推行的新架构方案,我在厅里的时候参与起草了核心部分。这个方案的优势是:每一个业务系统不再独立建库,统一走数据中台;接口全部通过API网关对外开放,权限控制在网关层统一管理;前端不再跟后端绑死,可以独立部署、独立升级。"
他把马克笔放回笔槽里,声音恢复了那种平铺直叙的调子:"我知道这个方案对咱们来说跨度不小。所以我做了一个折中的过渡方案——不推翻重来,只替换核心模块。第一优先级的,是API网关和统一认证。"
他又坐回椅子上,打开文件夹,从里面抽出一沓装订好的A4纸,递给左手边的王世杰。"这是我昨晚做的技术评估和预算草案。王主任你先看看,有什么问题咱们现场讨论。"
王世杰接过来,双手捧着那沓纸,厚厚一摞,大概有十几页。他翻开封面的第一页就开始看了,目光一行一行地扫过去,偶尔用指腹摩挲一下纸面上的某个数字。会议室的其他人安静地等着,有人端起杯子喝水,有人低头在笔记本上画着什么东西。
大约过了四五分钟,王世杰把整份材料翻到了最后一页。他合上,放在桌面上,手指按在封面上,指节微微泛白。
"李厅,"他开口了,声音比平时低了一些,"这个预算——API网关采购加部署,十五万,统一认证模块开发,八万。加起来二十三万。咱们今年的信息化预算还剩多少?"
李明转头看向财务科的老何。老何是个五十多岁的瘦高个,戴着金丝眼镜,翻开面前那个磨破边的黑色账本看了看:"今年年初批下来的信息化专项资金还剩——我看看——七万六。"
会议室里响起一阵低低的窸窣声。二十三万对七万六,缺口接近两倍,这账怎么算都算不平。
王世杰的手指在材料封面上敲了两下。"李厅,方案我看了,技术上我没意见,方向也对。但钱的问题不是小事。二十三万要走追加预算的话,得先经过局里审批,再报到市财政,走完流程最快也得两三个月,那时候都十月份了,年底一扎账又得推到明年。"
他停了一下,又补了一句:"而且咱们现在的系统虽然老,但至少还能用。二十三万投进去,万一过渡期间出了岔子导致业务中断,这个责任——"
他后面的话没有说完,但"责任"两个字已经落在空气里了,沉甸甸的。
李明看着王世杰的眼睛,那双眼睛里没有敌意,也没有推诿的意思,是一种老机关干部面对"想做但做不到"的事情时惯有的、带着点遗憾的务实。李明忽然有点理解了王世杰这个人——他不是坏,他只是太习惯"先看钱再看事"这个顺序了,在体制里熬了二十三年,见过的项目流产比启动的多,久而久之形成了一种防御性的保守。
"预算的事情我考虑过,"李明从文件夹底下又抽出一份文件,薄薄的两页纸,上面盖着省厅信息中心的红章,"这是上周五老吴发给我的。省厅今年有一个基层单位数字化帮扶专项,重点支持API标准建设。只要咱们的技术方案符合厅里的统一架构标准,可以直接申请专项经费,不走市里那套追加预算程序。"
他把那份文件推到桌面中间,红章朝上。"这上面的标准——"他翻了翻王世杰手里那份技术评估草案的第一页,"跟我的方案是一一对应的。换句话说,咱们做的不只是给自己修系统,是在帮厅里打通基层数据堵点。所以这笔钱省厅给,不需要我们自己掏。"
会议室里安静了两秒,然后王世杰把那两页红章文件拿过去,一字一字地看。他看得很慢,眼镜上推了好几次,老花镜的镜片在日光灯下反着光。等他看完抬起头的时候,脸上那种"没办法"的表情已经不见了,换成了一种更复杂的、像是被人提前堵住了所有退路之后不得不重新审视某件事的神情。
"那走这个专项——审批周期是多久?"他问。
"对口处室直批,老吴那边初审,厅长签个字就过,最快两周。"
王世杰没有说话。他把那份红章文件放回桌上,双手交叠放在文件上方,拇指来回摩挲着纸张边缘。过了好一会儿,他才开口:"那如果——如果走这个专项的话,咱们这边做方案对接需要多长时间?"
李明看了赵志刚一眼。赵志刚清了清嗓子,翻开自己的笔记本:"如果按照李厅那个草案的框架,技术评估这部分的内容我上周五就开始准备了,今晚之前能拿出初稿。剩下是财务和合规的部分——"他看向老何。
老何推了推金丝眼镜:"财务口径的匹配,给我两天。"
"合规和流程方面,"王世杰接上了,声音比刚才有底气了一些,"我这边来把关。专项经费的使用规范跟市里不太一样,有些细节我经手过几回,知道怎么卡节奏。"
李明看着他们三个你一言我一语地把任务分了下去,心里那根一直微微绷着的弦松了半格。他没有说话,只是靠在椅背上看着会议桌周围这几个人——赵志刚在笔记本上飞速记着什么,老何翻着账本对应条目,王世杰拿起电话说"我打给局里问一下对口处室的联系人"。每个人都在做自己的事,每个人做的事情都朝着同一个方向,那种感觉跟上周一他回来时面对的那种沉默和疏离完全不同。
"好,"李明在会议桌那头轻轻叩了两下桌面,把大家的注意力收拢回来,"预算的问题就这么定了。我来说第三件事——时间安排。API网关和统一认证模块同步推进,网关走采购,认证模块我们自己开发。赵志刚牵头技术团队,老何做经费对接,王主任统筹合规和文档。目标——一个月之内把网关跑通,两个月之内双模块上线。"
他站起来,把白板上刚才画的那两个拓扑图用黑板擦擦掉了,粉笔灰簌簌地落下来,在阳光里变成一小团淡白色的雾。"一个月之后,咱们再来开一次进度会。我只有一个要求——不延期。"
他说完这句话,拿起桌上的文件夹,朝所有人微微点了一下头,然后往门口走去。走到门口的时候他停了一步,侧过头来又补了一句:"赵志刚,你那个接口修复文档,今晚十二点之前发到所有人邮箱,我要每个人看一遍。下周例会随机抽人提问,答不出来的下周请大家喝奶茶。"
赵志刚"啊"了一声,然后办公室里几个人低低地笑了起来。李梅坐在角落的位置上,捂着脸肩膀一抖一抖的,不知道是笑还是在替下周要被抽问的人担心。
李明拉开门走了出去。走廊里的午后的阳光已经很淡了,从西面的窗户斜照进来,在地砖上拉出长长的菱形光斑。他经过楼梯口的时候听见王世杰的声音从会议室里传出来,在跟谁打电话:"……对,省厅那个专项,对口单位是信息中心,联系人我这边有,你先——"
他听了几秒,嘴角动了动,然后继续往办公室走去。
窗台上那盆绿萝今天又长高了一点,最大那片叶子的叶尖已经探到了窗户玻璃上,在风里微微点着,像在跟窗外的老槐树打招呼。
第八章:技术破冰
那个老旧的数据漏洞是李梅发现的。
八月三号下午,李明正在办公室里核对网关采购的技术参数,李梅敲门进来,手里捧着一沓打印出来的纸质报表,纸张边缘被她的手指攥得微微卷曲。
"李哥,"她说,"我……我可能发现了一个问题。"
李明抬起头。李梅的表情跟平时不太一样,少了那种清爽活泼的劲儿,眉毛微微皱着,嘴唇抿成一条线,像是揣了一个什么不好开口的消息。"你说。"
李梅走到办公桌前,把那沓报表摊开铺在桌面上。纸质报表上打印的是密密麻麻的数字表格,每一列都有手写的红色批注,笔迹歪歪扭扭的,看得出来批注的人不太习惯用笔写字。
"这是去年全年的窗口业务量统计,"李梅说,指着其中一列,"您看这里,社保窗口的月办件量,去年一月到五月是稳步上升的,六月突然掉下来一大截,然后后面一直没恢复。"
李明顺着她手指的方向看过去。一月份四千两百多件,二月份四千五,三月份四千八,四月份五千一,五月份五千三,到了六月份直接掉到了三千二,之后就一直在三千上下徘徊,再也没回到五千以上的水平。李明的手指在那条"掉下来"的线上停了一下,然后他翻了几页,把前后几个月的报表放在一起对比。
"六月份发生了什么?"他问。
李梅翻开笔记本,找到自己提前查好的信息:"六月份系统有一次升级,当时的运维记录写的是'修复了已知性能问题'。但具体的升级内容文档找不到了,外包公司负责那次升级的工程师已经联系不上了。"
李明靠在椅背上,视线仍然落在那些数字上。三千二对五千三,差了将近两千件。按每件业务平均二十分钟的办理时间来算,少了将近四万分钟的窗口工作量。表面上看是"业务量下降了",但社保业务的需求端是全市几百万参保人员,需求不可能在一个月之内凭空蒸发两成。唯一的解释是——有一部分业务窗口办不了了,或者窗口不让办了,或者系统"告诉"窗口办不了了。
"把赵志刚叫来。"
赵志刚五分钟之后小跑着到了,额头上一层细密的汗珠,手里还攥着半块没吃完的饼干。他看见桌面上铺开的那些报表,又看了看李明和李梅的表情,嘴里的饼干咽了咽,没敢再吃。
"去年六月那次系统升级,"李明指着报表上那条陡然下坠的曲线,"你知道吗?"
赵志刚凑近看了看,眉头皱了起来。"去年六月……我那时候刚调到运维组不久,记得好像是打过一个小补丁,说是优化了一下数据库查询性能。但具体优化了什么地方我没有经手,当时带队的是个老工程师,姓孙,后来离职了。"
"有升级日志吗?"
赵志刚摇头:"我问过之前的同事,那个补丁是当场打的,没走正式的变更流程,日志也是手写的,不知道扔到哪个抽屉里了。"
李明的手指在桌面上敲了两下。"那数据库层面呢?打过补丁之后表结构有没有变化?"
赵志刚想了想:"表结构变化应该不大,但索引可能动过。那次补丁主要处理的是查询慢的问题,老孙当时跟我说过一句'把索引重建了一下',具体的我记不清了。"
"走,"李明把桌上的报表收起来,拿起放在椅背上的外套,"去机房。李梅你也来,你对业务数据熟,到时候帮我们对照。"
三个人沿着那条又窄又陡的水泥楼梯走下去,暗绿色的铁门被推开的时候发出了比上周五更响的"吱嘎"声,像是合页锈得更厉害了。机房里的温度比上次来的时候低了一些,李明注意到那台坏掉的空调已经被换了新的,银色外壳在昏暗的灯光里泛着崭新的哑光,出风口"呼呼"吹出的冷气干净而强劲。
"谁修的?"他问。
赵志刚愣了一下,然后才反应过来他问的是空调。"王主任上周六叫人来换的,连夜换的,星期天上午就装好了。他说机房温度降不下来会影响设备寿命。"
李明没接话,但他心里有个什么东西动了一下,很轻,像水面上被风吹起的波纹。
赵志刚在那台老旧的工控机前面坐下来,手指在键盘上敲了一会儿,调出了去年六月份的数据库操作日志。日志文件密密麻麻的,每一行都是时间戳加SQL语句的记录,普通用户根本看不懂。但李明走过去站在他身后,弯着腰一行一行地看,看了大概七八分钟,他的手指突然抬起来点了一下屏幕。
"这里。"
赵志刚和李梅同时凑过去。李明指的是一行看起来没什么特别的日志——"ALTER TABLE ssc_application DROP INDEX idx_batch_date;"——删除一个名为"批次日期"的索引。
"这个索引原来在哪个表上?"李明问。
赵志刚敲了几行代码查了一下:"ssc_application表,这个表存的是每一笔社保业务的申请记录。"
"再看一下这张表的记录数。"
赵志刚敲了一个计数查询,屏幕上跳出结果:一千三百多万条。一个一千三百多万条记录的表,删掉了批次日期索引。李明直起腰来,目光落在那条粉笔画的曲线图上——五月份五千多件,六月份三千多件。
"这个索引是干什么用的?"李梅在旁边小声问。
李明转过身来,他说话的速度比平时快了一些,但语气还是稳的:"社保业务有一个特点——所有的历史数据都会按照'批次'聚合,每一批次的业务在审核、汇总、上报的时候都要按批次日期来查。如果一个一千三百万行的表没有批次日期索引,每次查一个批次的业务就要做全表扫描,一千三百万条记录逐行比对,反应时间从几毫秒变成几秒钟。"
他顿了一下,手指在屏幕上那个"DROP INDEX"的命令上点了点。"几秒钟对于一个后台操作来说好像不算什么,但窗口前端调用的是实时接口,超时只要超过三秒钟就会被前端主动断开。也就是说,从去年六月这个索引被删掉之后,所有按照批次日期查询社保业务的操作,有相当一部分因为超时而失败了。"
李梅的眼睛慢慢睁大了。她看了看那张报表,又看了看屏幕上的日志,"所以不是业务量下降了,是有很多业务前台点查询的时候页面卡住了,工作人员不知道怎么回事,就只能让办事的人回头再来——"
"对。"李明说,"而且因为没有人追查过这个报错日志,前端那边一直以为是被动的网络波动或者系统繁忙,就一直没有上报。窗口的人只知道'有时候查不到',但不知道'为什么查不到'。"
赵志刚从椅子上站起来,后退了半步。他看着屏幕上那行两年前的SQL命令,像是看着一个自己从没注意过的陷阱。"这个索引——是当时那个补丁误删的?还是——"
"不重要了。"李明说,"重要的是我们现在把它重建回去。赵志刚,你先把ssc_application表当前的数据量和索引使用情况做一个全量统计,然后写一个创建索引的脚本。记住给索引加一个在线重建的参数,别锁表。业务时间不能中断。"
赵志刚重新坐下来,手指已经在键盘上开始敲了。他敲得很快,比上周五看李明敲脚本时少了很多犹豫,一行一行地打,中间偶尔停顿半秒思考一下,然后又继续。
李明退到机柜那边,靠在银色新空调的侧面,冷风从他背后"呼呼"地吹过来,把他衬衫的后背吹得凉飕飕的。李梅站在他旁边,手里还攥着那沓报表的边角。
"李哥,"她小声问,"你说那个老工程师——他是故意删的,还是——"
"不是故意的。"李明说,语气很确定,"他打补丁的时候可能是为了优化另一个查询,顺手删掉了一个他觉得没用的索引。那批老工程师离职率高,交接又敷衍,删掉的东西没有人知道该怎么补回来。这种事情在基层单位太常见了,有责任心的就自己慢慢查,没有责任心的就让它烂着。"
他停了一下,看着赵志刚专注的侧脸。那台老旧的CRT屏幕把他整张脸映得有点发蓝,下巴上又冒出了一层薄薄的胡茬,但他盯着屏幕的眼神是亮的,亮得让人觉得那台老机器也要被他的目光点着了。
"赵志刚这人还行,"李明说,声音不高不低,"能熬夜查日志的人,本质上不会太差。"
李梅点了点头。她低头看了看自己手里那沓报表,上面那些歪歪扭扭的红色批注是她一笔一划写的,昨天下午她把整年的数据过了一遍,发现了那条异常曲线之后又翻了两个多小时的旧文档,才把日期对上了。她没觉得自己做了什么了不起的事,但刚才李明让赵志刚来看她发现的问题时,说的是"李梅发现了一个东西",语气平静,没有夸张也没有掩饰,就是一句事实陈述。
但就是这句事实陈述,让她觉得手里那沓报表的分量不太一样了。
赵志刚的脚本写了大概四十分钟。他写完的时候整个人从工控机前转过来,脸上带着一种"我觉得可以了但还需要确认"的表情。李明走过去检查了一遍,从头到尾看了大概两分钟,然后伸手拍了拍赵志刚的肩膀。
"跑吧。"
赵志刚深吸一口气,手指悬在回车键上方停了两秒,然后按了下去。屏幕上开始滚动一行一行的执行日志,创建索引需要时间,进度条一格一格地往前走,走过百分之十、百分之二十、百分之三十。机房里的三个人都没有说话,三双眼睛都盯着那个进度条,连空调出风口的风声都显得格外清晰了。
进度条走到百分之六十的时候,李明侧过头看了一眼赵志刚。他的手指攥在椅子扶手上,指节泛白。李明又看了一眼李梅,她抱着那沓报表,嘴唇微微张开着,像是在心里默默数进度。
进度条走到百分之百的时候,屏幕上弹出"索引创建成功"的提示。赵志刚的整个人像是被卸掉了一副枷锁一样,肩膀猛地往下沉了一截,吐出一口长长的气。
"成了。"他说。
"别急,"李明走到主控台旁边,"现在跑一个批次日期的查询,跟昨天同一张表、同一批数据、同一个查询条件。我们看响应时间。"
赵志刚敲了一个查询语句,回车。屏幕上闪烁了不到一秒钟——真的不到一秒钟,肉眼几乎无法分辨的短促闪动之后,结果就弹出来了。一千多条记录整整齐齐地排列在屏幕上,从出现到完全加载完,整个过程最多两秒钟。
"以前这个查询要多久?"李明问。
赵志刚说:"昨天我试过一次,四秒七。"
四秒七缩短到两秒,前端超时的概率从将近百分之百降到了接近于零。李明看着屏幕上那一千多条记录,又想起那沓报表上那条陡然下坠的曲线,从五千三到三千二,一年了,那个数字整整一年没有回来过。
"把今天的日期记一下,"他对赵志刚说,"然后告诉窗口那边,让她们明天用老办法再查一次,看页面超时的次数有没有变化。数据统计三天之后汇总给我。"
赵志刚在本子上记下来,笔尖划过纸面的声音又急又快。
李明转身往机房门口走去。经过李梅身边的时候他停了一步,看着她手里那沓已经被攥出褶子的报表。"你发现了这个漏洞,"他说,"整件事从你开始的。回头写个工作记录,我签个字,归入你试用期的考核材料。"
李梅一愣,嘴唇动了动像是想说什么,但最后只是用力地点了一下头,声音闷闷的:"嗯。"
李明推开那扇暗绿色的铁门,走了出去。水泥楼梯还是那么窄那么陡,但他这次走上去的时候觉得脚步比上次轻了一些,不知道是因为空调吹凉了后背,还是因为那个被误删了一年的索引终于被人重新建了回去。
他走到一楼走廊的时候,发现天已经黑了。机房里没窗户,他完全没注意到时间过去了多久。走廊尽头的窗户外面是深蓝色的夜空,星星看不见,但有一弯月牙挂在槐树的树梢上面,细细的,像谁用指甲在夜空中划了一道白印子。
他掏出手机看了一眼,七点四十三分。他在机房里待了将近四个小时。
正要把手机揣回兜里的时候,屏幕亮了一下,进来一条微信消息,是李梅发来的:"李哥,这个漏洞其实我上周五就发现了,但怕不准就没敢说。今天查了两天才敢来找您。谢谢您没嫌我啰嗦。"
李明看着那段话,回了一个字:"准。"
然后他又补了一句:"以后发现什么直接说,不准我来纠偏。"
李梅的回复是一长串表情符号,笑得流眼泪那种,李明数了数,一共八个。他看着那八个黄色的圆脸笑了笑,把手机锁屏,推开了办公室的门。
屋子里黑漆漆的,窗外的月光照进来,在地板上落了一小片银白色的光。他摸到墙上的开关按了一下,日光灯"滋"地闪了两下才完全亮起来,把他那把挂在墙上的扫帚照得清清楚楚的。
他走过去,伸手摸了摸那把扫帚的塑料手柄。手柄上还有他这几日天天摸出来的温度,微微的,带着一层极薄的汗意。然后他回到座位上,打开电脑,开始整理今天下午的排查日志。
窗外那棵老槐树的影子在月光里安安静静地立着,一动不动。远处巷子里偶尔传来一声狗叫,叫了两声又停了,整条巷子重新沉入夏夜那种黏稠的、带着蝉鸣声的静谧里。
李明坐在电脑前面,键盘的声音在安静的办公室里一下一下地响着。他忽然想起今天在机房的时候,赵志刚看到进度条走到百分之百时那副如释重负的表情,想起李梅抱着一沓报表站在他旁边时说"我可能发现了一个问题"时那种不确定的语气,想起王世杰说"机房温度降不下来会影响设备寿命"时那种已经不再是"表态"而是"做事"的理所当然。
"行吧,"他心里说,"能做事了。"
他把最后一个字敲完,保存文档,关机。站起来的时候腰微微酸了一下,他伸了个懒腰,两只手臂举过头顶的时候碰到了窗台上那盆绿萝的叶子,凉丝丝的,弹了一下他的手指尖。
月光从窗外洒进来,落在他肩头,薄薄的,像一层霜。
第九章:王世杰的危机
王世杰给局里打的电话是八月五号打的,但局里的反馈八月七号才下来。
八月七号下午,李明正在和老吴通电话确认网关的接口标准,李梅忽然从门外快步走进来,手里拿着一个白色的信封,脸上的表情不太对。她走到李明桌前的时候嘴唇动了两下,先指了指那个信封,又指了指自己耳朵,意思是"您先接电话"。
李明对老吴说了句"等我两分钟",然后挂了电话,看向李梅。
"怎么了?"
李梅把信封放在桌上,信封面上印着市局人事处的红头,没有写收件人,只印了一行"内部转呈"的铅字。"这个——刚才办公室转上来的,说是给您的。"
李明拆开封口,抽出里面薄薄两页纸。第一页是一份情况说明,署名是"匿名",内容大意是"反映新任副厅长李明同志在工作推进中存在激进冒进、跳过局级审批程序、绕开常规监管流程等作风问题,建议组织予以关注"。
李明看完第一页,翻到第二页。第二页是局人事处的附函,措辞比第一页客气多了,核心意思只有一句:"此件系匿名反映,按程序转呈本人知悉,供参考。"
他把两页纸放回信封里,抬头看了看李梅。李梅站在桌边,两只手绞在一起,脸上的表情像是在等一个判决。
"你从哪里拿到的?"
"办公室转过来的,王主任让我给你送上来。"李梅犹豫了一下,又补了一句,"他——他说他看过内容了。他说让您先看,有什么问题再找他。"
李明"嗯"了一声,把信封放进抽屉里,没有再多看一眼。"下午的门禁系统供应商那边几点到?"
"约的——约的三点。"
"行,到时候叫我。"
李梅站着没动,像是在等李明多说两句关于那个信封的事情。但李明已经低头重新拿起了手机,拨回老吴的电话继续刚才没说完的技术细节讨论了。他说话的语气没有任何变化,跟讨论网关接口的时候一模一样,平静、专注、有条理,好像那个白色信封从来没有出现过。
李梅站了十几秒,终于转身出去了,门被她轻轻带上。
下午三点,门禁系统供应商的销售经理准时来了,是个三十多岁的女人,穿着藏青色西装套裙,手里拎着个密码箱。李明跟王世杰一起在会议室接待的。整个过程持续了大约四十分钟,王世杰负责谈价格和技术方案,李明偶尔在关键节点上问几句"维保条款包含几次免费上门""配件换新之后旧件是否回收"。最后谈下来的价格比王世杰第一次报给李明的那个方案又低了三个点,加上三年维保,总预算比最初的报价省了将近一万块钱。
送走供应商之后,王世杰收拾桌上的材料,看了李明一眼。"李厅,"他说,"那个匿名信的事情——"
"看过了。"李明说,"不影响干活。"
王世杰的手指在材料边缘停了停。"我在局里有些老关系,可以侧面打听一下是谁写的,也省得你——"
"不用。"李明打断他,声音不大但语气笃定,"匿名信这个东西,你越查它它就越有分量。你不查它,它自己就会凉下来。局里把信转到我手上而不是直接启动调查,说明他们已经过滤过一遍了,认定没有实质性问题。我要是这个时候去查来源,反而让人家觉得我心里有鬼。"
王世杰沉默了几秒,然后像是想通了什么似的点了点头。"那——那我这边的工作继续往前推,门禁系统的签约流程明天走。"
"好。"
两人在会议室门口分开。李明回办公室的时候,在走廊里遇到了赵志刚。赵志刚怀里抱着一沓新的运行报告,脸上带着一种藏不住的、几乎是雀跃的神色。
"李厅!您猜怎么着——今天窗口那边,社保查询页面一次超时都没有!"
李明接过那沓报告翻了一下,今天全天的调用记录里,响应时间全部在三秒以内,最快的那笔甚至不到一秒。"好,"他把报告还给赵志刚,"连续监测一周,然后给窗口那边发个正式通告,告诉她们问题已经解决了。"
赵志刚用力点了点头,转身跑走了。他跑起来的时候拖鞋在地板上"啪嗒啪嗒"地响,像一只快乐的大鸭子。
李明推开办公室的门,太阳已经从西窗斜照进来了,橘红色的光在地板上铺了厚厚的一层。他走到窗台边给绿萝浇了水,然后坐下来打开了电脑。电脑屏幕亮起来的那个瞬间,他的手指在键盘上方悬停了一拍。
那个抽屉里还放着那个白色信封。两页纸,一页匿名信,一页局里转函。
他伸手把抽屉拉开了一条缝,又合上了。
"不查。"他心里说,"查了就不值钱了。"
接下来的几天表面风平浪静。赵志刚的索引重建效果持续向好,窗口那边反馈的超时投诉降到了零。老吴那边的网关采购流程也走完了初审,陈国栋签了字,经费八月中旬就能到位。王世杰跟进的几项常规工作进展顺利,门禁系统签约了,办公用品的集中采购也按新流程走了比价程序。李梅的试用期考核材料里多了李明签过字的工作记录,上面写着"发现并追踪解决了重大数据隐患",一共十五个字,每个字都工工整整的。
但李明注意到了一些细节。
周三早上他去茶水间接水的时候,原本在里面聊天的两个人看见他进来就住了嘴,低头假装看杯子里的茶叶,等他出去了才重新开始说话。周四中午他在食堂吃饭,隔壁桌有人压低声音说"听说了吗有人往局里写信了",然后另一个人"嘘"了一声,目光往他这边飘了一下。
他没有抬头,继续吃自己的饭。
周五下午两点,李明正在办公室看网关部署的拓扑图,手机忽然响了。他看了一眼来电显示,是陈国栋的秘书小周。他接起来,小周的声音干净利落:"李副厅长,陈厅长让您明天上午九点到厅里来一趟。不用带材料,人来了就行。"
"好。"
电话挂了。李明把手机放在桌上,看了一眼窗外。老槐树的叶子被风吹得哗啦啦地响,像有人在远处撒了一把绿豆。他心里有了一个大概的猜测,但没有往下深想,继续低头看拓扑图。
周六早上八点五十,李明到了省厅。他穿过一楼大厅的时候遇到了信息中心的小孙,小孙朝他招了招手:"李副厅长!听说你们那个社保接口修好了?"
"修好了,"李明说,"断联一百六十三天,上周接上了。"
"厉害。"小孙竖了个大拇指,"厅长昨天开会还提了一嘴,说'基层自己把接口接上了,比我们坐在厅里写十份文件都管用'。"
李明笑了笑,跟他道了别,上楼去了陈国栋的办公室。陈国栋今天穿了件淡灰色的短袖衬衫,头发梳得一丝不苟。他正站在窗边看楼下中庭的银杏树,听见敲门声回头说了一句"进来",然后走回办公桌后面坐下来。
"坐。"他朝对面的椅子扬了扬下巴。
李明坐下来。陈国栋给他倒了杯茶,茶叶在水里慢慢舒展开,水色清亮。"你那个单位最近怎么样?"他问,语气像是聊家常。
"还行,"李明说,"社保接口修好了,API网关的经费也批了,下一步是统一认证模块的开发。赵志刚带的团队不错,进度比预想的快。"
陈国栋点了点头,端起自己的杯子喝了一口茶。他喝得慢,放下杯子的时候杯底和桌面碰了一下,发出轻轻的一声"嗒"。
"匿名信的事知道了吧。"
李明没有说话,只是点了点头。
"局里转给我了,"陈国栋说,"我压下来了,没有让调查组往下走。不是因为是你,是因为信里写的那几条——'跳过审批流程'、'绕开常规监管'——我让人核了对口处室的记录,你做的每一样都有据可查。API网关走的是厅里的专项,程序合规。内部技术调整用的是你的分管权限,不需要经过局里。一条都站不住脚。"
他顿了一下,目光落在李明脸上,那双老花镜后面的眼睛看人时有一种很沉的稳。"信是谁写的,你知道也好不知道也好,我不打算查。查出来反而显得我们心虚。但我可以告诉你一件事——"陈国栋的手指在桌面上点了点,"这封信不是你们单位的人写的。"
李明愣住了。
陈国栋没有继续解释,只是又端起茶杯喝了一口。"你们单位那个王主任,他虽然态度改了不少,但你在外面可能还有别的阻力。局里有些人觉得你太年轻,觉得你升得太快了,借着这个机会想敲打一下。这种事我见得多了,每回有人破格提拔,背后总会有人不舒服。"
李明坐在那里,手边的茶杯还冒着热气。他忽然明白了那封信的逻辑——那里面列举的所谓"问题"全部是关于"程序"的,一个基层单位的同事写信反映问题,通常会写具体的人和事,而程序层面的挑剔,更像是坐在办公室翻文件的人写的。
"我知道了。"李明说。
陈国栋看着他,目光里那层审视慢慢退去了,换了一种更温和的东西。"你知道什么了?"
"知道这封信不影响我干活。"李明说,"该干的活还得干,该走的程序我一样不会少走,该拿的结果我也一样不会少拿。"
陈国栋看着他看了好几秒,然后脸上浮出那天下午在会议室里看李明拿着扫帚时一模一样的笑意来。很淡,但真真切切的。"行了,"他说,"茶喝完了回去干活吧。你那个网关部署别拖太久,年底之前全省要统一走新标准,你们单位是试点,拖后腿了我找你。"
李明站起来,把茶杯里的茶一口喝了,放在桌上。"不会拖。"
他转身往外走,走到门口的时候陈国栋的声音从背后传过来,不高不低的:"李明。"
他停步回头。
"那把扫帚——还在吧?"
"在。"
"那就行。去吧。"
李明拉开门走了出去。走廊里上午的阳光从东面窗户灌进来,照得他微微眯了一下眼。他走下楼的时候路过老吴的办公室,门开着,老吴正对着电脑屏幕挠头,看见他经过抬头喊了一声:"哎!网关那个适配参数——"
"一会儿发你。"
"好嘞!"
李明走出省厅大楼的时候,天是那种八月特有的清透的蓝,云很高很远,薄薄几缕挂在楼顶上面。院子里的银杏树被风一吹,满树叶子都在翻着深浅不同的绿光,簌簌地响,像一场细密的、无人听见的掌声。
他站在台阶上站了十来秒,感受着风从面颊上滑过去的那种凉丝丝的触觉。然后他走下台阶,往停车场走去。
回单位的路上他在车上睡着了,这是这一周多来他第一次在白天闭眼。司机从后视镜里看见他歪着头靠在窗玻璃上,呼吸平平稳稳的,就没有打扰他,把车开得比来时更稳了一些,过减速带的时候都提前放慢了速度。
车子停进单位院子的时候,李明醒了。他揉了揉眼睛坐直了,看见王强正蹲在那辆皮卡旁边换轮胎,看见车回来站起来朝这边挥了挥手。李梅抱着一个快递箱子从办公楼里走出来,看见他从车上下来,远远地笑了,那种笑是亮晶晶的、全是牙齿的那种,看着就让人心情好。
他走上二楼的时候,王世杰正好从综合办出来,手里拿着个文件夹。
"李厅。"王世杰叫了他一声,欲言又止。
"嗯?"
"匿名信的事情——我听说厅里压下来了。"
"嗯。"
王世杰站在那里,手里那个文件夹被他攥了攥又松开。他的嘴唇动了动,最后只说了句:"那就好。"
然后他转身走回了综合办,推门进去的时候李明看见他办公桌上放着一杯茶,白瓷的,杯盖上凝着细密的水珠,跟那天他端到自己办公室里那杯一模一样。
李明推开自己办公室的门,扫帚还挂在墙上,窗台上的绿萝又长了两片新叶子。他走到窗边站了一会儿,看着楼下院子里王强把换下来的旧轮胎滚到墙角码好,看着李梅抱着快递箱子小跑着去了门卫室,看见一楼的窗口有人在叫"赵志刚你的快递",然后赵志刚从机房那头的楼梯口探出半个脑袋来,头发乱糟糟的,眼镜歪在鼻梁上。
他站在那里看着这些,心里有一种很平静的、踏实的感觉。那种感觉像一口打了很久的井,终于见到水了,虽然水位还不高,但你知道下面有东西在源源不断地渗上来。
手机震了一下。他掏出来看,是老吴发来的消息:"网关适配参数发你了,看看能不能跑。另外厅长让我告诉你一句——那封信的原件他烧了,以后就当没这回事。"
李明看着那条消息,打了两个字回过去:"收到。"
然后他把手机放下,坐回电脑前面,打开了老吴发来的那个压缩包。窗外那棵老槐树的影子落在他桌面上,被风吹得微微摇晃着,光影交错之间,他桌面上那个深蓝色公文包还靠着墙放着,拉链拉开了一条缝,露出里面那份省厅表彰文件的边角。
他伸手把拉链拉上了。
"干活吧。"他说,声音很低,只有自己听见。
键盘敲击的声音重新在安静的办公室里响了起来,一下一下,不紧不慢,节奏稳定。
第十章:风雨同舟
八月二十号上午,李明正在审核网关采购合同的最后条款,桌上的内线电话响了。他接起来,电话那头是王世杰的声音,比平时急了一些,尾音微微上扬。
"李厅,刚才接到局里通知,下周全省的基层数字化建设现场推进会定在咱们单位开。"
李明的手指在合同条款上停了一下。"之前不是定的市局吗?"
"改地方了,"王世杰说,声音里带着一种"好事还是坏事说不清楚"的微妙意味,"局里说咱们的社保接口修复案例被省厅点名表扬了,作为基层自力更生解决问题的典型,所以现场会放到咱们这儿,让其他兄弟单位也来看看。"
李明沉默了两秒。放在平时,单位的某项工作被省厅点名表扬是求之不得的好事,承办现场会更是难得的露脸机会。但问题是——八月下旬,距离一个月的网关部署期限只剩不到两周,技术组所有人都在连轴转,赵志刚已经连续加班了九天,昨天下午李明路过机房的时候发现他趴在工控台上睡着了,脑袋底下垫着一本翻开的《Spring Cloud微服务实战》。
"什么时候开?"
"下周四,八月二十六号。参会的有省厅信息中心的几位处长、市局分管领导,还有全市六个基层单位的技术负责人,加起来大概三十人左右。"
李明在心里快速算了一下时间。八月二十六号,距离网关部署的原定截止日期还有四天。如果一切顺利的话,现场会开的时候网关系统应该刚刚跑通,还处在最不稳定的磨合期。
"会务的事情谁在统筹?"
"我,"王世杰说,"下午我先把方案拿出来,会场布置、流程安排、人员接待这些我来负责。技术演示那部分——得你来。"
"行,"李明说,"方案出来了让我看一眼。"
挂了电话之后,李明靠在椅背上想了将近十分钟。窗外的太阳透过槐树叶子的缝隙照进来,在桌面上落下密密麻麻的光斑,像一张闪烁的网格。现场会是一个机会,也是一个巨大的变量——三十个业内同行坐在台下,看着你演示一个刚刚部署完毕、尚未经过长时间稳定性验证的新系统,任何一个环节出岔子都会被放大数倍。
但他没有犹豫太久。他拿起手机给赵志刚发了一条消息:"下周四全省现场会,你那个网关演示准备一下。"
赵志刚的回复隔了半分钟才来,就两个字:"我靠。"
然后是第二句,隔了几秒:"收到。"
李明看着那两个字笑了一下。他知道赵志刚这人,嘴上说"我靠"的时候心里已经在开始盘算技术方案了,真正怂的人连"我靠"都说不出来。
接下来的几天,整个单位进入了一种紧锣密鼓的"战前"状态。王世杰把会务方案改了四版,每一版都送到李明桌上请他过目,从签到台的摆放位置到茶歇点心的采购清单,事无巨细。李明每次看完都批"可以",然后加一句"点心不用太贵,但水要多备几箱,会议室空调冷,有人爱喝热的"。
王世杰每次听完都点头,转身出去的时候步子比进来的时候快了那么一点点。
技术组那边,赵志刚从周一早上开始就带着团队做网关的压力测试。模拟三十个用户同时访问、模拟五十个、模拟一百个。前两轮测试都有小问题,第三轮跑完之后,赵志刚从机房出来的时候整个人像从水里捞出来的,T恤后背湿了一大片,但脸上的表情是松弛的。
"跑通了,"他对李明说,"一百个并发用户,响应时间都在一秒五以内。服务器CPU占用率最高到了百分之六十三,没有触顶。"
"今天早点下班,"李明对他说,"明天开始调演示脚本,你需要什么数据我给你开权限。"
赵志刚愣了一下,然后"嗯"了一声。他转身往楼梯口走了两步又停住,回过头来:"李厅,那个统一认证模块——我昨天半夜把接口文档写完了,发你邮箱了。你看看行不行。"
"看过了,"李明说,"我改了两个参数,其他没问题。文档写得很好。"
赵志刚没有回头,但李明看见他的耳朵红了。他快步下了楼梯,拖鞋在水泥台阶上"啪啪啪"地响着,很快就消失在楼梯拐角。
八月二十四号,周二,离现场会还有两天。李明下午三点去机房看演示脚本的调试情况,走到地下一层那扇暗绿色铁门前的时候,听见里面传来一阵急促的、压低了但依然尖锐的说话声。他推开门,看见赵志刚蹲在主控台前面,手里攥着一根网线,脸涨得通红,对面的交换机接口指示灯一闪一闪地亮着诡异的橘色光。
"怎么了?"
赵志刚抬起头,嘴唇抿了抿,声音有点哑:"网关和旧系统之间的路由通不了了。刚才还好的,我重启了一下交换机就——"
李明没有问他"为什么会这样"。他走过去蹲下来,顺着那根网线一路检查到交换机端口,然后把网线拔下来,换到旁边一个空端口上。指示灯闪了两下,绿色,稳定。
"端口坏了,"他说,"换一个就行。"
赵志刚看着那个重新亮起来的绿灯,喉结上下动了一下,像是有什么话堵在嗓子眼。他张了张嘴,最后说出来的是一句"我就知道不该今天动交换机"。
"你今天不动它,现场会那天它也会坏,"李明站起来,拍了拍膝盖上的灰,"提前发现了是好事。明天联系后勤把交换机换掉,顺便把机房所有的备用端口都测一遍。一天时间够不够?"
赵志刚深吸了一口气:"够。"
晚上七点,李明从办公室出来准备去食堂随便吃点东西,路过一楼走廊的时候听见会议室里有人声。他走过去推开半掩的门,看见王世杰正站在会议室里,一个人对着投影幕布,手里拿着一个遥控器,一页一页地翻着PPT。幕布上放的是现场会的流程安排,字体调得很大,每一页的重点都用红色加粗标了出来。
"王主任,还不下班?"
王世杰被他的声音吓了一跳,遥控器差点脱手。他转过头来,脸上带着一种被人撞见了"做私事"的局促:"我……我再过一遍流程。明天还要跟局里对一下参会名单,怕还有漏的。"
李明走进去,在会议桌边坐下来。"放一遍我看看。"
王世杰愣了一下,然后重新按下放映键。整个流程从签到开始到最后的合影结束,一共二十六页PPT,王世杰一边翻一边口述补充,把每一个环节的时间节点、负责人员、备用方案都说了一遍。他说到茶歇环节的时候忽然顿住了。
"茶歇——我定了九十九块钱一位的标准,有点贵了,但局里那边说参会人员规格高——"
"没超出预算就行,"李明说,"这种场合别省钱。另外,茶歇的时候你把技术组的几个人安排进来,让他们跟兄弟单位的技术负责人多聊一聊。人脉也是生产力。"
王世杰的遥控器在手里攥了攥,像是在消化这句话。过了几秒他点了点头,说了句"好,那我明天调整一下人员安排"。
李明站起来往门口走了两步,又停下。"王主任,"他说,"周三下午把所有物料再盘一遍,提前一天发现问题,比当天手忙脚乱强。"
"我知道了。"
李明走出会议室的时候,走廊里已经暗下来了,只有尽头那扇窗户还透进来一点暮色的余晖。他听见身后会议室里的PPT放映声又响起来了,王世杰在轻声念着什么,像是在把流程背下来。
八月二十六号,周四,现场会当天。
早上六点半,李明到单位的时候天刚亮透不久。院门口的花坛被重新修剪过了,那棵歪脖子老槐树底下原来堆着的几袋废料也被清走了,整个院子看着宽敞了不少。门卫老周换了身干净的白衬衫,站在门口像一尊门神,看见李明进来的时候把腰挺得直直的。
"李厅早!"
"早,周师傅。"
李明走进办公楼,发现走廊里的灯全部亮了。那几盏平时总是闪烁的灯管被换掉了,白花花的日光从头顶均匀地洒下来,把地砖上每一道接缝都照得清清楚楚。一楼会议室的门开着,王世杰已经在了,正弯腰检查每一把椅子的摆放角度,看见李明进来直起身子。
"李厅,都准备好了。"他说这话的时候声音里有一种沉着,那种沉着来自于反复的排练和对每一个细节的把控,"签到台在门口左手边,文件袋每套十五份材料,座次表按局里给的名单排好了。会议室的温度我设的二十二度,如果太冷我再调。"
李明扫了一眼会议室。椭圆会议桌上铺了新的墨绿色桌布,每个座位前摆好了文件袋、矿泉水、笔记本和签字笔,笔的方向统一朝右上方四十五度,整整齐齐的。讲台旁边的演示区已经架好了两台备用笔记本电脑,赵志刚正蹲在桌子底下检查电源线,听见脚步抬起头来朝他做了个"OK"的手势。
"去吧,"李明对王世杰说,"开门迎客。"
八点半开始,参会人员陆续到了。李明站在签到台旁边跟每一位来的人握手寒暄,来的有省厅信息中心的副处长、市局分管信息化的副局长、还有六个基层单位的技术负责人。有几个是李明在借调期间见过的熟面孔,握完手之后又多聊了两句。市局的副局长姓杨,五十出头,戴着方框眼镜,握完手之后打量了李明一眼。
"李明是吧?听陈厅长提过你,说你把那个断了一百多天的接口接上了。"
"是,上周刚稳定运行了一周,今天演示的时候大家可以看一下效果。"
杨副局长点了点头,拍了拍他的肩膀进去了。那一下拍得不轻不重,力道刚好,李明感觉肩膀上的触感带着一种"认可"的意味。
九点整,会议正式开始。前半程是省厅和市局的领导讲话,李明坐在第一排中间的位置上认真听着,偶尔在本子上记两笔。他注意到王世杰站在会议室的最后面,手里拿着一个对讲机,随时观察着全场的情况——谁的水喝完了,谁在咳嗽可能需要纸巾,空调出风口的风向有没有吹到讲台上。他的动作很轻,每一次调整都不打扰到任何人,像一台运转平稳的、无声的机器。
九点四十分,轮到李明做技术演示。他走上讲台,把U盘插进备用电脑里。大屏幕上跳出了第一页PPT,左上角印着省厅统一架构标准的标识,右下角是他们单位的名称。
"各位领导、各位同事,"他开口了,声音稳当,没有快也没有慢,"今天我要跟大家展示的主要是我们单位最近做的一个技术升级案例——从老旧的外包系统迁移到省厅统一标准,中间遇到的问题和解决方案。"
他按了一下遥控器,PPT翻到第二页,那是他第一次到机房时赵志刚拍的一张照片——主控台上那台老旧的CRT屏幕亮着,旁边堆着乱七八糟的线缆和拆开的机箱盖板。
"这是两周以前,我们单位机房的现场。"他说,"系统运行状态是:三十七个接口只有二十一个能用,一个关键接口断联了一百六十三天,积累了五万多条未处理的异常警告。"
会议室里安静了一会儿,几个基层单位的技术负责人交换了一下眼神。李明能感受到那种"原来你们也这样"的共鸣,那种眼神里的潜台词是"我们那儿也差不多"。
然后他按了下一页。照片切换成了赵志刚上周拍的同一角度——CRT屏幕换成了新的显示器,线缆全部理进了线槽,机柜门关得严严实实,银色新空调的指示灯稳稳地亮着。
"这是今天早上六点半拍的。"他说,"现在我们单位的信息平台运行状态是:三十七个接口全部可用,断联一百六十三天的社保接口已稳定运行两周零三天,日处理业务量比修复前提升了百分之六十二,窗口工作人员反馈的系统超时投诉从每周十五件降到了零。"
有人在后排轻轻鼓了两下掌,然后其他人也跟着拍了起来。掌声不算热烈,但在那个小小的会议室里显得格外清晰,像是落在水面上的石子激起的涟漪。
"下面我给大家做一个实时的网关演示。"李明把PPT关上,屏幕切换到网关的后台管理界面。赵志刚在下面帮他操作着演示客户端,李明一步一步地展示网关的配置、路由转发、权限控制和安全策略。每一个环节他都讲得慢,一边操作一边解释原理,偶尔有参会的人举手提问,他也一一回答了。
演示进行到第十五分钟的时候,赵志刚的手指在客户端上顿了一下。
李明注意到他的表情变了——那种细微的变化只有跟他一起熬过夜的人才看得出来。赵志刚的右手食指微微抬离了鼠标,像是在犹豫要不要继续点下去。他的目光从屏幕边缘飘到了李明脸上,那个眼神里写着一句话:出问题了。
李明没有停顿。他继续讲着网关的安全策略设计,同时不动声色地从讲台侧面向赵志刚的方向走了两步。他的目光扫过赵志刚面前的屏幕,看见客户端正在尝试调用一个接口的响应状态码一直出不来,显示"正在加载"的旋转图标转了一圈、两圈、三圈。
演示用的接口超时了。
台下三十双眼睛正看着大屏幕上的网关管理界面,没有人注意到赵志刚面前的客户端出了什么问题。但李明知道,如果超过十秒这个接口还不返回结果,下面一定会有人发现,然后提问"这个接口怎么一直在转"。
他的脑子里在零点几秒之内闪过了几个可能的故障原因,然后他做了决定。
"不好意思,各位,"他转过身来面对会议室,语气轻松得像是临时起意,"正好演示到权限控制这块,我们直接连到生产环境看看真实业务的效果,比模拟数据有说服力。赵志刚,你把网关生产环境的日志调出来投到大屏上。"
赵志刚愣了一下,然后迅速领会了"生产环境"这四个字的含义。他用最快的速度关掉了那个卡死的演示客户端,打开了另一个早已配置好的生产环境监控界面。大屏幕上跳出一组实时数据——社保接口今天的累计调用次数、响应时间曲线、成功率统计,图表一清二楚,没有任何延迟。
台下的人把注意力集中到了生产环境的监控数据上,没有人追问刚才那个卡住的界面。赵志刚的手指在键盘上飞快地敲着,一边切换监控视图一边偷偷摸出了手机。李明看见他在屏幕上按了几下,然后抬头看了自己一眼,那一眼的意思是"我找原因了"。
李明继续讲着,声音没有加快也没有放慢,他一边解释实时监控图表的含义一边在心里掐着秒。大约三分钟之后,赵志刚的手指在手机键盘上快速地打了一行字,屏幕朝他的方向翻了一下。李明看清了那行字:"演示客户端内存溢出,我重启了,好了。"
李明点了点头,对台下说:"好,我们再切回演示界面看看刚才那组权限控制的数据。"
赵志刚重新打开演示客户端,这一次界面加载流畅,接口调用的状态码秒回"200 OK"。他按照之前的流程又演示了一遍权限控制的功能,这次全程没有任何卡顿。
整个演示比原计划多用了七分钟,但没有任何人注意到。因为李明把那七分钟填得满满的,用生产环境数据、用现场问答互动、用一次从演示转生产再转回演示的流畅切换,把那块卡住的蛋糕完美地包进了一层看不出来的糖衣里。
演示结束时,会议室里响起了比刚才更热烈的掌声。杨副局长第一个站起来,拍了几下手掌之后朝李明点了点头:"原来跟省厅标准对接的网关还可以这么玩,回头我们那边也要申请一个类似的专项。"
李明走回座位的时候,经过赵志刚身边。他低头看了一眼赵志刚面前的客户端界面,已经恢复正常了,所有功能调用都在绿油油的"OK"状态里安静地待着。赵志刚的额头上还有一层没擦干净的薄汗,眼神里带着一种劫后余生般的庆幸。
"没事了,"李明用只有两个人能听见的声音说,"你反应很快。"
赵志刚的嘴角动了动,没有说出话来。他只是把客户端界面最小化,打开了刚才出问题的那个接口的日志文件,一行一行地标记着什么东西。
会议结束时是十一点五十分。王世杰指挥后勤人员把会议室快速整理成了茶歇区,点心、水果、茶水依次摆上了长条桌。与会的人三三两两地聚在一起聊天,李明站在角落里跟市局信息处的一个人交流网关部署经验,余光看见王世杰在茶歇桌边不停地给各位领导续水、递纸巾,动作熟稔,笑容得体,找不到任何破绽。
没有人知道二十分钟前这个会议室差点演砸了一场重要的现场演示。
午饭后参会人员陆续散去。李明站在院门口送走最后一批人的时候,已经是下午一点多了。八月正午的太阳白花花地挂在头顶,晒得地砖发烫,他站在门廊底下那点阴影里,感觉后背的衬衫已经湿了一层。
王世杰从办公楼里走出来,手里拿着一个文件夹和一张写着密密麻麻备注的清单。他走到李明旁边站定,也站在那点阴影里,两个人并肩看着最后一辆车拐出巷口消失在梧桐树荫底下。
"李厅,"王世杰说,声音低低的,带着一种不知道该怎么开口的犹豫,"演示的时候,是不是出了什么问题?"
李明侧过头看他。王世杰的目光没有看向他,而是落在巷口那棵歪脖子老槐树上,语气里带着那种在会务现场盯了三四个小时之后特有的敏锐和疲惫。
"客户端内存溢出,"李明说,"赵志刚重启了,三分钟之内恢复了。"
王世杰的嘴唇动了动,像是想说"我就知道"又像是想说"还好没出事",但最后他只说了一句:"那小子下次提前测一下内存就好了。"
"嗯,"李明说,"他也吓到了,下次会注意的。"
两个人站在门廊底下沉默了几秒。午后的热风从巷子口吹进来,带着梧桐叶子和晒热的柏油路面混合的气味,闷闷的,裹着人整个裹进去。
"王主任,"李明忽然开口,"今天上午的会务,你做得很好。各个环节都没有出纰漏,从签到到茶歇到散场,很顺。"
王世杰站在他旁边,手里那个写满备注的清单被他卷成了一个纸筒又松开。他的肩膀微微动了一下,像是有什么东西从那里卸下来了。他没有转过头来看李明,只是把视线从老槐树上收回来,落在地砖的接缝上。
"我干了二十三年会务了,"他说,"这种事我不会让它出岔子。"
李明没有再说什么。他转身往办公楼里走了,走到楼梯口的时候回头看了一眼,王世杰还站在门廊底下,面对着空荡荡的院子,手里那个清单已经被他抚平了,捏在指间像一张平整的纸牌。
他忽然想起王世杰第一次端茶到他办公室时那种用力过度的表情和那种干巴巴的"我这边工作不到位"的道歉。那已经是不到一个月之前的事情了。
他继续上楼去了。
下午技术组复盘的时候,赵志刚低着头站在工控台前面,像是准备挨批。李明走进机房的时候他就站起来了,手在裤腿上擦了又擦。
"李厅,我今天——"
"你今天做得好,"李明说,"故障发现得早,切换得快,配合得也默契。"
赵志刚愣了一下,然后喉结动了动,声音有点发哑:"可是演示客户端不该在那种时候——"
"那种时候什么都会发生,"李明靠在机柜侧面,两只手抱在胸前,"你记住了——现场会的真正能力不是靠不出问题来证明的,是靠出了之后能不能稳住。今天我们稳住了,那就够了。"
赵志刚站在那里,眼睛眨了好几下,然后深深地点了点头。他重新坐下来的时候,手指放在键盘上比刚才稳当了许多。
李明走出机房的时候,那台新空调的冷风从他背后追出来,凉丝丝的,把整个下午积累的燥热一扫而空。他走上楼梯的时候掏出手机看了一眼,有一条未读消息,发信人是陈国栋的秘书小周。
"陈厅长说,今天下午的现场会他远程看了直播。他让我转告你——网关演示的时候,中间那个三分钟的切换做得漂亮。"
李明看完那条消息,把手机锁屏,揣回兜里。楼梯间里有点暗,只有尽头那扇小窗透进来一束下午四五点钟特有的金色阳光,照在水泥台阶上,斜斜的,亮亮的。
他一步一级地走上去,步伐稳当。
窗外的老槐树还在沙沙地响着,像有一场看不见的雨在敲它的叶子。
第十一章:台下十年功
现场会之后的第三天,单位收到了省厅发来的正式通报。通报内容不长,核心就一句话:XX单位在全省基层数字化建设现场推进会上展示的API网关升级案例,具有一定的示范推广价值,建议其他基层单位参考借鉴。
通报是李明拆开的,他看完之后放在桌上,没有转发也没有复制到工作群,就那么放着。但消息还是传开了——先是李梅在走廊上看见他时说"李哥听说咱们上省厅通报了",然后是赵志刚从机房跑上来问他"是不是真的",再后来连门卫老周都凑过来问了句"李厅,听说咱们被表扬了"。
李明对每个人的回答都一样:"通报上有名字的是咱们整个单位,不是我一个人。"
周五下午,王世杰敲开了李明办公室的门。他手里拿着一张粉红色的请柬,封面上印着"省厅信息中心·答谢晚宴"的字样。
"李厅,局里转过来的,邀请咱们单位参加下周三的全省信息化工作总结晚宴。赴宴人员有省厅领导、各市局分管负责人,还有一个针对基层单位的表彰环节。"
"表彰环节?"
王世杰翻开请柬内页,指了指其中一行小字:"'对在本年度基层数字化建设工作中表现突出的单位及个人予以表彰'。省厅那边提前跟局里通了气,说表彰名单里有咱们单位,还有一个先进个人——"他顿了一下,目光从请柬边缘抬起来,落在李明脸上,"是你。"
李明靠在椅背上,没有说话。王世杰把请柬放在他桌上,又补了一句:"另外,局里让我问一下,晚宴上要不要做个经验分享。如果需要的话,我可以帮您准备一下发言稿。"
"不用稿子,"李明说,"到时候我即兴说两句。王主任,你去不去?"
王世杰一愣,像是没想到李明会问自己。"我?我就是个干会务的,这种场合——"
"这个现场会从策划到落地你全程盯下来的,你不去谁去?"李明站起来,走到窗台边给绿萝浇水,水珠落在叶片上弹开,在窗台上溅了几粒细小的水花,"你那边把参会的名单报上去,加上你一个。"
王世杰站在原地,两只手垂在裤缝两侧,攥了一下又松开了。"好,"他说,嗓子有点发紧,"那我去安排。"
他转身往外走了两步,又停住了。"李厅,"他说,背对着李明,声音比刚才闷了一点,"谢谢你。"
李明在浇花的手停了一拍。"谢什么?"
"谢你——"王世杰肩膀微微动了一下,像是在组织语言,最后说出来的却很简单,"谢你让我去。"
他说完就拉开门出去了,脚步比平时快,但脚步声还是稳稳的"噔噔噔",一下一下,踩在走廊的地砖上。李明站在窗台边看着他走出去,手里还攥着那个浇花的水壶,壶嘴滴下一滴水来,落在窗台上"啪"一声,在那个圆形的水渍中间又砸出一个更小的圆。
八月三十一号,周三,晚宴。
晚宴设在省厅附近的国贸酒店三楼宴会厅。李明穿了一身深灰色的西装,领带是昨天晚上李梅帮他挑的——她下班前路过他办公室的时候,看见他正对着镜子比领带,说"李哥你那个蓝色的太老气了",然后从自己包里翻出一条深红色的领带递给他。
"借您的,不用还。"
那条深红色的领带正好配他的灰色西装。
李明到的时候宴会厅已经坐了七成的人。他远远看见陈国栋坐在主桌正中央的位置,正跟旁边市局的杨副局长说着什么。老吴在信息中心的桌上冲他招手,小孙在旁边摆弄手机。他朝老吴点了点头,然后跟着服务员的引导在自己的位子上坐下来。
王世杰坐在他右手边第二个位置,今天换了件藏青色的夹克,头发比平时梳得整齐了一些,整个人看着比在单位里年轻了好几岁。他坐下之后把桌牌摆正,又把面前餐具的位置微调了一下,动作熟练得像是他才是这场宴会的承办方。
八点整,晚宴正式开始。前半场是省厅领导的讲话和年度工作总结,李明听得很认真,偶尔跟王世杰交流两句关于某个数据的解读。王世杰对全系统的整体情况了解得比李明想象中全面得多,哪个单位的预算执行率多少、哪个地区的系统上线进度滞后了多少,他张口就来,像是在脑子里装了一个数据库。
"你这些数据哪来的?"李明趁着领导换人讲话的空档小声问。
王世杰端起茶杯喝了一口:"厅里每年发的工作简报,我看完了就记下来。干了二十三年了,记别的不行,这些跟业务相关的数字我过目不忘。"
李明多看了他一眼。这个人干了二十三年办公室主任,记住的全是跟工作有关的数据,其他那些——谁提拔了谁调走了谁跟谁不对付——他反倒不怎么关心。忽然之间,李明对王世杰有了一种新的理解。
九点左右,表彰环节开始了。主持人念了三个单位的名字,第三个就是李明他们单位。他站起来,走到台前,从陈国栋手里接过那块亮晶晶的奖牌。奖牌不大,金属的,拿在手里沉甸甸的,上面刻着"基层数字化建设先进单位"几个字。
陈国栋把奖牌递给他的时候,握着那块奖牌的手没有立刻松开。他微微前倾,用一种只有两个人能听见的声音说:"晚宴之后别走,我让司机等你。"
李明点了点头,陈国栋松开了手。
他回到座位上的时候,王世杰的目光落在他手里那块奖牌上,停了好几秒。李明注意到他的表情,把奖牌往他面前推了推。"你看看。"
王世杰接过去,双手捧着翻来覆去地看了一遍。他的拇指在那行"先进单位"的金字上摩挲了一下,然后还给了李明,嘴唇动了动,像是想说什么又咽了回去。
表彰环节之后是自由交流时间。李明端着酒杯在各个桌之间走动,跟不同单位的人交换名片和技术联系方式。他走到老吴那桌的时候,老吴拉着他坐下来,小孙在旁边给他倒了杯茶。
"李副厅长,"老吴压低声音,脸上带着那种"我知道一个秘密"的表情,"你知道你那块奖牌是怎么来的吗?"
李明看着他不说话。
老吴自己憋不住了:"会上提名的那三个单位里面本来没有你们。是陈厅长在会上把你们那个社保接口修复的案例单独提出来,说'这个单位的做法值得所有基层学习,断联一百六十三天的接口自己接上了,比坐在厅里等外包公司来修强一百倍'。提名是当场改的。"
李明端着茶杯的手没有抖,但他把茶杯放下的时候多用了两秒。"老吴,"他说,"你话太多了。"
老吴嘿嘿一笑,拍了拍他的肩膀起身去别桌了。小孙还在座位上,看着李明欲言又止的样子。李明看了他一眼:"你也知道?"
小孙赶紧摇头,但耳朵尖红了。
李明从老吴那桌离开的时候,在宴会厅的角落遇到了陈国栋。老头子端着一杯白水,正靠着一根大理石柱站着,看着宴会厅里人来人往的热闹场面,表情很淡,像是在看一场跟自己无关的晚会。
"陈厅长。"李明走过去。
陈国栋转过身来,打量了他一眼,目光在他那条深红色领带上停了一下。"领带不错。"
"同事借的。"
"嗯。"陈国栋喝了口水,"表彰的事老吴跟你说了?"
"说了。"
"本来想让你们安静地做完试点再亮相的,"陈国栋说,语气平淡,"但现场会那天市局那边的人回去之后反馈太积极了,厅里讨论了一下,觉得与其藏着不如推一把,让其他单位也动起来。你家那个王主任——"他停了一下,"会务做得不错,现场会结束之后有人跟我反馈说'那个主任挺专业的'。"
李明没有说话。陈国栋看了他一眼,目光里有一层很淡的笑意。
"行,去吧,别让别的桌的人等着你。晚宴结束我让小周送你,到时候车上跟你说个事。"
晚宴在十点前结束了。李明站在酒店门口送走了几拨人,和杨副局长握了手,跟几个基层单位的技术负责人约好了下个月互访的时间。王世杰站在他旁边帮他递名片,两个人配合得像在食堂排队打饭一样默契。
等最后一拨人走了,小周的车已经停在酒店门口等着了。李明跟王世杰说"你先回吧,我还有点事",然后上了车。
车子开出去之后,小周没有往他单位的方向走,而是拐上了另一条路。"陈厅长在办公室等您,"他说,"他说今天太晚了就不叫您跑一趟了,他过去。"
李明坐在后座上,窗外的夜景在暗色的玻璃外面一帧一帧地滑过去。南昌的夏夜比白天凉快了不少,路灯从头顶流过去,光线在车内明灭交替,他的脸一会儿亮一会儿暗。
省厅大楼里只有三层东侧的几个窗户还亮着灯。李明跟着小周上了楼,陈国栋办公室的门开着,老头子坐在办公桌后面,面前的茶还冒着热气。
"坐。"陈国栋朝他对面的椅子扬了扬下巴。
李明坐下来。陈国栋给他也倒了一杯茶,跟上次一样,新茶,水温刚好。
"叫你留一下,是有个事情跟你说。"陈国栋端起茶杯喝了一口,放下,"厅里下个月有一批干部调整,我考虑把你调到信息中心来,副主任的位置还空着。省厅平台建设的整体规划需要你这种既懂技术又了解基层的人。"
李明握着那杯茶,杯壁的温度透过指腹传上来,温热的。他沉默了几秒钟,然后开口了。
"陈厅长,"他说,"我还想再待一段时间。"
陈国栋看着他,没有意外也没有失望,只是问:"多久?"
"至少等统一认证模块跑起来,等网关在全省标准接口里稳定运行三个月以上。现在走的话,后续的事情没有人能完整接手。王世杰擅长会务和流程,但不碰技术。赵志刚技术上有潜力,但他还缺全局观。李梅新来的,还需要时间。如果我这个时候调走,这个试点就等于烂尾了。"
他说完这些话的时候,办公室里安静了那么几秒钟。窗外中庭那棵银杏树在夜风里轻轻摇着,叶子的沙沙声隔着玻璃传进来,像一层薄薄的白噪音。
"你知道你拒绝了什么吗?"陈国栋问。
"知道。"
"上一次你拒绝省厅的挽留,是拒绝了留下。这一次你是拒绝了晋升。"
"嗯。"
陈国栋看着他看了好一会儿,然后伸手端起自己的茶杯,把里面剩下的茶水一饮而尽。他放下杯子的时候,嘴角那层极淡的笑意又浮上来了。
"两次了,"他说,"再加一次就成三顾茅庐了。"
李明没有说话。他端着手里的茶,也喝了一口。茶水沿着喉咙滑下去的时候有一股清冽的回甘,在舌根处慢慢化开。
陈国栋往椅背上一靠,双手交叠放在腹前。"行,那就再等三个月。三个月之后我再来找你谈这件事。到时候你要是还说不走——"他顿了顿,"那我就把你那个单位直接升成厅里的试点基地,让你哪儿也去不了。"
李明放下茶杯,杯底在桌面上碰出"嗒"的一声。"那就三个月后再说。"
他站起来。走到门口的时候陈国栋在身后又开口了。
"李明。"
他停步回头。
"你知道我为什么三次留你吗?"陈国栋的声音不高,语速比平时慢了一些,像是在斟酌什么很重要的措辞,"你借调两年,写的每一版方案我都看过。你那个全省平台建设的初稿,写到第三版的时候就已经比大部分老工程师的终稿还完整了。但真正让我记住你的,是你离开省厅那天在我办公室说的那句话。"
李明站在门口,走廊里的灯光从侧面照进来,把他半张脸照得亮堂堂的。
"你说——"陈国栋回忆了一下,把那句话原封不动地复述了出来,"'我做的那个方案,在厅里做成什么样我心里有数。但要是放在基层单位运行不起来,那就是一纸空文。我得回去看着它长起来。'"
他复述完这句话之后停了一会儿,办公室里重新安静下来。
"行了,"陈国栋说,"你回去吧。三个月之后见。"
李明走出办公室的时候,走廊里空荡荡的,只有头顶的日光灯发着均匀的白光。他一步一步地朝楼梯口走去,皮鞋踩在地砖上的声音被空旷的走廊放大又缩小,像某种回应。他下到一楼的时候忽然想起一件事——他今天出门的时候好像没有跟那把扫帚说"再见"。
这个念头让他自己都觉得好笑。他站在省厅一楼大厅里笑了一下,推开门走了出去。
外面是八月末的深夜,月亮被薄云遮了一半,街灯的光晕在夜雾里晕开来,把整条街铺上了一层柔和的橘色。小周的车还在门口等着,他拉开后门坐进去,车子平稳地驶离了省厅大院。
他靠在后座上看车窗外流淌的夜景,心里很安静。那种安静不是空荡荡的安静,而是一种被填满了之后的安静,像一只箱子终于装好了所有该装的东西,盖子合上了,严丝合缝。
手机在口袋里震了一下。他掏出来看,是王世杰发来的消息:"李厅,单位的门我让老周留着了,你回来直接进。"
他看着那条消息,打了一行字回去:"好,你先休息。"
然后他又加了一句:"今天辛苦了。"
王世杰的回复隔了半分钟才来,只有一个字:"嗯。"
李明把手机锁屏,继续看车窗外的夜景。车子穿过八一广场的时候,广场上还有零星的几个人,有人在长椅上坐着,有人在遛狗,远处纪念碑的轮廓在夜色里显得格外高大。
他想起两年前自己从同一段路经过的时候,怀里抱着一个纸箱,心里想着"好好干,争取留下"。那时候他看着窗外也是同样的夜景,八一广场、纪念碑、梧桐树的叶子在路灯下被风吹得翻来覆去。
两年过去了。他没留在省厅,但坐在了另一辆车上,带着一块"先进单位"的奖牌和一把挂在办公室墙上的扫帚,回一个单位。那个单位的地板他扫过,机房的空调他换过,断了一百六十三天的接口他接上了。
他觉得自己走的这条路,比留在省厅的那条路,要宽一些。
车子在单位门口停下来的时候,门卫室的灯还亮着。老周从窗户里探出头来朝他挥了挥手,李明也朝他挥了挥手,然后推门下了车。夜风吹在脸上凉丝丝的,他站在门口深深吸了一口气,空气里有梧桐叶子和夏夜露水的气味,淡淡的,很好闻。
他走进院子,上二楼,推开办公室的门。黑暗中那盆绿萝的轮廓在窗台上静静立着,月光从窗口照进来,在地板上铺了一块银白色的光毯。他走过去,伸手碰了一下墙上那把扫帚的塑料手柄,它还在那里,温润的,安静的。
"回来了。"他心里说。
窗外,那棵老槐树的叶子在夜风里沙沙地响着,像在回应什么。
第十二章:扫帚的意义
九月的第一周,李明把办公室里的布局重新调整了一下。
以前那张老旧的办公桌被他挪到了靠窗的位置,正对着那盆越长越好的绿萝。文件柜从西墙移到了东墙,腾出来的空地上摆了一张新的会议桌,圆形的,能坐四个人。他在那张小圆桌上开了三次内部碰头会,每次赵志刚、李梅、王世杰三个人围着坐,一人一杯茶,半小时之内把当周的技术进度和需要协调的事情过一遍。效率比之前开了好几次的大会高了不少。
李梅那盆绿萝已经分了一枝出来种在了新花盆里。她说"绿萝特别好养,剪一枝插土里就能活",然后就把那枝新绿萝放在了李明的小圆桌正中央。绿萝长得快,没几天就出了根,新叶子嫩生生的,在开会的时候偶尔被碰一下,轻轻晃两下又恢复了。
赵志刚那边的统一认证模块开发比预期顺利。老吴从厅里发来的那些工具脚本帮了大忙,很多原本要写一周的代码三天就跑通了。赵志刚现在每天晚上八点下班——比之前早了将近两个小时——临走前会在李明办公室门口探头说一句"李厅我走了,明天早到"。
李明每次都说"好",然后继续看文件。
王世杰的状态也在变化。那种变化很缓慢,不仔细看观察不到,但李明注意到了——他跟人说话的时候不再习惯性地先弯腰了,说话的底气比以前足了一些,虽然还是那种老机关特有的谨慎和客套,但句子与句子之间的停顿变短了,那种反复掂量话该不该说的踌躇消退了,像是终于不再担心哪句话说错了会被人抓住。
九月十号,教师节那天,李明正在看网关稳定运行四周的监测报告,李梅敲门进来,怀里抱着一束花。
"李哥,花店的送错了,说是门卫签收的。你看——"她把花放在桌面上,是一束白色的百合和淡紫色的桔梗,扎得很好看,纸包外面还系了一条银色的丝带,"也没张卡片什么的。"
李明看了看那束花,又看了看门卫老周那边——他能让花店送来?王强不像会订花的人。赵志刚?他连自己生日都记不住。
"放窗台上吧,"他说,"养着。"
李梅把花插进一个矿泉水瓶子里,放在绿萝旁边。百合的香气慢慢地散开来,不大,但若有若无地在办公室里飘着,让人觉得莫名地舒服。
那天下午他开完周例会的时候,王世杰收拾文件夹的时候不经意说了一句:"花,我订的。"
李明抬头看了他一眼。王世杰的表情没有任何不自然,低着头扣文件夹的卡扣,像在说一件再平常不过的事情。"今天是教师节,"他说,"虽然你不是老师,但你这两个月教了不少东西。赵志刚那个模块开发能提前两周跑通,是因为你手把手带他捋了三遍架构。这种时候送束花应个景,不算浪费。"
他说完就把文件夹夹在腋下走出去了。皮鞋的声音在走廊里"噔噔噔"地响着,跟两个多月前没有任何区别。
李明看着那束百合和桔梗站在窗台上,跟绿萝并排立着。阳光从窗外照进来,穿过白色的花瓣,在地板上落下一层淡紫色的影子。
"行吧,"他心里说,"这人心里还是有本账的。"
九月十五号,省厅的全省标准接口季度评估报告出来了。李明他们单位的网关系统在稳定性、响应时间、接口可用率三个核心指标上全部达到了A级标准,在六个试点单位里排名第一。
李明看报告的时候没有什么特别的情绪波动,只是确认了几个关键数字,然后把报告转发给了赵志刚和王世杰,附了一句:"继续保持,下季度目标是全部指标超过A级。"
赵志刚秒回了一个"火箭"的表情符号。王世杰的回复是一句正规的"收到,已转发至相关科室"。
九月十八号是个周五,天气比之前凉了一些,窗外那棵老槐树的叶子已经开始有了黄尖,风一吹就落下来几片,在院子里打着旋。李明下午三点左右开完当月最后一次进度会回到办公室,在椅子上坐下来,伸了个懒腰。
他伸懒腰的时候手肘碰到了墙边的一个什么东西,发出"嗒"的一声轻响。他转过头去看,是那把扫帚,还挂在墙上那个新装的铁挂钩上。塑料手柄已经被他摸得包了一层锃亮的浆,鬃毛那一头因为长时间没用了,恢复了一些弹性,不再像两个月前那样歪歪扭扭地翘着了。
他看着那把扫帚,停了大概有半分钟。
然后他伸手把它从挂钩上取下来。塑料手柄进入掌心的触感熟悉得让人有些恍惚,那种微温的、带着一层薄薄汗意的触感,和七月二十号那天早上他弯腰把它从墙角拿起来的时候几乎一模一样。他握了握,握着它站了一小会儿,然后拿着它走出了办公室。
走廊里安安静静的,下午四点的阳光从西面的窗户斜射进来,在地砖上拉出长长的金色条纹。他走到自己办公室门口,弯下腰,开始扫地。
其实门口并不脏,保洁每天上午拖两遍,地砖亮得反光。但他还是扫了,从门口一直扫到走廊尽头那扇窗户底下,把那几片被风吹进来的老槐树叶子扫拢了,堆成一小堆,旁边还带着一缕不知从哪儿飘进来的细小灰絮。
他扫的时候,李梅从走廊另一头经过,看见他的动作愣了一下,站在原地看了几秒。她张了张嘴像是想说什么,但最后没有出声,只是抱着文件安静地走过去,走到拐角的时候回头又看了一眼。
李明没有注意到她。他正专注地扫着地上那几片老槐树的叶子,把它们拢在一起,用簸箕铲起来,倒进走廊尽头的垃圾桶里。然后把扫帚靠在墙边,在窗台前站了一会儿。
窗外的老槐树已经开始落叶了,不算多,薄薄一层铺在院子里,被风吹散又聚拢。远处巷口那个卖西瓜的吆喝声已经不见了,换成了一家糖炒栗子铺子,甜腻腻的焦糖味顺着风飘进来,混着初秋的凉意,浓得化不开。
他把扫帚靠回办公室墙角的原处,不是挂起来的,就是靠着墙放,和他第一天来的时候那个姿势一模一样。塑料手柄斜倚着墙,鬃毛那一头支棱在地上,在墙角围出一个不规则的扇形。
然后他回到座位上坐下来,看着那把扫帚。
很多念头在这一刻涌上来,又缓缓地落下去。他想起了七月二十号那个闷热的上午,他站在办公室门口,手里攥着借调函,王世杰端着搪瓷茶杯头也没抬地说"先把卫生搞搞"。他想起了自己弯腰拿扫帚的时候,手指触到塑料手柄那一刻的心跳。他想起陈国栋站在走廊里说"老王,我来介绍一下"时的那两秒停顿,走廊里吊扇嘎吱嘎吱地转着,灰尘在阳光里飞舞。
他想起了那些蹲在机房里写脚本的日子,空调结冰又修好,接口断了又接上,赵志刚趴在工控台上睡着的样子,李梅递过来的奶茶杯壁上凝着密密的水珠。他想起王世杰那杯端到他桌上的明前龙井,想起那个粉红色的晚宴请柬上"先进个人"几个字,想起八月末的深夜里陈国栋说"三个月之后再来找你谈"。
他想起自己坐在省厅回单位的那辆车上,外面是八一广场的霓虹灯,心里安安静静地想着"这条路比另一条宽"。
窗外那棵老槐树又在风里沙沙地响了,几片半黄的叶子从树梢飘下来,在下午的金色阳光里翻了好几个跟头才落到地上。院子里的皮卡车引擎发动了,王强在倒车,轮胎碾过落叶发出细微的脆响。远处糖炒栗子的叫卖声隐隐约约地传过来,一声一声,拖着热乎乎的尾音。
李明从椅子上站起来,走到那把扫帚前面蹲下来,伸手摸了摸塑料手柄上那处已经被他握得发亮的光滑凹陷。那凹陷里嵌着他的掌纹,细密的一圈一圈,像树的年轮。
"权力的地板,"他心里说,声音很轻,像是一个人在角落里自言自语,"需要弯腰才能看清。感谢那把扫帚,让我在最卑微的时候,看清了谁是人,谁是鬼。"
他直起身来,走回窗台前。百合和桔梗已经开得差不多了,几片白色的花瓣开始卷曲边缘,但香气还在,淡淡的,跟窗外的栗子香味混在一起,变成了一种属于九月的、温暖而踏实的味道。那盆绿萝又长出了两根新的藤蔓,细细的,绿油油的,顺着窗台的边缘垂下去,在风里轻轻晃着。
他伸手推开窗户,初秋的风涌进来,带着干爽的凉意和远处街道上的人声车声。傍晚的光线从窗口大片地涌进来,在办公室里铺开一层暖融融的金色,把他的椅子、桌上的文件、墙上的扫帚、以及那把扫帚的影子,全都罩在了同一片光里面。
阳光正好。
他站在那扇窗户前面,看着外面院子里逐渐变黄的老槐树,看着王强把皮卡车停好了下车锁门,看着门卫老周换了一班岗正跟夜班的交接。他看见李梅从办公楼里走出来,抱着一个快递盒子朝门卫室跑去,短发在风里飘起来又落下。他看见王世杰从综合办的窗户里探出半个身子,正往楼下花坛里看什么。
他看了很久。
然后他转过身来,面对着空荡荡的办公室和那把靠在墙角的扫帚。整个屋子被夕阳灌满了,金灿灿的,连扫帚鬃毛上那层灰都被照得毛茸茸的。
他站在那里,没有再说任何话,只是安静地站着,脸上带着一种很淡的笑意。
窗外,那棵老槐树的叶子还在往下落。一片接一片的,在风里打着转,飘过下午四点四十五分的金色阳光,飘过窗台上百合花卷曲的白色花瓣,飘过那盆越长越好的绿萝的油亮叶子,最后落在院子里的地砖上,轻轻地、无声地,铺成薄薄的一层。
他转过身,从窗台上拿起那个矿泉水瓶子做的简易花瓶,换了一次水,把百合和桔梗的茎斜着剪了一截,重新插进去。水流淌的声音在安静的办公室里响了一下,然后停了。
然后他坐回自己的椅子上,面对着窗外那棵正在变黄的老槐树,面对着那把靠在墙角的褪了色的塑料扫帚,面对着这个从七月二十号开始、每一天都在缓慢改变着的房间。
他翻开桌面上那份网关稳定运行的周报,在第一页的空白处用笔写了一行字。
"第七周,稳定运行。下一步:统一认证模块联调。"
写完,他合上周报,抬起头来,看向窗外。
阳光正好。
(全文完)
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
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.