精彩小说尽在丛林文学网! 手机版

您的位置 : 丛林文学网 > 男生生活 > 代码三千行,我在离职当天删库跑路_精选章节

精选章节

更新时间:2026-11-11 21:25:48

张宇廷在公司干了八年,交易系统是他一个人搭的。年终奖发下来,六千。隔壁工位小李,泡茶陪领导打球,八万。张宇廷没吵没闹,把工牌往桌上一拍,走了。当天下午系统崩了,订单卡死,小李改三小时代码越改越崩。赵总打电话求他回来,张宇廷报了个价:时薪五千,先打钱。三天后老板亲自上门,张宇廷正在对面楼擦桌子,新公司营业执照刚下来。前公司三个大客户跟过来签合同,小李跑来面试,张宇廷看了一眼简历:“你连我写的注释都看不懂。”

1

年终奖到账短信弹出来的时候,张宇廷正在改小李昨天提交的代码。

六千。

他盯了两秒,把手机翻过去扣在桌上。屏幕还亮着,六千这个数字在桌面上投出一小块光。

“宇廷哥,你多少?”小李端着保温杯从工位后面探出头,杯子里泡着枸杞和西洋参。

张宇廷没抬头。“够吃顿饭。”

小李嘿嘿笑了一声,转回去跟旁边人嘀咕。张宇廷听见“八万”“赵总够意思”几个词飘过来。

他手上的代码是小李上周五提交的。一个订单状态同步的接口,小李把重试逻辑写成了死循环,没设退出条件。昨晚压测环境卡了两个小时,运维打电话问怎么回事,张宇廷爬起来远程连上去杀的进程。

他花了三分钟写了个补丁,把代码提交上去,备注就两个字:“修复。”

刚提交完,赵总从办公室出来,拍了拍手。

“各位,年终奖都到了吧?今年公司效益不错,赵总我替大家争取了——”他顿了一下,“特别是小李,今年进步很大,独立负责了好几个模块,大家多向小李学习。”

小李站起来鞠了个躬:“谢谢赵总栽培,谢谢大家。”

有人鼓掌。张宇廷也鼓了两下,手没碰出声。

赵总接着说:“宇廷啊,你那个述职PPT我看了,写得太简单了,明年注意一下,格局要打开。”

张宇廷点头。“好。”

王丽敏下班来接他,车停在园区门口。张宇廷拉开车门坐进去,王丽敏看了一眼他脸色,没问年终奖的事。

“我手上有个客户,”她打着方向盘汇入主路,“做跨境电商的,招架构师。我跟他们技术VP聊了,人家盯你两年了。”

“多少?”

“翻倍。期权另算。”

张宇廷看着窗外。“我再想想。”

“想什么?”

“交接没做。小李接不了。”

王丽敏没再说话。到家之后张宇廷进了书房,打开一个加密文件夹。里面是一个系统设计文档,三百多页,从交易链路到库存锁策略,每一个模块的架构逻辑都写得清清楚楚。

这个文件夹他从没给任何人看过。当年赵总催着上线,让他“先别管文档,跑起来再说”。他就真的没写过正式文档,只在关键代码里留了注释。

那些注释,小李上周刚在代码评审会上说“写得太烂,看不懂”。

张宇廷打开文档,翻到第一页,合上电脑,走出书房。王丽敏在客厅看电视,见他出来,拍了拍沙发。

“你那个系统,”她说,“离了你转得动吗?”

张宇廷坐下来,拿起茶几上的橘子剥了一个。“不知道。”

“你知道。”

他掰了一瓣橘子塞嘴里,嚼了两下。“转不动。”

第二天早上九点,张宇廷到公司,把工牌和电脑放在赵总桌上。

赵总正在喝茶,抬头看他。“什么意思?”

“离职。”

赵总放下茶杯,往椅背上一靠。“宇廷,你这是闹情绪。年终奖的事我可以解释——公司今年调整了考核方式,管理岗和技术岗不一样——”

“我没问年终奖。”

赵总脸上挂不住,手指敲了敲桌面。“行,你考虑清楚了?你这个岗位现在可替代性很强,小李来了之后——”

“让他接吧。”张宇廷把一张A4纸推过去。“交接文档,三天写完。”

赵总拿起来看了一眼,就一页半,标题写着《交易系统部署说明》。底下就几行:“数据库地址见配置文件。启动脚本在bin目录。日志在logs目录。”

“就这些?”

“核心逻辑当面交接。”张宇廷说,“三天后我走。”

赵总挥挥手。“行行行,赶紧交接。”

张宇廷回到工位,小李已经凑过来了。“宇廷哥,真走啊?”

“真走。”

“那系统怎么办?”

“你接。”

小李脸上笑容僵了一下。“我……我那模块还没捋清楚呢,赵总就让我——”

“三天。”张宇廷打开代码仓库,“我把部署说明写了,剩下的你问我。”

接下来三天,张宇廷每天正常上下班。小李问了他七八个问题,全是“这个接口返回什么格式”“那个字段什么意思”这种。张宇廷一个一个答了,答完把代码权限转给小李。

第三天下午,张宇廷把电脑交回IT部。小李跑过来说:“宇廷哥,赵总说让把你那个加密文件夹也交接一下。”

“里面是个人文档。”

“赵总说所有工作相关文件都要——”

“里面是我写的日记。”张宇廷看着他,“你要看?”

小李缩回去了。

张宇廷走出公司大门,王丽敏靠在车边等他。她递过来一杯冰美式,张宇廷接过来喝了一口。

“对面楼。”王丽敏指了指马路对面那栋写字楼,“七层,有个三十平的工位,月租三千八,我押一付三交了。”

张宇廷差点被咖啡呛到。“你交钱之前不跟我说一声?”

“跟你说你会同意?”

他想了想。“不会。”

“所以先斩后奏。”王丽敏拉开车门,“走,看看去。”

张宇廷上了车,掏出手机看了一眼。公司技术群里,小李刚发了一条消息:“系统已全量接管,感谢宇廷哥的耐心交接,后续有问题随时请教。”

底下赵总回了一个大拇指。

张宇廷锁屏,把手机扔到副驾座位上。王丽敏看了一眼他手机,没说话,发动了车子。

下午四点,张宇廷正在对面楼擦桌子。新工位只有一张桌一把椅,窗户朝北,看不到前公司那栋楼。王丽敏在楼下便利店买了两瓶水和一包纸巾送上来,刚进门,张宇廷手机响了。

来电显示:赵总。

他接起来。

“宇廷!你现在马上远程连一下,交易系统出问题了,订单全部卡在待支付状态,小李改了半天越改越——”

张宇廷把手机拿远了一点,赵总的声音还是从听筒里漏出来。王丽敏靠在门框上,抱着胳膊看他。

“赵总,”张宇廷打断他,“我离职手续下午四点已经走完了。”

“我知道我知道,紧急情况,算你加班,回头给你补——”

“加班得签合同。”张宇廷拿起桌上那瓶水拧开盖,“时薪五千,四小时起算,先打钱,后干活。”

电话那头安静了五秒。

“五千?你抢钱啊?”

“市场价。”张宇廷喝了一口水,“外面架构师咨询费一小时八百到一千二,我收五千是因为你系统等不起。你考虑一下,我这边还要擦桌子。”

又安静了三秒。

“账号发过来。”

张宇廷挂了电话,把银行账号发过去。王丽敏走过来看了一眼他的手机屏幕:“你真回去修?”

“钱到账就修。”

“修好了呢?”

张宇廷把手机放桌上,走到窗边往下看。楼下园区门口排着一溜车,都在等红灯。他看了一会儿,转过头。

“修好了,他们还会出问题。我拿钱办事,办完走人。”

手机震了一下。银行短信:到账两万。

张宇廷坐回电脑前,打开远程工具,连上了公司的跳板机。王丽敏搬了把椅子坐在旁边看。屏幕刷新,报错日志滚了一屏,红色一片。

张宇廷扫了一眼,手放在键盘上,没急着敲。

“看出来了吗?”王丽敏问。

他指着一行日志。“小李把分布式锁改成单机锁了。”

“什么意思?”

“意思是十个人同时下单,九个人会卡死。”他打开代码文件,翻到小李上周提交的那一版,鼠标停在几行注释上。

那些注释是他八个月前写的,清清楚楚标着:“此处必须用分布式锁,单机锁不支持多节点部署,会导致订单重复和超卖。”

小李把这行注释连同代码一起删了。提交记录写着:“优化锁策略,提升性能。”

张宇廷把代码改回来,提交,重启服务。又顺手把队列堵塞的积压订单清了,前后八分钟。系统恢复,订单开始正常流转。

他给赵总发了条消息:“修好了。两万刚好四小时,剩下时间有问题再找我,重新计时。”

赵总回了一条语音,张宇廷没点开,直接转文字:“还有没有别的地方要检查的?”

张宇廷打了四个字:“另算钱。”

发完把远程工具关了。

王丽敏从椅子上站起来,拿起他没喝完的那瓶水递过去。“恭喜张老板,第一笔收入到账。”

张宇廷接过水。“第二笔也快了。”

“谁?”

“等着看。”

话音刚落,微信弹出一条好友申请。备注写着:“张工你好,我是XX商城技术负责人陈涛,我们跟你们公司对接的接口今天出了点问题,听说你离职了?方便聊聊吗?”

张宇廷把手机递给王丽敏看了一眼。她看完笑了一声:“你那个‘另算钱’发出去才三分钟。”

“他等我走了才加我,说明盯我不是一天两天了。”

张宇廷通过申请,打了六个字:“明天来我公司谈。”

对面秒回:“你公司地址?”

张宇廷看了一眼窗外,指了指楼下园区大门。“就对面楼,七层,出了电梯右转,门口还挂着前一家公司的牌子,我明天换。”

发完他把手机往桌上一扔,靠着椅背伸了个懒腰。

王丽敏问他:“明天他来谈什么?”

“谈接口迁移。他那家店在我们平台一天流水三百万,系统这么搞下去撑不过这个月。”张宇廷拿起桌上的笔在指间转了一圈,“他要是把接口迁到我这边来,我收他接口维护费一年二十万,打折十五万。”

“你才刚注册公司。”

“客户不看公司大小,看能不能解决问题。”他把笔往桌上一放,“今天我能八分钟修好他们三小时搞不定的故障,明天我就能报这个价。”

手机又震了一下。赵总发了条微信:“宇廷,明天有时间来公司一趟吗?老板想跟你聊聊。”

张宇廷回:“聊什么?”

“回来上班的事,条件可以谈。”

张宇廷打完字没发,先给王丽敏看。她看了一眼,帮他删掉,重新打了一行:“明天下午三点,对面楼七层,过时不候。”

张宇廷看着她。“你这是让我摆架子。”

“你今天是甲方。”王丽敏把手机递回给他,“得让他们知道,现在谁求谁。”

张宇廷按了发送键。赵总秒回:“行,一定到。”

2

第二天早上八点,张宇廷到对面楼七层的时候,门口那块“极客科技”的牌子已经被人拆了一半,斜靠在墙上。

王丽敏站在梯子旁边,手里拿着一把螺丝刀。“旧牌子螺丝锈死了,拧不下来。你把它掰下来,我去楼下打印店做块新的。”

