V3_C11_古老
六月中旬。许畅来了。
方教授的学生。二十六岁。瘦。黑框眼镜。白T恤上印着一行代码:Hello World。等宽字体。程序员的标配。但他穿的方式不太一样。T恤塞进了黑色牛仔裤里。皮带是棕色的。脚上是白色的Stan Smith。干净。比办公室里任何一个人都干净。
他进门的时候我在工位上。张富贵出去跑客户了。周小薇在电脑前。刘海洋在写代码。林工戴着耳机。小陈在整理表格。
正常的周三上午。直到一股古龙水的味道飘过来。
办公室从来没有过这种味道。六个月了。这间办公室闻过的味道是:甲醛、外卖、速溶咖啡、汗、泡面、张富贵的薄荷糖。没有古龙水。古龙水是另一个世界的气味。学术圈的。或者说,一个觉得自己应该有气味的年轻人的气味。
他进门第一件事不是打招呼。不是找我。不是问哪个是他的工位。
他看了一眼角落那台服务器。
那台服务器上跑着我和刘海洋花两周搭的AI训练环境。TensorFlow 0.X。GPU占用率58%。一个测试模型在跑。跑得很慢。我知道很慢。刘海洋也知道。但我们没有办法。我们不懂更新的框架。我们用的是我在YouTube上看的那个印度口音的教程里教的版本。
许畅站在服务器前面。看了三秒。屏幕上的数字在跳。他没有碰键盘。只是看。
然后他走向空的工位。放下背包。打开自己的笔记本电脑。开始看配置文档。
"你好。我是赵秉文。"我走过去。伸出手。
他看了一眼我的手。然后伸手握了一下。手指很长。很干。指尖有茧。不是体力劳动的茧。是敲键盘敲出来的。右手中指和无名指的指腹上各有一小块硬皮。
"许畅。"他说。"方教授说过你。"
"他怎么说的?"
"他说你很拼。"
三个字。很拼。不是"很厉害"。不是"很有想法"。是"很拼"。拼这个字在学术圈的人嘴里不算夸奖。更接近于"他不是靠天赋的,是靠命的"。
"谢谢。"我说。
他已经转回去看屏幕了。配置文档。他的阅读速度很快。屏幕在快速往下滚动。每滚一页他停两秒。然后继续。他在扫描。不是在读。他在用最短的时间了解这间公司的技术栈长什么样。
我站在他旁边三秒。回到自己的位置。坐下。
古龙水的味道留在空气里。淡的。但办公室里每个人都闻到了。周小薇抬了一下头。看了一眼新来的人。看了两秒。然后低下头继续看表格。她大概在心里给他建了一个档案。姓名、年龄、来源、第一印象。周小薇给每个人都建档案。不是写在纸上的。是记在脑子里的。
林工没有摘耳机。他大概没注意到新人来了。也可能注意到了但不在意。他的世界只有代码和绿萝。新来的人跟他没有关系。
刘海洋从头到尾没有抬头。他在写代码。他知道今天有人要来。我跟他说过。但他选择不看。不是冷漠。是他的方式——用代码判断一个人比用眼睛更准。等新来的人写出代码,他再看。
下午两点。许畅把整个AI训练环境看了一遍。
上午他一直在看。从九点半到两点。中间只站起来过一次,去接了一杯水。白色的纸杯。喝了两口放在桌上。然后继续看。他看文档的方式跟刘海洋看代码不同。刘海洋看代码是一行一行扫。许畅看文档是跳着看。先看架构图。再看依赖列表。再看配置文件。最后看跑起来的效果。他是倒着看的——先看结果,再看原因。
四个半小时。他把我们的整套AI训练环境从头到尾摸了一遍。数据怎么进来的。模型怎么跑的。输出怎么评估的。每个环节的代码在哪。版本号是多少。最后更新是什么时候。
他站起来。走到刘海洋旁边。
刘海洋在写代码。耳机没戴。他今天没戴耳机。也许是因为知道新人来了。也许是巧合。
许畅站在他旁边。用一种陈述句的语气说了一句话。
"你们这个AI框架太古老了。"
不是质疑。不是嘲笑。是诊断。跟方教授说"产品不行"一个语气。师生一脉的说话方式。看到什么说什么。不包装。不委婉。
"TensorFlow 0.X。这个版本现在研究圈基本已经在往更新的方向走了。API不统一。调试麻烦。扩展性差。你们这套跑起来慢。以后要加模型也不好加。说实话,不适合继续用。"
他说这些话的时候语速很快。不是着急。是习惯。他在实验室里做报告的时候大概也是这个速度。信息密度高。逻辑清楚。每一句话都有根据。TensorFlow 0.X确实旧了。API确实不统一。扩展性确实差。他说的每一个字在技术上都是正确的。
但正确和合适是两回事。在实验室里对导师说"您的代码旧了"是正常的反馈。在公司里对CTO说"你的框架古老了"是一颗子弹。同样的话。不同的场景。杀伤力不一样。
他说的是代码。不是人。他看着屏幕上的代码说这些话。不是看着刘海洋。
但刘海洋听到的不是代码。是人。一个比他年轻九岁的人。刚来第一天。看了四个半小时。然后走过来。站在他旁边。用一句话否定了他两周的工作。
刘海洋抬头。看了他三秒。
三秒。没有说话。脸上没有表情。眼睛是平的。嘴唇是闭的。手还放在键盘上。手指没有动。
三秒之后。他低下头。继续写代码。
没有回嘴。没有解释。没有反驳。没有"我知道了"。什么都没有。
许畅站了一会儿。看刘海洋不说话,他也没有追问。转身回到自己的工位。坐下。打开终端。开始安装新的训练环境。
他不是恶意的。我看得出来。他只是习惯了说出他看见的东西。在实验室里,导师说你的代码不行,你改就是了。不涉及感情。不涉及面子。是技术问题就当技术问题处理。
但这里不是实验室。这里是一家公司。这台服务器上跑的代码是刘海洋花两周搭的。我跟他一起搭的。两个不懂NLP的人,对着YouTube教程,一行一行敲出来的。不好。确实不好。古老。确实古老。
但那两周里刘海洋每天写到凌晨一点。红牛喝了十几罐。他不是不知道自己的代码古老。他知道。他在看AlphaGo直播那天晚上就知道了。他看了方教授的论文。他知道差距在哪。
知道和被一个比你年轻九岁的人当面说出来,是两回事。
我坐在旁边。手放在键盘上。没有打字。
感觉有什么东西绷紧了。不是空气。是人和人之间的一根线。看不见的。但绷着。从许畅的嘴到刘海洋的肩膀之间,拉了一根线。这根线在那三秒的沉默里被拉直了。没有断。但紧了。
刘海洋低头继续写代码的时候,他的手指在键盘上停了半秒。半秒。然后恢复了正常的节奏。我注意到了那半秒。别人没注意到。但我注意到了。
半秒。一个人消化"你的东西被否定了"这件事,用了半秒。然后他选择了不回嘴。不解释。不辩驳。继续写代码。
这是刘海洋。他不用嘴说话。他用代码。
傍晚。我出去买外卖。
沙县小吃。蒸饺加拌面。十二块。买了六份。带回来放在每个人桌上。
许畅接过来说了声"谢"。眼睛没离开屏幕。他的屏幕上全是英文文档,标签密密麻麻。打开了至少十个。每个标签上是一篇论文或者一份技术文档。他吃蒸饺的时候一边看文档一边咬。蒸饺的汤汁溅到了键盘旁边。他没管。
张富贵下午回来了。他看到新人已经坐下了。凑过来低声问我。
"这人靠谱不?"
"方教授说靠谱。陈峰认识他。"
"陈峰认识他?"
"对。"
张富贵想了想。"那就靠谱。陈峰眼光不差。"
他回到自己的位置。打开笔记本。在今天的日期旁边写了一行字。我后来看到了:"新人来了。名字许畅。方教授的学生。穿白T恤。用古龙水。"
张富贵的笔记本什么都记。人的名字。穿什么衣服。用什么味道。他用这些细节判断一个人。他说过:"做销售的看人先看鞋。鞋干净的人在乎自己。在乎自己的人做事不会太差。"
许畅的鞋很干净。白色的Stan Smith。没有一点灰。
刘海洋的鞋我从来没注意过。也许是黑色的运动鞋。也许是灰色的。不确定。他不是不在乎鞋。是他在乎的东西排在鞋前面太远了。代码排第一。咖啡排第二。睡觉排第三。鞋排在很后面。也许排在一百名以后。
两种人。一种把鞋擦得很干净。一种不知道自己穿的什么鞋。
晚上十点。办公室只剩两个人。
刘海洋和许畅。
所有人都走了。林工五点四十五。小陈六点。周小薇六点半。张富贵七点。我八点半。
走的时候我回头看了一眼。两个人背对背坐着。中间隔了一张桌子。一张桌子的距离。一米二。
刘海洋的机械键盘声均匀。咔嗒咔嗒。节奏稳定。像节拍器。
许畅的键盘声快一点。停顿短。打一段停两秒。再打一段。像写文章的人在想下一个句子。
两种节奏。两种声音。在同一间办公室里交叉着。偶尔同步了一下,然后又分开了。
刘海洋桌上有三个红牛罐。空的。他什么时候喝的我不知道。他大概从下午许畅说完那句话以后就开始喝了。三罐红牛。三个半小时。他在做什么?我不知道。也许在继续写他的代码。也许在看许畅安装新环境时用的是什么框架。也许在想怎么回应。
他的回应方式不是语言。从来不是。他不会说"你说得对"或者"你说得不对"。他会用行动说。也许明天。也许后天。也许下周某一天的凌晨三点。他会用一种所有人都看得见但没有人能当面质疑的方式回应——代码。
他的代码是他的语言。他的沉默是他在写稿。
窗户开着。三楼。六月的夜风从外面进来。梧桐树的叶子已经很密了。风穿过叶子发出沙沙的声音。混着键盘声。混着远处偶尔传来的外卖小哥的摩托声。
没有人说话。两种键盘声填满了整间办公室。
我后来想过这个画面很多次。两个人。背对背。一个三十四岁。一个二十六岁。一个写了两年的旧代码。一个刚看了一天说"古老"。他们之间隔了一张桌子。一米二。这一米二的距离在后来的几个月里会变成很多东西。竞争。合作。沉默。分裂。但现在它只是一米二。两种键盘声。一阵夜风。
这就是第一天。
地铁上。靠着门站着。一号线。九点的地铁。人不多。
我打开备忘录。
写了一行:
"许畅。第一天。说了一句'古老'。刘海洋没有回嘴。"
盯着这行字看了十秒。删了。
又写回来。
"许畅。第一天。说了一句'古老'。刘海洋没有回嘴。"
留着。不删。
有些事需要有记录。哪怕不知道记录它的意义是什么。
也许以后翻到这一行的时候会想起来:这是裂缝开始的那一天。也许不是裂缝。也许只是两个不同的人第一次碰面时的正常摩擦。也许过几天就好了。也许不会。
刘海洋没有回嘴。这件事比"古老"这个词本身更值得记。他回嘴了反而好办。吵一架。吵完了该干嘛干嘛。不回嘴。他把这句话收下了。收在哪里不知道。收了多深也不知道。但他收了。
刘海洋收东西的方式是沉默。沉默的时间越长,收得越深。今天他沉默了三秒。三秒不算长。但足够在心里挖一个小坑。把那句话埋进去。盖上土。看不见了。
看不见不等于没有。种子也看不见。但种子会长。
我不知道这颗种子会长成什么。但我记下来了。
第二天。我给方教授发了一条微信。
不是汇报。只是一句话:"他到了。第一天说我们代码古老。"
方教授隔了五分钟回了四个字:"他一贯如此。"
一贯如此。意思是他跟所有人都这样。不是针对我们。不是针对刘海洋。他看到什么说什么。说完就过了。他自己大概已经忘了他说了那句话。但听到的人不会忘。
我回了一句:"你们提前串通好的?"
方教授没有立刻回。过了两分钟。三个字。
"有何不可。"
三个字。没有问号。是陈述。是一个五十八岁的教授对一个三十六岁的创业者说的:我有权利提前做这些安排。你有权利知道。但你不应该生气。因为我做的是对的。
我盯着这三个字。
有何不可。
方教授把我们的代码给了许畅看。许畅看了说"古老"。方教授点头说"嗯"。然后把许畅推荐给陈峰。陈峰见了许畅。觉得可以。然后打了那通四十三分钟的电话给我。让我去见方教授。方教授说了"换发动机"。然后说"我有一个学生"。
整条链子在我来之前就搭好了。
方教授。陈峰。许畅。三个人。早就知道这间办公室需要什么。需要一个做NLP的人。一个会说"你们代码古老"的人。一个刀。
他们设计了这一切。然后等我走进来。
我不是发起人。我是被选中的材料。刘海洋也是。我们两个,一个是CEO,一个是CTO,但在方教授和陈峰的棋盘上,我们是棋子。被推到了一个早就设计好的位置上。
这件事该不该生气?不该。因为他们推的方向是对的。
但知道自己是棋子的感觉不好。哪怕方向是对的。你被推到了正确的位置上。但推你的手不是你自己的。
创始人是什么?创始人应该是下棋的人。但在方教授和陈峰的版本里,我是被下的那颗棋。他们比我更早知道方向。比我更早找好了人。比我更早看了我们的代码。然后等着我自己走到他们设计好的终点。
也许这就是投资人和创始人的关系。投资人画地图。创始人走路。走路的人以为自己在探索。画地图的人知道他会走到哪里。
生气吗?不生气。感激吗?也不全是。是一种复杂的感觉。被帮助了。也被看透了。被看透的滋味不完全是坏的。有人看透你,说明有人在关注你。在2016年六月,有人关注一家日活为三的公司,本身就是一种奢侈。
我把手机揣回口袋。地铁到站了。张江高科。出站。
六月的上海。热了。真的热了。出站的时候衣服贴在后背上。汗把T恤的布料吸在皮肤上。黏的。
路灯下面有飞虫在转。围着灯泡。一圈一圈。不知道为什么要围着灯转。也许是因为灯亮。也许是因为它们分不清灯和月亮。分不清真的光和假的光。
许畅的古龙水味道还在脑子里。淡淡的。混着办公室的甲醛和外卖的味道。三种味道叠在一起。新的和旧的。干净的和油腻的。
从今天起,办公室里多了一种气味。多了一种键盘声。多了一个人。
也多了一道裂缝。
看不见的。细细的。从许畅说出"古老"两个字的那个下午开始。从刘海洋沉默了三秒的那个瞬间开始。
它在。
以后会不会变大,我不知道。也许它永远只是一道细纹。两个技术人员之间正常的张力。也许它会慢慢长。长到有一天我站在中间堵不住。
但那是以后的事。
现在它只是在。细细的。安静的。在两种键盘声和一股古龙水的味道下面。
在。