跳转至

第二十一章 · 茶水间

九月二十九日,星期一,上午十点。

陈稳打开方案第五版,写了两行,删掉,又写了两行,又删掉。光标在空白文档里闪了五分钟。

他关掉文档,打开记事本,写一行:方案第五版,从问题开始写。

他写:问题——对账异常发现时间 T+1。当前从结算到对账完成需要二十四小时。异常发现越晚,资损敞口越大。

他删掉最后一句。又写:当前从结算到对账完成需要二十四小时。目标:T+0。

他看了一遍,没改,继续写。

方法——事件驱动加增量比对。结算完成时触发对账事件,消息服务异步处理,比对结果写入对账结果表。异常记录实时推送,值班手机接收。

他写完了,保存,打开方案第四版,对照着改。他删掉了技术选型说明,删掉了表结构设计,删掉了接口定义。他把技术细节全部移到附录,正文只留问题和方法。

他写了一个小时,写完第五版,二千一百字,三部分:问题、方法、预期效果。

他看了一遍,发给易文。

易文的回复在半小时后:「可以。标题改一下。」

「改什么。」

「'对账模块重构方案——事件驱动加增量比对,实现 T+0 实时对账'。你原来那个标题太长了,别人记不住。」

陈稳改完,发回去。

「可以。周四用这个版本讲。」

第五版正文一千四百字,附录七百字。第四版是二千八百字正文,没有附录。删掉的一千四百字里,有他七月写的表结构设计,八张表,四十六个字段。

记事本里加一行:九月二十九日。方案第五版改完,易文说可以。标题是她改的。

有一件事他没有写进记事本:标题里「T+0 实时对账」这个说法,是易文上周在数据治理周报里用过的。他当时看到了,没有用。今天用了。

下午两点,蒋辉的消息。

「陈稳,下午有空吗。想跟你聊一下调度通知的事。」

「好。几点。」

「三点。茶水间。」

「好。」

调度通知的接口是七月二十五号提交的,两个多月没有人提过。陈稳翻了一下 commit 记录,那天他提交了三次,最后一次在晚上十一点四十。

三点整,茶水间靠窗的位子。蒋辉面前一杯咖啡,表面浮着一层油脂,凉了,没有动过。

「坐。」

「调度通知的接口,你那边是什么时候提交的。」

「七月二十五号。」

「规则引擎那边接入了吗。」

「接入了。最多重试三次,间隔十五分钟。」

蒋辉在手机上记了一行,屏幕朝着自己。记完,手机反扣在桌面上。

「你最近跟易文走得很近啊。」

蒋辉的语气很轻,像在说一件不重要的事。他拿起咖啡杯,喝了一口,又放下,杯口留下一圈印子。

「没有。」他说。

「她帮你改方案了吧。」

标题是易文改的。三个指标的顺序是她排的。第五版从二千八百字砍到一千四百字,是她说「技术细节全部进附录」。这些陈稳都记得清楚,一件也没有说出来。

「她挺厉害的。」蒋辉说,「数据分析组那边,她是最早来的。她来的时候,我还在做需求分析。她现在已经能做跨部门项目了。」

那杯咖啡蒋辉又碰了一次,杯子转了半圈,没有喝。

「你那个方案,周四要讲是吧。」

「嗯。」

「技术 VP 也会来。」

技术 VP 会来这件事,纪衡上周五在结算组周会上说过。那个会蒋辉不在。

「你准备得怎么样。」

「还行。」

蒋辉把咖啡杯放进水池,冲了一下,倒扣在架子上。杯底还有一圈没冲掉的褐色。

「你那个对账方案,我看了。写得比以前好。真的。」

方案第五版只发过三个人:易文、纪衡、周其正。

「但是。」蒋辉说,「你跟易文走得太近,有人会看到。」

「我不是在说你不对。」蒋辉说,「我是在说,你在组里,你在结算组。易文是数据组的。你们两个走得近,别人会想,你在做什么。」

「有人会看到」——「有人」是谁,蒋辉没有说。蒋辉从来不说假话,只说他愿意说的那一部分,剩下的留给你自己去猜。

「你考虑一下。」蒋辉说完,出了门。

架子上那只杯子的杯底还留着一圈褐色。空调的声音,嗡嗡的,很低。这段对话一共十一分钟,调度通知占了两句,剩下九分钟都在说易文。

记事本里加一行:九月二十九日。蒋辉在茶水间说,我跟易文走得太近,有人会看到。

第二行他没有写。第二行本来要写的是:蒋辉是怎么知道易文帮我改了方案的。

下午四点,连接池使用率百分之四十一,比上午高三个点。第五版方案他没有再动。


九月三十日,星期二,上午九点。

陈稳到一号楼,看到易文的消息:「方案再发我一版。我帮你排一下重点。」

陈稳把方案第五版发过去。

易文的回复在十分钟后:「你写'预期效果'的时候,写了'对账异常发现时间从 T+1 降到 T+0'。这个数字不够。你要写具体数字。」

「什么数字。」

「你现在对账异常率是多少。你目标是多少。你打算在哪个时间点达到目标。你用什么指标衡量。这四个数字,缺一不可。」