张宇廷把包放地上,双手握住牌子两边,脚蹬着墙,使劲一拽。铁皮牌子“哐”一声掉在地上,墙面上留了四个孔。

“新牌子十点能做好。”王丽敏下楼去了。

张宇廷把地上的牌子拖到楼道垃圾桶旁边,回屋打开电脑。还没坐稳,微信弹出一条消息,来自一个叫“陈涛-XX商城技术负责人”的人:“张工,我九点到,方便吗?”

张宇廷回了一个字:“来。”

九点差五分,电梯门开,陈涛拎着一个牛皮纸袋走出来。四十来岁,T恤牛仔裤,头发乱糟糟的,黑眼圈挂到颧骨。他身后跟了一个戴眼镜的年轻人,抱着笔记本电脑。

张宇廷站起来。“陈总。”

陈涛快步走过来握住他的手。“别叫陈总,叫老陈就行。”他把牛皮纸袋往桌上一放,“这是合同草稿,你先看一眼。”

张宇廷没接。“先说问题。”

“接口昨天挂了之后我们查了日志,你们平台返回的订单状态全是乱的。已经付款的显示未付,未付的显示已付,客服电话被打爆了。”陈涛把眼镜摘下来擦了擦,“我们技术排查了一晚上,发现是你们那边把订单号生成规则改了,我们的系统解析不了。”

张宇廷皱了皱眉。“订单号规则没改过。”

“你们新来的那个小李,上周提交的,把订单号从十八位改成了二十位,加了时间戳和随机数。”

张宇廷敲了两下键盘,打开前公司的代码仓库。他走之前给自己留了一个只读权限的后门,赵总不知道。翻到提交记录,小李上周五提交的那条写着:“订单号规范化改造,提升系统扩展性。”

他把代码拉下来看了一眼。原来十八位订单号,前八位日期,中间六位序列,后四位校验。小李全改成二十位,加了毫秒时间戳。下游所有对接方都没收到通知。

张宇廷关掉页面。“合同不用看了,我直接说条件。”

陈涛坐直了。“你说。”

“接口我重写一套,跟你们系统对接。按年收费,一年十五万,预付半年。”

陈涛身后的年轻人小声说了一句:“陈哥,十五万比我们现在的接口费贵了……”

陈涛抬手打断他。“张工,十五万我可以接受。但我有个条件——你多久能上线?”

“三天。”

“三天?”年轻人又开口了,“我们对接你们旧接口的团队排期都排了两个月……”

张宇廷看着他。“旧接口需要排期是因为那个团队有六个人互相等。我这边就我一个人,我说三天就是三天。”

陈涛盯着张宇廷看了五秒。“签。”

他从纸袋里抽出合同,翻到最后一页,掏出笔签了名字。张宇廷接过来扫了一眼金额和条款,也签了。

陈涛把合同收进纸袋,站起来握手。“昨天你八分钟修好系统,我就知道找对人了。你前公司那个小李,今天早上还在群里问我们能不能推迟接口迁移,说他们需要‘重新评估技术方案’。”

张宇廷没接话。

陈涛走到门口又回过头。“对了,有个事跟你说一声。你们前公司老板今天是不是要来?”

“三点。”

“他早上给我打电话了,问我能不能‘再给一次机会’,说他们内部管理调整已经完成,以后不会再出这种事。”陈涛笑了笑,“我跟他说,合同签完了,对接人是你。他沉默了半天,把电话挂了。”

陈涛走后,王丽敏拿着新做的牌子回来了。“极客科技信息技术有限公司”,黑底白字,亚克力材质。张宇廷接过来,踩着梯子拧螺丝,把新牌子挂上去。王丽敏在底下扶着梯子。

“陈涛签了?”

“签了。”

“多少?”

“十五万,预付七万五。”

王丽敏掏出手机算了一下。“房租三千八,水电宽带五百,办公桌椅一千二,打印机八百,注册资本认缴不用实掏。七万五够你烧半年。”

张宇廷从梯子上下来。“半年后呢?”

“半年后你要是还靠这十五万活着,说明你不行。”

张宇廷把螺丝刀扔进工具箱,拍了拍手上的灰。“三点赵总来,你别走。”

“我本来就不打算走。”王丽敏从包里掏出一袋面包,扔给他一个,“早上没吃饭吧?先垫一口。下午谈判,你今天是甲方,别露怯。”

三点整,电梯门开。赵总走在前面,后面跟着一个张宇廷没见过的人,五十来岁,戴金丝眼镜,穿深蓝西装,皮鞋锃亮。

赵总进门先环顾了一圈这个三十平的办公室,一张桌子两把椅子一个文件柜,墙上连幅画都没有。他嘴角动了一下,没笑出来。

“宇廷,这位是孙总,咱们公司董事长。”

孙总上前一步伸出手。“张宇廷,久仰。”声音很稳,握手力度不轻不重。

张宇廷跟他握了手。“坐。椅子只有两把,赵总站着?”

赵总脸色变了变。孙总摆摆手:“没事,我坐,你站着。”他拉了把椅子坐下来,把西装扣子解开。

“宇廷,我就不绕弯子了。”孙总把眼镜摘下来搁在桌上,“昨天的事赵总跟我说了,小李那孩子确实经验不足,我已经让他停职了。今天我来的意思就一个——你回来,技术中心你说了算,薪资你开。”

张宇廷靠在椅背上。“孙总,我公司已经注册了。”

“我知道,注册资金认缴,实际没掏钱。你这间办公室月租三千八,押一付三花了一万五。”孙总扫了一眼窗外,“你手上现在有陈涛那一个客户,十五万的合同。我可以说得更直接一点——你回来,我开年薪八十万,外加技术中心负责人的头衔。”

张宇廷没马上接话。王丽敏坐在旁边工位上,手里捏着一支笔,笔尖在桌上轻轻点了两下。

张宇廷看了她一眼,开口:“孙总,我手上有三家客户在谈。陈涛只是第一个。”

孙总眉毛抬了一下。“哪三家?”

“一家是做母婴用品的,一家是做生鲜的,都是你们平台排名前二十的商家。第三家还在接触,是做数码的。”

赵总在后面插嘴:“宇廷,你这属于挖公司墙角——”

孙总抬手拦住他。“让他们自己选,不算挖。”他转向张宇廷,“那你什么条件?”

“我不回去。但你们的系统我可以接过来维护,外包形式,按年收费。”

“多少?”

“一年四十万。包括系统稳定性维护、故障响应、下游商家接口对接。小李改过的所有模块全部回滚到我走之前的状态,重新做代码审查。”

赵总在后面算了一下:“四十万比养一个技术团队便宜……”

孙总打断他:“四十万可以。但我有一个附加条件。”

“你说。”

“你回来给技术团队做一次培训,两天的课,把你那个系统的架构逻辑讲清楚。我要保证以后不管谁走,系统不能垮。”

张宇廷想了想。“培训可以,另算。两天五万。”

赵总倒吸一口气。孙总笑了一声,把眼镜戴回去。“行。合同什么时候能签?”

“明天。我今晚出合同,你们明天看完没问题就签。”

孙总站起来,扣好西装扣子,伸出手。“宇廷,你比赵总说的聪明得多。”

张宇廷跟他握了手。“赵总只看了我三页PPT。”

孙总哈哈笑了一声,往门口走。赵总跟在后面,经过张宇廷身边时脚步顿了一下,嘴唇动了动,没说出话,走了。

电梯门关上之后,王丽敏把笔往桌上一扔。“四十万加五万培训费,你一天谈下来的比我半年工资还高。”

张宇廷靠着椅背。“你那个猎头客户呢?我说了明天出合同,你帮我找个模板。”

王丽敏掏出手机。“我早就找好了,在邮箱里存着。”她把手机屏幕给他看,“还有,母婴用品那家的技术负责人是我前同事,我昨晚已经跟她打过招呼了,她说明天上午来见你。”

张宇廷看着她。“你什么时候安排的?”

“你昨晚睡着之后。你以为我光坐着看电视?”

张宇廷没说话,从袋子里掏出面包咬了一口。王丽敏走过来把面包抢走,塞给他一盒还热乎的盒饭。“中午买的,别吃面包了。”

张宇廷打开盒饭盖子,红烧肉加青菜。他吃了一口,手机又响了。一个陌生号码,归属地显示广东。

他接起来。对面一个女声:“张工你好,我是生鲜那家公司的技术总监刘颖,陈涛把你推给我的。你明天下午有时间吗?我想当面聊。”

张宇廷咽下嘴里的饭。“有。下午两点,地址我发你。”

挂了电话,王丽敏问他:“生鲜那家自己找上来了?”

“陈涛推的。”

“你那个八分钟修故障的事,传得比你想象的快。”

张宇廷扒了两口饭,站起来走到窗户边上,往楼下看。对面楼底下,赵总和孙总刚走出园区大门。赵总在跟孙总说什么,手比划得很快。孙总听了几句,回了一句话,赵总不说了。

张宇廷拉上窗帘,回到桌前。“明天签合同,你跟我一起。”

“我去干什么?”

“你来当财务。钱打到你卡上,我信不过别人。”

王丽敏看着他。“你不怕我卷款跑了?”

“你跑了谁给我买盒饭。”

王丽敏笑了一声,从包里又掏出一份文件。“喏,公司对公账户开好了,法人是你,财务负责人填的我。今天上午我去银行办的。”

张宇廷接过来看了一眼。“你到底是猎头还是我秘书?”

“我哪边工资高就是哪边。”

3

第二天上午九点,王丽敏把合同模板打印出来放在桌上。张宇廷花了一个小时填金额、改条款、调付款节点,最后在乙方那栏签了名。

“孙总那边谁签字?”王丽敏把合同收进文件袋。

“赵总送过来。”张宇廷刚说完,电梯门开了。赵总一个人来的,手里拎着一个公文包,脸上挂着笑。

“宇廷,合同我带过来了,孙总签好字盖好章了。”他把文件袋放桌上,又从包里掏出一张支票,“预付款,二十万,你数一下。”

张宇廷接过支票看了一眼金额和印鉴,递给王丽敏。王丽敏对着光看了看,朝张宇廷点了点头。

张宇廷拿起笔在合同上签了名,留下一份,另一份推给赵总。“培训安排在下周三周四,两天,地点你们定,我过去讲。”

赵总把合同收进包里,没急着走,在椅子上坐下来。“宇廷,有个事想跟你商量。”

“说。”

“小李停职之后,他那摊子没人接。你能不能回来带一带?不用坐班,每周来两天就行,薪资按日算,一天三千。”

张宇廷没接话。王丽敏在旁边翻合同,头也没抬。“赵总,他昨天跟孙总谈的是外包维护,不包括驻场带人。你要加需求,得另签协议。”

赵总脸色僵了一下。“王……王小姐是吧?我不是那个意思,就是内部协调一下——”

“内部协调走内部流程。”王丽敏把合同收进文件柜,“他现在的身份是乙方,跟你们公司是合作关系。你要加服务内容,写进合同,盖章,走付款流程。口头商量的事我们不接。”

赵总看向张宇廷,张宇廷摊了摊手。“她管合同,我管技术。她说不接就是不接。”

