Skip to content

第一百五十九章 空房间

林知行是被光线刺醒的。

不是闹钟,不是手机,是窗户没拉好的窗帘缝隙里漏进来的那道光,正好打在他脸上。他翻了个身,摸到枕头旁边的手机——早上七点零三分。

客厅里很安静。

这种安静和以前不一样。以前方小满在的时候,早上这个点他要么在打呼噜,要么已经起了,在客厅里窸窸窣窣地翻东西。冰箱门开合的声音,水壶烧开的声音,拖鞋踩在地砖上的声音——这些声音组成了一套固定的白噪音,林知行住了快一年,已经习惯了。

现在这套白噪音停了。

林知行躺了一会儿,盯着天花板。那个问号形状的污渍还在,但白天看过去,只是一块普通的水渍,什么也不像。

他坐起来,穿上拖鞋,走出卧室。

客厅的折叠桌上摆着两样东西:方小满的二手显示器,和一叠A4纸。

显示器是方小满去年在闲鱼上买的,一百二,屏幕右下角有一条细细的亮线。方小满说那条亮线不影响使用,但每次看数据报表的时候,那条线正好穿过数字。林知行让他换一个,方小满说等赚了钱再换。

后来一直没换。

A4纸是方小满留下的客户清单,用订书机钉在一起。林知行走过去翻了翻——一共七页,每页一个客户,姓名、联系方式、业务类型、对接人、上次沟通时间、备注。方小满的字不好看,但写得很细,备注栏里连"王总喜欢喝铁观音""陈总老婆管财务""贺总不吃辣"这种事都记着。

林知行把清单放回桌上,走到白板前面。

白板上的内容还是昨晚的样子。方小满画的那个叉,他写的"六个月"和"变回来",还有角落里那张K572时刻表。

时刻表的纸边角卷得很厉害,大概是这几周北京的空气太干。红圈的颜色也淡了——父亲用的是圆珠笔,圆珠笔的墨迹经不起时间。纸的背面朝外,能隐约看到那行字的反面:到了打个电话。

林知行把时刻表从白板上揭下来,翻到正面,用手指把卷起来的边角压平。

压不回去。

他把时刻表放回白板角落,转身走进卧室。

方小满的床还在那里。枕头摆得整整齐齐,被子叠成方块,像部队里学的。方小满以前不叠被子,是来北京之后养成的习惯——他说两个人住一间房,不叠被子显得邋遢。

林知行在床边坐下。弹簧发出一声轻响。

床头的塑料收纳盒里还放着几样东西:一管用了一半的牙膏、一副有线耳机(左耳不响)、一本翻烂了的《销售管理》、还有一个塑料文件夹。

林知行拿起文件夹。里面夹着一叠纸,不是客户清单,是他自己的笔记本。

不对——不是他现在的笔记本。是他最早的那个。

封面是深蓝色的硬壳,边角磨得发白,右下角有一个咖啡渍。林知行记得这个本子——大一的时候在学校超市买的,三块五。当时方小满还嫌贵,说学校门口的地摊上两块钱就能买到一模一样的。

他不知道这个本子怎么跑到方小满的收纳盒里来了。

他翻开第一页。

上面只有一行字,笔迹很稚嫩,是大一时候的他写的:

O(n²) —— 人生的时间复杂度。

林知行盯着这行字看了很久。

他记得写这行字的那个下午。是一堂数据结构课,老师随口提了一句时间复杂度。他被这个概念击中了——穷尽所有可能去专升本是O(2ⁿ),盲目考证是O(n!),每一条路的复杂度都高得离谱。他第一次觉得,也许问题不是不够努力,而是算法选错了。

那天晚上他在草稿纸上写:是否存在O(log n)的人生路径?

三块五的笔记本,就是那天买的。

他继续翻。

第二页是一张草图——排课系统的约束关系图,画得很乱,箭头交叉在一起,像一团毛线。旁边用铅笔写着一行小字:"人际约束——人的问题。补。"

那是第一次去张老板的学校做排课系统时画的。教务主管在演示现场说了一句"张老师和李老师去年闹过矛盾",他当场愣住。那天晚上他在笔记本上记下这行字,是第一次意识到有些变量不在数据里。

第三页是一段伪代码:

if (用户情绪值 > 阈值) {
    return 最像人的回答;
} else {
    return 最优回答;
}

旁边写着:"方小满说有些问题不是算法问题。"

那是做AI客服项目的时候。用户真实需求和他建模的假设差距很大,对着数据怎么调都不对。方小满陪他去客户现场蹲了一天,回来后说了那句话。他愣了很久,然后推翻了整个方案。

第四页是一页表格,列了十七家公司的名字。投递状态那栏全是"已拒"或"无回复"。只有三家标了"面试",后面各跟了一行备注:

"第一家:想找长期实习的在校生。" "第二家:团队都是985,文化融不进去。" "第三家:正式编制只给本科以上。"

