内容简介

陆行之方婉宁宋明哲是小说名字叫《离开时,我只带走一台服务器》这本小说的主角,本小说的作者是初生萌新,接下来就请各位一起来阅读小说的精彩内容:把自己送进了行知的核心。她以为自己是在下一盘棋。她不知道棋桌旁边还坐着第三个人。陆行之打开代码编辑器,翻到那个授权验证模块。三年前自己写的那段后门代码还在。他盯着它看了很久。然后关掉了编辑器,没有动任何一行。不是时候。---第六章暗流接下来的两周,陆行之做了一件事。他通过老周,联系上了行知技术部里.......

小说目录

精彩节选

第一卷:坠落第一章山巅六周年庆典的灯光把整个宴会厅照得通亮。陆行之站在台上,

身后的大屏幕正循环播放着“行知内核3.0”的产品演示动画。

那些流动的数据线条、精密得如同神经网络般的架构图,在三百多位来宾面前徐徐展开。

台下坐着的,有合作了五年的老客户,有从A轮跟到C轮的投资人,

还有从公司只有五个人时就入职的元老员工。他不太习惯这种场合。

西装是方婉宁三天前硬拉他去定做的,深灰色,剪裁得体,

但穿在他身上总有种被装进壳子里的拘谨感。领口的扣子他解开了两次,

又被方婉宁在台下用眼神扣了回去。“行知内核3.0,

是我们团队花了十四个月完成的迭代。”他的声音不大,透过麦克风传出去,

带着一点技术人特有的平直和克制。没有抑扬顿挫的演讲技巧,没有精心设计的金句,

他只是像汇报工作一样,把那些在座大部分人听不懂的技术参数一条条念出来。

“重构了底层内存管理模块,并发处理能力提升了四倍。新增的分布式计算层,

让单集群可以支撑到一万两千个节点。另外,我们彻底重写了调度算法……”“说人话。

”台下有人笑着喊了一嗓子。是老周。坐在第三排的技术团队区域,

穿着和陆行之同款的程序员标配格子衫,咧着嘴起哄。全场哄笑。陆行之愣了一瞬,

然后也笑了。那种拘谨感在这一刻松动了一些。他抬手扶了扶眼镜,换了个说法:“就是说,

之前能同时处理一百件事,现在能同时处理四百件。之前需要十台服务器,现在只要三台。

帮客户省钱了。”笑声和掌声同时响起来。“这十四个月,”他顿了顿,

目光扫过台下技术团队那几排座位,一一念出那些人的名字,“老周,架构层核心模块,

写了四万行。赵一铭,调度算法优化,把延迟降到了业界的百分之六十。陈静,测试组,

找出了一千三百个bug,没有一个逃到线上。还有很多人,我不一个个念了。

”他沉默了几秒。“代码不会骗人。”这句话他说得很轻,甚至不像是在对台下的人说的,

更像是一句自言自语。但麦克风把它传遍了整个宴会厅。掌声再次响起,比刚才更热烈。

陆行之微微鞠了一躬,转身下台。经过技术团队那几排时,老周带头起哄让他喝酒,

他接过杯子抿了一口,在一片笑骂声中坐回了主桌。主桌的灯光比台上柔和。

方婉宁坐在他旁边,穿着一件墨绿色的礼服裙,头发挽起来,露出修长的脖颈。

六年前他们刚结婚时,她还不太习惯这种正式的装扮,总是趁人不注意把高跟鞋脱掉。

现在她穿得比谁都得体,笑得比谁都从容。“讲得不错。”她侧过头,低声说。

“念了遍参数而已。”“他们就吃这套。”方婉宁端起酒杯,

朝远处一桌的投资人遥遥举了举,笑容恰到好处,“技术男的笨拙感,

比任何演讲技巧都好用。”陆行之没接话。他看着方婉宁的侧脸,

忽然注意到她今晚戴的是一副他没见过的新耳环。很小的两颗珍珠,镶在一圈碎钻中间。

低调,但识货的人一眼就能看出价格。“新买的?”“嗯?”方婉宁下意识摸了一下耳垂,

“哦,上个月买的。忘了跟你说。”她没有多解释,起身端着酒杯朝投资人的方向走去。

墨绿色的裙摆在灯光下泛着微微的光泽,很快融入了觥筹交错的人群。陆行之收回目光,

拿起筷子,夹了一块已经凉了的红烧肉。肉有点咸。---庆典结束后,

陆行之没有跟方婉宁一起回家。她说还要陪几个投资方去二场,让他先走。

这种事他已经习惯了。最近半年,她的应酬越来越晚,回到家时常常过了凌晨。

