01-01

正文 • 裁员通知
最后更新: 2026年5月12日 下午6:58    总字数: 8586

邮件到的时候,陈默正在处理一个追查了三天的内存泄漏。

那是一个藏得很深的bug,隐匿在一段处理并发请求的代码里,只在特定的负载条件下才会现形,服务器内存每隔七十二小时增长约0.3%,不明显,但持续,像一条缓慢发展的细裂缝,在到达临界点之前不会触发任何警报。陈默喜欢这种问题。不是因为它有趣,而是因为它公平:只要逻辑足够严密,答案一定在数据里,不会消失,不会逃跑。现实世界里的问题很少有这个性质。

他刚把嫌疑范围缩小到一个连接池管理模块,Outlook的小图标在屏幕右下角闪了一下。

发件人:人力资源部 周琳。主题:沟通邀约。

我的手停在键盘上方,停了大概两秒钟

在互联网行业干了六年,我见过太多这样的邮件。它们总是在周五下午出现,像一种不成文的行业仪式。标题永远温和得体,"沟通邀约"、"发展面谈"、"组织调整说明",仿佛即将发生的不是一个人职业履历的中断,而是一次和风细雨的下午茶。我曾经目送过两个前同事从那间拉着百叶窗帘的小会议室里走出来,一个出来就去厕所待了半小时,另一个坐回工位,静静地把桌面上的东西一件一件装进纸箱,整个过程没有说一句话,脸上是一种让人不知道怎么接近的茫然,像从一场突如其来的车祸现场里走出来,身体无恙,但灵魂还留在碰撞的那一秒里。

我点开了邮件。

内容很简洁。公司因业务调整进行组织架构优化,后端开发三组整体裁撤,请于下周一前往人力资源部办理离职手续,补偿方案面谈时详述。末尾是行政化的感谢套语,像从某个模板库里调出来的,连标点符号都没有例外。

我读了两遍。不是因为没看懂,是习惯使然,调试代码的时候我也总要多跑一遍测试,哪怕结果已经是绿色的。

我缓缓靠向椅背,摘下耳机。

空调发出低沉的嗡嗡声。几排工位之外有人在打电话,声音含混地穿过空气,像隔着一层水。对面的前端工程师小汪还在噼里啪啦敲键盘,头埋着,看不见脸。旁边工位的测试组的一个女生正在刷外卖APP,手指在屏幕上反复横跳,几秒钟前她刚扭过来问我"晚上吃什么",我说"随便",她就转回去了,像一次无结果的函数调用。

没有人知道我刚刚收到了一封什么邮件。

这很正常。我在这家公司干了三年,三年里每天准时打卡、按时提交代码、从不在群里发言,连续六个季度拿到了"优秀员工"考核中第三档的"良好",不是最差,但绝对不显眼。我的存在对这个组来说像一个运行稳定的后台进程:你不会特别记得它,直到有一天它停了,你才想起来,哦,原来有些任务一直是它在跑。

我在IDE里把未完成的调试记录存进草稿,写了一份简单的交接文档,标注了那个内存泄漏最新的排查进展和可疑代码段的位置,把文件发给了技术主管老齐。老齐看到消息,过了几分钟回了两个字:"收到。"后面没有别的。

我关掉电脑,把工牌从挂绳上取下来放在桌面上。

东西不多:一个用了两年的马克杯,杯壁上有一圈永远洗不掉的茶渍;一根备用充电线;一盒过期了三个月的薄荷糖。还有一张贴在显示器边框上的便利贴,是我入职第一天抄的一行字,"talk is cheap, show me the code",林纳斯·托瓦兹说的,我在每家公司都贴过这一句,像某种连自己也说不清楚用意的个人传统。

我看了那张便利贴一眼,没有撕下来,把充电线和马克杯装进帆布袋,拎起来走了。

写字楼门口,十一月的傍晚冷得清醒。深圳的冬天不下雪,但有一种湿漉漉的寒意,风一吹就钻进领子里。下班的人流把我往前推搡了几步,我在人群边缘站住,被人绕过去,绕过去,最后那一波人走远了,我还站在那里。

我忽然想不起自己应该去哪里。

这不是一种隐喻。是字面意义上的,我站在写字楼门口,大脑运行了几秒,找不到一个需要我出现的地方。

我租住在龙华的一个城中村。

