我认识张佳琪那天,穿的是公司发的文化衫。
胸前印着“Code Hard“,鞋尖磨得发白,是去年双十一加班时踩开水瓶被腐蚀的,一直没舍得扔。朋友张伟非拉着我去参加他的生日聚会,说这次来了不少“优质单身女性“,让我务必收拾一下。
我收拾了。洗了头,把那件领口有点变形但还算干净的文化衫套上,临走前还喷了点六神花露水。这是我能想到的最正式的出门仪式。
出门前我在镜子前站了三秒。镜子里的人穿着不合身的衣服,头发有点乱,眼睛下面有淡淡的黑眼圈。最近项目赶得紧,已经连续一周凌晨才睡了。我自嘲地笑了笑,拿起钥匙出门。电梯里遇到隔壁的阿婆,她看了我一眼,说:「小伙子,今天有约会啊?」我嗯了一声,脸有点烫。
西二旗的地铁站人山人海,我挤在人群里,手里攥着张伟发来的地址。地铁开动的时候,窗外的广告牌一闪而过,我盯着那些广告看了很久,脑子里一直在想一会儿该怎么跟陌生人聊天。我这个人,跟电脑说话比跟人说话自在多了。
聚会在朝阳区的一家日料店,包间里灯光明亮,空气里有股柠檬草和清酒混合的味道。我推门进去的时候,里面已经坐了六七个人,张伟在跟我招手。张佳琪是张伟公司的客户,那天正好也在。她穿着一条白色吊带裙,手腕上那块卡地亚蓝气球我瞄了一眼,六万多。我当时手里攥着一杯扎啤,泡沫溢出来流在手背上,赶紧用另一只手去擦,样子挺狼狈。旁边有人看了我一眼,我赶紧把那只湿手在裤子上蹭了蹭。
包间里大概有十来个人,除了张伟,我一个都不认识。那些人聊的是上个月去的马尔代夫、是新开的米其林餐厅、是最近哪只股票又涨了。我插不上话,就坐在角落喝啤酒,默默地当背景板。
张伟把我介绍给张佳琪的时候,她跟旁边一个女生正在聊天。那个女生化着精致的妆,染着栗色的大波浪,穿着一件皮草马甲,一看就是那种很贵的朋友。两个人头凑在一起,像是在分享什么秘密,看见我过来,才漫不经心地抬起头来。
「佳琪,这是我大学同学,阿城,做技术的。」张伟说。
张佳琪转过头来,上下扫了我一眼。那眼神不像在打量一个人,像在看一件过季的尾货。她先看了一眼我胸口「Code Hard」那几个字,眼神里闪过一丝不易察觉的嘲笑,然后看向我的鞋尖,停留了两秒,嘴角牵了牵。
“程序员好啊,“她说,“稳定。“
我当时没品出这话里的意思。后来才知道,她加我微信不是对我感兴趣,是她爸张建国的公司要搞个支付系统项目,找了一圈,发现圈子里就我一个干这行的,勉强把我列入候选名单。那段时间她对我格外热情,每天主动找我聊天,问我各种技术问题,我当时还窃喜,以为自己的春天真的要来了。
那个穿皮草马甲的女生在旁边笑得前仰后合,说:「佳琪你什么时候对程序员感兴趣了?上次你可是说找男朋友至少要开保时捷的。」
张佳琪瞪了她一眼,笑着说:「小芸你别胡说。」
后来我才知道那个女生叫林小芸,是张佳琪的闺蜜,嘴比脑子快,什么话都敢说。林小芸上下打量了我一番,目光在我那件文化衫上多停留了两秒,然后凑到张佳琪耳边小声说了句什么,张佳琪笑得直不起腰。
这话是张佳琪亲口说的。一个月后,在三里屯的一家高档日料店,包间里只有我们两个人。那天是周五,我特意请了一下午假,从西二旗坐了将近一个半小时地铁才到。地铁上人很多,我被挤在车门边,后背全是汗。日料店的环境很好,背景是柔和的爵士乐,服务生穿白衬衫打领结,一举一动都很讲究。我局促地坐在那里,感觉自己的牛仔裤跟周围的环境格格不入,邻桌的女人看了我一眼,我赶紧低头看菜单。
「什么标准?」我问。
“首先,车。“她夹起一片三文鱼,“我闺蜜小芸的男友开宝马五系,你不能太差吧?“
我低头扒饭。我当时骑的是一辆二手电动车,两千块,每周充两次电,续航四十公里。冬天的时候电瓶衰减,有时候骑到半路就没电了,得推着走。
「其次,房子。我滨江有一套,一百四十平。结婚的话你也得有一套,不用大,九十平就行。」
滨江的房价我查过,三万多一平,九十平首付得一百多万。我算了算,相当于我不吃不喝十年的收入。
“还有,“她放下筷子,用纸巾擦了擦嘴角,“你那些格子衫,能不能换换?我带你去的场合,你穿那玩意儿去,我脸上真的挂不住。“
我张了张嘴,发现没什么可说的。桌上的寿喜锅冒着热气,我的筷子悬在半空中,夹起一片牛肉又放下。服务生过来加水,我赶紧把筷子收了。那顿饭吃了快两个小时,我吃了不到半碗饭,肚子是空的,心里也是空的。
那天晚上我回到二十平的出租屋,卫生间和厨房跟另外两家合租。隔壁在放电视,声音很大,是湖南台的娱乐节目,笑声一阵一阵的。电脑屏幕亮着,跳着密密麻麻的代码。那是我维护的一个开源项目,全球一万多开发者用着,上周刚有人给我捐了五十美元,我高兴了半天。
屏幕上是一封 issue,一个德国开发者报告了一个安全漏洞。我盯着看了十分钟,脑子里乱乱的。然后给张佳琪发了一条微信:「我们算了吧。」
她秒回:「你想清楚了?」
“嗯。“
“行,“她说,“你别后悔。“
我没回。手机扣在桌上,屏幕暗下去,映出我那张没什么表情的脸。窗外是BJ冬天的冷风,拍在玻璃上啪啪响。
说实话,我当时的目标特别简单:想找一个能看懂我工作的人。我觉得这个要求不算高吧?显然张佳琪不是。她对技术的理解停留在“程序员=修电脑“的阶段,而且她对“修电脑“的理解还停留在“为什么不重启试试“的水平。而我想要的是一个能听懂我在说什么的人。
我关上电脑,躺在床上,盯着天花板。天花板上有一块水渍,是楼上漏水留下的,呈不规则的圆形,像一只眼睛。我想起张佳琪看我的眼神,那种眼神里没有好奇,没有兴趣,只有估价。像是在看一件标价过低、犹豫着要不要买下的商品。我翻了个身,把脸埋进枕头里,枕头上有股洗洁精的味道,是室友洗了碗塞我房间里的。
窗外的风更大了,吹得窗户嗡嗡响。我拉高被子,把自己裹成一团。脑子里反反复复出现张佳琪那张脸,还有她说那些话时的表情。我知道她没说错,我确实穷。但穷不是错,错的是她把穷当成了衡量一个人的唯一标准。
---
三个月后,我们又碰上了。
同一个朋友聚会,张伟的另一个朋友升职请大家吃饭,在工体附近的一家火锅店。她身边站了个新男人,李泽。从旁人的窃窃私语里我知道,这是她爸合作方老板的儿子,做房地产的,据说家里身家过亿。
我穿了件干净但不新的大衣,还是骑电动车来的。BJ冬天的冷风灌进领口,我把手揣进兜里。进门正好撞见张佳琪和李泽在玄关说话。她看见我,先是一愣,然后撇了撇嘴,像撞见了什么扫兴的东西。
「阿城?你怎么来了?」
「张伟叫我。」
李泽上下打量我,那眼神和张佳琪当初一模一样,只是更赤裸,像在给一件商品估价。他穿着范思哲的毛衣,手腕上那块百达翡丽我扫了一眼,大概二十多万。
“佳琪的朋友?“他笑了笑,伸出手,“幸会,李泽。“
我跟他握了手。他的手很软,保养得很好,不像我这双常年敲键盘、指节有点变形的手。
“阿城是做技术的,“张佳琪在旁边说,语气里带着种奇怪的强调,好像在解释一件让人费解的事,“程序员。“
“哦,技术人才,“李泽挑了挑眉,“现在互联网不行了吧?好多公司都在裁员。我听说你们程序员三十五岁就要被优化了,是真的吗?“
我没说话。
张伟赶紧打圆场:「来来来,入座入座,菜都上了。」
包间里有一张大圆桌,中间是铜锅,炭火烧得正旺。李泽很自然地坐在了张佳琪身边,帮她拉椅子,递菜单,一副主人的姿态。我找了个最靠门的位置坐下,离他们最远。
林小芸坐在李泽的另一边,像是一副陪衬。她看见我,挑了挑眉,没说话,但嘴角那抹笑说明她记得我。整个饭局她都在跟李泽套近乎,时不时瞟我一眼,像是在等着看好戏。
聚会过半,李泽站起来,清了清嗓子。全场安静下来,几双眼睛都看向他。
“借这个机会宣布件事,“他搂过张佳琪的肩膀,手指在她锁骨上摩挲,声音不大但所有人都能听见,“我和佳琪正式在一起了,年底订婚。“
掌声、起哄声。张佳琪笑得花枝乱颤,伸手轻轻打了他一下:「讨厌,这么多人看着呢。」
然后李泽看向我,话锋一转:「阿城也在啊,听说你和佳琪之前处过一段?」
全场又安静了。几双眼睛在我身上转了转,那种目光很复杂,有好奇、有同情、更多的是等着看热闹的期待。
张佳琪脸色变了:「李泽你别胡说,我和阿城就是普通朋友。」
“哦?“李泽挑了挑眉,“佳琪跟我说过,说之前有个男的追她,程序员,穿得特别土,送过最贵的礼物是个两百块的机械键盘,最后被人家甩了。“
他说这话的时候,声音没压低。在场所有人都能听见。有人低下头假装玩手机,有人把嘴捂了起来,有人在憋笑。那个林小芸笑得最厉害,肩膀都在抖。
张佳琪拉他袖子:「别说了。」
但李泽没打算停。他往前迈了一步,直视着我,那种眼神像是在欣赏自己的战利品:「阿城,我直说你别介意。男人穷不要紧,但穷得有骨气。你追佳琪的时候,是不是送过她一个机械键盘?」
我摇头。
“没有?“他愣了一下,“那送过什么?“
「什么都没送过。」
李泽像是听见了什么好笑的事,哈哈笑了两声,整个包间都能听见他的笑声:「你看,连追女生的基本功课都不做,活该被人甩。」
周围有人笑了,是那种尴尬的笑。张伟想说什么,被我伸手拦住了。我知道他想帮我解围,但我不想让他为难。我低头看了看手里的橙汁,杯壁上凝结的水珠滑落,在桌面上留下一圈水印。
林小芸在旁边笑得最凶,手里的筷子都差点掉了。她看了李泽一眼,又看了我一眼,眼神里满是嘲讽。我知道她在想什么,她觉得我像个跳梁小丑。
没关系,我心想。笑吧,你们现在笑得有多开心,待会儿就有多尴尬。
“李泽,“我开口,声音不大,“你们公司上次要做支付系统,甲方要求对接三个银行渠道,你找了三家公司,报价分别是八十万、一百万和一百二十万。你选了最贵的那家,因为觉得便宜没好货。“
李泽的表情凝固了。
“那家一百二十万的 CTO是我大学同学,“我继续说,看着他眼睛,“你猜他那边的进度怎么样了?还有,你们上次做的那款 APP,上线第三天就崩了,因为服务器配置是你们技术总监贪便宜买的二手货。“
李泽的脸绿了。
“张佳琪,“我转向她,她看起来有些不安,手指绞在一起,“你爸上次给我打电话,问我去不去你们公司做技术顾问,年薪一百万,我拒绝了。“
我拿起外套,往门口走。
身后很安静,一点声音都没有。只有火锅还在咕嘟咕嘟地冒着泡,蒸汽往上飘,弥漫在包间里。李泽的脸红一阵白一阵,张佳琪咬着嘴唇,林小芸的笑容僵在脸上。我推开门的时候,冷风灌了进来,我打了个寒颤,但心里却异常平静。
出了火锅店,我骑上电动车,BJ的夜空挂着几颗星星。冷风吹在脸上,我打了个喷嚏,但嘴角忍不住往上翘。
张伟追了出来,把一件外套塞给我:「兄弟,干得漂亮。」
我笑了笑,没说话。
电动车骑到半路,手机响了,是张建国发来的微信,只有三个字:「谢谢你。」
我没回。
---
那之后李泽确实记仇了。但我不在乎。
一周后的一个晚上,我接到了一个陌生号码的电话。是张佳琪她爸,张建国。声音沙哑,透着股化不开的疲惫。
「阿城,能见一面吗?」
我在公司楼下的咖啡馆见到了他。那家咖啡馆我常来,角落里靠窗的位置,我每次来都坐那里。今天的位置被别人占了,我换了个稍微远一点的位置。他头发花白,眉宇间全是倦意,比我上次在聚会上看见他时老了好几岁。他从公文包里拿出一台笔记本电脑,推到我面前,屏幕上还贴着公司的 logo。
「我们公司的支付系统出问题了。」
屏幕上是一堆报错日志,红色的错误信息一条接一条跳出来。我扫了两分钟就明白了。
“第三方接口的数据格式被改了,“我说,“你们技术团队没跟进更新,签名验证失败,所有交易都被拦截了。客户的钱扣了,但订单状态没有更新,客服电话被打爆了,昨天一天接了两千多个投诉。你们运营部的同事这周都在加班,我昨天看到一个姑娘在走廊里哭,说是被客户骂哭了。“
「能修吗?」张建国问,声音里带着点颤抖。
“能,三天。“
张建国看着我,眼神里有种我说不清的东西,像恳求,又像不甘。一个身家几亿的老板,在咖啡店里坐得像个做错事的孩子。
「阿城,佳琪上次跟我说了你们的事。我知道她对你态度不好,我替她道歉。」
我摇头。不用,都过去了。
“还有一个事,“他说,压低了声音,“李泽上次喝醉了说了一些话。他说,他安排了一个人在你们——不,在我们公司技术团队里。叫王磊。“
我愣了愣。窗外有人走过,留下一串脚步声。
---
第二天我去了张佳琪家的公司。
CBD一栋写字楼的三十三层,两百多号人。前台小姑娘看了张建国开的工牌介绍信,给了我一个临时门禁,我去了三楼技术部。
负责人叫刘明,三十出头,扎着马尾,说话挺利索。她给我腾了张办公桌,拉了几台电脑过来,键盘有点脏,我抽了张纸巾擦了擦。
“问题是这么个问题,“她说,眼睛有点红,看来这几天没少熬夜,黑眼圈很重,“我们试了所有办法,就是定位不到。第三方说他们没改接口,但我们这边所有的请求都返回签名错误。客户投诉电话从早到晚响,停机一天损失大概两百万。我已经三天没回家了,就睡在办公室的沙发上。“
「日志给我。」
她调出来。我看了两个小时,咖啡喝了三杯。屏幕上的红色错误信息一条一条跳,像在嘲笑我们。然后问:「技术总监是谁?」
“王磊。“
「叫他过来。」
王磊来了,四十多岁,地中海发型,西装笔挺,皮鞋擦得发亮。看见我,眼神闪了一下,然后很快恢复了平静。
“王总监,“我没绕弯,“支付系统的 API密钥,谁在管?“
“我,“他顿了顿,“怎么了?“
「给我看看。」
他犹豫了一下,掏出一张纸条。我接过,输入系统,跑了一串命令。
屏幕上跳出一串日志。在故障发生的前一天,有人用管理员身份修改了接口配置,把签名算法从 RSA-SHA256换成了 MD5,然后又改了回去。但中间那段时间的交易数据已经被破坏了。
「这是谁改的?」我问,盯着屏幕。
王磊的脸色变了。
“你什么意思?“他站起来,声音有点高,“系统出问题很正常,有必要追责吗?你一个外人,有什么资格查我们公司的系统?“
“我是张叔叔请来的技术顾问,“我说,“我现在就有这个资格。“
他沉默了两秒,说:「是我。」
“为什么?“
“我不知道你在说什么,“他抓起外套往外走,“我还有事,失陪。“
我拉住他手腕。他力气不小,但我也不是吃素的。大学时校队散打,虽然现在很少练,抓个人还是稳的。
“放开!“
技术部几个同事围了过来,场面有点僵。刘明在旁边看着,没说话,但手已经摸到了手机。
就在这时,张建国走了进来。
「怎么回事?」
“王总监改了接口配置,“我说,“导致系统故障。他在故障前一天把签名算法换成 MD5,把交易数据破坏,然后又改回去,想做成第三方接口问题的假象。但他忘了一点,MD5的签名长度和 RSA不一样,系统日志里有记录,每一次修改都被记录下来了。“
张建国看向王磊。
王磊的脸涨得通红。他看了张建国一眼,突然猛甩我的手,夺门而逃。
「追!」张建国喊道。
保安追了出去,但王磊已经跑没影了。走廊里传来一阵杂乱的脚步声,技术部的同事都探出头来看。
我转身对张建国说:「他跑不远。我查过了,他最近在跟你们竞争对手恒远科技接触,频繁登录竞品公司的内网。他在你这里拿的东西,够他在那边换份更好的工作,而且是背着你干的。我建议你查一下最近三个月的数据库访问记录,应该有惊喜。」
张建国沉默了,手在抖。他掏出手机,打了个电话,声音压得很低,但我能听出来他在生气。
“王磊在公司三年了,“他挂了电话,看着我,“我没想到会是他。“
“很多人经不起诱惑,“我说,“尤其是当他觉得自己的付出没有得到相应回报的时候。“
张建国点了点头,没说话。
---
王磊是当天晚上在城西一家快捷酒店被抓的。
警察找上门的时候,他正在跟对方公司的技术负责人通电话,商量数据交接的事。电话内容被我提前录了下来,证据确凿。
他被带走的时候看着我,说了一句话:「你哪来的权限查这些?」
我没回答。
那个晚上,我在出租屋里敲代码,敲到凌晨三点。窗外的风停了,月亮出来了,照在电脑屏幕上,代码的反光有点刺眼。我敲完最后一个字符,按下了提交键,然后倒头就睡。梦里全是红色的错误日志,一条一条地跳,跳得我头疼。
系统恢复正常是在第三天早上。客户投诉平息了,监管那边也过关了。张建国为了感谢我,在公司大厅给我开了一张一百万的支票,当着所有员工的面。技术部的同事都围了过来,有人鼓掌,有人窃窃私语。
我没接。
“不用了,“我说,“你打电话的时候我就说了,我不是为钱来的。“
张建国看着我,眼神复杂。他没说什么,把支票收回了公文包。临走前,他拍了拍我的肩膀,说:「以后有需要帮忙的地方,尽管开口。」
我点了点头,没说话。
那晚我收到一条陌生号码发来的微信,是张佳琪。
听爸说,你帮他解决了问题?
“嗯。“
你为什么帮他?
我没回。
她又发了条:「爸说你拒绝了那一百万。」
还是没回。
“阿城,“第三条,“我们能不能见一面?“
我看着屏幕,看了很久,然后扣上手机。窗外的月亮很圆,是个十五。
---
我们在工体附近的一家酒吧见的。
她比上次见面憔悴多了,眼里的血丝藏都藏不住,妆也化得有点乱,眼线晕开了一小块。李泽的事我听说了——他公司出了财务问题,欠了一屁股债,挪用公款的证据被人捅了出来,人已经出国「避风头」了,留下张佳琪一个人在国内收拾残局。
酒吧里灯光很暗,音乐很大声,是一首我叫不出名字的英文歌。我找了个角落的位置,她坐下来的时候,高跟鞋蹭到了我的裤腿。
“说吧,“我坐下来,“什么事?“
她给我点酒,我摆了摆手,要了杯苏打水。
「我怀孕了,」她说。
我愣了。
酒吧的音乐震得桌子上的酒杯都在晃。我看见她的嘴唇在抖,手也在抖。
“李泽的,“她吸了口气,“但他走了,联系不上。爸现在气得不行,说我把家里脸丢尽了。“
我沉默了很久。旁边一桌人在欢呼,一瓶香槟喷得老高,有人在大声笑。
「你找我是想让我帮忙联系他?」
她摇头。
“不是,“她看着我,眼泪掉了下来,在昏暗的灯光里一闪一闪的,“阿城,我知道错了。“
我等着她说下去。
「我以前真的觉得,人这一辈子,找个有钱有势的男人才是正经事。我爸妈从小就这么教育我,我从来没觉得有什么问题。我甚至觉得,钱能解决所有问题。」
她顿了顿,吸了吸鼻子。
「但李泽走了之后我才明白,钱是有价的,一个人的品质,是无价的。阿城,我这次真的看清楚了,你给我一个机会,让我重新了解你,好不好?」
我看着她的眼睛。那双眼睛里确实有真诚,但更多的是 desperation——那种走投无路时才抓住的 desperate。
“佳琪,“我说,“你现在来找我,是因为你走投无路了,不是因为你知道了我是什么样的人。“
我站起来。
“等一下,“她叫住我,声音里带着哭腔,周围有人看过来,“你是不是觉得我特别势利?“
“是。“
我说得很直接。
“但我真的变了,“她说,眼泪掉得更凶,“我现在知道,钱买不来真心,也解决不了所有问题。阿城,我这次是认真的。我搬出来了,自己租了个小房子,李泽的孩子我决定自己养,不再依靠家里。我开始学编程了,买了本《Python入门》,每天看两个小时。我知道我配不上你,但我愿意改。“
我看着她的眼睛,那双眼睛里确实有东西在闪烁。但我已经分不清那是真诚,还是绝望中的挣扎。
我没说话,转身走了。
---
又过了一个月。
我照常上班、写代码、改 bug,生活没什么变化。张佳琪偶尔发微信,我没回。她发的那些消息,我看了开头就知道内容,无非是“我今天学了什么“、“我觉得代码好难“、“你有没有空“之类的。我没回,也没删,就让它们躺在那里。
朋友圈里偶尔能看到她的动态。她发了一张书桌的照片,上面摆着一台 MacBook和一本翻开的《Python入门》,配文是“第一天,print('Hello World')“。我看了,没点赞,没评论。
张建国又找我聊过一次,是在公司楼下的咖啡馆,还是那个靠窗的位置。是关于公司技术架构升级的事,我给了他一整套方案,他收下了,没提钱。走的时候他看着我,说:「阿城,佳琪最近很努力,你要是愿意——」
“张叔叔,“我打断他,“过去的事就让它过去吧。“
他没再说什么,叹了口气,走了。
秋天的时候,BJ的风已经有点凉了。银杏叶开始变黄,落在地上,踩上去沙沙响。我接到了一个来自硅谷的电话。
是一家全球知名的开源公司,叫 Inferra,他们想邀请我加入核心开发团队,负责一个重要的分布式系统项目。薪资是国内的三倍,还给解决绿卡,家属可以随行。
电话那头是个女声,英语说得很标准,听起来很专业。她告诉我,他们在 GitHub上看到了我的开源项目,觉得我的技术能力和架构思路非常适合他们正在做的东西。
“我们看了你写的那个调度算法,“她说,“真的很 elegant。“
我挂了电话之后,在座位上坐了十分钟。窗外是BJ的天,灰蒙蒙的,但远处有几栋楼的玻璃幕墙在阳光下闪闪发亮。
我考虑了三天,答应了。
临走前那个晚上,张佳琪给我发了一条很长很长的微信。我坐在出租屋的电脑前,一条一条地读。她说她搬出来了,自己租了个小房子,李泽的孩子她决定自己养,不再依靠家里。她说她开始学编程了,买了本《Python入门》,每天看两个小时,虽然很多都看不懂,但她会努力的。她说她知道我可能永远不会原谅她,但她想试试,想让自己变得配得上我。
最后她说:「阿城,祝你一切顺利。你是我这辈子见过最优秀的程序员,也是最优秀的男人。谢谢你曾经愿意给我机会,虽然我把它搞砸了。」
我读完了。然后把对话框删了。
不是因为恨,是因为我知道,有些人只能陪你走一段路。那段路结束了,就该各走各的。
机场送行的是我一个人。虹桥机场 T2航站楼,我背着一个双肩包,里面装着电脑和几件衣服。我没告诉太多人,只跟张伟和几个关系好的同事打了招呼。
张伟想帮我买张机票一起去,被我拒绝了。我说:「我自己能行。」
“你到了那边,“张伟拍了拍我的肩膀,“常联系。“
“嗯。“
飞机起飞的那一刻,我看着窗外的城市越来越小,黄浦江像条细细的银线,苏州河甚至看不见。那些高楼大厦变成了一小块一小块的积木,那些我住了好几年的出租屋、那些我常去的咖啡馆、那些我跟张佳琪一起去过的地方,都在慢慢变小。
我打开笔记本电脑,屏幕上是我这段时间一直在写的代码,已经进入了最后阶段。那是一个叫「FlowScheduler」的项目,是我花了半年时间写的,专门解决分布式任务调度的问题。我打算把它开源出去,算是给这个行业留点东西。
空姐走过来,问我要不要什么。我摇了摇头,然后闭上了眼睛。
我想起三个月前那个火锅店里,李泽当众羞辱我的场景。想起张佳琪看我的眼神。想起那个穿着格子衫、蹬着磨破鞋子的自己。
我没有愤怒,也没有得意。就是觉得,人生挺有意思的。
有些人注定只是你生命里的一个过客。他们来,是为了给你上一课,然后离开。
而我,要去的地方,他们根本想象不到。
飞机穿过云层,舷窗外是白茫茫的一片。我睁开眼,开始写代码。代码在屏幕上滚动,一行一行的,像是一首我写给自己听的歌。
落地旧金山的时候,是当地时间早上七点。我打开手机,有几条未读消息。张建国发来的,说他看了我给他的架构方案,觉得很受益,公司已经按那个方向在改了。张伟发来的,说他跟林小芸在一起了,说我当初在火锅店的表现太帅了,让他有了勇气。
我笑了笑,没回。
到了 Inferra的办公室,接待我的是一个叫 Sarah的工程师,金发碧眼,笑起来很甜。她带我去工位,说我的项目会在下周一正式开始,团队里有八个人,都是来自世界各地的顶尖开发者。
我坐下来,打开电脑,第一次连上了公司的内网。窗外是加州的阳光,照在棕榈树上,叶子闪闪发亮。
我忽然想起张佳琪。不知道她现在怎么样了,那个《Python入门》她有没有继续看下去。我打开朋友圈,她的最新动态是一张 B超照片,配文是「你好,小程序员」。
我看了三秒,然后关掉了手机。
每个人都有自己的人生要面对。我有我的代码要写,她有她的孩子要养。我们曾经交叉过,然后又各自分开,这才是人生的常态。
我打开代码编辑器,敲下了第一行注释:
//FlowScheduler v1.0-Dedicated to those who never gave up.
飞机已经爬升到一万米的高空,窗外的云海翻涌,像一片白色的海洋。我敲下这行注释的时候,心里出奇的平静。
然后开始写代码。我认识张佳琪那天,穿的是公司发的文化衫。
胸前印着「Code Hard「,鞋尖磨得发白,是去年双十一加班时踩开水瓶被腐蚀的,一直没舍得扔。朋友张伟非拉着我去参加他的生日聚会,说这次来了不少「优质单身女性「,让我务必收拾一下。
我收拾了。洗了头,把那件领口有点变形但还算干净的文化衫套上,临走前还喷了点六神花露水。这是我能想到的最正式的出门仪式。
出门前我在镜子前站了三秒。镜子里的人穿着不合身的衣服,头发有点乱,眼睛下面有淡淡的黑眼圈。最近项目赶得紧,已经连续一周凌晨才睡了。我自嘲地笑了笑,拿起钥匙出门。电梯里遇到隔壁的阿婆,她看了我一眼,说:「小伙子,今天有约会啊?」我嗯了一声,脸有点烫。
西二旗的地铁站人山人海,我挤在人群里,手里攥着张伟发来的地址。地铁开动的时候,窗外的广告牌一闪而过,我盯着那些广告看了很久,脑子里一直在想一会儿该怎么跟陌生人聊天。我这个人,跟电脑说话比跟人说话自在多了。
聚会在朝阳区的一家日料店,包间里灯光明亮,空气里有股柠檬草和清酒混合的味道。我推门进去的时候,里面已经坐了六七个人,张伟在跟我招手。张佳琪是张伟公司的客户,那天正好也在。她穿着一条白色吊带裙,手腕上那块卡地亚蓝气球我瞄了一眼,六万多。我当时手里攥着一杯扎啤,泡沫溢出来流在手背上,赶紧用另一只手去擦,样子挺狼狈。旁边有人看了我一眼,我赶紧把那只湿手在裤子上蹭了蹭。
包间里大概有十来个人,除了张伟,我一个都不认识。那些人聊的是上个月去的马尔代夫、是新开的米其林餐厅、是最近哪只股票又涨了。我插不上话,就坐在角落喝啤酒,默默地当背景板。
张伟把我介绍给张佳琪的时候,她跟旁边一个女生正在聊天。那个女生化着精致的妆,染着栗色的大波浪,穿着一件皮草马甲,一看就是那种很贵的朋友。两个人头凑在一起,像是在分享什么秘密,看见我过来,才漫不经心地抬起头来。
「佳琪,这是我大学同学,阿城,做技术的。」张伟说。
张佳琪转过头来,上下扫了我一眼。那眼神不像在打量一个人,像在看一件过季的尾货。她先看了一眼我胸口「Code Hard」那几个字,眼神里闪过一丝不易察觉的嘲笑,然后看向我的鞋尖,停留了两秒,嘴角牵了牵。
「程序员好啊,」她说,「稳定。」
我当时没品出这话里的意思。后来才知道,她加我微信不是对我感兴趣,是她爸张建国的公司要搞个支付系统项目,找了一圈,发现圈子里就我一个干这行的,勉强把我列入候选名单。那段时间她对我格外热情,每天主动找我聊天,问我各种技术问题,我当时还窃喜,以为自己的春天真的要来了。
那个穿皮草马甲的女生在旁边笑得前仰后合,说:「佳琪你什么时候对程序员感兴趣了?上次你可是说找男朋友至少要开保时捷的。」
张佳琪瞪了她一眼,笑着说:「小芸你别胡说。」
后来我才知道那个女生叫林小芸,是张佳琪的闺蜜,嘴比脑子快,什么话都敢说。林小芸上下打量了我一番,目光在我那件文化衫上多停留了两秒,然后凑到张佳琪耳边小声说了句什么,张佳琪笑得直不起腰。
这话是张佳琪亲口说的。一个月后,在三里屯的一家高档日料店,包间里只有我们两个人。那天是周五,我特意请了一下午假,从西二旗坐了将近一个半小时地铁才到。地铁上人很多,我被挤在车门边,后背全是汗。日料店的环境很好,背景是柔和的爵士乐,服务生穿白衬衫打领结,一举一动都很讲究。我局促地坐在那里,感觉自己的牛仔裤跟周围的环境格格不入,邻桌的女人看了我一眼,我赶紧低头看菜单。
「什么标准?」我问。
「首先,车。」她夹起一片三文鱼,「我闺蜜小芸的男友开宝马五系,你不能太差吧?」
我低头扒饭。我当时骑的是一辆二手电动车,两千块,每周充两次电,续航四十公里。冬天的时候电瓶衰减,有时候骑到半路就没电了,得推着走。
「其次,房子。我滨江有一套,一百四十平。结婚的话你也得有一套,不用大,九十平就行。」
滨江的房价我查过,三万多一平,九十平首付得一百多万。我算了算,相当于我不吃不喝十年的收入。
「还有,」她放下筷子,用纸巾擦了擦嘴角,「你那些格子衫,能不能换换?我带你去的场合,你穿那玩意儿去,我脸上真的挂不住。」
我张了张嘴,发现没什么可说的。桌上的寿喜锅冒着热气,我的筷子悬在半空中,夹起一片牛肉又放下。服务生过来加水,我赶紧把筷子收了。那顿饭吃了快两个小时,我吃了不到半碗饭,肚子是空的,心里也是空的。
那天晚上我回到二十平的出租屋,卫生间和厨房跟另外两家合租。隔壁在放电视,声音很大,是湖南台的娱乐节目,笑声一阵一阵的。电脑屏幕亮着,跳着密密麻麻的代码。那是我维护的一个开源项目,全球一万多开发者用着,上周刚有人给我捐了五十美元,我高兴了半天。
屏幕上是一封 issue,一个德国开发者报告了一个安全漏洞。我盯着看了十分钟,脑子里乱乱的。然后给张佳琪发了一条微信:「我们算了吧。」
她秒回:「你想清楚了?」
「嗯。」
「行,」她说,「你别后悔。」
我没回。手机扣在桌上,屏幕暗下去,映出我那张没什么表情的脸。窗外是BJ冬天的冷风,拍在玻璃上啪啪响。
说实话,我当时的目标特别简单:想找一个能看懂我工作的人。我觉得这个要求不算高吧?显然张佳琪不是。她对技术的理解停留在「程序员=修电脑「的阶段,而且她对「修电脑「的理解还停留在「为什么不重启试试「的水平。而我想要的是一个能听懂我在说什么的人。
我关上电脑,躺在床上,盯着天花板。天花板上有一块水渍,是楼上漏水留下的,呈不规则的圆形,像一只眼睛。我想起张佳琪看我的眼神,那种眼神里没有好奇,没有兴趣,只有估价。像是在看一件标价过低、犹豫着要不要买下的商品。我翻了个身,把脸埋进枕头里,枕头上有股洗洁精的味道,是室友洗了碗塞我房间里的。
窗外的风更大了,吹得窗户嗡嗡响。我拉高被子,把自己裹成一团。脑子里反反复复出现张佳琪那张脸,还有她说那些话时的表情。我知道她没说错,我确实穷。但穷不是错,错的是她把穷当成了衡量一个人的唯一标准。
---
三个月后,我们又碰上了。
同一个朋友聚会,张伟的另一个朋友升职请大家吃饭,在工体附近的一家火锅店。她身边站了个新男人,李泽。从旁人的窃窃私语里我知道,这是她爸合作方老板的儿子,做房地产的,据说家里身家过亿。
我穿了件干净但不新的大衣,还是骑电动车来的。BJ冬天的冷风灌进领口,我把手揣进兜里。进门正好撞见张佳琪和李泽在玄关说话。她看见我,先是一愣,然后撇了撇嘴,像撞见了什么扫兴的东西。
「阿城?你怎么来了?」
「张伟叫我。」
李泽上下打量我,那眼神和张佳琪当初一模一样,只是更赤裸,像在给一件商品估价。他穿着范思哲的毛衣,手腕上那块百达翡丽我扫了一眼,大概二十多万。
「佳琪的朋友?」他笑了笑,伸出手,「幸会,李泽。」
我跟他握了手。他的手很软,保养得很好,不像我这双常年敲键盘、指节有点变形的手。
「阿城是做技术的,」张佳琪在旁边说,语气里带着种奇怪的强调,好像在解释一件让人费解的事,「程序员。」
「哦,技术人才」李泽挑了挑眉,「现在互联网不行了吧?好多公司都在裁员。我听说你们程序员三十五岁就要被优化了,是真的吗?」
我没说话。
张伟赶紧打圆场:「来来来,入座入座,菜都上了。」
包间里有一张大圆桌,中间是铜锅,炭火烧得正旺。李泽很自然地坐在了张佳琪身边,帮她拉椅子,递菜单,一副主人的姿态。我找了个最靠门的位置坐下,离他们最远。
林小芸坐在李泽的另一边,像是一副陪衬。她看见我,挑了挑眉,没说话,但嘴角那抹笑说明她记得我。整个饭局她都在跟李泽套近乎,时不时瞟我一眼,像是在等着看好戏。
聚会过半,李泽站起来,清了清嗓子。全场安静下来,几双眼睛都看向他。
「借这个机会宣布件事,」他搂过张佳琪的肩膀,手指在她锁骨上摩挲,声音不大但所有人都能听见,「我和佳琪正式在一起了,年底订婚。」
掌声、起哄声。张佳琪笑得花枝乱颤,伸手轻轻打了他一下:「讨厌,这么多人看着呢。」
然后李泽看向我,话锋一转:「阿城也在啊,听说你和佳琪之前处过一段?」
全场又安静了。几双眼睛在我身上转了转,那种目光很复杂,有好奇、有同情、更多的是等着看热闹的期待。
张佳琪脸色变了:「李泽你别胡说,我和阿城就是普通朋友。」
「哦?李泽挑了挑眉,「佳琪跟我说过,说之前有个男的追她,程序员,穿得特别土,送过最贵的礼物是个两百块的机械键盘,最后被人家甩了。」
他说这话的时候,声音没压低。在场所有人都能听见。有人低下头假装玩手机,有人把嘴捂了起来,有人在憋笑。那个林小芸笑得最厉害,肩膀都在抖。
张佳琪拉他袖子:「别说了。」
但李泽没打算停。他往前迈了一步,直视着我,那种眼神像是在欣赏自己的战利品:「阿城,我直说你别介意。男人穷不要紧,但穷得有骨气。你追佳琪的时候,是不是送过她一个机械键盘?」
我摇头。
「没有?「他愣了一下,「那送过什么?」
「什么都没送过。」
李泽像是听见了什么好笑的事,哈哈笑了两声,整个包间都能听见他的笑声:「你看,连追女生的基本功课都不做,活该被人甩。」
周围有人笑了,是那种尴尬的笑。张伟想说什么,被我伸手拦住了。我知道他想帮我解围,但我不想让他为难。我低头看了看手里的橙汁,杯壁上凝结的水珠滑落,在桌面上留下一圈水印。
林小芸在旁边笑得最凶,手里的筷子都差点掉了。她看了李泽一眼,又看了我一眼,眼神里满是嘲讽。我知道她在想什么,她觉得我像个跳梁小丑。
没关系,我心想。笑吧,你们现在笑得有多开心,待会儿就有多尴尬。
「李泽,」我开口,声音不大,「你们公司上次要做支付系统,甲方要求对接三个银行渠道,你找了三家公司,报价分别是八十万、一百万和一百二十万。你选了最贵的那家,因为觉得便宜没好货。」
李泽的表情凝固了。
「那家一百二十万的 CTO是我大学同学,」我继续说,看着他眼睛,「你猜他那边的进度怎么样了?还有,你们上次做的那款 APP,上线第三天就崩了,因为服务器配置是你们技术总监贪便宜买的二手货。」
李泽的脸绿了。
「张佳琪,」我转向她,她看起来有些不安,手指绞在一起,「你爸上次给我打电话,问我去不去你们公司做技术顾问,年薪一百万,我拒绝了。」
我拿起外套,往门口走。
身后很安静,一点声音都没有。只有火锅还在咕嘟咕嘟地冒着泡,蒸汽往上飘,弥漫在包间里。李泽的脸红一阵白一阵,张佳琪咬着嘴唇,林小芸的笑容僵在脸上。我推开门的时候,冷风灌了进来,我打了个寒颤,但心里却异常平静。
出了火锅店,我骑上电动车,BJ的夜空挂着几颗星星。冷风吹在脸上,我打了个喷嚏,但嘴角忍不住往上翘。
张伟追了出来,把一件外套塞给我:「兄弟,干得漂亮。」
我笑了笑,没说话。
电动车骑到半路,手机响了,是张建国发来的微信,只有三个字:「谢谢你。」
我没回。
---
那之后李泽确实记仇了。但我不在乎。
一周后的一个晚上,我接到了一个陌生号码的电话。是张佳琪她爸,张建国。声音沙哑,透着股化不开的疲惫。
「阿城,能见一面吗?」
我在公司楼下的咖啡馆见到了他。那家咖啡馆我常来,角落里靠窗的位置,我每次来都坐那里。今天的位置被别人占了,我换了个稍微远一点的位置。他头发花白,眉宇间全是倦意,比我上次在聚会上看见他时老了好几岁。他从公文包里拿出一台笔记本电脑,推到我面前,屏幕上还贴着公司的 logo。
「我们公司的支付系统出问题了。」
屏幕上是一堆报错日志,红色的错误信息一条接一条跳出来。我扫了两分钟就明白了。
「第三方接口的数据格式被改了,」我说,「你们技术团队没跟进更新,签名验证失败,所有交易都被拦截了。客户的钱扣了,但订单状态没有更新,客服电话被打爆了,昨天一天接了两千多个投诉。你们运营部的同事这周都在加班,我昨天看到一个姑娘在走廊里哭,说是被客户骂哭了。」
「能修吗?」张建国问,声音里带着点颤抖。
「能,三天。」
张建国看着我,眼神里有种我说不清的东西,像恳求,又像不甘。一个身家几亿的老板,在咖啡店里坐得像个做错事的孩子。
「阿城,佳琪上次跟我说了你们的事。我知道她对你态度不好,我替她道歉。」
我摇头。不用,都过去了。
「还有一个事,」他说,压低了声音,「李泽上次喝醉了说了一些话。他说,他安排了一个人在你们——不,在我们公司技术团队里。叫王磊。」
我愣了愣。窗外有人走过,留下一串脚步声。
---
第二天我去了张佳琪家的公司。
CBD一栋写字楼的三十三层,两百多号人。前台小姑娘看了张建国开的工牌介绍信,给了我一个临时门禁,我去了三楼技术部。
负责人叫刘明,三十出头,扎着马尾,说话挺利索。她给我腾了张办公桌,拉了几台电脑过来,键盘有点脏,我抽了张纸巾擦了擦。
「问题是这么个问题,」她说,眼睛有点红,看来这几天没少熬夜,黑眼圈很重,「我们试了所有办法,就是定位不到。第三方说他们没改接口,但我们这边所有的请求都返回签名错误。客户投诉电话从早到晚响,停机一天损失大概两百万。我已经三天没回家了,就睡在办公室的沙发上。」
「日志给我。」
她调出来。我看了两个小时,咖啡喝了三杯。屏幕上的红色错误信息一条一条跳,像在嘲笑我们。然后问:「技术总监是谁?」
「王磊。「
「叫他过来。」
王磊来了,四十多岁,地中海发型,西装笔挺,皮鞋擦得发亮。看见我,眼神闪了一下,然后很快恢复了平静。
「王总监,」我没绕弯,「支付系统的 API密钥,谁在管?」
「我,」他顿了顿,「怎么了?」
「给我看看。」
他犹豫了一下,掏出一张纸条。我接过,输入系统,跑了一串命令。
屏幕上跳出一串日志。在故障发生的前一天,有人用管理员身份修改了接口配置,把签名算法从 RSA-SHA256换成了 MD5,然后又改了回去。但中间那段时间的交易数据已经被破坏了。
「这是谁改的?」我问,盯着屏幕。
王磊的脸色变了。
「你什么意思?」他站起来,声音有点高,「系统出问题很正常,有必要追责吗?你一个外人,有什么资格查我们公司的系统?」
「我是张叔叔请来的技术顾问,」我说,「我现在就有这个资格。」
他沉默了两秒,说:「是我。」
「为什么?」
「我不知道你在说什么,」他抓起外套往外走,「我还有事,失陪。」
我拉住他手腕。他力气不小,但我也不是吃素的。大学时校队散打,虽然现在很少练,抓个人还是稳的。
「放开!」
技术部几个同事围了过来,场面有点僵。刘明在旁边看着,没说话,但手已经摸到了手机。
就在这时,张建国走了进来。
「怎么回事?」
「王总监改了接口配置,」我说,「导致系统故障。他在故障前一天把签名算法换成 MD5,把交易数据破坏,然后又改回去,想做成第三方接口问题的假象。但他忘了一点,MD5的签名长度和 RSA不一样,系统日志里有记录,每一次修改都被记录下来了。」
张建国看向王磊。
王磊的脸涨得通红。他看了张建国一眼,突然猛甩我的手,夺门而逃。
「追!」张建国喊道。
保安追了出去,但王磊已经跑没影了。走廊里传来一阵杂乱的脚步声,技术部的同事都探出头来看。
我转身对张建国说:「他跑不远。我查过了,他最近在跟你们竞争对手恒远科技接触,频繁登录竞品公司的内网。他在你这里拿的东西,够他在那边换份更好的工作,而且是背着你干的。我建议你查一下最近三个月的数据库访问记录,应该有惊喜。」
张建国沉默了,手在抖。他掏出手机,打了个电话,声音压得很低,但我能听出来他在生气。
「王磊在公司三年了,」他挂了电话,看着我,「我没想到会是他。」
「很多人经不起诱惑,」我说,「尤其是当他觉得自己的付出没有得到相应回报的时候。」
张建国点了点头,没说话。
---
王磊是当天晚上在城西一家快捷酒店被抓的。
警察找上门的时候,他正在跟对方公司的技术负责人通电话,商量数据交接的事。电话内容被我提前录了下来,证据确凿。
他被带走的时候看着我,说了一句话:「你哪来的权限查这些?」
我没回答。
那个晚上,我在出租屋里敲代码,敲到凌晨三点。窗外的风停了,月亮出来了,照在电脑屏幕上,代码的反光有点刺眼。我敲完最后一个字符,按下了提交键,然后倒头就睡。梦里全是红色的错误日志,一条一条地跳,跳得我头疼。
系统恢复正常是在第三天早上。客户投诉平息了,监管那边也过关了。张建国为了感谢我,在公司大厅给我开了一张一百万的支票,当着所有员工的面。技术部的同事都围了过来,有人鼓掌,有人窃窃私语。
我没接。
「不用了,」我说,「你打电话的时候我就说了,我不是为钱来的。」
张建国看着我,眼神复杂。他没说什么,把支票收回了公文包。临走前,他拍了拍我的肩膀,说:「以后有需要帮忙的地方,尽管开口。」
我点了点头,没说话。
那晚我收到一条陌生号码发来的微信,是张佳琪。
听爸说,你帮他解决了问题?
「嗯。」
你为什么帮他?
我没回。
她又发了条:「爸说你拒绝了那一百万。」
还是没回。
「阿城,」第三条,「我们能不能见一面?」
我看着屏幕,看了很久,然后扣上手机。窗外的月亮很圆,是个十五。
---
我们在工体附近的一家酒吧见的。
她比上次见面憔悴多了,眼里的血丝藏都藏不住,妆也化得有点乱,眼线晕开了一小块。李泽的事我听说了——他公司出了财务问题,欠了一屁股债,挪用公款的证据被人捅了出来,人已经出国「避风头」了,留下张佳琪一个人在国内收拾残局。
酒吧里灯光很暗,音乐很大声,是一首我叫不出名字的英文歌。我找了个角落的位置,她坐下来的时候,高跟鞋蹭到了我的裤腿。
「说吧,」我坐下来,「什么事?」
她给我点酒,我摆了摆手,要了杯苏打水。
「我怀孕了,」她说。
我愣了。
酒吧的音乐震得桌子上的酒杯都在晃。我看见她的嘴唇在抖,手也在抖。
「李泽的,」她吸了口气,「但他走了,联系不上。爸现在气得不行,说我把家里脸丢尽了。」
我沉默了很久。旁边一桌人在欢呼,一瓶香槟喷得老高,有人在大声笑。
「你找我是想让我帮忙联系他?」
她摇头。
「不是,」她看着我,眼泪掉了下来,在昏暗的灯光里一闪一闪的,「阿城,我知道错了。」
我等着她说下去。
「我以前真的觉得,人这一辈子,找个有钱有势的男人才是正经事。我爸妈从小就这么教育我,我从来没觉得有什么问题。我甚至觉得,钱能解决所有问题。」
她顿了顿,吸了吸鼻子。
「但李泽走了之后我才明白,钱是有价的,一个人的品质,是无价的。阿城,我这次真的看清楚了,你给我一个机会,让我重新了解你,好不好?」
我看着她的眼睛。那双眼睛里确实有真诚,但更多的是 desperation——那种走投无路时才抓住的 desperate。
「佳琪,」我说,「你现在来找我,是因为你走投无路了,不是因为你知道了我是什么样的人。」
我站起来。
「等一下,」她叫住我,声音里带着哭腔,周围有人看过来,「你是不是觉得我特别势利?」
「是。」
我说得很直接。
「但我真的变了,」她说,眼泪掉得更凶,「我现在知道,钱买不来真心,也解决不了所有问题。阿城,我这次是认真的。我搬出来了,自己租了个小房子,李泽的孩子我决定自己养,不再依靠家里。我开始学编程了,买了本《Python入门》,每天看两个小时。我知道我配不上你,但我愿意改。」
我看着她的眼睛,那双眼睛里确实有东西在闪烁。但我已经分不清那是真诚,还是绝望中的挣扎。
我没说话,转身走了。
---
又过了一个月。
我照常上班、写代码、改 bug,生活没什么变化。张佳琪偶尔发微信,我没回。她发的那些消息,我看了开头就知道内容,无非是「我今天学了什么」、「我觉得代码好难」、「你有没有空「之类的。我没「回,也没删,就让它们躺在那里。
朋友圈里偶尔能看到她的动态。她发了一张书桌的照片,上面摆着一台 MacBook和一本翻开的《Python入门》,配文是「第一天,print('Hello World')」。我看了,没点赞,没评论。
张建国又找我聊过一次,是在公司楼下的咖啡馆,还是那个靠窗的位置。是关于公司技术架构升级的事,我给了他一整套方案,他收下了,没提钱。走的时候他看着我,说:「阿城,佳琪最近很努力,你要是愿意——」
「张叔叔,」我打断他,「过去的事就让它过去吧。」
他没再说什么,叹了口气,走了。
秋天的时候,BJ的风已经有点凉了。银杏叶开始变黄,落在地上,踩上去沙沙响。我接到了一个来自硅谷的电话。
是一家全球知名的开源公司,叫 Inferra,他们想邀请我加入核心开发团队,负责一个重要的分布式系统项目。薪资是国内的三倍,还给解决绿卡,家属可以随行。
电话那头是个女声,英语说得很标准,听起来很专业。她告诉我,他们在 GitHub上看到了我的开源项目,觉得我的技术能力和架构思路非常适合他们正在做的东西。
「我们看了你写的那个调度算法,「她说,「真的很 elegant。「
我挂了电话之后,在座位上坐了十分钟。窗外是BJ的天,灰蒙蒙的,但远处有几栋楼的玻璃幕墙在阳光下闪闪发亮。
我考虑了三天,答应了。
临走前那个晚上,张佳琪给我发了一条很长很长的微信。我坐在出租屋的电脑前,一条一条地读。她说她搬出来了,自己租了个小房子,李泽的孩子她决定自己养,不再依靠家里。她说她开始学编程了,买了本《Python入门》,每天看两个小时,虽然很多都看不懂,但她会努力的。她说她知道我可能永远不会原谅她,但她想试试,想让自己变得配得上我。
最后她说:「阿城,祝你一切顺利。你是我这辈子见过最优秀的程序员,也是最优秀的男人。谢谢你曾经愿意给我机会,虽然我把它搞砸了。」
我读完了。然后把对话框删了。
不是因为恨,是因为我知道,有些人只能陪你走一段路。那段路结束了,就该各走各的。
机场送行的是我一个人。虹桥机场 T2航站楼,我背着一个双肩包,里面装着电脑和几件衣服。我没告诉太多人,只跟张伟和几个关系好的同事打了招呼。
张伟想帮我买张机票一起去,被我拒绝了。我说:「我自己能行。」
「你到了那边,「张伟拍了拍我的肩膀,「常联系。「
「嗯。「
飞机起飞的那一刻,我看着窗外的城市越来越小,黄浦江像条细细的银线,苏州河甚至看不见。那些高楼大厦变成了一小块一小块的积木,那些我住了好几年的出租屋、那些我常去的咖啡馆、那些我跟张佳琪一起去过的地方,都在慢慢变小。
我打开笔记本电脑,屏幕上是我这段时间一直在写的代码,已经进入了最后阶段。那是一个叫「FlowScheduler」的项目,是我花了半年时间写的,专门解决分布式任务调度的问题。我打算把它开源出去,算是给这个行业留点东西。
空姐走过来,问我要不要什么。我摇了摇头,然后闭上了眼睛。
我想起三个月前那个火锅店里,李泽当众羞辱我的场景。想起张佳琪看我的眼神。想起那个穿着格子衫、蹬着磨破鞋子的自己。
我没有愤怒,也没有得意。就是觉得,人生挺有意思的。
有些人注定只是你生命里的一个过客。他们来,是为了给你上一课,然后离开。
而我,要去的地方,他们根本想象不到。
飞机穿过云层,舷窗外是白茫茫的一片。我睁开眼,开始写代码。代码在屏幕上滚动,一行一行的,像是一首我写给自己听的歌。
落地旧金山的时候,是当地时间早上七点。我打开手机,有几条未读消息。张建国发来的,说他看了我给他的架构方案,觉得很受益,公司已经按那个方向在改了。张伟发来的,说他跟林小芸在一起了,说我当初在火锅店的表现太帅了,让他有了勇气。
我笑了笑,没回。
到了 Inferra的办公室,接待我的是一个叫 Sarah的工程师,金发碧眼,笑起来很甜。她带我去工位,说我的项目会在下周一正式开始,团队里有八个人,都是来自世界各地的顶尖开发者。
我坐下来,打开电脑,第一次连上了公司的内网。窗外是加州的阳光,照在棕榈树上,叶子闪闪发亮。
我忽然想起张佳琪。不知道她现在怎么样了,那个《Python入门》她有没有继续看下去。我打开朋友圈,她的最新动态是一张 B超照片,配文是「你好,小程序员」。
我看了三秒,然后关掉了手机。
每个人都有自己的人生要面对。我有我的代码要写,她有她的孩子要养。我们曾经交叉过,然后又各自分开,这才是人生的常态。
我打开代码编辑器,敲下了第一行注释:
//FlowScheduler v1.0-Dedicated to those who never gave up.
飞机已经爬升到一万米的高空,窗外的云海翻涌,像一片白色的海洋。我敲下这行注释的时候,心里出奇的平静。
然后开始写代码。