身上偶尔会带着不同的香水味,有时是浓烈的花香调,有时是清冽的木质调。他从来没问过。

不是因为信任,是因为不敢。一个写了六十万行代码的人,比谁都清楚:有些bug,

一旦确认了,就得修。而有些bug,你宁愿永远不知道它存在。陆行之回了公司。

二十六楼,灯还亮着。技术部的人走了大半,只剩老周和两个新人还在工位上。今天是庆典,

按理说应该放假,但这帮人和他一样,把公司当成了第二个家。“陆哥?

”老周从屏幕后面探出头,“你不是应该回家吗?”“过来看看。

”陆行之拉开自己的椅子坐下来。他的工位在技术部最角落,和其他人没什么区别,

唯一的特殊之处是桌面上多了两台显示器和一摞堆成小山的笔记本。屏幕亮起来,

他习惯性地打开终端,敲了一行命令。代码库的提交记录一行行滚过。

他看到了老周今天下午提交的一个补丁,解决了一个内存泄漏的问题,

commit信息写得言简意赅:“修复了那个蠢bug。别问,问就是困。”他笑了一下。

然后他的目光停在了更早的一条提交记录上。那是三个月前的一个commit,

作者是他自己。提交信息只有四个字:“临时方案。”他盯着那四个字看了很久。

那是一个授权验证模块的修改。当时产品部门催着上线一个新功能,要求三天内搞定。

正规的改法至少需要两周,

他只好用一个取巧的方式绕过了部分流程——把核心密钥和他的个人数字签名做了绑定。

本打算上线后再重构,但后来3.0版本的开发压上来,这件事就被搁置了。

“临时方案”是他最常用的commit信息。六年下来,类似的提交大概有上百个。

老周端着一杯咖啡走过来,看了一眼他的屏幕:“怎么了?”“没事。”陆行之合上笔记本,

“就是忽然想起来,欠了很多债。”“技术债?”“嗯。”老周嘬了一口咖啡,

用一种过来人的语气说:“技术债嘛,欠了就欠了。只要系统不崩,

谁记得你当初用的是临时方案还是标准方案。”“也是。”陆行之靠在椅背上,

看着落地窗外城市的夜景。二十六楼望出去,能看到大半个科技园,灯火通明,

每一盏灯后面都有一群和他一样在写代码的人。他想起六年前,

他和方婉宁在这个园区的咖啡馆里,用一张餐巾纸画下了“行知”的第一版架构图。

那时候方婉宁还扎着马尾,素面朝天,说起要做“企业服务的底层设施”时眼睛亮得惊人。

她问他能不能做出来,他说能。她说那就干。他们真的干出来了。从五个人到三百人,

从一间共享办公室到占据这栋写字楼的整整三层。C轮融资刚做完,估值二十亿,

所有人都觉得他们正在通往敲钟的路上。但陆行之偶尔会觉得,那条路越走越窄。

方婉宁越来越像一个CEO,而他越来越像一个——用她的话说——“核心资产”。

他不太喜欢这个词。资产是被拥有的。---凌晨一点,陆行之回到家。

是一套位于城西的大平层,去年刚换的,两百四十平,落地窗外能看到一条江。方婉宁选的,

她说公司做到这个规模,住的地方不能再“像个程序员宿舍”。

但他还是把它住成了程序员宿舍。客厅的茶几上摊着三台笔记本,

书房的服务器二十四小时运转,嗡嗡声隔着门都能听见。两百四十平的房子,

他真正在用的区域不超过四十平。方婉宁还没回来。陆行之洗了澡,躺在床上,

手机屏幕亮了一下。是老周发来的消息,附带一个技术论坛的链接:“陆哥你看这个帖子,

有人把咱们3.0的架构分析了一遍,写得还挺像那么回事。”他点开链接,扫了几眼。

是一个匿名用户发的长文,从API接口倒推了“行知内核”的架构设计,

虽然有不少猜测成分,但整体逻辑相当专业。

文中有一句话让他停留了几秒:“行知内核的底层设计有明显的个人风格烙印。

如果这位核心架构师离开,整个系统的维护成本将指数级上升。

这是典型的‘关键人物风险’,不知道行知的投资方有没有注意到这一点。

”陆行之关掉手机,把它放在床头柜上。天花板上的吸顶灯有一盏在微微闪烁,

可能是接触不良。他盯着那盏灯,想起代码库里那上百个写着“临时方案”的commit。

临时的意思,是早晚要还的。---方婉宁是凌晨两点多回来的。陆行之没睡着,

听到她轻轻推开卧室门,在黑暗中窸窸窣窣地换衣服。一股陌生的香水味飘过来,