房间在四楼,一室一厅,三十平,月租两千四,住了两年半,墙上没有贴过任何东西。厨房的灶台从开锁那天起就没有点燃过,台面上落着一层薄灰,我从来不去擦,因为它已经到了某种稳定状态,不会更厚了。饮食结构是深圳打工人的标准配置:楼下沙县、便利店饭团、外卖、偶尔在超市打折的时候囤几包泡面。我不觉得这有什么问题。一个人的胃不需要仪式,只需要摄入。

我在楼下沙县买了一份拌面和一碗蛋花汤,提着纸袋上楼,进门,开灯,把饭放在折叠桌上。

坐下来的时候翻了一眼手机。

有一条未读微信,来自妈,发送时间是下午三点二十七分:

"小默,今天吴医生来查房了,说指标比上个月好一点点,你别担心,妈挺好的。你晚上记得吃饭,别老对着电脑。"

我把手机扣在桌上,低头吃面。

拌面的芝麻酱调得太稠,有点噎。我机械地往嘴里送着面条,目光落在对面那面空白的墙壁上。

"指标比上个月好一点点",这句话我不知道该怎么放进哪个坐标系里去理解。三个月前,妈在老家县医院的常规体检里意外发现了肝部阴影,转到深圳复查,确诊肝癌中期。主治医生吴建国在第三次化疗结束后把我叫进办公室,翻着CT片子,用他那种说什么都像在陈述技术参数的语气告诉我:"目前方案效果低于预期。建议考虑免疫联合靶向治疗。"

"费用呢?"

"每疗程十五到二十万,需要四到六个疗程。"

我在脑子里做了一个很快的估算。四个疗程最低六十万,六个疗程最高一百二十万,中位数九十万。我的存款在支付了前三次化疗和各项检查费用之后,剩下不到九万。我的月薪是一万八,扣完房租水电,每个月能攒下的最多四千。

九万,加上此后每个月的四千,撑不到两年。

我回家之后把这个数字输进了Excel,做了一个很详细的收支预测模型:不同治疗方案、不同疗程数量、不同贷款利率下的现金流轨迹。我花了两个半小时把每种情况都算清楚,字体用的微软雅黑11号,表格颜色是蓝灰色的配色方案,打印出来整整五页。

然后我把那五页纸叠好,放进抽屉,没有再打开过。

我不打开是因为我已经把所有数据记在脑子里了。我打开Excel是因为我需要让自己做一件精确的事,当一个问题大到让情绪找不到落点,我的本能反应是把它转化成数字,转化成可以被理性处理的对象。数字也没有答案,但至少数字不会在喉咙里卡住。

我吃完拌面,把纸碗折叠好扔进垃圾桶,坐回电脑前,打开了招聘网站。

岗位信息的密度让人低强度地眩晕,"后端工程师3-5年""Java开发工程师""Go语言高级工程师",每一条描述的都像是我,也像是任何一个与我同质化的人。我点开几个看了看薪资,多数标"面议",标了范围的比我之前的薪水低了一截。2024年的互联网招聘市场是什么行情我心里有数:我有两个前同事今年找工作,一个投了两百份简历,约到面试的不到二十个;另一个降薪30%才落了地,入职当天发朋友圈说"活着就好",配图是一碗泡面。

我关掉浏览器,靠在椅背上,闭了一会儿眼睛。

脑子里的念头像未被回收的线程在并行跑着,妈的治疗费、下个月的房租、九万块还能撑多久、N+1的赔偿金大概是多少、要不要考虑降薪、要不要考虑换城市,每个念头都在消耗内存,但没有一个能被终止,因为每一个都对应着一个真实存在的问题,关掉它就是回避它。

我睁开眼,看着漆黑的显示器屏幕。

黑色的屏幕里有我的轮廓,一个坐着的人,没有清晰的面孔,像用橡皮擦轻轻擦过了一遍。我盯着那个模糊的轮廓看了一会儿,脑子里飘过一个念头:如果当初走错了几步,那个轮廓还会是我的吗?

这个念头来了又走。我没有留住它。

我打开床头柜的抽屉,翻出了那部旧手机。

那是一部iPhone 8,黑色的,屏幕右上角有一道裂缝,是2019年某次睡觉时被我从床上带下来摔的,摔完之后贴了钢化膜继续用,一直用到2021年才换新的。现在充电口已经松了,需要把线头用书压着才能充进去。

我在床头柜底层摸到了那根旧款的充电线,找了本《算法导论》压上去,等着手机开机。

屏幕亮起来的时候还是上次关机前的状态,2021年7月某一天的桌面,十几个未读推送堆在那里没人清理。我没去翻那些消息,直接找到了一个橙色图标的APP。

