许知然盯着这行字看了五秒,然后回:现在?
陈序:嗯。
她拿起手机往开发组走,走到一半又停下,返回来从抽屉里翻出充电线和备用机,这才继续走。
403工位,陈序正在吃饭。不是食堂的饭,是一个保温盒,里面装着家常菜。许知然走过去时,他筷子停了一下,然后放下,把保温盒推到一边。
“打扰你吃饭了。”许知然说。
“吃完了。”陈序扯了张纸巾擦嘴,动作很快。
许知然看了眼那还剩大半的饭菜,没戳穿他,把手机递过去:“给。”
陈序接过手机,目光在她脸上停了一下:“可能要装几个监控程序,下午才能还你。”
“没关系,我有备用机。”许知然晃了晃手里的另一部手机,然后故意问,“陈工,这种复现不了的bug,你也接?”
陈序已经把她的手机连上数据线,正在电脑上操作什么。听到她的话,他手指顿了一下,然后继续敲代码。
过了几秒,他开口,声音比平时低一点:“你的bug,我接。”
许知然愣了一下。
陈序没抬头,继续盯着屏幕,但许知然看见他的耳朵尖开始泛红。从耳垂开始,一点一点蔓延,和昨天在她面前写代码时一模一样。
她没说话,转身走了。
走出几步,她回头看了一眼。陈序还是那个姿势,低着头盯着屏幕,但手指没动。何照正从旁边探过头,嘴巴一张一合在说什么,表情贱兮兮的。
许知然收回目光,嘴角弯了一下。
下午三点半,许知然的手机被还回来了。
陈序把手机递给她时,手指上有一道红痕,是被数据线勒出来的。他指给她看手机里新装的一个应用:“监控程序,后天可以删。以后如果还闪退,它会自动抓取详细的日志。”
许知然接过手机,看着他手指上的红痕,心里动了一下。
“找到原因了?”她问。
陈序点头:“你的手机系统版本有个底层bug,和我们的SDK有冲突。只有在特定内存占用情况下才会触发,所以很难复现。”
“那怎么办?”
“我已经绕过处理了。”陈序说,“改了几行代码,以后不会再闪退。”
许知然看着他的眼睛:“你为了一个偶发闪退,研究了半天?”
陈序没说话,但目光没有躲开。
许知然又问:“如果今天提这个bug的是别人,你也会这样吗?”
陈序沉默了两秒,然后说:“不会。”
只有两个字,但他说得很清楚。
许知然垂下眼,把那两个字在心底过了一遍。然后她抬起头,笑着说:“谢谢陈工,那我先回去了。”
她转身离开,步子比来时轻了一点。
回到工位,苏桐立刻凑过来。
“手机都交出去了?”苏桐压低声音,“陈序帮你查bug查了一下午?”
许知然嗯了一声,把陈序的话复述了一遍。
苏桐听完,沉默了三秒,然后意味深长地说:“为了你一个偶发闪退,专门研究半天?知然,他对你不一样。”
“哪里不一样?”
“哪里都不一样。”苏桐掰着手指数,“第一,这种无法复现的bug,正常开发直接驳回;第二,就算不驳回,也是让你自己多观察,谁会上手帮你看;第三,你注意到没有,他说的不是‘这个bug我接’,是‘你的bug,我接’。”
许知然没说话。
苏桐盯着她的表情,笑了:“你也注意到了,对不对?”
许知然端起杯子喝水,不接话。
但晚上回家后,她打开了电脑,登录bug系统,点进陈序的处理记录。
三年两个月,处理bug总数两千四百多个。她一条一条翻下去,翻了一个多小时,翻到眼睛发酸。
然后她确认了一件事。
两千四百多个bug里,陈序对所有无法复现的问题回复都是同一个模板:请补充复现步骤或提供更详细的日志。没有例外。
直到今天,直到她的bug编号1015。
她翻回那条记录,看着他的回复:“已处理。绕过底层冲突,优化SDK兼容逻辑。”
标准的技术用语,看不出任何私人情绪。
但她知道,他今天下午说的那四个字,从来没对任何人说过。
你的bug,我接。
许知然盯着屏幕,手指轻轻敲着桌面。然后她拿出手机,给苏桐发了条消息。
许知然:你说得对。
苏桐秒回:他对你不一样?
许知然:嗯。
苏桐:那你打算怎么办?
许知然盯着这个问题,想了很久,最后回:先看看。
第二天上午,全公司收到一封邮件。
关于下周内部培训的通知。为了促进跨部门协作,本次培训采用随机分组,每组两人,名单见附件。
许知然点开附件,找到自己的名字。
分组:第七组。
同组成员:陈序(后端开发组)。
她盯着那行字看了五秒,然后抬起头,隔着半个办公区看向开发组的方向。陈序正对着屏幕,看不清表情,但何照在旁边笑得前仰后合,手还在陈序肩膀上拍。
许知然收回目光,心里冒出一个念头。
公司有三百多人,随机分组,分到一起的概率是多少?
她没算,但知道这个数字很小。
很小。
周五下午,公司租的培训场地在郊外一个创意园区。
许知然在签到处排队,前面还有七八个人。她低头看手机,余光扫到门口有人进来,抬头,正好对上陈序的目光。
他站在门边,手插在兜里,穿着件深灰色的连帽衫,比在公司时显得年轻几岁。两人对视了不到一秒,同时移开视线。
许知然转回头,继续看手机,但屏幕上的字一个也没看进去。
轮到她了。她在签到表上找到自己的名字,签完正要走,却被负责签到的人力同事叫住。
“许知然是吧?你是第七组。”同事递给她一张名牌,“你的搭档是开发组的陈序,他在那边,你可以先去认识一下。”
许知然接过名牌,往同事指的方向看了一眼。陈序正站在角落里,也在低头看自己的名牌,第七组,陈序。
她走过去,在他面前站定。
“第七组。”她说。
陈序抬起头,看了她一眼,点点头:“嗯。”
然后就没了。
许知然等了两秒,确定他没有下文,只好自己开口:“破冰游戏好像是互相介绍,你打算怎么介绍我?”
陈序想了想,认真地说:“产品体验官,入职一个月,提了十五个bug。”
许知然愣了一下,然后笑出声:“你记得这么清楚?”
陈序没说话,但耳朵尖又开始泛红。
破冰游戏开始。每组轮流上台,一人介绍另一人,限时一分钟。前面几组介绍得花里胡哨,有人唱歌有人讲段子,现场笑声不断。
轮到第七组。
许知然先介绍陈序。她站在台上,看了眼旁边的他,然后对着话筒说:“这是开发组的陈序,代码写得很好。”
没了。
台下安静了一秒,然后有人笑出声。主持人也笑了:“这位同学,介绍得也太简洁了吧?”
许知然脸微微发热:“他……确实就是代码写得很好。”
轮到陈序介绍她。他接过话筒,沉默了三秒。台下开始有人憋笑,以为他也要来一个同样简洁的版本。
然后他开口了。
“她提的bug,是我处理过最认真的。”他的声音不高,但很清晰,“每个bug都有详细的复现步骤,有录屏,有数据分析。有时候证据链比测试组还全。被她盯上的问题,基本上逃不掉。”
台下安静下来。
陈序继续说:“有一次她提了一个闪退bug,无法复现,本来可以驳回。但她附了崩溃日志,附了设备信息,附了事发时的操作路径推测。我查了四个小时,最后发现是系统底层冲突。”他顿了顿,“如果不是她的证据够细,这个问题可能永远发现不了。”
全场安静了几秒,然后突然爆发出掌声和口哨声。
许知然站在台上,耳根发烫。她余光看见陈序的耳朵也是红的,但他表情很平静,像是刚做完一个技术汇报。
主持人笑着调侃:“陈序同学,你这介绍够专业的啊。不知道的还以为你在做代码评审。”
台下又是一阵笑。
许知然侧头看了陈序一眼。他没看她,但嘴角有一个极淡的弧度。
团队挑战环节。每组需要完成三个任务,第一个是“盲人搭积木”——一人蒙眼,另一人用语言指挥,搭出一个指定的结构。
许知然看着那个眼罩,又看了看陈序:“你指挥还是我指挥?”
陈序伸手拿起眼罩,递给她:“你蒙眼。”
许知然愣了一下:“你确定?我方向感不太好。”
“我指挥。”陈序说。
许知然戴上眼罩,世界一片黑暗。她听见旁边其他组的嘈杂声,听见主持人的麦克风声,然后听见陈序的声音。
“往前两步。”
他的声音很近,就在她侧前方。许知然往前走了两步。
“停。右手边,有积木,摸一下。”
许知然伸手,摸到了积木的棱角。木头的,凉的,一块一块摞在一起。
“拿最上面那块,红色的。”
她摸到红色的那块,拿起来。
“现在,往左转九十度。”
她转。
“往前一步。”
她往前。
“停。弯腰,把积木放在你正前方。”
她弯腰,放下。手指触到桌面时,碰到了什么——是已经放好的底座。
“对。现在,往后退一步。”
许知然退后,心跳开始加速。不是因为紧张,是因为他的声音。他平时话少,在公司一天说不了几句,但现在每一个指令都清晰、耐心、笃定。不高不低,就在她耳边。
“下一块,蓝色的。在你左手边,往下摸。”
她摸到蓝色的。
“往右转四十五度。对,就那个方向。往前走一小步。停。现在放下去,轻轻放,下面那块是歪的,你感觉一下角度。”
许知然弯腰,手指触到底座时,确实感觉到了那块红色的有点歪。她调整了一下角度,把蓝色放上去。
“好。”他的声音里有一丝满意,“就是这样。”
十五分钟后,他们的积木搭完了。许知然摘下眼罩,看见眼前那个结构,和指定的图片一模一样。
“成了?”她有点不敢相信。
陈序点点头。
旁边几个组还在吵吵嚷嚷,有人把积木碰倒了,有人在互相埋怨。许知然看着眼前完美的积木塔,突然想笑。
“陈序,”她叫他。
他看她。
“你指挥得挺好。”
陈序没说话,但嘴角那个极淡的弧度又出现了。
主持人走过来检查,确认他们的结构完全正确,宣布第七组获得本轮最高分。许知然下意识伸出手,想击掌庆祝。
陈序看着她的手,愣了一秒,然后也伸出手。
手掌相触的瞬间,两人都顿了一下。
他的手掌很热,指尖有薄薄的茧。只是一触,大概不到一秒,两人同时收回手。
“合作愉快。”许知然说,声音比平时轻一点。
陈序点点头,把手插回兜里。
但那天下午,他的手心一直残留着某种温度。每次他想专注听讲,那温度就会冒出来,让他走神。
培训结束,大巴车把大家送回公司楼下。许知然下车时没看见陈序,不知道他什么时候走的。
何照拉着陈序去附近喝酒。
“你今天怎么老看许知然?”何照问,筷子夹着花生米。
“没有。”陈序说。
何照翻了个白眼:“我数了,一共十七次。”
陈序没说话。
何照等了几秒,又问:“那你说,她今天穿的什么颜色衣服?”
陈序沉默。
何照正要开口嘲笑,就听见他说:“浅蓝色。”
何照愣了一下,然后无语了。
“你连人家衣服颜色都记住了,还说没有?”
陈序端起杯子喝酒,不接话。
何照盯着他看了半天,最后叹了口气:“行吧,你继续装。”
周一早上,陈序到公司比平时早了二十分钟。
他打开电脑,第一件事是刷新bug系统。周末两天,新提交的bug有七个,他快速扫了一遍处理人。
没有许知然。
他刷新一次。还是没有。
他点进已处理列表,找到她的名字,最近的一条是上周五的bug编号1023,状态已修复。
今天没有新的。
何照来的时候,看见陈序盯着屏幕发呆,凑过去看了一眼:“看什么呢?”
陈序没回答,反而问:“许知然今天没来?”
何照愣了一下,然后拿出手机翻了翻:“苏桐朋友圈说她病了,请了病假。”
病了。
陈序盯着那两个字,觉得今天早上的bug系统安静得有点不正常。
他打开编辑器,想写代码,但手指放在键盘上,半天没敲出一个字符。
何照在旁边坐下,看了眼他的屏幕,又看了眼他的表情,然后默默转回头,嘴角憋着笑。
那天上午,陈序写代码的效率比平时低了百分之三十。他刷了八次bug系统,看了四遍已处理列表,点进许知然的头像两次。
没有新bug。
系统安静得让人难受。
周一早上,陈序到公司比平时早了二十分钟。
他打开电脑,输入密码,点进bug系统。这是每天早上的固定动作,先看新提交的bug,按严重级别排序,然后规划今天的工作。
新提交列表:空的。
他刷新一遍。还是空的。
他看了眼时间,八点四十二。可能太早了,大家还没到。
陈序打开编辑器,开始处理昨天遗留的一个性能问题。写着写着,他发现自己不知道什么时候又点开了bug系统。刷新。新提交:0。
他皱了皱眉,关掉页面,继续写代码。
九点半,何照来了。他把包往桌上一扔,掏出手机开始打电话。
“喂?苏桐?许老师病了啊?”何照的声音不大,但在安静的开发组里足够清晰,“严重吗?发烧?行行,那你让她好好休息,别急着来上班。”
陈序的键盘声停了。