赵总站起来,拎着包往门口走。“行,我回去跟孙总汇报一下,有消息再联系。”

电梯门关上之后,王丽敏从文件柜里抽出一张便利贴拍在桌上。“驻场带人一天三千,一个月来八天就是两万四,他真敢开口。”

张宇廷没说话。王丽敏看着他。“你心动了?”

“没有。”

“你犹豫了两秒。”

张宇廷把便利贴揭下来贴到电脑显示器边上。“我犹豫的是怎么回绝得让他以后不敢再提。你刚才那段话就挺好,以后这种事你来挡。”

下午两点,刘颖准时到了。四十出头,短发,背一个双肩包,进门先扫了一圈办公室环境,目光在张宇廷和王丽敏之间来回看了一眼。

“张工,王姐跟我说了你的事。”刘颖坐下来,从包里掏出一个U盘放在桌上,“长话短说,我们平台生鲜类目订单量是陈涛那边的两倍。你们前公司的接口现在每天出问题,我们技术团队四个人轮班盯,一个月了,盯不住。”

“什么问题?”

“库存数据延迟。下单扣了库存,后台没同步,导致超卖。上周一上午卖了三百单车厘子,实际库存只有一百二十单。赔了客户十八万。”

张宇廷把U盘插到电脑上,打开里面的日志文件。翻了十几页,停在一段报错上。

“你们调的是旧版库存接口?”

“对,你们去年给的技术文档就是这么写的。”

“去年是去年。今年三月系统重构过,库存接口拆成了三个,读写分离。旧接口只读,写操作全部走新接口。小李接手的那个文档没更新。”

刘颖脸色沉下来。“所以这一个月我们调的接口本身就不支持写操作?”

“对。你们写进去的库存数据全部堆在缓冲队列里,过了有效期自动丢弃。等于你们只扣了订单,没扣库存。”

刘颖深吸一口气,靠回椅背。“张工,开价吧。”

张宇廷伸出手指。“三件事。第一,接口迁移到我这边来,我重写一套,跟你们系统直接对接,一年二十万。第二,你们现有的库存数据我帮你恢复,把丢掉的扣减补上,一次性五万。第三,你们技术团队我来培训,两天,三万。总共二十八万。”

刘颖从包里掏出计算器按了几下。“二十八万比我养一个技术团队便宜,而且能解决超卖。”她抬起头,“但我有个条件——上线时间。我们下个月一号大促,你得在那之前搞定。”

“今天几号?”

“三号。”

“还有二十八天。”张宇廷打开日历看了一眼,“接口迁移十天,数据修复三天,培训两天,留十三天你们测试。够。”

刘颖站起来伸出手。“签。合同今天能出吗?”

王丽敏从文件柜里抽出另一份合同模板放桌上。“模板已经准备好了,改金额和条款就行。半小时。”

刘颖坐下来,看着王丽敏改合同,转头对张宇廷说了一句:“你这公司,一个技术一个商务,挺精简。”

张宇廷指了指王丽敏:“她是老板。”

王丽敏头也没抬:“我是管钱的。他是干活的。”

刘颖笑了一声,签完合同转完账走了。张宇廷看着银行到账短信上的数字,把手机递给王丽敏。

“加上陈涛那十五万,账上四十三万了。”

王丽敏把手机推回去。“别高兴太早。刘颖那边数据修复比接口迁移麻烦,你一个人干两个项目,时间卡得死。你要不要招个人?”

“招谁?小李那样的?”

“正经招。你出技术面试题,我去平台上发招聘。”

张宇廷想了五秒。“招一个后端,能看懂我代码的。工资你定,别超过一万二。”

“一万二在市场上招不到能看懂你代码的。”

“那就一万五。剩下的从项目款里扣。”

王丽敏打开招聘平台开始发职位。张宇廷刚打开代码编辑器,手机响了。一个陌生号码,本地座机。

“张宇廷吗?我是前公司人事部。赵总让我通知你,下周三的培训地点定在公司三楼会议室,上午九点开始。赵总说让你提前一天来装环境。”

张宇廷听完直接回:“装环境算驻场,按你们赵总说的,一天三千。要装我就去,不装你们自己弄,投影仪连上电脑就能用。”

人事那边沉默了一会儿。“我跟赵总确认一下。”

“确认好了发微信。别打电话了,我干活呢。”

挂了电话,王丽敏竖起大拇指。“硬气。”

“你教的。”

“我教的是合同条款,不是让你跟谁都硬。”

张宇廷打开小李提交过的那批代码,开始逐个模块回滚。王丽敏在旁边刷招聘后台,刷了半小时,抬头说:“投了十二份简历,我筛出来三个,明天上午约面试?”

“明天上午我要写接口文档。”

“那就下午。三点开始,一人半小时,四点结束。”

“行。”

第二天下午三点,第一个面试的到了。二十八岁,简历上写“三年大厂经验”,进门先递名片,上面印着“高级后端开发工程师”。

张宇廷把笔记本电脑转过去,屏幕上是一段代码。“你看这段,十五分钟,告诉我这段代码有什么问题。”

那人看了五分钟,开口:“变量命名不规范,没加注释,函数太长应该拆分……”

“还有呢?”

“没有了。”

张宇廷把电脑转回来。“回去等通知。”

第二个面试的是个女生,二十六岁,简历上就一行“两年半工作经验,独立负责过订单模块”。进门先问了一句:“你们代码用什么规范?我之前公司用阿里规约。”

张宇廷把电脑转过去。“先看代码,十五分钟。”

女生看了七分钟,抬头。“这段代码用单机锁处理分布式事务,上线肯定会出问题。要么换分布式锁,要么改架构走消息队列。另外这段注释写得很清楚,说明写代码的人知道有坑但被要求赶工,注释里‘临时方案’四个字出现了三次。”

张宇廷看了王丽敏一眼。王丽敏在笔记本上写了一个字:“要。”

张宇廷转回头。“什么时候能来上班?”

“随时。”

“明天早上九点,带身份证和银行卡,办入职。”

女生走了之后,王丽敏把笔记本转过来给他看。“还有第三个面试的没来,已经过点了。”

张宇廷把笔记本合上。“不等了。后天刘颖那边接口开发启动,你帮我盯一下她的数据导出。”

王丽敏在笔记本上又写了一行。“周五之前把公司官网做出来,客户来了连个网址都没有。”

“你找人做,别找我。”

“已经找好了。五百块钱,明天上线。”

4

新来的女生叫孙晓,第二天早上九点准时到了。张宇廷把刘颖那边的库存接口文档发给她,让她先看,下午开始写代码。

孙晓看了两个小时,跑过来问:“张总,这个文档是你写的?”

“别叫张总,叫宇廷就行。文档我写的,有问题?”

“没有,写得挺清楚。我就是想问一下,这个库存扣减的幂等逻辑你打算用数据库唯一索引还是用Redis?”

“你判断。你选哪个方案,理由写清楚发给我,我批了你就写。”

孙晓点了点头回去了。王丽敏从外面买了两杯咖啡回来,看见孙晓在工位上埋头敲键盘,凑到张宇廷耳边问:“怎么样?”

“问的问题在点上,不蠢。”

“那就好。我跟你说个事。”王丽敏把手机递过来,“赵总在朋友圈发了一条,说公司技术团队‘引进高层次人才’,配了一张照片。”

张宇廷看了一眼。照片里赵总站在中间,旁边一个戴眼镜的男人,四十来岁,T恤扎进西裤里,看着像技术大牛。底下小李点了赞,评论写着“欢迎新同事”。

“从哪挖的?”

“我问了陈涛,他说是某互联网公司出来的,职级不低,赵总花了血本。”

张宇廷把手机还给王丽敏。“挖就挖吧,跟咱们没关系。”

“你不担心?”

“担心什么?”

“他要是真能接住系统,你那个四十万的外包合同,明年续不续?”

张宇廷把咖啡杯盖掀开,喝了一口。“明年的事明年再说。他要是真能接住,我恭喜孙总。但小李改的那批代码,没三个月捋不清楚。新人来了先替小李擦屁股,擦完了才有精力看核心模块。”

王丽敏看了他一眼。“你算准了?”

“我没算。我干了八年,知道那个系统什么情况。核心模块的设计文档在我脑子里,代码里注释写了不到三成。新人想搞明白,只有两条路——要么花时间反向啃代码,要么来问我。”

“问你收费?”

“问一次五千,包月两万,包年十五万。”

王丽敏把手机收起来。“那我是不是得准备一份技术咨询合同模板了?”

“你看着办。”

周三上午,张宇廷去前公司做培训。王丽敏背着包跟在后头,包里装着两份合同——一份技术咨询包年合同,一份驻场服务协议。

三楼会议室,赵总已经坐在里面了,旁边就是朋友圈照片里那个戴眼镜的男人。

赵总站起来介绍:“宇廷,这位是钱松,咱们新来的技术总监。今天培训他全程参加。”

钱松站起来握手,笑容很标准。“张工,久仰。你写的那个交易系统我看了一部分,架构挺有意思,有些地方我想跟你深入聊聊。”

“聊可以。今天是培训,内容按合同走。你想聊合同外的,王丽敏那边有咨询合同,你看一眼,签了咱们随便聊。”

钱松脸上笑容僵了一下,看了一眼赵总。赵总咳嗽了一声。“宇廷,钱总监刚到,很多情况不熟悉,你看能不能先带一带——”

“带人可以,驻场一天三千,我之前报过价。赵总你跟孙总汇报过了吗?”

赵总不说话了。

钱松倒是反应快,从兜里掏出名片盒,抽了一张递给张宇廷。“张工,加个微信,回头我私下请教。”

张宇廷接过名片装兜里,没掏手机。“行,回头微信上聊。现在开始培训,投影仪怎么开?”

培训讲了一整天。张宇廷把系统架构从头到尾拆了一遍,重点讲了小李改过的那十七个模块,每个模块的原始设计逻辑、小李的修改内容、回滚方案、测试用例,全部讲完。

底下坐了十五个人。钱松记了满满三页纸,中途提了五个问题,都问在关键点上。张宇廷一个一个答了,答完钱松点点头,不说话了。

下午五点培训结束。张宇廷关掉投影仪收拾电脑,钱松走过来递了瓶水。“张工,你今天讲的这些,有文字材料吗?”

“没有。要文字材料另外收费,我可以写一份完整的系统设计文档,十五万,两个月交稿。”

钱松拧开自己那瓶水喝了一口。“十五万我得跟孙总申请。”

“你申请。批了给我发微信。”

回到对面楼七层,王丽敏把培训合同和签到表收进文件柜。“两天培训费五万,孙总那边验收单签了字,钱明天到账。”

张宇廷坐在椅子上没动。孙晓从工位探出头:“宇廷哥,刘颖那边的库存数据恢复方案我写完了,你审一下?”

张宇廷接过来翻了翻,在第三页停住。“这个修复脚本为什么加这个循环?重复执行会锁表。”

孙晓凑过来看了一眼。“我考虑到数据量大的时候分批处理……”

“分批处理用游标,别用循环。循环一锁表,线上还在跑业务,直接挂。”

孙晓拿回方案。“我改。”

张宇廷看着她的背影跟王丽敏说了一句:“这姑娘不错,说一遍就能改。”

