十年一梦
130/180

42017·暗流

130V4_C22_越界

4738字 · 约10分钟

阅读进度 0%已读 0 分钟 / 共 10 分钟

V4_C22_越界

AI大会的名片还在口袋里,没有落地的消息不是消息。然后我看到了刘海洋打开那段代码时的脸。

早上九点。刘海洋打开电脑。

我在自己的工位上,隔了三个桌子,听到了他敲键盘的声音——先是正常的登录声,啪啪几下,然后是打开代码编辑器的快捷键。安静了大概十秒。然后键盘声停了。

完全停了。

刘海洋敲键盘停下来只有两种情况:一种是在看一段他觉得写得很好的代码,需要仔细读。另一种是在看一段他觉得不该出现的代码,需要确认自己没有看错。

十秒以后,他的椅子往后推了一下。轮子在地板上滑了一声。然后又拉回来了。弯腰。凑近屏幕。

又过了大概五分钟。安静的五分钟。办公室里其他人都在各自的轨道上——小杨的键盘声节奏很快,他在赶一个前端页面。林工在终端里跑测试脚本,偶尔按一下回车。许畅坐在最靠墙的位置上,耳机戴着,屏幕上是深色背景的代码编辑器,他的手指在键盘上不紧不慢地动着。他不知道——或者他知道——三个工位以外的刘海洋正在看他昨晚十一点半留下的东西。

刘海洋站起来了。

他站起来的动作很快。椅子往后滑了半米。差点撞到后面的桌子。他拿起手机。看了一眼。又放下了。然后拿起了咖啡杯——空的。走到饮水机旁边接了水。喝了一口。没有回工位。站在饮水机旁边。

我知道出事了。

刘海洋不喝水的人。他喝咖啡。他站在饮水机旁边喝水说明他需要一个离自己工位远一点的地方,让自己冷静三秒。

他回到工位。又坐下来。看了大概五分钟。然后站起来。走了。没有关显示器。走了。

他走出办公室的时候经过我的桌边。我看到了他的脸。不是愤怒。不是那种"你他妈谁干的"的爆发——那种反而好办,爆发完就过了。这是一种更冷的东西。是"我确认了这件事确实发生了,而且我确认了它是谁干的"的表情。嘴唇抿着。下巴绷着。眼睛直直看着走廊的方向。

后来我去看了他的屏幕——他没关。代码编辑器还开着。左边是原来的代码。右边是许畅改过的代码。diff模式。红色是删掉的。绿色是新增的。红色很多。绿色也很多。改动量不小。

我花了几分钟看了一下。我不是写代码的人,但看得出来许畅做了什么——他把刘海洋的一段推理模块里的循环嵌套拆开了,用了一种更简洁的写法。原来要跑三遍的逻辑现在跑一遍就够了。函数的行数从一百二十行压到了七十行。注释也改了。变量名也改了。有一处是刘海洋自己也知道写得不够好的地方——他提过好几次"那段要优化",但排期排不上,一直放着。许畅替他优化了。优化得干净利落。

这让他更生气。

如果许畅改得差,这件事就简单了——"你改坏了我的代码,回滚,别碰我的模块"。但他改得好。好就没有这个出口了。

如果改得差还能骂——"你改坏了我的代码"。改得好就没有这个出口了。改得好说明许畅有能力动他的核心模块。有能力说明他可以随时再动。随时再动说明边界不存在了。

边界不存在比代码有bug更危险。bug可以修。边界没了,谁来画?

我在工位上坐着。不知道该不该出去。如果出去了,站在两个人中间,我说什么?说许畅改得好?刘海洋会觉得我站他那边。说许畅不该动?许畅会觉得我在打压技术能力。不说呢?不说就是默认这件事没发生。但它发生了。commit记录在那里。23:30。白纸黑字。

我决定先不出去。等他们自己说完。如果升级了再出去。


走廊。

我出去的时候他们已经在那了。刘海洋靠在墙上。许畅站在他对面。两个人之间隔了大概一米五。声控灯亮着。走廊里没有其他人。