陈稳打开记事本,看了一遍,没有这四个数字。

「我不知道现在的异常率。」

「我帮你查。你等一下。」

陈稳等了十五分钟,易文发来一条消息:「营销结算对账模块,九月异常率百分之十一点七。数据来源:九月二十五日对账结果表,比对异常记录一万一千零四十二条,总比对记录九万四千二百一十七条。」

陈稳把数字记下来。

「目标异常率多少。」

「百分之二以下。」陈稳说。

「时间点。」

「十一月底。」

「指标。」

「对账异常率。月结算异常金额。人工介入对账次数。三个指标,全部在十二月前降到目标值。」

「可以。写进去。」

陈稳改完,发回去。

「可以。周四讲的时候,这三个数字放第一页。第一页只放这三个数字,不要放别的。」

「好。」

三个数字进第一页,其余内容全部往后压。原来的第一页是架构图,画了两个小时,现在在第七页。

记事本:九月三十日。易文帮查了异常率。百分之十一点七。目标百分之二以下。三个指标放第一页。

下午,纪衡的消息:「周四的方案,给我看一下最终版。」

陈稳把方案发过去。

纪衡的回复在半小时后:「第一页可以。后面的内容,你周四讲的时候,不要照念。」

「好。」

「你有两个小时的时间,你自己练一下。不要像上次一样,念 PPT。」

上次是八月十四号的双月汇报。纪衡当时的评语是四个字:没有重点。这四个字写进了绩效沟通记录,陈稳的电脑里存着那份记录的截图。

他打开录音,开始讲。讲了一遍,听回放,是念。第二遍还是念。第三遍还是念——他连自己在哪一句抬眼都记得,眼睛始终在屏幕上。

第四遍他把方案最小化,闭着眼睛想了一分钟,然后开口。

「营销结算对账模块,当前对账异常发现时间是 T+1。九月异常率百分之十一点七。我们计划在十一月底前,把异常率降到百分之二以下。方法是对账模块重构,从逐笔比对的离线模式改为事件驱动加增量比对的实时模式。结算完成时触发对账事件,消息服务异步处理,比对结果实时写入。异常记录实时推送,值班手机接收。」

回放里没有念的痕迹了,但语速太快。他听得出自己的声音,比平时高,比平时快,每句话的结尾往上翘。

第五遍放慢,第六遍再放慢。第六遍语速正常了,但结尾往下掉,最后三个字几乎听不见。

第七遍到第九遍,他不再听自己的声音了,只是在讲。第九遍讲了八分五十秒,比第一遍短了一分十秒。

记事本:九月三十日。练了九遍。第九遍没有念。八分五十秒。


十月一日,星期三,上午九点。

国庆节前一天,工位区亮着的显示器有四台,包括他自己那台。方案第五版他没有再动一个字。连接池使用率百分之三十七,是这一周最低的读数。

茶水间没有人。杯底那圈褐色还在,架子上倒扣着,两天没人洗。

「你跟易文走得太近,有人会看到。」这句话他在心里过了两遍。第一遍想的是「有人」是谁。第二遍想的是另一件事:数据治理项目的对账结果表,蒋辉没有权限查。九月异常率那个数,蒋辉说不出来。但方案第五版他说他看了。

易文的消息:「明天几点讲。」

「十点。」

「紧张吗。」

「不知道。」

「紧张就紧张。讲的时候,不要看 PPT。你看纪衡。你看技术 VP。你看谁都可以,不要看 PPT。」

「好。」

「你讲完,他们会问问题。你只回答你知道的。不知道就说不知道。不要编。」

「好。」

「你准备好了吗。」

他打了三个字又删掉,重新打:「准备好了。」

「好。明天见。」

蒋辉那句话他没有告诉易文。

记事本:十月一日。易文说,不要看 PPT。不要编。


十月二日,星期四,上午九点。

纪衡在茶水间门口,手里一杯咖啡。

「今天讲十五分钟。你准备好了吗。」

「准备好了。」

「不要紧张。上次你讲得不好,不代表这次也讲不好。」

上次那四个字纪衡记得很清楚,一年半里他只当着陈稳说过一次,此刻用的是「讲得不好」四个字,是换过说法的。

纪衡没有等回答,进去接了咖啡,走了。

记事本:十月二日,九点。三楼会议室。十五分钟。技术 VP 会来。

九点五十分,三楼会议室。纪衡在靠窗的位子,笔记本电脑屏幕亮着,是邮件。技术 VP 在纪衡对面,灰色衬衫,戴眼镜,面前一杯水没动过。蒋辉在靠门的位子,电脑打开着,屏幕上是代码。资深工程师在蒋辉旁边,一个笔记本,没有翻开。

陈稳的位子在讲台旁边。笔记本电脑打开,屏幕朝下压着。

纪衡说:「十点。开始吧。」

讲台在窗户和白板中间。八月十四号他站在同一个位置,那次手抖,心跳得听不见自己的声音,讲了十九分钟。

「营销结算对账模块,当前对账异常发现时间是 T+1。九月异常率百分之十一点七。目标:十一月三十日前,异常率降到百分之二以下。

