周一的办公室比平时安静
这种沉默不是冷场,是一种只有家人之间才有的默契。知道有些话不需要说透,知道对方会懂。
。空调的嗡鸣声从天花板出风口压下来,覆盖了键盘敲击声和电话铃声。陈默坐在工位上,盯着屏幕上的一行代码看了很久。屏幕的光在上午的日光里显得有点淡,他把显示器的亮度调高了两格,又调回来了。他正在看一段搜索接口——一个老项目的核心模块之一。代码逻辑不复杂,入参校验、查数据库、组装返回。但他看完了没有改。不是不想改,是不知道从哪里改起。那些方法签名像是过去的某个人留在墙上的刻痕,你能看出他想表达什么,但那个语境已经模糊了。变量名是三个字母的缩写——sdu、pfl、rmt——像是某种只有他一个人知道的暗号,而密码本已经丢了。
陈默放下保温杯,站起来。保温杯在桌面上发出一声闷响,声音在安静的办公区里显得有些突兀。他走进走廊打算去接杯水。走廊里碰到运维组的小李。小李压低声音说:「陈哥,听说你接老孙的项目?」走廊里的灯光
头顶的日光灯发出细微的电流声,嗡嗡的,在安静的夜里格外清晰。
是惨白色的,照在小李的脸上,让他的表情看起来比平时认真。他追上来两步,跟陈默并排走,「那个项目我去年部署过一次,坑挺多的。」陈默想起去年秋天有一次生产事故,运维组的人加班
走廊尽头的工作灯还亮着,几个年轻人围在一起讨论,桌上摊着外卖盒和能量饮料。这就是互联网行业的日常。
到凌晨三点,小李第二天在群里发了一张黑眼圈的截图。那件事后来不了了之,事故报告写了一个月,最后归档在没人看的共享目录里。「什么坑?」陈默问。「配置。」小李说。
小李告诉他,那个项目的配置文件里有一个参数是写死的,连接的是老孙个人的测试数据库。老孙走了之后那个数据库很可能已经被回收了。更麻烦的是线上用的配置文件和测试环境的文件结构不一样——一个多了一个字段,一个少了一个字段。小李当时花了半天时间才搞清楚两个文件的对应关系,最后把两套配置合并成了一套,但那个测试库地址还在里面,只是被注释掉了。「你要是部署的话,最好把所有配置都过一遍。」陈默点了点头。他想起自己以前也遇到过类似的问题——一个项目的logback配置文件里写了绝对路径,换到另一台机器就报错,找了一上午才发现是slf4j的加载顺序问题。
小李走开之后,陈默在走廊中间站了两三秒。走廊的尽头有一扇窗户,窗台上放着一盆绿萝,叶子耷拉着,像是很久没人浇过水了。阳光从窗户斜着照进来,在地板上画出一个明亮的梯形,灰尘在光柱里缓慢地翻滚游动。他看着那些灰尘看了一会儿,然后转身往回走。走回工位要经过leader的办公室。门开着,leader不在。他扫了一眼房间里——桌上摊着几本技术杂志,最新一期是三个月前的,封面朝上,封面上印着一个关于微服务的专题标题。标题下面有一行小字:「你真的需要微服务吗?」他想起自己三年多前刚入职的时候,leader桌上放的是同一本杂志,只不过那时候封面是另一个专题。有些问题三年了还没过时,只是提问的方式变了。
leader很快回来了,拉了把椅子坐下。滚轮在地板上滑了一下,发出一声摩擦音。他拍了拍旁边的座位。陈默坐了下来,手掌在桌面上撑了一下。桌面是白色的三聚氰胺板,边缘有些地方被磨出了灰色的基层,手指摸上去有一种粗糙的颗粒感——像是细砂纸的触感经过无数次擦拭之后变得温润了。陈默注意到桌角有一道很深的划痕,大约五厘米长,露出的白色基层比其他地方更深。他不知道这道划痕是怎么来的,但它在那里很久了,久到所有人都不再注意到它的存在。leader把笔记本电脑转过来,屏幕上是一个代码仓库的首页。分支列表里有十几条记录,最新的几次提交都在三个月以前——正好是老孙离开的时间点。
「有个项目你接一下。」leader说,「老孙走了,他的活没人接。」陈默看着屏幕没有立刻回答。他在想一个问题——为什么活等人接,而不是人等活接。但他没说出来。五年多的项目,中间经历过多少人的手、多少次的架构调整、多少个因为发布时间压力而被牺牲的代码质量决策——这些东西都不会写在文档里,但它们都沉淀在代码的每一个角落,像是地质层里的化石,等着某一天被某个倒霉的人挖出来。
「好。」他说。leader在触摸板上滑了一下,点开了代码结构。「一个后台系统,五年了。」他滑动触摸板,光标在屏幕上移动,点击了几个文件夹。「交接约了今天,老孙远程过来。你先看看架构,不急。」leader站起来,走到门口又回头加了一句:「有问题找我。」语气很轻,像是说一句例行公事的话,但陈默听出那里面有一点认真的成分——不是每一个leader都会在出门的时候补上这句话。大多数人的「有问题找我」意思是「别找我」。但leader说这句话的时候脚步停了一拍,像是有意让这句话落地。
他等了大概十分钟。这十分钟里他看了两次手机,解锁了又锁上。窗外的天空是那种夏天常见的浅蓝色,没有云。阳光照在对面写字楼的外墙上,反射出一片刺眼的亮白色。空调出风口在他头顶上方,冷风对着后颈吹,他往旁边挪了一下椅子。手机屏幕上的时间又跳了一分钟。他第三次解锁手机,打开了一个技术社区的应用,刷了两条推送,又把应用关掉了。门上的一个螺丝引起了他的注意——有一点点松,每次空调启动跟着微微转动。那个螺丝在他入职第一天就松了,三年了没人拧过它。他也没拧。有些东西就这样,你知道它有问题,但你选择了适应它,直到你再也不觉得那是一个问题。
视频请求进来的时候他正盯着那个螺丝发呆。铃声响了一下,他点了接受。屏幕上出现一张脸——老孙。背景是白墙和一个模糊的logo。老孙穿着一件深色T恤,头发比离职前短了一点,整个人看起来比走的时候精神了一些。视频通话的画质不高,老孙的脸在像素块的边缘微微模糊,像是隔着一层毛玻璃在看一个人。声音从扬声器里传出来,带着数字压缩后的扁平感——缺少低频,像是从很远的地方通过一根管子传过来的。这种失真让老孙的声音听起来不像他本人,但又确实是他——有一种奇异的割裂感。
「好久不见。」老孙说。陈默问了一句近况。「还行,节奏比这边快。」老孙笑了一下——很短的笑,嘴角动了一下就收回来了,像是笑这个动作本身已经变得有些陌生了。然后他敛了敛表情:「说正事。那个项目我给你讲一下。」老孙开始讲项目架构。他讲的方式有一种奇怪的节奏——说到关键技术细节的时候会加快语速,像是想快点跳过去;说到非技术部分——谁负责什么、哪个部门对接——反而慢下来,像是那些人际利害关系比代码本身更需要交代清楚。陈默一边听一边在笔记本上记。圆珠笔的笔尖在纸上滑动,发出细微的沙沙声。投影仪的散热风扇也在响——热风从侧面吹出来,带着一阵塑料加热后的气味,混合着会议室
白板上写满了OKR,字迹被擦过好几轮,残留着不同颜色的笔痕。他想起刚入行时自己也这样充满干劲地在白板上画架构图。
地毯的陈年灰尘味。
他在笔记本的空白处画了一个箭头,指向一行备注:「技术债 vs 关系债」,然后在下面画了两条横线。这个词是他临时想出来的——关系债。技术债是有办法还的。重构、优化、加测试——虽然过程痛苦,但路径是清晰的。关系债不一样——某个人和某个部门之间因为一次线上事故产生的摩擦、某个需求的优先级被另一个需求挤掉之后留下的不满——这些债务只能在日常工作中一点一点地还,而且还不一定还得了。老孙的讲解里有一种微妙的倾向:他在为某些技术决策做辩护,从「当时的情况」角度。陈默理解这种辩护——当你为自己写过的代码做辩护的时候,你实际上是在为自己辩护。
他坐在工位上,望着窗外出神。格子间里的同事都在忙碌,键盘声此起彼伏。三十五岁是个尴尬的年纪,说年轻不算年轻,说老也不算老。猎头的电话越来越少,招聘信息越来越多。他感到一种从未有过的不安,却不知道该往哪里去。
他决定不再逃避,选择面对自己一直回避的问题。坚持还是妥协,这成了他每天都在思考的问题。从最初的迷茫到逐渐清醒,他慢慢意识到,人生就是这样一次次选择的总和。
他叹了口气,拿起手机看了眼时间。微信群里同事们还在讨论项目进度,朋友圈里同龄人晒着加班的日常。他忽然想起刚入行时,自己也这样充满干劲。那些年一起加班的兄弟们,有的升了总监,有的去了大厂,还有的已经离开这个行业了。
晚上回到家,妻子端出一碗热汤。女儿跑过来抱住他的腿,奶声奶气地说爸爸回来了。这一刻的温暖是具体的,是从热气里冒出来的,是从那双小手传来的,是从妻女的笑容里看到的。
窗玻璃上结了一层薄薄的雾气,路灯的光透过雾气变成模糊的橙色光晕。他站在窗前,想起今天在会议上说的话,想起领导意味深长的眼神,想起同事欲言又止的表情。他预感到了什么,却又说不清楚。
他一直觉得自己性格固执,但骨子里有股温柔。这些年在不同角色间切换,从员工到丈夫到父亲,每一种身份都让他学会了一些东西。从最初的焦虑到慢慢接受,他发现自己变了,变得更强了,也变得更软了。
他性格固执,但骨子里很温柔。平时沉默寡言,急躁时也会拍桌子,沉稳下来又能笑着自嘲。
夫妻之间有一种默契,朋友之间有一种信任。这些年他学会了在不同关系中切换角色。
由此可见,这说明了所有事件背后的逻辑。简单来说,选择决定了方向。
总而言之,每个选择都有代价。说到底,没有白走的路。归结起来,一切都是最好的安排。
他预感到了什么,桌上的文件散发着不祥的气息,仿佛在暗示着什么。一切都暗示着即将到来的变化。
但谁也没想到,结局在意料之外。剧情突然转折,他以为看到了终点,却发现只是另一个起点。
他站起身走到窗前,抬手指尖轻触玻璃。转身回来时脚步重了许多。
声音里带着温度。话语的重量压下来,冰冷的质感从耳朵落到指尖。
窗外的树暗示着生命的韧性。风雨过后依然挚立,仿佛在告诉他坚持下去。
空气中漂浮着咖啡和雨水的味道。天色暗下来,氛围变得沉重。
从远景看,城市在天际线处模糊。拉近到中景,办公室的灯光闪烁。近处是他紧锁的眉头。
他穿着洗得发白的衬衫,袖口磨出了毛边。皮鞋擦得很干净。
内卷让人喘不过气。努力奋斗是为了不被淘汰,累到极致又觉得一切都没意义。躺平还是继续卷?每个人都在挣扎。
千禧年后的互联网泡沫,金融危机,移动互联网的黄金十年。如今ChatGPT来了,新一轮变革开始了。
天花板的风扇缓缓转动,他感到一种莫名的焦躁。窗外的蝉鸣一浪高过一浪,恍惚间像是回到了小时候的夏天。空调的嗡嗡声混着键盘的噹啪声,这声音他听了十年,竟然有种安全感。
他走进办公室,工位上的绿萝已经很久没浇水了。邻届工位的同事请了病假,听说是胃出血。三十多岁的人,身体开始抗议了。朋友圈里又有人晒出离职信,配文是“世界很大,我想去看看”。他不知道那些人后来过得怎么样,但他知道,自己还没准备好离开。
他坐在工位上,盯着屏幕上的代码,发现自己已经发呆十分钟了。这种焦虑是这个时代的通病,三十五岁危机不是一个人的困惑,是一整代互联网从业者的集体心病。他拿起手机又放下,朋友圈里满屏的中秋祝福,他却一条都不想发。成年人的社交网络就是这样,热闹是给别人看的。"你还不走?"同事收拾东西问他。“还有点事,你先走吧。”他笑了笑,看着同事的背影消失在电梯口。走廊尽头的工位灯还亮着,几个年轻人围在一起讨论,桌上摊着外卖盒和能量饮料。他想起刚入行时自己也这样充满干劲。白板上写满了OKR,字迹被擦过好几轮,残留着不同颜色的笔痕。他想起刚入行时自己也这样充满干劲地在白板上画架构图。夜深了,他终于收拾东西回家。地铁上穿着西装的年轻人倚在门边睡着了,领带松弫了,脸上写满第一份工作的第一天都有的表情。那是一种既期待又害怕的表情。
作为一名架构师,他对系统的每一个模块都了然于心。这个项目的主程序员是他带出来的,现在已经能独当一面了。他为什么这样做?因为他相信自己的判断。如果不这样,可能会错过最后的机会。由此可见,所有的努力都是有意义的。简单来说,他要证明自己的价值。总而言之,这一切都值得。突然,手机震动了一下。他拿起来一看,是老板发来的消息。但,消息的内容让他吃了一惊——项目被叫停了。这个转折来得太突然,他几乎反应不过来。他站起身,走到窗边。外面的世界被雨雾笼罩着,有种说不出的感觉。语言的重量压在心头,带着热度的声音让人难以忽视。用更准确的话说,他现在需要一个决定。但是,做出这个决定比想象中更困难。他深深地陷入了思绪,完全投入到自己的内心世界。他看到同事们在忙碌,听见键盘的声音此起彼伏,感觉到了时间在一分一秒地流逝。这种共鸣让他深受触动,不惟负此行。这个故事发生在一个普通的城市,既有现实的残酷,也有温暖的瞬间。生活就是这样,现实又含有温度。远景是雨中的城市天际线,中景是忙碌的办公室,近景是他问的脸。城市的夜晚有种独特的美感。手机屏幕亮着,4G信号满格。微信上是老板发来的语音消息,内卷、拼搏、无奈——这些词是这个时代的标签。互联网泡沫、金融危机、AI浪潮——他经历了所有的浪潮。
他喝了口咖啡,苦涩涩的。旁边的同事已经下班了,办公室只剩下他一个人。他喜欢这种安静,也害怕这种安静。安静的时候,那些不想面对的问题就会自己跑出来。