回来时外卖已经到了。他拎着袋子走进卧室,俯身吻宋亚轩的耳廓。宋亚轩睁开眼,闻到了煎饼果子的香味。他坐起来,看见严浩翔手里拎着塑料袋,眼睛亮了一下

你真买了?

说好的
宋亚轩接过煎饼果子,咬了一口,薄脆很脆,辣酱够味。他满足地眯起眼,边嚼边说

严浩翔,你是最好的男朋友
严浩翔坐在床边看他吃,嘴角弯着

你也是最好的

我是最好的什么?

最好的你
宋亚轩差点被煎饼呛到。他咳了两声,严浩翔拍了拍他的后背。缓过来之后,宋亚轩把咬了一口的煎饼递到严浩翔嘴边。严浩翔低头咬了一口,嚼了嚼,点头说

确实不错

那明天还买

明天你自己去买

为什么?

因为明天你上班第一天就是高级技术专家了,不能迟到
宋亚轩想了想,觉得有道理。他三口两口吃完煎饼,跳下床去洗漱。严浩翔跟在他后面,看着他对着镜子刷牙,泡沫沾在嘴角。他伸手帮宋亚轩擦掉,然后被宋亚轩反手抹了一脸牙膏沫。两人对着镜子闹了一会儿,最后一起洗脸收场
出门前,宋亚轩站在玄关,整理了一下衬衫领口。今天他穿了一件新的深蓝色衬衫,是升职之后第一次穿正装。严浩翔站在他身后,帮他抚平了肩线上的褶皱

好看吗?

好看
严浩翔说

和你的新title很配
宋亚轩笑了,转身亲了他一下

晚上见

晚上见
下楼,走路,步伐一致。到停车场,宋亚轩自己开车。严浩翔站在车旁,看着他拉开车门坐进去。宋亚轩降下车窗,探头说

晚上我想吃火锅

好

庆祝升职

好

也庆祝一周年

好
宋亚轩笑了,挥了挥手,升起车窗。车子驶出车位,严浩翔站在原地看着他离开。直到车尾灯消失在路口,他才转身走向自己的车
新的一天开始了。升职后的第一天,一周年后的第一天,也是他们在一起之后的第366天。日子还在继续,路还在延伸,而他们,始终走在同一条路上,手牵着手,一步一步,走向那些尚未到来的、但一定美好的日子
————
宋亚轩搬进新办公室的第一天,花了二十分钟整理东西。原来的工位在靠窗的墙边,桌面堆满了技术文档和来不及收拾的快递盒。现在这间独立办公室在严浩翔隔壁,面积不大,但有一整面朝南的窗户,阳光从上午十点开始铺进来,能把桌面照得发亮。他把常用的参考书按高度码在书架上,把显示器调整到和自己视线平齐的位置,把水杯放在右手边一臂远的地方。做完这些,他站在门口回头看了一眼,觉得空荡,又从原来的工位搬了一盆绿萝过来,放在窗台上
严浩翔在隔壁敲了敲门框。宋亚轩转头,看见他靠在门边,手里拿着一个文件夹

收拾好了?

嗯
宋亚轩点头

还缺一个笔筒

下午让行政送
严浩翔走进来,把文件夹放在他桌上。宋亚轩翻开,里面是本周需要他review的三个项目的架构文档。他快速扫了一眼目录,抬头看严浩翔

这些都是我来审?

嗯
严浩翔说

你的权限已经开了。后面所有后端服务的设计稿都会先过你这
宋亚轩合上文件夹

那如果我审不过呢?

打回去让他们改

如果他们不改呢?

那是他们的绩效问题
严浩翔的语气很平

你只需要对技术方案负责,不用对任何人妥协
宋亚轩看着他,忽然笑了

你现在说话像在给我立规矩

不是规矩
严浩翔走近一步,声音压低了些

