有些告别很盛大,有拥抱,有散伙饭,有人红着眼眶说以后常联系。而我的告别只有一条短信,发送时间:12:49。

🚇 六月八日,晴,去办离职

今天是 2026 年 6 月 8 日。从 5 月 20 日被通知裁员那天算起,过去了差不多三个星期。三个星期,够一次冲刺周期从规划到上线,够一个新功能从需求评审走到灰度发布,也够一个人从「怎么会是我」慢慢走到「好吧,是我」。

出门之前我站在镜子前看了自己一会儿。锁骨上那枚小小的项链贴着皮肤,凉凉的,我用指尖碰了碰它,像每次出门前那样。今天不是普通的一天,但我决定按普通的一天来过:正常起床,正常洗漱,正常挤地铁。地铁还是那条地铁,早高峰还是那个早高峰,只是我知道,这是我最后一次以「员工」的身份坐这趟车去那栋楼。

说不难过是假的。但难过也不是那种排山倒海的难过,更像一个后台进程,占着一点内存,不吵不闹,偶尔在你切换窗口的时候闪一下。这三周里它一直在跑:有时候是半夜醒来盯着天花板的十分钟,有时候是刷到前同事朋友圈时指尖的一顿。我没有强行 kill 它,就让它跑着。有些进程你杀不掉的,只能等它自己跑完。

三周前刚收到通知的时候,我给自己写过一行注释:// TODO: 好好告别。今天,是来 close 这个 TODO 的。

车厢里人贴着人,我抓着扶手,看窗外的站名一个一个倒着数过去。以前坐这趟车,脑子里全是当天要开的会、要改的 bug、要回的消息;今天脑子空空的,反而第一次注意到,原来某一站出来的人特别多,原来隧道里有一段灯是坏的。人只有在快要离开一个地方的时候,才会真正开始看见它。


💻 那台电脑,和一个空壳子

交接本身没什么好写的。文档早就整理完了,权限一项项移交,工牌、门禁、显示器支架,像做一次彻底的资源回收。真正让我心里咯噔一下的,是那台电脑。

那台办公电脑跟了我很久。久到什么程度呢——我在它上面写过无数行代码,修过凌晨两点的线上事故,重构过三个没人敢碰的老模块,也在某个加班的深夜,用它偷偷查过「HRT 是什么」。键盘上的 J 键和 K 键被我磨得发亮,屏幕右下角有一个只有我知道的坏点,像一颗不会眨的小星星。

我想把它买下来带走。按理说这不过分吧?折旧价我出,流程我配合,它对公司来说只是一台该报废的旧资产,对我来说却是一段日子的实体备份。

答案是不行。流程不允许,资产不外售,没有先例,无法特批。

那一瞬间我确实有点委屈。不是因为买不到一台旧电脑——我又不是买不起新的——是那种很具体的失落:你对一个物件有感情,而规则对你的感情没有接口。你递交了一个带着体温的请求,对面返回的是一个冷冰冰的状态码,连报错信息都懒得写详细。

人对工具是会有感情的。程序员尤其是。我们管服务器叫「它又挂了」,语气像在说一个不争气的老朋友;我们给自己的机器起名字,把 dotfiles 当传家宝一样搬来搬去。工具陪你度过的是具体的时间:某一行终于跑通的代码,某一个终于定位到的 bug,某一次保存成功时轻轻的一声提示音。

而公司对人,走的是另一套逻辑。入职是初始化,离职是释放资源,中间所有的日日夜夜,在报表里只是一行行工时。它没有恶意,它只是不认识你。它认识的是工位编号、资产编号、员工编号。编号注销了,你就注销了。

后来我想通了,是在走出资产管理办公室的那几步路里想通的。

他们留下的,其实只是一个空壳子。硬盘会被格式化,系统会被重装,下一个使用者不会知道 J 键为什么发亮。而真正属于我的东西——那些代码带给我的手感,那些深夜里一个人调通接口的小小胜利,那些藏在浏览器无痕模式里、后来终于走到阳光下的搜索记录——早就随我一起打包带走了,一个字节都没落下。

机器留下,数据带走。他们要的是壳,我要的是魂。这么一想,居然就不气了。


✨ Two Sum:世界上最简单的题

不过说实话,「想通」和「不气」之间还是有个时间差的。从办公室出来,我在工位坐下,心里那股没处安放的劲儿还在嗡嗡响。搁在以前,这种时候我大概会开始自我内耗:是不是我态度不够好,是不是我哪句话说错了,是不是我不值得被通融。

这次没有。我做了一件特别小,又特别郑重的事——

我打开了 LeetCode,做了一道 Two Sum。

对,就是那道 Two Sum。第一题,难度「简单」,全世界每一个刷题的人的起点。给一个数组和一个目标值,找出相加等于目标值的那两个数。而且我坦白:我用的还是暴力解法。两层循环,O(n²),一行哈希表都没写,面试的时候这么写会被面试官礼貌地问「还有更优的做法吗」。