“比小李强?”

“小李说三遍都不改,第四遍跟你说‘这是产品需求’。”

王丽敏笑了一声,手机响了。她接起来听了几秒,捂住话筒转头对张宇廷说:“陈涛电话,说他那边接口联调出问题了,问你今晚能不能加个班。”

张宇廷伸出手。王丽敏把手机递给他。

“陈总,什么问题?”

“张工,你给我们写的新接口,订单状态同步延迟有点高,五秒到八秒不等。我们客服那边要实时查订单,等不了这么久。”

张宇廷打开陈涛那边的后台日志看了一眼。“你们查订单状态用的哪个接口?”

“就是你文档里写的那个queryOrderStatus。”

“那个接口是异步的,走消息队列,本来就有延迟。要实时查,用queryOrderDetail,同步接口,毫秒级返回。”

电话那头安静了几秒。“你文档里写的queryOrderStatus是主要接口……”

“文档第一页第一行写的什么?”

陈涛翻文档的声音传过来。“‘本接口为异步查询接口,实时场景请使用queryOrderDetail’……”

“看到了?”

“看到了。我让开发改。”

“改完告诉我,我远程看一眼。”

挂了电话,王丽敏把手机接回去。“陈涛这个人怎么样?”

“技术底子薄,但肯认错。比赵总强。”

“那你收他多少钱?”

“该收多少收多少。他肯认错是他的事,我该收费是我的事。”

孙晓改完方案又拿过来了。张宇廷看了一遍,改了几个参数,批了。“明天开始执行,三天跑完。跑完之后把结果导出来给我看。”

孙晓拿了方案回去。张宇廷打开微信,看到钱松发来的好友申请,备注写着:“张工,十五万文档的事孙总批了,合同什么时候签?”

张宇廷把手机递给王丽敏。“你回。合同你出,钱到账我开工。”

王丽敏接过手机打了几个字发过去,然后把手机还给张宇廷。“钱松这个人比赵总靠谱,问的问题都在点上,你以后可以多跟他聊聊。”

“聊可以。按合同来。”

晚上九点,张宇廷关电脑准备走。王丽敏在门口等他。“今天一天你签了三份合同,培训五万、文档十五万、陈涛那边接口维护续了半年七万五。账上现在六十五万。”

张宇廷把灯关掉,锁上门。“明天把公司官网挂上去,招聘信息加上后端开发两名,测试一名。”

“你招人了?”

“刘颖那边数据修复完,接口迁移上线,后面还有维护和迭代。孙晓一个人撑不住三个项目。”

“工资预算?”

“后端一万八,测试一万二。你谈。”

电梯里王丽敏看着手机上的招聘后台。“今天投了四十份简历,我筛出来八个,后天面试?”

“后天不行,后天我去刘颖那边现场看数据修复结果。大后天。”

电梯到一楼,门打开。对面楼底商新开了一家面馆,门口挂着“试营业八折”的牌子。张宇廷看了一眼,抬脚往面馆走。

王丽敏跟在后面。“你请客?”

“我请。今天进账二十七万五,吃顿面不过分。”

两人坐下来,张宇廷点了两碗牛肉面加一份凉拌黄瓜。面上来之前,他掏出手机看了一眼前公司技术群的聊天记录。钱松在群里发了一条消息:“今天张工的培训内容我整理了一份笔记,发到共享盘了,所有人下载学习,下周考试。”

底下赵总回了一个大拇指。

张宇廷把手机扣在桌上。王丽敏看了一眼他的表情。“怎么了?”

“钱松在群里发培训笔记。”

“说明他听进去了。”

“听进去是好事。”张宇廷拿起筷子掰开,“但他发的是我讲的内容。我讲的时候他说‘记下了’,转头就发群里当自己的笔记。这个人比赵总聪明,但做事的路数是一样的。”

王丽敏把筷子放下。“那你那个十五万的文档……”

“合同已经签了,钱到账我照写。但我写文档的时候会留一手。核心模块的设计逻辑写七成,剩下三成写‘见代码注释’。”

“代码注释你不是没写全?”

“所以我让他来问我。问一次五千。”

王丽敏笑出了声,面馆老板端着两碗面过来放在桌上。张宇廷拿起醋瓶往面里倒了两圈,搅了搅,低头吃面。

5

大后天早上九点,张宇廷到公司的时候,门口排了四个人。王丽敏在楼道里摆了张折叠桌当面试台,桌上放着四份简历和一支笔。

“八点就来了俩,在楼下便利店坐了半小时。”王丽敏把简历递给他,“我筛过一轮了,这四个技术底子还行。”

张宇廷翻了翻简历。第一个,三十岁,五年经验,上一家公司在做金融系统。第二个,二十七岁,三年经验,独立写过支付网关。第三个刚毕业一年,简历上写着“熟悉分布式架构”。第四个三十三岁,简历附了一段GitHub链接。

他把第四份简历抽出来。“这个先面。链接我昨晚看了,代码写得干净,注释也全。”

九点十分,第四个人进来了。叫周明,穿格子衬衫,头发理得短短的,进门先鞠了个躬。

张宇廷把电脑转过去。“这段代码,十五分钟,找问题。”

周明看了三分钟抬头。“这个锁的粒度太粗了,并发一高就排队。另外这个异常处理只打了日志没往外抛,上游调用方根本不知道出错了。”

“还有呢?”

“第六行的数据库连接没关,没走try-with-resources,时间长了连接池会满。”

张宇廷把电脑转回来。“你期望薪资多少?”

“一万八。”

“明天能来上班吗?”

“能。”

周明出去之后,王丽敏在表格上画了个勾。“剩下三个还面吗?”

“面。孙晓那边缺个测试,看看有没有合适的。”

第二个面试的叫吴倩,二十六岁,做了三年测试。张宇廷给了她一份接口文档。“你看这个文档,列一下你觉得需要测的场景。”

吴倩看了十分钟,在纸上写了十二个测试点,从正常流程到并发超卖到重复下单到网络超时。张宇廷接过来看了一遍,十二个点里有十一个是正确的,剩下一个偏了方向。

“一万二,明天能来吗?”

“能。”

剩下两个面完,一个基础太差,一个期望薪资超了预算。张宇廷在简历上画了个叉。王丽敏把合同拿出来,给周明和吴倩各打了一份,拍照发过去,让他们明天来签。

刚忙完,电梯门开了。钱松拎着一个公文包走出来,看到张宇廷在楼道里摆的面试桌,脚步顿了一下。

“张工,你们公司招人?”

“招。坐。”张宇廷把折叠桌收了,让钱松进屋。

钱松坐下来,从包里拿出一份合同。“孙总批了,十五万文档合同,你看看条款有没有问题。”

王丽敏接过去翻了翻,拿笔改了两处付款节点。“首付改四成,交稿后付四成,验收后付两成。孙总要是没意见,就按这个签。”

钱松看了一眼改动的地方,掏出手机拍了张照。“我发给孙总确认一下。”他发完消息,没急着走,靠在椅背上,“张工,你那天培训讲的交易链路拆解,我回去对着代码捋了一遍,有个地方没想通。”

“哪里?”

“库存扣减的补偿机制。小李改过之后现在走的是定时任务补偿,每五分钟扫一次异常订单。但你原来设计的时候是同步扣减,失败了马上回滚。我不太明白为什么不用同步回滚,要改成异步补偿。”

张宇廷手指在桌上敲了两下。“因为库存扣减是跨库操作。订单库和库存库是两个数据库,同步回滚需要分布式事务。我们当时没上Seata,用的最终一致性。失败订单进异常表,定时任务补。这个逻辑我培训的时候讲过。”

“培训笔记我看了,你只讲了‘怎么做’,没讲‘为什么不做同步’。”

“因为同步回滚的锁持有时间长,大促期间并发一高就雪崩。宁可先放过去,事后补偿,也不能把主链路卡死。这是取舍,不是最优解。”

钱松沉默了几秒。“明白了。那这个补偿机制现在跑着有没有问题?”

“有。定时任务是单节点跑的,没做分布式调度。小李加了一个节点之后,两个节点同时扫表,重复补偿。你看一下日志,每隔五分钟就有一批订单被补偿两次。”

钱松脸色变了。“这个会导致什么?”

“库存多扣一次,实际库存比系统库存少。卖超了客户收不到货,投诉。”

钱松站起来。“我回去改。”

“改可以。咨询费一次五千,微信转账,我远程给你看代码。”

钱松掏出手机转了五千,备注“技术咨询费”。张宇廷收了钱,打开远程工具连上钱松的电脑,指了指那几行代码。“这里加一个分布式锁,用Redis的setnx,过期时间设短一点,五分钟。节点加锁成功才扫表,扫完释放。两个节点就只会有一个在跑。”

钱松照着改了,部署上去看日志,重复补偿消失了。他松了口气,合上电脑。“张工,你这五千花得值。”

“还有别的问题吗?”

“暂时没了。文档合同孙总确认了,就按王小姐改的条款签。”钱松把合同翻到最后一页,掏出章盖上去,又从包里掏出一张支票放桌上,“首付六万,你查一下。”

王丽敏收了支票,开了张收据给他。钱松走了之后,她把支票举起来看了一眼。“六万。你刚才远程五分钟挣了五千。”

“我前面八年就学会这一件事,知道问题在哪。”

“那你以后多教几个钱松这样的,一次五千,一天教五个,比你写代码来钱快。”

张宇廷没接话,打开代码编辑器继续写刘颖那边的库存接口。下午两点,刘颖打来电话。

“张工,数据修复方案跑了两天了,你来看一眼结果?”

“我四点过去。”

四点张宇廷到刘颖公司,刘颖在会议室等他。投影仪上放着修复报告,三天前堆在缓冲队列里的丢失库存数据已经补回来了一部分。

“跑了七十二小时,修复了九成。剩下的一成订单时间太久,原始数据被覆盖了,补不回来。大约损失了四万左右的库存。”

张宇廷翻了翻报告。“四万我赔。”

刘颖愣了一下。“你赔?”

“接口文档是我们公司没更新,导致你调错了接口。责任在我们这边,四万从合同款里扣。”

刘颖看了他一会儿。“张工,我做了十几年技术管理,头一回见乙方主动认赔的。”

“该是谁的责任就是谁的责任。你后面接口迁移和培训还要用我,我不把这事认下来,你下次不找我了。”

刘颖笑了一声。“行,扣四万。剩下的二十四万按合同走,上线验收之后付。”

回公司的路上,王丽敏一边开车一边问:“你真赔啊?”

“赔。四万买一个长期客户,值。”

“你什么时候这么会算账了?”

“跟你学的。”

第二天上午,周明和吴倩来签了合同。张宇廷把刘颖那边的接口代码分给周明一半,让他写库存写入模块。吴倩开始建测试用例库,把陈涛和刘颖两边的接口全部过一遍。

中午吃饭的时候,王丽敏把公司官网链接发到工作群里。张宇廷点开看了一眼,设计简洁,首页一行字:“极客科技——解决你系统里的真问题。”底下三块业务:系统架构咨询、接口开发对接、技术培训。

“五百块钱做的?”

“五百。我挑了十家比价,这家最便宜,交付最快。”