刘海洋的声音不大。但很清楚。

"你改我代码为什么不跟我说?"

声音不大。但每个字都咬得很清楚。刘海洋生气的时候不吼。他压。压得越低越危险。

许畅想了一下。他想的时候有一个习惯——左手的食指和中指会轻轻捏在一起,然后松开。不是紧张。是在组织语言。

"因为……我改完了才发现应该说一声。"

"你觉得你改得对?"

"是。"

没有犹豫。一个字。干的。

"那你觉得这公司谁说了算?"

这个问题已经不是在讨论代码了。是在问权力。是在问秩序。是在问——你把自己放在什么位置上。

许畅停了一秒。"技术上有问题的地方,任何人都可以改。"

刘海洋笑了一下。不是笑。是嘴角动了一下。比笑更冷。

"这不是你改技术。这是你越界。"

越界。这个词在走廊里落下来。很重。声控灯在两个人头顶上亮着,白光照着他们的脸。刘海洋的脸上那种表情我见过——他在审代码的时候发现了一个不该存在的bug时也是这个表情。但现在这个bug是一个人。

许畅没有退让。也没有辩解。他站在那里。耳机挂在脖子上。左手的两根手指又捏了一下又松开了。

"我改的那段代码你知道有问题。"

"我知道。"

"你知道但你没改。"

"我在排期。"

"排到什么时候?"

刘海洋没有回答这个问题。因为回答就等于承认他拖了。拖了就等于许畅替他做了一件他该做但没做的事。这比越界本身更难接受。

走廊里安静了几秒。两个人面对面站着。都没有动。空气里有一种紧绷的东西——不是要打架的那种紧,是两个都觉得自己有道理的人在等对方先让步的那种紧。谁都不让。

我在走廊的另一头站了大概三十秒。他们没看到我。或者看到了没在意。这件事必须处理了。不能在走廊里处理。走廊是公共空间。声音会传到办公室里。


我把两个人叫进了会议室。

关上门。玻璃门。外面的人能看到我们在里面但听不到说什么。周小薇经过的时候看了一眼,没停。张富贵从外面回来,拎着一个客户送的礼品袋,到门口看了看,走过去了。苏晨曦在工位上,没有抬头。

三个人。一张桌子。门关着。空调嗡嗡。桌上有几个水渍圈——以前开会留下来的杯底印。苏晨曦经过玻璃门的时候往里看了一眼,脚步没有停。她没有驻足偷听的习惯。但那一瞥的速度比正常走路慢了一拍。她看到了三个人坐在里面的画面。然后过去了。

"海洋。"

他看着我。

"他改的代码确实更好。你知道。"

"我知道。"他说。声音平。"这不是好不好的问题。"

"我知道。"我转向许畅。"许畅。你改代码不告知是规矩问题。不管你改得多好。规矩比代码重要。"

"我下次会提前说。"

"下次提前说"——他的语气里没有道歉的成分。不是"对不起我下次注意"。是"好的我接受这条规则"。接受规则和认错是两件事。他接受了规则。但他不觉得自己做错了。

我看着两个人。刘海洋双手抱胸靠在椅背上。他的右脚在桌下面轻微抖着——这是他压着火的时候的习惯。许畅坐得直,手放在膝盖上,指尖没有动。两个人都不再说话了。会议室里的空调出风口在头顶上嗡嗡响。桌上有人上次开会留的一支笔。红色的。笔帽没盖。

管理的难处不是区分对错。对和错在这件事上是叠在一起的——许畅改的代码是对的,许畅不打招呼是错的。刘海洋生气是对的,刘海洋拖着不优化也不完全没问题。两个人都对。两个人都有问题。

在"他是对的"和"他越了界"之间有一条线。那条线很细。我找了三十秒。没找到。

所以我选了"下次注意"。

"好。这件事到此为止。下次改之前先沟通。海洋,你有什么要补充的吗?"

他摇头。

"许畅?"

"没有。"