不是她平时用的那款。床垫微微下陷,她在他身边躺下。沉默了很久。“行之。

”她忽然开口。“嗯。”“如果有一天,我是说如果,

公司需要你做些调整——你会支持我吗?”他在黑暗中睁开眼:“什么调整?”“比如,

让更专业的人来负责一些事情。你专心做你最擅长的技术。”“我现在做的不就是技术吗?

”方婉宁沉默了几秒,然后翻了个身,背对着他。“算了,以后再说。睡吧。

”陆行之看着她的背影。月光从窗帘的缝隙里渗进来,在她的肩胛骨上投下一道细细的光边。

他想问:那个“更专业的人”,是写代码比我专业,还是把公司变成估值比我专业?

但他没有问。一个写了六十万行代码的人,比谁都清楚:有些问题,一旦问出口,

答案就会把一切都改变。他把那个问题咽了回去,闭上眼睛。临时的。都是临时的。

---第二章裂痕变化是从三周后的一次董事会开始的。陆行之本来不想参加。

他向来觉得董事会是浪费时间——一群不做技术的人,对着技术方案指手画脚,

最后给出的意见往往是“能不能加个AI进去”。但方婉宁坚持让他去。“这次不一样,

”她的语气里有一种他不太熟悉的郑重,“哲远资本的宋总会来,他想见见核心团队。

”“哲远资本?”“新的投资方。如果谈成,会是D轮领投。”陆行之听说过哲远。

在投资圈算不上一线,但这两年动作频频,专门盯准B轮以后的企业服务公司。

业内对他们的评价两极分化——有人说他们是“白衣骑士”,

有人说他们是“门口的野蛮人”。“多少?”“两个亿。”陆行之挑了挑眉。

这个数字比他预想的大。方婉宁注意到他的表情,补了一句:“条件是管理团队需要调整。

宋总对公司的技术架构有一些……看法。”“什么看法?”“他觉得我们的技术成本太高。

同样功能,竞品的研发投入只有我们的七成。”“那是因为他们的架构是豆腐渣。

”陆行之皱眉,“省下来的成本早晚要用十倍还回去。”“我知道。”方婉宁揉了揉太阳穴,

妆容精致但遮不住眼下的倦色,“但投资人不看十年后,他们看下一轮估值。行之,

你去见他,别跟他吵,听就行。行吗?”陆行之看着她。

他发现她说“行吗”这两个字的时候,不是在征询,是在通知。

---董事会定在周三下午三点,公司最大的那间会议室。陆行之到的时候,

方婉宁已经坐在里面了。她旁边是一个他没见过的男人——三十六七岁的样子,

穿着深蓝色的定制西装,袖口的扣子是那种低调但识货的人一眼能认出品牌的款式。宋明哲。

“陆总。”宋明哲站起来,伸出手,“久仰。”他的手干燥而有力,握手的力度恰到好处。

脸上的笑容也恰到好处——不远不近,不冷不热。所有的细节都像是精心校准过的,

让人挑不出毛病,但也感受不到任何温度。“宋总。”陆行之点了一下头,

在方婉宁对面坐下。会议开始后,他很快就明白方婉宁为什么让他“别吵”。

宋明哲做了一份七十页的PPT,标题是《行知科技技术架构优化建议》。

里面用大量数据对比了行知和竞品的技术投入,

得出的结论很直接:行知的技术团队过度设计,研发成本高出行业平均水平百分之四十,

严重拖累了公司的盈利能力和下一轮估值。“我不是说技术不重要,

”宋明哲翻到第四十三页,语气平和得像在聊天气,“但技术应该服务于商业,

而不是反过来。陆总,您是一位顶尖的架构师,但顶尖架构师的代价是,

您的团队离开您就转不起来。这不是一个健康的模式。”陆行之靠在椅背上,

手指在桌面上轻轻敲了两下。“宋总,”他开口,声音不大,“您PPT里的数据,

对比的是哪家竞品?”“几家同赛道的主要玩家,具体名单涉及商业保密条款,

我不方便透露。”“那您对比过我们和这些竞品的系统故障率吗?

”宋明哲的笑容微微顿了一下。“我们的线上故障率是万分之三,行业平均是千分之二。

”陆行之的声音依然很平,“您说的那些研发成本更低的竞品,去年平均宕机次数是七次。

我们是一次。”他顿了顿。“一次的原因还是机房停电。跟代码没关系。

”会议室里安静了几秒。方婉宁低头翻着文件,不说话。

宋明哲的笑容重新调整到刚刚好的角度:“陆总,我理解您的骄傲。但宕机次数这种事情,

