陈远拿着手机站在办公室的窗边,窗玻璃上映出他自己的脸和背后亮着屏幕的测试设备。"我明天联系客户。"
"行。"
电话挂断了。陈远把手机放在桌上,站在窗前看着外面的路灯和对面楼的灯光。深夜的街道上没什么人了,偶尔一辆车开过去,声音在空旷的空气中拖得格外长。
他转身回到桌前,把第七版那个混合方案的测试数据又翻出来看了一遍,然后把屏幕关掉了。他拉开折叠床躺了下去,被子拉到胸口。躺下去的那一瞬间才感觉到背上和肩膀的僵硬,他整个人陷在床垫里,视线落在天花板上,盯着那里一小片被路灯映出的光斑看了很久。
他第二天早上给客户打了一个电话,把情况解释了一遍。对面问"需要多久",他说"三周",对面说"行,三周后发出来"。他挂了电话之后又坐了一会儿,才开始着手调第八版。
这一版他不再赶时间了,一边测一边拆开重新算,花了一整天的时间把核心参数的取值逻辑彻底捋了一遍,然后一版一版压缩代码的体积和功耗开销,像一层一层往下剥壳一样往前推,每一步都踩着已经验证过的数据走,没有试探,没有跳步。烙铁头在焊盘上停住又离开,重复了无数次,直到第八版的测试波形图稳稳地落在那条合格线以下,没有波动,没有偏移。
陈远没有立刻开始写第八版。
那天晚上他在折叠床上躺了很久,翻来覆去到半夜才睡着。第二天早上醒来的时候他先坐在床边发了一会儿呆,然后把那台跑着第七版方案的设备关掉了,从桌上拿了张白纸铺开,重新画了一张流程图。
以前那几版都是"在原来的框架里找替换方案",这次他在纸上画了一整条新的东西――从核心算法到底层架构全拆了重新画了一遍,有的模块被拆散了再拼起来,有的模块功能相近就合并了,有的数据流顺序调换了位置。一张纸画满了又翻了一页接着画。画完之后他拿着那张纸看了很久,然后打开电脑开始写代码。
这次写代码的节奏跟过去几周完全不一样了。他不再盯着墙上的时钟算还剩多少天,不再每隔两个小时看一次进度条。他每天到办公室先把昨天写的那部分跑一遍确认没问题,然后再开始写新的模块。测试每通过一个就往前推一步。速度没有以前那么快――以前那种赶时间的时候一天能跑好几个方案试错,现在花在测试上的时间比写的时间还多――但是每一步都踩实了,没有再往回退过。
那一周他每天只睡五六个小时,但精神状态比之前连熬七天的时候好了很多。李锐有天来办公室看到他在电脑前面坐着,屏幕上密密麻麻的代码一行一行往上滚,进度条在稳步推进,问他"这次有戏没",他说"有"。
第二周的时候他把算法主体写完了,开始调核心参数。这次他没有一口气试完所有组合,而是先把理论最优值算出来,再沿着那个值往两边扩展测试。找到最佳区间之后把精度收窄再测一轮。这样测了两轮就把参数定住了,性能跑到了原来预期值的百分之一百零五。
第三周他开始做整机联调。把新算法烧进硬件里跑了二十四小时连续测试,波形稳定,功耗降到了目标值以下,温度控制也在可接受范围内。他又跑了一组极端工况的测试――高温、低温、电压波动――全部通过了。
他把设备放在测试架上看它跑了三天的数据,每天来第一件事就是看那几组指标有没有变化,看到第三天的时候确认已经不需要再调了。性能稳定,参数达标。
然后他给客户发了一份测试报告,说设备已经完成了验证,可以发货了。比最初承诺的交期晚了两周半,但客户那边看完报告之后没有提延迟的事,直接回了"那安排发货吧"。货发出去之后客户那边花了一周做自己的验收测试,陈远那几天手机一直开着声音最大,每收到一条消息就拿起来看一眼,看了之后又放下。第五天的时候客户负责人的消息来了,说测试通过,可以签长期合同了。
陈远看到那条消息的时候在实验室里,手里还拿着烙铁。他放下烙铁坐了一会儿,然后拿起手机翻了翻通讯录,找到秦晚晚的对话框,打了一行字发了过去。
"秦总,赶上了。客户测试通过,签了长期合同。"
他把手机放在桌上,继续把那块板子上剩下的几个焊点补完了。等他把烙铁关掉之后拿起来看了一眼,秦晚晚已经回了。_c