键盘右上角的咖啡渍在晨光里结出褐色纹路,周沉舟盯着屏幕上标红的代码报错,食指悬在退格键上迟迟没按下去。这是他今早第三次修改王浩宇提交的接口文档 —— 这个去年校招进来的应届生,总在注释里用火星文写 "老古董看不懂就首说"。那些扭曲的字符像爬在屏幕上的蚂蚁,啃噬着他作为程序员的尊严。
工位隔板外传来此起彼伏的键盘声,像一群蝉在服务器散热孔里振翅。周沉舟转动椅子,看见项目经理陈凯正把最新的需求文档递给实习生,蓝衬衫领口沾着昨夜加班的方便面油星。五年前他抱着仙人掌坐在这里时,陈凯还是和他通宵改 bug 的兄弟,现在却总在晨会说 "沉舟经验丰富,适合带 legacy 系统"。legacy,多么优雅的借口,翻译成中文就是 "过时"。他摸了摸键盘上包浆的 W 键,这个被他按出凹陷的按键,见证过他多少个通宵达旦的夜晚,现在却要用来修改新人充满挑衅的代码。
手机在桌面震动,母亲发来三张医院缴费单照片,红色欠费章像滴在白纸上的血。周沉舟盯着总额栏的数字,后颈新冒的斑秃处突然一阵刺痛。他想起上个月部门团建,HR 总监拍着他肩膀说 "程序员 35 岁前要转型,你这年纪该带带人了",当时自助餐台上的金枪鱼饭团还冒着热气,现在回想起来只剩冷硬的米腥味。那些饭团曾是他加班时的慰藉,尤其是便利店那个总穿工牌的姑娘,总会多送他一包海苔碎。
王浩宇从隔板前经过,故意撞了下他的椅子:"周哥,旧系统的数据迁移记得用新框架啊,别又搞出兼容问题。" 年轻人的卫衣上印着最新的 AI 开源社区 logo,发胶固定的发型在灯光下泛着光泽。周沉舟看着他的背影,突然发现自己的格子衬衫袖口己经磨得起球,而对方手腕上戴着的智能手表,正是他参与测试过的初代产品。
屏幕右下角弹出 OA 系统通知,陈凯分配了新任务:协助测试组验证历史数据。周沉舟点击接收时,发现任务截止日期是三天后,而正常流程需要至少两周。他捏了捏发酸的手腕,想起去年同期,自己还在主导核心业务模块的开发,代码提交记录占据着部门周报的头条。现在那些闪烁的 it 记录,属于隔板另一头戴着降噪耳机的年轻人。
窗外的阳光逐渐强烈,咖啡渍在键盘上投下的阴影越来越淡,像他正在消逝的存在感。周沉舟打开抽屉,里面整齐码着历年的技术笔记,牛皮纸封面被翻得毛边。最新的一页停留在三个月前,记录着他对微服务架构的学习心得,却再没机会应用到实际项目中。笔记旁边躺着半支没盖笔帽的马克笔,笔尖己经干涸,就像他逐渐枯竭的职业热情。
手机再次震动,这次是父亲的主治医生发来消息:"尽快筹备手术费,保守估计还需 8 万元。" 周沉舟摸了摸口袋里的公交卡,突然想起上周在电梯里听见两个新人聊天:"听说周哥还住在城中村,连公司班车都舍不得坐。" 城中村的出租屋,楼下的包子铺,还有巷口那家常去的便利店,构成了他生活的全部。他曾以为凭借技术可以改变命运,却在 32 岁这年,被现实磨平了棱角。
键盘突然发出连续的报错声,王浩宇的代码在测试环境崩溃了。周沉舟看着控制台疯狂滚动的错误日志,发现对方竟然在核心逻辑里用了过时的加密算法。他深吸一口气,准备起身去找年轻人沟通,却看见陈凯己经站在王浩宇工位前,笑着拍他的肩膀:"没事,新人难免出错,让周哥帮你看看。"
这句话像一记重锤,砸在周沉舟心上。他重新坐回椅子,盯着屏幕上的咖啡渍,突然发现它的形状像极了五年前入职时公司楼下的那棵梧桐树。那时的他,眼里满是对未来的憧憬,以为自己会像梧桐树一样,在这片土地上扎根生长。如今树干上的年轮还在增加,却早己无人在意它的枝叶是否茂盛。
工位隔板上贴着的便签纸被风吹得翻动,露出背面的字迹:"今晚加班改需求"。周沉舟扯下便签,扔进垃圾桶,却在低头时看见自己磨破的皮鞋尖。他不知道这双穿了三年的皮鞋,还能陪他走过多少个加班的夜晚,就像不知道自己还能在这个行业坚持多久。
键盘上的咖啡渍渐渐冷却,凝结成更深的褐色。周沉舟叹了口气,开始重新编写接口文档,指尖在键盘上跳跃,却再没有当年的流畅。那些曾经熟悉的代码,此刻像陌生的符号,拼凑不出任何希望。而远处咖啡机的声响,依旧在走廊里回荡,像一首无人倾听的挽歌。