客户不会写在招标文件里。他们看的是价格。”“那是因为宕机的代价不用他们承担。

等他们承担的时候就晚了。”“所以您是在替客户操心?”“我是在替公司操心。

”陆行之看着宋明哲的眼睛,“一个做底层设施的公司,如果连自己的架构都守不住,

它还有什么资格让别人把业务建立在它上面?”宋明哲没有立刻回答。他端起茶杯,

喝了一口,放下。然后他笑了,笑容里有种奇怪的——欣赏。“方总,”他转头看向方婉宁,

“您说得没错,陆总确实是个有脾气的人。”方婉宁抬起眼,

目光在宋明哲和陆行之间快速扫过。“行之,”她说,“你先出去吧。剩下的我来和宋总谈。

”不是“你先回去”,是“你先出去”。陆行之站起来,推开椅子,走出会议室。

他没有回头。门在身后合上的那一刻,他听到了宋明哲压低的声音:“方总,

这样的人留在核心位置上,每多一天都是风险。他不是资产,他是负债。

”方婉宁的回答他没有听到。但她的沉默,他已经听得很清楚了。---那之后的两周,

陆行之明显感觉到了一些变化。技术部的招聘名额被冻结了。

他提交的两个新项目立项申请都被打了回来,理由是“优先级需要重新评估”。

运营部的人开始频繁出入方婉宁的办公室,

手里拿着的文件上印着“组织架构调整方案”的字样。老周私下找他喝酒,说听到风声,

哲远资本的人在做尽职调查,重点查的不是财务,是“核心人员替代成本”。

“什么叫核心人员替代成本?”老周灌了一口啤酒,“就是算一算,把你换掉要花多少钱。

”陆行之没说话。他想起了那天晚上,方婉宁在黑暗中问他的那句话——“如果有一天,

公司需要你做些调整,你会支持我吗?”原来那不是假设。是预告。

---摊牌来得比他预想的更快。那是一个周四的晚上。陆行之在公司写代码写到十点多,

回到家时,发现方婉宁难得地比他先回来了。她坐在客厅的沙发上,

面前的茶几上摊着几份文件。没有开电视,没有看手机,就那么坐着,像是在等一个人。

他认出了那几份文件。股权**协议。公司章程修正案。离职补偿方案。厚厚一沓,

连页码都编好了。“行之。”方婉宁抬起头,声音很轻,“我们需要谈谈。

”陆行之没有坐下。他站在客厅中央,西装还没换,领口的扣子被他解开了,

松松垮垮地耷拉着。他看着方婉宁的眼睛。这一次,

他终于问出了那个在黑暗中咽回去的问题。“你们在一起多久了?”方婉宁的睫毛颤了一下。

客厅里的落地钟走过了整整十二秒。“这不重要了。”她说。陆行之忽然笑了。

不是愤怒的笑,也不是苦涩的笑。是一种很奇怪的笑,像是一个debug了三个月的人,

终于在一个最不起眼的角落里找到了那个让整个系统崩溃的罪魁祸首。原来是一个分号。

原来是一个分号。“所以,”他在沙发对面坐下来,“宋总的条件是什么?

”方婉宁的手指微微收紧,但她没有避开他的目光。“哲远资本领投D轮,两亿。

条件是你退出管理层,不再担任CTO,不再持有表决权股权。

公司给你保留百分之三的财务股份,作为补偿。”“百分之三。

”陆行之重复了一遍这个数字。他们一起创办这家公司的时候,他的股份是百分之四十。

六年,六轮融资,稀释到百分之十九。现在是百分之三。“我可以拒绝吗?

”“公司章程已经修改了。”方婉宁的声音很平,“宋明哲的关联方持有百分之二十一,

我持有百分之二十三,加上几个跟我一致行动的小股东,合计超过百分之六十七。

”她把一份文件推过来。是那份公司章程修正案,最后一页的落款日期是两个月前。

两个月前。陆行之看着那个日期,想起了两个月前的一件事。

那时候方婉宁拿了一堆文件让他签,说是C轮融资的补充材料,厚厚一摞,他没细看就签了。

那时候他在赶3.0版本的核心模块,每天只睡四个小时,脑子里全是代码。

她是在那个时候动手的。“方婉宁。”他叫她的名字,全名。“嗯。”“你跟宋明哲在一起,

是为了这两个亿,还是这两个亿是为了让你们在一起?”方婉宁没有回答。她站起来,

走到落地窗前,背对着他。窗外是那条江,江面上有游船的灯火缓缓移动。“行之,你不懂。

”她的声音从窗前传来,带着一种他从没听过的疲惫,“公司做到这个体量,

