凌晨三点四十七分,宿舍里只剩下键盘沉闷的敲击声和空调外机老化的嗡鸣。
六人间里,其他五个人早就睡熟了,偶尔传来翻身时床板轻微的吱呀声。我把MacBook的屏幕亮度调到最低,戴上降噪耳机,继续对着 idropin 的文件上传模块死磕。TypeScript 的类型报错像打地鼠一样,刚补上一个 FormData 的接口定义,另一边的分片逻辑又冒出两行刺眼的红线。
这是这周第三次通宵了。眼睛干涩得有些发胀,手边的保温杯里只剩下一点冷掉的茶水,咽下去的时候带着微苦的涩味。
有人说程序员是这个世界上最容易辨认的物种——不需要看脸,也不需要看穿着,只要看深夜楼房里,谁的窗户还亮着一块矩形的光。
那种光很特别。它不像自习室的台灯那样温暖,也不像街边的路灯那样带着尘世的烟火气。它是一种介于蓝和白之间的冷色调,静静地映在脸上的时候,会让人看起来既专注又疲惫。像一个苦行僧,在自己的小宇宙里做着某种谁也看不懂的修行。
在广商这几年,我常常在这种光里忘记时间。大一刚进来的时候,我也曾对着“民办三本”的标签迷茫过。后来发现,对抗这种迷茫唯一的方式,就是把自己扔进代码里。很多人看到简历上的 GPA 4.02,看到那两张国家奖学金的证书,会习惯性地以为这背后是某种游刃有余的聪明。但其实不是。计算机的世界是很诚实的,它不看你的出身,不看你的学校牌子,它只看你的逻辑能不能闭环。
那些漂亮的绩点和奖项,剥开来看,全都是由这种幽蓝色的屏幕之光填满的。
我并不是享受熬夜,更多时候是出于一种“再调一下就好了”的执念。一个 Promise 没能按照预期正确 resolve,一个大文件切片在合并时丢失了几个字节,我就没法心安理得地躺下。这不是外界所宣扬的那种苦行僧式的自律,在某种程度上,它更像是一种轻微的强迫症。当现实世界充满不确定性——比如大四这年越来越近的毕业季,比如让人焦虑的秋招大环境——屏幕里的这方寸之地,反而成了我唯一能完全掌控的领地。只要代码写得对,程序就一定会跑通。这种确定性让人安心。
四点二十分的时候,东边的天空开始泛白。
广州的黎明总是来得比北方早一些,空气里常年带着那种亚热带特有的、微黏的湿润感。天空的变化不是一蹴而就的,先是在楼群的边缘勾勒出一条很细的灰蓝色线,然后慢慢氤氲开来,变成一种通透的浅橘色,像有人在巨大的天幕上小心翼翼地推开了一层渐变滤镜。
耳机里的白噪音停了。窗外,鸟开始叫了。起初只是零星的几声试探,然后声音越来越密,交织在微凉的晨风里。
我叹了口气,把最后一行带报错的代码注释掉,合上笔记本。金属转轴发出轻微的阻尼声。
推开阳台的推拉门,走出去。
宿舍楼下的操场空无一人,红色塑胶跑道上还散落着昨晚新生夜跑没来得及收走的矿泉水瓶。远处的教学楼像一只沉睡的巨兽,安静地蛰伏在晨雾里,等待着几个小时后被第一道上课铃唤醒。白天的时候,那里总是挤满了匆匆忙忙的人,背着书包考研的,拿着简历去宣讲会的。但现在,它只是一个沉默的建筑。
这是一天中我最喜欢的、也是最安静的时刻。没有微信群里的消息提示音,没有项目推进的 DDL,没有同龄人之间无意识的内卷和比较。整个世界好像短暂地停摆了,只有天光在一寸一寸地亮起来,像一只无形的手慢慢拉开了白天的幕布。
我靠在阳台生锈的栏杆上,看着远处天空的颜色慢慢变深。维特根斯坦在《逻辑哲学论》的最后说:“对于不可言说之物,必须保持沉默。”
以前读到这句话时只觉得深奥,但现在忽然觉得,也许有些东西本就不需要言说。比如凌晨四点的天光。你不需要去分析它的光谱,不需要去赋予它什么“新的一天新的希望”之类的宏大意义。你只需要站在这里,感受带着凉意的风吹过熬夜后微微发烫的额头,看着它发生。在这个瞬间,个人的焦虑、前途的迷茫,都在这片广袤的晨光面前被无限缩小了。
站了十几分钟,脚底传来一丝凉意。我转身回到宿舍,轻手轻脚地爬上床。
刚躺下,身体的疲惫感瞬间涌了上来,后脑勺接触到枕头的一刻,感觉整个人都在往下沉。但在半梦半醒之间,那种属于程序员的直觉突然跳了出来。
我想到了那个 bug 的解法。
其实根本不是什么高深的底层逻辑问题,只是在处理分片上传的并发控制时,Promise.all 里的一个数组映射写错了层级。
这种感觉很奇妙。它不是在你盯着屏幕、眉头紧锁苦思冥想的时候出现的,而是在你彻底放弃挣扎、让大脑放空的时候自己浮现出来的。人的大脑有时候就像一台后台运行的 Node.js 服务器,你以为把主线程挂起了,其实它一直在事件循环的深处跑着一个叫“灵感”的异步任务。等到时机成熟,它就静悄悄地把结果推回给你。
瓦尔特·本雅明在谈论艺术的时候,喜欢用一个词叫“灵光”(Aura)。他用这个词来描述传统艺术品那种独一无二的、此时此地的存在感。一幅画、一尊雕塑,因为它所处的特定时间和空间,产生了一种不可复制的神圣性。而在机械复制时代,这种灵光消退了。
我闭着眼睛想,代码本身是没有灵光的。我今晚写的这些 TypeScript,明天会被 commit,会被 push 到 GitHub,它可以被无数次 fork,可以被复制粘贴,可以在一千台不同的服务器上以完全相同的方式运行。它只是由 0 和 1 组成的逻辑集合。
但写代码的这个瞬间是有灵光的。
那个在凌晨三点四十七分敲击键盘的我,在广商这间略显拥挤的宿舍里,感受着广州初秋略带湿气的温度,忍受着第三次通宵带来的心悸和疲惫,为了一个看似微不足道的上传组件,写下了那行最终会被运行的代码。这件事本身,这段混合着青春、执拗、迷茫和释然的时光,是永远无法被复制的。
就像此时此刻,窗外正在彻底亮起的、属于二十二岁的黎明。
我翻了个身,把被子往上拉了拉。外面的鸟鸣声已经连成了一片。明天上午还有一节课,下午要去跑几组测试用例。但现在,我只打算沉沉地睡一觉。