张宇廷把链接转到朋友圈,配了两个字:“开张。”

发出去不到五分钟,底下冒出来十几条评论。陈涛点了赞,刘颖评论“合作愉快”,钱松评论“张工威武”。赵总没点赞,但在评论区问了一句:“宇廷,你们公司接不接驻场开发?”

张宇廷回:“接。按人天算,一人一天两千五,最少十人天起。”

赵总没再回。

王丽敏凑过来看了一眼他的手机。“赵总问驻场,你报两千五一天,他肯定嫌贵。”

“他嫌贵说明他还没搞清楚状况。系统崩一次损失多少?大促那天他们赔了客户和商家加起来过百万。两千五一天请个人盯着系统,便宜得跟白送一样。”

“那你少报点,一千八?”

“不降。降价他以为我不值这个钱。等他再出一次事故,自然会回来找我。”

王丽敏看了他一眼。“你变了。以前你只会写代码,现在你也会拿捏人了。”

“被你带坏了。”

6

一周后,刘颖那边的接口迁移上线了。晚上八点,张宇廷和周明留在办公室盯着后台数据。吴倩在旁边跑自动化测试,屏幕上一排绿色通过。

八点半,第一笔订单进来。库存扣减成功,订单状态同步,回调通知发出,全程三百毫秒。周明刷新了一下监控面板,数据曲线平稳。

“宇廷哥,没报错。”

“继续盯。盯到十点,没问题就下班。”

九点四十分,陈涛打来电话。“张工,你们那个新接口上了?我这边数据同步快多了,延迟从五秒降到零点三秒。”

“上了。你那边还有问题吗?”

“没了。对了,跟你说个事。你们前公司那个钱松今天给我打电话,问我接口维护合同到期之后要不要续。我说我已经签了你这边,他说‘张工确实比我们内部团队响应快’,让我有需求随时找他。”

张宇廷把手机开免提放在桌上。“他还说什么了?”

“他说他们技术团队现在也在做接口优化,下个月能上线。让我到时候对比一下性能再决定。”

周明在旁边听了一句,小声说:“钱松在挖你墙角。”

张宇廷对电话里说:“陈总,你到期之后续不续我不强求。你对比性能可以,把我这边接口的稳定性指标拿过去比,同口径。他要是能做到延迟半秒以内、可用性四个九,你续他我没意见。”

陈涛在那头笑了。“张工,你这话说得硬气。行,我按你说的比。”

挂了电话,王丽敏从外面回来,手里拎着三杯奶茶。“刚在楼下碰到赵总了,他从孙总办公室出来,脸色不好看。”

“说什么了?”

“他没看见我。我听见他跟旁边人抱怨,说钱松来了一个月,系统又出了两次小故障,孙总在会上拍了桌子。”

张宇廷把奶茶接过来插上吸管。“钱松技术底子不差,但他一个人改不动整个团队。赵总把小李招进来的时候埋的坑,靠钱松一个人填不完。”

“那孙总会回头找你?”

“找过了。四十万外包合同还在走,他找我最多是加钱加需求,不会让我回去。”

“那你加不加?”

张宇廷吸了一口奶茶。“看需求。驻场不接,培训可以加,文档可以加,系统重构可以报方案。钱到位什么都好说。”

十点整,监控面板没再报警。张宇廷关了电脑,对周明和吴倩说:“明天开始陈涛那边的接口做性能压测,周明你写压测脚本,吴倩你出压测报告。周五之前给我。”

两人应了一声走了。王丽敏把奶茶杯扔进垃圾桶,从包里掏出一张纸拍在桌上。

“今天收到一份简历,你看看。”

张宇廷拿起来一看。姓名:李志强。工作经历:前公司交易系统运维,三个月。自我评价:熟悉交易系统全链路,具备独立排障能力。

“小李投的?”

“投到我猎头公司邮箱里了,没投你们公司招聘后台。估计是不知道咱俩的关系。”

张宇廷把简历翻到背面,拿笔在空白处写了一行字:“不适合,建议转岗。”然后把纸递回去。

“你就写这个?”

“不然写什么?写他把我分布式锁改成单机锁的事?”

“你可以写‘暂不匹配’。”

“那就写‘暂不匹配’。”他拿起笔把刚才那行划掉,重新写了一行。“建议他去考个公务员,那边不用改代码。”

王丽敏把简历收进包里。“人家好歹跟你干过三个月。”

“我跟他干了一个月,他把我八个月的设计毁了。”

第二天下午,钱松发了一条微信过来:“张工,我们这边想加一个驻场服务,每周来一天,帮我们做代码审查。价格你开。”

张宇廷回:“一天三千,最少一个月起签,先付后干。”

“我跟孙总申请一下。”

“行。另外提醒你一句,你们那个定时任务补偿机制加了分布式锁之后,锁过期时间设太短了,网络一抖动锁提前释放,还是会重复补偿。把过期时间从五分钟改成十五分钟,给足补偿时间。”

钱松回了一个抱拳表情:“收到,马上改。”

王丽敏凑过来看了一眼聊天记录。“你主动告诉他?”

“他改好了系统少崩一次,我少挣一次五千的咨询费。但系统稳定了,孙总才会继续跟我续外包合同。四十万比五千多。”

“你算得真清楚。”

“你不也一样。你那个猎头公司,帮我对接客户收不收佣金?”

“收啊,陈涛和刘颖都收了,各收他们首年年费的百分之十五。你管不着,我赚的是他们的钱。”

张宇廷没说话,打开电脑看了一眼公司账户余额。王丽敏凑过来看了一眼数字。“别看了,扣掉房租工资和税款,净剩四十二万。”

“周明和吴倩的工资发了?”

“发了。下个月开始给他们交社保,每人多支出一千八。”

张宇廷把网银页面关了。“刘颖那边上线验收之后付尾款十二万,陈涛那边七万五,再加上孙总的驻场服务费,下个月账上能过六十万。”

“然后呢?”

“然后招个前端,把公司官网重做一下。五百块钱做的那个太丑了。”

王丽敏拿出手机开始刷招聘后台。“前端预算多少?”

“一万五。要求能写小程序,以后客户接口管理后台得有人做。”

“行,我明天发职位。”

正说着,电梯门开了。孙晓从外面跑进来,手里攥着手机,脸色不对。

“宇廷哥,出事了。小李在技术群里发了一条消息,说你那个交易系统的核心代码里有安全隐患,他整理了一份报告发给孙总了。”

张宇廷把手机接过来看了一眼。小李发的截图是一段代码,底下配了一段文字:“系统存在SQL注入风险,可导致数据泄露。该模块由张宇廷编写,建议公司立即排查。”

张宇廷把截图放大了看那段代码。看了五秒,笑了。

王丽敏问:“真有问题?”

“这段代码是我写的,但不是他截的这段。他截的是我上周回滚之前他改过的那一版。他把参数化查询改成了字符串拼接,然后截图发出来说是我写的。”

“你有证据吗?”

张宇廷打开代码仓库,翻到提交记录,把小李的提交时间、修改内容、前后对比截图全部导出来,打包发给了孙总,抄送钱松,附了一句话:“建议查一下小李在职期间的代码提交记录,看看到底是谁改的。”

十分钟后,孙总回了一条:“宇廷,明天上午来我办公室一趟,带上你那份完整记录。”

王丽敏把手机还给张宇廷。“你要去?”

“去。带上合同,他要是想借这事压外包费用,我直接给他看证据。他要是想处理小李,我配合。”

“你站哪边?”

“我站合同这边。谁给钱我站谁。”

7

第二天上午九点,张宇廷到前公司楼下,王丽敏跟在后面,包里装着打印好的代码提交记录和外包合同副本。

前台换了人,不认识张宇廷,拦着让登记。张宇廷签了名,写“极客科技张宇廷”。前台看了一眼公司名,拿起电话拨了个内线,说了两句,放下电话递了张访客卡。

孙总办公室在走廊尽头。门开着,孙总坐在办公桌后面翻一沓纸,钱松站在窗边,赵总坐在沙发上,小李站在赵总旁边,手里攥着一个U盘。

张宇廷进门,王丽敏跟在后面。孙总抬头看了他一眼,指了指对面的椅子。“坐。”

张宇廷坐下来,王丽敏站在他身后。孙总把那沓纸往桌上一推。“小李写的报告我看了。宇廷,你说他截图那段代码是你写的,证据呢?”

张宇廷从王丽敏手里接过文件夹,抽出一张打印纸放在桌上。“代码仓库的提交记录。三月十七号,小李提交的,改了三个文件。他把参数化查询改成字符串拼接,注释写‘优化查询性能’。我离职之前回滚了这段代码,仓库里有回滚记录。他截图用的是他改过的那一版。”

孙总拿起来看了一遍,递给钱松。钱松看了半分钟,抬头看了一眼小李。“李志强,你提交记录里确实有这一条。你截图的时候用的是哪个版本的代码?”

小李脸涨红了。“我……我截图的时候没注意版本,可能是缓存没刷新——”

“缓存不会改代码。”钱松把打印纸放在桌上,“你提交的这版代码确实有注入风险,但宇廷回滚之后风险已经消除了。你拿回滚前的代码截图,说成是宇廷写的,这个事性质不一样。”

赵总坐直了。“钱松,你说话注意点。小李可能是操作失误,不是故意的——”

“赵总。”孙总开口了,声音不大,但赵总立刻闭嘴。“小李,你自己说。”

小李攥着U盘的手在抖。“孙总,我真不是故意的,我就是整理代码的时候看错了版本……”

孙总看了他三秒。“你停职期间工资照发,回家休息一个月,写一份检查交上来。这一个月的活让钱松安排人接。”

小李张了张嘴,看了赵总一眼。赵总没看他,低头翻手机。

“出去吧。”孙总摆了摆手。小李把U盘放在桌上,转身走了。门关上之后,孙总转向张宇廷。“宇廷,这事是小李不对,但系统安全确实是我关心的。你那个外包合同里写没写安全审计的条款?”

王丽敏从包里抽出合同翻到第三页。“第七条,乙方负责维护系统的安全性,包括代码审查和漏洞修复。安全审计单次两万,一年四次打包六万。”

孙总看了一眼赵总。“签。一年六万,四次审计,这个季度做第一次。”

赵总张了张嘴:“孙总,这个预算——”

“从技术部团建费里扣。”孙总把合同推到赵总面前,“签字。”

赵总掏出笔签了字。孙总把合同递给王丽敏,转头看着张宇廷。“宇廷,驻场服务的事钱松跟我说了。一周一天,做代码审查,三千一天,一个月一万二。签三个月,先试。”

“行。”

“还有件事。”孙总靠在椅背上,“小李停职这一个月,他手上负责的那几个模块谁接?钱松一个人盯不过来。”

张宇廷没接话。王丽敏在旁边开口:“驻场一天三千是代码审查,不包含接手模块开发。如果要接手具体模块,按人天算,周明一天两千五,吴倩一天一千八。”

赵总在后面算了一下。“一个月二十二个工作日,周明来半个月就是三万七——”

“赵总。”孙总打断他,“你算算系统崩一次赔多少钱,再算算这个贵不贵。”

赵总不说话了。