已经不是谁能控制的了。

投资方、董事会、市场预期、竞争对手——所有人都在推着你往前走。我不做这个决定,

也会有别人来做。至少我还能帮你争取到百分之三。”“帮我争取。

”陆行之重复了这四个字,一个字一个字地念出来。方婉宁转过身。她的眼眶有点红,

但没有哭。“你是个天才,行之。但你太纯粹了。你不明白,这个世界上有些东西,

不是靠把代码写好就能守住的。”陆行之看着自己的妻子。六年了。

从咖啡馆的餐巾纸到这间两百四十平的江景房,从两个人到三百人,从零到二十亿。

他写下了“行知”的每一行底层代码,却从没想过,

那个和他一起在餐巾纸上画下第一版架构图的人,会亲手把他从自己的代码里删除。

他站起来,拿起那份股权**协议,一页一页翻到最后。然后他从西装口袋里掏出一支笔。

笔是他自己买的。不是什么名牌,和那些穿定制西装的投资人用的完全不是一个档次。

但这支笔跟了他三年,握着它的手感像是自己身体的一部分。“有一个条件。

”方婉宁抬起头。“我要带走那台服务器。”陆行之说,“C082号,机房的角落里那台。

上面是我所有的个人开发环境和技术文档。”方婉宁愣了一下。

她大概以为他会提出什么要求——更多的钱、更长的过渡期、或者别的什么。

但只是一台服务器。“可以。”她说。陆行之签了字。一共七个签名,七个日期,

七个“陆行之”。写完最后一个字的时候,他发现自己的手没有抖。他放下笔,站起来,

走进书房。那台C082服务器安静地立在角落里,绿色的指示灯一明一灭地闪烁,

像某种古老生物的呼吸。他蹲下来,拔掉网线,拔掉电源线,把整台机器从机架上抽出来。

四十斤重。比想象中轻。他抱着它穿过客厅时,方婉宁还站在落地窗前。她没有转身。

“方婉宁。”她在玻璃的倒影里看着他。“代码不会骗人。”他说。

然后他抱着那台服务器走出了门。电梯里的镜子映出他的样子——一个三十四岁的男人,

穿着皱巴巴的西装,抱着一台布满灰尘的服务器,领口的扣子开着,

眼睛里没有愤怒也没有眼泪。只有一种很深的、很安静的疲倦。电梯一层层下降。

数字从二十三跳到了地下车库。门开了。老周站在车库出口,手里拎着一袋子啤酒,

显然已经等了一阵子了。他不知道从哪里得到的消息。看到陆行之抱着服务器走出来,

老周没有问任何问题。他只是走过去,接过那台服务器的一半重量,

两个人一起把它抬到了老周那辆破捷达的后座上。“陆哥,去哪儿?”“你那儿。

”老周发动了车。捷达驶出地库,汇入夜色中的车流。

陆行之回头看了一眼那栋写字楼的二十三楼,灯火通明。他们还没关灯。“老周。”“嗯?

”“你那儿的沙发,能睡人吗?”老周沉默了两秒,然后踩了一脚油门。“能。睡过三个人。

”“那就行。”捷达拐上高架,尾灯在夜色中划出两道红色的弧线。后座上,

C082服务器的指示灯还在闪烁。一下。一下。一下。像心跳。

---第三章债陈远的小酒馆开在城东一条不起眼的巷子里。名字叫“远”,和老板同名。

门面不大,七八张桌子,墙上贴着老电影的海报和客人的拍立得照片。菜单是手写的,

酒单更短,只有不到十种。熟客都知道,来这里不用看菜单,

直接告诉陈远今天想喝什么就行。陆行之是凌晨一点到的。陈远正擦着吧台,

看到他推门进来,身后跟着老周,

两个人抬着一台布满灰尘的服务器——擦桌子的手停了一下。然后他把抹布往肩上一搭。

“厨房还有半锅红烧肉。吃不吃?”陆行之把服务器放在吧台旁边的地上。“吃。

”那晚陆行之吃了三碗米饭。红烧肉炖得很烂,肥肉部分入口即化,瘦肉也完全入了味。

他吃得很快,像是一个很久没有好好吃饭的人。陈远没问他发生了什么。

他们认识二十三年了,从小学到高中,一条巷子里长大的。有些事不需要问,看一眼就明白。

老周在隔壁桌上打开笔记本电脑,接上了服务器的外设接口。绿色的指示灯重新亮起来,

风扇发出低沉的嗡嗡声。他噼里啪啦敲了一阵键盘,忽然停住了。“陆哥。”“嗯?

