清晨六点半的浦东民政局门口,队伍已经排了二十多米。四月的晨光里,新人们成双成对,有人穿着白衬衫,有人甚至穿着简易婚纱,脸上都带着相似的期待神情。
沈蔓穿着昨天在静安嘉里中心买的米白色衬衫裙——不是婚纱,更像参加技术面试的着装。手里拿着户口本、身份证,还有一份厚厚的婚前财产约定公证书。
程屿站在她身侧,黑色西装,白衬衫没打领带,手里拿着同样的文件袋。他看了眼手表:“我们预约了八点,还有一小时二十分钟。”
“排队的人都是预约的?”沈蔓有些惊讶。
“也有直接来的。”程屿递给她一杯热美式,“便利店买的。”
沈蔓接过咖啡。杯身上印着熟悉的便利店logo,温度刚好。她抿了一口,苦涩的滋味在舌尖化开,让她彻底清醒。
手机在包里震动。公司组的钉钉群消息——凌晨三点发的,@了她三次。
林薇薇:“@沈蔓 星图二期需求有重大变更,今早九点紧急会议,所有人必须参加。收到请回复。”
沈蔓看了眼时间:6:35。现在回复说今天请假领证?不,她不想给林薇薇这个机会。
她切换到和程屿的聊天窗口,打字:“领证后我能直接去公司吗?九点有紧急会议。”
程屿的手机震动,他看了一眼,眉头微皱:“今天领证,你可以请假。”
“请假会被扣奖金,而且林薇薇会借题发挥。”沈蔓快速回复,“我们速战速决,八点领完证,你送我去漕河泾,应该来得及。”
程屿看着她:“你确定要把结婚和会议安排在同一天?”
“时间管理的基本原则:并行处理相互独立的任务。”沈蔓收起手机,“领证和会议不冲突,只要调度合理。”
队伍缓缓前进。沈蔓打开笔记本电脑,蹲在路边开始修改会议材料。清晨的风还有些凉,她缩了缩肩膀。下一秒,一件西装外套披在她身上。
程屿的外套。带着很淡的雪松香气,还有他的体温。
“谢谢。”沈蔓没抬头,手指继续在键盘上飞舞。
“你在改什么?”
“林薇薇说的‘重大需求变更’。”沈蔓调出文档,“昨晚她发了新需求文档,把整个技术架构推翻了。原本我们用的React+Node.js微服务架构,她现在要求全部换成Vue+Java单体应用,理由是她咨询的‘专家’说这样性能更好。”
程屿扫了一眼屏幕:“从技术角度,这是开倒车。Vue和Java的组合在微服务场景下有明显的性能瓶颈。”
“而且变更通知是凌晨三点发的,会议是九点,她本没给技术评估的时间。”沈蔓保存文档,“所以我需要准备两份材料:一份是按她要求的重构方案,附上时间成本和风险分析;另一份是优化现有架构的方案,用数据证明现有架构可以满足新需求。”
“你想在会上公开反对她?”
“我想在会上展示专业判断。”沈蔓合上电脑,“至于她采不采纳,那是她的事。但至少,我要让所有人知道,这个决策的技术后果是什么。”
队伍排到他们了。工作人员核对预约信息,递给他们表格。结婚登记申请表,需要双方填写基本信息。
沈蔓在“职业”一栏写下:高级软件工程师。
程屿写下:人工智能公司创始人。
工作人员看了一眼:“两位都是做互联网的啊,同行好,有共同语言。”
沈蔓笑了笑,没说话。共同语言?代码算吗?
---
拍照环节。红色背景布前,两人并肩坐下。摄影师是个和蔼的大姐:“新郎新娘靠近一点,笑一笑。对,就像这样。”
沈蔓感觉到程屿的手臂轻轻挨着她的手臂。他的体温透过衬衫传递过来。
“姑娘别紧张,结婚是喜事。”摄影师按下快门。
闪光灯亮起的瞬间,沈蔓突然想起——这是她人生第一次和男人拍双人照。大学时和前男友都没拍过,因为她总说“浪费时间”。
照片很快打印出来。两张年轻的面孔,表情都算不上甜蜜,但有种奇特的和谐感。程屿侧脸线条分明,她直视镜头,眼神清澈冷静。
“挺配的。”摄影师把照片递给他们。
拿着照片去盖章。钢印落下,咔嚓一声,两本红色证书被推出来。
工作人员微笑着说:“恭喜二位,从现在起是合法夫妻了。祝你们白头偕老。”
沈蔓接过证书,翻开。她和程屿的名字并列,期是2023年4月12。
就这么简单。十分钟,九块九工本费,两个人的法律关系彻底改变。
走出民政局时,阳光已经完全洒下来了。程屿的车停在路边,黑色迈巴赫,司机已经下车开门。
“现在去你公司?”程屿问。
“对。”沈蔓看了眼时间,7:50,“九点会议,现在过去刚好。”
车上,她再次打开电脑。这次是检查邮件——果然,林薇薇在十分钟前又发了一封:“本次会议将决定组人员调整,请各位务必准时,迟到或缺席者视为自动放弃后续参与资格。”
裸的威胁。
沈蔓回复:“收到,准时参加。”然后她调出证据文件夹。
里面有林薇薇在过去六个月里所有技术决策失误的记录。还有最重要的——抢功的证据。Git提交记录、邮件沟通截图、会议纪要的篡改痕迹。
这些材料她准备了很久,但一直没拿出来。因为之前她觉得,撕破脸的成本太高。但现在不一样了。她有退路,有底气,有随时可以离开的选择。
车停在易达科技楼下时,8:35。
沈蔓解开安全带,程屿忽然开口:“需要我等你吗?”
“不用。”她拿起包和电脑,“会议不知道开多久。你先去公司吧,晚上……我回华山路那边。”
“好。”程屿顿了顿,“如果有需要,星图科技可以随时发正式函件,邀请你全职加入。”
沈蔓笑了:“谢谢。但我想先打完这一仗。”
---
易达科技18楼,会议室。
组的七个同事已经到齐了,个个脸色凝重。林薇薇坐在主位,今天穿了身正装,面前的笔记本开着,屏幕上显示着一份组织结构图。
“沈蔓,你迟到了。”林薇薇看了眼手表,“会议八点五十开始,现在是八点五十二。”
“抱歉,路上堵车。”沈蔓在空位坐下,打开电脑。
“好,人齐了,我们开始。”林薇薇清了清嗓子,“大家都知道,星图二期需求有重大调整。经过我与客户多轮沟通,他们认为我们现有的技术架构无法满足未来的扩展需求,因此决定——”
“林总监。”沈蔓打断她,“在讨论技术架构变更之前,我有个问题:这次需求变更,是客户正式提出的,还是我们单方面建议的?”
会议室安静下来。
林薇薇的表情僵了一瞬:“当然是客户提出的。昨晚我和星图的程总亲自沟通的。”
沈蔓点点头,打开邮件截图:“可我这里有一封昨晚十点星图技术负责人发来的邮件,明确表示‘现有架构完全满足二期需求,无需重构’。需要我投屏给大家看吗?”
空气凝固了。
林薇薇的手指收紧:“那是……那是技术人员的理解偏差。我和程总沟通的是战略层面的需求。”
“那么,能否请程总给我们发一封正式的需求变更函?”沈蔓语气平静,“毕竟这么大的架构调整,涉及至少两个月的工作量,如果没有客户书面确认,我们做完了客户不认怎么办?”
一个同事小声附和:“是啊林总监,上次A就是这样,我们改了三个月,最后客户说不是他们要的。”
林薇薇的脸色开始发白。但她很快调整:“这个我会处理。现在先讨论技术方案。沈蔓,既然你对现有架构这么有信心,那你来评估一下,按我的新方案,重构需要多久?”
这是陷阱。如果沈蔓说需要两个月,林薇薇会说“太长,客户等不了”。如果说一个月,那实际做起来肯定延期,又是她的责任。
沈蔓没有掉进去。她点开准备好的PPT:“我做了两个方案的详细对比。方案A,按您的要求重构,预估工期68个工作,风险点包括:技术栈切换的学习成本、现有代码迁移的兼容性问题、以及Vue+Java组合在微服务场景下的性能瓶颈。”
她切换下一页:“方案B,优化现有架构。通过引入WebAssembly优化前端性能,重构数据库查询,增加缓存层,预估工期22个工作,性能提升预计达到40%,且完全兼容现有代码。”
她把两份方案都投屏:“我建议选择方案B。如果林总监坚持方案A,需要书面说明技术选型理由,并承诺对可能产生的延期和超支负责。”
会议室里鸦雀无声。
所有人都听懂了——沈蔓不仅提出了替代方案,还把责任划分得清清楚楚。
林薇薇盯着屏幕,嘴唇抿成一条直线。过了足足一分钟,她才说:“技术方案需要综合评估。这样,沈蔓你先带两个人,做方案B的技术可行性验证。其他人继续按原计划开发。”
“验证需要多久?”沈蔓问。
“三天。周五下班前给我报告。”
“好。”沈蔓保存文档,“那我现在去写验证计划。”
会议草草结束。同事们陆续离开时,有人悄悄对沈蔓竖了大拇指。
回到工位,沈蔓刚坐下,林薇薇就跟过来了。
“沈蔓,你跟我来一下。”
两人走进小会议室。关上门,林薇薇的脸色彻底沉下来:“你今天是什么意思?在那么多人面前让我下不来台?”
“我只是提出专业建议。”沈蔓站得笔直,“林总监,如果您觉得我的方案有问题,我们可以公开讨论技术细节。”
“别跟我装。”林薇薇压低声音,“我知道你最近在找工作,简历都更新了。怎么,找到下家了,就敢跟我叫板了?”
沈蔓没否认:“我确实在考虑职业发展。但今天的事,和工作无关,只和技术有关。”
“好,好。”林薇薇冷笑,“那我们就说技术。你那个方案B,22个工作?本不可能。前端性能优化至少两周,数据库重构一周,缓存层集成又是一周。你当我是外行?”
“如果您看过我的详细排期就会知道。”沈蔓打开电脑,“前端优化,我打算用WebAssembly重写计算密集型的组件,这部分我有现成经验,预估五个工作。数据库重构主要是索引优化和查询重写,我已经分析了现有慢查询,预估四个工作。缓存层集成,用Redis集群,预估三个工作。剩下的是测试和部署。”
她把排期表推过去:“每个任务我都拆解到了具体的技术点和预估工时。如果您有异议,我们可以现在就评审。”
林薇薇看着那张详细到可怕的排期表,突然说不出话。
那张表不仅列出了任务,还标注了每个任务的依赖关系、风险点、备选方案。这本不是临时准备的。
“你……早就准备好了?”林薇薇的声音有些颤抖。
“我一直有做技术储备的习惯。”沈蔓合上电脑,“如果没其他事,我去工作了。周五我会提交验证报告。”
她走出会议室,留下林薇薇一个人站在里面。
---
回到工位,沈蔓喝了口水。手还在微微发抖——不是害怕,是肾上腺素的作用。这是她第一次在职场上这么正面、这么彻底地反击。
手机亮了。程屿发来消息:“董事会刚结束。你们公司确实要裁员,第一批名单下午公布。但你的名字不在里面——星图科技发了感谢函,点名表扬你的技术贡献,人事部不敢动你。”
沈蔓看着这条消息,明白了什么。
“是你让发的感谢函?”
“只是客观陈述事实。你确实解决了重大故障。”
“谢谢。”沈蔓打字,“但下次请提前告诉我。”
“我以为你更擅长应对突况。”
沈蔓笑了。是啊,她确实擅长。
下午两点,裁员名单公布。组里两个初级工程师被裁了,赔偿N+1。其他人暂时安全,但气氛更加压抑。
林薇薇一整个下午都没出办公室。
四点半,沈蔓完成了方案B的详细设计文档。她提交到Git仓库,开始收拾东西。
今天她想早点走。不是逃避,而是需要时间消化——消化早上领的那个红本本,消化今天这场硬仗,消化她突然改变的整个人生走向。
电梯下行时,手机又震了。这次是母亲。
“蔓蔓啊,你弟说联系不上你,怎么回事?”
“我把他拉黑了。”沈蔓走出电梯,“妈,爸的医药费我已经全交了,后续治疗费用我也会负责。但沈浩的彩礼,我不会出。”
“你这孩子怎么这么说话!他是你亲弟弟!”
“亲弟弟二十八岁,没工作,天天打麻将,却要我出二十万彩礼。”沈蔓走到写字楼外,“妈,我是女儿,不是提款机。”
电话那头沉默了很久。
“妈知道你辛苦……但咱们家就这条件,你弟弟要是娶不上媳妇,咱们家在镇上就抬不起头……”
“那就别抬头。”沈蔓说得很平静,“低着头过子,也比挺直腰杆乞讨强。妈,我每个月还是会给你和爸寄生活费,但沈浩的事,我不管了。”
挂断电话时,她的手在抖。
但这一次,不是因为肾上腺素。
而是因为终于说出了那些憋了四年的话。
---
路边停下一辆黑色轿车。司机下车为她开门:“沈小姐,程总让我接您。”
沈蔓上车。车里准备了矿泉水和湿纸巾,还有一小盒薄荷糖。
她剥了一颗糖放进嘴里,清凉的甜味在舌尖化开。
车驶向静安区。晚高峰的延安高架堵得水泄不通,但她不着急。她靠在座椅上,看着窗外流动的城市灯火。
手机震了一下。银行短信:一百万元已到账。
领证后的第一笔款。合同履行了。
沈蔓关掉短信,打开相册。早上拍的结婚证照片还在里面。她看着照片里的自己和程屿,两个人都没什么表情,像两个完成签约仪式的商业伙伴。
但仔细看,程屿的眼睛里有一丝很淡的、几乎看不见的笑意。
而她自己的嘴角,似乎也有一点点上扬的弧度。
也许,这段始于交易的关系,未必全是冰冷。
---
车开进华山路别墅时,天已经全黑了。庭院里的地灯亮着,暖黄色的光勾勒出枫树的轮廓。
沈蔓下车,走到门口。钥匙她今天早上才拿到,沉甸甸的一串。
开门,玄关的感应灯自动亮起。房子里很安静,只有远处传来隐约的钢琴声。
她换鞋上楼,经过书房时,门半开着。程屿在里面,对着电脑屏幕,戴着耳机,似乎在开视频会议。
沈蔓没打扰他,直接回了自己房间。
书桌上放着一个盒子。黑色丝绒,没有logo。她打开,里面是一支万宝龙的钢笔,笔身上刻着一行小字:To my technical partner.
技术合伙人。
这个称呼,比“妻子”更让她舒服。
盒子里还有一张卡片,程屿的字迹锋利工整:“庆祝开始。另:厨房有晚饭,微波炉热三分钟。”
沈蔓放下钢笔,下楼去厨房。果然,料理台上放着保鲜膜包好的饭菜:糖醋排骨,清炒豆苗,米饭。还有一小碗银耳汤,贴了标签“饭后喝”。
她热了饭菜,坐在餐厅里独自吃完。味道很好,比她点的外卖强太多。
洗完碗,她回到二楼。经过书房时,程屿的会议似乎结束了。他站在窗前,手里拿着一杯水。
“回来了。”他听见脚步声,转过身。
“嗯。”沈蔓停在门口,“谢谢你的笔。”
“工作需要好工具。”程屿喝了口水,“今天会议怎么样?”
“赢了第一回合。”沈蔓靠着门框,“林薇薇暂时没再找我麻烦。但我感觉,她不会善罢甘休。”
“需要帮忙就说。”
“暂时不用。”沈蔓顿了顿,“你吃晚饭了吗?”
“吃过了。”程屿走到书桌前,拿起文件,“周五晚宴的座位表出来了。你坐我旁边,对面是程瀚和他的妻子。程瀚右手边是他的技术顾问,交大计算机系的陈教授。”
“陈明远教授?”沈蔓问,“做推荐系统那个?”
“你认识?”
“读过他的论文。”沈蔓走进书房,“他三年前发在SIGIR上的那篇,关于多目标优化的,思路很好,但实验数据有明显问题。我复现过,得不出他宣称的结果。”
程屿的嘴角微微上扬:“周五你可以当面问他。”
“那会很尴尬。”沈蔓说,“但我可以问些别的问题。比如他最近在研究什么。”
“他在帮程瀚优化那个教育AI。”程屿递给她资料,“这是陈教授最近发表的预印本论文,还没正式发表。”
沈蔓接过资料,快速浏览。五分钟后,她抬起头:“这个框架……有问题。他假设用户反馈信号是独立同分布的,但实际教育场景中,学生的答题行为有很强的序列依赖性和状态转移性。这个假设会导致模型严重过拟合。”
“你能在周五之前,写一份简单的分析报告吗?”程屿问,“不需要太详细,只要指出核心问题,并提出一个改进方向。”
“可以。”沈蔓看了眼时间,“今晚就能写出来。不过,这样会不会太狠了?当众指出一个教授的研究缺陷。”
“学术讨论,就该求真。”程屿收起资料,“而且,如果他的研究真有价值,批评只会让它更好。如果没价值,那早点暴露问题,对所有人都好。”
沈蔓点点头。她喜欢这个逻辑——纯粹的技术逻辑。
“那我回房间工作了。”她转身要走。
“沈蔓。”程屿叫住她。
她回头。
“今天……辛苦了。”他说得有些生硬,“结婚第一天,让你一个人吃晚饭。”
沈蔓愣了愣,然后笑了:“你也辛苦了。愉快,程总。”
“愉快,沈工。”
---
她回到自己房间,打开电脑。夜色渐深,窗外梧桐树的影子在墙上轻轻摇晃。
新建文档,标题:《关于序列决策问题中独立同分布假设的局限性分析——以教育推荐系统为例》。
她开始写。手指敲击键盘的声音,在安静的夜里格外清晰。
楼下书房,程屿也重新坐回电脑前。屏幕上是一份股权转让协议草案,他需要在下周五前签完,才能获得母亲留下的那部分家族信托股权。
协议的最后,需要配偶签字确认。
他看着“配偶姓名”那一栏,第一次在上面打出了“沈蔓”两个字。
然后他打开另一个文件夹,里面是律师刚发来的背景调查报告更新。关于沈蔓父亲病情的详细诊断书,关于她弟弟沈浩最近在老家惹的事,关于她前男友赵明轩最近在接触程瀚……
豪门争斗,从来不会因为一张结婚证就停止。
但至少现在,他有了一位真正的“技术合伙人”。
楼上的键盘声还在持续。程屿倒了杯水,走上二楼,轻轻放在沈蔓房间门口的地上。
门缝下透出温暖的光。
他没有敲门,转身下楼。
而在房间里,沈蔓写完了报告的最后一行结论:
“……因此,在具有强状态转移特性的序列决策场景中,忽略马尔可夫性质而盲目采用独立同分布假设,将导致推荐系统的长期效用严重偏离理论预期。建议引入强化学习框架,对学生的知识状态转移过程进行显式建模。”
她保存文档,发送给程屿。
然后她打开银行APP,看着账户余额。除了今天到账的一百万,还有之前程屿转的预付款五十万,以及她自己这些年攒下的十几万。
一百六十五万。
她调出父亲的医疗费用清单,一项项核对。心脏搭桥手术三十万,ICU费用八万,后续康复治疗预估十五万……
她新建了一个表格:《家庭财务重整计划》。
第一步:设立父亲专项医疗基金,存入五十万,由信托机构托管。
第二步:给母亲每月生活费从三千提高到五千,但设立上限。
第三步:预留二十万应急资金。
第四步:剩余资金,一部分投入技术学习,一部分作为创业种子基金。
她算得很仔细,像优化一段代码。每一分钱都要有明确的用途,明确的预期回报。
做完这一切,已经深夜十一点。
沈蔓关了电脑,走到窗前。庭院里很安静,只有虫鸣。远处市中心的高楼依然灯火通明,那是另一个上海——她曾经拼命想挤进去,却始终隔着玻璃幕墙的上海。
而现在,她站在这里,站在这个曾经只出现在电影里的老洋房,手里握着足以改变命运的资源。
但心里清楚,这一切都建立在脆弱的契约之上。
三年。一千零九十五天。
她需要在契约结束前,建立起真正属于自己的东西——不是婚姻,不是豪宅,而是别人拿不走的技术能力、行业声誉、财务资本。
手机亮了一下。程屿回复了她发的报告:“分析到位。周五见机行事。”
沈蔓回复:“明白。”
然后她打开历,在4月14(周五)这一天标注:“程氏家族晚宴。技术战场。”
在4月15(周六)标注:“开始准备技术博客,第一篇主题:教育推荐系统的常见陷阱。”
在4月16(周)标注:“研究强化学习最新论文,为星图的下一个做准备。”
她把程排得满满当当。
因为在这个世界上,唯一不会背叛她的,只有她学进脑子里的知识,写进代码里的逻辑,和握在自己手里的选择权。
窗外传来汽车驶离的声音。程屿出去了?这么晚?
沈蔓没多想。她洗漱,换上睡衣,躺进陌生的床。床垫很舒服,枕头的高度刚刚好。
关灯前,她看了眼床头柜上的结婚证。红色的封皮在暖黄色台灯下,显得有些虚幻。
她伸手,把它放进抽屉里。
然后关灯,闭眼。
明天又是新的一天。有新的代码要写,新的问题要解决,新的战场要面对。
而她已经准备好了。