钱包余额:0.003 BTC。

这是2018年我清仓时因为最小转账限额没能提走的零头。按今天大约六万美元一枚的价格,折合人民币差不多一千三百块。一顿比较好的火锅。

我盯着那个数字,从厨房顺手带出来的矿泉水喝了一口。

林北辰的微信在这时候蹦出来了:

"默哥,听说你们组被优化了?你没事吧。"后面是一个抱拳的表情。

我盯着那个表情看了几秒,嘴角微微动了一下,不知道算不算笑。林北辰是我大学时候的室友,四年同窗加上毕业后断断续续的往来,大概是我为数不多还保持联系的朋友。这个人和我性格完全相反,张扬、外向、话多、爱折腾。大学时候就在炒股,毕业后辗转做过产品经理、运营,最后一头扎进了加密货币市场,做量化交易。按他自己的说法,"牛市里赚过一套房的首付,熊市里亏回去了两套。"

我回了一条:"没事,早有预感。你最近怎么样?"

他秒回:"在跑一个新策略,回测数据不错。改天出来吃饭,当给你接风。"

"接什么风,又没去哪。"

"接失业的风啊哈哈哈。放心以你的技术水平找工作不难,市场再差也缺能干活的人。实在不行来跟我做量化,你那脑子写策略肯定比我强。"

我没有再回复。不是不想聊,是不知道该怎么接话。林北辰说的每一句都是善意的,但善意有时候像创可贴,它覆盖了伤口的表面,不妨碍底下的疼痛。

我去柜子里翻出了半瓶二锅头,五十六度的,不知道什么时候买的,开过一次,没喝完就放在那里了。我把它倒在玻璃杯里,喝了一口。烈酒入喉像一根烧热的铁丝,我被呛得咳了半天,然后感觉意识的边缘开始变得松软,那些关于钱、关于工作、关于妈的念头还在,但像是被塞进了一个降噪耳机里,音量调低了一些。

我打开了笔记本电脑,进了ECHO的目录。

ECHO是一个Python脚本,我给它起了这个名字,理由是它应该"回响"某种我暂时还听不见的信号。

脚本的核心功能是链上数据分析,从公开的区块链浏览器API爬取历史交易数据,按照我自己设计的一套特征提取算法进行处理,然后用可视化界面把结果呈现出来。这在技术层面没有特别独特的地方,市面上有很多专业分析平台,不少比我写的强得多。

ECHO的特殊之处在于它分析的对象。

我把2018年所有交易记录的相关地址喂给了它,让它以这些地址为起点,追溯那个时间段里链上的资金流动、大户行为、持仓变化,尝试重建当时市场的微观结构,哪些资金在我入场之前建好了仓,哪些主力在我割肉之后悄悄开始抄底,那个最低点的形成究竟是市场自然出清的结果,还是某种更有意图的力量在推动。

这件事的起因是2018年的那次亏损。

当时我二十三岁,在一家区块链创业公司做后端开发。公司的CTO是个比特币信徒,每天在饭桌上给所有人讲去中心化的未来。我被他说服花了六个月,最终把四万八千块积蓄全数买入了比特币,均价约六千三百美元。我记得点击"确认"之后的感觉,不是兴奋,是一种近乎于完成了某项任务的平静,我做过调研,看过K线,研究过链上数据,我相信自己是理性的。

两个月后,比特币跌穿了三千五。

我的四万八变成了两万四出头,浮亏接近五成。我撑了六个星期,每天盯着K线图,把那段时间CTO说过的每一句话重新分析一遍,试图找到那个应该让我早点离场的信号。什么信号也没找到。我最终在比特币触到三千两百美元的时候割肉,手续费和提现扣完,到手两万一。

亏了两万七。

这不是让我无法释怀的部分。钱后来赚回来了,花了三年。让我无法释怀的是那个"三千两百美元",因为那是2018年年底的最低点,我割肉的那天恰好是最低价的后两天,而比特币在我离场之后开始了漫长的反弹。那四万八千块的本金,如果我没有卖,按2021年六万九千美元的最高价持有到那时,会变成将近三百万。

中间的差距是一个最糟糕的决策,和一个最不该出现的时机点。

我花了三年试图找到那次决策失误的根本原因。越复盘越不确定。那六个星期里我的情绪并没有特别失控,我做了我认为理性的分析,得出了我认为合理的结论,按照那个结论行动了。如果那就是我的理性,那我的理性本身有问题。如果我的理性有问题,问题藏在哪里?

ECHO是在这种状态下被写出来的。