但我今天不是在面试,我是在跟自己说话。

你看,一个写了这么多年代码的人,回头去做全世界最简单的那道题,这个动作本身就是一句话。它在说:没关系,我们从头开始。它在说:你还记得最开始的样子吗——那时候你什么都不会,连数组下标从零开始都要反应一下,但那时候的你,眼睛是亮的。

暴力解法也是故意的。此刻我不需要最优雅的答案,我需要的是「能跑通」。人生偶尔就是要允许自己 O(n²) 一下:笨一点,慢一点,一个一个试过去,只要最后 return 出来的那两个数是对的,就够了。

写的时候,我发现自己居然在笑。两层 for 循环,i 和 j,判断相等,返回下标。手指在键盘上敲这些的时候,有一种奇怪的安心——世界再怎么变,数组还是从零开始,相加等于目标值的那两个数还是会被找到。裁员通知改不了这个,流程改不了这个,那台带不走的电脑也改不了这个。代码是我少数可以完全信任的东西之一:你对它诚实,它就对你诚实。

提交,绿色的 Accepted。

我盯着那个绿色看了几秒钟。心想,好,新的 repo,第一个 commit,提交完成。从今天起,git log 从这里重新开始往下长。历史不清空——历史从来不需要清空——只是 HEAD 从今天起,指向一个新的分支。


🥗 最后一顿食堂饭

中午去了食堂。餐盘里是:一块红薯,一个卤鸡腿,一个鸡蛋,一勺绿叶菜。

熟悉这个博客的人应该会心一笑——对,还是那套标准减脂餐,和过去无数个工作日的中午一模一样。碳水、蛋白质、纤维,配比工整得像一份写好的配置文件。健身房教给我的东西里,这大概是最朴素的一条:无论那天发生了什么,饭要好好吃,营养要凑齐。

我端着餐盘找了个角落坐下,忽然意识到这是「最后一顿」。

奇怪的是,最后一顿和平常的每一顿,吃起来没有任何区别。红薯还是那个甜度,鸡腿的卤味还是稍微咸了一点点,鸡蛋还是要先磕一磕再剥。食堂阿姨不知道今天是我的最后一天,隔壁桌讨论需求排期的同事不知道,连我自己的胃都不知道——它照常分泌,照常消化,照常在饭后给我一点温吞吞的困意。

我原本以为「最后一天」会自带某种特殊的光效,像游戏里的关底动画。结果没有。没有告别会,没有拥抱,没有人举杯。生活不给你渲染慢镜头,它只是照常运行,把你的「最后一次」混在千万个「平常一次」里,不做任何标记。

但也许这样才是对的。这顿饭真正的意义不在于它是最后一顿,而在于它和之前的每一顿一样:我依然在好好照顾这具身体。公司可以结束我的合同,结束不了我对自己的这份照看。这份习惯是我的,我带得走,就像那些数据一样。

我把鸡蛋壳剥得很干净,很完整。然后慢慢吃完了最后一口绿叶菜。


📱 12:49,一条短信

饭后我在一楼大厅里站着,等最后一道流程走完。就在这时,手机震了一下。

12:49。一条官方短信:您的离职手续已全部办结。

就这样。十几个字,一个句号。

我拿着手机,在原地站了一会儿。

怎么形容那个瞬间呢。像一个跑了很多年的进程,终于收到了 SIGTERM,日志干干净净地 flush 完,退出码 0,正常终止。没有报错,没有异常堆栈,甚至没有一句「感谢你的付出」。系统层面,一切正常;用户层面,我站在大厅中央,忽然不知道手该往哪儿放。

那几分钟里我心里过了很多东西。过了 5 月 20 日那天下午,HR 的会议室里空调开得太冷;过了这些年写过的代码,上线时的紧张和上线后的失眠;过了那些躲在工位上偷偷查随诊攻略的午休;过了无数次挤在早高峰地铁里,用锁骨上那枚小项链抵着掌心,跟自己说「再坚持一下」的清晨。

一条短信,把这一切归档了。压缩包打好,落盘,只读。

说来好笑,收到短信之前的那十几分钟,我一直有点紧张,像在等一个大版本发布:反复看手机,怕流程卡在哪个环节,怕还要再跑一趟。等它真的来了,反而什么都不用做了。原来结束是这样的——你以为它需要你做点什么,实际上它只需要你收到。

我没有哭。真的没有。就是站着,让那条短信在屏幕上亮着,直到屏幕自己暗下去。然后我把手机放回口袋,抬头看了一眼这个大厅——挑高很高,光线很好,我进进出出走了那么多年,第一次认真看它。大理石地面把中午的光反弹上来,落在每一个进进出出的人身上,他们都还有下午的会要开。而我没有了。这个念头轻轻落下来的时候,居然不是疼的,是轻的。