散会了。

"下次注意"是管理者最常用的四个字。翻译过来就是——我不做决定。我把球踢到"下次"。下次是一个不存在的时间。等到了那个时间,要么问题自己消失了,要么问题大到了不得不处理的地步。

我选择了不做决定。

散会后我去了田总那边。他在电话里问:"小刘那个模块优化完了吗?我们下周要上线的。"我说"完了"。他说"效果怎么样"。我说"提升了大概30%"。他没说"好"也没说"不好"。他说"那就好"。

挂了电话我才意识到——许畅改的那段代码直接关联到田总项目的上线节点。刘海洋拖了两周没动的优化,许畅一个晚上搞定了。这件事在技术上是对的。在管理上是越界。在商业上是救了命。三条线叠在一起,没有一条是干净的。

"下次注意"不是决定。是缓冲垫。把一个需要明确立规矩的事情变成了一个"下次再看"的待办事项。待办事项永远不会自己完成。它只会在列表里往下沉,被新的更紧急的事情盖住,直到有一天它不再是待办,是事故。

这是我的管理风格。也是我的管理败笔。只是我现在还不知道代价有多大。


刘海洋走了。

许畅没有马上走。他在会议室门口站了一秒。手搭在门框上。回头看了我一眼。

"赵总。"

"嗯。"

"如果每次有问题,都要等上级允许才能改——"

"这不是允许。这是沟通。"

他停了一下。

"沟通还是管控?"

这个问题砸得有点重。沟通和管控之间的区别是什么?沟通是平等的。管控是从上往下的。他在问我——你是在跟我平等交流,还是在告诉我你是我的上级?

"都不是,许畅。是信任。你在别人的模块里改了代码,那个人不知道。信任就断了。不是因为你改错了。是因为你没说。"

他点了一下头。没有表情的变化。然后出去了。

门关上以后我在椅子上坐了一会儿。

那句"是信任"说完以后我自己回味了一下。这话对吗?对。但它有一点轻。四个字解决了一个不应该用四个字解决的问题。

"是信任"——但信任是需要双向维护的。刘海洋信任许畅不动他的模块。许畅信任公司让他有空间做技术判断。两种信任都是对的。两种信任撞在一起了。我用"下次注意"把撞击缓冲了一下。但缓冲不是修复。缓冲是把裂缝用泡沫填了。泡沫早晚会碎。

这件事以后会再发生。以不同的形式。以更大的规模。不是下周。不是下个月。但一定会再来。裂缝被泡沫填了。泡沫在风干。风干了就是空的。空的东西经不住下一次撞击。

下一次撞击什么时候来?我不知道。我只知道刘海洋走出去的时候脚步比进来的时候快。许畅留在门口的那一秒比整个会议都长。

我坐了五分钟。桌上那支红笔还在。笔帽还是没盖。墨水在空气里慢慢干着。然后我出去了。


下午。

办公室恢复了正常。键盘声。鼠标声。空调的嗡嗡声。每个人都在自己的位置上。如果有人这时候走进来,看不出一个小时前有两个人在走廊里对峙过。创业公司的日常就是这样——上午吵完,下午继续干活。因为活不等人。客户不等人。服务器不等人。月底的工资单不等人。

刘海洋在写代码。许畅在写代码。两个人之间隔了四个工位。中间是小杨和林工。小杨戴着耳机,头微微跟着什么节奏晃。林工在看文档,右手不停按翻页键。他们大概不知道早上发生了什么。或者知道了装不知道。创业公司的办公室就这么大。六十平。十二个人。声音传得到。走廊里的对话传不传得进来?能。但大家都选择了"没听到"。

"没听到"是创业公司里最常用的自我保护。因为听到了就要选边。选了边就有风险。不选最安全。所以——没听到。

下午。

两点到四点之间我一直在看邮件和回客户的消息。但注意力有一半在办公室里。在刘海洋和许畅之间。观察他们。两个人之间隔了四个工位。中间是小杨和林工。两道人墙。足够的距离。谁也看不到谁的屏幕。