”“你过来看看。”陆行之放下筷子,走到老周身后。

屏幕上是一个他再熟悉不过的界面——“行知内核”的底层架构图。

这是他六年来写下的六十万行代码的核心骨架,每一个模块的位置他都烂熟于心。

但老周指的不是架构图本身。他指的是一个红色的警告标识,挂在“授权验证模块”上。

旁边有一行小字:“核心密钥依赖——剩余有效期:61天。”陆行之看着那行字。

他想起了三个月前那个commit,提交信息只有四个字:“临时方案。

”那时候产品部门催着上线,正规改法需要两周,

他只好用一个取巧的方式——把核心密钥和他的个人数字签名做了绑定。本打算上线后再改。

后来3.0压上来,就忘了。“这意味着什么?”陈远不知道什么时候也凑了过来,

手里还拎着一瓶啤酒。老周咽了口唾沫。“意味着……整个‘行知内核’的授权验证,

是靠陆哥的个人签名在跑。如果这个签名失效,所有客户的系统会在六十天内陆续停摆。

”他顿了顿。“一个都跑不掉。”酒馆里安静下来。墙上的老式挂钟滴答滴答地走着。

厨房里传来冰箱压缩机启动的嗡嗡声。巷子外面有人骑着自行车经过,**叮当一响,远了。

陈远把啤酒放在桌上。“所以……你老婆把你踢出局,但她没发现你把房子的地基也带走了?

”陆行之没有回答。他盯着屏幕上那行红色的字,

想起方婉宁在落地窗前说的话——“你不明白,这个世界上有些东西,

不是靠把代码写好就能守住的。”她错了。代码恰恰是最能守住的东西。

它会忠实地记录下你写过的每一行、改过的每一个版本、欠下的每一笔债。它不会背叛,

也不会撒谎。它会一直在那里,等到需要兑现的那一天。老周的声音有点发紧:“陆哥,

这是你的底牌。”陆行之伸出手,关掉了那个警告页面。“这不是底牌。”他走回吧台边,

拿起陈远放下的那瓶啤酒,仰头喝了一口。“这是一个选择。”挂钟还在走。滴答。滴答。

滴答。六十天。---那晚陆行之睡在酒馆的阁楼上。阁楼不大,

刚好放得下一张床垫和一张桌子。陈远扔了床被褥上来,

老周把那台C082服务器搬到桌边,接好了电源和网线。绿色的指示灯在黑暗中一明一灭,

像一只安静陪着他的猫。他没有睡。他打开编辑器,调出“行知内核”的代码库——不,

现在已经不叫那个名字了。他在本地建了一个新的仓库,文件夹的名字只有一个字。

“新核”。光标在黑暗中闪动。他敲下第一行代码。---楼下,老周和陈远还坐在吧台边。

老周面前的啤酒没怎么动。他看着楼梯的方向,用一种很少在他脸上出现的表情。

“我跟陆哥六年了。”陈远没接话,等着他继续。“六年,

我看着他一笔一画把那个系统写出来。最早的时候公司只有五个人,

他和方总两个人挤在一张桌子两边。方总在外面谈客户,他在屋里写代码。

方总每谈下一个客户,他就多熬一个通宵把对应的功能写出来。”老周转着手里的啤酒瓶。

“后来公司大了,方总越来越像一个CEO,陆哥越来越像一个……零件。重要的零件,

但还是零件。方总大概觉得,只要找到更便宜、更听话的零件,换上去就行。

”“但零件不会写六十万行代码。”陈远说。“对。”老周抬起头,

“零件不会在凌晨三点接到报警电话,爬起来修bug。

零件不会记得每一个模块当初为什么要那么设计。零件不会在别人都走了以后,

还坐在工位上,把那些‘临时方案’一条一条记在本子上,等着哪天有时间了回来还债。

”他把啤酒瓶往桌上一顿。“方婉宁以为她踢掉的是一颗螺丝钉。

她不知道那颗螺丝钉连着整条船的龙骨。”陈远站起来,走到酒馆门口,

把卷帘门拉下来一半。巷子里已经完全安静了。路灯的光透过半落的卷帘门,

在地上投下一道细细的光线。“六十天。”陈远说。“六十天。”老周重复了一遍。

他们同时看向楼梯的方向。阁楼上,键盘声还在响。一下。一下。一下。像心跳。

---第二卷:暗流第四章阁楼凌晨三点十七分。阁楼的窗户开了一条缝,

夜风裹着初秋的凉意灌进来。陆行之披着一件陈远扔上来的旧夹克,盘腿坐在床垫上,

笔记本电脑的屏幕是这间小阁楼里唯一的光源。键盘声持续不断。他不是在写新功能。

