裁员当天,我交接了所有工作默默离开
裁员通知下来那天,我平静地签了字,没要一分赔偿。
部门群里还在讨论晚上去哪聚餐,没人注意到我退出了群聊。
第三天,总监疯了似的打我电话——那个被裁的闷葫芦,带走了他电脑里三年来所有项目的核心数据。
以及他设计的那套让公司起死回生的新系统源码。
而此时,我正坐在竞争对手公司的会议室里,对面坐着的是他们求贤若渴的CEO。
三月的风还带着凉意,从写字楼二十二层的落地窗缝隙里钻进来,吹得沈亦舟后颈有些发凉。他低头看着手里那张薄薄的A4纸,“解除劳动合同通知书”几个加粗黑体字印得端端正正,像一块墓碑。
“沈亦舟,技术部,工号T22079。”
人力资源部的何姐坐在对面,目光有些闪烁,手指无意识地卷着那份文件的边角。她清了清嗓子,试图让语气听起来公事公办:“公司目前经营策略调整,技术部需要优化一名后端开发……你也知道,今年大环境不好。”
沈亦舟没说话。他当然知道。上周技术部总监赵康在周会上拍着桌子骂街,说再拿不出像样的东西,整个部门都得滚蛋。而沈亦舟负责的“星图”项目,恰恰是赵康口中“像样的东西”——那套全新的智能调度算法,他花了整整三年,熬了无数个通宵,从最底层的架构开始搭建,最近刚刚进入最终测试阶段。
“赔偿金方面……”何姐顿了顿,“按照N+1的标准,你工作三年,可以拿到四个月工资。不过——”
“不用了。”
沈亦舟抬起头,目光平静得让何姐愣了一下。他把那张通知书对折,再对折,塞进外套口袋里,然后从工位上拿起那个早就收拾好的帆布包。包里只有一台用了两年的旧笔记本电脑,一个用了三年的保温杯,还有一本翻得卷了边的《算法导论》。
“沈亦舟,你……”何姐站起来,似乎想说什么。
“工作交接文档在共享盘里,路径我发到赵总邮箱了。”沈亦舟的声音没什么起伏,“代码权限已经转给周明远。没什么事的话,我先走了。”
他穿过开放式办公区,几十个工位上键盘声此起彼伏。部门微信群里消息还在不停地跳,有人在问晚上团建去哪家火锅店,有人发了个投票链接,选项从“海底捞”到“小龙坎”排了一长串。没有人抬头看他。
沈亦舟走到电梯口,按下下行键。电梯门关上的一瞬间,他掏出手机,手指在屏幕上停留了一秒,然后点了“退出群聊”。
电梯平稳地下降,数字从22跳到21,20,19……沈亦舟靠着轿厢壁,闭上眼睛。他没有愤怒,甚至没有太多意外。赵康想要“星图”的完整知识产权,想要抹掉所有参与者的名字,把功劳全部揽在自己身上向集团邀功。而沈亦舟这种不善言辞、不会站队的技术人员,正好是第一个被牺牲的。
他早就知道会有这一天。
走出写字楼大门时,三月的阳光刺得他眯了眯眼。沈亦舟站在台阶上,从口袋里摸出那张通知书,随手扔进了旁边的垃圾桶。然后他掏出手机,拨了一个号码。
“陆总吗?我是沈亦舟。”
电话那头传来一个低沉而急促的声音:“沈亦舟?你终于打电话来了。我等你这个电话等了三个月。”
“星图”系统第一次出现重大漏洞,是在沈亦舟离职的第二天晚上。
周明远满头大汗地坐在沈亦舟曾经的工位上,屏幕上的报错日志刷得飞快。他按照沈亦舟留下的交接文档一步步操作,却发现最关键的那部分核心代码被加密了,密码根本不对。
“赵总,这个……这个模块我打不开。”周明远声音发虚。
赵康站在他身后,脸色铁青:“打不开?沈亦舟不是把权限都转给你了吗?”
“权限是转了,但是……他用了自己的加密算法,文档里没写密钥。”周明远咽了口唾沫,“我试了他以前用过的所有密码,都不对。”
赵康一把推开周明远,自己坐到电脑前。他对“星图”的底层架构并不熟悉,当初立项时他忙着跟集团要预算、跟市场部争资源,真正写代码的环节从来没碰过。屏幕上密密麻麻的代码在他眼里像天书一样,他敲了几个命令,系统直接弹出一个红色警告框。
“警告:核心模块访问被拒绝。请联系系统架构师。”
赵康猛地一拍桌子:“给他打电话!现在!”
周明远哆哆嗦嗦地掏出手机,翻到沈亦舟的号码拨过去。“嘟——嘟——嘟——”响了好多声,没人接。再打,还是没人接。发微信,消息前面多了一个红色的感叹号——好友验证。
“赵总……他把我删了。”
整个技术部鸦雀无声。所有人都停下了手里的活,目光在赵康和周明远之间来回游移。赵康的脸色从铁青变成灰白,他掏出自己的手机,找到沈亦舟的号码拨过去。
“嘟——嘟——嘟——”
他连打三遍,每次都是响到自动挂断。赵康额角青筋直跳,又翻出何姐的电话:“沈亦舟的紧急联系人呢?他家里电话!住址!什么都行!”
何姐在电话那头支支吾吾:“我……我找找……”十分钟后她回电话,声音里带着明显的慌张:“赵总,沈亦舟档案里的紧急联系人填的是他自己,住址只写到XX区,没有具体门牌号……他入职时就没填详细地址。”
赵康的手机从手里滑落,“啪”地一声扣在桌上。
他不知道的是,此刻沈亦舟正坐在城市另一端的一栋写字楼里。会议室落地窗外是开阔的江景,阳光铺洒在长桌上,对面坐着一个四十来岁、目光锐利的男人——陆沉,辰星科技CEO,业内公认的技术狂人。
“想好了?”陆沉把一杯茶推到沈亦舟面前,“来辰星,技术副总裁的位置是你的。‘星图’的完整知识产权归你个人,公司只享有使用权。年薪这个数——”他在纸上写了一串数字,推过来。
沈亦舟低头看了一眼,那串数字是他原来年薪的五倍。
“我有个条件。”沈亦舟说。
“你说。”
“我的团队,我要自己挑人。”沈亦舟端起茶杯,目光透过氤氲的水汽看向陆沉,“原来的公司里,有几个跟我一起做‘星图’的兄弟,被赵康打压得厉害。我要把他们带出来。”
陆沉笑了:“这个条件,我答应得比你还痛快。”
沈亦舟端起茶喝了一口。三月的阳光透过落地窗洒在他肩上,把他的白衬衫照得发亮。他想起三天前走出那栋写字楼时的情形——没人送他,没人问他,部门群里的火锅投票还在继续。
而他电脑里,那套让赵康垂涎三尺的“星图”核心算法,从来就不在公司的服务器上。
它一直安安静静地躺在他那个用了两年的旧笔记本电脑里,和那本《算法导论》一起,跟着他穿过半个城市,来到了这里。
赵康的电话是在第四天早上打来的。沈亦舟看了一眼来电显示,没有接。他把手机翻了个面扣在桌上,继续和陆沉讨论“星图”上线的时间表。
但赵康显然不打算放弃。第五天,沈亦舟的邮箱里多了一封律师函,措辞严厉地要求他立即归还“公司核心资产”,否则将追究法律责任。
沈亦舟盯着那封邮件看了两秒,嘴角微微上扬。他把邮件转发给陆沉,附了一句话:“陆总,法务部借我用一下。”
然后他打开自己的笔记本电脑,找到那个加密文件夹。三年心血,几百个版本的迭代,无数个凌晨三点的调试记录,全在里面。他点开“星图”最新版的测试报告,上面显示系统在内部测试中实现了百分之九十七的资源调度效率提升。
而赵康交给集团的报告里,这个数字只有百分之二十三。
沈亦舟合上电脑,目光扫过会议室外的开放式办公区。辰星科技的员工们正在忙碌,键盘声清脆而密集。陆沉给他预留的办公室在走廊尽头,门牌上写着“技术副总裁——沈亦舟”。
他站起身,走到窗前。江面上有货轮缓缓驶过,汽笛声低沉而悠长。沈亦舟掏出手机,找到那个被他屏蔽了几天的号码,按下回拨。
电话几乎是一秒就被接通了,赵康的声音从听筒里炸出来:“沈亦舟!你终于——”
“赵总。”沈亦舟打断他,语气平静,“‘星图’的核心算法是我个人在业余时间独立开发的,没有使用任何公司资源。这一点,我有完整的开发日志和版本记录可以证明。至于公司想要追究我的法律责任——”
他顿了顿,看着窗外货轮破开江面拖出的白色尾迹。
“欢迎来告。”
沈亦舟挂断电话,把手机调成静音。他走回会议室,陆沉正对着“星图”的产品演示界面频频点头。
“老沈,你这套系统一旦上线,整个行业的资源调度逻辑都要重写。”陆沉抬起头,眼神发亮,“你原来的公司,到底是怎么把你放走的?”
沈亦舟坐下来,打开笔记本电脑:“可能是因为他们觉得,我不太会说话吧。”
屏幕右下角弹出一条微信消息,是原来的同事周明远发来的好友申请。验证消息写着:“沈哥,赵康快疯了,整个技术部都在找‘星图’的备用方案。你之前留给我的文档里,那个加密模块的密钥到底是什么?”
沈亦舟盯着那条消息看了两秒,敲了三个字回过去。
“问赵康。”
他关掉对话框,点开“星图”的代码编辑器。光标在最后一行闪烁,那里有一行他离职那天凌晨三点写下的注释:
“有些东西,他们拿得走,但带不走。”
窗外,江面上的货轮拉响了汽笛,声音穿透整座城市,浑厚而悠长,像某种沉默已久的宣告。
第二章 缺一不可的拼图
周明远收到沈亦舟回复的那三个字时,正躲在公司消防楼梯里。他把手机屏幕亮度调到最低,盯着“问赵康”三个字看了足足半分钟,后背抵着冰冷的墙壁,只觉得嗓子眼发干。
他不敢问赵康。
昨天下午的部门会议上,赵康当着所有人的面把键盘砸在桌上,指着周明远的鼻子骂:“交接文档里连个密钥都不写,你是猪吗?他走之前你跟他同组,他那些密码习惯你不知道?”
周明远确实不知道。沈亦舟在组里待了三年,是公认的老黄牛,什么脏活累活都接,但从不多说一句话。每天卡点来、卡点走,午饭永远是一个人吃,团建永远找理由推掉。大家私下里管他叫“影子”,意思是存在感低到像团里的透明人。唯一和他走得近一点的,是前端组的苏瑶——两人偶尔在茶水间碰见会聊几句技术问题,但苏瑶上周也被裁了,走的时候比沈亦舟还安静。
可就是这个“影子”,现在让整个技术部彻底停摆。
“星图”系统上线在即,集团那边天天催进度,市场部已经把产品发布会的邀请函发了出去,连媒体通稿都拟好了。赵康向集团立了军令状,说月底一定上线,可现在别说上线了,连核心调度模块的入口都打不开。
周明远从消防楼梯溜回工位,发现赵康正站在沈亦舟原来的电脑前,翻找着什么。他不敢出声,悄悄坐回自己位置。过了几分钟,赵康突然大声叫他:“周明远!过来!”
他小跑过去。赵康指着屏幕上打开的一个文件夹:“这是什么?”
周明远凑近一看,是沈亦舟留下的开发日志。几百个文本文件整整齐齐排在那里,按日期命名,从三年前的第一行代码开始,每一天的工作内容都记录得清清楚楚。赵康点开最近一个月的日志,往下翻,翻到某一天,忽然停住了。
“今天把核心调度模块的密钥算法做了更新,新版本使用了个人定制的哈希加盐策略。盐值保存在我的私人笔记里,没有写进项目文档。这样做虽然增加了交接难度,但可以有效防止核心模块被非授权修改。”
赵康一拳砸在显示器边框上:“他早就防着这一手!”
周明远看着那段日志,忽然想起一件事。沈亦舟走的那天中午,他们最后一次在茶水间碰面。沈亦舟在接水,周明远走过去,随口问了句:“星图的事,你真放心交给赵康?”
沈亦舟端着杯子,看着饮水机咕嘟咕嘟冒泡,过了好几秒才说:“明远,你以后要是有机会独立带项目,记住一件事——核心技术,永远不要全部留在公司的服务器上。”
当时周明远没听懂。现在他懂了。
赵康显然也懂了。他拿起手机,翻出通讯录里一个备注为“公司法务-张”的联系人,走到走廊上打电话。周明远隐约听到“侵权”“源代码”“追究”几个词,心口一跳。
下班后,周明远没有直接回家。他绕路去了公司附近的一家咖啡馆,推开门,角落里坐着一个人。
苏瑶抬起头,冲他招了招手。
“沈哥让我给你的。”苏瑶推过来一个牛皮纸信封,很薄。周明远打开一看,里面是一张折叠的A4纸,上面用签字笔写着一个地址,还有一行小字:“周四下午三点,想来的话,带上你的笔记本。”
地址在城市另一端,辰星科技的大楼。
“他……他让我过去?”周明远声音有些抖。辰星是行业里出了名的技术驱动型公司,这两年发展势头极猛,是原来公司最直接的竞争对手。
苏瑶点点头。她比周明远早走一周,沈亦舟找她的时候,她只考虑了十分钟就答应了。“你知道最讽刺的是什么吗?”苏瑶搅着面前的咖啡,“我被裁的时候,赔偿金都没要。HR说公司困难,让我体谅,我就体谅了。回家哭了一整晚,第二天沈哥就给我打了电话。”
她抬起头,眼神里有一种周明远从没见过的光:“他说,能被人抢走的东西,说明你拥有的还不够多。”
周明远攥紧了那张纸。
与此同时,赵康的法务团队正在连夜起草律师函。他们翻遍了沈亦舟的劳动合同和保密协议,发现一个漏洞:沈亦舟的“星图”核心算法研发时间跨越了整整三年,而他入职时签订的保密协议只覆盖了前两年的研发内容。后一年的部分,根据公司规定,需要在每年年初重新签订补充协议,而沈亦舟连续两年都以“条款有异议”为由拒绝签字。
“他早就计划好了。”赵康听完法务的汇报,瘫坐在椅子上。他忽然想起三年前沈亦舟刚入职时的样子——穿着一件洗得发白的格子衫,背着旧帆布包,话少得可怜。当时赵康还跟HR说,这人看着老实,好用。
现在他终于明白,沈亦舟的“老实”,是因为他根本不在乎那些表面的东西。他在乎的东西,从一开始就和赵康不一样。
周五下午两点半,赵康抱着最后一丝希望,再次拨通了沈亦舟的电话。这一次,电话接通了。
“赵总。”沈亦舟的声音平静,背景里隐约有键盘敲击声。
“沈亦舟,我们谈谈。”赵康压着嗓子,“律师函的事可以商量,赔偿金也可以重新谈。你回来,我们好好聊。”
电话那头沉默了几秒。赵康以为有戏,正要继续加码,忽然听到沈亦舟轻轻笑了一声。
“赵总,你知道我为什么不要赔偿金吗?”
赵康愣住了。
“因为我想让你记住一件事——有些人的价值,你拿赔偿金衡量不了。”沈亦舟的声音不疾不徐,“我要的东西,已经拿到了。”
电话挂断。赵康听着忙音,只觉得胸口堵得发闷。他正要摔手机,办公室门被人推开,周明远站在门口,手里拿着一封打印好的辞职信。
“赵总,我……我也要走。”
赵康瞪大眼睛:“你也要走?你去哪?”
周明远把辞职信放在桌上,声音比平时大了不少:“去辰星。沈哥让我带句话——你之前克扣团队的项目奖金,他那边有完整的记录。等你把该还的还清了,他可以考虑,不起诉。”
赵康的脸瞬间煞白。
窗外,三月的风终于暖了起来。周明远走出写字楼大门时,看见苏瑶靠在路边的灯柱上等他。两人对视一眼,什么也没说,却同时笑了。
远处江面上,一艘货轮正驶向出海口,汽笛声穿透暮色,带着某种不可阻挡的力量。
而在辰星科技的会议室里,沈亦舟打开那台旧笔记本电脑,屏幕上“星图”的界面亮着柔和的光。陆沉站在他身后,看着演示数据轻轻点头。
“赵康那边怎么办?”陆沉问。
沈亦舟把开发日志文件夹拖进一个新的目录,目录名叫“证据”。他合上电脑,看向窗外江面上那艘越来越小的货轮。
“他会自己找过来的。”沈亦舟说,“等他发现,他手里那堆东西,没有我,什么都做不了。”
陆沉递过来一份新的劳动合同,比上次那版厚了不少。沈亦舟接过来翻到最后一页,直接签了字。
“你不看看条款?”陆沉挑眉。
“不用。”沈亦舟把合同推回去,目光平静,“你给的条件,比我自己想的还要好。”
陆沉大笑,伸出手。沈亦舟握上去,掌心干燥而有力。
窗外,货轮驶出江口,汇入更广阔的海域。汽笛声远远传来,像一声迟到的、但终究会到的回响。
第三章 沉默者的底牌
周明远到辰星报到那天,是个周一。
他站在前台报名字的时候,手心全是汗。前台姑娘打了个电话,不到两分钟,苏瑶从走廊尽头小跑过来,冲他挥手:“这边!沈哥在开会,让我先带你转转。”
辰星的办公区比原公司大了一倍不止。开放式工位上坐满了人,屏幕上跑着各种他看不懂的代码流。最里面靠窗的位置有一排独立办公室,苏瑶指了指尽头那间:“沈哥的。陆总把技术部最好的位置给了他。”
周明远咽了口唾沫:“他……他现在什么级别?”
“技术副总裁。”苏瑶压低声音,“直接向陆总汇报。整个‘星图’项目由他全权负责,人员、预算、进度,陆总一概不插手。”
周明远想起赵康那张永远阴沉的脸,想起技术部每次申请一台测试服务器都要打三次报告,想起沈亦舟三年里用着全组最旧的电脑、却写出了全公司最核心的代码。他张了张嘴,最后只说了一句:“沈哥值得。”
苏瑶把他领到一间小会议室,桌上放着一台崭新的笔记本电脑和一个牛皮纸信封。周明远打开信封,里面是一张门禁卡、一份入职材料,还有一张手写的便签。
“明远:电脑里装了‘星图’的测试环境,你先熟悉一下。周五之前把前端接入方案写出来,不用太完美,我要看你的思路。——沈亦舟”
字迹工整得近乎刻板,和沈亦舟本人一样,没有一点多余的笔画。周明远把便签小心收进口袋,打开电脑。屏幕亮起来,桌面干干净净,只有一个文件夹,名字叫“起点”。
他点进去,里面是“星图”系统的完整架构图、接口文档和测试用例。文档的修改记录里,最后一次更新是三天前,修改人:沈亦舟。
周明远滑动鼠标,一页页翻过去,越看越心惊。“星图”的复杂程度远超他的想象——沈亦舟在原公司展示给赵康看的,只是这套系统的冰山一角。真正的核心调度算法被拆分成七个独立模块,每个模块都有单独的加密和授权机制。而沈亦舟留给他的文档里,详细标注了每一个模块的功能和对接方式,仿佛早就知道他会来。
中午吃饭的时候,沈亦舟终于出现了。他端着餐盘坐到周明远对面,衬衫袖子挽到小臂,露出腕上一块极普通的电子表。周明远注意到,他的餐盘里只有一份素菜和一碗米饭。
“沈哥,你就吃这个?”
“习惯了。”沈亦舟夹了一筷子青菜,“原来公司楼下那家快餐店,素菜便宜三块钱。”
周明远心里堵了一下。他想说“现在你不需要省这三块钱了”,但话到嘴边又咽了回去。沈亦舟看起来和以前没什么区别——还是一样沉默,一样朴素,一样不引人注目。但他的眼神不一样了,那种被压着、闷着、无处施展的沉郁不见了,取而代之的是一种极其稳定的笃定。
“架构图看懂了多少?”沈亦舟问。
“大概六成。”周明远老实回答,“调度模块的第三层数据流我没完全理解。”
沈亦舟点点头,从口袋里掏出笔,直接在餐巾纸上画了起来。几笔勾勒出一个数据流向图,标注了三个关键节点。“这里、这里和这里,是性能瓶颈。我原来的方案是增加缓存层,但测试发现缓存穿透率太高。后来换了思路,改成异步队列加批处理,效率提升了百分之四十。”
周明远盯着那张餐巾纸,脑子里有什么东西忽然通了。“所以你离职那天凌晨三点还在改的,就是这个?”
沈亦舟的手顿了一下。他抬起头看着周明远,目光里有一丝极淡的意外,随即恢复了惯常的平静。“你看过我的开发日志。”
“赵康翻出来的那些。我瞄了几眼。”
沈亦舟把餐巾纸叠好,推到周明远面前。“收着。下午把前端接入方案的第一版给我,不用等周五。”
他端起餐盘起身要走,又停了一下,没有回头。“明远,你以前在组里,代码写得不错,但总是最后一个交。你知道为什么吗?”
周明远愣了一下:“因为我……不够快?”
“因为你在等别人先交,看他们的思路,然后调整自己的。”沈亦舟的声音很平,“这个习惯要改。在辰星,没有别人可以等。”
他走了。周明远坐在原地,看着餐巾纸上那几笔潦草的线条,忽然觉得鼻子有点酸。他在原公司待了四年,从来没有人跟他说过这种话。赵康只会催进度,催完进度抢功劳,抢完功劳甩黑锅。而沈亦舟只用一顿饭的功夫,就把他看了个透。
当天下午,周明远把自己关在小会议室里,花了四个小时写出了前端接入方案的第一版。他发给沈亦舟的时候是晚上七点,八点不到就收到了回复。只有一句话:“第二版明天上午给我,注意接口幂等性。”
周明远盯着那行字,忽然笑了。他打开方案文档,开始改第二版。
赵康第一次出现在辰星大楼门口,是周明远离职后的第十天。
前台打电话给沈亦舟的时候,他正在和陆沉讨论“星图”的上线时间表。陆沉挑了挑眉:“你前东家找上门了,见不见?”
沈亦舟想了想:“让他上来吧。会议室安排在三楼,别用我们这层的。”
陆沉笑了:“你还挺讲究。”
“不是讲究。”沈亦舟合上电脑,“他要是看到我们这层的配置,回去又该睡不着了。”
赵康被领进三楼的小会议室时,脸色比十天前憔悴了不少。西装还是那套深灰的,但领带歪了,下巴上冒出一层青黑的胡茬。他看到沈亦舟推门进来,几乎是条件反射般地从椅子上弹起来。
“沈亦舟——”
“赵总,坐。”沈亦舟在他对面坐下,顺手把门带上。会议室里只有他们两个人,桌上放着两瓶矿泉水,连个茶杯都没有。
赵康深吸一口气,努力让自己的语气听起来不那么急躁:“沈亦舟,我们打开天窗说亮话。‘星图’的事,集团那边已经知道了。他们给了我最后期限,月底之前系统上不了线,整个技术部解散。我个人的去留不重要,但技术部三十多号人——”
“赵总。”沈亦舟打断他,声音不大,却让赵康猛地闭了嘴。“技术部现在还有多少人?”
赵康愣了一下:“二十……二十一个。”
“我走之前是三十四个。”沈亦舟拧开矿泉水瓶盖,喝了一口,“你裁了十三个?”
赵康的脸色变了变:“公司经营困难,优化人员结构是正常的——”
“周明远、苏瑶、张一鸣、刘畅、王磊……”沈亦舟一个个念出名字,语速不快,但每个名字都像一颗钉子钉在赵康心上,“这些人都是‘星图’项目的核心成员。你裁掉他们的时候,有没有想过系统怎么上线?”
赵康张了张嘴,说不出话。
沈亦舟放下水瓶,从口袋里掏出手机,点开一个页面推到赵康面前。屏幕上是一份完整的记录——每一条都标着日期、项目名称、应发奖金金额和实发金额。差额从几百到几千不等,最长的一条跨越了整整两年。
“这是技术部三年来的项目奖金发放记录。”沈亦舟的声音平静得近乎冷酷,“我走之前整理了一份。你上个月跟集团报的‘星图’研发预算,比实际支出高出了将近一倍。赵总,你说集团要是看到这份东西——”
“你威胁我?”赵康猛地站起来,椅子向后滑出去撞在墙上。
“不是威胁。”沈亦舟也站起来,两人隔着会议桌对视。沈亦舟比赵康矮了半个头,但此刻他站得笔直,目光稳得像一潭深水。“是通知。我给你两条路:第一,主动向集团申请将‘星图’项目的知识产权划归我本人,作为交换,我不追究你挪用项目奖金和虚报预算的事。第二——”
他顿了顿,嘴角弯了一个极小的弧度。“你继续走法律程序。我这边有完整的开发日志、版本记录和代码签名时间戳,足够证明‘星图’的核心算法是我个人在业余时间独立开发的。到时候集团法务部会站哪边,你自己掂量。”
赵康的脸从红转白,又从白转青。他死死盯着沈亦舟,仿佛第一次认识这个人。面前站着的,还是那个穿着旧格子衫、背着帆布包、午饭只吃素菜的“影子”吗?
“你从一开始就计划好了。”赵康的声音发哑。
沈亦舟没有否认。他收起手机,走到会议室门口,手搭在门把上。“赵总,有件事我想告诉你——我离职那天,其实没打算来辰星。我准备休息两个月,找个小镇住一阵,把这三年没睡的觉补回来。”
赵康愣住了。
“是陆沉找到了我。他关注‘星图’的项目动态已经一年多了,从技术论坛上一些匿名帖子的代码风格,推断出这个项目背后有一个真正的高手。他给我打了三次电话,第三次的时候说了一句话——”
沈亦舟拉开门,走廊里明亮的光线涌进来,把他的侧脸映得轮廓分明。
“他说,‘沈亦舟,你的才华不应该被任何人埋没,包括你自己。’”
赵康站在原地,看着沈亦舟走出去,会议室的门在他面前缓缓合上。桌上那瓶矿泉水还没开封,瓶身上凝着一层细密的水珠,像一层薄薄的冷汗。
赵康最终在协议上签了字。
“星图”项目的知识产权正式划归沈亦舟个人所有,辰星科技享有独家商业授权。作为交换,沈亦舟放弃对赵康个人挪用项目奖金的追诉权。集团那边对赵康虚报预算的事并不知情,只当是正常的人事变动,把他调去了一个边缘部门。
周明远知道这个消息的时候,正在和团队一起调试“星图”的最后一个模块。他放下手机,长长吐了一口气。苏瑶从旁边的工位探过头来:“签了?”
“签了。”周明远咧嘴笑,“赵康被调走了。”
办公区里响起一阵低低的欢呼。沈亦舟从独立办公室里走出来,手里端着他那个用了三年的旧保温杯。他环视一圈,目光在每个人脸上停了一下。
“‘星图’下周三上线。”他说,“明天开始封版测试,谁都不准请假。”
大家笑着应和,键盘声重新密集起来。沈亦舟转身回办公室,路过周明远工位的时候停了一秒。
“方案的第二版写得不错。”他说,声音很轻,“比第一版快了三个小时。”
周明远一愣,然后笑了。他想起沈亦舟那天中午说的话——“在辰星,没有别人可以等。”他打开编辑器,开始写第三版。
窗外,四月的风已经暖了。江面上的货轮来来回回,汽笛声此起彼伏。辰星大楼的玻璃幕墙映着午后的阳光,亮堂堂的,像一块被擦干净了的招牌。
而在沈亦舟的旧笔记本电脑里,那个叫“证据”的文件夹旁边,又多了一个新的目录。目录名叫“起点”。
里面只有一行注释,是沈亦舟昨晚凌晨两点写的:“星图上线前,再改最后一版。这次不改算法,只加一行日志——记录每一个调用核心模块的IP地址和时间。”
“有些人,迟早会自己送上门来。”
第四章 上线前夜
“星图”上线倒计时七十二小时,整个辰星技术部进入了一种近乎癫狂的状态。
办公区的白板上写满了倒计时、任务列表和不知道谁画的加油表情包。零食区的方便面和能量饮料被扫荡一空,行政紧急补了三次货。沈亦舟的独立办公室玻璃墙上的百叶帘完全拉开,他坐在电脑后面,面前摊着三个屏幕,分别跑着测试环境、代码审查和系统日志。
周明远抱着笔记本蹲在办公区角落的懒人沙发上,手指飞快地敲着键盘。苏瑶从他身边走过,扔了一罐咖啡到他怀里:“第三版方案改完了?”
“改完了,沈哥刚批注回来。”周明远用牙咬开拉环,灌了一大口,“他让我把错误重试机制再细化,每个异常分支都要有对应的降级策略。”
苏瑶点点头,蹲下来看他屏幕。密密麻麻的代码里,每一段都有沈亦舟的批注——用不同颜色标出的修改建议,精确到分号后面要不要加空格。苏瑶忍不住说了一句:“他看代码比写代码还累。”
“他一直是这样的。”周明远盯着屏幕,“在原公司的时候,他每天走之前都会把当天所有人的代码过一遍,有问题的第二天早上悄没声地改掉,也不说。赵康一直以为组里代码质量高是大家的功劳,其实……”
他没说完,但苏瑶懂了。
沈亦舟的办公室门被推开,陆沉端着两杯咖啡走进去。他把一杯放在沈亦舟手边,自己拉了把椅子坐下。“怎么样了?”
“最后一个模块的并发测试通过了。”沈亦舟指了指左边屏幕,上面跑着一条绿色的完成线,“峰值负载下响应时间保持在五十毫秒以内。比设计指标好一些。”
陆沉吹了声口哨。“赵康那边原来公布的指标是多少?”
“两百毫秒。”
陆沉笑了,靠进椅背里。“行,发布会那边我已经安排好了。下周三上午十点,公司大会议室,媒体和投资人都请了。你上去讲?”
沈亦舟的手指在键盘上停了一下。“我不擅长这个。”
“我知道你不擅长。”陆沉喝了口咖啡,“但‘星图’是你的东西,你来讲最有说服力。不用讲太久,二十分钟就行。PPT我让人做好了初稿,你今晚看一眼,明天改一版。”
沈亦舟沉默了几秒。“好。”
陆沉站起来,走到门口又回头:“对了,有件事跟你说一声。我收到消息,赵康去了竞业公司。”
沈亦舟抬起头。
“新成立的一家,叫‘启元科技’,老板是个叫孙启明的人。以前在行业里做过几个项目,口碑一般,但资本运作很有一套。”陆沉靠在门框上,“赵康过去做了技术总监。带走了原来技术部剩下的一半人。”
办公室安静了几秒。沈亦舟把目光从屏幕上移开,看向窗外。四月的傍晚,天边烧着一片暗红色的晚霞,江面被染成一条金红色的带子。
“他带走的人里,有‘星图’的原班底吗?”
“有几个参与过外围模块的,核心的人都在你这儿。”陆沉顿了顿,“不过有一件事——赵康走的时候,把公司服务器上‘星图’的旧版本测试数据全部拷走了。”
沈亦舟的手指在桌面上轻轻敲了一下。那是他思考时的习惯动作,从三年前就开始了,只是从来没人注意过。
“旧版本的数据结构是两年前的。”沈亦舟说,“跟现在的版本完全不兼容。他拿过去也只能做个演示壳子。”
“但如果他对外宣称‘星图’的早期版本是他在启元科技开发的——”
“那就让他宣称。”沈亦舟打断陆沉,语气平静得让陆沉愣了一下,“一个壳子而已。等他发现跑不起来的时候,自然会来找我。”
陆沉看着他,忽然笑了一声。“沈亦舟,我越来越觉得,当年给你打那三个电话是我做过最正确的决定。”
沈亦舟没接话,低头继续看屏幕上的代码。陆沉走出去,把门带上。办公室里只剩下键盘声和窗外隐约的汽笛声。
沈亦舟靠在椅背上,闭了几秒眼睛。他没有告诉陆沉,赵康拷走旧版本数据这件事,他早在一周前就知道了。周明远在入职第二天就通过原来的同事渠道打听到了消息,第一时间告诉了他。
他没有阻止,也没有声张。因为那份旧版本的数据里,埋着一个小小的、只有他知道的彩蛋。
两年前,他在“星图”的旧代码里留了一个隐蔽的日志上报接口。每次系统启动,都会向一个私人服务器发送一条心跳记录,包含启动时间、运行环境和调用者IP。这个接口藏在最底层的工具库里,和业务逻辑完全无关,赵康就算把代码翻烂了也看不出异常。
沈亦舟打开手机,翻到那个私人服务器的后台。果然,今天下午三点二十七分,他收到了一条新的心跳记录。
启动时间:三分钟前。IP地址:启元科技办公楼。
他盯着那条记录看了两秒,然后把手机翻过去扣在桌上。
周二晚上十点,辰星大楼只剩技术部这一层还亮着灯。
封版测试全部通过,周明远瘫在懒人沙发里,两眼发直。苏瑶趴在桌上睡着了,手边还放着半杯凉掉的咖啡。其他几个同事三三两两缩在椅子里刷手机,等着最后的部署脚本跑完。
沈亦舟从办公室走出来,手里拿着那台旧笔记本电脑。他走到白板前面,拿起马克笔,在“倒计时”旁边写了一个数字:1。
“最后一件事。”他的声音不大,但所有人都抬起了头,“今晚回去好好睡一觉。明天上午九点到岗,做上线前的最后检查。十点发布会,谁都不准顶着黑眼圈。”
大家笑起来,开始收拾东西。周明远从沙发上爬起来,揉着僵硬的脖子往门口走。经过沈亦舟身边的时候,他停了一下。
“沈哥,你那个旧电脑,怎么一直带着?公司不是给你配了新的吗?”
沈亦舟低头看了一眼手里的帆布包,那台旧笔记本安安静静地躺在里面。“习惯了。”他说,“这台电脑里存了一些东西,新电脑上没有。”
周明远没有追问。他点了点头,转身走进电梯。
沈亦舟独自站在空荡荡的办公区里,把白板上的倒计时从“1”擦掉,写上了“0”。他退后两步,看着那个圆圈,忽然想起三年前“星图”项目立项的那天,赵康在周会上慷慨激昂地讲了一个小时,说要做一个“改变行业格局”的系统。
当时沈亦舟坐在会议桌最远的位置,笔记本上只写了一行字:“先让系统能跑起来,再谈改变格局。”
三年后,系统终于要跑起来了。而赵康已经去了对面那栋楼,带着他拷贝过去的旧代码和一个注定要失败的壳子。
沈亦舟关掉办公区的灯,走进电梯。按下下行键的时候,他的手机震了一下。是陆沉发来的消息:“发布会流程发你邮箱了。另外,赵康今天在启元科技办了一场小型的媒体沟通会,宣布他们也在做智能调度系统。时间定在下周四。”
沈亦舟看着屏幕,电梯平稳地下降。数字从22跳到21,20,19……和三个月前那天一模一样。
他敲了三个字回过去:“知道了。”
电梯门在一楼打开,夜风从旋转门缝隙里灌进来,带着江面潮湿的气息。沈亦舟走出去,站在台阶上,抬头看了一眼这座城市。不远处,启元科技所在的写字楼顶层还亮着灯,像一只不肯闭上的眼睛。
沈亦舟收回目光,把帆布包往肩上提了提,往家的方向走去。路灯把他的影子拉得很长,一步一步,稳稳地落在地面上。
身后,辰星大楼的轮廓在夜色里安静矗立。明天上午十点,“星图”将正式上线。而属于沈亦舟的故事,才刚刚开始。
第五章 发布会
周三上午九点四十分,辰星科技的大会议室已经坐满了人。
媒体区的长枪短炮架了一排,投资人坐在前排,时不时低声交换几句。周明远站在后排靠墙的位置,手心全是汗。苏瑶比他镇定些,但攥着手机的手指关节也发白了。技术部的几个人缩在角落里,像一群等待考试成绩的学生。
沈亦舟站在侧台,面前是陆沉让人赶制的PPT。他昨晚看了一遍,改了三处措辞,删了两页动画效果。现在他穿着一件新买的深蓝色衬衫,袖口扣得整整齐齐。周明远远远看着,觉得沈亦舟和平时不太一样——那件旧格子衫不见了,整个人像是被什么东西打磨过,棱角还在,但光泽变了。
陆沉走上台,简短地介绍了“星图”项目的背景和辰星科技的战略布局。他的口才很好,几句话就把场子暖了起来。然后他侧过身,向侧台方向摊了摊手。
“下面,有请‘星图’系统的总架构师,辰星科技技术副总裁——沈亦舟。”
掌声响起来。沈亦舟从侧台走出来,步伐不快不慢,走到讲台前站定。他扫了一眼台下,目光平静得像一潭没有风的水。
“大家好,我是沈亦舟。”他的声音从麦克风里传出来,带着一点极轻微的沙哑,“‘星图’这套系统,我从三年前开始设计。今天在这里,只讲三件事。”
他按了一下翻页笔,身后的大屏幕上出现了一行字:第一件事,它解决了什么问题。
“传统调度系统的效率瓶颈在于静态分配。”沈亦舟的声音逐渐平稳下来,“资源被预先切分,无法根据实际负载动态调整。‘星图’的核心突破在于引入了实时预测模型,系统会提前十五秒预判资源需求,自动完成调度。”
他翻了一页,屏幕上出现了一张对比图。蓝色的柱状图代表传统系统,绿色的代表“星图”。绿色柱子整整高出四倍。
台下响起一阵低低的议论声。前排一个投资人举起手机拍下了那张图。
“第二件事,它怎么做到的。”沈亦舟翻到第三页,上面是一张极其复杂的架构图,密密麻麻的模块和连线看得人眼花。但沈亦舟没有展开讲技术细节,他只指了指最核心的那个黑色方块。“这里有一个调度引擎,内部集成了七个独立算法模块。具体的实现方式涉及商业机密,我今天不展开。”
台下有人笑了一声。沈亦舟的嘴角也弯了一个极小的弧度。“第三件事。”他说,“这套系统今天上午十点正式上线。现在——”他看了一眼腕上那块旧电子表,“还有八分钟。”
会议室里安静了一瞬,随即爆发出更热烈的掌声。陆沉在侧台用力鼓着掌,冲沈亦舟竖了个大拇指。
沈亦舟微微鞠了一躬,退后半步。他的目光越过人群,落在最后一排靠墙的位置。周明远正冲他咧嘴笑,两只手拍得通红。
发布会结束后是茶歇。沈亦舟被几个投资人和技术媒体围住,问题一个接一个抛过来。他回答得不算流畅,有些地方甚至停顿了好几秒,但每一个回答都精准到没有废话。一个记者问他“星图”和市面上其他智能调度系统的区别,他只说了一句:“别人的系统是给人用的,我的系统是给人省时间的。”
陆沉在旁边听到这句话,端着咖啡杯笑了半天。
周明远挤过人群,凑到沈亦舟身边低声说了句:“沈哥,系统监控那边有情况。”
沈亦舟微微点头,向周围的人说了声抱歉,跟着周明远走到会议室外面的走廊上。苏瑶已经等在那里了,手里拿着平板,屏幕上是一张实时监控图。
“上线后第一个小时,系统运行正常。”苏瑶划了一下屏幕,“但是十分钟前,监控到一组异常的访问请求。”
沈亦舟接过平板。屏幕上是一串IP地址和访问时间,他看了两秒,目光定住了。
“启元科技的IP段。”周明远压着嗓子说,“他们从九点五十五分开始,每隔几分钟就尝试访问一次‘星图’的API接口。请求参数里带了他们的应用标识。”
沈亦舟把平板还给苏瑶,脸上没什么表情。“他们想趁上线流量大的时候混进来,测试我们的接口兼容性。”
“要不要封掉?”苏瑶问。
沈亦舟想了一下,摇了摇头。“不封。让他们访问。”
周明远愣了一下:“为什么?”
“他们拿的是旧版本的接口文档。”沈亦舟转身往办公区走,声音不高但很清晰,“按照旧文档构造的请求,在新版本上会触发一个特定的异常分支。那个分支会记录完整的请求来源和参数组合,自动存到一个独立的日志库里。”
他推开办公区的玻璃门,走到自己的工位前坐下,打开那台旧笔记本电脑。屏幕亮起来,后台日志库里已经多了一百多条记录。每一条都标着启元科技的IP、访问时间和完整的请求参数。
“赵康在帮我做压力测试。”沈亦舟说这话的时候,语气里甚至带了一丝极淡的笑意,“免费的。”
周明远和苏瑶对视一眼,同时松了口气,随即又觉得后背发凉。沈亦舟从三个月前就开始布局了——旧版本代码里的心跳接口、新版本接口的异常分支、独立日志库的自动归档。每一步都埋得悄无声息,等到对方踩进去才发现,所有的路都是设计好的。
“这些日志,以后用得上。”沈亦舟把电脑合上,站起来。他看了一眼时间,上午十一点。“现在,盯紧系统运行。第一天最关键,有任何异常立刻告诉我。”
周明远应了一声,小跑着回了监控位。苏瑶也转身去忙了。沈亦舟站在办公区中间,周围是密集的键盘声和低声的讨论。他端起那个旧保温杯喝了一口水,目光穿过落地窗,望向远处那栋属于启元科技的写字楼。
启元科技的媒体沟通会安排在周四下午,比辰星晚了一天。
赵康站在讲台上,身后的大屏幕放着精心制作的PPT。他穿着新买的西装,头发梳得一丝不乱,讲话的声音饱满而自信。台下坐着十几家媒体和几个投资机构的代表,孙启明坐在第一排,时不时点头微笑。
“启元科技自主研发的‘启明’智能调度系统,历时三年打磨,今天正式向业界亮相。”赵康按了一下翻页笔,屏幕上出现了一张架构图。那张图和“星图”早期的版本有七八分相似,但被重新包装过,换了一套配色和命名体系。
“我们的核心创新在于——”赵康顿了顿,准备念出下一句台词。
台下忽然有人举手。是《科技前线》的记者,一个戴眼镜的年轻男人。“赵总,我注意到您刚才展示的架构图里,第三层调度模块的接口设计,和昨天辰星科技发布的‘星图’系统有很高的相似度。请问启元的方案是独立研发的吗?”
赵康的笑容僵了一瞬,随即恢复如常。“智能调度领域的基础架构有共通之处,这是行业共识。我们的核心算法是完全自主知识产权的。”
记者低头在手机上点了几下,又抬起头:“可是辰星那边公布的接口文档里,有一个叫‘异步批处理调度’的模块,参数命名格式和启元今天展示的几乎一模一样。包括一个特殊的哈希前缀‘XingTu_’。赵总,这个前缀看起来很像‘星图’的拼音。”
会场安静了两秒。赵康的手心开始冒汗,但他脸上的笑容撑住了。“这个……是巧合。我们的命名规范遵循行业通用标准。”
记者没再追问,但后排几个媒体的编辑已经在交头接耳。孙启明的笑容也淡了几分,侧头看了赵康一眼。
赵康硬着头皮把剩下的内容讲完,掌声比开场时稀疏了不少。沟通会结束后,孙启明把他叫到办公室,关上门。
“那个记者说的哈希前缀是怎么回事?”孙启明的声音不高,但压着一股火气。
赵康擦了擦额头:“旧版本代码里带出来的遗留命名,我回头让人改掉。”
“你跟我说实话。”孙启明盯着他,“‘启明’系统到底有多少是你们自己写的?”
赵康沉默了几秒。他想起自己从原公司服务器上拷出来的那些旧代码,想起沈亦舟离职那天凌晨三点写下的那行注释——“有些东西,他们拿得走,但带不走。”当时他觉得那只是一句酸话。现在他有点不确定了。
“大部分是自研的。”赵康说,声音比刚才低了不少。
孙启明看了他很久,最后摆了摆手。“下个月之前,把系统跑通。投资人那边要看到实际运行数据。如果跑不起来——”
他没说完,但赵康听懂了。
那天晚上,赵康加班到深夜。他把拷贝来的旧代码反复调试,想让它跑通一个最简单的调度任务。但每次运行到核心模块,系统都会报同样的错误:授权验证失败。
他盯着屏幕上那行红色的报错信息,忽然想起一件事。沈亦舟离职前,曾经在部门群里发过一份技术文档,里面提到“星图”的核心模块采用了一种自研的授权机制,密钥存储在独立的安全设备里。当时赵康没在意,让周明远把文档归档了事。
现在他终于明白那句话的意思了。授权机制的核心不在代码里,在沈亦舟的脑子里。
凌晨两点,赵康关掉电脑,靠在椅背上。窗外是城市的夜景,远处辰星大楼的灯光还亮着,像一颗不肯熄灭的星。他掏出手机,翻到沈亦舟的号码,拇指悬在拨号键上,停了很久。
最终他锁了屏,把手机扔在桌上,闭上了眼睛。办公室里只剩空调的低鸣声,和电脑主机风扇转动的嗡嗡声。
而在辰星大楼,沈亦舟的办公室里同样亮着灯。他坐在电脑前,看着“星图”上线首日的运行数据——调度效率提升百分之九十四,系统稳定性百分之九十九点九七,零故障运行十八个小时。
他打开那台旧笔记本电脑,在“起点”目录下新建了一个文档,写下第一行字:
“第一天。系统正常。有人睡不着了。”
然后他合上电脑,端起旧保温杯,关灯,走进夜色里。江面上的汽笛声远远传来,像一声低沉的笑。
第六章 裂痕
“星图”上线第二周,辰星科技的服务器开始收到来自全国各地的合作咨询。
陆沉把商务团队扩了一倍,专门对接“星图”的授权事宜。技术部这边也没闲着,沈亦舟带着周明远和苏瑶连轴转了两个星期,先后完成了三个大客户的定制化部署。周明远的黑眼圈熬出来了,但整个人像脱胎换骨一样,代码写得又快又稳,沈亦舟的批注从密密麻麻变成了偶尔一两句。
苏瑶有天中午吃饭的时候说:“明远,你最近写代码的样子,有点像沈哥了。”
周明远差点被饭噎住:“我哪敢跟沈哥比。”
“不是说水平。”苏瑶用筷子点了点他,“是那个劲。以前你在原公司写代码总像在交作业,现在写代码像在修自己的东西。”
周明远愣了一下,低头扒了两口饭,没说话。但他心里清楚苏瑶说得对。在辰星的这一个月,比他过去四年学到的都多。沈亦舟从来不教他“应该怎么做”,只在他卡住的时候丢过来一句“想想为什么”,然后就转身走了。等他终于想通,回头去看沈亦舟留下的批注,才发现每一句都精准地踩在他思维拐弯的那个点上。
这天下午,沈亦舟正在会议室里和一个客户开视频会,周明远的手机震了。他看了一眼来电显示,是个陌生号码,归属地显示的是他原来公司所在的城市。他犹豫了一下,挂掉了。过了两分钟,一条短信进来:
“明远,我是张一鸣。方便说话吗?”
张一鸣。原技术部的老同事,比周明远早两年入职,主要负责“星图”项目的测试工作。沈亦舟被裁的时候,张一鸣还在职,后来赵康去了启元科技,张一鸣也跟着过去了。
周明远拿着手机走到消防楼梯,回拨过去。电话响了一声就被接起来,张一鸣的声音压得很低,像在躲着什么人。
“明远,你现在方便吗?”
“你说。”
张一鸣停顿了几秒,像是在组织语言。“启元这边出事了。赵康让我们加班加点赶‘启明’系统的进度,但核心模块死活跑不起来。他昨天发了火,把责任推给测试组,说我们测试用例覆盖不全。然后——”张一鸣的声音又低了几分,“他把沈哥原来写的那套测试框架整个拷过来,让我们改个名字直接用。”
周明远皱起眉:“那套框架是沈哥在职期间写的,版权属于原公司,赵康没有权利——”
“我知道。”张一鸣打断他,“但赵康说这是‘公司资产’,他有权处置。而且他把框架里所有带‘沈亦舟’字样的注释全部删了,改成了‘启元科技测试组’。明远,我干这行快十年了,从来没觉得这么丢人过。”
周明远攥着手机,指关节发白。“你跟我说这些,是想让我做什么?”
电话那头沉默了很久。张一鸣再开口的时候,声音里带着一种压了很久的疲惫:“我不想干了。但直接辞职的话,赵康会拿竞业协议卡我。明远,你帮我问问沈哥,他那边……还要人吗?”
周明远回到办公区的时候,沈亦舟的视频会刚好结束。他站在沈亦舟办公室门口,敲了敲门框。沈亦舟抬头看了他一眼,大概是从他脸上看出了什么,直接说:“进来,关门。”
周明远把张一鸣的话原原本本复述了一遍。沈亦舟听完,没有立刻说话。他端起保温杯喝了一口水,目光落在桌面上那台旧笔记本电脑上。
“测试框架的事,赵康确实做得出来。”沈亦舟终于开口,语气淡淡的,“那套框架是我在原公司写的,用的是工作时间,严格来说版权属于原公司。但原公司已经把它连同‘星图’项目的所有权一起划给我了,合同上写得清清楚楚。”
周明远眼睛一亮:“那赵康就是侵权。”
“是侵权。”沈亦舟点了一下头,“但现在起诉他,费时费力。而且张一鸣还在那边,一旦撕破脸,他会被竞业协议拖住。”
他打开笔记本电脑,翻到“证据”文件夹,在里面新建了一个子目录,命名为“测试框架侵权”。然后把张一鸣刚才说的情况简要记录进去,附上了时间、地点和陈述人。
“让张一鸣先稳住。”沈亦舟合上电脑,“他不用急着辞职。帮我做一件事——把赵康让他改的那套测试框架的代码,悄悄拷一份出来。不用完整版,核心的测试用例部分就行。”
周明远点头,转身要走。沈亦舟叫住他:“明远。”
“嗯?”
“张一鸣能给你打这个电话,说明他信你。”沈亦舟看着他,目光里有一种很淡的、几乎看不出来的暖意,“你以前在原公司,人缘不错。”
周明远愣了一秒,然后笑了。“那是因为我干活慢,谁找我帮忙我都接。不像沈哥你,以前谁找你你都只说‘好’或者‘嗯’。”
沈亦舟挑了挑眉,没接话,低头继续看屏幕。周明远走出去,把门带上。他站在走廊上深吸了一口气,掏出手机给张一鸣回了条消息:“稳住。把东西拷好,等我通知。”
发完消息,他抬头看向办公区。苏瑶正对着屏幕皱眉,大概是遇到了什么难缠的bug。周明远走过去,拍了拍她的肩:“哪块出问题了?”
苏瑶指了指屏幕上一段报错:“并发场景下有个资源竞争的问题,我调了两个小时了。”
周明远拉过一把椅子坐下,凑近看代码。过了几分钟,他指着其中一个函数说:“这里加个读写锁,把临界区缩小到最小范围。试试。”
苏瑶改了几行,重新跑测试。绿色通过。
她转过头看周明远,眼神有点复杂:“你什么时候变得这么利索了?”
周明远靠在椅背上,想起沈亦舟那句“想想为什么”。他笑了笑:“可能……开窍了吧。”
启元科技这边的气氛越来越紧张。
赵康把测试组和开发组的人分成两班倒,他自己也连着睡了三天的办公室沙发。“启明”系统距离孙启明给的最后期限只剩两周,但核心调度模块依然跑不通。每次运行到授权验证环节,系统都会弹出一模一样的红色报错。
更让他烦躁的是,辰星那边“星图”的上线数据每天都在刷新。行业媒体的报道一篇接一篇,投资人的电话越来越难接,孙启明看他的眼神从期待变成了审视,最近几天已经带着明显的不耐烦。
张一鸣就是在这样的气氛下,趁一次深夜加班的时候,把赵康改过的测试框架代码拷进了自己的移动硬盘。
他做得不算高明,但赵康那几天忙得焦头烂额,根本没注意到。张一鸣把东西拷完,给周明远发了条消息:“拿到了。下一步?”
周明远把消息转给沈亦舟。沈亦舟看完,回了一个字:“等。”
张一鸣等了三天。第四天上午,赵康在晨会上宣布了一件事:启元科技已经向法院递交了诉状,起诉辰星科技“星图”系统侵犯启元科技的知识产权。
会议室里一片安静。张一鸣几乎以为自己听错了。
赵康站在白板前面,表情严肃但眼底藏着一丝得意。“我们有充分的证据证明,‘星图’系统的底层架构和‘启明’高度相似。这是恶意的技术抄袭。”
张一鸣低头看手机,手指在屏幕上来回滑动。他不敢抬头,怕自己的表情出卖了心里的愤怒。赵康把沈亦舟的心血偷过来改了个名字,反过来倒打一耙。
当天中午,辰星科技收到法院传票的消息传遍了整个行业媒体圈。陆沉把传票拍在沈亦舟桌上,脸上的表情说不上是生气还是好笑。
“赵康起诉我们抄袭他?”陆沉在办公室里来回踱步,“这个人是不是疯了?”
沈亦舟拿起传票看了一眼,放下,神色平静。“他没疯。他在赌。”
“赌什么?”
“赌我们不愿意打官司。”沈亦舟靠进椅背,“打官司要时间、要精力、要公开核心代码做技术比对。他算准了创业公司耗不起这个。”
陆沉停下脚步:“那你打算怎么办?”
沈亦舟沉默了几秒。他打开那台旧笔记本电脑,翻到“证据”文件夹。里面已经存了四样东西:开发日志、版本记录、启元科技的异常访问日志、张一鸣提供的测试框架侵权证据。
他点开第一个文件夹,里面是几百个按日期排列的开发日志。从三年前第一天写“星图”第一行代码开始,每一天的工作内容、遇到的难题、解决的思路,全部有详细记录,每一条都带着时间戳。
“赵康想打官司。”沈亦舟合上电脑,看向陆沉,“那就打。我有三年的日志、完整的版本记录、代码签名时间戳,还有他侵犯我测试框架版权的直接证据。”
他站起来,走到落地窗前。窗外是五月的阳光,江面被照得白晃晃的,货轮拖着长长的尾迹驶向远方。
“他想赌我不敢公开。”沈亦舟的声音很轻,“那我就让他看看——一个沉默惯了的人,到底敢不敢。”
陆沉看着他,忽然笑了。“行。法务部全力配合你。这场官司,辰星陪你打到底。”
沈亦舟没有回头。他望着江面上那艘越来越小的货轮,想起三个月前走出原公司大楼的那个下午。那时候他什么都没要,没要赔偿,没要解释,甚至没要一个体面的告别。他只是安静地收拾了东西,安静地退出了群聊,安静地离开了那栋楼。
现在他终于明白,那天的沉默,是为了今天的开口。
第七章 开庭之前
起诉的消息传开之后,行业里炸了锅。
两家做智能调度系统的公司互相起诉,一方是刚上线就表现惊艳的“星图”,一方是赵康带着原班人马另起炉灶的“启明”。媒体嗅到了流量的味道,报道铺天盖地,标题一个比一个耸动。有的说“技术圈年度大戏”,有的说“前员工与原公司的恩怨情仇”,还有的自媒体直接写了个“沉默程序员的反击”,在网上转得到处都是。
周明远刷着手机,越看越兴奋:“沈哥,你看这篇,阅读量已经过十万了。”
沈亦舟正在和技术团队开复盘会,头也没抬:“别看那些。系统运行数据怎么样?”
苏瑶把平板递过来:“昨天全天零故障,响应时间稳定在四十毫秒以内。新增了三个客户,都是看了发布会找过来的。”
沈亦舟扫了一眼数据,点了一下头。“客户那边部署有没有遇到问题?”
“有一个。”苏瑶翻到另一页,“华东区那个客户,他们内部网络环境比较复杂,部署脚本跑了两遍才通。我让明远过去现场支持了一天。”
沈亦舟看向周明远:“现场情况怎么样?”
周明远收起手机,认真回答:“客户那边运维团队水平参差不齐,对容器化部署不熟悉。我给他们写了一份操作手册,把常见问题都列进去了。回来之后苏瑶又优化了部署脚本,加了环境检测和自动回滚。”
沈亦舟听完,沉默了两秒。“手册和脚本都发我一份。下次部署前,把这些做成标准包,所有客户通用。”
周明远点头,在笔记本上记了一笔。他现在已经习惯了沈亦舟的节奏——每件事都要沉淀成可复用的东西,不允许同样的坑踩第二次。
会议快结束的时候,陆沉推门进来,手里拿着一份文件。“法务那边把应诉方案做好了。沈亦舟,你出来一下。”
沈亦舟跟着陆沉走进隔壁的小会议室。陆沉关上门,把文件摊在桌上。“两件事。第一,法院定在下周四下午开庭,庭前调解安排在明天上午。第二——”他顿了一下,“赵康那边换了律师,新找的是一家专做知识产权案件的律所,据说收费不便宜。”
沈亦舟翻着应诉方案,目光在关键条款上停了一下。“孙启明在背后撑腰。”
“对。启元那边最近又融了一轮,钱到账了,孙启明想用这场官司把‘启明’系统的知名度打出去。哪怕最后输了,只要能在舆论上拖住我们几个月,对他来说就是赚。”
沈亦舟合上文件。“庭前调解,赵康会来吗?”
“应该会。法院要求双方当事人到场。”
沈亦舟想了一下。“好。我去。”
第二天上午,沈亦舟和陆沉一起去了法院。
庭前调解安排在法院三楼的一间调解室里。沈亦舟推门进去的时候,赵康已经坐在对面了。他旁边坐着一个四十来岁、西装笔挺的律师,桌上摊着一大摞材料。赵康看到沈亦舟进来,目光闪了一下,但很快恢复了平静。
调解员是个五十来岁的女法官,说话不急不缓。她先让双方陈述诉求。赵康的律师先开口,讲了一长串关于“启明”系统自主研发、知识产权被侵犯的说辞。沈亦舟安静地听着,没有打断。
轮到沈亦舟这边时,辰星的法务代表刚要说话,沈亦舟却先开了口。
“法官,我想先问对方一个问题。”
调解员看向赵康:“可以。”
沈亦舟从随身的帆布包里掏出那台旧笔记本电脑,打开,屏幕转向赵康。“赵总,你刚才说‘启明’系统的核心调度模块是你独立研发的。那我想请你解释一下——”
他点开一个文件,是“星图”两年前的一个版本。“这个版本的调度模块里,有一个叫‘XingTu_Core’的命名空间。后来你拷走的旧版本代码里,这个命名空间被改成了‘Qiming_Core’。但改的时候漏了一个地方——底层工具库的一个日志接口,里面还留着我当初写的原始路径。”
赵康的脸色变了。
沈亦舟又点开一个文件夹,里面是启元科技的异常访问日志。“这是‘星图’上线当天,启元科技从九点五十五分开始尝试访问我们API的记录。你们的请求参数里用了旧版本的接口格式,而那个接口格式只存在于我个人的开发日志里,从未对外发布过。”
调解室里安静得能听到空调的嗡鸣声。赵康的律师翻了翻手边的材料,表情有些僵硬。
沈亦舟合上电脑,看着赵康。“赵总,你想打官司,我奉陪。但我建议你先想清楚——一旦进入技术比对环节,法院会要求双方提供完整的开发日志和版本记录。我这边有从第一天到今天的全部记录,每一条都带时间戳。你那边——”
他停顿了一下,语气不重,但每个字都落得很稳。“你那边拿得出来吗?”
赵康没有说话。他的律师侧过头低声问了他几句,赵康的嘴唇动了动,最后只挤出一句:“我需要和当事人商量一下。”
调解员点了点头,宣布休庭十分钟。
赵康和律师走到走廊尽头,声音压得很低但语速很快。沈亦舟站在调解室门口,靠着墙,端着那个旧保温杯喝了一口水。陆沉走过来,拍了拍他的肩,什么也没说,但脸上的表情已经说明了一切。
十分钟后,赵康的律师回到调解室,表示需要更多时间准备材料,申请延期开庭。调解员看了看沈亦舟这边,辰星的法务代表点头同意。
走出法院大门的时候,五月的阳光明晃晃地铺在台阶上。赵康站在台阶下面,背对着沈亦舟,肩膀微微塌着。他比以前瘦了不少,西装穿在身上有些空荡。
沈亦舟从他身边走过,没有停步。但走出几步之后,他忽然说了一句话,声音不大,刚好能被赵康听到。
“赵总,你拷走的那份旧代码里,有一个心跳接口。每次系统启动,都会发一条记录出来。”
赵康猛地转身,瞪大眼睛。
沈亦舟没有回头,继续往停车场走。陆沉跟在旁边,憋着笑低声问:“你故意的?”
沈亦舟拉开车门,坐进副驾驶。“让他知道,他做的每一件事,我都看得见。”
车子发动,驶出法院大门。沈亦舟靠在椅背上,看着窗外掠过的街景。手机震了一下,是周明远发来的消息:“沈哥,张一鸣刚才联系我,说赵康回公司之后发了一通火,然后把所有人都赶出了办公室,自己关在里面到现在没出来。”
沈亦舟盯着屏幕看了两秒,回了一句:“让张一鸣稳住。快了。”
他收起手机,闭上眼睛。车子驶上跨江大桥,江风从半开的车窗灌进来,带着湿润的水汽。远处,辰星大楼的轮廓在阳光下清晰而明亮。
“星图”的官司还没结束,但沈亦舟知道,这场仗已经赢了一半。剩下的那一半,他打算留给赵康自己选——是继续硬撑到底,还是把该还的东西还回来。
而他手里,还攥着最后一张牌没有出。那张牌藏在旧笔记本电脑最深的那个文件夹里,文件名只有两个字:“原点”。
第八章 原点
赵康把自己关在办公室里整整一个下午。
孙启明打了七个电话,他一个都没接。窗外的天色从明亮的午后变成灰蒙蒙的傍晚,办公室里没开灯,电脑屏幕的蓝光映在他脸上,照出一层薄薄的油光和眼下的青黑。
他盯着屏幕上的代码编辑器。光标在一个文件的开头闪烁,那是他从原公司服务器上拷出来的“星图”旧版本源码。他翻到最底层工具库的位置,找到沈亦舟说的那个日志接口。果然,里面有一行极不起眼的代码:
upload_heartbeat(server=“private.pyserver.net”, path=“/xingtu/log”)
赵康盯着那行代码,手指悬在键盘上,很久没有动。他试着把那行代码删掉,保存,重新编译。系统编译通过,但启动的时候弹出一个新的警告框:“核心授权验证失败。请联系系统架构师。”
他把警告框关掉,重新编译了一次。同样的警告。第三次,第四次,第五次。每一次都一模一样,红色的字刺眼地钉在屏幕中央,像一扇永远推不开的门。
赵康终于放弃了。他靠在椅背上,盯着天花板上那盏没开的日光灯,脑子里一片空白。三年前“星图”立项的时候,他在周会上慷慨激昂地讲了一个小时,说要做一个“改变行业格局”的系统。但他心里清楚,真正在改变格局的,从来都是沈亦舟。他只是那个站在台前、把别人的成果包装成自己功劳的人。
手机又响了。这次是张一鸣打来的。赵康犹豫了一下,接了。
“赵总,测试组那边……明天的进度汇报,还做吗?”
赵康沉默了很长时间。张一鸣在电话那头也不敢说话,只能听到他粗重的呼吸声。
“不做了。”赵康终于开口,声音沙哑得几乎听不出来,“把所有人叫到大会议室。明天上午九点,我有话要说。”
张一鸣应了一声,挂了电话。赵康把手机扔在桌上,打开抽屉,从最里面摸出一包烟。他戒烟三年了,但此刻他急需点什么来填满胸口那个空荡荡的洞。打火机打了三次才点着,他深吸一口,呛得直咳嗽。
烟雾在黑暗的办公室里缓缓散开,像某种缓慢的溃败。
第二天上午九点,启元科技的大会议室里坐了二十多个人。张一鸣坐在最后一排,旁边是测试组的几个同事,大家脸上都是差不多的疲惫和茫然。赵康站在白板前面,西装没穿,只穿着一件皱巴巴的衬衫。
“各位。”赵康的声音比平时低了很多,也慢了很多,“‘启明’系统的事,我要跟大家说清楚。”
他停顿了一下,扫了一圈会议室里每个人的脸。“这套系统的核心架构,是从辰星科技的‘星图’系统拷贝过来的。拷贝的时候我没有获得授权,代码里的关键模块我也解不开。这段时间让大家加班加点,是在做一件从一开始就不可能完成的事。”
会议室里安静得吓人。有人低头看桌面,有人转头看窗外。张一鸣攥着笔的手松了松,又攥紧了。
“孙总那边,我会去说明情况。”赵康把白板上的架构图擦掉,动作很慢,像是用了很大的力气才抬起手臂。“启元这边后续怎么处理,等孙总决定。在这之前,所有人手上的‘启明’相关任务暂停。”
他把马克笔放在白板槽里,转身面对大家。“这几个月,辛苦你们了。对不起。”
最后三个字说出来的时候,赵康的声音压得很低,低到几乎听不见。但会议室里每个人都听到了。张一鸣看着赵康走出会议室的背影,忽然觉得他老了很多。原来那个在周会上拍桌子骂人、抢功劳时面不改色的赵总,此刻不过是一个肩膀垮下去的、疲惫的中年人。
当天下午,赵康向孙启明递交了辞呈。孙启明没有挽留,只是冷冷地说了一句“后续的法律问题你自己处理”,就让他出去了。
赵康收拾东西离开启元科技的时候,只带走了一个纸箱。里面有一台公司配的笔记本电脑、几本技术书籍、一个用了两年的马克杯,还有一份他三年前在原公司年会上拿到的“优秀管理者”奖状。他把纸箱放进后备箱,坐在驾驶座上,很久没有发动车子。
手机屏幕亮了一下,是法院的通知:启元科技撤回了对辰星科技的起诉。
赵康盯着那行字看了几秒,锁了屏,发动车子。他开上跨江大桥的时候,正好看见辰星大楼在江对岸矗立着,玻璃幕墙反射着午后的阳光。他想起沈亦舟那天在法院门口说的话——“你拷走的那份旧代码里,有一个心跳接口。”
赵康苦笑了一声。他把车窗摇下来,五月的风灌进来,吹得他眼睛有些发酸。他忽然想起三年前沈亦舟刚入职那天,HR领着一个穿旧格子衫的年轻人走到他面前说:“赵总,这是新来的后端开发,沈亦舟。”那个年轻人冲他点了点头,说了一句“赵总好”,然后就安静地跟着HR去了工位。
那天赵康根本没记住沈亦舟长什么样。他当时正在打电话跟集团要预算,只挥了挥手让HR把人领走。等他真正注意到沈亦舟的时候,已经是两年后,“星图”项目进入核心开发阶段,整个技术部只有沈亦舟一个人能搞定调度模块的性能问题。
太晚了。赵康想。从一开始,他就没看清沈亦舟的价值。他把沈亦舟当成一个好用但不重要的工具,用完了就放在角落,需要了再拿出来。他从来没问过沈亦舟想要什么,也从来不知道沈亦舟真正在乎的是什么。
车子驶过跨江大桥,辰星大楼渐渐从后视镜里变小,最终消失在视线之外。
赵康撤诉的消息传到辰星的时候,周明远正在和团队一起做新客户的环境适配。他看了一眼手机,差点从椅子上跳起来。
“沈哥!赵康撤诉了!”
办公区里响起一阵欢呼。苏瑶从工位上站起来,长长地伸了个懒腰。几个同事围到一起,有人提议晚上聚餐庆祝。周明远转头去找沈亦舟,发现他站在办公室门口,手里端着那个旧保温杯,神色平静。
“沈哥,赵康撤诉了!”周明远又重复了一遍,声音里压不住兴奋。
沈亦舟点了一下头。“知道了。”
周明远愣了一下:“你……你不高兴?”
“高兴。”沈亦舟说,语气和平时没什么两样,“但‘星图’的下一版迭代计划还没做完。新客户的环境适配方案下周之前要交。你们几个——”
他环视了一圈办公区里正在庆祝的同事。“今晚聚餐可以,明天上午九点准时到岗。谁迟到谁请全组喝咖啡。”
大家笑着应了。沈亦舟转身回办公室,周明远跟在后面进去,把门带上。
“沈哥,那个‘原点’文件夹,到底是什么?”
沈亦舟坐回电脑前,看了周明远一眼。他沉默了几秒,然后打开那台旧笔记本电脑,翻到“原点”文件夹,双击打开。里面只有一个文件,文件名是“给三年后的自己”。
周明远凑过去看。那是一封信,写于三年前,“星图”项目立项的那一天。
“今天是‘星图’立项的第一天。赵康在周会上说要做一个改变行业格局的系统。我不知道这个系统最后能不能做成,也不知道自己能在这个项目里待多久。但我决定从今天开始记录所有的工作日志,保留每一个版本,存好每一行关键代码的签名。如果有一天我被迫离开,这些东西会证明——有些东西,是我做的。”
信很短,后面还有几行:
“给三年后的自己:如果你还在写代码,说明你没有放弃。如果你已经离开了,说明你找到了更好的路。无论哪种,都不要回头。往前走。”
周明远看完,喉咙有些发紧。他转头看沈亦舟,发现他正望着窗外。五月的阳光从落地窗涌进来,把他整个人照得通透。
“沈哥,你三年前就想到会有今天?”
沈亦舟收回目光。“没有。”他说,“我只是习惯把东西存好。我妈以前在工厂上班,厂子倒闭的时候,她干了二十年的工龄说没就没了。后来她跟我说,人得给自己留条后路。”
他把电脑合上,端起保温杯喝了一口水。“你今晚去聚餐吗?”
周明远点头:“去。沈哥你呢?”
“不去。”沈亦舟站起来,收拾桌面,“我今晚约了人。”
周明远没有多问。他走出办公室,带上门。透过百叶帘的缝隙,他看到沈亦舟站在窗前,手机贴在耳边,正在打电话。脸上的表情比平时柔和了一些,嘴角有一个极淡的弧度。
周明远想,沈哥约的,大概是他的家人吧。
沈亦舟确实在给家里打电话。
电话接通后,那头传来一个温和的女声:“亦舟?今天怎么想起打电话了?”
“妈。”沈亦舟靠在窗边,看着江面上来来往往的货轮,“之前跟你说的那个事,结束了。”
电话那头沉默了两秒。沈亦舟的母亲知道儿子被裁员的事,也知道他去了新公司。但她不知道“星图”的事,不知道那场官司,不知道赵康。沈亦舟从来不跟家里说这些。
“结束了就好。”母亲的声音很平静,“吃饭了吗?”
“吃了。”沈亦舟撒了个小谎。他其实还没吃,但他不想让母亲担心。
“你那个保温杯还在用吗?”母亲忽然问。
沈亦舟低头看了一眼手里那个旧保温杯,杯身上的漆掉了几块,露出银色的底。“在用。”
“那是我在厂子倒闭那年买的。用了二十年了。”母亲的声音里带着一丝笑意,“你走的时候非要带走,我说给你买个新的你也不要。”
沈亦舟没有接话。他握着那个保温杯,杯壁上残留的温度透过掌心传进来,和母亲的声音一起,填满了胸口某个一直空着的地方。
“妈,我下个月回去看你。”
“好。别买那些花里胡哨的东西,带点水果就行。”
沈亦舟应了一声,挂了电话。他把保温杯放在桌上,重新打开笔记本电脑。屏幕上,“星图”的监控面板还在安静地运行着。今天的运行数据又是一条漂亮的曲线,调度效率稳定在百分之九十五以上。
他打开“原点”文件夹,把那封信复制了一份,放到“证据”文件夹旁边。然后新建了一个文档,标题写的是:“第二封信——给三年后的自己。”
光标在空白页上闪了一下。沈亦舟想了想,敲下第一行字:
“今天是‘星图’上线的第二十三天。官司结束了。系统运行正常。周明远和苏瑶都能独当一面了。赵康走了,不知道去了哪里。启元科技大概撑不了多久。”
他停了一下,又打了一行:
“妈让我下个月回去。我打算带点水果。”
然后他合上电脑,关灯,走出办公室。办公区的灯已经灭了,周明远他们大概已经出发去聚餐了。沈亦舟走进电梯,按下下行键。数字从22跳到21,20,19……和三个月前那天一模一样。
但这一次,电梯门打开的时候,外面站着一个人。
苏瑶抱着笔记本电脑,站在一楼大堂里,看到沈亦舟出来,冲他挥了挥手。“沈哥,我有个想法,关于下一版迭代的。你现在有空吗?”
沈亦舟看了她一眼。灯光下,苏瑶的眼睛亮亮的,和三个月前在咖啡馆里那个疲惫的、哭过的女孩判若两人。
“有。”他说。
两人在大堂的休息区坐下来,苏瑶打开电脑,指着屏幕上的草图开始讲。沈亦舟听着,时不时点一下头。窗外,五月的夜风暖融融的,江面上的灯光倒影碎成一片一片,随着波浪轻轻摇晃。
沈亦舟端起保温杯喝了一口水。杯子里是苏瑶刚才顺手帮他接的热水,温度刚好。
远处,辰星大楼的灯一盏一盏地亮着,像某种安静的、持续生长的东西。
第九章 新的枝节
赵康离开启元科技后的第三个星期,孙启明把“启明”项目彻底关停了。
消息是张一鸣告诉周明远的。启元那边裁掉了整个技术团队,只保留了几个商务人员处理善后。张一鸣拿了赔偿金,在家歇了几天,然后给周明远打了电话。
“明远,沈哥那边……还缺人吗?”
周明远把这话转给沈亦舟的时候,沈亦舟正对着“星图”下一版的架构图沉思。他听完,没怎么犹豫。“让他来。测试组正好缺一个负责人。”
张一鸣入职那天,沈亦舟破天荒地到前台去接了他。张一鸣受宠若惊,背着包跟在沈亦舟后面走进办公区,一路上眼睛都不够用。辰星的办公区和原公司完全不同——没有格子间,没有等级分明的区域划分,所有人都在一个开放空间里,白板上画满了各种草图和公式,零食区的架子上堆着成箱的方便面和咖啡。
“沈哥,这儿……挺不一样的。”张一鸣小声说。
沈亦舟把他领到测试组的工位前。“你的组员下周到齐。先把‘星图’的自动化测试框架搭起来,原来那套我改过一些,你重新写一版。”
张一鸣打开电脑,屏幕上已经放好了文档和开发环境。他滑动鼠标,发现每一份文档都标注得极其详细,连常见问题的解决方法都列好了。文档的修改记录显示,最后一次更新是今天早上六点。
张一鸣转头看沈亦舟,他已经走远了,只留下一个穿着旧衬衫的背影。
当天下午,周明远带着张一鸣去食堂吃饭。两个人端着餐盘找了个角落坐下。张一鸣吃了两口,忽然放下筷子。
“明远,赵康的事……你知道吗?”
周明远顿了一下。“什么事?”
“他离开启元之后,去了南方一个小城市。我听以前的同事说,他在那边一家小软件公司做技术顾问,工资不到原来的三分之一。”张一鸣的声音有些复杂,“前几天他给我打了个电话,问我现在在哪。我说在辰星。他沉默了好久,然后说了一句‘好好干’,就挂了。”
周明远夹菜的手停在半空。他想起赵康在调解室里的样子,想起那个肩膀垮下去的中年人。说实话,他对赵康没有太多同情,但他也谈不上恨。赵康做错了很多事,但最终他选择了撤诉,选择了在会议室里对所有人说“对不起”,选择了放弃硬撑。
“沈哥知道吗?”周明远问。
张一鸣摇头:“我没跟他说。”
周明远想了一下。“不用说了。沈哥大概早就知道了。”
张一鸣愣了一下,随即明白过来。沈亦舟什么都知道,只是他从来不主动提。他做事的风格一贯如此——把该做的事做完,把该留的证据留好,然后往前走,不回头。
“星图”上线满一个月的当天,辰星科技签下了第一个海外客户。
对方是一家总部在新加坡的物流公司,业务覆盖东南亚六个国家,调度系统的效率直接关系到他们的核心竞争力。他们的技术团队花了整整两周时间测试“星图”的各项指标,最终由CTO亲自拍板签约。
陆沉把这个消息在全员会上宣布的时候,办公区里响起了经久不息的掌声。沈亦舟坐在角落里,手里转着一支笔,脸上没什么特别的表情。但周明远注意到,他的笔转得比平时快了一些。
会后,陆沉把沈亦舟叫到办公室。“新加坡那边希望我们派人过去做现场部署和技术培训。我想让你带队去,大概两周。”
沈亦舟想了一下。“我带周明远去。他需要见见真正的客户现场。”
陆沉点头。“行。签证和行程我让行政安排。”
沈亦舟站起来要走,陆沉叫住他。“还有一件事。前几天有个投资方问我,‘星图’的核心技术到底掌握在谁手里。我告诉他们,知识产权在你个人名下,辰星拥有独家商业授权。”
沈亦舟停下脚步,转过身。
“他们问我,你为什么不直接把知识产权卖给辰星,拿一笔大的。”陆沉靠在椅背上,看着沈亦舟,“我说,这个问题你得自己问他。”
沈亦舟沉默了几秒。“你怎么回答的?”
“我说——”陆沉笑了一下,“沈亦舟这个人,卖什么都不会卖自己写的东西。”
沈亦舟没说话,但嘴角弯了一个很浅的弧度。他拉开办公室的门,走了出去。
去新加坡的前一天晚上,沈亦舟回了趟家。
母亲住在城郊一个老小区里,房子不大,收拾得干干净净。沈亦舟到的时候已经快七点了,母亲在厨房里热菜,灶台上的锅里咕嘟咕嘟冒着热气。沈亦舟站在厨房门口,看着母亲微微佝偻的背影,忽然发现她的头发比自己记忆中白了很多。
“站着干什么,把碗筷摆上。”母亲头也没回地说。
沈亦舟应了一声,从碗柜里拿出两副碗筷。桌上摆了三个菜,都是他小时候爱吃的。红烧肉、炒青菜、西红柿鸡蛋汤。母亲把最后一盘菜端上桌,解下围裙,在他对面坐下来。
“你瘦了。”母亲看着他,“是不是又不好好吃饭?”
“有好好吃。”沈亦舟夹了一块红烧肉放进嘴里,和记忆里一模一样的味道。
母亲看着他吃了一会儿,忽然问:“你那个新公司,做得怎么样?”
“还行。”沈亦舟又夹了一筷子青菜,“签了一个国外的客户,明天要过去一趟。”
母亲的眼神亮了一下。“国外?那要坐飞机吧?”
“嗯。新加坡。”
母亲点点头,低头扒了两口饭。过了会儿又抬起头:“你爸要是还在,看到你现在这样,肯定高兴。”
沈亦舟握着筷子的手顿了一下。父亲在他高中的时候因病去世,母亲一个人在工厂里干了十年把他供到大学毕业。那些年母亲每天早出晚归,回家的时候手上全是机油味,但她从来没有跟沈亦舟抱怨过一句。
“妈。”沈亦舟放下筷子,“我那个保温杯,是你在厂子倒闭那年买的?”
母亲愣了一下,然后笑了。“你还记得啊。那年厂子不行了,最后一个月工资发了八百块。我拿着钱去街上,想给你买点什么。路过一个杂货店,看到那个保温杯,银色的,挺好看。我就想,你每天上学要走那么远的路,有个保温杯能喝口热水。”
沈亦舟低下头,看着碗里的米饭。他记得那个保温杯,从他高中到大学到工作,一直带在身边。杯身上的漆掉了一层又一层,但他从来没想过换掉。
“妈,那个厂子倒闭的时候,你干了多少年?”
“二十二年。”母亲说这个数字的时候语气很平淡,“十六岁进厂,三十八岁出来。出来的时候什么也没拿到,工龄买断的钱拖了两年才发下来。”
沈亦舟没有说话。他想起自己写在“原点”文件夹里的那句话——“人得给自己留条后路。”那是母亲教给他的,用二十二年的工龄和八百块的最后一笔工资。
吃完饭,沈亦舟帮母亲洗了碗。他走的时候,母亲从冰箱里拿出一个塑料袋,里面装着几个苹果。“路上吃。飞机上东西贵。”
沈亦舟接过来,拎在手里。他站在门口,看着母亲站在玄关的灯光里,头发花白,身形瘦小,脸上带着一种安安静静的牵挂。
“妈,我下个月回来。”
“好。别买那些花里胡哨的东西。”
沈亦舟转身下楼,走到小区门口的时候回头看了一眼。母亲还站在阳台上,朝他挥了挥手。他也挥了挥手,然后走进夜色里。
第二天上午,沈亦舟和周明远一起坐上了飞往新加坡的航班。
周明远第一次出国,从安检到登机一路都在紧张。沈亦舟坐在他旁边,把眼罩往脸上一扣,开始补觉。周明远看着他,有些无奈地打开笔记本,把客户的技术资料又过了一遍。
飞机起飞的时候,沈亦舟忽然开口:“别紧张。到了那边,你负责讲技术方案,我负责跟客户聊。”
周明远愣了一下:“我讲?”
“你写的前端接入方案,客户那边的CTO看过之后很满意。他说想听你亲自讲。”沈亦舟的眼罩没有摘,声音闷闷的,“你准备一下。”
周明远盯着沈亦舟的侧脸看了几秒,然后低头翻开了笔记本。他的方案文档已经被沈亦舟批注过三版,每一条批注都还在页边空白处,密密麻麻的,像某种无声的叮嘱。
飞机穿过云层,阳光从舷窗涌进来。周明远在批注的间隙里,忽然发现沈亦舟在最后一页写了一段话,以前他没注意到。
“明远:写方案和写代码一样,都是为了让别人能看懂、能用上。不要只顾着炫技。你最大的优点是踏实,最大的缺点是总觉得自己不够好。记住,方案是给人看的,代码是给人用的。把人放在前面。”
周明远合上笔记本,看着窗外白茫茫的云海。飞机正在万米高空上平稳地飞行,目的地是三千公里外一个他从未去过的国家。
他转过头,沈亦舟已经摘了眼罩,正看着窗外。两个人谁也没说话,但周明远忽然觉得,这三个月里所有的成长,都比不上此刻安静坐在这架飞机上的踏实感。
“沈哥。”周明远说。
“嗯。”
“谢谢你。”
沈亦舟没有转头,目光仍落在窗外那片无垠的云海上。过了几秒,他才开口,声音很轻。
“谢什么。是你自己走过来的。”
飞机继续向前,云海在下方铺展如雪原。周明远低头打开笔记本,在方案文档的最后一页,沈亦舟那段话的下面,用签字笔写了一句:
“把人放在前面。”
然后他合上电脑,靠在椅背上,也闭上了眼睛。
新加坡的客户现场部署比预想中顺利。
周明远花了三天时间完成了环境适配和系统对接,又花了两天给客户的技术团队做了三轮培训。沈亦舟大部分时间坐在旁边听,偶尔在周明远卡壳的时候补充一两句,其余时间都在和客户的CTO聊技术趋势和行业方向。
最后一天晚上,客户方请他们吃饭。席间,对方的CTO端起酒杯对沈亦舟说:“沈总,你们的系统我测了两周,是我见过的最扎实的架构。但我最好奇的是,你之前的公司怎么会放你走?”
沈亦舟端起茶杯和他碰了一下。“他们没放。我走的。”
CTO大笑,拍着沈亦舟的肩说了一串周明远没完全听懂的英文,大概意思是很高兴对手犯了这个错误。
回酒店的路上,周明远和沈亦舟并肩走在滨海湾的步道上。新加坡的夜晚湿热而明亮,远处的金沙酒店灯火通明,水面上倒映着整个城市的繁华。
“沈哥,你刚才跟那个CTO聊的时候,说了一句话我没太听懂。”周明远说,“你说‘技术本身没有价值,价值在于谁用它、怎么用’。什么意思?”
沈亦舟放慢脚步,看着水面上闪烁的灯光。“赵康拿走了我的代码,但他用不了。因为他只看得见代码,看不见代码背后的问题和需求。‘星图’能跑起来,不是因为算法多厉害,是因为我知道它要解决什么问题。”
他停了一下。“你写前端接入方案的时候,第二版比第一版快了三个小时。为什么?”
周明远想了想。“因为我第一版写的时候想着怎么把方案写得漂亮,第二版写的时候想着客户要什么。”
“就是这个意思。”沈亦舟往前走了一步,海风吹过来,把他衬衫的衣角掀起来。“技术是工具。谁用它、怎么用,才是值钱的地方。”
周明远站在原地,看着沈亦舟的背影。夜色里,那个穿着旧衬衫的身影被远处的灯光勾勒出一道柔和的边。他忽然想起几个月前在消防楼梯里接张一鸣电话的那个下午,想起自己在原公司写代码时那种交作业的心态。那时候他不懂什么叫“把人放在前面”,也不懂技术到底是为了什么。
现在他好像有点懂了。
他快步跟上去,和沈亦舟并肩走着。前面的路灯一盏接一盏地亮着,把两个人的影子拉得很长,铺在宽阔的步道上,一步一步,稳稳地伸向远处。
而在城市的另一头,赵康坐在南方小城一家小公司的办公室里,对着一台旧电脑修改一个不起眼的业务系统。屏幕上的代码很简单,远没有“星图”复杂。但他写得很慢,很仔细。每一行代码他都加了注释,每一个函数他都写了完整的文档说明。
改完最后一个模块,他保存文件,合上电脑。窗外是这座小城安静的夜晚,没有跨江大桥,没有高楼林立,只有几盏稀疏的路灯和偶尔驶过的电动车。
赵康靠在椅背上,闭上了眼睛。他想起沈亦舟说的那句话——“他做的每一件事,我都看得见。”现在他终于明白了。沈亦舟看得见的,从来不只是赵康的动作,还有他背后那些没说出口的东西。
赵康睁开眼睛,打开抽屉,从里面拿出一个笔记本。那是他在启元科技的时候记的工作笔记,上面写满了各种技术方案和项目计划。他翻到最后一页,那里只有一句话,是他离开启元那天写下的:
“有些东西,拿得走,带不走。”
他在那句话下面,用圆珠笔又添了一行:
“有些东西,带走了,才真正拥有。”
然后他合上笔记本,关灯,离开了办公室。小城的夜晚安静得只能听到远处偶尔传来的犬吠声。赵康走在回家的路上,抬头看了一眼天空。
这里的星星,比那座大城市里看到的要亮得多。
热门跟贴