我跑了三年的数据,写了将近两万行代码,生成了几百份分析报告。结论是:不知道。或者更准确地说,数据给出的答案是:那次暴跌是多重因素叠加的结果,没有某个特定的主谋,也没有某个特定的时刻是我本可以识别的信号。我亏损的原因就是我亏损的原因:入场的位置本来就糟糕,离场的方式本来就是情绪驱动的。

没有BUG。或者说,我本人就是那个BUG。

这个结论我很早就知道了,但我继续跑数据。

后来我慢慢想清楚了一件事:ECHO不是为了找答案,它是为了让我有一件事可以做。一件精确的、有反馈的、由我本人完全掌控的事情。在妈生病之后,在招聘市场越来越难之后,在每一个我站在某个岔路口不知道往哪里走的夜晚,打开ECHO、导入数据、等待结果,是我能维持某种内在稳定性的少数几个方式之一。

分析的对象是过去,但做分析这件事本身发生在现在。

今晚我把数据的时间范围从2018年扩展到了2020年初。

没有特别的理由。也许是失业让我需要一个出口,也许是二锅头喝了两杯之后思路偏了。我的旧钱包地址在那段时间里还挂着,里面只有那0.003枚没能提走的比特币,偶尔会收到一些无意义的粉尘交易,我从来没有专门分析过那一段。

ECHO开始运行。屏幕上的数字流像一场无声的瀑布,哈希值、地址、区块高度、时间戳,从下方涌出,又被覆盖,又涌出。我靠在椅背上看着,眼神散着,喝了一口二锅头,快要睡着了。

屏幕上弹出了一个红色警告框。

我把椅子往前拉,眯眼看。

ECHO的异常检测模块触发了。我给这个模块设定了三个标准差的阈值,平时每隔几周会触发一次,多数是虚惊一场,交易所的大额内部转账,或者某个大户的链上操作。我已经习惯了把这类警告点开扫一眼然后关掉。

但这一次我没有立刻关掉。

警告指向一组微型交易。金额极小,每笔0.00000001 BTC,一聪,比特币网络里最小的计价单位,折合人民币大约零点零四分。这类交易本身不罕见,粉尘攻击或链上地址标记都会产生。

ECHO标红它们的原因不是金额,是时间分布。

我切换到时间轴视图。

那些交易的时间戳在图上排列成一条线,一眼看上去像一组不规则的脉冲信号。我盯着它看,感觉有什么东西在意识深处轻轻拨了一下,那种感觉我认得,在调试那些藏得很深的BUG的时候偶尔会有,不是逻辑推导出来的,是某种更底层的、对"结构异常"的直觉反应。就像一张照片里有个角落的光落错了方向,照片本身是对的,但那道光不应该从那里来,你不仔细盯着看就发现不了。

我让ECHO对这组时间戳做进一步分析,用我写的相关性算法跑了一遍。

结果出来的时候,我把二锅头瓶子推到了一边。

时间戳的间距不是随机的。它们遵循一种递变规律,像一组被人为设计过的脉冲编码。我扩大了搜索范围,把这组微型交易的接收地址拿出来,在2019到2023年的全量链上数据里做交叉比对。

ECHO跑了二十分钟。

横轴是时间,纵轴是ECHO定义的"行为关联指数"。图上分布着几十个高亮节点,集中在每一次市场重大转折点的前后:2020年3月的暴跌、2021年初牛市的启动、2021年5月的政策重击、2022年5月LUNA的崩盘、2023年底的反弹前夜。每一个节点,这组地址都提前完成了方向正确的布局。

准确率:99.7%。

ECHO在热力图下方生成了一段汇总:

"检测到高置信度关联模式。置信度:99.7%。结论:目标交易集群非独立行为,存在中心化协调机制。模式特征与已知市场操纵行为不匹配。注:时间戳分布特征异常,疑似包含编码信息。建议人工复核。"

我读了这段话,又读了一遍。

"与已知市场操纵行为不匹配。"

如果不是已知的操纵行为,那它是什么。

我盯着热力图上那些高亮节点,感觉自己站在一扇关着的门前。门缝里透出一种我没见过的光,说不清楚颜色,但温度是可以感觉到的,是那种让人本能地想往后退一步的温度。

我没有往后退。

我让ECHO开始对那组时间戳进行解码尝试。

疼痛没有任何预警。

不是渐进式的偏头痛,不是长时间盯屏幕造成的眼胀。它是一瞬间的,像有人从颅骨内部引爆了一颗钉子弹,我的视野在零点几秒内白成一片,双手从键盘上滑落,整个人从椅子上栽下去,后背撞上地板,但那点疼痛比颅内的剧烈轻到几乎不存在。