他是在读自己六年前写的第一版代码。六年前的陆行之,比现在更年轻,更不管不顾。

变量命名随性得令人发指,注释写得像在跟自己聊天,有些地方甚至直接用了中文拼音。

但那股野蛮生长的劲头,透过屏幕扑面而来。“妈的。”他低声骂了一句,

不知道是骂六年前的自己,还是在骂别的什么。光标停在一个函数名上。

init_core()。整个系统的第一个入口。六年前他写下这行代码的时候,

是在一间共享办公室的角落,方婉宁坐在他旁边,膝盖上摊着一份商业计划书,

上面密密麻麻记满了客户的需求。“这个能做吗?”她指着其中一条问。“能。”“多快?

”“两周。”“太快了,客户会觉得不值钱。说一个月。”他抬起头看她,

她冲他眨了一下眼。那时候的方婉宁,还没有学会穿定制西装的人那种“恰到好处”的笑容。

陆行之闭上眼,用力揉了一下眉心。然后继续读代码。凌晨四点,

他找到了第一个“临时方案”。是一个内存管理模块里的补丁。当时为了赶一个演示版本,

他用了一种非常规的方式绕过了内存回收的标准流程。提交信息写着:“先这样,回头改。

真的会改。我保证。”那个“回头”,回了六年。凌晨四点半,第二个。凌晨五点,第三个。

天亮的时候,他已经标记出了十七个技术债。每一笔都有它的故事,

每一笔都对应着一个曾经的“来不及”。它们散落在六十万行代码的各个角落,

像埋在钢筋水泥里的哑弹。平时看不出来,但一旦承重结构开始动摇——“全都会炸。

”陆行之对着屏幕说。阁楼的窗外,天光从灰蓝变成淡金。巷子里传来早点摊出摊的声音。

油条下锅的滋啦声,豆浆机嗡嗡的转动声,老板娘中气十足的吆喝声。城市醒了。

陆行之合上笔记本,躺倒在床垫上。天花板上有水渍,形状像一只歪着头的狗。

他盯着那只狗,脑子里还在跑代码。那些技术债,如果不还,六十天后就是一颗定时炸弹。

但如果他还了——如果他重新设计授权验证模块,

那个和他的个人签名绑定的“临时方案”替换掉——那他就等于亲手拆掉了自己唯一的筹码。

不对。他忽然坐起来。不是唯一的筹码。他重新打开笔记本,翻到那个授权验证模块的代码。

一行一行地看,看得很慢。然后他看到了那个东西。密钥的分发机制。

“行知内核”是一个企业级底层设施,客户拿到的是封装好的软件包,

但核心的授权验证需要联网完成。每六十天,

客户系统会向行知的授权服务器发送一次验证请求,获取新的密钥。如果验证失败,

系统会进入六十天的缓冲期,然后——陆行之把代码往下翻了一页。

他看到了一行自己三年前写下的注释。

//紧急后门:debug模式可用核心签名直接签发授权//别删,

以备不时之需他的手悬在键盘上方,停了很久。三年前的自己,到底在防备什么?

那时候“行知”刚做完B轮,公司从五十人扩张到一百二十人,方婉宁开始频繁出差,

他开始发现她不接他电话的次数越来越多。有一个晚上,他一个人在机房调试,

忽然鬼使神差地写下了这个后门。他记得自己写这段代码时的感觉。不是愤怒,不是猜疑。

是一种说不清的、像动物本能一样的东西。他给它起名叫“以备不时之需”。三年后,

不时之需来了。陆行之删掉了那行注释,但没有删掉那段代码。---下午两点,老周来了。

他推开酒馆的门时,陈远正在给午市的客人炒饭。灶火轰的一声,

蛋液在热油里炸开成金黄色的云朵。老周穿过油烟,径直上了阁楼。手里拎着一个塑料袋,

里面是两份盖浇饭和两罐红牛。“陆哥,出事了。”陆行之从屏幕前抬起头。

他已经连续坐了十个小时,眼睛里全是血丝。“行知那边?”“今天上午。

”老周把盖浇饭放在桌上,自己坐到床垫边缘,“行知内核3.1版本,第一次线上故障。

”陆行之拿起筷子,没吃,等着他继续。“新来的那个CTO,姓许的,宋明哲的人。

他带着团队在3.0基础上加了一个所谓的‘智能调度模块’,

说是要替换掉你原来写的调度算法。理由是——你那个算法太复杂,维护成本太高。

”“然后?”“然后今天上午十点上线。十点十五分,调度模块死锁。十点三十分,