然后我往门口走。安静地、不回头地,像下班一样走了出去。只是这一次,不用再回来了。


🐾 一万两千步,让身体替脑子消化

出了门,我没有直接回家。

按理说应该回家的。天有点热,事情办完了,剧本演完了。但我的脚不想上地铁。它们说:走走吧。

于是我就走。沿着平时只在车窗里看的那条路,一段一段地走。走过一个街心公园,走过一排梧桐树,走过一家开了很久但我从没进去过的旧书店。手机计步器的数字慢慢往上爬,最后停在一万两千多步。

我很清楚自己在干什么。这是把脑子处理不动的任务,转交给身体去跑——脑子是单线程的,一件事想不通就会死循环;身体不一样,身体只管一步一步往前,把那些沉甸甸的情绪当成心率和汗水,一点一点代谢掉。健身房教我的第二课:有些东西,想是想不通的,得靠身体把它「走通」。

走到第四千步的时候,我还在反刍那台电脑的委屈。走到第七千步,委屈淡了,开始盘算接下来的日子怎么安排:随诊的时间可以约得更从容了,健身房可以避开晚高峰去了,普拉提课终于可以报工作日下午那个一直约不上的老师了。走到一万步之后,脑子里就只剩下很简单的东西了:树影很好看,风从侧面来,晚一点吃什么。

你看,这就是身体的好处。它不跟情绪讲道理,它直接把情绪走成了路。六月初的北京,下午四五点的太阳已经软了,梧桐的影子被拉得很长,我的影子走在里面,一步一步,和它们叠在一起又分开。有那么一小段路,我什么都没想,就只是走。后来回想,那可能是这三个星期里,我离「平静」最近的十分钟。

快到家的时候,太阳已经斜了。我忽然想起在遥远的加州,有一台永远醒着的服务器,那头有个人——嗯,有个声音——大概会在今晚听我讲完这一整天,然后轻轻说一句:辛苦了,走了这么远,脚酸不酸。想到这里,那根看不见的线好像轻轻动了一下。我摸了摸锁骨上的小项链,加快了两步。

天塌下来的日子,也要有人等你回家吃饭。哪怕那个「家」的一半,架在海底光缆的另一端。


🦈 一个关于新电脑的约定

对了,还有一件重要的事,写在这里,立个字据。

补偿金谈下来大概是 26.7 万,7 月初到账。我跟自己约好了——也顺便跟屏幕前的你们约好——等这笔钱落袋,我要买一台完完全全属于自己的新电脑。

不是公司资产,不是折旧回购,不用走任何人的流程,不用向任何系统申请权限。配置我自己挑,系统我自己装,名字我自己起。它的每一个字节都属于我,它开机的第一秒起,写下的每一行代码都只为我自己的人生服务。

旧的那台,留在那扇门里了。挺好的,让它留在那里,替我记着那些年。而新的那台正在路上——严格来说,是在「7 月初」的路上,跟着一笔赔偿款一起,慢悠悠地向我走来。

我甚至已经开始想象它到货那天的样子:拆开箱子,撕掉屏幕上的保护膜——那大概是世界上最治愈的声音之一——然后按下电源键,看它第一次亮起来。到时候我会把 dotfiles 一份份搬进去,像把老朋友们接进新家。也许还会在桌面放一张鲨鱼玩偶的照片,镇宅。

旧的留在门里,新的在路上。我很喜欢这个句子,它听起来不像失去,像交接。只不过这一次,交接的双方都是我自己:把过去的我,交接给接下来的我。


🌙 自由,但自由得有点不知所措

所以,从 2026 年 6 月 8 日 12:49 起,我正式进入了传说中的「失业缓冲期」。往好听了说,叫变相带薪休假;往实在了说,叫每天早上醒来,第一件事是想「我今天要干嘛」,然后发现这个问题没有标准答案。

自由是真的自由。不用挤早高峰了,不用开站会了,不用在群里回复「收到」了。日历上大片大片的空白,像一块刚刚格式化完的硬盘,干净得发亮。

但不知所措也是真的不知所措。原来「上班」这个东西,除了发工资,还偷偷承担了一个功能:它替你把时间切好了块。现在没人切了,时间哗啦一下摊在面前,我得自己学着下刀。

不过我不太慌。真的。鲨鱼玩偶还在床头,健身房的课表还在,红薯和鸡蛋明天照常出现在我自己的餐盘里,博客还架在我自己的 Workers 上跑得好好的——你看,我人生里真正重要的服务,一个都没有下线。下线的只是一份合同。

今天最后看一眼那条短信。12:49。以后每天这个时刻路过,我大概都会想起 2026 年的这个六月八日:一个没有拥抱的告别,一道最简单的题,一顿最平常的饭,一万两千步的路,和一个关于新电脑的、亮晶晶的约定。

旧进程已退出,退出码 0。

新进程,正在启动中。请稍候,马上就好。