我蜷缩在折叠桌下面,手指抓着地板,嘴巴张开,发不出声音。

意识开始碎裂。

不是熄灭,熄灭至少是一个完整的过程,从清醒到模糊到黑暗。这更像是意识本身被拆成了无数个碎片,每一个碎片都在同时折射不同的画面:妈在病床上的侧脸,吴医生翻着CT片子的手,那份我叠好放进抽屉再没打开过的五页纸,ECHO屏幕上那张热力图,那些排列成脉冲信号的时间戳,还有一串我没有见过的数字,一个区块高度编号,清晰得像被人用烙铁烫进视网膜,不在我今晚看过的任何数据里,但它就在那里,像一个坐标,像一个我不知道通向哪里的地址。

疼痛到达了某个峰值。

然后,像一台被强制关机的服务器,一切都黑了。

。。。。。。。。。。。。

。。。。。。。。。。。。

。。。。。。。。。。。。

什么声音把我惊醒。

是手机铃声,来电,在我还没完全回神的时候停了。

不知道自己在地板上躺了多久。额头贴着地砖,脸颊那边凉着,口腔里有一股铁锈味,舌头好像被自己咬破了。我缓慢地撑起身体,脖子僵,眼睛还没睁开,就先把手伸出去把手机摸过来。

屏幕是亮的。一个未接来电,号码不认识。

我想看是谁打来的,结果看见了日期。

手机屏幕右上角,白色的小字:2020年1月3日,周五,上午07:41。

我盯着那串数字,没有动。

窗帘没拉,窗外进来的是清晨的光,灰白色,带着南方冬天特有的潮湿。隔壁房间透出电视机的声音,新闻结束后的早间节目,主持人在说天气预报,明天多云,气温回升。楼下有人用方言叫嚷着什么,一辆电动车按了一声喇叭,切掉了,安静了。

我把手机放在胸口,平躺在地板上,看着天花板。

天花板上有一块已经发黄的污渍,是我搬进来第一天就注意到的,房东说是以前漏过水,修好了。我盯着那块污渍,脑子里的理性在高速运转,像刚完成冷启动的服务器正在依次检查各个模块的状态:手机日期显示2020年1月3日,但现在应该是2024年11月,日历出错,还是手机出错,还是我的认知出错,需要外部验证。

我撑着地板坐起来,环顾房间。

折叠桌上有一台ThinkPad笔记本。我在2021年把它扔掉了,硬盘故障,换了台新的。它现在在这里,屏幕关着,键盘上压着一本《深入理解计算机系统》,是我2019年在旧书摊买的,2021年才读完,搬家的时候送人了。

墙角没有我去年双十一买的那个组装书架。衣服叠在折叠椅上,不是那件我常穿的灰色卫衣,是一件我记忆里属于那个年代的藏蓝色外套。

我打开手机,进了微信。

林北辰昨晚发来一条消息,发送时间是2020年1月2日 22:53:"明天有空吗?出来吃个饭,我认识了个量化圈的人,给你介绍介绍。"

我打开微博,搜索"比特币"。

最新价格:7,180美元。

我把手机放下,两手撑着膝盖,坐在地板上。

窗外的光在继续变亮,楼道里有人拖着拉杆箱经过,轮子在地面上滚出一段空洞的声响,然后消失了。隔壁的电视说今天有雾,能见度低,出行注意安全。

我的大脑还在运行,但某个层次上我已经停止了试图解释这件事。

因为有一件事比所有的解释都更早占据了我的意识。

2020年1月3日。

三个月后,比特币会跌穿3,800美元。

九个月后,它会站上28,000。

十三个月后,2021年2月,妈在县医院的一次常规体检会发现肝部有个不明显的阴影。那次我在深圳加班,她在电话里说"可能是照片拍糊了,没事的",我说"那就再去复查一下",然后我们都把这件事放下了。后来那次复查她没有去,因为她说感觉挺好的,等忙完那段时间再去。那一等,等了九个月。

如果现在是2020年1月3日。

那次体检是2021年2月。

我还有整整十三个月。

我坐在地板上,听着自己的心跳声在安静的房间里一下一下地敲击,像某个大型程序完成初始化时发出的第一组脉冲信号,规律,清醒,不可抗拒。

窗外那条夹在两栋楼之间的灰白色天空,慢慢地亮起来了。

(第一章結束)