三个客户的系统同时瘫痪。最大的是云盛物流,他们的全国配送系统直接停摆了四十分钟。

”老周掏出手机,点开一个页面递过来。是科技媒体的快讯,

标题写着:《行知科技突发系统故障,云盛物流全国配送中断,原因待查》。“四十分钟。

”陆行之重复了一遍。他知道云盛物流的体量。那是他们早期最大的客户之一,

当年的合同是他和方婉宁一起去谈的。对方的技术负责人是个五十多岁的老工程师,

问了他整整两个小时的技术问题,最后拍板的原因是——“你这个人不吹牛,

用你的东西我睡得着。”“云盛那边怎么说?”“技术合同里写了,单次故障超过三十分钟,

赔偿全年服务费的三倍。”老周的声音低下去,“他们今年的服务费是八百万。

”两千四百万。“方婉宁呢?”“在公司。宋明哲也在。”老周顿了顿,“还有一件事。

许CTO在内部复盘会上说,这次事故的原因是——你留下的底层架构有设计缺陷。

”陆行之放下了筷子。“他说调度算法的文档不全,核心逻辑只有你一个人懂,

团队接手后发现大量‘反模式设计’,导致新功能无法正常集成。他把锅全部甩给了你。

”阁楼里安静了几秒。楼下陈远的炒勺碰到锅沿,当的一声。“文档不全。

”陆行之慢慢地说出这四个字。他站起来,走到那台C082服务器旁边。

服务器的外壳上贴着一张泛黄的标签,上面是他手写的编号和配置参数。他蹲下来,

打开侧板。里面塞着一个牛皮纸信封。老周愣住了:“这是什么?”陆行之抽出信封,打开。

里面是一沓写得密密麻麻的A4纸,每一页都标注了日期和模块名称。

计推演、调度算法的数学模型、授权验证的流程图——六年来他手写的所有技术文档的原稿。

那些在公司文档系统里“不完整”的资料,完整的版本全在这里。“方婉宁知道这些吗?

”老周的声音有点哑。“不知道。”陆行之把A4纸塞回信封,“她从来不进机房。

”“那你为什么不把这些文档交上去?”“交了。”陆行之坐回床垫上,

打开老周带来的盖浇饭,“我交了六次。每一次都被产品部门打回来,

说格式不符合公司文档规范,让重新整理。”他开始吃饭。青椒肉丝,陈远的手艺,

肉丝切得很细,青椒炒得刚好断生。“后来我明白了。不是格式的问题。

是他们不需要完整的文档。完整的文档意味着谁都能看懂这套系统,

意味着我不是不可替代的。”老周张了张嘴,没说出话。“所以我开始写两份文档。

一份交上去,按照他们想要的格式,删掉所有‘不必要’的细节。另一份留给自己,

所有的推导过程、边界条件、已知缺陷,全部记下来。”陆行之咀嚼着青椒和肉丝,

声音很平静。“不是为了对抗谁。是一个写代码的人的本能。”他看向老周。“老周,

你今天来,不只是为了告诉我这个吧。”老周沉默了很久。窗外巷子里有人收废品,

吆喝声由远及近又及远。“方总让我传话。”老周终于开口,“她想见你。

”---方婉宁约的地方不是公司,也不是他们曾经一起去过的任何一家餐厅。

是那家咖啡馆。六年前他们画下第一版架构图的咖啡馆。陆行之到的时候,

她已经坐在里面了。角落靠窗的位置,桌上放着两杯美式。其中一杯没有动过,是给他的。

他在她对面坐下。咖啡馆重新装修过了,换了一批新的桌椅,墙上多了绿植和霓虹灯招牌。

但格局没变,窗外的梧桐树还在,比六年前粗了一圈。方婉宁看起来不太好。妆还是化的,

头发还是挽的,但眼下的青色遮不住。西装外套的领口有一点皱,是那种忙到没时间熨的皱。

“云盛的事你知道了。”她开门见山。“知道了。”“许志明把责任推给了底层架构。

”她端起咖啡,没喝,又放下,“宋明哲支持他的结论。他们在准备一份技术评估报告,

结论是——需要全面重构行知内核,原有架构推倒重来。”“推倒重来。”“对。

理由是原架构有设计缺陷,维护成本不可控。”陆行之靠在椅背上。窗外梧桐叶开始泛黄,

有一片旋转着落下来,贴在玻璃上。“你知道推倒重来意味着什么吗?”他问。

方婉宁没有回答。“意味着他们根本不想修。他们要的是一份报告,

证明这个公司的核心技术‘有问题’,然后——”“然后做低估值,引入新的投资方,

稀释我

相关文章

同类推荐