孙总把眼镜摘下来擦了擦。“行,宇廷你回去出一份驻场排期和报价单,明天发给我。钱松你对接一下。”

从办公室出来,走廊里没人。王丽敏快走两步跟上张宇廷。“你刚才一句话没说,全让我开口。”

“你比我专业。合同条款、报价、排期,你说比我管用。”

“那你干什么?”

“我负责修代码。谈判的事你来。”

电梯门开了,钱松从后面追上来。“张工,等一下。”

张宇廷站住。钱松递过来一张名片。“下周一我来你们公司一趟,把驻场服务的排期定了。顺便,我有个事想跟你单独聊。”

“什么事?”

“我想从你们那边买一套监控系统的搭建方案。我们现在的监控太原始了,出问题全靠人盯。预算五万以内,你出方案我出钱。”

张宇廷看了一眼王丽敏。王丽敏点头。

“方案可以出,五万包含部署和培训。你下周一来了聊。”

钱松握了握手走了。王丽敏在电梯里对张宇廷说:“钱松这个人比赵总上路。他花钱解决问题,不跟你绕。”

“所以他能在孙总手底下待住,赵总不一定。”

周一上午,钱松准时到了对面楼七层。周明和吴倩已经入职一周,工位上堆着打印出来的代码文档。钱松看了一圈,找了个空椅子坐下来。

“张工,你这边人手比我们技术部还齐整。”

“三个兵一个将,够用。”张宇廷把驻场排期表推过去,“一周一天,我亲自去。时间定周四,你把你那边代码提交记录整理好,我当场审。审出问题你自己改,我不动手。”

钱松翻了翻排期表。“周四行。监控方案呢?”

张宇廷打开投影仪,把方案投到墙上。“三块。第一块,日志采集。用开源方案,Filebeat加Elasticsearch,部署五台服务器,一天搭完。第二块,告警推送。钉钉机器人加短信网关,你们有现成的短信通道,直接对接。第三块,监控大盘。Grafana,我出五个模板,交易链路、库存、订单、接口延迟、错误率,你们照着配。”

钱松拿手机拍了几张照。“部署要多久?”

“两天部署加一天培训,总共三天。五万包含第一年维护,第二年开始一年一万。”

“行,我报给孙总。”钱松把方案收起来,“还有个事。我们技术部现在有个人在跟你们对接,叫王强,做了两年运维。孙总的意思是想让他跟着你学一学监控这块,以后我们自己能维护。”

张宇廷想了想。“跟可以。跟班学习一天一千五,跟三天四千五。学完能独立操作才算数,学不会不收钱。”

钱松笑了一声。“你这收费方式挺自信。”

“自信不自信看结果。三天学不会,说明他不适合干这个,你也别在他身上浪费时间。”

钱松走了之后,王丽敏从工位探出头。“钱松这个人可以长期合作,他知道花钱买时间。”

“嗯。赵总只想省钱,钱松想的是怎么把事办了。”

下午,王丽敏把驻场排期表和监控方案报价单发给了孙总。半小时后孙总回了一条微信:“都签。钱松对接。”

8

第二周周四,张宇廷第一次去前公司驻场。三楼技术部给他留了个工位,靠墙角,对面坐着钱松。王强搬了把椅子坐在旁边,手里拿了个新笔记本。

“宇廷哥,我从哪开始学?”

“先看日志。你把昨天交易系统的错误日志导出来,按错误类型分类,统计每种错误出现的次数。”

王强打开终端开始敲命令。张宇廷打开钱松传过来的代码仓库,从最近一周的提交记录开始审。

审了半个小时,停在一段代码上。“钱松,你过来看。”

钱松凑过来。张宇廷指着屏幕。“这段缓存更新逻辑,先删缓存再更新数据库。高并发下会出问题。A线程删了缓存还没更新数据库,B线程读缓存发现空,去数据库读了旧数据写回缓存,A线程再更新数据库,缓存里就是脏数据。”

钱松看了一会儿。“改成先更新数据库再删缓存?”

“对。但删缓存要加延迟,更新完等五百毫秒再删,给读请求一个缓冲。这段代码谁写的?”

“王强写的。”

王强在旁边抬起头。“那个……我是照着网上博客写的,说先删缓存再更新数据库能减少缓存穿透……”

“博客没告诉你并发场景下的时序问题。”张宇廷把键盘推到王强面前,“你改,我看着。”

王强改完之后张宇廷看了一遍,点了点头。“下次写缓存逻辑之前先想三个事:谁读、谁写、读写交叉的时候数据以谁为准。”

王强在笔记本上写了三行。钱松在旁边看着,没插话。

中午吃饭的时候,钱松端着餐盘坐到张宇廷对面。“张工,你审代码的方式跟我们内部评审不一样。我们内部评审看规范看格式,你看时序看并发。”

“规范格式是给人看的,时序并发是给系统看的。系统崩了不看你的代码格式好不好看。”

钱松笑了一声。“下周孙总想请你给技术部做一次分享,不讲代码,讲讲你这些年碰过的线上事故。预算五千,一小时。”

“事故可以讲,但客户名和项目名我得脱敏。”

“那肯定。”

下午回公司的路上,张宇廷接到刘颖的电话。“张工,尾款十二万今天打过去了,你查一下。另外有个事,我们集团旗下还有一家做跨境支付的子公司,技术负责人是我朋友,他们系统最近老出问题,我让他加你微信了。”

“什么问题?”

“他说是接口偶发超时,排查一个月没找到原因。你帮他看看,收费你跟他谈。”

刚挂电话,微信弹出一条好友申请:“赵恒-跨境支付技术负责人,刘颖推荐。”

张宇廷通过之后打了三个字:“什么问题?”

对面秒回:“接口超时,日志里找不到异常,但每天总有几十笔订单卡住。已经排查一个月了。”

“远程看一次五千,找到问题另报价。”

“行,账号发我。”

张宇廷把账号发过去。两分钟后到账五千。他打开远程工具连上赵恒的服务器,翻了十分钟日志,停在一行WARN上。

“赵恒,你们这个接口调用了外部支付网关,网关超时时间是三十秒,你们自己接口的超时时间是十秒。网关还没返回,你们这边已经超时了。查一下网关最近的响应时间分布。”

赵恒在那头查了五分钟。“最近网关响应时间确实变长了,平均二十五秒……”

“把你们接口超时时间改成三十五秒,比网关多五秒。另外加一个重试机制,第一次超时之后隔两秒重试一次,重试还超时再报错。别直接超时把订单扔了。”

赵恒照着改完,观察了一晚上,第二天早上发消息:“昨晚零超时。张工,这五千花得太值了。我们老板想见你,谈年度框架合同的事。”

张宇廷回:“下周。”

王丽敏把公司账本翻到最新一页。“账上现在七十八万了。赵恒那边框架合同一签,加上孙总的驻场和监控,下个月能过百万。”

“把公司官网重做一下。五百块钱那个太丑了。”

“已经找人在做了,这次两千,下周上线。”

正说着,周明从工位跑过来。“宇廷哥,陈涛那边的压测结果出来了,峰值并发五千,响应时间稳定在两百毫秒以内,零报错。”

“报告发我,我转发给陈涛。”

张宇廷把报告转过去,附了一句话:“压测通过,下周可以签全年维护续约合同。”

陈涛秒回:“签。年度合同你出,我这边盖章。”

周五下午,张宇廷坐在办公室里算账。王丽敏把下个月的排期表贴在墙上:孙总驻场四天,监控部署三天,赵恒框架合同谈判一次,陈涛续约盖章一次,刘颖那边接口迭代两个小版本。

“下个月排满了。”王丽敏说。

“排满了好。排满了说明在挣钱。”

“你累不累?”

张宇廷靠着椅背想了想。“累。但以前在那个工位上坐着,拿六千的时候更累。”

王丽敏看了他一眼,没说话。手机响了,赵总发来的微信:“宇廷,小李检查交上来了,孙总让我转发你一份。你看看有什么意见。”

张宇廷打开附件扫了一遍,关掉。

“写的什么?”王丽敏问。

“三千字检查,核心就一句话——他没错,是代码版本没管好。”

“你回什么?”

张宇廷打了几个字发过去:“建议他下次截图之前先刷新缓存。”

9

赵恒那边的框架合同谈了两轮。第一轮赵恒的老板派了个商务总监过来,姓方,四十来岁,穿白衬衫黑西裤,进门先递名片,然后从包里掏出一份采购模板,上面印着“年度框架协议”,报价栏空着。

“张工,我们赵总说了,技术这块你开价,但流程得走我们公司的供应商入库。你先填一下资质表,营业执照、开户许可证、近三年业绩证明、团队简历……”

张宇廷把资质表推到一边。“方总监,赵恒那边的问题我远程看一次五千,改一个超时参数收五千。你现在让我填资质表走流程,走完流程一个月过去了,你们系统这一个月出不出问题?”

方总监推了推眼镜。“流程是必要的,我们公司规定——”

“你们公司规定是给你们自己人看的。你回去跟赵恒说,框架合同我只有三条:一年二十万,包含远程技术支持不限次数,现场服务另算一天三千。能签就签,不能签我继续按次收费,一次五千。”

方总监合上采购模板。“二十万我得回去汇报。”

“汇报可以。你告诉赵恒,下周之前签合同,我给他排月度巡检。过了下周我排满了,他再有问题得等。”

方总监走了之后,王丽敏从文件柜里抽出一份空白合同。“你真不填资质表?”

“填了显得我求着他。不填,他反而觉得我有底气。”

“万一他真不签呢?”

“赵恒昨天又给我介绍了一个客户,做本地生活的,下周一见面。赵恒这个人技术出身,知道流程是给大公司病用的。他老板要是卡着不签,赵恒自己会想办法。”

果然,第二天下午赵恒亲自打来电话。“张工,方总监回来说你不填资质表?我跟老板拍了桌子,说你要是不签,系统再出问题你一个人扛。老板松口了,框架合同按你说的三条走,我这边盖章,今天寄给你。”

“合同我出。”

“行,你出我盖。”

挂了电话,王丽敏把合同模板调出来改金额和条款,半小时搞定。张宇廷签完字让周明拿去寄顺丰。

周明刚出门,电梯门开了,钱松拎着一个纸袋走进来。

“张工,孙总批了监控方案。五万预付款今天打过来了,你看一下。”他把纸袋放桌上,里面是一张支票和一份签好的合同。

张宇廷看了一眼支票,递给王丽敏。“监控部署下周一启动,三天完事。王强跟班学习的事你跟他确认一下时间。”

“王强下周一早上九点到你这边来,跟三天。”钱松坐下来,没急着走,“另外,孙总让我带句话。小李检查交上来了,孙总看完不太满意,想让他走人。赵总在中间和稀泥,说小李年轻给个机会。孙总问你的意见。”

张宇廷靠在椅背上。“我的意见?我跟他什么关系?他是你们公司的人,留不留是孙总的事。”

“孙总的意思是,你这边外包维护系统,如果小李还在,以后代码提交难免还有交叉。他怕再出类似的事。”

张宇廷想了几秒。“你回去跟孙总说,小李留不留跟我没关系。但代码仓库权限得管住,核心模块只给钱松和王强开写权限,其他人只能提PR,不能直接推代码。这是流程问题,不是人的问题。”