是边界。你的岗位决定了你有说'不'的权力,用就好了
宋亚轩点点头。严浩翔没再多说,转身回了隔壁。门关上之后,宋亚轩在椅子上坐了一会儿,翻开最上面的那份文档,开始看
上午十一点,有人敲门。宋亚轩说请进,进来的是后端组的小张,抱着一台笔记本,表情有点忐忑
#小张 宋工,这个接口的性能测试数据不太对,想请您看一下
宋亚轩接过笔记本,拉过一把椅子让他坐在旁边。他花了十分钟排查了代码,找到了问题所在——一个循环嵌套导致了时间复杂度指数级上升。他指着屏幕上的那一行

这里换个哈希表,查询从O(n²)降到O(n)
小张凑近看了看,恍然大悟
#小张 谢谢宋工,我回去改

改完发我
宋亚轩说

今天下班前我要看到第二版
小张点头,抱着笔记本走了。宋亚轩看着他的背影,想起一年前自己也是这样抱着电脑去找严浩翔问问题的。那时候他站在严浩翔办公室门口,敲门之前会深呼吸三次。现在有人站在他门口了,而他只需要说一句"改完发我"
中午,宋亚轩没有去食堂。他点了一份外卖,坐在新办公室里吃。吃到一半,严浩翔推门进来,手里端着一杯咖啡

你的
严浩翔把杯子放在他手边

少糖,加奶
宋亚轩接过杯子,喝了一口。温度刚好,甜度也刚好

你怎么知道我要点外卖?

你没带饭

我也可以去食堂

食堂今天周三,有青椒炒茄子
宋亚轩想起来了,周三食堂的茄子是甜的。他不吃甜的茄子。他看了严浩翔一眼,没说话,低头继续吃饭。严浩翔没走,靠在窗台上,端着自己的杯子慢慢喝咖啡。两人就这么在安静的办公室里各喝各的,谁也没说话,但空气里有一种不需要言语的松弛
下午两点,宋亚轩参加了升职后的第一次跨部门评审会。会议室里坐了十几个人,产品、前端、后端、测试,各组的负责人都在。他走进去的时候,有人给他让了主位旁边的位置。他坐下,翻开笔记本,等严浩翔宣布会议开始
严浩翔坐在主位上,环视了一圈

今天主要评审三个Q4的项目方案。先过支付网关的重构,亚轩你来讲
宋亚轩翻开自己的方案,站起身。投影仪把他的PPT投在白墙上。他从现状分析开始讲,到目标架构,到迁移方案,到风险评估。讲了十五分钟,中间有人打断问了两个问题,他都接住了。一个是关于数据一致性的,他解释了分布式事务的处理策略。另一个是关于灰度发布的节奏,他给出了具体的流量切分比例和时间节点
讲完,严浩翔问了三个技术细节,宋亚轩一一作答。严浩翔听完,点头

方案通过。下周启动,两周后出第一版原型
会议继续。后面的两个方案分别由另外两位工程师主讲。宋亚轩坐在旁边听,偶尔在笔记本上记几个要点。当其中一个方案讲到缓存策略时,他注意到设计有明显漏洞——缓存穿透的问题完全没有考虑。他看了一眼严浩翔,严浩翔也正看着他,眼神里有一丝询问。宋亚轩微微点头,示意自己注意到了
等那位工程师讲完,严浩翔说

缓存这块,亚轩你补充一下
宋亚轩站起来,走到白板前。他拿起马克笔,画了一个简单的架构图,标出缓存层和数据库层的交互路径

如果恶意请求不存在的key,缓存层兜不住,会直接打到数据库上
他说

建议加一层布隆过滤器,在缓存之前做拦截。伪代码大概是这样——
他在白板上写了几行,然后转身面向众人

这样即使有穿透请求,也不会击穿到数据库
会议室里安静了两秒。产品组的负责人先开口
#产品负责人 这个改动量大吗?

不大
宋亚轩说

布隆过滤器可以直接用现有的组件封装,半天能搞定
严浩翔在旁边说

那就按这个方案改。亚轩跟进一下