晚上十一点,我按下那个“构建”按钮,看着进度条慢慢爬,然后关了灯,去睡。不是真睡,是躺下听风扇在客厅那台老机器上嗡嗡转,像某种古老的念经声。这次要编的东西有点重,依赖一大堆,按以往的经验,得跑到天亮。那台机器是台淘汰下来的工作站,显卡早拆了,就剩 CPU 和风扇还在硬撑,编这种东西刚好,不浪费电也不浪费感情。
我干这行快二十年了,编译这件事从没变过它的脾气——你急,它偏慢;你睡,它倒老实。年轻时不懂,守在屏幕前一根烟一根烟地等,生怕哪步断了。现在学乖了,把任务丢出去,该干嘛干嘛,第二天起来看结果。
这次编的是个内部工具,自己写着玩的,没什么人催,也没什么人用。正因为没人管,反倒更想把它做完整——不是为了交差,是为了跟自己有个交代。代码写到后面,乐趣早就不在功能本身,而在那种“让它跑通”的执念。
可有些夜晚就是静不下来。比如今晚,明明知道明早才有结果,还是隔一会儿就摸手机看一眼 CI 的界面,绿点还在转,红点没亮,就又放下。这种等待很微妙,不是焦虑,是一种“东西在替我运转着”的踏实——全世界都睡了,至少我这里有台机器还在为我工作。
单身的好处在这时候显出来。没人问你“怎么还不睡”,也没人嫌风扇吵。我可以把客厅当成机房,把笔记本摊在枕边,半梦半醒间听见编译通过的提示音,像远处传来的一声钟。那一刻竟有点感动,不是为代码,是为这种“有人(哪怕是个程序)还醒着陪我”的错觉。
中途起来倒了杯凉茶,顺手摸了摸机器外壳,温温热,像个体温正常的伙伴。我想放张大卫·加勒特的,又怕小提琴太亮,最后选了张钢琴即兴,低低的,散在房间里,跟风扇一个节奏。音乐和机器声混在一起,竟比任何时候都像“家”的声音。
黑胶机我没开,怕吵。就放了一段白噪音,雨声,循环的,混着风扇的嗡。窗外的城市彻底暗了,只有远处高架桥上偶尔的车灯,划一道弧线又消失。我想起很多年前刚入行,也是这样一个夜,为了赶一个 demo,整宿没合眼,天亮时把东西发出去,倒在椅子上就睡。那时候觉得自己在改变世界,现在知道不过是改了几个函数。可那份“夜里还在做事”的劲头,倒一直没丢。
干我们这行的,大概都收藏着几个这样的夜。不是加班,是自愿的——你想看看自己写的东西,在另一台机器上跑起来是什么样子。那种跨越屏幕和机箱的“它替我活着”的感觉,是别处给不了的。所以我从不觉得熬夜编译苦,反倒有点享受,像放风筝,线在手里,风在别处。
编译最磨人的不是慢,是它给你希望又吊着你。百分之九十三,卡了十分钟;百分之九十七,又卡;最后三个百分点像是用爬的。我第一次遇见这种卡顿是新工作那周,以为挂了,重启了三次,后来才知道是单元测试在拉远程数据。从此学会,卡住的时候先去倒杯水,别跟进度条瞪眼。
凌晨四点我真的睡着了。再睁眼,手机上 CI 绿得发亮,构建成功,用时六小时十二分。我盯着那行字看了好一会儿,没马上起来,就把这六小时的安静,当成了某种陪伴。
起床烧水,顺手把构建产物下载下来。机器凉了,风扇停了,客厅回到白天的样子。可我知道,就在刚才,它替我熬过了一整夜。有些努力是这样——你睡了,它没睡;你醒来,它把结果递到你手上,什么都不邀功。
我把产物提交到仓库,写下一行注释:“overnight build, passed.” 然后关掉终端,窗外开始泛白。新的一天要来了,可这一夜,是我和一台老机器,悄悄过的。
评论 0
还没有评论,来说两句吧。