钱松点头。“我回去传达。”

王丽敏在旁边插了一句:“钱总监,顺便跟你确认一下,驻场服务下周四照常?”

“照常。宇廷来了先审王强写的缓存逻辑。”

钱松走了之后,王丽敏把支票收进保险柜。“孙总在借你的嘴处理小李。”

“他知道我跟小李不对付,让我给个态度,他好跟赵总摊牌。”

“你给的态度够圆滑的,什么都没说又什么都说了。”

“跟你学的。”

下周一到周三,张宇廷带着周明去前公司部署监控系统。王强跟全程,第一天装Filebeat和Elasticsearch,第二天配Grafana和告警规则,第三天培训操作。王强脑子快,第二天就能自己配大盘了。

第三天下午,钱松过来看部署结果。张宇廷把五个大盘挨个点开:交易链路状态、库存同步延迟、订单成功率、接口响应时间分布、错误率TOP10。

钱松看了五分钟。“张工,这个大盘上了之后,我至少能提前半小时发现问题。”

“之前你们出问题多久能发现?”

“等客户投诉才知道。”

“以后不用等投诉了。告警规则我配了短信和钉钉,阈值我写在文档里了。你让人盯着钉钉群就行。”

钱松把文档收进文件夹。“培训费四千五我转你微信了。”

周四驻场审代码,王强把改好的缓存逻辑拿过来。张宇廷看了一遍。“可以。延迟删除改成异步了?”

“用消息队列延迟投递,五百毫秒之后删。”

“行。”张宇廷在审查记录上签了字。“下周开始你独立审代码,审完发给我抽查。”

周五回公司,赵恒的框架合同寄到了。王丽敏拆开看了一眼,对方盖了公章,签字栏写着赵恒的名字。“合同生效了。二十万,季度付,第一笔五万下周一打过来。”

“好。”

王丽敏把合同收进文件柜,拿出一张打印好的招聘广告。“本地生活那家客户今天加了微信,说下周二见面。另外,公司官网新版上线了,你看看。”

张宇廷打开链接。这次页面干净多了,首页是业务介绍,底下三个客户案例,陈涛、刘颖、赵恒的项目各占一栏。案例里没写客户全名,写的是“某头部电商平台”“某生鲜电商”“某跨境支付机构”。

“两千块钱做的?”

“两千。做网站那小孩顺便把SEO做了,百度搜‘系统架构咨询’我们排第三页。”

“第三页有什么用?”

“总比没影强。你再攒几个案例,我让他把SEO再优化一轮,争取上首页。”

张宇廷把官网链接转发到朋友圈。这次评论更多了,有人问收不收学徒,有人问接不接小程序开发。张宇廷统一回复:“业务范围看官网,咨询加微信。”

下午,孙总打了个电话过来,不是微信,是直接手机打过来的。

“宇廷,监控系统我这几天用了,确实好用。钱松说王强跟着你学了三天,现在也能独立配大盘了。”

“王强脑子快,学得快。”

“是这样,我这边有个事想跟你商量。赵总那边我打算动一动,让他去管行政。技术部以后钱松说了算。但钱松一个人撑不住整个部门,我想让你回来挂个技术顾问,不坐班,每周来半天,看看代码审审方案,一个月两万。你考虑一下。”

张宇廷把手机开免提放在桌上。王丽敏凑过来听。

“孙总,顾问可以挂。但我有个条件。”

“你说。”

“技术部所有人的代码提交权限走我这边审一遍。钱松批了不算,我批了才能推。我不在的时候钱松代审,但我保留抽查权和一票否决权。”

孙总在电话那头沉默了几秒。“一票否决权……宇廷,你这是要管我的人。”

“我不管人。我管代码。人你管,代码我管。我否的是代码,不是人。”

孙总笑了一声。“行。顾问费两万一个月,每周四半天,跟驻场同一天。合同你出,我签字。”

挂了电话,王丽敏看着张宇廷。“你现在是两个身份了。一个是外包服务商,一个是顾问。”

“顾问费两万一个月,加驻场一万二,加监控维护一年一万,加赵恒那边二十万,加陈涛和刘颖的合同。”王丽敏在计算器上按了一串数字,“你这一年,光前公司相关收入就过五十万了。”

“还有本地生活那家没谈呢。”

“对。下周二见面。”

10

周二下午,本地生活那家客户来了。两个人,一个技术负责人姓周,一个产品经理姓吴。周负责人进门先看了一眼办公室,目光在周明和吴倩的工位上停了一下。

“张工,你这公司人不多。”

“够用就行。什么问题?”

周负责人打开电脑。“我们平台做同城配送,骑手端和商家端的数据同步延迟。商家出了餐骑手不知道,骑手到了商家说没出餐。客诉率这个月涨了百分之三十。”

张宇廷看了一眼周明。“你来看。”

周明把电脑接过来,翻了十分钟日志。“你们用的是轮询?”

“对,商家端每十秒轮询一次订单状态。”

“轮询间隔太长,改成WebSocket长连接推送。商家出餐后服务端直接推给骑手端,毫秒级。”

周负责人看了吴经理一眼。“WebSocket我们试过,维护成本太高,断线重连处理不好。”

张宇廷开口了:“你们什么量级?”

“日订单三万左右,高峰期并发两千。”

“这个量级WebSocket扛得住。断线重连用心跳机制,三十秒一次,断了自动重连,重连失败降级到轮询。代码我这边有现成的模块,改一改就能用。”

周负责人想了一会儿。“张工,改造周期多久?”

“两周。第一周写推送模块和降级逻辑,第二周你们测试上线。费用八万,包含三个月维护。”

周负责人算了一下。“八万比我们招一个高级开发便宜。签。”

合同当场出了。吴经理签完字转完账,临走前问了一句:“张工,你们接不接小程序开发?我们骑手端想做个轻量版。”

张宇廷看了一眼王丽敏。王丽敏接话:“接。小程序五万起,看功能复杂度。”

“那回头我让产品出个需求文档。”

人走了之后,周明凑过来。“宇廷哥,WebSocket那个模块你真要给我写?”

“你写。写完我审。两周时间,第一周出代码,第二周测试。”

“我没写过WebSocket……”

“没写过就学。我当年也没写过交易系统,不也写出来了。”

周明点了点头回去了。王丽敏从工位走过来,把手机递给张宇廷。“赵总发朋友圈了。”

张宇廷看了一眼。赵总发了一张办公室照片,配文:“新的岗位新的开始,感谢孙总信任,行政部工作同样重要。”底下小李点了赞,评论“赵总威武”。

“赵总去行政部了。”

“孙总动作挺快。”张宇廷把手机还回去。

“你那个顾问合同什么时候签?”

“明天。孙总说让钱松带过来。”

第二天上午钱松来了,带着孙总签好字的顾问合同。张宇廷签完字,钱松从包里掏出一个U盘。

“张工,这个月的代码提交记录都在里面。你周四来的时候审。”

“行。小李的事怎么处理了?”

“孙总让他自己提离职,给了半个月补偿。赵总去了行政部之后老实多了,没再掺和技术部的事。”

“王强现在怎么样?”

“你带了他三天,他现在天天盯着大盘看,比我盯得还勤。昨天他发现一个库存同步的小问题,自己查日志查出来了,改完发给我审,我批了。”

张宇廷点了点头。“下次驻场我带他做一次完整的代码审查。从提PR到合并,全流程走一遍。”

钱松走了之后,王丽敏把公司账本翻到最新一页。“这个月进账:赵恒框架合同首付五万,孙总顾问费两万,驻场一万二,监控部署五万,周明那边配送平台八万,陈涛续约七万五。总进账二十八万七。支出:房租三千八,水电宽带五百,工资四万三,社保五千四,差旅杂费两千。净剩二十万。”

张宇廷靠着椅背。“下个月把赵恒那边的月度巡检排上,每月一次,一次三千。”

“已经排了,每月第二个周五。”

“周明那边WebSocket写完之前,你盯着他点,别让他卡住。”

“我盯着呢。他昨晚加班到十点,今早九点又来了。”

张宇廷站起来走到窗边。对面楼底下,前公司的员工正陆陆续续出来吃午饭。他看了一会儿,转身把窗帘拉上。

“王丽敏,你说我要不要租个大点的地方?三十平有点挤了。”

王丽敏抬起头。“你终于想通了?”

“周明和吴倩两个人挤在角落里,来客户了连个坐的地方都没有。”

“我上周看过了,隔壁楼八层有个六十平的,月租六千五,押一付三。你要看今天下午就能去看。”

张宇廷看了她一眼。“你是不是早就等着我问这句话?”

“我等了半个月了。”

下午去看房。六十平,两个独立房间加一个开放工位区,窗户朝南。张宇廷在屋里走了一圈。“签。”

王丽敏掏出手机给房东打电话。张宇廷站在窗户边上往外看,这个角度正好能看到前公司那栋楼的全貌。

他掏出手机拍了张照,发到工作群里:“下周搬新办公室,每人配一把人体工学椅。”

周明秒回:“宇廷哥威武。”

吴倩回了一个鼓掌表情。

王丽敏挂了电话走过来。“房东说下周一可以搬。”

“行。周末找人把网线和工位布好。”

晚上回到家,张宇廷坐在沙发上翻手机。前公司技术群里,钱松发了一条消息:“本周五下午技术分享,主题:分布式锁的正确使用方式,主讲人:张宇廷。”

底下十几个人回复“收到”。

张宇廷把手机扔到茶几上。王丽敏从厨房端了碗汤出来放在他面前。“喝汤。明天周六,陪我去趟家具城,你那把椅子坐了八年了,换一把。”

张宇廷端起汤碗喝了一口。“那把椅子挺舒服的。”

“那把椅子是公司配的,你离职之后就没椅子了,现在坐的是我从家里搬过去的餐椅。”

张宇廷想了想。“行,明天去。顺便给周明和吴倩也挑一把。”

“预算多少?”

“一把两千。别超过这个数。”

王丽敏坐在他旁边,把手机计算器打开。“四把椅子八千,新办公室布网线三千,搬家两千,这个月多支出一万三。”

“值。人坐舒服了干活才快。”

王丽敏看了他一眼。“你以前在那边坐硬板凳加班到凌晨两点,也没见你给自己换把好椅子。”

“以前我是打工的,椅子是公司的。现在椅子是我自己的,干活也是给我自己干的。”

11

周六上午,张宇廷和王丽敏去了家具城。挑了四把黑色网布椅,一把两千,王丽敏砍到一把一千七,四把六千八,包送货。

从家具城出来,王丽敏开车拐了个弯。“去趟商场,给你买两件衬衫。你现在见客户还穿那件领子磨破的。”

“那件穿着舒服。”

“舒服归舒服,客户看了以为我们公司快倒闭了。”

张宇廷没再争。在商场买了两件白衬衫一条西裤,花了九百。王丽敏又给自己添了一件外套,张宇廷扫码付的钱。

周一搬办公室。新地方六十平,朝南,两个独立房间。张宇廷把靠里那间当自己办公室,外面开放区给周明、吴倩、孙晓。王丽敏在门口摆了一张桌子,旁边放了台打印机。