表格最下面,他写了一行字:投递数=17,面试率=17.6%,录用率=0%,学历过滤率=76.5%。

那时候他还不知道这只是开始。

他继续翻。

笔记本的中间部分记录了创业以来的各种技术方案和会议纪要,字迹比前面工整了不少——大概是进了灵犀之后被沈渡教过"文档要写得让别人看得懂"。

他翻到某一页,停了下来。

那一页写着一个标题:人生算法v0.0。

下面是伪代码:function decide(创业, 大厂, 专升本) { return argmax(收入, 成长性, 自由度); }

他记得写这段代码的那个凌晨。三个选项的截止日期都压在同一周,他试图用算法做决策。但打完分之后发现,三个选项的总分差距在5%以内。

算法没有输出答案。后来他买了K572的票,决定先走再算。

后面的页面越来越潦草。创业之后内容从技术方案变成了各种算账——服务器费多少、房租多少、还能撑几个月。数字旁边有时画着箭头,有时画着问号,有时什么都没画。

他翻到某一页,上面写着:

等号左边:三个月的付出。等号右边:三个月的收获。

等号下面一行小字:不成立。付出远大于收获。

再下面,用另一种颜色的笔补了一行:信任。

那是长沙试点三个月结束之后写的。三家门店续签了,年费四万五,离十五万的目标差了三分之二。数字上是失败的,但那天晚上三家店长分别打了电话来——陈店长说"你们的系统帮我少亏了钱",年轻店长说"是真的有用",刘总通过助理转达"透明比准确更重要"。

他在等号的另一边发现了信任。

那是他第一次觉得,有些东西不能用数字衡量。

他继续翻。

笔记本快到末尾了。最后几页是最近一个月写的,字迹忽大忽小,有些地方用力过猛,笔尖把纸戳出了凹痕。

倒数第三页写着:

产品方向调整:从决策支持服务 → 标准化AI库存管理系统。原因:渡渡免费策略、A轮融资要求、活下去。

下面是一行很小的字,像自言自语:活下去比做大更重要。

倒数第二页只有一句话:

我变成了我最讨厌的人。

字迹很重,笔画都陷进纸里了。

林知行的手指在这句话上停了很久。

他翻到最后一页。

空白的。

笔记本用到了这里,后面的纸全是空的。他买了这个本子四年,写了大半本,最后停在了这里——一个他不知道该写什么的地方。

林知行坐在方小满的床边,捧着这个本子,从第一页的O(n²)翻到最后一页的空白。

每一页都是一个决策,每一个决策都以为是最优解。用算法思维分析人生——结果是算法选错了。做排课系统——结果是技术失误伤害了真实的人。去灵犀上班——结果是发现真正的墙不在学历而在更深的地方。离开灵犀创业——结果是在合租房里从零开始。开源核心算法——结果是渡渡科技拿去做了竞品。产品方向改回标准化——结果是方小满走了。

七个决策,七条理由,七个不等于预期的输出。

林知行把笔记本翻回最后那页空白页。

他从床头的收纳盒里找到一支铅笔——不知道是他的还是方小满的,笔尖已经秃了。他把铅笔在裤腿上蹭了两下,开始在空白页上写字。

不是字。

是代码。

function split(方小满, 林知行) {
    // 输入:两个一起走了三年的人
    // 输出:一个最优的分开方式
    
    if (方小满.信任(林知行) > 0 && 林知行.需要(方小满) > 0) {
        return 不应该分开;
    }
    
    if (林知行.方向 == "标准化" && 方小满.方向 == "决策支持") {
        return 必须分开;
    }
    
    // 但问题是:
    // 方小满的客户清单还在桌上
    // 方小满的显示器还在客厅
    // 方小满的被子还叠成方块
    // 方小满的备注栏里还写着"王总喜欢喝铁观音"
    
    return 没有最优解;
}

林知行盯着这段代码看了很久。

铅笔的字迹很淡,在深蓝色的纸页上几乎看不清。但他不需要看清——每一行都是他自己写的,每一个字都在他脑子里。

他在这段代码下面写了一行注释:

有些问题,算法解决不了。

写完之后他没有合上笔记本。他就那么捧着它,坐在方小满的床边,看着最后一页上那段淡得几乎看不见的伪代码。

窗外的光开始变暗。他不知道自己坐了多久——可能半小时,可能两小时。手机响过两次,他没看。大概是周然问工作的事,或者某个客户的消息。他现在不想处理任何事。

天完全黑下来之后,林知行把笔记本放在方小满的枕头旁边,站起来走到客厅。

白板在黑暗中泛着微光。他没有开灯,凭着记忆走到白板前面,看了看上面的内容。

方小满画的叉。 他写的"六个月"和"变回来"。 角落里那张卷了边的K572时刻表。

白板下面的折叠桌上,方小满的客户清单和二手显示器并排摆着。