「方法是对账模块重构——从逐笔比对的离线模式,改为事件驱动加增量比对的实时模式。结算完成时触发对账事件,消息服务异步处理,比对结果实时写入对账结果表。异常记录实时推送,值班手机接收。

「方案分三个阶段:十月完成消息服务上线与数据迁移;十一月完成对账流程重构与灰度验证;十二月初全量切换,进入稳定运行期。」

九分四十七秒。比昨天第九遍长了五十七秒。

技术 VP 的那杯水还是满的。蒋辉低着头,屏幕上是代码,光标在闪。

技术 VP 开口了。

「你刚才说,九月异常率百分之十一点七。这个数据从哪里来的。」

「数据治理项目的对账结果表。九月二十五日跑的数据,比对异常记录一万一千零四十二条,总比对记录九万四千二百一十七条。」

「数据来源是哪个表。」

「二号数据库。营销结算订单表、支付表、退款表,三个表统一字段名后的视图。」

「视图是谁建的。」

「我建的。」

技术 VP 在纸上写了两笔。

纪衡开口了。

「你刚才说,三个阶段。十月到十二月。这三个阶段,你一个人做,还是需要人。」

「我一个人。数据加载和比对逻辑已经拆分好了,接口也定了。消息服务设计文档已经写完了,可以在十月内上线。」

「数据迁移呢。」

「数据迁移跟消息服务上线并行。先把结算完成事件接入消息队列,老数据不迁移,等新数据稳定后再跑历史数据补全。」

纪衡在打印稿的空白处画了一道横线。

技术 VP 又开口了。

「你刚才说,事件驱动。消息服务如果挂了,对账怎么办。」

「消息服务挂了,结算完成事件写入本地失败日志表,由定时任务扫描重试。消息服务恢复后,自动补发未处理事件。设计文档里写了降级方案。」

「消息服务挂多久会影响对账。」

「三十分钟内无影响。超过三十分钟,积压事件超过消息表阈值,触发告警,值班手机接收。设计文档里写了告警阈值。」

技术 VP 把笔帽扣回去。

十点十一分。技术 VP 没有再提问。

「方案可以。按你的计划执行。十月底前,把消息服务上线。十一月,做完对账流程重构。十二月,全量切换。」纪衡说。

「好。」

「你回去写一个详细的时间表,周五前发给我。包括每个阶段的里程碑、交付物、验收标准。」

「好。」

纪衡合上电脑,先出去。技术 VP 跟在后面,经过讲台的时候停了半秒,没有说什么。蒋辉合上电脑,绕到讲台这一侧。

「讲得不错。」蒋辉说。

九分四十七秒里蒋辉一次都没有抬头。

「真的。比上次好。」

「嗯。」

蒋辉出去了。空的会议室,讲台上留着那台压着屏幕的笔记本电脑。

记事本:十月二日。方案通过了。纪衡说按计划执行。技术 VP 问了两个问题,都答了。蒋辉说讲得不错。

对面楼的玻璃上有一个人影,是他自己。天空是灰的,没有太阳,没有雨。

时间表写了三个小时。下午一点发给纪衡。

纪衡的回复在半小时后:「收到。时间表可以。按这个执行。」

记事本:十月二日。时间表发了。纪衡说可以。

下午两点,茶水间。杯子还倒扣在架子上。九分四十七秒里没有人打断他,没有人说没有重点,技术 VP 问的两个问题他都答了。但他还是想不通蒋辉那句「我看了」是怎么看到的。

走廊上,蒋辉从对面过来,笑了笑。

「你那个方案,我看了。你那个消息服务,上线的排期,跟我那个智能重试补偿方案有冲突。」

「你那个方案什么时候上线。」陈稳说。

「十月第三周。」

「我那个消息服务,十月第二周上线。」

蒋辉把手机收进口袋,没有接话。

「你那个方案,跟我的消息服务,有什么关系。」陈稳说。

「没关系。但是资源池有冲突。规则引擎调度服务跟消息服务,共用同一个资源池。你上线了,我的方案就要等。」

资源池的事纪衡今天上午一句都没有提。技术 VP 问了降级方案,问了阈值,也没有问资源池。这件事蒋辉是对的。

「你考虑一下,能不能往后推一周。」蒋辉说。

十月底前上线是纪衡刚定下来的。往后推一周是十月第三周,跟蒋辉的方案撞在同一周。

「我不是在逼你。」蒋辉说。「我是在跟你说,我们两个的方案,时间上有冲突。你考虑一下。」

蒋辉笑了一下,走了。

走廊上没有人,只有空调的声音,嗡嗡的,很低。

记事本:十月二日。蒋辉说消息服务跟他的智能重试补偿方案有资源冲突,建议往后推一周。

第二行:十月二日。我不知道要不要往后推一周。

这一行他没有删。

连接池使用率百分之四十三。资源池的读数在另一个面板上,他没有查过那个面板的权限有没有开。

他打开独立消息服务设计文档,翻到「部署与资源」那一节。这一节只有四行字,是七月写的。他把光标停在第一行的行首。


← 第二十章 胃药 · 目录 · 第二十二章 P0 →