椅子送来了,周明和吴倩一人一把装好,坐上去试了试。吴倩说这椅子比她上一家公司配的还好。孙晓从刘颖那边驻场回来,看到新办公室愣了一下,把包往桌上一放,在椅子上转了两圈。

“宇廷哥,这椅子比我租的房子里那张床都贵。”

“好好干活。下个月给你涨工资。”

孙晓跳起来鼓了两下掌。

周三下午,张宇廷去前公司做技术分享。钱松把三楼会议室收拾了一遍,投影仪换了个新的,底下坐了二十来号人。王强坐在第一排,笔记本摊开,笔准备好了。

张宇廷讲了四十分钟分布式锁,从原理讲到坑,从坑讲到解决方案。讲完提问环节,王强第一个举手。

“宇廷哥,你之前在我们代码里写的那把锁,过期时间设了十五分钟,为什么不能设短一点?”

“你设短了锁提前释放,两个节点同时进来,数据就乱了。宁可锁的时间长一点,等业务跑完再释放。”

王强在本子上记了一笔。底下又有人问:“张工,你当时写这个锁的时候,为什么要用setnx不用Redisson?”

“Redisson封装太重,我们那个场景简单,setnx加过期时间足够了。用什么工具看场景,不是看哪个流行。”

分享结束,钱松把张宇廷送到电梯口。“孙总让我跟你说一声,顾问合同下个月续签,条件照旧。”

“行。”

回到新办公室,周明跑过来说WebSocket模块写完了,让张宇廷审代码。张宇廷看了半小时,指了三个地方:心跳间隔太长、重连退避策略太简单、消息格式没做版本兼容。

“改完再给我看。”

周明拿回去改。吴倩那边把本地生活那家的测试用例跑完了,通过率百分之九十七,剩下三个用例是边界场景,需要张宇廷确认预期结果。

张宇廷看完把预期结果写上去,让吴倩重新跑。下午五点,周明改完代码又拿过来,张宇廷审完批了。

“明天部署到测试环境,让本地生活那边联调。”

周明松了口气,回工位收拾东西准备走。王丽敏从外面回来,手里拿了一份快递文件,拆开看了一眼,递给张宇廷。

“赵恒那边的月度巡检报告出来了。他那边系统跑了一个月,零故障。”

“巡检记录归档。下个月继续。”

王丽敏把文件收进柜子,从包里掏出一个本子。“这个月账算完了。收入合计四十二万八,支出五万六,净剩三十七万二。账上趴着九十五万。”

张宇廷看了一眼数字。“够发一年工资了。”

“够发一年半。你明年什么打算?”

“把赵恒那边框架合同续了,本地生活那家尾款收了,陈涛和刘颖的维护续上。前公司那边顾问加驻场加监控,一年固定收入二十万出头。这些加起来保底六十万。”

“然后呢?”

“然后我想做点自己的东西。”

王丽敏把本子合上。“什么东西?”

“一套通用的接口管理平台。中小公司都能用,接了就能管接口文档、监控、告警、限流。市面上有现成的,但太复杂,小公司用不起来。我做一个轻量版,年费制,一年几千块,卖给几十家小公司就是几十万。”

王丽敏看着他的眼睛。“你想做产品?”

“做了八年项目,给别人搭了八年系统。我想做一个自己能卖的东西。”

“需要投多少钱?”

“前期不用投钱。我和周明两个人写,服务器用云主机,一个月几百块。先做个MVP,找陈涛和刘颖试用,跑通了再往外卖。”

王丽敏把本子翻到新的一页。“行,我记上了。明年业务规划第一条:接口管理平台产品化。预算另行核算。”

周四去前公司驻场,王强把自己审的代码拿给张宇廷看。张宇廷翻了翻,批了两处,放行一处。

“王强,你现在审代码的速度比我刚来的时候快多了。”

“盯着大盘看了两周,什么代码容易出问题心里有数了。”

“下周开始你审完的代码直接推,我不看了。”

王强愣了一下。“你不看了?”

“你审过的我抽查。抽查有问题再打回来。”

钱松在旁边听见了,插了一句:“张工,你这放手放得够快的。”

“他审得没问题,我压着不放是浪费我自己的时间。”

回办公室路上,张宇廷接到赵恒电话。“张工,月度巡检报告收到了,我们老板说想再加一个接口限流的模块,你报个价。”

“限流模块单独做五万,包含部署和培训。跟明年框架合同打包报八万,省两万。”

“打包报八万,我这边走采购流程。”

“行。合同我出,明天寄你。”

挂了电话,王丽敏从后视镜里看了他一眼。“赵恒那边又加需求了。”

“加了两次了。这个人尝到甜头了,后面还会加。”

“加得越多你挣得越多。”

“产品做出来之后,这些需求就不用一个一个写了。平台里自带限流模块,客户自己配就行。”

12

元旦前一天,张宇廷把公司所有人叫到新办公室。周明、吴倩、孙晓,加上王丽敏,五个人围着一张桌子。

张宇廷把投影仪打开,屏幕上是一份产品原型图。

“明年开始,我们做自己的产品。接口管理平台,名字我暂时叫‘极客接口管家’。周明负责后端,吴倩负责测试,孙晓负责前端和文档。王丽敏管合同和钱。我写核心模块。”

周明看了一眼原型图。“宇廷哥,这东西市面上有竞品。”

“竞品卖一年十万起,目标客户是大公司。我们卖一年五千,目标客户是二十人以下的技术团队。陈涛和刘颖那边先免费试用,跑三个月没问题再推。”

吴倩举手。“我能不能也参与写代码?光测试没意思。”

“你先测完周明写的模块,测完了我分你一块前端逻辑。”

孙晓翻开原型图看了一眼。“宇廷哥,这个前端要重写啊,之前官网那套框架太老了。”

“你重写。两周时间够不够?”

“够。”

王丽敏把合同模板打印出来,一人发了一份。“新劳动合同,薪资普调百分之十,元旦后生效。签完字给我。”

周明接过合同看了一眼,转头看张宇廷。“宇廷哥,涨工资了?”

“涨。明年做产品,大家活多了,钱也得跟上。”

孙晓签完字问了一句:“宇廷哥,产品做出来之后卖给谁?”

张宇廷指了指窗外。“对面那栋楼,前公司,就是第一个客户。钱松那边已经跟我提了,说想买一套轻量接口管理工具。我说等三个月。”

王丽敏把合同收齐,放进文件柜。“明年目标,产品上线三个月签五家客户,一家五千,两万五。加上现有项目收入,全年保底八十万。”

张宇廷看着她。“你算得真清楚。”

“你负责干活,我负责算账。”

元旦后第一周,张宇廷带着周明开始写产品核心模块。孙晓重写前端,吴倩一边测接口一边把测试用例整理成产品文档。王丽敏联系代理记账公司把公司财务规范化。

周五下午,张宇廷收到一条微信。钱松发来的:“孙总看了你那个顾问报告,批了明年续签。另外,你说的那个接口管理平台,我们技术部想先试用。能不能给我个测试账号?”

张宇廷回:“下周一给你开账号。试用三个月,不收钱。用好了帮我写个案例。”

钱松秒回:“没问题。”

王丽敏凑过来看了一眼聊天记录。“第一个客户来了。”

“试用而已,还没掏钱。”

“试用完掏钱,你等着。”

张宇廷把手机放下,打开代码编辑器继续写。周明在旁边敲键盘,孙晓戴着耳机改页面,吴倩对着屏幕跑测试用例。王丽敏坐在门口接电话,声音压得低,但听得出来是客户。

张宇廷写了一会儿代码,抬头看了一眼窗外。对面那栋楼,前公司的招牌在日光底下反着光。

一年前他在那个楼里,年终奖六千,被关系户当众说代码写得烂,离职当天系统崩了。

一年后他在这个楼里,账上趴着近百万,手底下四个人,客户排着队,前公司成了他最大的稳定收入来源。

王丽敏挂了电话走过来。“发什么呆?”

“没发呆。想一个问题。”

“什么问题?”

“明年这个时候,账上能不能过两百万。”

王丽敏把计算器拍在他桌上。“你先把代码写完。账我来算。”

张宇廷笑了一声,低头继续写。键盘声、鼠标声、孙晓跟吴倩讨论页面的声音混在一起,办公室里没停过。

傍晚六点,王丽敏关了电脑站起来。“今天周五,都早点走。下周一开始忙产品,周末好好休息。”

周明关了电脑,吴倩把测试报告存盘,孙晓把设计稿保存。三个人打了招呼走了。

张宇廷还在写。王丽敏靠在门框上等他。“走不走?”

“写完这个函数。”

“你去年在那家公司加班到凌晨,也是这么说的。”

张宇廷敲完最后一行代码,点了保存,合上电脑。“去年加班是给别人干,今天加班是给自己干。”

“有什么不一样?”

“不一样。去年我改完代码,年终奖六千。今天我自己改的代码,明年能卖五千一年。”

王丽敏把灯关掉,两人出门锁门。楼道里灯有点暗,张宇廷走在前面,王丽敏跟在后面。

下了楼,对面那栋楼的灯还亮着几盏。张宇廷看了一眼,转过头往家走。

王丽敏问他:“你恨他们吗?”

张宇廷想了想。“不恨。”

“为什么?”

“要不是他们,我可能还在那个工位上坐着,以为自己只值六千。”

王丽敏没再说话。两人走到路口等红灯。张宇廷的手机响了一声,微信推送。孙总发了一条朋友圈,配图是公司年会照片,底下写着“感谢团队一年付出,明年再创辉煌”。

张宇廷点了个赞,锁屏。

绿灯亮了,两人过了马路。王丽敏说:“明天去趟超市,家里冰箱空了。”

“买什么?”

“买点肉和菜,把周明他们叫家里来吃顿饭。新办公室搬了,还没庆祝过。”

“行。你定。”

两人往小区门口走。张宇廷掏出手机看了一眼公司账户余额,又锁了屏,揣回兜里。

“明年这个时候,”他说,“我要让钱松来跟我们签年度合同,不是我们去前公司驻场。”

“那你得先把产品做出来。”

“已经在做了。”

走到楼下,张宇廷按了电梯,王丽敏站在旁边刷手机。电梯门开,两人进去。

张宇廷按了楼层,电梯往上走。他看着电梯门上的倒影,忽然说了一句:“王丽敏,谢谢你。”

“谢什么?”

“谢谢你当初把那张猎头名片放在餐桌上。”

王丽敏看了他一眼。“那张名片你一直没打。”

“没打是因为当时还没想通。想通了之后发现,自己干比打名片上的电话强。”

电梯到了,门打开。王丽敏先走出去,掏钥匙开门。张宇廷跟在后面,进门换了拖鞋,往沙发上一坐。

茶几上放着一份打印好的文件。他拿起来看了一眼,是王丽敏打印的公司明年业务规划,第一页第一行写着一句话:

“目标:把‘极客接口管家’卖给五十家公司,年费收入二十五万。”

张宇廷翻到第二页。底下还有一行小字,是王丽敏的笔迹:

“张宇廷,你值多少钱,你自己说了算。”

全文完。

沪ICP备16008431号-1

本站所有内容都已取得正版授权,且不适合未成年人观看。版权声明 - 投稿声明 - 自审制度 - 免责声明