客厅很小。放下折叠桌、一台显示器、一把椅子之后,转身都费劲。他们刚搬进来的时候,方小满说这叫"创业标配——先苦后甜"。林知行说哪有什么甜,方小满说等赚了一百万就把这间房买下来。

一百万没赚到。方小满走了。

林知行没有开灯,转身走回卧室。

他没有回到自己的床上。

他走到方小满的床边,坐下来,然后躺了下去。

枕头上有方小满的味道——洗发水和汗味混在一起的气味。被子叠成方块,他没有打开,就那么躺在被子上面。

天花板上那个问号形状的污渍,在黑暗中看不清楚。但林知行知道它在那里。他盯着那个方向,就像盯着一个他知道存在但看不见答案的问题。

他想起父亲说过的那句话:车到山前必有路。

父亲是个沉默的人,一辈子开货车,跑长途,相信确定性。每个月的工资是确定的,每趟的路线是确定的,连每天几点吃饭都是确定的。父亲的人生是一条直线,没有分叉,没有最优解的问题,不需要算法。

但林知行的人生不是直线。

从大专到灵犀,从灵犀到创业,从创业到现在——每一步都是分叉,每一步都在选择,每一步都以为自己选对了。

可方小满走了。

方小满走了之后,他才发现一件事:他一直在算的那些变量——收入、成长性、自由度、客户数、star数——没有一个变量叫"方小满"。

不是方小满不重要。

是他不知道怎么把方小满放进算法里。

方小满不是可以量化的变量。方小满不能用权重、不能用评分函数、不能用复杂度分析。方小满是一个人,一个活生生的、会打呼噜、会嗑瓜子、会把客户备注写得密密麻麻、会在白板上画叉、会说"你不是沈渡你只是迷路了"的人。

这种人没有对应的算法。

林知行盯着天花板,盯着那个看不见的问号。

他在想,如果方小满在这里,方小满会说什么。

方小满大概会说:你想那么多干嘛,先睡一觉,明天再说。

方小满永远都是这样。不纠结,不内耗,不想太远的事。干就完了。

但方小满走了之后,林知行发现,他不知道怎么"先睡一觉"了。

以前睡不着的时候,方小满在上铺打游戏,键盘声噼里啪啦响,响着响着他就睡着了。后来在北京合租,方小满在旁边的床上打呼噜,呼噜声像一台老式发动机,嗡嗡嗡嗡,嗡着嗡着他就习惯了。

现在什么声音都没有。

安静得像一间空房间。

林知行闭上眼睛,又睁开。闭上,又睁开。

他开始在脑子里跑一段代码——不是笔记本上写的那段,是另一段:

for (年 = 大一; 年 <= 现在; 年++) { 决策 = argmax(所有选项); 执行(决策); if (结果 != 预期) { 调整参数; 继续; } }

这段代码跑了四年。从O(n²)到人生算法v0.0到vN.0,从算法思维到产品思维到生存思维——每一次调整都是为了让下一次循环的输出更接近预期。

但预期本身就在变。从"找一条复杂度低的路"到"证明自己"到"站稳脚跟"到"做有价值的产品"到"活下去"到"六个月变回来"。每一次调整参数,预期就变一次。

算法跑不出结果。因为目标一直在动。

林知行睁开眼睛,看着天花板。黑暗中什么也看不见,但他知道天花板上有一个问号。

那个问号不是画上去的,是水渍自然形成的形状。它不是任何人留下的信息,不是父亲的红圈,不是方小满的叉,不是陆可盈的期限。它只是一块水渍。

但它像一个问号。

林知行把手臂枕在脑后,盯着那个看不见的问号,一直到窗帘缝隙里的光从黑变灰,从灰变白,从白变成刺眼的金色。

天亮了。

北京的清晨,四环外的老小区,远处有环卫车作业的声音,楼下有人遛狗。这些声音组成了一套新的白噪音,和方小满在的时候不一样。

林知行从方小满的床上起来,走出卧室,走到白板前面。

阳光从窗户照进来,打在白板上。方小满画的叉、他写的"六个月"和"变回来"、角落里的K572时刻表——所有东西都在阳光下清清楚楚。

他拿起白板擦。

在"六个月"和"变回来"上面,他停了一下。

然后擦掉了。

白板上只剩下方小满的叉,和角落里那张K572时刻表。

林知行拿起白板笔。

他站在白板前面,站了很久。

然后他写了两行字。

写完之后,他把白板笔放回笔槽,转身走进卫生间,打开水龙头,洗了一把脸。

镜子里的自己眼圈发黑,头发乱糟糟的,下巴上冒出了青色的胡茬。看起来像一个三天没睡觉的人。

他确实三天没睡好觉了。

他关掉水龙头,用毛巾擦了脸,走回客厅。

白板上那两行字在阳光下很清楚。他看了一眼,没有停留,走到折叠桌前面,拿起方小满留下的客户清单。

七页纸,七个客户。

他翻开第一页。

(本章完)