三点半的时候许畅站起来去了趟厕所。经过刘海洋工位的时候两个人没有对视。正常。这个距离的两个人走过去不对视是正常的。但今天的"正常"里面有一层东西。

四点左右。刘海洋站起来了。端着咖啡杯——这次是咖啡不是水。去饮水机那边加了点热水进去。往回走。经过许畅的工位。没有停。但走了两步以后,停了。

他转过半个身子。面朝许畅。许畅的屏幕上是代码。他正在敲什么。耳机塞着一只。

刘海洋说了一句话。声音不大。我隔了四个工位,几乎听不到。但口型能看出来——六个字。

"那段代码改得好。"

说完就走了。端着咖啡回了自己的工位。坐下。打开编辑器。继续写。

许畅没有转头。屏幕上的光照着他的侧脸。他的手指停了一秒。停在键盘上方。悬着。然后点了一下头。很轻。几乎看不出来。不确定刘海洋看没看到。

然后继续敲代码了。键盘声重新响起来。节奏跟之前一样。没有因为这六个字变快或者变慢。

六个字。

这六个字比早上走廊里的所有话都重要。因为走廊里的话是规矩和边界。这六个字是——你做得好,我承认。

承认比道歉难。承认就是同意对方有能力碰你的领地。同意了就是打开了一扇门。这扇门以后可能让更好的代码进来,也可能让更多的越界进来。

我从玻璃隔墙后面看见了这一幕。觉得好了一点。

但仅仅好了一点而已。

裂缝没有扩大。但也没有消失。它在那里。用六个字盖着。盖住了,看不见。但还在。

下班的时候我关了电脑。站起来的时候往许畅那边看了一眼。他在收拾东西。拔了数据线。把耳机绕好放进包里。动作跟平时一样。没有异常。

但他走的时候没有跟任何人说"再见"。

平时也不怎么说。但今天的不说跟平时的不说不一样。今天的不说里面多了一层东西。

什么东西?我说不出来。

也许什么都没有。也许是我想多了。创业三年以后人会变得多疑。每一个沉默都有阴谋。每一个正常都不正常。

走廊里声控灯跟着他亮了一盏。他走远了。灯灭了。

晚上回到家已经十点半了。黄雨萱在客厅里。电视机开着,放的是一部老剧,她坐在沙发上织毛衣。毛线是灰色的。织针在她手指间来回交错。她织的时候不看手,盯着电视屏幕。屏幕上在演什么我没注意,只记得有一对夫妻在吵架,女的声音很高,男的不说话。

"回来了?"她说。

"嗯。"

"吃饭了吗?锅里有粥。"

"吃了。"——没吃。田总那个电话打完已经没胃口了。

她在织一条围巾。灰色的。给赵宇轩织的。快织完了,只剩收边。她的手指动得很熟练,不像在看电视的人,倒像在算账。织针交错的声音很轻,喀啦喀啦的。

我坐在她旁边。隔了半个沙发的距离。

"今天公司有什么事吗?"她问。眼睛没离开电视。

"没什么。"——许畅越界改了刘海洋的代码。两个人对峙了。我说了"下次注意"。我知道这是一个错误的决定。但我说了。

"哦。"她应了一声。不是没兴趣。是"我知道你没说,我也不问了"的那种"哦"。

织针继续喀啦喀啦。电视里夫妻还在吵。女的开始哭了。男的还是不说话。黄雨萱把毛线团往左挪了挪,让它滚得更顺。毛线团碰到茶几上的遥控器,停住了。

她也没有说。我们都在说"下次注意"。在公司里我用这四个字缓冲了许畅和刘海洋。在家里她用这四个字缓冲了"你为什么不跟我说实话"。

我没再说话。她也没再问。织针的声音在客厅里响着。喀啦。喀啦。跟走廊里许畅的键盘声和刘海洋的咖啡杯碰撞声是同一种节奏——有什么东西裂了一条缝。没有人去修。没有人知道该怎么修。