十二月的广州刮起了北风,办公室的窗户关得严严实实,暖气开得很足,却还是压不住机房方向传来的键盘敲击声。
那声音比平时密了三倍,像一群停不下来的鼓点,敲在每个人的心上。
“军哥,这是第五版通信协议了,还是有延迟!”
小李抱着笔记本跑过来,眼睛里布满红血丝,下巴上冒出了青茬。
“刚才测试群聊,十条消息丢了两条,延迟最高到了两秒,这要是放出去,用户肯定得骂街。”
我接过笔记本,屏幕上的消息日志一片红。
红色的“发送失败”提示像扎眼的小旗子,在黑色背景里格外醒目。
“把丢包的日志导出来,我看看。”
我手指飞快滑动鼠标,心里有点沉。
今天是“泡泡”研发启动的第三周,jackson在启动会上放了话。
“三个月内必须拿出测试版,qq已经占了80%的市场,再慢就没机会了”。
“泡泡”是网益第一次做即时通讯软件,目标很明确--从腾信qq手里抢用户。
而我负责的底层通信架构,就是这事儿的根基。
消息发不出去、延迟高、容易掉线,再好的界面和功能都是白搭。
“老张呢?让他把之前做的消息缓存模块调一下,把丢包的消息存到本地,等网络恢复了自动重发。”
我抬头喊了一声,机房里立刻传来老张的回应。
“早调了!缓存是加上了,可延迟还是降不下来,腾信的qq延迟才几百毫秒,咱们差太远了!”
我走到老张的工位旁。
他正盯着屏幕上的延迟测试曲线,绿色的线条忽高忽低,像条没头的蛇。
“把传输协议从tcp改成Udp试试。”
我蹲下来,指着日志里的连接记录。
“tcp要三次握手,太耗时间,Udp虽然不可靠,但咱们加个校验机制,应该能把延迟压下来。”
“改协议?那之前写的代码不就白费了?”
老张皱着眉,“咱们已经熬了两周了,每天睡四个小时,再改……”
“没办法,要么改,要么等着被qq甩在后面。”
我拍了拍他的肩膀,“今晚加把劲,我跟你们一起熬,明天早上必须看到新的测试结果。”
团队里没人抱怨,只是默默拿起鼠标,重新打开代码编辑器。
办公室里静得只剩下键盘声,偶尔有人起身去接水,脚步轻得像怕打扰到别人。
墙上的日历被圈出了密密麻麻的加班日。
从项目启动那天起,我们就没休过周末,每周六天泡在公司,泡面和咖啡成了标配。
晚上十点,我正对着电脑改Udp协议的校验算法,办公室门被轻轻推开,Eva拎着个保温桶走进来。
她穿着件厚厚的羽绒服,头发上沾了点雪粒子。
广州很少下雪,今天却飘了点碎雪,冷得厉害。
“怎么又来这么晚?”
她把保温桶放在我桌上,打开一看,是热气腾腾的排骨汤,还有两个肉包。
“我在家炖了一下午,想着你肯定又没好好吃饭。”
我停下手里的活,揉了揉发酸的眼睛。
“协议有点问题,得改,不然延迟降不下来。”
我舀了勺汤,暖意顺着喉咙滑下去,舒服得叹了口气。
“你怎么来了?这么冷的天,路上不安全。”
“我看你一周没回家吃晚饭了,”
Eva坐在我旁边,帮我整理桌上的文档。
“上次你说‘泡泡’要跟qq抢市场,是不是特别难?你看你,黑眼圈都快掉地上了。”
我心里一酸!
这三周,我每天早上出门时Eva还没醒,晚上回家时她已经睡了。
偶尔能视频几分钟,也总是被工作电话打断。
“快了,等测试版出来就好了。”
我握住她的手,她的手暖暖的,比我的手热多了。
“到时候咱们去珠江边散步,好好陪你。”
Eva笑了笑,没再多说,只是帮我把凉掉的咖啡换成了热水。
“别熬太晚,我在家给你留了灯。”
她走的时候,还特意把我的外套叠好放在椅背上,怕我下班时忘了拿。
Eva走后,我又熬了四个小时。
凌晨两点,老张突然喊了一声:“军哥!成了!延迟降到500毫秒了!丢包率也控制在1%以内!”
我赶紧跑过去。
屏幕上的测试曲线平稳下来,绿色的线条乖乖趴在“500ms”的刻度下,消息日志里再也没有红色的“发送失败”。
“太好了!”
小李兴奋地跳起来,差点碰倒桌上的泡面桶。
“咱们终于追上qq的延迟了!”
老张靠在椅背上,长长舒了口气。
“能睡三个小时了,再熬下去,我这胃就要罢工了。”
他摸出抽屉里的胃药,干咽了两片。
这几周他胃一直不舒服,却从来没说过要休息。
我看着团队里这群熬得眼睛发红、却依旧兴奋的人,心里突然有点热。
我们不是在跟qq抢市场,是在跟时间抢,跟自己抢。
我掏出手机,给Eva发了条短信:“延迟降下来了,快成功了,你好好睡。”
虽然只有短短几个字,却像是卸下了一点重担。
窗外的雪还在下,小得像盐粒,落在玻璃上很快就化了。
我知道,这只是第一步。
后面还有界面优化、功能测试、用户反馈,还有qq随时可能推出的新功能。
但至少现在,我们离目标近了一点。
只是那时候我没料到,“泡泡”的研发会比我想的更难。
春节前的测试版上线,用户反馈远不如预期。
jackson发了火,要求我们正月十五前必须优化完。
而我和Eva的矛盾,也在这场无休止的加班里,悄悄埋下了种子。