《AI时代:码农的涅盘重生》
第1章 突如其来的裁员
上午十点,林晨刚冲好一杯速溶咖啡,还没来得及喝上一口,工位上的座机就响了。
“林晨,麻烦来一下3号会议室。”hR部门王经理的声音透过听筒传来,平静得听不出任何情绪。
林晨心里咯噔一下。3号会议室,那是公司专门用来做“一对一沟通”的小房间。他放下咖啡杯,目光扫过屏幕上还没写完的代码,一种不祥的预感悄然升起。
走进会议室,空调开得很足,冷气直往脖子里钻。王经理和一位面生的hR专员已经坐在里面,桌上摆着一份文件。王经理推了推眼镜,露出一个职业化的笑容:“林晨,坐。”
“王经理,什么事这么急?”林晨拉开椅子坐下,尽量让语气显得轻松。
王经理没有绕弯子,开门见山:“公司近期业务调整,对部分岗位进行优化。很遗憾,你所在的跨境电商平台后端开发组,需要缩减人员规模。经过评估,你的岗位在本次优化名单内。”
尽管有预感,但“优化”两个字像一记重锤,狠狠砸在林晨胸口。他感到一阵短暂的耳鸣,会议室里空调的嗡嗡声似乎瞬间被放大了。
“优化……是裁员的意思,对吧?”林晨听到自己的声音有些干涩。
“公司会按照劳动法规定,给予N+1的补偿。”旁边的hR专员接过话头,将桌上的文件推了过来,“这是具体的协议,你可以看看。今天签完字,交接完工作,补偿金会在下个发薪日到账。”
林晨没有立刻去看那份协议。他在鹏城这家跨境电商公司干了整整十年。从二十五岁到三十五岁,最好的十年都扔在这里了。他参与搭建了公司最早期的订单系统,经历过无数次“双十一”、“黑五”的技术攻坚,为了一个线上bug熬过无数个通宵。去年绩效评估还是b+,怎么突然就成了“需要优化”的部分?
“为什么是我?”林晨抬起头,盯着王经理,“我们组老张比我大两岁,小陈技术明显不如我。要优化,按什么标准?”
王经理的笑容淡了些:“林晨,这是公司层面的战略决策,综合考虑了多方面因素,不仅仅是技术能力。你也知道,现在大环境不好,公司业务收缩……”
“多方面因素?”林晨打断他,一股火气直冲脑门,“是不是因为我的薪资在组里算高的?裁掉我一个,能省下两个应届生的钱?”
会议室里的空气凝固了几秒。hR专员轻咳一声:“林晨,请你冷静。公司非常感谢你过去十年的贡献,这次的补偿方案也是很有诚意的。你继续待在这里,对大家都没有好处。”
“好处?”林晨几乎要冷笑出来,但他忍住了。三十五岁,他不是二十出头冲动的小年轻了。撕破脸皮除了让自己更难堪,没有任何意义。他深吸一口气,强迫自己冷静下来。
“我需要时间考虑。”他说。
“今天下班前,我们需要一个答复。”王经理的语气不容置疑,“这是公司决定。希望你理解。”
理解?林晨只觉得荒谬。他默默拿起那份协议,目光扫过那些冰冷的条款。补偿金数额算得清清楚楚,比他预想的略好一点,但远远无法覆盖他此刻心里巨大的空洞。协议末尾,签名的位置空着,像一张等待吞噬他十年职业生涯的嘴。
“我明白了。”林晨放下协议,站起身,“我现在回去收拾东西。”
走出会议室,走廊里明亮的灯光显得有些刺眼。回到开发区的工位,几个相邻的同事抬头看了他一眼,眼神里有关切,有探究,更多的是闪避。在这个行业,被hR单独叫走,然后回来收拾东西,意味着什么,大家心知肚明。没人上前询问,一种微妙的沉默在空气中弥漫开来。
林晨默默地收拾着个人物品,一个用了多年的保温杯,几本技术书籍——《python高级编程》、《深入理解Java虚拟机》,书页已经有些卷边。抽屉里还有没吃完的半盒润喉糖,一副备用眼镜,几张以前团队的合影。照片上,年轻几岁的他笑得没心没肺,和同事们勾肩搭背。
他收拾的动作很慢,仿佛在拖延时间。电脑屏幕上,还是那个未完成的订单查询接口优化代码。他下意识地移动鼠标,想保存一下,却突然停住了。保存了又有什么用呢?这行代码,这个项目,从下一秒开始,都与他无关了。
最终,所有私人物品装进了一个不大的纸箱。他把工牌从脖子上取下来,塑料卡片还带着体温。蓝色的挂绳,印着公司的Logo,十年前刚入职领到它时的兴奋感,早已模糊不清。
他没有和任何人道别,抱着纸箱,走向电梯。电梯门合上的瞬间,他透过缝隙最后看了一眼工作十年的地方,格子间依然忙碌,键盘敲击声隐约传来。一切如常,只是少了一个叫林晨的码农。
走出气派的写字楼大门,鹏城初夏上午的阳光毫无遮挡地泼洒下来,晃得他有些睁不开眼。正值工作日,科技园附近行人匆匆,穿着各色文化衫的年轻人与他擦肩而过,谈论着需求、迭代、上线。他抱着纸箱站在路边,一时竟不知该往哪里去。
回家?怎么跟苏婉说?直接告诉她“我被裁了”?他几乎能想象妻子听到消息后,那张温婉的脸上会出现的错愕和担忧。房贷怎么办?下个月儿子上幼儿园的学费怎么办?这些现实的问题像潮水一样涌来,让他感到一阵窒息。
他掏出手机,屏幕上未读的工作群消息还在跳动。他手指悬在屏幕上方片刻,然后点击进去,退出了所有与公司相关的微信群。动作很轻,却有种斩断一切的决绝。
地铁站里人潮汹涌。林晨抱着纸箱,挤在拥挤的人流中,显得格格不入。周围的人大多空着手,或者只拿着手机和咖啡,只有他,抱着一个装满“过去”的纸箱。
车厢里空气闷热,混杂着汗味和香水味。林晨靠在门边的角落,纸箱搁在脚边。地铁行驶到路面,车窗外的城市景观飞驰而过,高楼大厦的玻璃幕墙反射着刺眼的光。这座城市永远年轻,充满机会,但此刻对他而言,却显得格外冰冷和陌生。
十年。他从一个满怀憧憬的毕业生,变成如今疲惫的中年人。技术更新了一代又一代,他从Java写到Go,从单体架构做到微服务,以为自己一直在奔跑,不敢停下。可到头来,一纸协议,就能轻易抹掉所有。
“优化……”他咀嚼着这个词,嘴角泛起一丝苦涩。不是能力不行,只是性价比不高了。三十五岁,薪资要求高,家庭牵绊多,加班拼不过年轻人,学习新技术的速度或许也慢了半拍。在资本眼中,他成了一项可以削减的成本。
正想着,手机震动了一下,是妻子苏婉发来的微信:“晚上想吃什么?我下班去买菜。”
简单的问候,却让林晨鼻子猛地一酸。他盯着屏幕,手指悬在键盘上,打了几个字又删掉。最后只回了一句:“随便,你定吧。”
他关掉屏幕,将额头抵在冰凉的玻璃上。窗外的光线在他脸上明明灭灭。恐慌感后知后觉地蔓延开来,像冰冷的藤蔓缠绕住心脏。三十五岁,失业。下一步该怎么走?重新找工作?这个年纪的程序员,在招聘市场上还有多少竞争力?转行?又能做什么?
纸箱里的那本《python高级编程》露出一个角。他最近确实在看一些AI和机器学习的相关资料,隐隐觉得那是未来的方向,但总想着“等工作不忙了再系统学”。现在,“不忙”以最残酷的方式到来了。
地铁到站,机械的女声报着站名。林晨抱起纸箱,随着人流涌出车厢。回家的路还要走十几分钟,穿过热闹的城中村街道,两边是各色小吃摊和便利店,生活气息扑面而来,但却丝毫没有缓解他内心的冰冷。
他走到自家租住的旧小区楼下,抬头看了看位于六楼的那个窗户。灯还没亮,苏婉还没回来。儿子应该还在幼儿园。
他在楼下站了许久,才深吸一口气,抱着那个沉甸甸的纸箱,艰难的一步一步爬上楼梯。
钥匙插进锁孔,转动。
门开了。
屋里一片安静。
属于他的“后裁员时代”,就在这片寂静中,正式拉开了序幕。
第2章 艰难的告白
“爸爸回来啦!”一个清脆稚嫩的声音伴随着“哒哒哒”的脚步声冲过来。五岁的乐乐像颗小炮弹一样撞进林晨怀里,仰着圆乎乎的小脸,眼睛亮晶晶的。 林晨几乎是本能地蹲下,用空着的那只手搂住儿子,脸上挤出一个练习了一路的、自认为最自然的笑容:“哎,宝贝,今天在幼儿园开心吗?” “开心!我画了一只大恐龙,老师夸我画得好!”乐乐叽叽喳喳,注意力很快被纸箱吸引,“爸爸,这是什么呀?是给我的新玩具吗?” “不是玩具,是爸爸工作用的东西。”林晨语气尽量平稳,心里却是一揪。他抱着纸箱站起身,看向从厨房探出头的妻子苏婉。 苏婉系着围裙,手里还拿着锅铲,温柔的脸上带着笑意:“今天怎么这么早?还不到六点呢。正好,糖醋排骨快好了,洗洗手准备吃饭。”她没太在意那个纸箱,只当是老公又带了些工作资料回来——这在过去十年是常事。 “嗯,今天……事情结束得早。”林晨含糊地应了一声,抱着纸箱快步走进书房,轻轻关上门。他把箱子放在了书桌上,盯着它看了几秒,仿佛那是什么不祥之物,心想就先放这吧,不藏了。然后深吸一口气,转身走出书房,脸上重新挂上笑容。 晚饭是寻常的三菜一汤:糖醋排骨、蒜蓉西兰花、西红柿炒蛋,还有一锅紫菜蛋花汤。都是家常味道,却是林晨漂泊鹏城十年里,最能抚慰他的东西。苏婉在一所小学当语文老师,工作也不轻松,但总是把家里打理得井井有条,饭菜可口。 “今天公司怎么样?那个跨境电商平台的支付模块优化完了吗?”苏婉给乐乐夹了一块排骨,随口问道。 林晨夹菜的筷子几不可察地顿了一下。“差不多了。”他扒了一口饭,咀嚼得有些费力,“可能……后续有些调整。” 苏婉敏锐地捕捉到了他语气里那一丝不自然。她放下筷子,仔细看了看林晨的脸。虽然他在努力微笑,但眼底的疲惫和一种更深层的晦暗,没能完全藏住。夫妻多年,有些东西瞒不过。 “林晨,”她的声音轻柔但坚定,“是不是出什么事了?” 乐乐抬头看看妈妈,又看看爸爸,似乎感觉到气氛微妙,乖乖地吃着饭不说话。 林晨知道瞒不住了,也没打算一直瞒着。他放下碗筷,双手在膝盖上无意识地搓了搓,喉结滚动了一下。餐厅顶灯的光线有些刺眼。 “我……”他开口,声音有些干涩,“我被裁员了。” 短短几个字,说出来的瞬间,林晨感觉心里那块巨石仿佛松动了一丝,但随即更沉重的现实感压了上来。他不敢看苏婉的眼睛,目光落在桌上的糖醋排骨上,那酱红色此刻显得有些刺目。 餐厅里安静了几秒。只有乐乐咀嚼食物的细微声响。 苏婉愣住了。她预感到丈夫可能遇到了工作上的麻烦,或许是项目不顺,或许是和领导有了矛盾,但“裁员”这个词,依然超出了她的预料。她的脸色微微发白,握着筷子的手指收紧了些。 “裁员?”她重复了一遍,似乎在消化这个词的含义,“为什么?你不是……一直是骨干吗?上个月绩效还是A……” “公司业务调整,整个部门优化。年龄、薪资……都是因素。”林晨苦笑了一下,把hR那套说辞概括着说了出来,语气里带着自嘲,“35岁,年薪六十多万,性价比不高了。今天上午谈的话,让今天给答复,我看没有回旋的余地了,我索性把东西都拿回来了,就装在刚拿进书房的那个纸箱里。” 又是一阵沉默。这次沉默的时间更长。 乐乐似乎终于意识到发生了什么,小声问:“爸爸,裁员是什么意思?你不用去上班了吗?” 林晨摸了摸儿子的头,声音低沉:“嗯,爸爸暂时……不用去那个公司上班了。” 苏婉缓过神来。她没有质问,没有抱怨,甚至没有惊讶,只是静静地看着林晨,看着这个相伴十余年、此刻肩膀微微垮下的男人。她看到了他努力掩饰的沉重、挫败,以及眼底深处那不易察觉的失落。 “先吃饭。”苏婉说,甚至比以往更柔和了些,“排骨凉了就不好吃了。乐乐,多吃点青菜。” 她拿起筷子,给林晨夹了一块最大的排骨,放到他碗里:“不管发生什么事,饭总要好好吃。身体不能垮。” 这一句平常的话,却像一股暖流,猝不及防地冲垮了林晨心里强行筑起的堤坝。鼻尖猛地一酸,他赶紧低下头,用力眨了眨眼,把那股涩意逼了回去。“嗯。”他闷声应道,夹起那块排骨塞进嘴里。味道依旧,但他却尝出了更多滋味。 这顿饭的后半段,气氛有些沉闷,但苏婉时不时给父子俩夹菜,轻声询问乐乐幼儿园的趣事,勉强维持着餐桌上的常态。乐乐毕竟还小,很快又被动画片话题吸引,叽叽喳喳起来。 饭后,苏婉利落地收拾碗筷,催促林晨先去给乐乐洗澡讲故事。等她把厨房收拾干净,哄睡了乐乐,时间已经指向晚上九点半。 她轻轻推开书房的门。林晨正坐在书桌前,台灯亮着,面前摆放着一个笔记本和计算器,手指正在计算器上快速点按,眉头紧锁。纸箱被挪放到屋角,被书柜挡住,但自然刺眼。 听到开门声,林晨抬起头。 苏婉走进来,反手关上门,拖了把椅子坐到林晨旁边。
第3章 盘点家底
林晨和苏婉坐一起,中间摊开着一堆东西:三张银行卡、两个存折、一叠房贷还款单、几份保险合同、还有苏婉从书房拿出来的一个硬壳笔记本——那是他们家的“家庭账本”。
乐乐已经在卧室睡着了,孩子均匀的呼吸声隐约可闻,那是这个焦虑夜晚里唯一的安宁。
“开始吧。”苏婉的声音很平静,她推了推鼻梁上的眼镜——那是她批改作业时才戴的。灯光下,她的侧脸线条显得格外清晰,没有化妆,但有种教师特有的书卷气和坚韧。
林晨点点头,拿起那张他今天下午刚从银行打印出来的流水单。纸张很薄,上面的数字却沉甸甸的。
“我这张工行卡,”他清了清嗓子,声音有些干涩,“活期加定期,一共是十八万七千四百三十二块五毛。”
苏婉翻开账本,用黑色签字笔工整地记下:“工行:187,432.5”。她的字很好看,板书练出来的,横平竖直。
“我这张建行卡,”林晨拿起另一张,“主要是以前项目奖金的结余,还有去年年终奖没花完的部分。九万六千八百。”
“建行:96,800。”笔尖划过纸面,沙沙作响。
“还有这张招行的,绑着支付宝和微信,平时零用。”林晨顿了顿,“里面剩的不多了,两万一千五。”
“招行:21,500。”苏婉写完,抬起头,“我的工资卡上个月发完工资后,扣了乐乐幼儿园的学费和上个月的房贷,还剩八千四百块。我平时家教收的现金,存在那个红色的存折里,有三万二。”
林晨心里快速心算了一下:“加起来……三十四万六仟一佰三十二块五毛。”
“三十四万。”苏婉重复了一遍这个数字,笔尖在纸上点了点,“这是我们俩工作十年,除去买房、装修、生孩子、养孩子之后,剩下的全部现金。”
空气沉默了几秒。这个数字说大不大,说小不小。在鹏城,它不够付一套郊区小户型首付的零头,但又是很多家庭攒不出来的数目。
“房贷。”林晨拿起那叠还款单,最上面一张是上个月的,“南山科技园边上那个盘,八十九平,贷款三百二十万,三十年,等额本息。每月一万两千零六十七块。”
“一万二。”苏婉在账本上新建一栏,“固定支出:房贷12,067/月。”
“物业费每平米三块五,一个月三百一十一块五。”
“车位管理费一百五。”
“水电燃气,夏天开空调的话,平均每月六百左右。”
“宽带手机费,我的两百,你的一百五,乐乐电话手表三十,一共三百八。”
“乐乐幼儿园,普惠性的,每月三千二。”
“买菜吃饭……”林晨说到这里停住了,看向苏婉。
苏婉接上话:“我大概算过。我学校有食堂,午饭免费。你以前公司有餐补,午饭也基本不花钱。主要是早晚两餐和周末。我们不算吃得奢侈,但乐乐正在长身体,肉蛋奶不能省。加上水果零食,一个月至少三千。”
她一边说一边写:“生活费估算:3,000/月。”
林晨补充:“还有你的交通费,地铁一个月两百。我以前开车,油费加停车,一个月一千五。现在……”他苦笑了一下,“车可以先不开了。保险和保养每年还得大几千,平摊到每月算五百吧。”
“车相关:500/月。”苏婉写下,然后抬头,“你的社保呢?失业了,社保要自己交。”
林晨心里一沉。他差点忘了这个。鹏城的社保缴费基数高,如果按最低档自己全额交,每月光养老和医疗就要两千多。
“先按两千五算吧。”他声音低了些,“社保:2,500/月。”
苏婉全部记下,然后开始汇总:“固定支出:房贷12,067,物业311.5,车位150,水电600,通讯380,幼儿园3,200,生活费3,000,车500,社保2,500。合计……每月固定支出两万两千七百零八块五毛。”
22,708.5元。
这个数字跳出来时,林晨感觉喉咙发紧。他以前月薪税前四万,税后到手三万出头,还了房贷,剩下的覆盖这些开支绰绰有余,甚至还能存下一些。苏婉每月一万二的工资,基本就是她的零花和家庭备用金。
现在,他那份收入没了。
“你的工资,”林晨看向苏婉,“税后到手一万二左右,对吧?”
苏婉点头:“上个月实发11,847。绩效好的月份能到一万三。”
“就算一万二。”林晨拿过苏婉手里的笔,在账本空白处快速列式,“我们每月固定支出两万二,你的收入一万二,缺口正好是一万。”
他笔尖顿了顿:“也就是说,如果我们保持现在的生活水平不变,我没有任何收入,那么每个月,我们需要从存款里拿出一万块来补这个窟窿。”
三十四万存款,除以每月一万。
三十四个月。
两年半多。
“但实际上不能这么算。”苏婉的声音依然冷静,她指着账本上的条目,“生活费三千,我们可以压缩。你以前开车,现在不开了,油费和公司停车费省了。社保……如果真的困难,可以暂时按灵活就业最低档交,能省一些。还有,我的工资,可以想办法增加。”
林晨看向妻子:“增加?”
“我教语文,带毕业班。很多家长想找好的语文老师给孩子补课。”苏婉说,“以前因为要顾家,给你和乐乐做饭,我只接了两个周末的学生,每月大概多两千收入。如果多接一些,周末排满,晚上再接一两个线上辅导,每月多赚三四千是有可能的。”
林晨心里一阵酸涩。他知道苏婉一直很受欢迎,很多家长托关系想请她补课,但她总说“老师的主要精力应该放在课堂上”,不愿意多接。现在……
“还有,”苏婉继续说,“乐乐幼儿园三千二,已经是普惠园里不错的了。如果……如果真的到那一步,可以转去更便宜的。不过这是最后的选择,孩子适应一个环境不容易。”
林晨深吸一口气,重新拿起笔:“那我们重新算。假设:生活费压缩到两千五;车只保留保险和基本保养,每月三百;社保按最低档,每月一千八;你的收入增加三千,到一万五。”
他快速计算:“这样固定支出变成……两万零五百左右。你的收入一万五,缺口五千五。”
三十四万除以五千五。
约等于六十一个月。
五年。
“但这是理想状态。”林晨放下笔,揉了揉太阳穴,“生活中总有意外开销。乐乐生病,家里电器坏了,人情往来……而且,我们不能真的坐吃山空五年。我必须尽快找到工作。”
苏婉伸出手,覆盖在他放在书桌的手上。她的手很凉,但掌心柔软。
“所以我们的目标不是五年,”她轻声说,“而是用这笔存款,为你争取一个……缓冲期。一个不用慌不择路、可以好好思考下一步的缓冲期。”
林晨反握住她的手:“你觉得这个缓冲期应该多长?”
苏婉想了想:“至少一年。一年内,你可以不急于接受一个随便的工作,可以好好看方向,甚至可以……学点新东西。你不是总说技术更新快,自己有些跟不上了吗?”
林晨心里一动。他确实有这个念头,尤其在失业后的这几天,那种“被时代抛下”的恐惧越来越清晰。
“一年……”他喃喃道,“如果按每月缺口五千五算,一年是六万六。三十四万减去六万六,还剩二十七万四。也就是说,哪怕我一年没收入,我们还能剩下二十多万的底子。”
这个数字让他稍微松了口气。二十多万,在鹏城不算什么,但对于一个失业家庭来说,那是一根救命稻草,是还能翻身的本钱。
“而且,”苏婉补充,“我不会只增加三千收入。我会尽力。你也不是完全没收入,可以接点零活,对吧?你那些做外包的朋友。”
林晨点头。他有几个前同事在做独立开发,接一些中小企业的项目。以前他看不上那种零碎活儿,但现在……每一分钱都重要。
“我明天就联系。”他说,“还有,从明天开始,家里所有非必要开支全部暂停。我的健身卡不续了,周末出去吃饭取消,乐乐的新玩具……也先不买了。”
说到乐乐,两人都沉默了一下。孩子才五岁,不该承受大人世界的压力。
“我会跟乐乐解释,”苏婉说,“用他能懂的方式。爸爸要换一个工作,需要时间学习新的本领,就像他学画画一样。这段时间,我们家要一起努力,节约一点。”
林晨看着妻子,灯光下她的眼睛很亮,没有抱怨,没有恐惧,只有一种沉静的担当。他突然想起十年前他们刚结婚时,租住在西丽的小单间里,两人也是这样挤在书桌前算账,算每个月能存多少钱,算多久才能攒够首付。
那时候不觉得苦,因为年轻,因为相信未来。
现在呢?三十五岁,失业,房贷,孩子……压力大了十倍不止。但奇怪的是,当两个人这样面对面,把最残酷的数字摊开在灯光下,一项项计算、规划时,那种灭顶的恐慌反而褪去了一些。
恐惧来源于未知。而当未知变成一张清晰的财务报表,它就变成了一个可以拆解、可以应对的问题。
“好。”林晨说,“那就按这个计划。第一步,缩减开支到每月两万以内。第二步,你增加收入,我接零活,尽量减少存款消耗速度。第三步,也是最重要的——我用这段时间,找准下一个方向。”
他顿了顿,声音坚定起来:“我不能只是找一份和以前类似的工作。跨境电商的技术栈已经老了,就算找到,也随时可能再被淘汰。我得看未来,看什么方向是未来五年、十年都需要人的。”
苏婉看着他:“你有想法了吗?”
林晨沉默了片刻。他想起白天刷招聘网站时看到的那些岗位:AI算法工程师、机器学习专家、大模型开发……薪资高得吓人,要求也高得吓人。他一个做了十年传统web开发的人,连那些岗位描述里的术语都认不全。
“也许……”他缓缓说,“是该学点真正的新东西了。”
夜更深了。窗外传来远处地铁末班车驶过的隐约轰鸣。鹏城就是这样,哪怕到了深夜,依然有地方在运转,在忙碌。
书桌上的账本合上了。那些数字暂时被关在了纸页里,但已经刻在了两人心里。
三十四万。六十一个月。一万二的房贷。五千五的月度缺口。
这些数字像一个个坐标,标定了他们此刻在人生地图上的位置——一个危险的悬崖边缘。但坐标清晰了,至少知道该往哪个方向走,才能离开悬崖。
睡觉前,林晨站在阳台上抽了根烟——他戒了很久,今晚破例。楼下小区的路灯昏黄,几个晚归的年轻人说笑着走进单元门,大概是科技园哪家公司的程序员,刚加完班。
曾几何时,他也是其中一员。背着双肩包,刷着门禁卡,想着明天要写的代码和要赶的进度。那时候觉得累,觉得卷,现在回想起来,那种“被需要”的感觉,其实是一种奢侈。
烟头在夜色中明灭。林晨吐出最后一口烟,把烟蒂按灭在阳台花盆边——那里原本种着苏婉喜欢的茉莉,去年枯死了,一直没换新的。
他回到书房,看到苏婉已经收拾好书桌,正拿着抹布擦拭桌面。她的背影在灯光下显得有些单薄,但动作一丝不苟。
“睡吧。”苏婉回头看他,“明天我第一节有课,得早起。你也别熬太晚,找工作……不急于这一个晚上。”
林晨点点头。两人洗漱,上床。乐乐在中间睡得正香,小脸在睡眠灯下泛着柔光。
林晨闭上眼睛,但大脑异常清醒。那些数字在脑海里盘旋:三十四万、一万二、五千五……然后是一些模糊的念头:python、tensorFlow、机器学习……还有招聘网站上那些他看不懂的职位描述。
一年缓冲期。
他能学会吗?
一个三十五岁、做了十年传统开发的人,能追上那些二十多岁就在研究AI的年轻人吗?
不知道。
但账本上的数字告诉他:你必须试试。
黑暗中,他轻轻握住苏婉的手。她已经快睡着了,手指动了动,回握住他。
没有言语。但掌心传来的温度和力量,比任何承诺都真实。
第4章 求职启动
早晨七点半,鹏城的阳光已经透过窗帘缝隙,在地板上切出锐利的光斑。林晨比闹钟早醒十分钟——这是十年职场养成的生物钟,失业第三天,身体还没学会懈怠。
他轻手轻脚起身,看了眼熟睡的苏婉和儿童房里蜷缩的乐乐,轻轻带上了书房的门。
昨天深夜制定的财务计划像一份作战地图,而今天,是战役真正打响的第一天。缓冲期不是用来躺平的,是用来冲锋的。林晨打开电脑,屏幕光映着他略显疲惫但异常清醒的脸。
第一步,重启求职通道。
他依次点开浏览器收藏夹里的求职网站:boss直聘、猎聘、拉勾网、智联招聘。上一次认真更新简历是什么时候?三年前?五年?记忆有些模糊。在上一家公司待了十年,他几乎忘记了“求职”这个动作本身需要多少前置准备。
注册、填写基本信息、绑定手机……机械化的操作下,焦虑像潮水一样缓慢上涨。当页面跳转到“工作经历”栏目时,林晨的手指悬在键盘上,停顿了整整一分钟。
“最近一份工作:鹏城跨境电子商务有限公司,任职时间:2015年7月-2025年5月。”
十年。一个醒目的、无法修饰的数字。
他继续填写职位:“高级开发工程师→技术经理”,项目描述、技术栈、业绩成果……一行行文字在屏幕上生长,也逐渐勾勒出一个典型的“十年老码农”画像:精通Java、Spring全家桶、mySqL,熟悉分布式架构,带过8人团队,主导过日均百万订单的系统重构……
写到这里,林晨皱了皱眉。他滑动鼠标,浏览起猎聘首页推荐的技术岗位。
“急招!AI大模型算法工程师,年薪80-150万,要求精通pytorch、transformer架构……”
“web3高级开发,区块链+智能合约经验,薪资面议,优秀者可获股权……”
“云计算架构师,K8s、微服务、多云部署,五年以上经验……”
一条条招聘信息像流水一样滑过,林晨的目光在其中捕捉关键词。AI、web3、云计算、大数据……这些词汇出现的频率,远远高于他熟悉的“Java后端”、“系统架构”。他甚至看到几个“35岁以下优先”的标注,虽然字体不大,但像针一样刺眼。
年龄。技术栈。两个现实问题赤裸裸地摆在面前。
林晨关掉网页,回到简历编辑页面。光标在“出生年月”那一栏闪烁:1990年6月。他今年35岁,再过几个月就36了。
一个念头鬼使神差地冒出来:要不要改一下?改成1992年?或者干脆只写工作年限,不写具体出生日期?他听说过一些同行这么干,尤其是在互联网这个对年龄敏感到近乎残酷的行业。
手指在删除键上摩挲了几下,最终,他叹了口气,没有改动。
“代码可以骗人,但逻辑不会,人更不能。”他低声念叨了一句自己常说的话,像是给自己打气,又像是坚守某种底线。改年龄或许能换来几个面试机会,但背调怎么办?入职材料怎么办?一旦被发现,信用就彻底破产了。他林晨还没到走投无路需要伪造履历的地步。
简历最终定格。他反复检查了三遍,调整了项目描述的措辞,突出解决复杂问题和团队管理的经验,弱化了具体技术细节中可能显得“陈旧”的部分。最后,在“自我评价”里,他加了一句:“持续学习者,对新技术保持敏感与好奇,近期正在系统学习AI与机器学习相关技术。”
这句话半真半假。“保持好奇”是真的,“系统学习”才刚刚开了个头。但林晨知道,简历需要展示的是潜力和方向,而不仅仅是过去。
点击“保存并发布”。简历像一块投入湖面的石头,悄无声息地沉入了庞大的求职数据库。
接下来是海投。
林晨深吸一口气,开始了今天最耗神也最考验心态的环节。他设置筛选条件:地点鹏城,职位“技术经理”、“架构师”、“高级开发”,薪资范围“面议”或“30K以上”。列表刷新,一下子弹出两百多个职位。
从第一个开始看。公司规模、岗位要求、薪资区间、是否标明年龄限制……他像一台人肉扫描仪,快速甄别。合适的,点开,点击“立即沟通”或“投递简历”。不合适的,快速划过。
“这家做跨境电商的,和我之前行业匹配,但技术栈太老,薪资也低……过。”
“这家初创公司招技术合伙人?要求有AI产品经验……暂不匹配,但先收藏。”
“这家上市公司招中台负责人,要求35岁以下……算了。”
“这家外企,全英文面试,技术要求倒不算前沿……试试看。”
鼠标点击声在安静的书房里规律地响着。每投出一份简历,心里就多一分微弱的期待,但随即又被更大的不确定性淹没。他强迫自己不要细想“对方会不会看”、“看了会不会嫌弃年龄”,只是机械地执行“筛选-判断-投递”的流程。
一个多小时过去,林晨揉了揉发酸的眼睛。投了多少份?他点开投递记录粗略一数:猎聘32份,boss直聘41份,拉勾19份,智联8份。整整一百份。
手腕有些发僵,精神却异常紧绷。他知道,这一百份简历里,能有十个回复就算不错,能有五个面试机会就是成功,能有一个offer……他不敢想得太远。
最后,他给几个主要的求职App设置了新消息提醒:铃声开到最大,震动开启,锁屏通知显示。手机被放在书桌最显眼的位置,像等待一个至关重要的信号。
做完这一切,时间才刚过上午十点。书房里安静得能听见主机风扇的轻微嗡鸣。阳光移动了几寸,照在键盘上,有些晃眼。
林晨靠在椅背上,望着天花板。一种混合着疲惫、空虚和隐隐期待的情绪在胸腔里弥漫。主动出击的动作已经完成,现在,主动权交还给了市场,交给了那些素未谋面的hR和面试官。
等待是最煎熬的。
他拿起手机,解锁屏幕。微信没有新消息,邮箱没有新邮件,求职App的图标上也没有出现那个代表新消息的红色数字。
“才一个小时,急什么。”他对自己说,放下手机。
但五分钟后又拿起来看了一眼。
依然空空如也。
他知道这很正常,hR们可能刚刚上班,正在处理邮件,或者还没开始筛选今天的简历。逻辑上完全说得通。但情感上,那种悬在半空、无处着力的感觉,开始一点一点啃噬着刚刚建立起来的行动信心。
房贷月供1万2,存款34万,缓冲期一年……这些数字在脑海里再次翻腾。海投出去的简历,像是向深海里撒出的网,不知道能捞起什么,甚至不知道有没有鱼。
林晨站起身,走到窗边。楼下小区花园里,几个退休老人正在慢悠悠地打太极拳,一个保姆推着婴儿车散步。工作日白天的小区,有一种与他无关的宁静。
他的世界,已经和这种宁静割裂开了。他的战场在无形的网络和数据流里,在简历库的算法匹配里,在hR快速浏览的十几秒目光里。
回到书桌前,他再次打开浏览器。这一次,他没有再看求职网站,而是在搜索框里输入:“35岁程序员转型”、“AI学习路径2025”、“机器学习入门实战”。
浏览着技术论坛的帖子、培训机构的广告、知乎上的经验分享,林晨焦虑的心情稍微平复了一些。至少,他在做点什么,在为自己增加筹码,哪怕只是看起来很微小的筹码。
他收藏了几个评价不错的免费AI入门课程,下载了一份最新的机器学习必读论文清单。动作有些笨拙,方向也尚未清晰,但就像在茫茫大海上,至少开始尝试辨认星辰的方向。
中午十二点,苏婉轻轻敲了敲书房门,端进来一杯水和一盘切好的水果。“怎么样?”她问,声音很轻。
“简历投了,等消息。”林晨尽量让语气显得平静,“一百份。”
苏婉点点头,没多问,只是把水果往他面前推了推:“先吃点东西。乐乐我送去幼儿园了,下午我也有两节家教课。”
“辛苦你了。”林晨看着妻子,心里那股混合着愧疚和感激的情绪又涌了上来。
“一起熬过去。”苏婉笑了笑,转身出去了,轻轻带上了门。
书房再次恢复安静。林晨叉起一块苹果放进嘴里,甜脆的滋味在口腔化开。他重新看向电脑屏幕,又瞥了一眼旁边静默的手机。
屏幕忽然亮了一下。
林晨心脏猛地一跳,几乎是扑过去抓起手机。
不是求职App,是微信。一个之前跨境电商行业群里,有人转发了一条某公司裁员的消息,@了所有人。
他松了口气,随即又感到一阵失望。放下手机,他强迫自己把注意力转回那些AI学习资料上。第一篇入门文章讲的是“什么是神经网络”,配图是密密麻麻的节点和连线。
看了两段,眼神又开始飘向手机。
整个下午,这种循环重复了无数次。每一次屏幕亮起,都带来一次短暂的心跳加速和随之而来的落空。邮箱里倒是来了几封新邮件,全是广告和订阅推送。
直到下午五点,手机终于传来一声与众不同的、清脆的“叮咚”提示音。
是boss直聘。
林晨瞬间点开。一条新消息来自某个公司的hR:“您好,看了您的简历,方便聊聊吗?”
短短一行字,像黑暗中划亮的第一根火柴。
他立刻坐直身体,手指飞快地打字回复:“您好,方便的。感谢查看我的简历。”
点击发送。
然后,又是等待。等待对方的下一个问题,或者直接发来面试邀请。
五分钟过去了,对话框没有新的气泡弹出。
十分钟过去了,依然寂静。
林晨盯着屏幕,那行自己发出的绿色消息下面,是一片刺眼的空白。对方可能只是群发?可能正在忙?可能觉得不合适又不想回了?
各种猜测在脑子里打架。他忽然意识到,在这场求职战役里,他不仅是一个被评判者,更是一个被“已读不回”这种冷暴力轻易折磨的被动方。
窗外,夕阳开始给鹏城的高楼镶上金边。晚高峰的车流声隐隐传来。
书房里,林晨依然坐在电脑前,屏幕光映着他专注而紧绷的侧脸。手机安静地躺在一边,那条孤零零的hR消息,像是一个悬而未决的开场,也像是一个微小却真实的希望火种。
他知道,今天只是开始。这场仗,还很长。
第5章 第一次面试
手机震动的时候,林晨正在浏览一个python机器学习入门教程的评论区。
不是微信消息那种短促的嗡鸣,而是来电铃声——他特意为求职相关电话设置的、一段略显正式但不算刺耳的钢琴曲。心脏猛地一跳,手指比大脑反应更快,已经划开了接听键。
“喂,您好。”
“请问是林晨先生吗?我这里是‘智趣互动科技’的hR,收到您投递的后端技术负责人岗位简历。”电话那头是个语速颇快的女声,背景音有些嘈杂,“看了您的履历,和我们岗位有一定匹配度。请问明天下午两点,方便来公司面试吗?”
“方便,方便的。”林晨立刻回答,声音不自觉地提高了一些。他迅速抓过桌上的便签纸和笔,“您说地址。”
“南山区科技园南区,创智大厦b座7楼。到了前台报名字就行。”
“好的,谢谢。请问面试流程大概是?”
“技术面,直接和我们技术负责人聊。大概一到两个小时。具体细节明天面试官会和你沟通。”hR似乎很忙,语速依旧很快,“那就先这样,明天见。”
“明天见。”
电话挂断,听筒里传来忙音。林晨握着手机,盯着便签上潦草写下的“创智大厦b座7楼,下午2点”,足足过了十几秒,才长长地吐出一口气。
终于来了。失业后的第一个面试机会。
兴奋只持续了不到一分钟,就被更具体的焦虑取代。他立刻打开浏览器,搜索“智趣互动科技”。一家做移动端内容社区和轻度游戏的创业公司,成立大概三年,规模不大,几十人团队。融资信息停留在A轮,金额没披露。招聘网站上关于后端技术负责人的职位描述写得比较笼统:负责整体后端架构,带领小团队,要求精通Java、Spring cloud、mySqL,有高并发系统设计经验,熟悉分布式缓存和消息队列……
要求不低,但看起来还在他传统技术栈的覆盖范围内。林晨稍微定了定心,但随即又皱眉:创业公司,技术负责人,压力肯定不会小。薪资能给到多少?能接近他的预期吗?
他甩甩头,把关于薪资的杂念暂时压下。当务之急是准备好明天的技术面试。
整个晚上和第二天上午,林晨都泡在了书房里。他把过去十年做过的几个核心项目,从跨境电商平台的订单系统,到海外仓的库存调度中间件,再到促销活动的结算模块,在脑子里反复梳理了一遍。技术难点、解决方案、遇到的坑、最后的优化效果……他试图用清晰的结构把每个项目都表述出来。
他还特意去看了几篇关于高并发系统设计的文章,复习了Redis集群、Kafka消息队列、分库分表这些概念。虽然以前的项目实际达到的qpS(每秒查询率)有限,但理论方案他必须能说得头头是道。
午饭简单下了点面条。吃完后,他换上那件熨烫过的浅蓝色衬衫——去年苏婉给他买的,说是面试穿显得精神又不死板——套上西裤,检查了一下简历打印稿和笔,提前一个半小时出了门。
鹏城的五月午后,阳光已经有些灼人。地铁五号线依旧拥挤,混杂着各种气味。林晨抓着扶手,身体随着车厢晃动,脑子里还在默念着可能被问到的技术问题。周围是年轻的面孔,穿着t恤卫衣,戴着耳机,聊着天,打着游戏。他这身略显正式的打扮,在人群中有些扎眼。
科技园南区,高楼林立,玻璃幕墙反射着刺眼的光。创智大厦不算最气派的,但楼下咖啡店、便利店一应俱全,进出多是背着双肩包的年轻人,步履匆匆。林晨抬头看了看大厦招牌,深吸一口气,走了进去。
前台是个年轻的女孩,核对了名字后,给了他一张临时访客卡,指了指里面:“直走,右边第三个玻璃会议室,李工已经在里面了。”
玻璃会议室不大,一张小圆桌,几把椅子。里面坐着一个看起来三十出头的男人,穿着灰色polo衫,头发有些凌乱,正低头看着手机。听到敲门声,他抬起头:“林晨?”
“是的,李工您好。”林晨走进去,微微欠身。
“坐。”李工——显然就是技术负责人——指了指对面的椅子,没什么寒暄,直接进入正题,“时间有限,我们直接开始吧。先简单介绍一下你自己,重点说说最近几年做的项目。”
林晨定了定神,按照准备好的思路开始讲述。从上一家公司的工作职责,到负责的核心系统,再到具体的技术挑战和成果。他尽量用简洁的语言,突出自己在系统设计、性能优化和团队协作方面的经验。
李工听得很认真,偶尔在面前的笔记本上记录几笔。等林晨说完,他推了推眼镜:“你刚才提到那个促销结算系统,峰值qpS大概多少?”
“具体监控数据,峰值大概在每秒8000次请求左右。”林晨回答。
“应对策略呢?”
“主要做了几层缓存。热点商品数据提前加载到本地缓存,用户额度信息用Redis集群,数据库层面做了读写分离和按用户Id分表。”林晨流利地回答,“当时也考虑了用消息队列异步处理结算流水,但业务要求实时反馈结果,所以最终是同步写库,但做了连接池优化和批量提交。”
“嗯。”李工不置可否,接着问,“如果现在这个系统,流量突然增长十倍,达到每秒八万请求,你之前的架构还撑得住吗?瓶颈可能会在哪里?你会怎么改造?”
林晨心里一紧。这才是真正的问题。他迅速思考:“十倍流量……之前的Redis集群规模可能不够,需要扩容,并且要考虑跨机房同步的问题。数据库分表策略可能需要调整,单表数据量增长会带来查询效率下降。另外,应用服务器本身也可能成为瓶颈,需要水平扩展,并考虑负载均衡和会话保持的问题。改造的话,可能需要引入更细粒度的缓存策略,比如本地缓存结合分布式缓存;数据库层面或许要考虑引入更强的oLAp分析能力,或者把一些实时性要求不高的统计任务剥离到大数据平台;服务端可以考虑部分接口异步化,用消息队列削峰……”
他尽可能把能想到的点都说了出来,有些地方他知道自己只是泛泛而谈,缺乏真正的实战细节。李工一边听,一边在纸上画着什么。
“分布式事务怎么处理的?比如下单扣库存和生成订单,要保证一致性。”
“我们当时用的是最终一致性思路。先预扣库存,创建订单,如果订单创建失败,库存再回补。通过日志和定时任务核对异常状态。”林晨回答,这是他们实际采用的方案。
“tcc(try-confirm-cancel)模式了解吗?和Saga模式对比呢?”
林晨顿了一下:“了解概念。tcc需要业务方提供三个接口,实现复杂度高,但一致性最强。Saga通过一系列本地事务和补偿事件实现,更适合长流程业务。我们当时的业务场景相对简单,所以没采用这两种。”
李工点了点头,没再深究。接下来的问题开始涉及更多具体技术细节:JVm调优参数,mySqL索引优化和死锁排查,Spring cloud各个组件的原理和坑,docker和Kubernetes的使用经验……
林晨大部分都能答上来,有些地方能讲得很细,比如他曾经花了两天时间排查的一个由不当索引导致的慢查询问题。但涉及到容器化编排、服务网格(Service mesh)这些更前沿或他们之前没大规模使用的技术时,他的回答就偏向于理论了解,缺少实战体会。
他能感觉到,李工对他的基础和经验是认可的,但眼神里也偶尔会闪过一丝“技术栈偏传统”的评估意味。
技术问题问了将近一个小时。李工终于合上了笔记本,看着林晨:“技术层面聊得差不多了。你对我们公司有什么想了解的?”
林晨知道,这是面试的后半程,也是了解对方和表达自己诉求的机会。他问了几个关于公司当前主要产品、技术团队规模、未来半年技术规划的问题。李工的回答比较务实:产品正在寻求突破,团队目前后端加他只有五个人,希望招个能扛事的一起搭建更稳定的架构。
“最后,聊聊你的期望薪资吧。”李工很直接。
林晨心提到了嗓子眼。他预设过很多次这个场景,但真到了这一刻,还是感到一阵紧张。他清楚自己的底线,也记得张伟的提醒。他稳住声音,报出了那个数字:“我的期望年薪是120万左右。根据公司具体的薪酬结构,可以谈。”
李工脸上没什么表情,只是眉毛几不可察地动了一下。他沉默了几秒钟,然后说:“这个数字……和我们这个岗位的预算,差距比较大。我们是一家还在发展阶段的创业公司,这个岗位的薪资范围,大概在月薪35K到45K,14到16薪。即便按上限算,距离你的期望也有不小距离。”
虽然早有心理准备,但亲耳听到对方说出“差距比较大”这几个字,林晨心里还是沉了一下。他试图争取:“我理解创业公司的情况。但我有十年的完整经验,带过团队,处理过复杂系统,也愿意承担压力和责任。薪资方面,是否还有一定的弹性空间?或者,在期权方面……”
李工摇了摇头,语气平和但坚定:“薪资范围是公司定的,我个人权限有限。期权当然有,但那是长期且不确定的回报。坦率说,林先生,你的技术基础很扎实,项目经验也匹配。但你的期望薪资,可能更匹配那些业务稳定、现金流充足的中大型公司,或者风口上的热门领域。我们目前给不了。”
话说得很直白,也很现实。林晨知道,再谈下去意义不大了。他维持着基本的礼貌,又问了一两个关于面试流程后续的问题,李工表示会和hR沟通,有消息会通知。
走出创智大厦时,下午的阳光斜照过来,拉长了身影。林晨站在路边,看着车来车往,刚才面试时绷紧的神经慢慢松弛下来,随之而来的是一种混合着疲惫、失落和迷茫的复杂情绪。
技术面,他感觉聊得不算差,甚至有些地方还能展现出自己的经验优势。但最后卡在薪资上,而且卡得如此干脆利落。对方那句“你的期望薪资可能更匹配……风口上的热门领域”,像一根细刺,扎在他心里。
他沿着街道慢慢走着,路过腾讯那座着名的滨海大厦,玻璃幕墙在夕阳下泛着冷冽的光。里面的人,那些在所谓“热门领域”里的人,他们值多少钱?自己这十年的经验,积累的技术,在现在的市场上,到底标价多少?
第一次面试,似乎就这样结束了。没有当场拒绝,但希望已经变得渺茫。他知道,这只是开始。后面还有更多简历要投,更多面试要面对。但这一次的碰壁,已经清晰地向他揭示了一个现实:仅仅依靠过去的经验,在现有的技术轨道上,他可能很难抵达自己期望的那个位置了。
口袋里手机又震动了一下,是房贷银行的月度扣款提醒短信。林晨看了一眼,锁上屏幕,抬头望向远处逐渐亮起的城市灯火。
路还长,而且比他预想的,可能要更崎岖一些。
第6章 年龄的歧视
鹏城的初夏来得炽热,科技园路两旁的凤凰木开得如火如荼,那一抹浓烈的橘红,与玻璃幕墙反射的炫目冷光形成奇异的对照。初夏那粘稠的湿热很快让汗水浸透了后背,衬衫紧巴巴地贴在身上,像是一层甩不掉的负担。他穿行在烈焰般的凤凰木下,步履匆匆,无心欣赏这满目红云。昨晚他修改简历到凌晨两点,把在跨境电商公司负责过的一个日活百万级别的促销系统描述得更加“高大上”,并特意弱化了项目年代——那其实是五年前的老黄历了。
今天面试的是一家做社交游戏的公司,叫“趣玩互动”,在科兴科学园的一栋写字楼里。公司规模中等,招聘岗位是高级后端开发工程师。薪资范围写的是“面议”,这让林晨心里又燃起一丝微弱的希望。也许,上一家只是特例?
前台是个染着亚麻灰短发的年轻女孩,眼皮都没完全抬起来,递给他一张访客登记表和一支笔。“填一下,等会儿有人来领你。”
会议室不大,一面玻璃墙对着办公区。林晨能看见外面开放式工位上,清一色都是年轻面孔,穿着卫衣、戴着耳机,手指在键盘上飞舞。空气里弥漫着一种特有的“年轻”气息——不是香水,更像是精力过剩和睡眠不足混合的味道。
等了大约十分钟,门被推开。进来一个看起来不到三十岁的男人,穿着印有公司logo的黑色文化衫,寸头,戴黑框眼镜,手里拿着林晨的纸质简历和一台ipad。他冲林晨点点头,没什么表情地在对面坐下。
“林晨是吧?我是技术部的负责人,姓王。”他翻开简历,目光快速扫过第一页的上半部分。
林晨调整了一下坐姿,露出准备好的微笑:“王总您好。”
王负责人没接这个称呼,他的视线在简历的某个位置停住了,眉头几不可察地皱了一下。那正是“出生年月”那一栏。
“1990年……”他低声念了出来,然后抬起头,第一次认真地打量了林晨几秒钟,目光在他眼角细微的纹路和稍显严肃的衬衫上停留了片刻。“35岁了?”
“是的。”林晨心里咯噔一下,但还是保持着笑容,“工作经验比较丰富。”
“嗯。”王负责人不置可否地应了一声,将简历放在一边,似乎对后面的内容已经失去了仔细阅读的兴趣。他拿起ipad,点开屏幕。“我们先聊聊技术吧。你简历上写精通Java高并发,那你说说,如果让你设计一个实时排行榜系统,每秒更新十万次排名,你怎么保证数据一致性和性能?”
这个问题不算刁钻,林晨稳住心神,结合过去做促销活动的经验,从数据库索引优化、缓存策略、异步队列到最终一致性补偿,条理清晰地阐述了一遍。他注意到,在他讲述的过程中,王负责人的手指在ipad屏幕上无意识地滑动着,眼神有些飘忽,似乎并没有完全在听。
“……大致就是这样,核心是减少对主库的直接压力,利用多级缓存和异步化。”林晨说完,看着对方。
王负责人“哦”了一声,点点头,没做评价,也没深入追问任何一个技术细节。他放下ipad,身体向后靠了靠,双手交叉放在桌上。
“技术层面,听起来你经验是有的。”他的语气很平淡,“不过,林先生,我有个问题想直接问问你。”
“您请说。”
“我们这个团队,平均年龄大概是26岁。基本都是95后,甚至00后。”王负责人顿了顿,目光直视林晨,“你35岁,加入进来,会不会觉得……有代沟?或者说,在沟通协作、工作节奏上,能适应吗?”
问题来得如此直接,甚至不加任何掩饰。林晨感到一股热血猛地冲上头顶,脸颊有些发烫。他深吸一口气,强迫自己冷静。
“王总,我认为年龄不应该成为衡量技术能力和团队适应性的标准。”他的声音比平时低沉了一些,“我过去十年的工作经验,包括处理复杂系统问题和带新人项目的经验,这些可能正是年轻团队需要的。至于沟通和节奏,我自认为学习能力和适应能力都不差,之前的工作强度也很大。”
“我不是质疑你的学习能力。”王负责人摆摆手,语气里带上了一丝不易察觉的、或许他自己都没意识到的优越感,“主要是团队氛围。年轻人嘛,想法活,玩得到一块,加班熬夜也能一起扛。你毕竟成家了,有孩子吧?精力、重心可能不一样。我们这里加班是常态,有时候为了赶版本,通宵也是有的。你……能跟得上吗?”
“我能。”林晨斩钉截铁地回答,但心里那股火越烧越旺。这已经不是质疑,几乎是赤裸裸的预设和歧视了。“工作经验告诉我,效率和成果不完全取决于熬夜时长。而且,我对工作的投入和责任心,不会因为年龄而改变。”
王负责人笑了笑,那笑容有些敷衍。“道理是这么个道理。但现实是,我们这个岗位,其实更希望找一个能长期稳定、有冲劲、能和团队一起快速成长的。你的经验确实有价值,但我们更看重未来的潜力和团队的融合度。”他拿起林晨的简历,用手指弹了弹纸张边缘,“说实话,看到35岁,我们hR初筛的时候就有顾虑。是我说先看看技术再说。现在看来,技术底子是有,但这个年龄……确实是个问题。”
林晨放在膝盖上的手攥紧了。他几乎能听到自己牙齿摩擦的声音。他想拍桌子,想质问对方,35岁怎么了?35岁的程序员就该被扔进历史的垃圾堆吗?十年的经验、踩过的坑、沉淀下来的解决方案,在这些年轻管理者眼里,就只浓缩成一个碍眼的数字和所谓的“代沟”?
但他最终什么也没做。他知道,任何愤怒的辩驳在此刻都苍白无力,甚至可能成为对方口中“年纪大、脾气大、不好管理”的佐证。
会议室里陷入一阵难堪的沉默。窗外的办公区传来年轻人热烈的讨论声和笑声,格外刺耳。
“我明白了。”林晨松开拳头,声音恢复了平静,甚至有些空洞,“谢谢您的时间。”
王负责人似乎也松了口气,站起身:“那今天就这样。后续有消息,hR会通知你。” 他连“保持联系”这样的客套话都省了。
走出“趣玩互动”那间冷气开得极足的办公室,穿过那些摆满手办、坐满t恤短裤年轻人的工位,林晨感觉自己的脚步有些沉重。在一群穿着连帽衫和文化衫的程序员中间,他这件扎进皮带、扣子扣到领口的白衬衫,显得刻板而突兀,像个格格不入的异类。
电梯镜面映出他的脸。领口被汗水浸得微微发黄,领带也因为燥热被他扯松了一截。镜子里的人,确实不再年轻了:眼角爬上了细密的纹路,额头因为发际线后移显得有些空旷,最扎眼的是眉宇间那股挥之不去的、属于中年人的疲惫和焦虑。
走出大厦,热浪瞬间吞噬了冷气的余温。站在烈日下,看着远处红得近乎灼人的凤凰木,只觉得那火红的颜色像是一场无声的嘲讽。
阳光刺眼得让人眩晕,凤凰木依旧没心没肺地开着,红得像是一团团烧不尽的火。林晨解开了衬衫最上面的两颗扣子,试图让那股粘稠的暑气从领口散出去一些。他低着头走向地铁站,背影在滚烫的柏油路上被拉得又细又长。
早高峰已过,11号线地铁车厢里不算拥挤。林晨找了个角落站着,麻木地看着窗外飞驰而过的城市景观——初夏的烈日将海面映得白晃晃的,远处大铲湾的塔吊像是一排沉默的巨兽。
对面座位上,两个看起来像大学生的男孩,头凑在一起,正盯着手机屏幕,手指飞快地滑动,外放着短视频激昂的bGm和夸张的笑声。
“哈哈哈这个太搞了!快点赞!”
“哎你看这个小姐姐,跳这个舞绝了!”
他们穿着宽松的潮牌大t恤,露出的手臂上贴着个性的纹身贴,脚下踩着干净的联名球鞋。其中一个男孩的头发染成了张扬的雾蓝色,眼睛里闪烁着对世界毫无负担的好奇和兴奋。
他想起自己刚来鹏城的时候,也才二十出头,挤在关外农民村的出租屋里,每天加班到深夜,啃着面包写代码,眼里也有光,那是对未来无限可能的憧憬。十年过去,代码写了无数行,系统架构了几个,房子买了,家成了,那点光却在日复一日的KpI、房贷、家庭责任和突如其来的失业中,渐渐黯淡,最终被“35岁”这个数字粗暴地遮盖。
时代真的变了。他熟悉的那个凭技术、凭经验吃饭的江湖规矩,似乎在悄然改写。年轻,成了某种不言而喻的资本,而年龄,则成了简历上需要被弱化、甚至需要为之道歉的“短板”。
地铁到站,机械的女声报着站名。林晨随着人流下车,走上通往地面的扶梯。扶梯缓缓上升,他回过头,看着车厢里那些依旧沉浸在手机世界里的年轻面孔,他们很快会被新鲜血液取代,就像他曾经取代更早的一批人一样。
一种深切的无力感包裹了他。技术可以学,经验可以攒,但时间,是唯一公平却又最残酷的东西,它单向流逝,从不为任何人停留。当整个行业的聚光灯和机会都下意识地偏向更年轻的面孔时,他这个35岁的“老家伙”,该往哪里去?
走出地铁站,鹏城湾的海风带着咸湿的气息吹来。远处,腾讯大厦的玻璃幕墙在阳光下熠熠生辉,那是无数程序员心中的圣地,却也以高强度和高淘汰率闻名。那里,会对35岁更友好一些吗?还是说,那里是另一个更残酷的、属于真正顶尖年轻人的竞技场?
林晨不知道答案。他只知道,口袋里那张写着下一个面试地址的纸条,似乎也失去了分量。如果“35岁”成了面试官眼中第一个,也是最重要的关注点,那么后面所有的技术问答、经验阐述,都像是为一场早已注定结局的演出所做的徒劳铺垫。
他拿出手机,屏幕上有一条苏婉发来的微信:“面试怎么样?别太大压力,中午记得吃饭。”
他看着这条简单朴素的关心,眼眶忽然有些发热。在这个快速迭代、崇尚年轻的城市里,至少还有一处地方,他的年龄不会成为被审视和质疑的理由。但那地方,也正是他必须用肩膀去扛起的责任所在。
他深吸一口气,咸湿的海风灌满胸腔,压下了那股翻涌的酸涩。他回复道:“刚结束,还行。这就去吃点东西,准备下午那场。”
点击发送,他用力抹了一把脸,重新扣好那颗刚刚解开的衬衫扣子。他没有走向回家的方向,而是转身扎进了正午滚烫的热浪中,朝着地图上那个新的坐标走去。
烈日当空,红得灼人的凤凰木在路边静默伫立。背影在柏油路上被拉得又细又长,依旧挺拔,却透着一丝孤独而倔强的倔强。
第7章 报喜不报忧
周五晚上七点半,鹏城的天色已经完全暗了下来。窗外科技园区的写字楼依然灯火通明,无数个格子间里亮着加班的光。林晨站在自家厨房里,盯着锅里翻滚的挂面,水蒸气模糊了抽油烟机的金属表面。
手机在客厅茶几上震动起来,屏幕亮起,显示着“家里”两个字。
林晨心里咯噔一下。他关了火,深吸一口气,调整了一下表情,才拿起手机按下接听。
“喂,妈。”他的声音尽量显得轻松。
“晨晨啊,吃饭了没有?”母亲李秀兰的声音从听筒里传来,带着熟悉的、略微拔高的音调,背景里还有电视的声音,大概是老家地方台的晚间新闻。
“正做着呢,妈。你们吃了吗?”
“吃过了,刚收拾完。你爸在看电视。”母亲顿了顿,“最近工作怎么样?忙不忙?”
来了。林晨喉结动了动,目光扫过冷清的客厅——没有公文包,没有加班带回来的笔记本电脑,茶几上只有几份打印出来的、已经被他翻得卷边的简历。
“还行,挺忙的。”他走到阳台,窗外是小区里其他住户温暖的灯光,有几家厨房里人影晃动,正在准备晚餐。“刚换了个新项目,在熟悉阶段。”
“新项目啊?好,好,有变动就是有机会。”母亲的声音透着欣慰,“要注意身体,别总熬夜。我看新闻说,你们那边互联网公司加班凶得很。”
“我知道,妈,我心里有数。”林晨靠着阳台栏杆,手指无意识地抠着栏杆上有些剥落的漆皮。“你和爸身体怎么样?爸的降压药按时吃了吗?”
“吃着呢,你爸现在听话多了。就是你爸老念叨,说鹏城房价贵,你们月供压力大,让你别太省,该吃吃,该喝喝。”母亲说着,忽然压低了点声音,“对了,你小姨前两天来家里坐,说她儿子,就你表弟小斌,上个月又升职了,现在是什么……项目经理了。在省城,听说工资又涨了。”
林晨感觉胸口像被轻轻撞了一下。表弟小斌,比他小五岁,普通二本毕业,在省城一家软件公司。他记得去年春节聚会时,小斌还在抱怨公司抠门,项目难做。
“那是好事啊。”林晨听到自己的声音很平稳,甚至带着点笑意,“小斌挺能干的。”
“是啊,你小姨高兴得不得了。我就是跟你说说,咱不跟别人比,你自己稳稳当当的就行。”母亲连忙补充,但话里的意味已经弥漫开来。“你一直是家里最有出息的,在鹏城大公司,爸妈都知道你压力大,不容易……”
“妈,我真挺好的。”林晨打断她,语气加重了些,仿佛这样就能让话语更真实。“项目有挑战才有成长,我们这行就是这样。您和爸别操心我,把自己身体顾好。”
“不操心,不操心。”母亲笑了,“你爸要跟你说话。”
电话那头传来窸窣声,父亲林建国略显低沉的声音响起:“喂。”
“爸。”
“嗯。”父亲的话总是简短,“工作忙归忙,家里有事要吱声。苏婉和乐乐都好吧?”
“都好,苏婉学校最近在准备公开课,乐乐幼儿园下周有亲子活动。”林晨汇报着,这些是真实的,让他稍微有了点底气。
“那就好。男人在外,家要顾好。”父亲停顿了一下,似乎在想还有什么要交代,“钱够用吗?”
“够用,爸,您放心。”林晨立刻回答,太快了,快得有点不自然。他赶紧补了一句:“工资还行,够开销。”
“嗯。不够要说。家里虽然帮不上大忙,一点应急的还是有的。”父亲说完,好像完成了任务,“让你妈再说两句。”
电话又回到了母亲手里,又叮嘱了几句按时吃饭、早晚温差大加衣服之类的话,才终于挂断。
嘟——嘟——
忙音响了两声,林晨放下手机。阳台外吹进来一阵夜风,带着鹏城初夏特有的、微湿的热气,却让他觉得有点冷。
他慢慢走回客厅,在沙发上坐下。刚才通话时强撑出来的那点“轻松”和“正常”,像潮水一样退去,露出底下嶙峋的焦虑和疲惫。
报喜不报忧。这是从他大学毕业来到鹏城打工开始,就无师自通学会的技能。最初是报喜不报忧,后来是报喜少报忧,再后来,忧越来越多,喜越来越少,但能说的部分,依然要精心修饰。
父母在老家小县城,一辈子和土地、和工厂机器打交道。他们理解不了“互联网寒冬”、“架构迭代”、“35岁危机”这些词。他们只知道儿子在鹏城的大公司上班,买了房子,是家族的骄傲和脸面。他们能理解的“不好”,只能是生病了,或者跟同事吵架了这类具体的事。
失业?那是天塌了的事。不能说。
林晨仰头靠在沙发靠背上,闭上眼睛。母亲那句“你表弟小斌又升职了”在脑子里回响。不是嫉妒,而是一种更复杂的情绪——失落,还有恐慌。连在省城的表弟都在稳步上升,而自己在鹏城,这个所谓的机会之都,却一脚踏空,急速下坠。
他算了一下时间。失业快三周了。面试五家,两家死在技术深度,一家死在年龄,还有两家聊得不错,但薪资离他的底线差了一大截。存款还有32万,房贷每月1万2,物业水电燃气通讯费差不多两千,一家三口最基本的生活开销,在鹏城这种地方,再怎么省,一个月也得五六千。算下来,净支出每月两万出头。
32万,只够支撑不到15个月。这还是最理想的状态,不考虑任何意外支出,比如孩子生病,比如老家突然有事,比如……
林晨猛地坐直身体,打断自己的计算。不能这么算,越算越心慌。
可理智就像脱缰的野马。如果不尽快找到工作,按照现在的消耗速度,一年后,家庭财务就会亮起黄灯。一年半后,可能就要动用到苏婉那点不多的积蓄,或者……考虑卖房?
这个念头让他打了个寒颤。这房子是他们夫妻奋斗十年,掏空六个钱包才换来的,是乐乐在鹏城落户的根基,也是他和苏婉在这个城市拥有的唯一一点实实在在的、可以称之为“资产”的东西。
不能卖。绝对不行。
可找不到工作怎么办?继续降低薪资要求?去那些更小的、更不稳定的公司?甚至,像有些被裁的老同事一样,开滴滴,送外卖?
林晨感到一阵窒息。他站起来,走到厨房,把那锅已经坨了的挂面倒进垃圾桶。没胃口了。
手机屏幕又亮了一下,是苏婉发来的微信:“晚自习刚结束,准备回家。乐乐在妈那儿睡了,明天直接送去幼儿园。你吃了没?”
林晨看着这条信息,手指在屏幕上悬停了好久。他想说“妈刚才打电话来了”,想说“表弟又升职了”,想说“我心里很慌”。但最后,他只是打字回复:“吃过了。路上注意安全,等你回来。”
又一个需要报喜不报忧的对象。作为丈夫,作为父亲,他应该是这个家的支柱,而不是压力的源头。
他把手机扣在桌上,走到书房。书桌上还摊开着那本《python编程:从入门到实践》,旁边是打印的机器学习入门笔记。前几天下定决心要学AI,可这几天被面试和焦虑来回碾压,真正静下心看书的时间少得可怜。
他坐下,翻开笔记。密密麻麻的字迹和公式,此刻看起来格外陌生和冰冷。35岁,从头学一门新技术,还来得及吗?学成了,就能打破年龄的壁垒吗?就能找到一份像样的工作吗?
无数个问号在脑海里盘旋,没有答案。
窗外,远处传来隐约的救护车鸣笛声,由远及近,又由近及远,消失在城市的夜色里。鹏城的夜晚,从来不曾真正安静。总有人在忙碌,在奔波,在赶路,在求救。
林晨盯着笔记上的一个公式,看了很久,视线却无法聚焦。
他忽然想起母亲电话里,除了表弟升职,还随口提了一句:“现在好像到处都在说那个什么……AI?你小姨说,小斌他们公司也在搞这个,说是以后的方向。”
当时他含糊应了过去。
此刻,这句话却格外清晰地浮现出来。
连在省城的、传统软件公司的表弟,都在接触AI了。
自己呢?
林晨缓缓吐出一口气,伸手打开了台灯。暖黄的光照亮了书桌一角,也照亮了笔记上那些倔强爬行的字迹。
他拿起笔,在空白处用力写下一行字:“没有退路,就是唯一的路。”
字写得有些潦草,但笔尖划破纸背。
这时,门口传来钥匙转动的声音。苏婉回来了。
林晨合上笔记,调整了一下表情,站起身,朝客厅走去。
脸上必须带上笑容,哪怕心里正下着暴雨。
这是成年人的体面,也是中年男人最后的、脆弱的铠甲。
第8章 无意的刺激
晚上九点半,林晨独自坐在客厅沙发上,笔记本电脑搁在腿上,屏幕上密密麻麻的招聘信息看得他眼睛发涩。乐乐已经被哄睡了,房间里安静得能听到墙上时钟秒针走动的声音。
苏婉今晚有个同事聚会,说是庆祝他们教研组组长评上了区里的优秀教师。林晨知道,这种场合多少带着点社交属性,他本想劝苏婉别去,但话到嘴边又咽了回去。她每天学校、家里两头转,也需要有自己的社交圈。
手机震动了一下,是苏婉发来的微信:“还要1个小时才结束,准备打车回来,大概1个半小时到。”
林晨回了个“好,注意安全”,起身去厨房烧了壶水。冰箱里还有中午剩的菜,他想了想,又拿出两个鸡蛋和一把挂面。等她回来,可以给她也下碗热汤面。
等待的时间里,林晨的思绪有些飘忽。失业第二十二天,投出去的简历石沉大海的多,有回音的寥寥无几,且薪资都远低于预期。昨天那个web3公司的面试,技术关明明过了,最后却卡在薪资上。对方hR委婉地说:“林先生,您的要求确实超出我们这个岗位的预算了。现在市场行情您也知道……”
他知道。太知道了。所以才更焦虑。
同一时间,万象天地某家装修精致的粤菜馆包厢里,气氛正热闹。
“来来来,再敬王组长一杯!区优秀教师,实至名归!”一个戴着眼镜的男老师举杯,脸上泛着红光。
被簇拥在中间的王组长笑着摆手,嘴上谦虚,眼里却满是得意。苏婉坐在靠门的位置,安静地吃着菜,偶尔附和着笑笑。她是语文组里比较年轻的老师,性格又偏静,在这种场合向来话不多。
“哎,苏婉,你老公最近怎么样?还在原来那家公司吗?”坐在苏婉旁边的陈太太突然凑过来问道。陈太太是组里另一位数学老师李老师的爱人,全职太太,热衷各种家长里短和比较。
苏婉放下筷子,笑了笑:“嗯,还在。”
“那挺好,稳定。”陈太太点点头,随即话锋一转,“不像我们家老李,死脑筋,就在学校待着。我表妹夫,在南山科技园那家做芯片的,叫什么来着……对了,思海!去年年终奖拿了这个数。”她神秘兮兮地伸出两根手指。
“二十万?”旁边另一位老师家属凑过来。
“两倍年薪!”陈太太扬了扬下巴,“今年刚换了辆宝马x5,停在楼下停车场那辆白色的就是。哎,苏婉,你们家车是不是也该换了?我记得是辆日系吧,开了好多年了。”
苏婉脸上的笑容有些维持不住,她端起茶杯抿了一口,淡淡地说:“车就是个代步工具,能开就行。”
“话不能这么说。”陈太太显然谈兴正浓,“男人在外面,车也是脸面。我表妹夫说了,他们那个圈子,开的车太差,谈生意人家都觉得你实力不够。对了,他们还在深圳湾一号买了套公寓,说是给孩子准备的学区房,虽然贵,但为了孩子教育,值得。”
“深圳湾一号?”有人惊叹,“那可是豪宅啊!”
“可不是嘛。”陈太太享受着众人惊叹的目光,又看向苏婉,“苏婉,你们家乐乐也快上小学了吧?学区房考虑得怎么样了?现在好点的学区,房价可是吓人哦。”
话题不知不觉间,从祝贺王组长,转向了隐性的家庭实力展示与攀比。空气里弥漫着一种微妙的、令人不适的比较氛围。
苏婉感到一阵胸闷。她知道陈太太未必有恶意,或许只是习惯性地炫耀,但那些话像细针一样,一下下扎在她心上。林晨失业的事,她谁也没说,连父母都瞒着。此刻,在同事和家属们或羡慕、或好奇、或单纯八卦的目光注视下,她感到一种无形的压力,仿佛自己正站在一个即将被戳破的肥皂泡边缘。
“苏婉老公也很厉害的,我记得是做It的吧?搞技术的,前途无量。”李老师大概看出苏婉的尴尬,打圆场道。
陈太太却似乎没领会,或者说不在意,顺着话头又问:“It好啊,赚钱多。苏婉,你老公现在年薪得有百万了吧?听说大厂程序员都这个价。”
苏婉的手指在桌下微微收紧。她抬起头,目光扫过陈太太,又看了看周围或明或暗投来的视线,一种强烈的保护欲和自尊心涌了上来。她不能让别人看轻林晨,尤其是在他最低谷的时候。
她深吸一口气,脸上重新露出平静而坚定的微笑,声音清晰地说:“我老公是很优秀。他工作一直很努力,技术也好。至于赚多少钱,那是他的本事,也是我们家的隐私。我觉得,一个男人的价值,不单单是用年薪或者开什么车来衡量的。他对我好,对家庭负责,支持我的工作,把家里照顾得很好,这就足够了。”
她顿了顿,语气更缓了些,却带着不容置疑的力量:“我相信他,不管现在还是将来,都能让我们家过得很好。”
包厢里安静了一瞬。陈太太脸上的笑容僵了僵,似乎没料到一向温和的苏婉会这么直接地“怼”回来。王组长适时地举杯:“说得好!苏老师这话在理!来来,大家再喝一杯,为我们组每一位老师的辛勤付出,也为我们背后默默支持的家人们!”
话题被岔开,气氛重新活跃起来,但那股攀比的暗流似乎悄然退去了些。苏婉暗暗松了口气,却感觉后背出了一层薄汗,心口那股闷气并未完全消散。
林晨刚准备把面条下锅,就听到了钥匙转动门锁的声音。
苏婉推门进来,脸上带着掩饰不住的疲惫。她换了鞋,把包挂在玄关,动作显得有些迟缓。
“回来了?聚会怎么样?”林晨关小了火,从厨房探出头。
“还行,就那样。”苏婉的声音很轻,透着一股无力感。她走到沙发边坐下,闭着眼揉了揉太阳穴。
林晨敏锐地察觉到她情绪不对。他没多问,很快煮好了一碗清汤面端出来,上面还卧了一个金黄的荷包蛋。
“知道你在外面吃过了,但聚会那种场合,估计光顾着说话没吃饱。我多下了点,你陪我再吃两口?”林晨把面推到她面前,递上筷子。
苏婉看着那碗热气腾腾的面,眼睫毛颤了颤。她坐过来,拿起筷子,小口小口地挑着面条,平时她总会笑着夸一句“老公手艺见长”,今天却格外安静,半晌才吃下去一小根。
“怎么了?聚会不开心?”林晨在她对面坐下,目光温和地看着她。
苏婉夹面的动作顿住了,她低着头,盯着碗里那个圆圆的荷包蛋,摇了摇头:“没有,就是……有点累。”
“是不是有人说闲话了?”林晨直接问。他太了解苏婉了,她不是个能藏住心事的人,这种写在脸上的低落,多半是受了什么言语上的刺激。
苏婉抬头看了他一眼,眼圈忽然有点红。她放下筷子,叹了口气,把聚会上的事,陈太太的炫耀,其他人的反应,以及自己当时强撑着维护他的话,断断续续地说了出来。
“……我就是听不得她们那样说,好像赚得少、没换车、没买学区房,就不算成功似的。”苏婉的声音带着委屈和一丝倔强,“我老公明明那么厉害,只是……只是暂时遇到点困难。”
林晨听着,心里像是被什么东西狠狠揪了一下,又酸又胀。他没想到,自己失业的压力,不仅扛在自己肩上,也通过这种无形的方式,压在了妻子身上。她在外面,因为他,承受了本不该承受的比较和审视。
他绕过餐桌,走到苏婉身边,蹲下身,握住她有些冰凉的手。
“对不起,”林晨声音有些沙哑,“让你受委屈了。”
苏婉的眼泪终于掉了下来,不是大哭,只是无声地滑落。“我没有怪你,林晨。我就是……就是心里难受。我知道你压力更大,我帮不上什么忙,还要让你操心……”
“傻话。”林晨伸手,轻轻擦掉她的眼泪,“你刚才在聚会上说的那些话,就是对我最大的帮助和支持。真的,苏婉,谢谢你。”
他站起身,将苏婉轻轻拥入怀中。苏婉靠在他怀里,肩膀微微抽动。
“别人怎么说,不重要。”林晨抚着她的背,声音低沉而坚定,“重要的是我们一家人在一起,心在一起。日子是过给自己的,不是过给别人看的。陈太太有她的活法,我们有我们的。相信我,低谷只是暂时的。”
“我知道……”苏婉闷声说,“我就是……一下子没控制住情绪。”
“该发泄就发泄,在我这儿不用忍着。”林晨拍了拍她,“面要凉了,先吃面。”
苏婉点点头,重新坐好,拿起筷子。这一次,她吃得很认真,热气氤氲中,脸色缓和了许多。
林晨坐回对面,看着她吃面,心里翻腾着复杂的情绪。有愧疚,有心疼,更有一种沉甸甸的责任感和被信任的温暖。妻子的维护,像黑暗中一缕坚定的光,照亮了他心底某些因连番挫败而滋生的阴霾。
他必须更快地站起来。
夜深了,两人躺在床上。苏婉已经平静下来,呼吸均匀。林晨却毫无睡意,睁眼看着天花板。
窗外的鹏城,灯火璀璨,这座以速度着称的城市从未沉睡。无数人和他一样,在各自的轨道上奋力奔跑,或被时代的洪流裹挟,或努力抓住改变的契机。
他轻轻拿起床头的手机,屏幕光在黑暗中有些刺眼。他点开浏览器,在搜索框里,缓缓输入两个字:AI。
然后,又加了几个关键词:转型、学习路径、就业前景。
无数信息跳了出来。他知道,这条路可能比想象中更难,更漫长。但此刻,一种前所未有的清晰目标感,压过了之前的迷茫和焦虑。
妻子无意识承受的“刺激”,成了刺破他惰性外壳的一根针。不能再犹豫了。
他侧过头,看着苏婉安静的睡颜,在心里默默地说:再等等,不会太久。
窗外,远处科技园的方向,依旧灯火通明,那里是无数代码和梦想交织的地方。而属于林晨的新代码,即将在这样一个普通又沉重的夜晚,悄然开始编写。
第9章 连续被拒
清晨六点半,鹏城的天空刚泛起鱼肚白。林晨已经坐在了书桌前,习惯性地刷新着邮箱。
过去几周,他像上了发条一样运转:修改简历、投递职位、准备面试、复盘总结。每天至少投出二十份简历,涵盖了他能想到的所有方向——跨境电商、传统软件、金融科技,甚至一些看起来不那么靠谱的创业公司。他把薪资期望悄悄调低到了每月三万五,年包四十二万左右,这比他之前的期望几乎腰斩。
“叮。”
邮箱提示音在安静的房间里格外清晰。林晨心头一跳,握着鼠标的手微微出汗。是“极速科技”的hR回复。他三天前刚面试完这家做跨境电商SaaS的中型公司,技术面聊得不错,面试官对他十年跨境电商系统的经验很感兴趣。
他点开邮件。
“尊敬的林晨先生:感谢您参与我司高级Java开发工程师职位的面试。经过综合评估,我们认为您丰富的业务经验与项目背景令人印象深刻,但团队目前更倾向于招募对微服务架构和云原生技术栈有更深入实践经验的候选人。因此很遗憾地通知您……”
后面是模板化的祝福语。
林晨盯着屏幕,沉默了几秒。这是他本周收到的第五封拒绝邮件。
第一封来自一家web3初创公司,拒绝理由是“年龄与团队平均年龄差距较大,担心文化融合问题”。他当时冷笑,团队平均年龄二十五岁,他三十五岁,大十岁就成了“文化不融合”?
第二封是一家传统软件公司,反馈是“技术栈偏旧,缺乏对新一代框架(如Spring cloud Alibaba, dubbo 3.0)的实战经验”。他承认,过去十年深耕业务,对框架的追新确实不够。
第三封是一家小金融科技公司,面试时对方对他提出的三万五月薪面露难色,最终回复“您的薪资期望超出本岗位预算”。
第四封是昨天收到的,一家电商公司,理由更直接:“经过多轮面试,综合评估您的能力与岗位要求存在一定差距。”
而今天这第五封,指向了另一个痛点:技术深度与前沿实践的缺失。
林晨靠在椅背上,揉了揉发胀的太阳穴。书桌上的台灯映出他眼下的淡淡青黑。窗外,鹏城科技园方向的地铁站已经开始涌入早起上班的年轻人,他们步履匆匆,脸上带着睡意却也充满朝气。曾几何时,他也是其中一员。
一股强烈的自我怀疑像潮水般涌上来。
他真的落后了吗?
三十五岁,十年经验,曾经也是项目骨干,带过团队,解决过无数线上紧急故障。那些深夜里排查bUG、优化SqL、设计架构的日子,那些积累下来的业务洞察和系统思维,难道在现在的招聘市场上一文不值?
他打开浏览器,无意识地登录了几个常去的技术论坛——V2Ex、掘金、Github trending。过去一周忙于面试,他已经好几天没认真逛过了。
首页的热帖标题像一记记重锤敲在他心上:
《Langchain实战:三天撸一个智能客服机器人》
《从零搭建企业级向量数据库检索系统,附完整代码》
《用LoRA微调Llama 3,让你的模型学会说方言!》
《多模态大模型应用落地思考:RAG还是Fine-tuning?》
……
他点开几个帖子,快速浏览。评论区和正文里充斥着各种术语:Embedding、transformer、Agent、prompt Engineering、GpU显存优化……有些概念他隐约听过,但具体是什么、怎么用、最佳实践如何,他一片模糊。
他甚至看到一个帖子在讨论“AI编程助手对中级程序员岗位的冲击”,下面有人回复:“以后cRUd(增删改查)工程师会大量被替代,必须向上走,做架构、做算法、做AI应用层。”
cRUd工程师。这个词刺痛了他。他过去十年,大部分时间不就是在和业务逻辑、数据库打交道吗?虽然复杂,但本质上……
林晨感到一阵窒息。他关掉网页,目光落在书桌一角。那里贴着一张便签,是苏婉前天悄悄贴上去的,上面是她清秀的字迹:“别急,慢慢来。我和乐乐相信你。”旁边还画了个歪歪扭扭的小太阳,肯定是儿子乐乐的手笔。
心里暖了一下,随即又被更沉重的愧疚压住。相信他?可他连一份像样的工作都找不到。房贷月供一万二,存款三十来万,就算全家节衣缩食,也只够支撑两年。两年后呢?
他鬼使神差地打开手机银行App,看了一眼存款余额:327,843.61元。比上周又少了几千块。社保要自己交,家庭日常开销,乐乐幼儿园的学费……数字无声地减少,像沙漏里的沙,提醒着他时间的残酷。
“难道真的要接受那份两万月薪的offer?”林晨脑海里闪过昨天接到的一个电话,一家小公司愿意给他两万月薪,做后端开发。对方hR语气带着施舍:“林先生,您这个年纪,有家庭要养,我们理解。这个薪资在市场上也不算低了,很多年轻人都拿不到呢。”
他当时以“需要考虑”搪塞了过去。两万,扣掉税和社保,到手一万五六,还了房贷只剩三四千,怎么养活一家三口?在鹏城,这点钱连稍微宽松点的生活都保证不了。
焦虑像藤蔓一样缠绕上来,越收越紧。他起身走到窗边,推开窗户。初夏的风带着一丝燥热吹进来,楼下早餐店的油烟味隐约飘上来。他看到苏婉正牵着乐乐的手走出单元门,应该是送儿子去幼儿园。苏婉今天穿了件素色的连衣裙,背影看起来有些单薄。她没有回头,径直往前走,脚步平稳。
她知道他今天可能又会收到坏消息吗?她是不是也在默默承受着压力,却从不向他抱怨?
林晨猛地关上窗户,坐回电脑前。不能再这样下去了。漫无目的地投简历,面试,被拒,像无头苍蝇一样。那些拒绝邮件,虽然措辞各异,但指向的核心问题似乎是一致的:他的技术价值在当前的市场上,不够“硬”,不够“新”,不够“深”。
他重新打开浏览器,在搜索框里输入:“35岁程序员 转型 AI 学习路径”。
这一次,他不是漫无目的地浏览,而是带着一种近乎偏执的认真。他点开知乎的高赞回答,收藏Github上标星过万的AI学习路线图,记录下coursera和Udacity上相关的专项课程。他对比着不同路径的优缺点,估算着需要投入的时间和金钱成本。
论坛里那些陌生的术语,此刻不再是令人焦虑的天书,而变成了一个个需要攻克的堡垒。Langchain是什么?大型语言模型的应用框架。向量数据库?用来存储和检索AI模型生成的嵌入向量。LoRA?一种高效微调大模型的技术,能节省大量计算资源……
他拿出一个崭新的笔记本,开始记录。第一页,他用力写下:“技术短板清单”。然后一条条罗列:
1. 深度学习理论基础薄弱(cNN/RNN/transformer原理)。
2. 缺乏pytorch/tensorFlow实战经验。
3. 对当前主流大模型(Gpt、Llama、文心一言等)的机制与应用场景不了解。
4. 机器学习经典算法(回归、分类、聚类)仅限理论了解,无项目实践。
5. AI工程化能力缺失(模型部署、服务化、性能监控)。
6. ……
写到最后,笔记本上已经密密麻麻。每一个条目,都像一道深深的沟壑,横亘在他与那些高薪的、前沿的岗位之间。
但奇怪的是,当这些差距被清晰地罗列出来时,林晨心中的焦虑反而减轻了一些。未知的恐惧最折磨人,一旦问题被具体化,它就变成了可以规划、可以拆解、可以一步步解决的任务。
他合上笔记本,目光重新变得坚定。五封拒绝邮件,是打击,也是警钟。它用最残酷的方式告诉他:过去的经验护城河正在干涸,必须为自己挖掘新的、更深的护城河。
AI,或许就是那个方向。虽然现在看起来高不可攀,但路总是人走出来的。
他看了一眼日历。今天是周五。他给自己定下目标:利用周末两天,制定出一个详细的、为期三个月的AI转型学习计划。下周一,不再海投简历,而是针对性地研究那些真正需要AI技能的岗位要求,同时,开启系统学习。
就在他准备关闭电脑时,浏览器标签页里,一个之前无意中点开的论坛广告突然闪烁了一下。那是一个线上AI实战训练营的推广,广告语写着:“从Java到AI,90天打造你的智能项目作品集。” 学费不菲,要两万八千元。
林晨的手指在鼠标上停顿了片刻。他看了一眼手机银行里那不断减少的存款数字,又看了一眼笔记本上那条条技术沟壑。
最终,他没有立刻关掉广告页,而是将它保存到了书签栏里。
第10章 深夜的思考
凌晨两点,林晨又一次从浅睡中惊醒。
不是噩梦,而是一种更具体、更绵延的窒息感——像有只手在睡梦中慢慢攥紧他的心脏。他睁着眼,盯着天花板上隐约可见的石膏线纹路,耳边是妻子苏婉均匀轻缓的呼吸声。这呼吸声平日里能让他安心,此刻却像某种倒计时,提醒着他作为丈夫和父亲的责任正在一分一秒地流逝。
他轻轻掀开被子,赤脚踩在微凉的地板上,走到客厅,再从客厅推开通往阳台的玻璃门。
夏初的鹏城深夜,空气里残留着白日的燥热,又被夜风调和成一种黏稠的微凉。他靠在阳台栏杆上,摸出烟盒。戒烟三年了,这盒还是最近在便利店鬼使神差买的。抽出一支,点燃,久违的辛辣感冲入喉咙,带来一阵轻微的眩晕和短暂的、虚假的放松。
他住的这个小区位于南山和宝安交界,不算核心,但楼层够高。从十二楼的阳台望出去,视线能越过一片片高低错落的居民楼,投向远方。
那里是深圳湾对岸的cbd。即便在这个时刻,依然有无数灯火通明。平安金融中心像一柄刺入夜空的发光利剑,周围簇拥着其他摩天大楼,它们的玻璃幕墙反射着城市的灯光和隐约的霓虹,勾勒出一片冰冷而璀璨的人造星河。更远处,深南大道像一条流动的光河,偶尔有车辆划过,拖出短暂的光尾。
他曾无数次在加班晚归的深夜,开车经过那片璀璨。那时觉得,那些灯光里有一盏是属于他的,他在为那片繁华添砖加瓦,也从中获取立足的资本。而现在,他站在自家阳台,遥望那片灯火,却感觉自己像被潮水遗留在沙滩上的贝壳,里面的生命正在迅速干涸。
“三十五岁。”他无声地吐出这几个字,烟雾随气息飘散。
这个数字在It行业,尤其是非管理岗,几乎带着某种诅咒的意味。经验?在技术迭代如翻书般的今天,十年的“经验”可能意味着五年的有效积累和五年的路径依赖。体力?比不上刚毕业能连续熬夜爆肝的小年轻。薪资期望?公司宁愿用两个便宜好用的新人。
他狠狠吸了一口烟,尼古丁让思维在焦虑中异常清晰,像在泥沼里点亮了一盏刺目的灯。
**选项一:彻底转行。**
做什么?开滴滴?送外卖?他自嘲地笑了笑。不是看不起这些职业,而是投入产出比太低。以他现在的房贷和家庭开销,那种收入连月供都覆盖不了。而且,三十五岁从头开始一个完全陌生的体力或低门槛行业,之前的十年积累瞬间归零,沉没成本高得让他心颤。
去做小生意?餐饮?零售?他连买菜都算不清斤两,对供应链、店铺运营一窍不通。老家县城倒是有亲戚开小超市,起早贪黑,一年挣个十几二十万,还要应付各种检查、邻里关系。那不是他擅长的战场。
**选项二:回老家。**
这个念头最近频繁闪现。老家在中南省一个三线城市,房价不到鹏城的十分之一。卖掉这里的房子,回去不仅能还清贷款,还能剩下一大笔,买套不错的房子,再找份清闲的工作,压力瞬间消失。
但是……回去能做什么?老家It岗位稀少,且薪资水平可能只有鹏城的四分之一甚至更低。他的技术栈在那边可能更无用武之地。更重要的是,乐乐正在这里上幼儿园,老家的教育资源……苏婉会同意吗?她自己就是老师,对孩子的教育环境看得极重。
而且,真的甘心吗?在鹏城奋斗十年,从城中村租单间开始,一步步落户、买房、结婚生子,终于扎下根,现在因为一次裁员,就像败军一样撤回老家?父母会怎么想?那些当初羡慕他能在“大城市”站稳脚跟的亲戚朋友会怎么看?他自己这关,首先就过不去。
**选项三:降薪,大幅降薪。**
这是最现实,也最刺痛的选择。把期望薪资从120万降到80万,甚至60万?他打开手机,看着之前拒绝他的那些公司开出的薪资范围:45-65K,16薪,算下来年薪大概在72万到104万之间。如果他能接受70万左右的包,机会会不会多很多?
手指在屏幕上悬停。理智告诉他,这是当前最可行的路径。家庭需要现金流,存款消耗的速度比想象中快。每月房贷1万2,物业水电停车费差不多2000,一家三口基本生活开销(算上乐乐幼儿园)至少要8000,这就去了2万2。30来万存款,如果不计其他任何额外支出,只够支撑10多个月左右。如果算上可能的医疗、人情往来、学习投入,这个时间还要缩短。
“最多……25个月。”他心里默算出一个更贴近现实的临界点,“而且是在极度节衣缩食的情况下。”
25个月,两年多一点。时间好像不短,但在毫无收入的情况下,看着存款数字每月稳定减少两万多,那种心理压力是呈指数级增长的。尤其是当存款跌破20万、10万这些心理关口时,恐慌会淹没一切。
可是,降薪就意味着承认自己“贬值”了,承认这十年的努力没有带来应有的价值增长,甚至还在倒退。更可怕的是,一旦这次降薪入职,下一次跳槽,薪资基准线就被锚定在了这个较低的水平,再想爬回原来的高度,难如登天。年龄越来越大,枷锁越来越重。
烟已燃到尽头,烫了一下手指。他捻灭烟头,又点了一支。夜风大了些,吹得他有些冷。
还有一个隐约的、不成熟的选项四:**all in 一个全新的、有未来的技术方向,用最短的时间把自己重新“武装”起来。**
这个想法来自张伟上次电话里的随口一提,也来自他这几天浏览论坛时看到的那些讨论——“AI赋能”、“模型微调”、“AIGc应用爆发”。那些帖子里的兴奋、焦虑、对未来的描绘,构成了一片他既陌生又感觉蕴含巨大能量的海域。
他懂技术基础,有编程思维,缺乏的是对特定领域(AI)的深入知识和实践经验。如果……如果他能像当年刚毕业时那样,拿出拼命的劲头,用三个月到半年时间,系统性地啃下机器学习、深度学习的核心知识,甚至跟着做一些实战项目,他能不能把自己变成一个“有AI经验”的程序员?哪怕只是入门级,结合他十年的工程经验,会不会产生不一样的化学反应?
这个想法让他心跳微微加速,但随即又被更深的疑虑覆盖。
“来得及吗?”他问自己。AI领域也在飞速发展,等他学完基础,会不会又错过了窗口?学习需要时间、需要精力,而求职不能停,家庭开销像流水一样。一边高强度学习,一边继续海投面试,身心能否承受?更重要的是,学习资源、路径如何选择?那些动辄上万的训练营,他是否值得投入本就紧张的存款?
各种念头在脑海里碰撞、厮杀,像一团乱麻,越理越乱。
他感到一种深深的疲惫,不仅是身体的,更是精神上的。那种对前路一无所知、脚下却已开始塌陷的恐惧,比连续加班一个月还要耗神。他想起父亲,那个在县农机厂干了一辈子的工人,五十岁时厂子改制,买断工龄下岗。父亲也曾有过这样的夜晚吗?在昏暗的灯光下,计算着手里微薄的补偿金能支撑多久,盘算着明天是去蹬三轮还是摆地摊?
一代人有一代人的困境,但焦虑的底色如此相似。
最终,所有的权衡、计算、恐惧,在凌晨清冷的空气中,慢慢沉淀下来。他没有得出一个完美的答案,没有找到那条清晰可见的康庄大道。
他只是明确了一点:**不能撤。至少现在不能。**
撤回老家是彻底的认输,是战略放弃。降薪是战术妥协,但必须谨慎,要设定底线,不能无原则退让。而那个“选项四”——学习新东西,尽管模糊,尽管充满不确定性,却是唯一一个指向“未来”、指向“可能性”的方向。
他掐灭第二支烟,喉咙干涩。远处cbd的灯火似乎黯淡了一些,天际线开始渗出一种深蓝,离黎明不远了。
回屋前,他最后看了一眼手机屏幕,上面还停留着某个技术论坛的页面。一条被顶到前面的帖子标题映入眼帘:《2025,不懂AI的程序员还有多少价值?》
他沉默着,把这条标题记在了心里。
阳台门轻轻关上,将逐渐泛白的天光挡在外面。屋内依旧昏暗,安静。林晨躺回床上,苏婉在睡梦中无意识地靠了过来,手臂搭在他身上。他闭上眼,不再试图入睡。
他知道,自己刚刚在阳台上,做了一个没有明确路线图的决定:坚持,同时寻找新的武器。前路依旧迷雾重重,但站在原地等死,不如摸着黑往前走几步。
至少,方向是向前的。
第11章 猎头的橄榄枝
清晨六点半,林晨在手机闹钟响起前就睁开了眼睛。昨晚在阳台待到凌晨四点,抽了半包烟,脑子里乱糟糟的,但奇怪的是,睡下后反而比前几天安稳了些。也许是把那些选项摊开、利弊想清楚后,焦虑被暂时转化成了某种待解决的问题清单。
他轻手轻脚起床,苏婉和乐乐还在睡。简单洗漱后,他给自己冲了杯速溶咖啡,坐在书桌前,打开了电脑。昨晚那个模糊的念头——“坚持,同时寻找新的武器”——此刻像晨雾一样,需要被阳光驱散,露出具体的路径。
邮箱里依旧躺着几封自动回复的拒信。招聘网站上的“已读不回”状态像一排沉默的墓碑。林晨深吸一口气,关掉那些页面,打开了记事本。他开始列清单:
1. **技能盘点**:Java(精通)、Spring全家桶(熟练)、mySqL/oracle(精通)、Redis/mongodb(熟练)、Linux运维(熟悉)、电商业务逻辑(深入)……十年经验,堆砌起来似乎很厚实。但他盯着“电商”两个字看了很久。现在风口在哪里?AI、大数据、云计算、web3。他的技术栈,是不是像一本十年前出版的专业书,内容扎实,但封面已经褪色?
2. **学习方向**:他新建了一个文件夹,命名为“AI学习”。打开搜索引擎,输入“python 入门”、“机器学习 基础”。网页跳出来,各种课程、论坛、术语扑面而来。他点开一个号称“三天入门python”的教程,看了五分钟,眉头紧锁。语法不难,但后面的“Numpy”、“pandas”、“tensorFlow”是什么?他意识到,这不仅仅是学一门新语言,而是进入一个全新的、以数学和统计学为基础的领域。三十五岁,从头学高等数学?这个念头让他后背有点发凉。
3. **求职策略调整**:是否应该暂时降低薪资预期,先拿到一个offer,解决现金流问题,同时利用工作间隙学习?这个想法刚冒头,就被房贷月供1.2万的数字压了下去。降薪,意味着存款消耗速度加快,意味着家庭生活品质的进一步压缩,意味着……某种意义上的认输。他想起昨晚否定的“无底线妥协”。底线在哪里?他咬着笔杆,在“薪资底线”后面画了个问号,暂时写上:**不低于原薪资80%,且岗位必须有技术成长性**。
就在他对着屏幕发呆,计算着80%是多少,以及有多少公司能给一个35岁的“传统”码农开出这个价时,手机突然响了。
一个陌生的深圳本地号码。
林晨心跳漏了一拍。最近他接到太多推销电话,从贷款到保险,从少儿编程课到房产中介。他犹豫了一下,还是接了,声音带着惯常的谨慎:“喂,您好。”
“您好,请问是林晨林先生吗?”电话那头是一个语速偏快但清晰的男声,带着职业化的热情。
“我是。您哪位?”
“林先生您好,我是猎头顾问Kevin,锐仕方达的。我这边看到您的简历,您在跨境电商领域有非常资深的开发经验,目前是在看机会对吗?”
猎头!林晨精神一振,坐直了身体。“是的,我正在看机会。”他尽量让声音听起来平稳自信。
“太好了。我这边手上正好有一个非常匹配您背景的职位,想跟您沟通一下。”Kevin的语调富有感染力,“是一家头部金融科技公司,在南山科技园。他们正在组建一个新的支付风控中台团队,需要一位高级Java开发专家,负责核心交易链路和风险控制系统的设计与开发。职位级别是p7,带小团队。”
金融科技?支付风控?林晨大脑飞速运转。这和他之前的电商领域有差异,但支付、交易、高并发、系统稳定性这些核心要求是相通的。听起来是个不错的机会。
“这个职位对技术深度和项目经验要求比较高,我看您过去主导过几次大促的架构优化和系统扩容,这方面的经验非常宝贵。”Kevin显然仔细看过他的简历,“不知道您对金融科技这个方向是否感兴趣?”
“有兴趣。我之前的工作也涉及支付和订单系统,对高并发和稳定性有实际处理经验。”林晨谨慎地回应,同时试探,“这个职位的薪资范围大概是多少?”
电话那头稍微停顿了半秒,似乎是在翻看资料。“薪资结构是底薪加绩效和年终奖。根据您的资历,底薪部分我们可以争取到35K到45K这个范围,年终奖一般是3-6个月。总包算下来,有机会达到您之前的薪资水平,甚至可能略有上浮。”
35K-45K,按中间值40K算,16薪就是64万,离他之前的百万年薪还有差距,但似乎……可以谈?而且如果绩效好,可能更高。最重要的是,这听起来是个正经的大公司岗位,不是那些画大饼的web3初创。
“公司平台很好,业务稳定上升期,技术挑战也够。”Kevin继续加码,“不过,林先生,我也得跟您实话实说,这个职位竞争非常激烈。目前已经推了十几份简历过去,有来自大厂t、A、h的,也有从国外回来的。面试流程会很严格,至少四到五轮,包括技术深度、系统设计、项目管理和hR终面。”
“竞争激烈”四个字,像一盆冷水,让林晨刚刚升起的希望又蒙上一层压力。他仿佛能看到简历筛选后台里,自己那份写着“35岁”、“前跨境电商公司”的简历,和那些顶着“t厂p8”、“A厂资深专家”、“海归博士”光环的简历排在一起。
“我明白。”林晨的声音沉了下来,“机会难得,竞争也正常。我需要做哪些准备?”
“首先,我们需要更新一份更针对性的简历。”Kevin进入专业模式,“重点突出您在复杂系统架构、高并发处理、性能优化和线上问题排查方面的项目经验,特别是跟‘交易’、‘资金’、‘安全’相关的部分。金融行业对稳定性和安全性的要求是极高的。”
“其次,技术面试会深入到底层。JVm调优、多线程并发、分布式事务(比如Seata的原理和落地)、缓存穿透/雪崩的解决方案、mySqL的索引优化和分库分表实践,这些肯定是重点。最好能准备一两个您主导过的、最能体现技术深度的项目,从头到尾讲清楚背景、挑战、你的方案、实施细节和最终效果。”
“最后,”Kevin语气放缓了些,带着点提醒的意味,“林先生,您有十年经验,技术功底我相信是扎实的。但面试官可能会关注您对新技术的了解和学习能力。虽然这个岗位是Java为主,但大数据组件(hadoop/Spark)、消息队列(Kafka)、容器化(docker/K8s)这些周边生态,最好也能有所了解,能说出个一二三。还有,对金融支付业务的基本逻辑、常见风险点,最好提前做些功课。”
林晨一边听,一边在记事本上飞快记录。Kevin说的每一点,都戳在他已知或隐约担忧的地方。技术深度他有一些底气,但“新技术了解”和“金融业务知识”,确实是他的短板。
“谢谢Kevin,信息非常详细,对我帮助很大。”林晨诚恳地说。
“不客气,这是我的工作。我会把职位Jd和公司更详细的介绍发到您邮箱。您今天内能把更新后的简历发给我吗?我尽快安排推荐。时间不等人。”Kevin的语速依旧很快。
“好的,我今天就整理。”
挂断电话,书房里恢复了安静,只剩下电脑风扇轻微的嗡鸣。窗外的天色已经大亮,早高峰的车流声隐隐传来。
林晨靠在椅背上,长长地吐了一口气。心脏还在因为刚才的电话微微加速跳动。希望,像一颗被重新点燃的火星,在胸腔里明明灭灭。但同时,Kevin那句“竞争非常激烈”和列举的强劲对手,又像厚重的冰层,覆盖在火星之上。
他看了一眼电脑屏幕上的清单,在“求职策略”下面,重重地写下了“金融科技-p7-风控中台”几个字,然后在旁边标注:“**核心优势:复杂系统经验。短板:金融业务知识、部分新技术。准备重点:项目深度梳理、技术原理复盘、业务补课。**”
薪资范围……他盯着35K-45K,算了又算。如果拿下45K,16薪就是72万。加上妻子苏婉的收入,覆盖房贷和生活费应该够了,还能有些结余。虽然离120万的理想有差距,但似乎是一个可以接受的、现实的“底线”?
不,还不能这么想。他摇摇头,把“底线”这个词从脑子里赶出去。先全力以赴准备,把这次面试当成一个检验自己成色的机会。拿到offer,才有谈判的资格,才有选择的余地。
他关掉记事本,打开简历文件。十年职业生涯,像一卷长长的胶片,开始在脑海中回放。那些熬夜上线的夜晚,那些惊心动魄的线上故障,那些从无到有搭建起来的系统模块……他需要从这庞杂的经历中,提炼出最闪光、最硬核的部分,打磨成一把能切开激烈竞争的利刃。
就在这时,手机又震动了一下。是Kevin发来的邮件,附带了详细的职位描述(Jd)和公司介绍。林晨点开,仔细阅读。公司名字叫“迅付通”,确实是国内支付领域的头部企业之一。Jd上罗列的技术要求密密麻麻,很多术语他熟悉,也有一些他仅仅“听说过”。
他的目光停在Jd最后一行:“**具备强烈的学习意愿和能力,能快速理解金融业务,拥抱技术变化。**”
学习意愿和能力……林晨握了握拳。也许,这次面试不仅是一个工作机会,更是一个信号,一个逼他必须跳出舒适区,真正开始“寻找新武器”的信号。
他喝掉已经凉掉的咖啡,活动了一下有些僵硬的脖子,开始敲击键盘。屏幕的光映在他的脸上,专注,又带着背水一战的凝重。
他不知道这场“激烈竞争”的结果会如何,但至少,电话响了,门开了一条缝。他得先挤进去看看。
整理简历的过程并不轻松,他需要反复斟酌措辞,量化成果,突出亮点。不知不觉,一个上午过去了。当他将一份修改了数遍、自觉精炼了许多的简历保存下来,准备发给Kevin时,手机再次响起。
这次,是老家打来的。
是大哥林枫。
林晨看着屏幕上跳动的名字,刚刚因专注工作而暂时忘却的家庭压力,瞬间又回来了。
第12章 线上技术测评
“喂,大哥。”
“小晨,在忙吗?”林枫的声音听起来有些疲惫,背景音里有隐约的机器轰鸣声,他应该还在工地。
“刚忙完一点事。怎么了?昨天打电话我没接着。”
“没啥大事,就是大娘这两天又念叨你了,问我你工作找得咋样,怕你压力大。”林枫顿了顿,“我跟你嫂子商量了,这个月的房贷,我们先帮你垫上点,你别硬扛。”
林晨心里一暖,但立刻拒绝:“不用,大哥。我手里还有,能周转。你们也不容易。”
“跟哥还客气啥!”林枫语气加重了些,“我知道你要强,但现在是特殊时期。大娘那边我帮你安抚着,你就安心找工作。对了,你上次说让小浩去学点技术,我跟他提了,这小子……有点犹豫,嫌学厨师又累又没面子,还想在厂里混着。你有空再跟他说道说道,你的话他可能听得进去。”
“好,我知道了。等我这边稍微稳定点,我好好跟他聊聊。”林晨应承下来。侄儿林浩才二十出头,在工厂流水线上确实看不到未来,学门手艺是条实在的路。这也提醒了他,自己的困境不仅仅是自己的,还牵连着家人的关切和期望。
挂断电话,书房重新陷入了死寂。
林晨机械地坐回电脑前,右手食指在F5键上悬停良久,最终还是按了下去。页面转了一圈,收件箱依旧空空如也。那种等待审判的焦灼感,像是一根细细的钢丝,勒得他太阳穴隐隐作痛。他知道,在hR的后台系统里,自己或许只是几十个待处理的UId之一,但在他这里,这就是全家人的生计。
翌日清晨七点半,手机在床头柜上发出的沉闷震动,像是一道惊雷,将林晨从浅眠中猛地拽起。
他几乎是条件反射般抓过手机,屏幕的冷光映出他布满血丝的眼。
发件人:迅付通招聘组。
主题:关于您应聘p7高级开发工程师职位的线上技术测评通知。
林晨屏住呼吸点开邮件,每一个字都读得极慢。邮件告知他已通过初筛,邀请他在48小时内完成线上测评。测评限时120分钟,一旦开启便进入倒计时,内容涵盖了算法、数据结构与系统设计三大板块。
“终于来了。”林晨低声自语,手指因用力而微微发白。
猎头Kevin昨天的话在脑海中反复回响:“林工,这岗位的竞争已经白热化了,至少有十几个候选人进了这轮,不少是刚从大厂出来的‘卷王’。”
林晨深吸一口气,胸腔里翻涌着一种久违的、即将踏入战场的战栗感。他很清楚,对于一个35岁的架构师来说,系统设计是他的护城河,但那该死的、纯粹考验脑力反应速度的算法题,却是他最容易折戟的雷区。
他赤脚走到窗边。窗外,深圳的清晨依旧笼罩在灰蒙蒙的雾气中,远处的写字楼群在晨曦中若隐若现,像是一座座沉默的丰碑。
但他觉得,书房里的空气似乎比昨天清新了许多。那种由于长期失业而产生的腐朽感被一扫而空,取而代之的是一种冷冽的临战感。
他再次摸到了战场的大门。这一次,他绝不打算在门前倒下。
妻子苏婉已经送儿子乐乐去幼儿园了,桌上留着温好的粥和包子。他匆匆吃完,将碗筷洗净,然后回到书房——现在也是他的临时作战室。
电脑开机,他先没有点开测评链接,而是强迫自己静坐了几分钟。他环顾这间小小的书房,书架上除了少数技术书籍,大多是他过去十年做跨境电商时积累的各种产品目录、物流手册和早已过时的平台运营指南。墙壁有些泛黄,窗外的天空是鹏城典型的灰白色,远处南山科技园那些玻璃幕墙大厦在朦胧中闪着冷光。
“不能再输了。”他低声自语,点开了链接。
浏览器跳转到一个简洁的测评平台界面,需要开启摄像头和屏幕共享。他按要求调整好角度,确保整个屏幕和上半身都在监控范围内。点击“开始测评”按钮的瞬间,倒计时120分钟开始跳动。
第一部分:算法题。两道,限时45分钟。
第一题是常见的字符串处理变形。题目描述不长,但条件嵌套有点绕。林晨迅速在脑中构建模型,手指敲击键盘,在代码编辑区写下思路注释。刚开始写核心逻辑函数时,他感到手指有些僵硬,思维也不如年轻时那般丝滑。一个边界条件的处理,他竟犹豫了几秒,下意识地想翻看过去的代码库,随即意识到这是闭卷考试。他自嘲地笑了笑,稳住心神,凭借记忆和逻辑推演,一步步将代码补充完整。运行测试用例,前几个过了,最后一个超时。
“时间复杂度高了。”他皱眉,盯着代码。这是典型的“手生”表现——知道问题在哪,但优化方案不能第一时间蹦出来。他花了宝贵的五分钟重新梳理,将一层循环优化掉,再次提交,通过。时间已经耗去二十多分钟。
第二题是动态规划。看到题目的刹那,林晨心里咯噔一下。dp,他当年求职时的强项,也是工作后锈蚀最厉害的技能之一。业务代码写多了,这种纯粹的算法肌肉确实会退化。他尝试定义状态,写出转移方程,却总觉得哪里不对劲。时间一分一秒流逝,额头渗出细汗。倒计时提示音轻轻“滴”了一声,将他从僵局中惊醒。
“不能卡死在这里。”他果断决定,先确保有解。他放弃最优解,用了一个记忆化搜索的暴力思路,虽然效率低,但能保证正确性。代码写完后,测试用例只通过了60%,大部分因为超时被拒。他无奈提交,知道这部分得分恐怕不会高。
第一部分结束,他靠向椅背,短暂地闭了闭眼。挫败感像细小的藤蔓缠绕上来。十年业务开发,让他对数据库设计、接口优化、系统扛并发如数家珍,但面对这些纯粹的算法竞技,他感到了明显的力不从心。这就是市场现实,对35岁以上的程序员,不仅要求经验,还要求你保持如应届生般锋利的算法能力。
休息了三十秒,他进入第二部分:数据结构。两道题,限时35分钟。
第一题是实现一个支持特定操作的队列变体。这次感觉好了很多。数据结构是基础中的基础,就像木匠熟悉刨凿锯斧,哪怕多年不打造复杂家具,工具的手感还在。他清晰地记得各种结构的特性和实现细节,代码写得流畅起来。设计、实现、测试,一气呵成,全部通过。
第二题是关于树结构的遍历与信息统计。他同样较快地完成了核心代码,但在处理一个递归返回值时, initially 犯了个小错误,导致某个分支情况漏算。测试用例报错后,他迅速定位问题,修正,再次通过。这部分的完成时间比规定时限提前了几分钟。
信心回来了一些。他喝了一口早已凉掉的水,看向最后一部分:系统设计。一道大题,限时40分钟。
题目场景是:设计一个支持海量商户实时交易风控的系统。需要阐述整体架构、核心组件(数据采集、规则引擎、模型计算、决策执行等)、存储选型、缓存策略、可能的技术挑战与解决方案。
看到这个题目,林晨的眼睛亮了。这不是他过去十年每天都在间接打交道的东西吗?跨境电商平台的防欺诈、反刷单、支付风险监控,虽然业务细节不同,但核心思想和架构模式何其相似!那些深夜排查线上问题、设计应对峰值流量方案、与风控团队扯皮数据口径的日子,此刻都化成了清晰的脉络。
他活动了一下手指,开始在答题区(一个富文本编辑器,可以画简单框图)奋笔疾书。他没有追求最新最炫的术语堆砌,而是从最基本的“高可用、可扩展、低延迟”要求出发,分层展开:
接入层用负载均衡集群分散流量;数据采集考虑异步消息队列(Kafka)缓冲,避免冲垮处理系统;规则引擎部分,他区分了“硬规则”(实时、简单逻辑)和“软模型”(近实时、复杂AI模型),并给出了可能的部署策略;存储方面,针对不同的数据特性(流水、特征、模型参数、决策结果)推荐了不同的数据库(时序数据库、关系型、KV存储等);缓存用Redis集群,并考虑了热点数据和一致性策略;挑战部分,他重点写了数据延迟与计算延迟的权衡、规则/模型的动态更新与生效、系统监控与降级方案……
他画了几个简单的模块框图,用文字补充细节。思路如泉涌,甚至考虑了一些细枝末节,比如监控埋点设计和灾备切换流程。这不再是考试,更像是一次工作复盘和方案评审。当他写下最后一个句号时,时间还剩五分钟。
他快速从头到尾检查了一遍,修正了两处笔误,然后提交。
整个测评界面变成“已完成”状态。120分钟的倒计时停止在最后几秒。林晨长长地吐出一口气,仿佛刚跑完一场马拉松,精神高度集中后的疲惫感缓缓袭来,但心底却有一种扎实的满足感。算法部分可能拖了后腿,但系统设计,他觉得自己发挥出了应有的水平。
关闭浏览器,他站起来活动了一下僵硬的脖颈。
第13章 一面:技术经理
下午三点,鹏城科技园一栋写字楼的十七层,“迅付通”公司的小会议室里,技术经理王磊刚结束一场内部评审会。他揉了揉眉心,点开hR系统里标记为“待一面”的候选人列表,排在第一个的名字是:林晨。 王磊三十七八岁,戴着黑框眼镜,头发有些稀疏,是典型的十年以上技术管理者模样。他快速浏览了林晨的简历和线上测评报告。简历很扎实,十年跨境电商后端经验,主导过几个核心系统。测评报告则呈现出有趣的“分裂”:算法部分耗时偏长,正确率尚可;系统设计部分评价很高,评语写着“方案完整,考虑周全,有实战经验”。 “有点意思”。王磊低声自语,点下了“发起视频面试”的按钮。他需要亲眼看看,这个测评表现矛盾的候选人,到底是个纸上谈兵的“架构师”,还是真有解决复杂问题的能力。
与此同时,林晨正对着笔记本电脑屏幕,反复检查摄像头角度和背景。他把书架上一堆技术书籍稍微整理了一下,让《高性能mySqL》、《Redis设计与实现》这几本大部头更显眼一些。手机震动,钉钉提示音响起——“迅付通王磊邀请您加入视频会议”。 林晨深吸一口气,点击加入。屏幕一分为二,左边是自己略显严肃的脸,右边出现了一位戴着眼镜、面色平静的中年男性。
“林晨你好,我是‘迅付通’支付中台的技术经理,王磊”。
对方声音平稳,没什么寒暄,
“我们直接开始。首先,请你用三到五分钟,介绍一下你简历里提到的‘跨境电商订单与履约系统’,重点讲讲你作为核心开发,处理过的最复杂的业务场景和技术挑战”。
来了。林晨精神一振,这个问题他早有准备。他略微组织语言,开始讲述:“这个系统支撑公司日峰值百万级的订单处理。我负责的核心模块是库存中心与订单路由……” 他语速平稳,从业务背景讲到技术架构,重点描述了“秒杀场景下的库存精准扣减”和“多仓库智能路由优化”两个难点。讲到库存扣减时,他特意提到了最初使用数据库行锁导致性能瓶颈,后来引入Redis+Lua脚本实现分布式锁和预扣库存的方案。 王磊一直安静听着,偶尔在面前的笔记本上记录几笔。
等林晨说完,他推了推眼镜:“你提到用Redis做库存预扣。如果Redis集群出现网络分区(脑裂),导致部分节点数据不一致,怎么保证最终扣减的准确性?你们有做补偿或对账机制吗”?
这个问题有点深。林晨略一思索,答道:“有的。我们当时设计了两层保障。第一层,所有扣减操作除了写Redis,还会异步发消息到mq,由另一个服务落库作为‘操作日志’。第二层,有定时任务,在每天业务低峰期,跑批将Redis里的库存快照与数据库里的‘操作日志’进行核对,如果发现不一致,以数据库日志为准进行修正,并报警。虽然不能做到强一致,但保证了最终一致和业务可追溯”。
“代价是延迟修正和数据短暂不一致的可能”。王磊指出。 “是的”,林晨点头,“这是权衡的结果。秒杀场景下,性能和高可用优先级高于强一致。我们通过设置合理的库存安全阈值和监控,将风险控制在可接受范围。实际运行两年,未因此产生过重大资损”。
王磊不置可否,接着问:“好。下一个问题,还是这个系统,你提到订单查询慢,优化后qpS提升五倍。具体优化手段”?
“主要是数据库层面”。林晨进入更熟悉的领域,“当时订单表数据量过亿,查询用户历史订单的接口响应很慢。我们分析了慢查询日志和SqL执行计划,发现几个问题:一是查询条件经常组合变化,索引命中率低;二是存在大量回表查询;三是有些关联查询写法不优”。“怎么解决的”?“第一,针对核心查询路径,我们重新设计了联合索引,考虑查询频率和区分度,比如把‘用户Id+下单时间’作为最左前缀。第二,对一些高频且字段固定的查询,比如只查订单号、状态、金额,我们做了覆盖索引,避免回表。第三,优化了部分JoIN,能拆成多次查询用程序合并的,就拆开,减少数据库单次压力。第四,对非实时要求的查询,引入了Elasticsearch做二级索引”。林晨顿了顿,补充道,“当然,前提是业务方同意接受部分查询的轻微延迟”。 “Elasticsearch和mySqL的数据同步怎么做的”? “基于binlog,用canal监听变化,推送到消息队列,再由消费者同步到ES”。林晨回答得很流利,这是他们当时实际采用的方案。
王磊的问题开始变得更开放:“如果现在让你重新设计这个库存中心,考虑到如今的技术选型更多样,你会有什么不同的思路?或者觉得当初的设计,在现在看有什么明显的不足”?林晨沉默了几秒。这个问题考察的是技术演进思考和复盘能力。“如果现在设计”,他缓缓开口,“我可能会更倾向于考虑使用分布式事务框架,比如Seata的At模式,来尝试简化‘预扣’和‘最终扣减’之间的状态管理,虽然会引入一定的复杂度,但可能让流程更清晰。另外,当时我们对Redis的使用比较基础,现在可能会更深入地利用Redis的数据结构,比如用Sorted Set来管理不同优先级仓库的库存水位,实现更动态的路由。不足……当初对监控和可观测性投入不够,很多问题靠报警和人工查日志,现在肯定会把链路追踪、指标埋点做得更完善”。
王磊的脸上似乎掠过一丝极淡的认可,但很快又恢复了平静。“好。技术问题先到这里。聊聊你个人。看你简历,十年都在同一家公司,做跨境电商。为什么现在想换到金融支付领域?你觉得这两个领域的后端技术,核心差异在哪里”? 林晨知道这是考察动机和行业理解。“想换领域,一是个人职业发展的寻求,想接触更复杂、对稳定性和数据一致性要求更高的系统;二是对支付技术本身有兴趣”。他斟酌着用词,“核心差异,我个人理解,电商后端更侧重于处理高并发、大流量下的业务正确性和用户体验,容忍一定程度的最终一致。而金融支付,尤其是资金处理核心,对强一致性、事务性、安全和审计追溯的要求是极高的,可以说‘稳定压倒一切’,任何资金差错都是不可接受的。技术挑战的侧重点不同”。 “你对web3、区块链有了解吗?我们公司也有一些相关方向的探索”。王磊突然抛出一个问题。 林晨心里咯噔一下。这正是他的知识盲区之一。他如实回答:“了解一些基本概念,比如去中心化、智能合约,但缺乏深入的实践。我过去的技术栈和业务主要集中在传统的互联网后端领域”。王磊点了点头,没有深究,似乎只是随口一问。“我这边问题差不多了。你有什么想问我的”?林晨想了想,问了两个问题:一是这个技术经理岗位主要负责的具体业务线和技术团队规模;二是团队目前面临的主要技术挑战或正在推进的重点项目方向。 王磊的回答简洁务实:负责支付核心链路中的一个中台团队,约十人;当前挑战主要是系统老旧模块的重构和向云原生架构迁移的平稳过渡。 “今天的面试就到这里。后续如果有进一步安排,hR会联系你”。王磊说完,点了点头,便结束了视频通话。 屏幕暗下,林晨靠在椅背上,长长吐了一口气。整整四十五分钟,问题一个接一个,几乎没有停顿。他感觉像跑了一场技术马拉松。 复盘刚才的表现:项目细节讲得应该还算清楚,性能优化的问题答得比较扎实,都是实际干过的活儿。最后那个“重新设计”和“差异分析”的问题,自己发挥得也算中规中矩。web3那个问题露怯了,但好在对方没追问。 “感觉……还行”?林晨自言自语,心里却没什么底。王经理全程表情变化很少,很难看出他的倾向。这种技术经理的面试,往往更看重解决实际问题的思路和深度,而不是单纯的知识点背诵。 他起身倒了杯水,看着窗外渐渐暗下来的天色。房贷提醒短信静静地躺在手机里,这个月的还款日又近了。大哥林枫虽然说了可以帮忙垫,但那终究不是长久之计。这次面试,成了他失业后第一个真正触及到技术核心层面的机会。 等待,又是焦灼的等待。他不知道自己这份“感觉还行”,在对方那里能打多少分,能否换来下一轮面试的入场券。
鹏城的夜幕降临,无数写字楼依然灯火通明,那里有无数个像王磊一样的面试官,决定着无数个像林晨一样的求职者的下一步方向。 他只能等,并在等待中,继续投出下一份简历。
第14章 等待的焦虑
面试结束后的第一天,林晨还沉浸在一种混杂着疲惫与轻微亢奋的余韵里。他反复复盘和王磊的对话,哪些问题答得漂亮,哪些地方略显仓促,尤其是那个关于web3的问题,他承认不了解时对方微微停顿的那半秒。总体感觉,六四开吧,六成把握能过。他这样告诉自己,然后强迫自己打开招聘App,继续浏览新的职位,投了几份简历。邮箱,只在上午、下午下班前各刷新了一次。
第二天,感觉开始微妙地变化。早晨起床第一件事就是摸手机,解锁,点开邮箱。没有新邮件。那个熟悉的“收件箱(0)”字样显得有些刺眼。上午,他按照计划复习了一些分布式系统的知识点,但每隔四十分钟左右,手指就会不由自主地滑向手机,点亮屏幕,瞥一眼通知栏——空空如也。
下午,他尝试写点代码,一个简单的数据爬虫练手项目,却总是心不在焉,调试时出了几个低级错误。邮箱刷新的频率变成了每小时一次。他开始怀疑,是不是自己网络有问题?重启了路由器,甚至用手机流量也试了试。邮箱依然安静。 “才第二天,急什么”。他对着电脑屏幕自言自语,“hR也要走流程,可能面试官还没反馈呢”。道理都懂,但那股隐隐的、向下拉扯的情绪,像潮湿梅雨季节的墙壁,慢慢渗着水汽,越来越重。
第三天,焦虑感正式登堂入室,占据了客厅的沙发,还泡了杯茶,一副要长住的样子。 林晨从早上七点醒来,到晚上十一点,刷新邮箱的次数已经多到自己都记不清。任何一点手机震动或提示音都能让他心跳加速,抓起来一看,不是App推送就是微信群里无关紧要的消息。他把“迅付通”hR的邮箱地址和王磊面试时用的腾讯会议号都快背下来了。每一次刷新后那短暂的加载动画,都像是一次微型审判。
下午三点,窗外阳光正好,鹏城科技园的那些玻璃幕墙大楼反射着耀眼的光。林晨却觉得房间里有些闷。他走到阳台,看着楼下小区里遛狗的老人和奔跑的孩子,一种疏离感油然而生。他们的世界按部就班,而他的世界,悬停在一次面试结果的通知上,摇摇欲坠。 不能再这样被动等下去了。 他回到电脑前,点开了猎头Kevin的微信对话框。上次沟通还是面试安排的时候。他斟酌着字句,既要显得积极关注,又不能流露出太多急迫和不安,以免在后续可能的薪酬谈判中落入下风。 “Kevin,您好。我是林晨。想跟进一下‘迅付通’技术经理岗位的面试进度,距离上次和王磊经理的视频面试已经过去三天了,不知道公司那边是否有进一步的反馈或安排?麻烦您有空时帮忙了解一下,谢谢”。 检查了两遍,点了发送。 消息状态很快变成“已读”。林晨的心提了一下。但对方没有立刻回复。等待从邮箱转移到了微信。他盯着聊天窗口,仿佛能盯出对方的输入状态来。 十分钟后,手机震了一下。 Kevin回复了。 林晨立刻点开。 “林先生您好。我这边刚才询问了一下hR。反馈说面试官的评价已经提交了,目前还在综合评估和对比其他候选人的阶段,流程还没有最终走完。hR那边说,有确切消息会第一时间通知我们。请您再耐心等待一下,我也在持续跟进中”。
还在评估。 对比其他候选人。 这几个字像几颗小石子,投入林晨原本就泛着涟漪的心湖,荡开更大的不安波纹。 他打字回复:“好的,明白了,谢谢您跟进。有消息随时沟通”。“不客气,有进展我会立刻通知您”。Kevin回了一个微笑的表情。 对话结束。林晨靠在椅背上,长长地呼出一口气。房间里的闷热感似乎更重了。猎头的回复很职业,没有坏消息,但也没有任何积极的信号。“对比其他候选人”,这意味着他并非唯一的选择,甚至可能不是最优先的那个。王磊面试时那看不出喜怒的脸,此刻在回忆里变得更加模糊而难以揣测。 他关掉微信,又一次点开邮箱。刷新。 空。 再刷新。 还是空。 他索性打开了银行App,查看账户余额。那串数字,在房贷自动扣款提示的映衬下,显得格外单薄。他下意识地计算着:如果这个月再没收入,存款还能支撑多久的月供和生活费?算到一半,他强行掐断了这个念头。不能这么算,越算越心慌。 傍晚,苏婉接乐乐放学回家。孩子叽叽喳喳地说着幼儿园的趣事,苏婉一边应和着,一边敏锐地察觉到了林晨的沉默和眉宇间挥之不去的凝重。 “今天……有消息吗”?吃过晚饭,乐乐去看动画片了,苏婉收拾着碗筷,轻声问。 林晨摇摇头,帮着她把盘子拿到厨房:“问过猎头了,说还在流程中,要对比候选人”。 苏婉打开水龙头,水流声哗哗作响。“哦,那就是还没定。别太着急,才三天”。她的声音混在水声里,显得平静而温和,“你面试发挥得不是还行吗”? “感觉是还行,但谁知道别人发挥得怎么样”。
林晨拿起抹布擦着灶台,“现在找工作,竞争太激烈了。一个技术经理岗位,不知道多少人在盯着”。 “尽人事,听天命”。苏婉擦干手,转过身看着他,“你尽力准备了,也正常发挥了,剩下的就不是你能控制的了。老是揪着不放,难受的是自己”。 道理永远是那么简单明了,但身处其中的人,想要挣脱情绪的泥沼,却需要莫大的定力。林晨点点头,勉强笑了笑:“我知道”。他知道,但做不到。
夜晚,焦虑变成了失眠的盟友。 乐乐睡着了,苏婉也呼吸均匀地进入了梦乡。林晨躺在黑暗中,睁着眼睛。白天强行压下的各种念头,此刻像黑暗中滋生的藤蔓,疯狂缠绕上来。 如果没通过怎么办?下一个面试机会在哪里?还能不能找到薪资接近预期的工作?如果一直找不到,存款还能撑几个月?难道真要降价求售,去那些小公司?那之前的坚持和所谓的“底线”岂不成了笑话?房贷怎么办?乐乐明年就要上小学了…… 一个个问题,没有答案,只有越来越重的窒息感。 他摸出手机,屏幕的光在黑暗中刺眼。凌晨一点半。他下意识点开邮箱,刷新。当然没有新邮件。他又点开招聘App,漫无目的地刷着职位列表。那些招聘要求,有的看起来高不可攀,有的又显得琐碎而无趣。刷着刷着,他的注意力开始涣散,转而点开了常去的技术论坛。 论坛里永远热闹,有人在讨论最新的框架漏洞,有人在分享跳槽拿到高薪offer的面经,也有人在吐槽公司加班和领导的愚蠢。林晨一条条划过,像一个旁观者,看着另一个依然鲜活、卷动着的世界。忽然,一个标题吸引了他:“35岁,传统后端,感觉被时代抛弃了,转型AI还有戏吗”? 他点了进去。发帖人的描述和他有几分相似,年龄相仿,技术栈偏传统,对火爆的AI、大模型感到焦虑和迷茫。下面的回复五花八门,有鼓励的,有给出学习路径的,也有冷嘲热讽说“别卷了,卷不过年轻人”的。 林晨怔怔地看着屏幕。AI……这个词最近出现的频率越来越高。之前面试的web3公司也隐约提及需要一些智能合约相关的知识,虽然那不是真正的AI。张伟好像也提过,大厂都在猛攻AI。自己是不是真的落后太多了?除了眼前的求职,是不是也该看看更远一点的方向?
这个念头一闪而过,随即又被更现实的焦虑吞没。眼前的工作还没着落,哪有心思想那么远。 他退出论坛,又刷了一会儿无关紧要的新闻。时间滑向凌晨三点。眼睛干涩,头脑昏沉,但睡意全无。他知道明天又会是在刷新邮箱和等待中开始的一天,这种悬而未决的状态,不知道还要持续多久。 最终,他放下手机,在黑暗中强迫自己闭上眼睛。耳朵却变得异常灵敏,听着窗外偶尔驶过的车辆声,听着空调低沉的运转声,听着自己并不平静的呼吸和心跳。 等待,成了一种无声的消耗。
第15章 深夜的对话
又是一夜凌晨三点四十三分。 林晨第三次从床上坐起来,动作轻得几乎没有声音。他怕吵醒苏婉。窗外是鹏城科技园永不彻底沉睡的夜景,远处写字楼零星亮着灯,像悬在黑夜里的孤独信号。
他走到客厅,没开灯,借着窗外透进来的微光,在沙发上坐下。 手机屏幕在黑暗中亮起,刺眼。邮箱空空如也。猎头对话框里最后一条消息还是那句“hR那边还在综合对比候选人,有消息我第一时间通知您”。他手指悬在屏幕上方,想再问点什么,又觉得徒劳且卑微。算了。 他点开那个收藏的论坛帖子——《35岁传统Java后端,还有机会转型AI吗?》。帖子是几天前深夜看到的,楼主经历和他惊人相似:同样年龄,同样技术栈,同样遭遇裁员,不同的是楼主已经自学python和机器学习半年,面了几家,还没上岸,但在帖子里分享学习路径和踩坑经验。评论区有鼓励,有嘲讽,也有更多同病相怜者的迷茫。
“看什么呢”?轻柔的声音从身后传来。 林晨手一抖,手机差点掉地上。回头,苏婉穿着睡衣,站在卧室门口,客厅微弱的光勾勒出她单薄的身影。 “吵醒你了”?林晨声音有点干涩。 “你没在边上,我睡得浅”。苏婉走过来,挨着他坐下,看了眼他手机屏幕,“AI?你想学这个”? “随便看看”。林晨按熄屏幕,黑暗重新吞没客厅,“论坛上瞎聊的”。 沉默了几秒。只有窗外极远处隐约传来的车辆行驶声。 “面试……还是没消息”?苏婉问,声音很平静。 “嗯”。林晨应了一声,顿了顿,补充道,“猎头说还在对比。‘对比’这个词,听着就不太妙”。他试图让语气轻松点,却透出一股掩饰不住的疲惫。
苏婉没接话,只是伸出手,轻轻握住了他放在膝盖上的手。她的手微凉,但很柔软。 “这四天,你话特别少”。苏婉说,“吃饭也心不在焉。乐乐问你编程问题,你都答得敷衍”。 林晨身体微微一僵。他以为自己掩饰得很好。 “我算了下”,苏婉的声音在黑暗里清晰而稳定,“房贷卡里扣掉这个月的,咱们存款还有二十七万七千多。我工资卡里还有四万多,是这学期的一些补贴和课时费,没动过。加起来,三十二万是有的”。 林晨猛地转头看她,尽管黑暗中看不清表情:“你算这个干什么”? “我知道你在算”。苏婉握紧了他的手,“你手机浏览器历史记录里,最近三天查了十七次‘鹏城家庭最低生活开销’、‘失业金领取流程’、‘大龄程序员转行方向’。半夜我起来,看见你手机亮着,不是在刷邮箱,就是在看那些数字”。
林晨喉咙发紧,一句话也说不出来。他感觉自己像个被剥光了外壳的蜗牛,所有焦虑和不堪的计算,都暴露在最亲近的人面前。 “林晨”,苏婉侧过身,面对着他,黑暗中她的眼睛似乎有微光,“我们结婚十年了。你是什么样的人,我比谁都清楚。你不是那种会轻易被击垮的人。以前项目上线前出那么大篓子,你三天三夜没合眼,最后不也扛过来了?这次……只是需要点时间”。 “不一样”。林晨的声音沙哑,带着一种压抑已久的情绪,“那时候我知道问题在哪,知道怎么解决。代码就在那里,bug就在那里,逻辑是清楚的。现在……”。他苦笑一下,“现在我不知道敌人在哪。是年龄?是技术落伍了?是市场不行了?还是我这个人……根本就不行了?我不知道靶子在哪儿,拳头都不知道往哪挥”。
他低下头,双手插进头发里:“而且,那时候输得起。现在输不起。房贷、乐乐、爸妈年纪也大了……每个月睁眼就是一万多的固定支出。三十多万听着不少,坐吃山空,能撑多久?两年?三年?然后呢”? 声音越来越低,到最后几乎成了喃喃自语:“我以前觉得,写代码,凭手艺吃饭,稳稳当当的。怎么就……怎么就变成这样了”? 忽然,他感觉到脸颊上有温热的触感。是苏婉的手,轻轻抚过。 “你哭了”?苏婉的声音有些惊讶,更多的是心疼。 林晨这才意识到,自己不知何时已泪流满面。
三十五岁的男人,在妻子面前,在深夜里,因为前途未卜和沉重的责任感,溃不成军。他试图抹掉眼泪,却越抹越多。 “对不起……”他哽咽着,“我不该……不该这样……” “该怎样”?苏婉打断他,声音温柔却有力,“你是人,不是机器。累了,怕了,难受了,哭出来怎么了?在我这儿,你永远不用硬撑着”。
她张开手臂,将他轻轻揽入怀中。林晨的身体先是僵硬,随后慢慢放松,额头抵在妻子的肩头,像个终于找到依靠的孩子。 “林晨,你听我说”。苏婉的声音在他耳边响起,平稳而坚定,“工作没了,可以再找。钱少了,可以再挣。但你要是垮了,这个家就真的垮了。我不怕日子紧巴几年,我怕你把自己逼到死胡同里,怕你觉得你一个人要扛下所有”。 她稍稍退开一点,双手捧住他的脸,让他看着自己,尽管黑暗中只能看到模糊的轮廓:“我相信你。不是敷衍,是真心实意地相信。相信你的能力,相信你的韧性,更相信你这个人。十年了,你从来没让我、让这个家失望过。以前不会,以后也不会”。
“苏婉……”林晨的声音颤抖着。 “论坛上那个AI,你想学,就去学”。苏婉继续说,语气里带着她作为语文老师特有的条理和鼓励,“你不是看了好多资料吗?觉得有路,就去试试。家里的事,有我在。开销我们能省就省,我的工资够覆盖基本生活。你安心做你想做的、该做的事。找不到马上年薪百万的工作,我们就找年薪五十万的,三十万的,哪怕二十万的,先站稳脚跟。路是一步一步走出来的,不是一下子跳过去的”。 她顿了顿,一字一句地说:“别一个人硬扛。我们是夫妻,是家人。风雨来了,我们一起扛”。
“一起扛……”林晨重复着这三个字,仿佛有千斤重,又仿佛卸下了千斤重担。滚烫的泪水再次涌出,但这次不再是纯粹的苦涩和绝望,里面混杂了温暖、愧疚,和一股重新燃起的微弱却坚实的火苗。 他反手紧紧抱住苏婉,抱得很用力。苏婉也回抱着他,轻轻拍着他的背。 窗外,科技园某栋大楼的灯熄灭了,又有一盏亮起。这座城市的夜晚,总有人沉睡,也总有人醒着,在焦虑,在计算,在寻找出路,或者在相互依偎中,汲取第二天继续前行的勇气。 不知过了多久,林晨的情绪渐渐平复。他松开苏婉,有些不好意思地擦了擦脸。 “好了”?苏婉轻声问,带着一点笑意。 “嗯”。林晨点点头,虽然黑暗中她可能看不见,“那个……AI的东西,我确实看了不少。python我以前接触过一点,机器学习是全新的,但底层逻辑和数学,我觉得我能啃下来。可能需要时间,可能短期内看不到收益……” 。“去做”。苏婉干脆地说,“总比每天刷新邮箱,自己吓自己强。需要买课程、买书,就从家用里出。需要安静,我就带乐乐去图书馆或者公园”。
林晨心中那块压了许久的巨石,似乎被撬开了一道缝隙,有光透进来。他再次握住苏婉的手:“谢谢你,苏婉”。 “傻话”。苏婉靠在他肩上,“对了,明天周六,我约了林枫大哥一家过来吃饭。你也好久没见浩浩了,散散心,别总自己闷着”。 林枫,他的堂兄,在鹏城做建筑相关的工作。侄儿林浩,高中毕业就出来打工,现在好像在哪个电子厂流水线上。家庭聚会……或许真的需要一点烟火气,来冲淡这段时间的阴郁。 “好”。林晨答应下来。 两人重新躺回床上时,窗外天际已隐隐透出一丝灰白。
鹏城的一天,又要开始了。林晨闭上眼,这一次,脑海里翻腾的不再仅仅是焦虑的数字和渺茫的面试结果,还多了一条若隐若现、布满荆棘却可能通向新方向的小路。 以及,身边人平稳温暖的呼吸声。
第16章 二面:技术总监
褪去了周末的慵懒,鹏城的周一清晨早已重新上紧了发条。林晨站在阳台上,看着楼下小区花园里晨练的老人和行色匆匆的青年,深深吸了口气。
昨日林枫一家带来的喧嚣如潮水般退去,客厅重归寂静,只有那份被特意整理过的整洁,无声诉说着侄儿林浩的勤谨。那孩子性子沉静,手脚却很是麻利。林晨想起饭桌上,听他断断续续地讲述流水线上日复一日的枯燥,那眼底流露出的迷茫,竟让自己感到一种久违的熟悉。
面试安排在上午十点。林晨提前半小时就坐到了书桌前,打开笔记本电脑,再次检查了一遍网络、摄像头和麦克风。屏幕右下角的时间跳动着,每一下都像敲在心上。他翻开昨晚准备的笔记,上面密密麻麻写着可能被问到的技术点:mySqL索引原理、Innodb与myISAm区别、Redis持久化方案、缓存雪崩穿透的应对策略……这些都是他十年工作经验里反复咀嚼过的内容,但临场前再看一遍,心里才踏实。 九点五十五分,视频会议链接准时出现在邮箱。林晨点击进入,一个虚拟会议室界面展开。对方还没到,背景是默认的模糊虚化效果。他调整了一下坐姿,将背后书架上一排技术书籍——《高性能mySqL》《Redis设计与实现》《大型网站技术架构》——恰好纳入镜头边缘。这不是炫耀,而是一种无声的陈述:我为此准备着。
十点整,画面一闪,对方接入。 一位看起来四十岁左右、戴着黑框眼镜、发际线略显后退的男子出现在屏幕里。背景是一间简洁的办公室,白板上画着一些架构草图。他穿着深蓝色 polo 衫,表情严肃,目光透过镜片直接看向摄像头。 “林晨?我是陈锋,迅付通的技术总监”。声音平稳,略带一点沙哑。 “陈总您好,我是林晨”。林晨微微点头,控制着语速。 “你的简历我看过了,十年跨境电商后端经验,主导过几次系统重构”。陈锋没有寒暄,直接切入主题,“我们先聊聊你简历上写的那个订单中心重构项目。你说将响应时间从平均800毫秒优化到了200毫秒以内,具体是怎么做的? 来了”。林晨精神一振,身体微微前倾:“那个项目核心问题是历史包袱重,表结构设计不合理,关联查询多。我们分了三步走。第一步是数据层梳理,把原先一个大宽表拆分成订单主表、订单明细表、订单状态流水表、订单扩展属性表,遵循了范式化设计,减少冗余。第二步是索引优化,针对高频查询路径,比如按用户Id+时间范围查订单、按订单状态+商户Id查,建立了复合索引。这里有个细节,我们分析了业务查询模式,发现‘状态’字段的枚举值分布不均匀,‘待付款’状态的查询量占70%,所以针对这个状态单独建立了部分索引……” 。“等等”。陈锋打断,“你提到部分索引,在mySqL里怎么实现的?5.7版本还是8.0?” ,“项目用的是mySqL 5.7。我们当时用了虚拟列加上函数索引的变通方式。先在表里增加一个虚拟列,值是cASE whEN语句判断状态是否为‘待付款’,然后对这个虚拟列建立索引。虽然不如8.0的原生函数索引直接,但在当时场景下,对特定状态查询的优化效果非常明显,查询速度提升了五倍左右”。
陈锋点了点头,在面前的笔记本上记录了什么。“继续”。 “第三步是引入缓存和读写分离”。林晨流畅地接上,“对订单的概要信息,比如订单号、金额、状态、时间,这些变更不频繁但查询量巨大的数据,用Redis做了一层缓存,缓存策略是惰性更新加定期刷新。同时,将历史订单的查询路由到只读从库,减轻主库压力。这三步做完,再加上一些代码层面的优化,比如批量操作代替循环单条操作、避免N+1查询,最终达到了目标”。
“缓存用的Redis,你们怎么解决缓存和数据库的一致性问题”?陈锋追问,问题开始深入。 “我们采用了比较经典的‘先更新数据库,再删除缓存’策略。但这里有个坑,如果数据库更新成功,缓存删除失败,还是会有一致性问题。所以我们引入了一个简单的重试机制,删除失败后放入一个延迟队列,最多重试三次。同时,给缓存数据设置了相对较短的过期时间,比如五分钟,作为最终兜底,确保即使缓存删除一直失败,数据也不会长时间脏读”。 “如果遇到缓存穿透呢?比如有人恶意用不存在的订单号频繁查询”。 “我们在缓存层加了一层布隆过滤器。查询前先过布隆过滤器,如果判断订单号大概率不存在,直接返回空,不继续查缓存和数据库。对于少量误判的情况,因为订单系统对‘订单不存在’这个结果的实时性要求不是极端苛刻,可以接受偶尔多一次缓存未命中后查库的代价”。
陈锋脸上看不出满意与否,只是接着问:“订单表数据量有多大?拆分后,你们怎么处理分页查询,比如用户要查自己第50页的历史订单”? “拆分前单表大概一亿两千万行。拆分后,主表数据量不变,但查询效率提升。分页查询,尤其是深度分页,确实是个挑战。我们优化了方案,不是直接用`LImIt offset, size`,因为offset越大越慢。对于用户查自己订单的场景,我们利用了‘用户Id+创建时间’的复合索引,并且要求前端传递上一页最后一条订单的创建时间作为查询锚点,使用`whERE user_id = ? ANd create_time < ? oRdER bY create_time dESc LImIt size`这种方式,实现了性能稳定的分页”。 接下来的二十分钟,问题如同层层剥笋,从数据库索引的b+树原理、联合索引的最左前缀匹配原则,到Redis的Rdb和AoF持久化机制优劣、集群模式下的数据分片与迁移,再到系统监控指标(qpS、tpS、响应时间分位值)、线上故障排查流程。陈锋的问题既有广度,触及多个技术栈,又有深度,往往在一个点上追问两三层,考察是否真正理解而不仅仅是会用。 林晨的回答总体流畅,十年的实战经验给了他底气。有些细节他回答得非常详尽,甚至提到了当年踩过的具体坑和解决过程;有些地方他坦诚地表示“这块当时不是我主要负责,但我了解大致方案是……”。当被问到一道关于分布式事务最终一致性在订单场景下如何保证的问题时,他思考了几秒,才结合消息队列和补偿机制给出了回答。回答完,他补充了一句:“这是基于我们当时业务场景的折中方案,如果放在今天,我会更倾向于调研一下Seata这类分布式事务框架的适用性,虽然会引入复杂度,但可能更规范”。
陈锋听到这里,第一次露出了些许不同的表情,像是微微挑了一下眉。“哦?你知道Seata?有了解过它的At模式、tcc模式区别吗”? “了解过一些。At模式是无侵入的,基于数据源代理,对业务代码改动小,但锁的粒度粗,性能有损耗;tcc模式需要业务代码实现try、confirm、cancel三个接口,侵入性强,但控制更精细,性能更好。具体选型要看业务对一致性的要求级别和性能容忍度”。林晨回答得谨慎,这是他最近自学时浏览技术社区看到的,不算精通,但概念清晰。 面试官沉默了几秒,翻动着面前的资料。“好,技术问题先到这里。我问个别的”,陈锋抬起头,目光再次直视镜头,“你从上家公司离职,是主动还是被动?看你的项目经历和技术沉淀,应该算是团队骨干,为什么离开”? 这个问题比技术问题更让林晨心头一紧。他深吸一口气,决定坦诚:“是被动离职。公司业务调整,整个技术团队进行了收缩。至于为什么是我……可能涉及到综合因素,包括年龄、成本考量等等。但我认为,我过去十年的积累是扎实的,也希望能在一个更看重技术价值和长期发展的平台上继续发挥”。
他没有抱怨,也没有刻意卖惨,只是陈述事实,并表达意愿。 陈锋点了点头,看不出对这个回答的评价。“我了解了。你有什么想了解的?业务、技术栈、团队都可以”。 林晨知道这是面试的最后一个环节,也是他获取信息的机会。他问了几个准备好的问题:公司目前核心业务的技术挑战、团队规模与分工、主要使用的技术栈及未来规划、对新入职员工的期望和培养路径。 陈锋的回答简洁务实,提到公司正在从快速增长期向精细化运营过渡,技术层面面临系统稳定性、数据治理和架构演进等挑战;技术栈以Java为主,微服务架构,云原生方向探索;团队需要能独立解决问题、有owner意识的人。
“我的问题问完了”。林晨说。 “好,那今天的面试就先到这里”。陈锋看了一眼时间,“后续如果有消息,hR会在一到三个工作日内联系你”。 “谢谢陈总的时间”。林晨礼貌道别。 屏幕暗下,会议室里只剩下林晨一个人。他向后靠在椅背上,长长地呼出一口气。手心有点汗,后背的衬衫也微微贴住了皮肤。他回忆着刚才的每一个问题和回答,仔细复盘。技术问题答得七七八八,有几个点可以答得更好,但整体没有明显卡壳或错误。最后关于离职原因的回答,算是中规中矩。陈锋的态度始终专业而冷静,看不出倾向。 “感觉……还行”?他低声自语,但心里那根弦并没有放松。“还行”在竞争激烈的鹏城求职市场,往往不够。 他关掉电脑,走到客厅。阳光洒满半个房间,茶几上还放着昨天林枫带来的老家特产——一包倒蒸红薯干。他拿起一根放进嘴里,软糯香甜的口感在齿间越嚼越有味,带着红薯特有的质朴与阳光气息。侄儿林浩昨天悄悄问他:“小叔,电脑难学吗?”他当时回答:“看你想学什么,有兴趣就不难”。林浩“哦”了一声,没再问,但眼神里有点别的东西。 手机震动了一下,是苏婉发来的微信:“面试怎么样?中午想吃什么?我做。” 林晨回复:“刚结束,感觉还行,等消息吧。简单点就行,你辛苦”。他放下手机,走到书架前,目光掠过那排厚重技术书籍,落在了旁边几本新买的、还没怎么翻开的书上——《python编程:从入门到实践》《机器学习实战》《动手学深度学习》。上周深夜对话后,他凌晨就在网上下单了。陈锋最后提到“技术栈以Java为主”,但那个关于Seata的问题,似乎又暗示着对新技术的关注。 或许,仅仅守着过去的十年经验,真的不够了。林晨拿起那本《python编程》,封面的触感还很新。他翻开第一页,前言里写着:“编程不只是语法,更是一种解决问题的思维方式”。 窗外,鹏城科技园的方向,高楼在阳光下反射着耀眼的光。那里有无数个像迅付通一样的公司,有无数场正在进行或刚刚结束的面试。他能否拿到那张入场券,还是未知数。但有一点逐渐清晰:无论能否拿到,那条名为“AI”的新路,他得开始试着走走了。 等待,不再是纯粹的焦虑。它混合了反思,以及悄然萌生的、对新知识的渴求。
第17章 希望破灭
鹏城七月的午后,阳光透过阳台玻璃,在地板上切割出锐利的光斑。
林晨坐在书桌前,笔记本电脑屏幕上是未完成的个人项目——一个半成品的电商后台管理系统。他的手指悬在键盘上,却一个字也敲不下去。 距离迅付通的二面已经过去整整一周。
这一周,他每天早上九点准时打开邮箱,刷新至少二十次。手机稍有震动便心头一紧,看到是广告或App推送又瞬间泄气。他反复复盘和陈锋技术总监的对话,从数据库索引优化聊到分布式事务的最终一致性方案,自认没有明显失误,甚至在某些问题上展现出了超越普通工程师的思考深度。
“最多三天”。 他记得面试结束时hR的微笑承诺。
第三天,没有消息。他安慰自己,大公司流程慢。
第五天,他开始有些坐不住,但强行按捺住主动询问的冲动——张伟说过,上赶着不是买卖,姿态不能太低。
第七天,也就是今天,焦虑已经像藤蔓一样缠住了他的喉咙。
“爸爸”! 五岁的乐乐从客厅跑过来,手里举着一幅蜡笔画,“看我画的火箭”! 林晨勉强挤出笑容,接过画。纸上是用红色和蓝色蜡笔涂抹出的模糊形状,勉强能看出是个带火焰的柱体。“真棒,乐乐以后要当宇航员吗”? “嗯!我要飞得最高”! 孩子眼睛亮晶晶的。 苏婉端着切好的水果走过来,轻轻放在书桌一角。她没问工作的事,只是说:“吃点水果,别老盯着屏幕”。 林晨点点头,心里却像压了块石头。房贷短信前天准时到了,银行卡扣款成功的提示此刻像是一种无声的嘲讽。家庭存款的数字,在他心里每天至少过三遍,每一次都伴随着隐隐的恐慌。最初的三十来万,看起来不少,但在鹏城,在没有稳定收入的情况下,就像阳光下迅速消融的冰块。
下午两点四十七分。 “叮——” 手机邮箱的专属提示音骤然响起。林晨浑身一僵,几乎是扑过去抓起了手机。 发件人:迅付通人力资源部。 主题:关于您应聘资深后端开发工程师岗位的后续通知。 他的心跳瞬间加速,手指有些发颤地点开邮件。 “尊敬的林晨先生:非常感谢您抽出宝贵时间参加迅付通的面试。我们对您的专业背景和技术经验给予了充分关注。经过综合评估,我们遗憾地通知您,本次招聘岗位已找到更合适的候选人。您的简历已存入我司人才库,未来如有更匹配的机会,我们将优先与您联系。再次感谢您对迅付通的关注与支持,祝您前程似锦”!
短短几行字,林晨反复看了三遍。 每一个字都认识,连在一起却像冰冷的代码,编译不出任何希望。那种熟悉的、钝器击打胸口的感觉又回来了,甚至比第一次收到裁员通知时更憋闷。裁员是时代浪潮下的无奈,而这次,是赤裸裸的否定——“更合适的候选人”。 他盯着“遗憾”两个字,嘴角扯出一个没有温度的弧度。遗憾?你们遗憾什么?浪费我时间准备面试? 手机又震了,这次是来电。屏幕上显示着一个有点眼熟的名字:Kevin(猎头)。 林晨深吸一口气,接通,尽量让声音听起来平稳:“hi,Kevin”。 “林先生,您好您好”! 电话那头传来猎头热情却略显公式化的声音,“迅付通那边……您收到通知了吧”? “刚收到”。林晨的声音冷了下来。 “哎呀,这个确实有点可惜。我跟他们hR也沟通了,您的技术反馈其实挺好的,技术总监那边评价也不低……” 猎头的语气带着惯常的安抚和圆滑。
“那为什么没成”?林晨直接打断他,不想听那些铺垫,“‘更合适的候选人’,具体是哪里更合适”?电话那头沉默了两秒,猎头的声音压低了些,带上了点推心置腹的味道:“林先生,我跟您说实话吧,这话出了我口入了您耳。根本不是什么合适不合适的问题,就是……预算没谈拢”。 “预算?”。林晨眉头紧锁,语气里压着火气:“薪资问题?简直没道理。一面通过后,hR打电话来跟我约二面时间,当时她特意跟我再次确认过期望薪资。我明确报了120万左右,她当时并没有提出异议,才最终敲定的二面行程。”
这才是让他最愤怒的地方。既然在推进二面之前就已经摸了底,如果不接受这个价格,当时就该终止流程。何必还要浪费彼此的时间去进行第二轮深度沟通?让他抱着希望煎熬了一周,最后却用一句轻飘飘的“预算不匹配”把他打发了?
猎头在电话那头叹了口气:“林先生,您消消气。这事儿确实不地道,但在行内也不少见。hR当时的心态多半是赌一把——虽然您超了预算,但先把您推进二面,万一业务负责人(二面官)特别看重您,他们就有底气去跟上面申请特批预算”。
猎头顿了顿,语气变得无奈又现实:“只可惜,现在的环境您也知道。二面聊完,也许对方觉得您能力没问题,但还没‘惊艳’到值得让他们为了您去打破薪酬红线的程度。说白了,在他们眼里,120万的您,性价比输给了另一个要价100万以内的候选人。
“机会总是有的嘛。林先生,您的技术底子确实好,但现在的市场,对纯后端经验丰富的专家,开价确实不如前几年了。尤其是您期望的这个水平,可能更多要看有没有带大型团队、或者有没有特别前沿(比如AI、大数据)的项目经验。我这边还有几个机会,薪资范围可能在40到50万之间,您要不要看看?”。 40到50万。比他现在的心理底线还低20万。比维持现有家庭开支和房贷所需的数字,低得更多。 “不用了,谢谢”。林晨的声音彻底冷了下去,“李经理,以后如果有真正匹配120万及以上级别的机会,再联系我吧。其他的,不必了”。 不等对方回应,他挂断了电话。 房间里安静下来,只有空调微弱的风声。乐乐在客厅看动画片的声音隐约传来,无忧无虑。苏婉在厨房准备晚饭,水流声和切菜的节奏平稳而日常。 这一切平常的温馨,此刻却让林晨感到窒息。他像个即将溺水的人,看着岸上的生活照旧,自己却一点点下沉。 他再次点开那封拒绝邮件,目光落在“前程似锦”四个字上,只觉得无比讽刺。哪里还有前程?
三十五岁,技术栈在市场上开始贬值,薪资期望成了阻碍,家庭负担沉重如山。转型?谈何容易。那几本刚买的python和机器学习书还崭新地躺在抽屉里,像是对他仓促决心的无声嘲笑。 难道真的只能妥协,去接一个年薪四五十万,可能更累、更没成长性的工作,勉强维持生计?然后眼睁睁看着技术迭代,自己慢慢被边缘化? 一种深切的疲惫和迷茫涌上来,几乎要将他淹没。这次面试,他原本是抱了不小希望的。技术对话的顺畅,让他一度以为抓住了救命稻草。现在看来,那不过是海市蜃楼。
希望燃起,再被狠狠掐灭,比一直处于黑暗中更折磨人。 他靠在椅背上,望着天花板。鹏城傍晚的天空,透过阳台能看到一片被高楼切割的灰蓝色。这个他奋斗了十年、安家落户的城市,此刻显得格外冷漠和坚硬。 难道真的没有路走了吗? 就在他心灰意冷,几乎要陷入自我怀疑的泥潭时,手机屏幕又亮了。这次不是邮箱,是微信。 发信人:林浩。 信息内容:“小叔,在吗?你上次说,要是我不想在厂里干了,有啥别的路子可以想想。我这两天琢磨了一下,听说……学厨师怎么样?就是那种正经去培训学校学的。鹏城这边好像也有这种学校?能打听一下不”? 林晨怔住了。 他看着这条来自那个沉默寡言、在流水线上日复一日的侄子的信息,脑海里突然闪过面试时陈锋总监提到“新技术”、“新方向”时的表情,闪过自己购买AI书籍时那份模糊的冲动。 一条路堵死了。 另一条路,似乎还在迷雾中,看不清方向。 而此刻,一条他从未想过的、关于身边人的、非常具体的“路”,却以一种质朴而直接的方式,被提了出来。 他握着手机,良久,没有回复。窗外的天色,渐渐暗了下来。
第18章 儿子的安慰
窗外的鹏城湾华灯初上,游艇码头的灯光在漆黑的海面上拉出长长的金色倒影。
林晨站在客厅的落地窗前,手里攥着手机,屏幕上是侄儿林浩两小时前发来的微信。那孩子想辞掉流水线的工作去学厨师,特意发信息来问他的意见。
这个求助像一颗小石子,在他原本死水一潭的心湖里激起了一圈微弱的涟漪。但他迟迟没有回复。一方面,自己正泥菩萨过江,哪有资格给人指点迷津?另一方面,浩子这突如其来的念头,究竟是深思熟虑,还是一时冲动?
林晨叹了口气,把手机扔在沙发上。比起给侄儿建议,他更不知道该怎么面对明天。存款数字、房贷账单、下一场不知在哪里的面试……这些念头像潮水一样,在迅付通拒绝邮件带来的愤怒退潮后,重新冰冷地漫上来,淹没他的呼吸。
“爸爸。” 一个软糯的声音从身后传来。
林晨转过身,看到儿子乐乐抱着他的小恐龙玩偶,光着脚丫站在客厅地毯上,正仰着小脸看他。孩子才五岁,那双眼睛却清澈得能映出大人竭力隐藏的情绪。 “怎么了乐乐?妈妈呢”?林晨努力让声音听起来正常些。 “妈妈在书房批改作业”。
乐乐走过来,很自然地拉住林晨的裤腿,“爸爸,你刚才站在那里,背影看起来……嗯……不开心”。 林晨心里一紧。连孩子都看出来了。他蹲下身,摸了摸乐乐柔软的头发:“没有不开心,爸爸就是在想点事情”。 “是想工作的事情吗”?乐乐问得很直接,“妈妈昨天悄悄跟我说,爸爸在找新的工作,很辛苦”。 林晨喉头有些发堵,不知道该说什么。成年人的困境,他无法也不愿向一个五岁的孩子解释。房贷、年龄歧视、技术淘汰、那该死的120万预期……这些词离乐乐的世界太远了。
“有一点辛苦”。他最终选择了一个温和的说法,“但爸爸会找到的”。 乐乐点点头,忽然松开他的裤腿,转身啪嗒啪嗒跑向自己的小房间。林晨有些茫然地站起身,不知道儿子要做什么。很快,乐乐又跑了回来,手里紧紧攥着什么东西。 他跑到林晨面前,郑重其事地伸出小手。掌心里,是一张折叠得整整齐齐的百元钞票,还有几枚一元硬币。 “爸爸,给你”。
乐乐的声音很认真,带着孩子特有的那种“我在做一件大事”的庄重感。 林晨愣住了:“这……这是你的压岁钱”? “嗯”!乐乐用力点头,“这是外婆过年给我的,我一直放在小企鹅存钱罐里。爸爸你拿去用,不要担心”。
那一瞬间,林晨感觉像有什么东西狠狠撞在了胸口。很轻,却又很重。他看着儿子那双干净得不含一丝杂质的眼睛,看着那张被孩子体温捂得有些发皱的百元钞票,鼻腔猛地涌上一股强烈的酸意。 一百块。对现在的他来说,连房贷的零头都不够。但对乐乐来说,这可能是他全部“财产”中最大的一笔,是他珍藏了很久的“宝贝”。
“爸爸不能要你的钱”。林晨的声音有些沙哑,他试图把乐乐的手推回去,“这是乐乐的钱,自己留着买玩具,买好吃的”。“我不要”!乐乐固执地把手又伸过来,小脸绷得紧紧的,“玩具可以以后买。妈妈说了,家里现在要省着点花。爸爸没工作,要花钱。我的钱给你,家里就多一百块了”。
孩子的逻辑简单直接,却像一把最钝的刀,缓慢而坚定地割开了林晨成年人世界里那层由焦虑和自尊构筑的硬壳。他忽然想起,最近苏婉确实在有意无意地减少非必要开支,以前每周一次的周末家庭外出就餐取消了,乐乐念叨了好几次的儿童乐园卡也没续费。他以为孩子不懂,其实孩子什么都感觉到了。 “爸爸……”林晨张了张嘴,却发现嗓子眼被什么东西堵得严严实实。他深吸一口气,想平复情绪,但眼眶已经不受控制地发热。
乐乐似乎有点着急,往前凑了凑,踮起脚,用空着的那只小手笨拙地拍了拍林晨的胳膊,像个小大人一样安慰道:“爸爸不哭。没事的。我们老师说了,遇到困难不要怕,要勇敢。爸爸最勇敢了”。勇敢? 林晨想起自己这几个月来的状态:愤怒、抱怨、怀疑、深夜失眠刷招聘网站时的恐慌、看到银行卡余额时的心跳加速……这些情绪里,唯独没有“勇敢”。
他只是一个被突如其来的风暴打懵了的中年人,在拼命抓住每一根可能救命、却又不断断裂的稻草。 而眼前这个身高只到他大腿的小人儿,却用他最珍贵的“宝藏”,告诉他“不要怕”。 那根一直绷紧的、名为“坚强”的弦,在这一刻,终于发出了不堪重负的颤音,然后悄然断裂。 林晨猛地伸出手,一把将乐乐紧紧搂进怀里。他把脸埋在儿子带着淡淡奶香味的柔软头发里,双臂用力,像是要抓住生命中最后一点实实在在的温暖。 “爸爸”?乐乐被他抱得有点紧,小声唤了一句,但很乖地没有挣扎,反而也用小手回抱住林晨的脖子,轻轻拍着他的背。 林晨咬紧了牙关,下颌的线条绷得死紧。他不能哭,至少不能在儿子面前掉眼泪。那太丢人了,也太沉重了。他是父亲,应该是孩子的山,是孩子的天,怎么能让这座山先崩塌?
可泪水这东西,有时候不是意志能控制的。它滚烫地积聚在眼眶里,灼烧着眼睑。他只能更用力地闭上眼睛,把怀里这小小软软的身体抱得更紧一些,仿佛这是唯一能堵住情绪决堤的沙袋。 一百块钱。一个孩子的全部心意。 这比他面试时谈崩的任何数字,都比那些hR口中冠冕堂皇的拒绝理由,都比银行卡上不断减少的余额,都更有力量。
不知过了多久,林晨终于勉强压下了那股汹涌的泪意。他松开手臂,但依然把乐乐圈在怀里,低头看着儿子清澈的眼睛。 “乐乐”,他的声音沙哑得厉害,“爸爸谢谢你。这钱……爸爸先帮你保管,好不好?等爸爸找到工作,加倍还给你,让你买一个大大的、你一直想要的工程车套装”。 乐乐眼睛亮了一下,但随即又摇摇头:“不用还。给爸爸的”。他想了想,又补充道,“不过……工程车套装,可以有”。
这孩子,实在得让人心头发软。林晨终于忍不住,很轻很轻地笑了一下,虽然嘴角的弧度还有些僵硬。他接过那张百元钞票和几枚硬币,郑重地放进自己衬衫胸前的口袋里,拍了拍:“好,爸爸收下了。这是乐乐给爸爸的‘加油费’。爸爸一定加油”。 “嗯!加油”!乐乐用力挥了挥小拳头,脸上绽开毫无阴霾的笑容。
这时,书房的门开了,苏婉走了出来。她看到客厅里父子俩抱在一起的场景,脚步顿了一下,目光落在林晨明显泛红的眼角和极力掩饰的表情上,又看了看乐乐,似乎明白了什么。她没有多问,只是走过来,温柔地揉了揉乐乐的脑袋:“乐乐真乖。快去洗手,准备吃饭了”。 “好”!乐乐欢快地跑向了洗手间。
苏婉走到林晨身边,轻轻握了握他的手,指尖温暖而坚定。什么也没说,却又像什么都说了。
夜深了,乐乐已经熟睡。林晨坐在书房里,电脑屏幕的光映着他平静了许多的脸。那张百元钞票被他用磁铁贴在显示器边框上,一抬头就能看见。 他点开了浏览器,在搜索框里,第一次郑重地、不带犹豫地敲下了几个字: “AI学习路径 35岁转行”。 窗外,鹏城湾的夜色依旧深沉,但远方的海平面上,似乎已经透出了一丝极淡的、属于黎明的灰白。
第19章 同学的炫耀
手机在掌心震动,不是来电,是微信消息的连续提示。
林晨刚从书房走出来,准备去厨房倒杯水。
下午的阳光透过客厅窗帘的缝隙,在地板上切出一块刺眼的光斑。
他失业后,这种工作时间的手机震动,总让他心里条件反射般一紧——会不会是哪个hR的回复?
解锁屏幕,消息来自那个沉寂已久的大学班级群,群名还保留着毕业时的中二气息:“计科三班,永不解散”。
红色未读数字已经跳到了“99+”。 林晨皱了皱眉。这个群平时除了偶尔有人发拼多多砍价链接,或者逢年过节复制粘贴些祝福段子,基本处于静默状态。今天这么热闹? 他点进去,手指往上滑动。 最先映入眼帘的,是一张精心设计的海报图片。深蓝色背景,烫金的艺术字:“喜报”。下面是稍小的文字:“热烈祝贺我班赵峰同学,晋升为天穹科技(t厂)云服务事业部研发总监”! 海报底部还有一行小字:“年薪突破百万,迈向人生新巅峰”!
林晨的手指顿住了。 紧接着,是潮水般涌来的祝贺。 “卧槽!峰哥牛逼!(破音)”。 “恭喜赵总!以后带带老同学啊”! “百万年薪!真正的成功人士”! “@赵峰 赵总监,苟富贵勿相忘”! “咱们班第一个百万年薪大佬诞生了!必须发红包庆祝”! “赵总,t厂还招人不?求内推”! “@赵峰 什么时候回鹏城?必须组局,你请客”! “膜拜大佬!沾沾喜气”! 表情包刷了屏,各种恭喜发财、膜拜大佬、羡慕眼红的动图,夹杂着真心或客套的祝福文字。群里的气氛被彻底点燃,仿佛一场迟来的线上庆典。
林晨默默地看着。赵峰,他记得。同班同学,但不是同一个宿舍,关系不算近。印象里是个挺活跃的人,学生会干过,毕业时好像进了家还不错的公司,后来听说跳槽去了大厂。再后来,就没什么交集了。朋友圈偶尔会晒些加班深夜的办公楼、团队聚餐,或者一些行业会议的侧拍。 他往上翻了翻,找到了赵峰本人发的话,就在海报之后: “谢谢各位老同学!侥幸,侥幸而已。都是公司平台好,团队给力。感谢大家祝福,红包来了”!后面跟着一个拼手气红包。 红包已经被抢光了。
林晨看到有人晒出抢到的金额,“手气最佳”抢了二十多块,下面又是一片“谢谢老板”。 赵峰又发了一条:“最近确实比较忙,新岗位压力大。等忙过这阵子,回鹏城一定组局,我请客,大家好好聚聚”! “赵总威武”! “期待大佬饭局”! “鹏城见”! 群里还在热闹着,话题已经从恭喜赵峰,蔓延到讨论各家大厂的薪资待遇、哪个部门有前途、最近的行业动态。
有人提到AI浪潮,说现在搞算法、搞大模型的才是真香,年薪起步就高。 “传统开发确实有点落伍了,得赶紧转型”。 “是啊,我去年就开始自学python和机器学习了,再不学真要被淘汰了”。 “赵总,你们t厂AI部门是不是更猛”? 赵峰回复了一个“微笑”表情,说:“确实,AI是公司战略重点,投入非常大。有兴趣的同学可以多关注”。
林晨退出了群聊界面,返回到微信主页面。手指无意识地滑动着寥寥无几的最近对话。置顶的是家庭群,苏婉,乐乐幼儿园老师……往下是几个猎头,最近一次对话停留在几天前,对方礼貌地告知“岗位已有更合适人选”。再往下,是张伟,上次聊完后也没了新消息。
窗外的光斑移动了一些,落在沙发边缘。房间里很安静,只有空调低沉的运转声。苏婉带着乐乐到外面去玩了。整个家,此刻仿佛只剩下他一个人,和手机屏幕里那个喧嚣沸腾、与他无关的虚拟世界。 一种熟悉的、冰冷的重量,慢慢压上胸口。 百万年薪。 t厂总监。 同学聚会,做东请客。 这些词汇像一根根细小的针,并不剧烈,但持续地、绵密地刺着他。不是嫉妒,至少不全是。更多的是一种巨大的落差感,和随之而来的自我怀疑。
他和赵峰,同年毕业,同一个专业,曾经站在差不多的起跑线上。十几年过去了,对方攀上了职业高峰,年薪百万,成为同学眼中的“成功典范”,在群里享受着众星捧月。而自己呢?三十五岁,失业在家,每天投着简历,算计着还能支撑几个月的房贷,为了一份年薪五六十万出头的工作,在面试里被比自己年轻的人反复掂量。 哪里出了问题? 是当初选错了行业?是没敢频繁跳槽?是不够努力?还是运气太差?
他想起自己过去十年,在那家跨境电商公司,也算兢兢业业。加班不少,项目也完成了很多,从普通程序员做到小组长。他以为沿着这条路走下去,虽然发不了大财,但安稳养家、供完房贷总没问题。可时代掀起的浪,说打翻你就打翻你,连个像样的理由都懒得给。 群里又有人@了赵峰,问总监级别的面试经验。
赵峰侃侃而谈,提到“战略视野”、“团队管理”、“业务驱动技术”…… 林晨看着这些词,感觉有些陌生,又有些刺眼。他擅长的是解决具体的技术问题,是写代码,是保证系统稳定运行。那些“视野”和“驱动”,离他每天面对的数据库和接口文档,似乎很远。
也许,真的是自己落伍了?不仅仅是在技术栈上,更是在整个职业思维和发展路径上? 他关掉了微信,把手机屏幕朝下扣在茶几上。仿佛这样就能隔绝掉那些声音,那些对比,那些无形的压力。 但寂静并没有带来安宁。房贷的提醒日历、这个月的水电燃气账单、乐乐下个季度的兴趣班费用、家庭日常开销的粗略估算……这些数字,比群里的任何一句恭维或讨论,都更具体、更沉重地压在他的脑海里。
他走到窗边,推开了一些窗缝。下午燥热的空气涌进来,带着楼下绿化带修剪后的草腥味。
远处,鹏城科技园的那些玻璃幕墙大楼,在阳光下反射着耀眼而冷漠的光。那些大楼里,有多少个“赵峰”正在开会、决策、带领团队?又有多少个像他一样,或者即将像他一样的人,正在为一份工作焦虑不安?
同学的成功,像一面突然举到他面前的镜子,清晰地照出了他此刻的狼狈和窘迫。那不是恶意,甚至带着些许正当的分享喜悦,却比任何直接的嘲笑更让他感到无力。
他曾经以为,中年危机是个模糊的概念,至少离自己还有段距离。如今才发现,它来得如此具体——具体到一份失去的工作,具体到每月固定的还款数字,具体到同学群里一张喜庆的海报。
阳光有些刺眼,他拉上了窗帘。房间重新陷入半明半暗。 茶几上的手机,屏幕又微弱地亮了一下,大概是群里又有了新消息。林晨没有去看。 他坐回沙发,目光落在书房门口。
昨晚,他就是在那里,在儿子纯真的安慰后,下定决心要寻找新的出路。仅仅过了一天,那股刚刚燃起的微弱决心,就被现实这盆冰水,浇得火光飘摇,只剩一缕呛人的青烟。 转型?学习AI? 谈何容易。自己这个年纪,这个状态,真的还能爬上去吗?追得上那些早已起步、甚至已经站在浪尖上的人吗? 深深的疲惫,不仅是身体上的,更是从心底弥漫上来的无力感,将他包裹。
他靠在沙发上,闭上眼睛。黑暗中,那些祝贺的词句、金色的“百万年薪”、还有赵峰那句“侥幸而已”,依然在脑海里盘旋不去。 不知过了多久,门口传来钥匙转动的声音。是苏婉和乐乐回来了。 林晨迅速坐直身体,抹了一把脸,试图让表情显得正常一些。 “爸爸”!乐乐欢快的声音响起,扑了过来。 林晨抱住儿子,闻着他身上熟悉的儿童沐浴露味道。孩子的世界简单而直接,没有年薪百万,没有总监职位,只有眼前的爸爸和妈妈。
“今天玩的开心吗”?他听到自己的声音,尽量保持着平稳。 “开心!我坐了碰碰车,可好玩了”! “真棒”。 苏婉放下包,看了林晨一眼,敏锐地察觉到他情绪有些低沉,但没立刻追问,只是温和地说:“晚上想吃什么?我去做”。 “随便,都行”。林晨说。 他抱起乐乐,走向书房,美其名曰“陪”儿子的玩。实际上,他只是想暂时躲进一个只有父子俩的小空间。 书房里,电脑屏幕是暗的。但屏幕边框上,用一小块透明胶带贴着的,那张皱巴巴的百元钞票,在窗外透进的微光下,依然能看到一点红色。 乐乐指着它:“爸爸,我的钱还贴着呢”! “嗯,贴着呢”。林晨看着那张钞票,心里那冰冷沉重的块垒,似乎被这抹小小的红色,撬开了一丝极其细微的缝隙。 缝隙里,透不进多少光,但至少,不是全然的黑暗。
第20章 降低期望
清晨六点半,生物钟准时把林晨拽出浅眠。
他睁眼盯着天花板,没有立即起身。窗外天色灰蒙蒙的,鹏城雨季特有的黏稠空气从窗缝渗进来。房贷提醒短信昨晚准时抵达——本月应还12,456.73元,当前账户余额……他不想去算。 三十来万存款听起来不少,但在鹏城,在没有收入的情况下,它就像烈日下的冰块,每一秒都在消融。月供一万二,儿子幼儿园学费三千五,物业水电一千,一家三口最基本的生活开销四千——不算任何意外,不算人情往来,不算换季添衣,每个月两万出头像条基准线,横在那里。
林晨坐起身,摸过床头的手机。屏幕亮起,班级群的聊天记录还停留在昨晚赵峰那条“谢谢兄弟们”的回复上,后面跟着一串点赞和恭喜的表情包。他面无表情地划掉通知。
厨房里传来轻微的响动,苏婉已经起来准备早餐了。林晨听着那熟悉的、尽量放轻的动静,胸口堵得慌。她越是这样体贴,他越是难受。
洗漱时,他看着镜子里那张脸。三十五岁,眼角纹路清晰了些,头发倒还浓密,只是鬓角有几根白得刺眼。这张脸在过去十年里,被定义为“资深后端工程师”、“项目骨干”,现在呢?“失业求职者”?“中年危机男”? “不能这样下去了。”
林晨对着镜子里的自己低声说。
坐到电脑前,打开招聘网站。收藏夹里躺着十几家公司的岗位,都是规模尚可、薪资范围在30-40K的。他一个个点开,又一个个关掉。过去两周的反馈已经说明问题:要么已读不回,要么面试后没下文,要么在薪资环节卡住。
市场在用最直接的方式告诉他:你之前的定价,市场不认。 鼠标悬在“期望薪资”那一栏。 他原本填的是:35-40K。 这个数字是基于他上一份工作的薪资(35K),加上十年经验理应获得的涨幅,再考虑到鹏城的生活成本和房贷压力,反复计算后得出的“底线”。低于这个数,覆盖不了家庭开支,存款消耗速度会让他夜不能寐。 可现实是,这条“底线”似乎成了天花板,还是够不着的那种。 林晨的手指在键盘上停顿了很久。最终,他删掉了“35-40K”,重新输入:“30-35K”。 按下回车的瞬间,像有什么东西从身体里被抽走了一部分。不是疼痛,是一种空洞的坠落感。十年积累的经验、那些熬过的夜、解决过的生产事故、带过的团队、获得的“优秀员工”奖状……在这个简单的数字修改面前,似乎被某种无形的标尺重新度量,然后贬值了。
他开始重新筛选岗位。不再只看那些知名互联网公司或规模五百人以上的企业。他把筛选条件放宽:一百人以上、有融资记录、技术岗位需求明确的初创公司或中小型科技企业。地点也不再局限于南山、福田,宝安、龙华甚至龙岗的岗位也纳入视野。 一份份Jd看过去。有些公司的产品描述透着股不靠谱的气息;有些技术栈要求还停留在五年前;有些办公地点在偏远的工业园,通勤单程就要一个半小时。他一边看,一边在心里默默评估,同时另一个声音在微弱地反驳:先活下去,别挑。
上午十点,他投出了第一批修改期望薪资后的简历,一共八家。都是规模在一百到三百人之间的公司,岗位是高级后端或技术负责人,薪资范围在招聘信息上写着30-35K。 投完简历,那种空洞感并没有消失,反而混合进一种自嘲。他想起刚毕业那会儿,在鹏城找到第一份工作,月薪六千,兴奋得请全宿舍吃饭。那时候觉得未来一片光明,工资会一直涨,职位会一直升。现在呢?奋斗十年,在三十五岁这年,主动把薪资期望调低,去争取一份可能还不如鼎盛时期收入的工作。
为了转移注意力,他点开了python学习视频。讲师正在讲Numpy数组的广播机制。屏幕上的代码一行行滚动,林晨强迫自己集中精神。学这个有用吗?不知道。但现在他能抓住的、能让自己感觉还在前进的,似乎就只有这个了。 中午苏婉回来做饭,简单炒了两个菜。吃饭时,她看了看林晨的脸色,轻声问:“今天有面试吗”? “投了几份新的”。林晨扒着饭,没抬头,“调整了下期望薪资”。 苏婉夹菜的手顿了顿,随即如常地给他碗里添了些青菜:“嗯,先找到工作再说。别给自己太大压力”。 她没问调低了多少。这种体贴让林晨更觉酸楚。他宁愿她问,甚至埋怨几句,那样他或许还能辩解或发泄。可她只是安静地接纳,这沉默比任何话语都沉重。
下午,居然有一家小公司回复了。hR直接在招聘软件上发消息:“林先生您好,看到您的简历,和我们招聘的技术经理岗位比较匹配。方便简单沟通一下吗”? 公司名叫“智行科技”,做车载智能硬件的,规模一百五十人左右,在宝安固戍。林晨查了下,有A轮融资,产品似乎还在打磨期。 他回了消息。简单的线上沟通,hR问了些基本情况,然后说:“您的期望薪资30-35K,在我们预算范围内。您对我们公司有了解吗?目前我们在开发新一代车载智能中控系统,后端压力比较大,希望找一位有经验的负责人来搭建和带团队”。
林晨简单介绍了自己的经验,对方似乎挺满意,约了明天下午去公司现场面试。 结束沟通后,林晨对着电脑发了一会儿呆。有面试机会,本该高兴。可“预算范围内”这几个字,像根细刺。他的价值,现在只是“在预算范围内”而已。
他点开“智行科技”的官网。产品介绍页面做得光鲜,但细看功能描述,有些地方逻辑经不起推敲。团队介绍里,创始人背景是传统汽车电子出身,cto是硬件工程师转的软件管理。技术博客栏目,最新更新是半年前。 一家典型的、在摸索中前行的硬件转型互联网的小公司。可能加班严重,可能管理混乱,可能产品方向还会摇摆。
但,它给了面试机会。 林晨苦笑一下。什么时候起,自己的评判标准从“这个公司/岗位是否有发展前景、技术是否前沿”,变成了“它是否愿意给我面试机会”? 傍晚,他去兴趣班接乐乐,乐乐看到他,眼睛一亮,张开手臂跑过来:“爸爸”! 抱住儿子温热的小身体,林晨深吸一口气。孩子身上有阳光和汗味的混合气息,真实而鲜活。 “爸爸,今天兴趣班老师让我们画‘我的爸爸’”。乐乐从书包里掏出一张画纸,献宝似的展开。 画纸上,一个蓝色的小人(代表爸爸)坐在一个方框(大概是电脑)前,头顶上画了几道波浪线。乐乐指着波浪线:“这是爸爸在想问题!爸爸最厉害了,什么问题都能想出来”! 林晨看着那稚嫩的笔触和充满崇拜的解释,喉咙发紧。他摸摸儿子的头:“画得真好”。回家的地铁上,乐乐靠着他睡着了。林晨搂着儿子,车厢摇晃,窗外是飞速倒退的城市夜景。高楼灯火璀璨,每一扇亮着的窗户背后,可能都有一个正在加班、或者正在焦虑求职的人。
他突然想起张伟上次吃饭时说的话:“现在这行情,能先上岸再说。蹲久了,心态会坏,技能也会锈”。 也许张伟是对的。所谓的“薪资底线”,所谓的“十年经验应有的价位”,在生存面前,是不是一种矫情?如果连续半年找不到工作,存款消耗殆尽,到时候别说35K,25K的工作恐怕都得抢。
晚上,把乐乐哄睡后,林晨回到电脑前。他又修改了几份简历的期望薪资,统一调成25-30K。然后,他扩大了投递范围,一些以前根本不会考虑的、五十人以下的微型创业公司,只要岗位相关,他也投了。 鼠标点击“投递”的声音,在寂静的夜里格外清晰。
每点击一次,就像在心里某个地方盖下一个“妥协”的印章。 投完最后一份,他靠在椅背上,长长吐出一口气。电脑屏幕的光映着他的脸,明明灭灭。 他打开一个空白文档,敲下一行字:“活下去,才有机会翻盘”。 像是在说服自己。
文档下面,他列出了几个要点:
1. 接受25-30K的岗位,先解决现金流。
2. 入职后,继续高强度学习AI/量化投资,这是真正的出路。
3. 节省一切非必要开支,延长存款支撑时间。
4. 保持心态,不比较,不内耗。
写完,他看着这几行字。理性上,他知道这是当前最务实的选择。但情感上,那种挥之不去的屈辱感和失落感,像潮水一样漫上来。
三十五岁,十年经验,最后要向现实低头,降低期望,去争取一份可能并不理想的工作。 这就是成年人的世界吗?没有那么多逆袭和奇迹,更多的是权衡、妥协、在有限的选择里挑一个不那么坏的。
手机震动了一下。是张伟发来的消息:“哥们儿,最近怎么样?有个做量化的小团队在招人,不过薪资可能达不到你之前说的数,有兴趣聊聊吗”? 林晨看着消息,又看了看自己刚写下的“活下去,才有机会翻盘”。
他回复:“薪资范围大概多少?什么方向”? 手指按下发送时,他清晰地感觉到,那道自己曾经坚守的、关于价值和价格的防线,正在彻底瓦解。 而新的路,或许就从这瓦解的裂缝中,才能慢慢生长出来。
第21章 外包公司面试
周一上午十点,林晨站在南山科技园南区一栋略显陈旧的写字楼前。
他抬头看了看楼体上“创新大厦”四个褪了色的金字,又低头核对手机上的面试通知短信:“智行科技(外包服务部),地址:创新大厦b座12楼1208室,请于今日上午10:30准时参加面试”。不是“智行科技”吗?短信里怎么多了个“外包服务部”的括号?
林晨心里咯噔一下。 上周五他投简历时,这家公司在招聘网站上挂的职位是“高级Java开发工程师”,公司介绍写的是“专注于企业级软件解决方案的创新型科技公司”,规模50-100人,看起来还算正规。薪资范围标的是20-30K,正好在他调整后的期望区间内。 但“外包服务部”这几个字,像根细刺扎进了他的预期里。
电梯停在12楼。门一开,一股混杂着快餐盒饭、二手烟和廉价空气清新剂的气味扑面而来。走廊狭窄,两侧墙壁上贴着各种公司的名牌,密密麻麻像蜂巢。
林晨找到1208室,门口挂着一块亚克力牌子,白底蓝字:“智行科技有限公司(外包事业部)”。
他推开门。 眼前的景象让他脚步顿了顿。 大约一百来平的开间,被灰蓝色的隔断板分割成几十个格子间。每个格子不过一米见方,桌上堆着显示器、键盘和杂乱的文档。过道狭窄得只容一人通过。天花板上裸露的日光灯管发出嗡嗡的电流声,光线惨白。空气中飘着咖啡、汗味和长时间不通风的闷浊气息。
前台是个年轻女孩,正低头刷着手机。见林晨进来,头也不抬地问:“面试的”? “对,约了10点半,林晨”。 “填表”。女孩从抽屉里抽出一张A4纸表格和一支笔,指了指旁边一张塑料凳,“填完给我”。 表格是复印的,字迹有些模糊。
除了常规的个人信息、工作经历,还有几栏格外显眼:“是否接受长期出差(6个月以上)”?“是否接受常驻客户现场办公”?“是否接受7x24小时响应支持”?“期望薪资(税前)”。 林晨握着笔,指尖有些发凉。 他找了个靠墙的角落坐下,开始填写。
工作经历那一栏,他写下了那家工作了十年的跨境电商公司,以及那些他曾经引以为傲的项目。写到期望薪资时,他犹豫了几秒,最终写下了“25K”。 填完表交给前台。女孩扫了一眼,拿起内线电话:“王姐,面试的来了”。
五分钟后,一个穿着黑色西装套裙、约莫四十岁左右的女人从里间走出来。她妆容精致,但眼角有藏不住的疲惫纹路。她打量了林晨一眼,公式化地微笑:“林先生是吧?这边请”。 她把林晨带到一个用玻璃隔出来的小会议室。会议室里只有一张小圆桌和两把椅子,墙上挂着一幅廉价的风景画。女人坐下,从文件夹里抽出林晨刚填的表格和一份打印的简历。 “我是人事部的王经理”。她开门见山,“林先生的情况我们初步看了,十年开发经验,技术栈匹配。今天主要是沟通一下岗位的具体要求和您的意向”。 林晨点点头,保持礼貌的微笑。 “我们这个岗位,其实是派驻到客户现场工作的”。王经理语速很快,“客户是鹏城一家大型国企,做金融系统的。项目周期预计两年,需要长期驻场。工作地点在福田,离这里有点距离,公司会提供交通补贴”。 林晨心里一沉:“驻场的意思是……” ,“就是日常在客户那边办公,和客户的团队一起”。
王经理解释,“客户那边有独立的办公区,环境比我们这边好。我们这边主要是行政和人事部门,技术人员大部分都在客户现场”。 “那……管理关系呢”? “劳动关系在我们公司,但日常工作安排、任务分配由客户方的项目经理负责”。王经理顿了顿,“当然,我们这边也会有项目经理定期跟进。说白了,你就是我们派到客户那里的技术资源”。
外包。而且是人力外包。 林晨之前不是没接触过外包。在原公司时,项目紧张时也会采购一些外包人力,那些外包同事坐在公司角落的临时工位上,工牌颜色都不一样,开会时很少发言,项目结束就撤场。
他从未想过,有一天自己会成为那个“临时工牌”的人。 “薪资方面呢”?林晨问。 “根据你的经验和后续面试情况,我们可以最高给到22K”。王经理说,“税前。五险一金按鹏城最低基数缴纳。有项目奖金,但要看客户那边的验收评价和项目进度。交通补贴每月800,餐补每天30,实报实销”。 22K。比他自己填的期望还低了3K。 林晨喉咙有些发干:“这个薪资……比我之前的低了不少”。
“林先生,市场情况你也知道”。王经理语气平静,带着一种见怪不怪的淡漠,“35岁以上的开发,如果不是管理岗或者特别稀缺的技术方向,选择面确实会窄一些。我们这个岗位稳定,客户是国企,项目周期长,做满两年续签的可能性很大。而且”,她往前倾了倾身,“你填表时写了接受出差和驻场,这是这个岗位的基本要求。如果不接受,我们可能没法推进”。
表格上那几行字,此刻像绳索一样套了上来。 林晨想起早上出门前,苏婉默默给他烫好衬衫的样子;想起乐乐仰着小脸说“爸爸加油”;想起银行卡里每个月准时划走的1.2万房贷;想起存款数字在缓慢却坚定地下降。 他沉默了几秒。 “我接受”。声音比自己想象的平静。 王经理脸上露出更明显的笑容:“那就好。接下来我们会安排技术面试,时间大概在下周。技术面试通过后,还有客户那边的项目经理面试,那个就是走个过场。如果都通过,最快下个月初可以入职”。
她又简单问了几个问题,比如最快到岗时间、离职原因,林晨机械地回答着。整个过程不到二十分钟。
“那今天就先到这里”。王经理站起身,伸出手,“有消息我们会电话通知。谢谢林先生的时间”。
林晨握了握那只干燥微凉的手,走出小会议室。 穿过那片密密麻麻的隔断工位时,他瞥见几个格子间里的身影。一个年轻男孩正对着屏幕皱眉调试代码,手边放着吃了一半的包子;另一个中年男人戴着耳机,手指在键盘上飞快敲打,侧脸上写满了疲惫。空气里弥漫着一种被压缩的、紧绷的沉默。
走出创新大厦,上午的阳光有些刺眼。
林晨站在路边,深深吸了一口气,却吸进了汽车尾气的味道。他掏出手机,打开招聘App,找到“智行科技”的职位页面,仔细看了一遍公司介绍。那些“创新”“解决方案”“技术驱动”的词汇,此刻显得格外讽刺。
他关掉App,点开和张伟的微信聊天窗口。最后一条消息还是上周五张伟发的:“哥们儿,最近怎么样?有个做量化的小团队在招人,不过薪资可能达不到你之前说的数,有兴趣聊聊吗”? 当时他正忙着投简历,只回了个“好的,谢谢伟哥”,没细问。 现在,他看着那条消息,手指在屏幕上悬停了很久。 然后,他点开自己的笔记应用,翻到那个命名为“转型计划”的文档。
文档里第二条写着:“学习AI/量化投资,这是真正的出路”。 下面还是一片空白。 他抬头,看到马路对面一家连锁咖啡店的招牌。玻璃窗上贴着一张海报,上面写着:“AI时代,你准备好了吗?——python/机器学习实战培训班,火热报名中”。 海报设计得粗糙,但那几个字像针一样扎进他的眼睛。
手机震动了一下,是一条新的短信。 “【猎聘网】林晨先生,您投递的‘中级Java开发工程师’职位已被‘迅捷网络科技’查看,请保持电话畅通”。又是一家没听说过的公司。 林晨把手机塞回口袋,朝地铁站走去。脚步有些沉,但方向明确。 他得先回家。下午还有时间,可以查查那个量化团队到底什么情况,也可以看看python的教程到底该从哪里开始。 妥协是为了活下去。但活下去,不是为了永远妥协。 这个道理,他十年前刚来鹏城时就懂。只是今天,在那间弥漫着快餐味道的隔断办公室里,这个道理被现实重新打磨了一遍,带着更锋利的棱角。
第22章 技术面:项目经理
公交在深南大道上疾驰,窗外林立的写字楼与霓虹广告牌连成一道流光,在林晨眼底飞速掠过。他无心风景,脑海中正紧锣密鼓地推演着每一个可能出现的技术盲点。
智行科技那边,hR王经理昨天下午发来邮件,通知他今天下午两点进行技术面试,由项目组的技术负责人把关。 “好歹是技术面,不是跟hR扯皮薪资福利了”。
林晨心里稍微踏实了点。他昨晚把Java并发、Spring cloud微服务、数据库优化这些老本行又过了一遍,还特意看了看现在流行的容器化部署和devops流程。虽然薪资低、要外派,但若能先有个落脚点,缓解每月的房贷压力,也并非不能接受。
生存是第一要务,这是上次面试后他给自己定下的现实准则。 科技园北区的一栋略显陈旧的写字楼里,林晨找到了智行科技的办公室。他被领进了一间小会议室。会议室玻璃墙上贴着几张敏捷开发流程的示意图,白板上还残留着一些技术架构草图。
两点整,门被推开。进来的是一个看起来顶多二十七八岁的年轻人,穿着印有某开源项目logo的黑色t恤,头发有些蓬乱,手里拿着电脑,另一个手端着个印有“hello world”的马克杯。
他扫了林晨一眼,目光在林晨脸上停留了半秒——那是一种快速评估的眼神,带着点审视,也带着点……不以为然? “林晨是吧?我是这个项目的技术负责人,姓赵”。
年轻人把杯子往桌上一放,没握手,直接在对面的椅子上坐下,打开了笔记本电脑。 “赵经理,您好”。林晨点头致意,心里咯噔一下。负责人?看起来比自己小了至少七八岁。他迅速调整心态,提醒自己:技术圈不看年龄,看能力。
“你的简历我看了,十年经验,主要做电商后端”。赵经理语速很快,没什么寒暄,“我们这边接的是个金融科技类的项目,给一家私募做内部交易系统和风控平台,技术栈要求比较高,也比较新。你先说说,你对微服务架构下,保证数据最终一致性的方案有哪些理解?不用背概念,说实际你用过的或者你认为最优的方案”。
问题很直接,甚至有点突击的味道。林晨沉住气,从分布式事务的常见模式(2pc、tcc、Saga)开始讲起,结合自己以前做跨境支付清结算时遇到的坑,分析了各种方案的优缺点和适用场景,最后提到现在很多场景会采用“事件驱动+补偿”的思路,并简要说了说消息队列和本地事务表的配合。 赵经理听着,手指在桌面上无意识地敲着,偶尔在电脑上记录几笔。等林晨说完,他抬起头:“概念算是清楚。不过你提到的tcc模式,在实际高并发场景下,预留资源(try阶段)长时间不确认或取消,对资源池的压力很大,你怎么优化?有具体数据支撑吗”?
这个问题更深入了。林晨凭借记忆,说了几种常见的优化策略,比如设置超时时间、异步释放资源、资源池动态调整等,但也坦诚在实际项目中,他们当时并发量没达到需要极端优化的程度,更多是靠业务拆分和柔性事务规避了深层问题。
赵经理“嗯”了一声,听不出是满意还是不满意,接着问:“项目如果用K8s部署,服务网格(比如Istio)在生产环境灰度发布和故障注入方面,你有没有实操经验?我们客户对系统稳定性要求极高,上线流程必须可控”。 林晨心里一沉。容器化他了解,但服务网格、Istio……这属于更前沿的运维/基础设施领域,他以前在电商公司,虽然有云原生转型的苗头,但实际生产环境并未大规模应用这套东西。他如实回答:“有了解过概念和基本架构,但生产环境深度实操经验确实没有。我们之前的灰度主要是通过网关权重和注册中心元数据来实现的”。
“哦”。赵经理这一声拖得有点长,他端起杯子喝了口水,“那再说说高并发场景下,如何设计一个保证绝对不超卖的库存服务?注意,是‘绝对’,不是最终一致。金融场景里,差一点可能就是重大事故”。 这个问题考验的是对并发控制和系统设计的深度理解。林晨思索片刻,从数据库行级锁、乐观悲观锁的局限说起,延伸到分布式锁(Redis、ZooKeeper)的引入,再到如何通过“预扣库存+异步同步”以及“队列串行化”等组合方案来逼近“绝对”安全,同时也指出完全意义上的“绝对”在分布式系统里成本极高,需要结合业务容忍度做权衡。
他自认为回答得还算全面,既有理论也有实践思考。但赵经理听完,眉头却微微皱了起来。 “思路还是……偏传统”。
赵经理放下杯子,身体向后靠了靠,“你提到的很多方案,本质上都是加锁或者变相加锁,在超高并发和跨数据中心的场景下,延迟和性能会成为瓶颈。我们现在更倾向于用cRdt(无冲突复制数据类型)的思路去重新设计数据模型,或者直接用一些新的分布式数据库的原语。你好像没往这个方向思考”?
林晨感到一阵憋闷。cRdt他听说过,属于分布式系统里比较前沿的理论研究范畴,真正大规模用在核心金融交易库存场景的案例,他确实没接触过。对方以最新、最前沿的理论来拷问他过去十年基于相对稳定技术栈的实战经验,这种落差让他有种拳头打在棉花上的无力感。 “这部分前沿实践,我承认接触不多”。林晨保持语气平静,“不过,技术方案最终要服务于业务稳定和成本。您说的新思路很有启发性,但具体到金融交易系统,尤其是涉及真金白银的库存,引入过于新颖尚未经过大规模生产验证的技术,风险评估可能需要非常谨慎”。
他试图从工程稳健性的角度来平衡对方的“技术激进论”。 赵经理却轻笑了一下,那笑容里带着点显而易见的优越感:“谨慎是没错,但技术迭代的速度不会等你。我们现在面对的都是头部私募客户,他们对性能、扩展性、新技术的接纳度,不是一般电商公司能比的。你的经验……嗯,扎实是扎实,但可能需要快速更新一下思维模式。我们项目节奏很快,没太多时间让人慢慢适应”。
这话已经说得相当直白,甚至有些刺耳了。言下之意:你的经验老了,思维旧了,可能跟不上我们快节奏的高端项目。 林晨觉得一股火气从心底往上冒。他三十五岁,被一个可能比自己小七八岁的人,用这种居高临下的“教育”口吻评价“需要更新思维”,这不仅仅是技术质疑,更像是一种年龄和资历上的隐形否定。
他放在桌下的手微微握紧,脸上却努力维持着基本的礼貌:“我理解。学习能力我一直自信不错,如果有机会加入,我会尽快补齐相关的知识缺口”。 面试又进行了十几分钟,赵经理问了些关于系统监控、全链路追踪以及团队协作工具使用习惯的问题。林晨的回答中规中矩,而赵经理的反应始终是那种淡淡的、略带挑剔的审视,再也没有最初那个深入问题带来的些许交锋感,仿佛已经给林晨贴上了“传统技术栈、思维需更新”的标签。
“差不多了”。赵经理最后合上电脑,“你的基础技术能力和项目经验是有的,这点没问题。不过是否匹配我们当前项目对新技术和实践的迫切要求,我还需要和hR以及客户方综合评估一下。今天就到这里吧,后续有消息hR会通知你”。
没有握手,只是点了点头。林晨站起身,道了声“谢谢赵经理,辛苦了”,然后走出会议室。 穿过略显嘈杂的办公区,那些年轻的程序员们噼里啪啦敲着键盘,屏幕上闪烁着各种他熟悉或略显陌生的IdE界面和命令行窗口。林晨忽然感到一种前所未有的疏离感。十年经验,曾经是他简历上最厚重的部分,如今在某些场景下,却似乎成了“陈旧”和“需要更新”的代名词。
走出写字楼,下午的阳光有些刺眼。林晨站在科技园熙熙攘攘的街道边,深深吸了一口气,又缓缓吐出。憋闷、不爽、一丝被轻视的愤怒,在胸腔里搅动。但他很快压下了这些情绪。 赵经理的态度固然让人不快,但他指出的问题,某种程度上是事实。自己过去十年深耕的电商后端领域,技术栈虽然也在演进,但整体是渐进式的。而如今一些新兴的、高要求的领域(如金融科技、AI基础设施),技术迭代和思维转换的速度确实更快。
“仅仅修补旧船,看来是划不进新海域了”。林晨看着不远处腾讯大厦闪闪发光的玻璃幕墙,心里那个原本因生存压力而暂时妥协的念头,再次变得清晰而强烈,甚至带上了一丝破釜沉舟的决绝。 妥协是为了生存,但若妥协的方向本身就是一个逐渐下沉的漩涡呢?或许,真正的生存,不在于在旧轨道上拼命追赶,而在于有勇气换一条轨道,哪怕那条轨道起点看起来布满荆棘。 他想起昨天在张伟提到的量化团队,和那个自己尚未开始的AI学习计划。赵经理那带着优越感的挑剔眼神,像一根针,刺破了他最后一丝侥幸。
回到地铁站,他拿出手机,没有再看招聘软件,而是打开了一个笔记应用,在第一行郑重地写下: “转型启动:系统性学习AI与量化投资。目标:建立技术护城河,不再被动接受评判”。
第23章 薪资谈崩
鹏城科技园北区,一栋外观颇为破旧的写字楼里,林晨坐在一间狭小的会议室里,等待着最后一道流程。 这里是智行科技——那家金融科技外包公司。昨天刚结束与那位年轻赵经理的技术面,今天就被通知来终面,见hR谈薪资。
流程快得让他有些意外,但经历了昨天那番“经验贬值”的拷问后,他对此已不抱太高期望,只求一个能覆盖房贷、让他有喘息之机继续学习的数字。
会议室的门被推开,一个穿着黑色职业套装、妆容精致但表情有些程序化的女人走了进来,手里拿着一个文件夹。 “林先生又见面了,我是公司人事部经理,我姓王”。她坐下,翻开文件夹,目光快速扫过简历,“技术部门反馈还不错,虽然赵经理提到你的技术栈和我们当前项目有些差异,但基础扎实,学习能力也得到认可”。
林晨点了点头,心里稍微松了半口气。至少技术关算过了。 “那我们来聊聊薪资期望”。王hR推了推眼镜,目光从简历移到林晨脸上,语气平稳得像在念稿,“我们公司这个岗位,给出的薪资范围是15K到22K每月,十三薪。根据你的经验和面试表现,我们可以给到18K。这是税前的”。 18K。 林晨听到这个数字,心里那半口气瞬间凝住了,变成一块沉甸甸的石头。他以为自己听错了,或者对方说错了单位。 “王经理”,林晨尽量让声音保持平稳,“我记得招聘信息上写的是20-30K,上次沟通时也提过,根据经验,22K左右是可以谈的。比我上一份工作的base是少太多了”。
王经理脸上露出一丝几乎难以察觉的、混合了理解和某种居高临下的笑容。“林先生,招聘信息写的是一个理想范围。具体给多少,要根据候选人实际情况来定。你上一份工作在电商领域,和我们金融科技的技术要求有差距,需要一定的适应和学习成本。而且”。她顿了顿,目光在林晨脸上多停留了一秒,“你这个年龄,转型起来需要的时间精力,和年轻人是不一样的。我们给出18K,已经是综合考虑了你十年经验的价值。这个数,在市场上,真不低了”。
“你这个年龄”。 这四个字像四根细针,精准地扎进了林晨的耳膜。昨天赵经理的质疑还带着技术层面的掩饰,此刻人事经理的话,则撕掉了那层掩饰,露出了赤裸裸的、基于年龄的估值逻辑。
一股混合着荒谬、愤怒和冰凉的情绪从胃里翻涌上来。他想起家里每月准时扣款的1.2万房贷,想起苏婉虽然不说但日渐精打细算的样子,想起银行账户里那不断减少的30来万的存款。18K,税后可能也就一万四左右,还了房贷,剩下的钱在鹏城,够干什么?勉强维持一家三口的基本生存?那他这十年经验,这十年的加班、熬夜、解决问题,价值就只体现在这勉强覆盖生存线的数字上? 更让他心寒的是那种评价体系——年龄成了负资产,经验成了需要打折的陈旧货,而学习成本,竟然成了压价的理由。
“王经理”,林晨的声音沉了下来,之前的客气收敛殆尽,“我不太理解这个逻辑。如果我的技术栈不符合要求,赵经理完全可以不通过技术面试。既然通过了,说明你们认可我能胜任,或者至少在可接受的周期内胜任。那么薪资应该对标岗位价值和我的经验产出,而不是我的年龄。18K,距离我的底线太远,也远低于市场同类岗位的中位数。这个offer,我无法接受”。
王经理脸上的笑容淡了些,换上了一副公事公办、略带惋惜的表情。“林先生,我理解你的想法。但市场行情就是这样。35岁以上的技术岗位,除非是特别顶尖的专家或者管理岗,否则薪资天花板就在那里。很多公司甚至根本不考虑这个年龄段的基层开发。我们愿意给机会,也是看中你态度比较踏实。18K,你可以先入职,做出成绩,后续还是有调薪空间的。毕竟,你现在的情况……”,她没有说完,但意思很明显——你失业了,你没太多选择。 这种“施舍”般的口吻,彻底点燃了林晨压着的火气。他忽然觉得坐在这里继续争论,是对自己过去十年,以及未来可能性的侮辱。
他缓缓站起身,拿起放在桌上的简历和笔。 “谢谢贵司的时间”。林晨的声音很平静,甚至有些过于平静了,“我想我们没必要继续谈下去了。薪资不是唯一的问题,但你们对人才价值的评估方式,和我个人的认知有根本差异。这个机会,我不需要”。 王经理显然没料到他会如此干脆地起身拒绝,愣了一下,随即也站了起来,语气硬了几分:“林先生,我劝你理性考虑一下。现在就业形势你也知道,错过这个机会,下一份工作什么时候能找到,薪资能不能比这个高,都是未知数。意气用事,解决不了实际问题”。
“这不是意气用事”。林晨看着她,一字一句地说,“这是底线问题。代码可以骗人,但逻辑不会,人更不能。如果连自己的价值都无法坚持一个合理的底线,那我也写不出什么有逻辑的代码。再见”。
说完,他不再看对方有些错愕和难看的脸色,转身拉开会议室的门,径直走了出去。 穿过智行科技略显拥挤的办公区,他能感觉到一些目光投在自己背上。
他没有回头,脚步沉稳地走进电梯,按下了一楼的按钮。 电梯下行时,密闭的空间里只剩下他一个人。刚才强撑的平静迅速褪去,一股强烈的疲惫和憋闷感席卷而来。他靠在电梯壁上,深深吸了口气,又缓缓吐出。愤怒过后,是更深的无奈和自我怀疑。 难道……真的错了吗?坚持那个120万的年薪目标是好高骛远,那坚持一个覆盖房贷、尊重经验的薪资,也是不切实际吗?市场,真的已经对35岁的程序员如此苛刻了吗?
走出写字楼,阳光有些刺眼。科技园里依旧人来人往,穿着各式文化衫的年轻人步履匆匆,充满活力。他站在路边,看着这熟悉又陌生的场景,第一次如此清晰地感受到自己与这个高速迭代的环境之间,那道无形的、名为“年龄”的鸿沟。
手机震动了一下,是苏婉发来的微信:“面试怎么样?不管结果如何,晚上给你做爱吃的红烧排骨”。
看着这条简单温暖的消息,林晨鼻头莫名一酸。他仰头看了看天,把那股酸涩压了回去。不能泄气,至少,家里还有人在等他,在支持他。 他回复:“谈崩了,薪资太低。我没事,晚上回去再说”。 发送前,又把“我没事”三个字删掉了,只发了前半句。他不想对她撒谎,哪怕只是情绪上的。
没有立刻去地铁站,他沿着科技园内的绿道慢慢走着。需要一点时间,让被践踏过的自尊和愤怒沉淀下来,重新凝聚成更坚硬的东西。
走到一个露天咖啡座附近,他找了个空位坐下,拿出手机,下意识地点开了股票软件。绿油油的界面,他自选股里那几支试探性买入的股票,依旧半死不活地横盘或阴跌。
他又切到招聘App,刷了几下,大部分职位要么要求“35岁以下”,要么薪资范围明晃晃地写着15-25K,那25K仿佛只是个诱饵。 一种近乎绝望的窒息感慢慢包裹上来。技术转型的决心昨天刚下,远水难解近渴。眼前的生存压力,却像潮水一样,一次次拍打着越来越薄的堤岸。 难道……真的要向那18K妥协吗?为了那一点可怜的现金流,消耗掉宝贵的、本应用于学习转型的时间和心力?
就在他思绪纷乱,几乎要被负面情绪淹没时,手机突然响了起来。是一个熟悉的号码——张伟。 林晨有些意外,调整了一下呼吸,接通了电话。
“喂,张伟”?
“林晨,在哪儿呢”?张伟的声音依旧爽朗,背景音有些嘈杂,似乎在外面。
“刚面试完,在科技园这边”。
“怎么样?拿下没”?张伟问。
“没,薪资谈崩了”。林晨苦笑一下,简单说了下情况。
电话那头,张伟沉默了两秒,然后骂了一句:“靠!这帮人真是……18K?打发叫花子呢?你十年经验就值这个?别理他们,这种公司去了也是坑”。
朋友的仗义直言,让林晨心里舒服了一点。“嗯,我没接”。
“这就对了!有骨气”!张伟赞了一句,随即话锋一转,“对了,打电话给你就是说个事儿。我这边打听到一个机会,可能比较适合你现在的方向。不是web3了,是t厂,他们AI应用部门最近好像在扩招,做金融大模型落地的。要求有扎实的后端和一定的AI基础或者强烈学习意愿。我觉得你正好在学这个,要不要试试?我有个朋友在里头,可以帮你递个简历看看”。
t厂?AI部门? 林晨握着手机,愣住了。他才下定决心系统学习AI,下午,一个真正顶尖大厂、核心AI部门的机会,就这么突兀地,通过朋友的口,递到了他的面前? 这仅仅是巧合,还是命运在他最低谷时,终于吝啬地露出了一丝缝隙?
“t厂……AI部门”。林晨重复了一遍,心脏不受控制地加快了跳动,“我……我现在AI刚起步,能行吗” ?“怕什么!机会难得,试试又不会掉块肉。简历发我,我让我朋友看看。成不成另说,至少是个像样的机会,比那什么破外包强一万倍”!张伟语气笃定,“记住,别妄自菲薄。你底子在那儿呢”!
挂断电话,林晨坐在咖啡座旁,许久没有动弹。
科技园的夕阳开始给高楼镶上金边,晚风带着一丝凉意吹过。他心中的憋闷和绝望,因为张伟的这个电话,被撕开了一道口子,漏进了一丝微弱但无比清晰的光。 t厂。AI。 他低头,再次打开手机,这次不是招聘软件,而是笔记App,写下的那行“系统性学习AI与量化投资”的目标,在屏幕微光的映照下,显得格外醒目。 也许,那条看似最艰难、最需要破釜沉舟的路,才是唯一的生路。
他站起身,朝着地铁站的方向走去。步伐,比来时坚定了许多。
第24章 网约车司机的故事
傍晚六点半,科技园地铁口的人流像开闸的洪水。林晨站在路边决定打车回家,手机屏幕上“正在为您呼叫车辆”的圆圈转了近三分钟,才终于匹配到一辆白色bYd。
他拉开车门坐进后座,疲惫地报出手机尾号:“师傅,手机尾号8168”。
“好嘞,系好安全带”。司机是个四十岁左右的男人,声音温和,从后视镜里瞥了林晨一眼,“科技园下班”? 林晨含糊地“嗯”了一声,把头靠在车窗上。窗外霓虹初上,写字楼的格子间依然亮着大片灯光。他刚刚经历了一场堪称羞辱的面试,此刻身心俱疲,连应付闲聊的力气都欠缺。
车子驶入北环大道,晚高峰的拥堵如期而至。红色尾灯连成一片缓慢移动的光河。司机似乎习惯了这种节奏,不急不躁,甚至随手调低了电台音量。 沉默在车厢里蔓延。
林晨望着窗外发呆,脑子里反复回放着王经理那句“你这年龄,18K不低了”,像根刺一样扎着。直到一个有些熟悉的东西闯入视线——司机放在中控台手机支架旁的,是一个印着某知名编程大会Logo的黑色保温杯,杯身上还有褪色的“hello world”贴纸。 程序员?林晨心里一动。 或许是察觉到他的目光,司机笑了笑,主动开口:“以前攒的。好几年没用了,当普通杯子使”。
“您……以前也是做It的”?林晨忍不住问。 “是啊”,司机语气平淡,仿佛在说一件很久远的事,“干了十几年,后端开发,主要做Java。后来公司业务调整,整个组裁了。36岁那年的事”。
林晨心里咯噔一下。36岁,比自己现在只大一岁。 “那后来……没再找开发的工作”?
“找了”,司机打了把方向,车子并入稍快一点的车道,“面了几家,要么嫌我技术栈不够新,Spring cloud那套玩得没年轻人熟;要么觉得我要价高,其实我也就要个二十来K,养家糊口嘛。面到后来,自己也疲了。正好有辆车,就注册了滴滴,先跑着”。
他说得轻描淡写,但林晨听出了那份无奈。“跑这个……比写代码辛苦吧”? “身体上肯定辛苦。一天在车里坐十个小时,腰受不了。但心里”,司机顿了顿,“心里反而简单了。不用想需求怎么又变了,不用跟产品经理扯皮,不用熬夜上线。现在只需要接单,开车,送到地方,收钱。一单一单,清清楚楚”。
“收入呢”?林晨问出这个现实的问题。 “看月份,好的时候,除掉电费、平台抽成,净落一万二三。差的时候八九千。比不上以前巅峰期,但胜在稳定,每天都有进账,不怕突然被裁”。
司机从后视镜看了林晨一眼,“小伙子,你也是程序员?看你从科技园出来,脸色不太对,刚面试”?
林晨苦笑:“是,刚面完,谈崩了”。
“因为薪资”?
“嗯,觉得我年龄大,技术栈老,只肯给18K”。
司机沉默了几秒,叹了口气:“现在市场就是这样。我们那批人,经验是有,但架不住技术更新太快,年轻人要价低、肯加班、学新东西猛。公司算账精着呢”。
他顿了顿,“我刚开始跑车的时候,也拉过不少像你这样的。有的骂骂咧咧,有的垂头丧气。后来慢慢就见得少了——要么找到工作上岸了,要么……就像我一样,换赛道了”。
“您后悔吗”?林晨问。
“后悔”?司机想了想,“说不上。刚被裁那会儿,确实天塌了一样。房贷、孩子学费、老人看病,哪样都要钱。失眠,抽烟,跟老婆吵架。觉得寒窗苦读十几年,技术干了十几年,最后去开车,脸往哪儿搁”?
他笑了一下,那笑容里有种释然,“但开了半年后,想法变了。面子值几个钱?一家人实实在在的生活才值钱。我早上六点出车,避开早高峰堵车段,专跑机场、高铁站预约单;中午休息两小时;晚上跑到九点收工。一个月万把块钱,房贷能还上,孩子补习班能交,家里伙食不错。老婆也不跟我吵了,有时晚上还给我煮个宵夜”。
“就是……可惜了那些年的技术”。
林晨低声道。 “是可惜。但时代变了,兄弟”。
司机的语气变得认真起来,“我们这行,吃的是青春饭、技术饭。青春过了,技术旧了,市场就不要你了。硬撑着,把自己逼死,也没用。得认”。
车子驶出北环,进入宝安大道,拥堵缓解了许多。窗外流光溢彩,繁华的鹏城夜景在眼前展开。但林晨却觉得一股寒意从心底升起。 这位司机师傅,可能就是他的未来——甚至可能是更“好”的未来。至少师傅有辆车,能月入过万,家庭稳定。
自己呢?如果接下来t厂的机会抓不住,如果AI转型失败……他连辆出租车都没有,存款还能撑几个月?
“不过,我也不是劝你放弃”。司机忽然又说,“我看你年纪,应该比我当年被裁时还小几岁。还有时间。如果真喜欢这行,还有那股劲儿,就拼一把,往最前沿的地方钻。我当年就是犹豫了,觉得Java还能吃几年老本,没狠下心去学那时候刚起来的Go、容器化那些。一步慢,步步慢”。
他指了指中控台上那个旧保温杯:“这杯子我现在还留着,算是留个念想。有时候等单的时候,也会看看技术论坛,虽然看不懂了,但知道现在都是AI、大模型的天下。那是你们年轻人的战场了”。
林晨默默听着。这番话,没有鸡汤,没有励志,只有过来人血淋淋的教训和朴实的建议。
“师傅,谢谢您跟我说这些”。 “客气啥。都是同行,虽然后来我‘转行’了”。
司机幽默了一下,“到了,就前面小区对吧”? 车子在小区门口平稳停下。
林晨付了款,推门下车前,真诚地说:“师傅,祝您接单顺利”。
司机笑着挥挥手:“也祝你早日找到好工作。记住,别跟自己较劲,但也别轻易认输。路还长”。
车门关上,白色bYd汇入车流,很快消失不见。
林晨站在小区门口,没有立刻进去。
晚风带着些许凉意吹来。他脑海里反复回响着司机的话——“时代变了”、“得认”、“还有那股劲儿就拼一把”。
他拿出手机,下意识点开了招聘App。琳琅满目的职位推送过来:Java资深开发(35岁以下)、前端专家(精通Vue3)、Go微服务架构师……每一个要求后面,都像有一双冷酷的眼睛在审视他的年龄和简历。 如果沿着老路走,那位司机师傅的今天,很可能就是他明年的写照。甚至更糟。
但张伟给的内推机会,t厂AI部门……那是另一条路,一条更陡峭、更未知,但也可能通往全新世界的路。 “别跟自己较劲,但也别轻易认输”。
林晨深吸一口气,锁屏,转身走进小区。他望着金属门上模糊的倒影,那张35岁男人的脸上有疲惫,有迷茫,但眼底深处,某种东西正在重新凝聚。
回到家,妻子苏婉已经做好了饭菜,儿子乐乐正在客厅玩积木。温暖的灯光,饭菜的香气,瞬间包裹了他。
“面试怎么样”?苏婉接过他的包,轻声问。 林晨摇摇头,没多谈细节:“没成。不过,张伟那边有个新机会,我回头详细跟你说”。
他不想让家人担心,更不想传递焦虑。
吃饭时,乐乐叽叽喳喳说着今天的趣事。苏婉给他夹菜,眼神里有担忧,但更多的是无声的支持。
晚上,哄睡乐乐后,林晨坐在书房电脑前。他没有开灯,只有屏幕的光照亮他的脸。他打开了那个许久未动的技术博客,上一次更新还是半年前。 然后,他在搜索框里,第一次郑重地输入了:“python 机器学习 入门指南”。
窗外,鹏城的夜色正浓。无数盏灯下,有人加班,有人应酬,有人迷茫,也有人正在默默蓄力,准备迎接黎明前最黑暗的冲刺。 而林晨知道,他必须抓住那根叫做“AI”的稻草。这已不是选择题,而是生存题。 那位网约车司机的背影,仿佛就在不远的前方,警示着他:停滞,即是坠落。
第25章 妻子的压力
夕阳把鹏城科技园南区那几栋标志性的玻璃幕墙大楼染成橘红色时,苏婉提着帆布包,随着人流走出地铁口。她任教的南山实验学校小学部就在附近,通勤还算方便。往常这个点,她会顺路去菜市场挑点新鲜的蔬菜,或者去超市看看有没有打折的排骨。
但今天,她脚步有些快,径直走向回家的方向,帆布包在她身侧轻轻晃着,里面除了备课本和学生作文,还装着一些难以言说的沉重。 上午教师休息室里那场闲聊,像根细刺,扎在她心里,时不时就疼一下。
“苏老师,你家林晨最近怎么样?还在原来那家跨境电商公司吗”?问话的是同年级组的王老师,语气里带着惯常的、或许并无恶意的关心。
苏婉当时正低头批改作业,笔尖顿了一下,抬起头,脸上已经挂起惯常的、温和得体的微笑:“嗯,挺好的”。她避开了具体公司名和现状,含糊地应了过去。 “那就好那就好”。王老师点点头,转而说起自己老公公司最近效益不佳,可能要裁员,语气里满是担忧。“现在这经济环境,真是不让人安生。我家那位要是被裁了,光靠我这点工资,房贷车贷可怎么办哦。还是你们家稳当,林晨是做技术的,越老越吃香”。
旁边另一位年轻点的李老师插话:“王姐,那可不一定。我表哥也是搞It的,年初就被优化了,35岁,找了小半年工作,最后降薪去了个小公司,听说天天加班。现在技术更新太快了,不一直学,很容易就被淘汰”。
王老师惊讶:“啊?这么严重?那苏老师,你家林晨……” 苏婉感觉脸颊有些发烫,她维持着笑容,声音却不由自主地低了些:“他……也在看机会,行业是有点波动”。
她迅速把话题引向即将到来的月末考试安排,结束了这场让她如坐针毡的对话。 整个下午,她都有些心神不宁。上课时,偶尔会走神,想到家里书房那盏总是亮到深夜的台灯,想到林晨最近越来越沉默的脸,想到他电脑浏览器历史记录里那些“python”、“机器学习”的搜索关键词。
她不是不懂,只是那种弥漫在空气中的、无形的审视和潜在的同情,让她喘不过气。她是语文老师,教孩子们“人言可畏”、“众口铄金”,如今自己却真切地尝到了那滋味。面子薄,自尊心强,这是她的软肋。
推开家门,熟悉的气息扑面而来。五岁的儿子乐乐正在客厅地垫上玩积木,看见妈妈回来,欢呼一声扑过来。“妈妈!你看我搭的火箭”! “真棒”!苏婉弯腰抱起儿子,在他小脸上亲了亲,那股从学校带回来的郁气似乎被冲淡了些。
“爸爸呢”? “爸爸在书房”。乐乐小手一指。
苏婉放下包,走进厨房。冰箱里食材不多,她拿出昨晚剩下的半颗西兰花,几个鸡蛋,还有一小块瘦肉。
开始淘米、洗菜、切肉。动作熟练,却有些机械。水龙头哗哗的流水声,菜刀落在砧板上的笃笃声,掩盖不住她心里的纷乱。
晚饭时,气氛有些微妙。 林晨看起来比前几天更疲惫,眼下的青黑明显。他扒拉着碗里的饭,话不多。乐乐叽叽喳喳说着幼儿园的趣事,苏婉温柔地应和着,给他夹菜。 “今天……在学校还好吗”?林晨忽然问了一句,抬头看了苏婉一眼。
苏婉心里一跳,面上却不动声色:“挺好的啊,就是月末考试快到了,事多点。你呢?有……有新的面试消息吗”? 林晨摇摇头,筷子戳了戳米饭:“投了几家,还没回音。张伟那边说t厂那个AI岗位,流程走得慢,让我再等等”。
“哦,等等也好,准备充分点”。苏婉给他夹了一筷子瘦肉,“多吃点,看你最近都瘦了”。
林晨“嗯”了一声,没再多说。
饭后,林晨主动收拾碗筷去洗,苏婉陪乐乐洗澡、读绘本,哄他睡觉。
等孩子房间的灯熄灭,客厅只剩下电视微弱的光和声音时,一种白天被刻意压制的疲惫和委屈,才慢慢从苏婉四肢百骸渗透出来。 她坐在沙发上,抱着一个抱枕,眼睛盯着电视屏幕,却什么也没看进去。脑子里反复回响着王老师的话,李老师的话,还有同事们偶尔投来的、那种欲言又止的眼神。甚至,今天下午在洗手间,她还隐约听到外面有女老师在低声议论“……听说她老公失业好久了……”、“压力肯定大……”、“有同事建议她让林晨去开网约车或者送外卖先干着……” ,开网约车?送外卖? 苏婉鼻子猛地一酸。
她不是看不起这些职业,只是……只是想到林晨大学时意气风发的样子,想到他熬夜写代码攻克难题时的专注,想到他曾经也是家里骄傲的“技术骨干”……巨大的落差感像潮水一样淹没了她。她心疼他,也心疼这个家,更心疼那份摇摇欲坠的、外人眼中的“体面”。 她怕林晨承受不住,所以从来不敢多说,甚至还要强装乐观去安慰他。可她自己心里的那根弦,也绷得太紧了。
泪水毫无征兆地涌上来,模糊了电视的光影。她赶紧低下头,把脸埋进抱枕里,肩膀微微耸动,压抑的抽泣声细不可闻。她不想让林晨看见,一点也不想。
书房的门轻轻响了一声。 林晨端着水杯走出来,想去客厅接水。他习惯性地看向沙发,却看到妻子蜷缩在那里,肩膀微微颤抖,怀里的抱枕被攥得紧紧的。 他脚步顿住了,心脏像被一只无形的手狠狠攥了一下,骤然缩紧。接水的念头瞬间抛到九霄云外。
他站在那里,隔着几米远的距离,看着苏婉压抑哭泣的背影。客厅昏暗的光线勾勒出她单薄的轮廓。那个总是温柔、坚韧、在他最彷徨时默默支持他的女人,此刻显得如此无助。
一瞬间,面试失败的挫败,银行卡里不断减少的数字,对未来不确定的迷茫,所有堆积的压力仿佛找到了一个决口,化作尖锐的自责和疼痛,狠狠刺向林晨。比任何一次面试被拒、比任何一次看到房贷扣款短信,都要痛上千百倍。 是他没用。 是他让妻子承受了这些。 那些所谓的同事议论、无形的压力,最终都落在了苏婉肩上,而她却选择一个人躲在黑暗里哭泣,连哭都不敢大声。
林晨感觉喉咙发堵,眼眶发热。他深吸一口气,强迫自己镇定下来,轻轻走了过去。 他没有立刻出声,也没有去碰苏婉,只是在她旁边的沙发扶手上坐下,沉默地陪伴着。
过了好一会儿,等苏婉的抽泣声渐渐微弱下去,他才伸出手,轻轻放在她微微颤抖的肩上。 苏婉身体一僵,猛地抬起头。脸上泪痕未干,眼睛红肿,写满了慌乱和窘迫。“你……你怎么出来了?我、我没事,就是眼睛有点不舒服……”
她胡乱地用手背擦着脸,试图挤出一个笑容,但那笑容比哭还难看。 “别擦了”。林晨的声音有些沙哑,他抽了张纸巾,递过去,另一只手没有离开她的肩膀,反而稍稍用力,传递着无声的支撑。“我都看见了”。 苏婉接过纸巾,捂住眼睛,刚刚止住的眼泪又涌了出来,这次不再是压抑的抽泣,而是带着委屈和释放的低声呜咽。“对不起……我、我就是……今天在学校……” 。“我知道”。林晨打断她,声音低沉却坚定,“不用说,我都知道”。他怎么会不知道?失业这四个月,他自己感受着求职市场的冰冷,又何尝想不到苏婉在学校可能面临的处境?只是他之前刻意不去深想,或者说,是鸵鸟心态,以为只要自己尽快找到工作,一切就会恢复原样。但现在,妻子的眼泪把他的侥幸和逃避击得粉碎。
“对不起,苏婉”。林晨低下头,这三个字重若千钧,“是我让你受委屈了”。 苏婉拼命摇头,抓住他的手:“不怪你,真的不怪你。是……是那些人……还有这个世道……”,她语无伦次,“我就是心里难受,看你那么累,我帮不上忙,还……” ,“你帮了我最大的忙”。
林晨反握住她的手,她的手很凉。“你撑着这个家,带着乐乐,还忍着外面的闲言碎语。是我该做得不好”。 他抬起头,看着妻子通红的眼睛,一字一句地说:“再给我一点时间。t厂的机会,我会抓住。AI,我一定学出来。那些议论,迟早会变成羡慕”。 他的语气没有慷慨激昂,只有一种破釜沉舟后的平静和决绝。这平静比任何誓言都更有力量。
苏婉看着他,眼泪又流下来,但这次不再是委屈和悲伤,而是一种混合着心疼、信任和释然的复杂情绪。她靠过去,把头轻轻抵在林晨肩上,汲取着那熟悉而令人安心的温度。
“我相信你”。她轻声说,“一直相信”。
夜深了,鹏城的灯火依旧璀璨。小小的客厅里,夫妻俩依偎在一起,暂时驱散了外界的寒意。压力没有消失,但它从一个人默默承受,变成了两个人共同面对。林晨搂着妻子,目光投向窗外漆黑的夜空,那里没有星光,但他心里却燃起了一簇更坚定的火苗。 为了肩上这份沉甸甸的责任,为了身后这个需要他守护的家,他必须,也只能,向前闯出一条生路。
代码可以骗人,但逻辑不会,人更不能。他对自己许下的承诺,必须用行动来实现。
第26章 又一次面试
周一上午九点,林晨的手机震动起来。
他正在书房里整理最近自学AI的笔记,看到屏幕上显示的陌生座机号码,心跳不由自主地加快了几分。
“喂,您好”。他接起电话,声音尽量平稳。
“请问是林晨先生吗?我这边是星海科技的人力资源部,收到了您投递的后端开发工程师简历。想邀请您明天下午两点来公司参加面试,方便吗”? 星海科技。林晨快速在脑海中搜索——一家做企业SaaS服务的互联网公司,规模中等,大约三百人,在南山科技园有独立办公楼。他上周在招聘网站上海投时顺手投的,没想到这么快有回音。 “方便的,谢谢”。林晨记下了地址和联系人,挂断电话后,长长舒了一口气。
自从上次那家金融科技公司因为薪资期望谈崩后,已经过去两周。这两周里,他又陆续面了三家小公司,要么是技术栈过于陈旧(还在用Struts和jquery),要么是薪资低得离谱(开口就是15K)。每一次面试失败,都像在提醒他“35岁”这个标签在就业市场上的重量。
但这次不一样。星海科技至少是正经的互联网公司,产品有一定市场占有率,技术栈应该不会太落后。更重要的是——有面试机会,就意味着还有希望。
第二天下午一点半,林晨提前到达星海科技所在的写字楼。大厦不算新,但维护得不错,大堂里进出的大多是背着双肩包、穿着休闲的年轻人。
他对着电梯里的镜子整理了一下衬衫领子,看到自己眼角的细纹和略微发际线后移的额头,心里那股熟悉的自我怀疑又冒了出来。 “稳住”。他暗自默念,“技术过关就行”。
面试安排在二楼的一间小会议室。第一轮是技术一面,面试官是个三十出头的男子,戴着黑框眼镜,自我介绍叫王工。 问题从基础的Java集合框架开始,到多线程并发、JVm内存模型,再到Spring框架的核心原理。林晨答得流畅——这些都是他过去十年吃饭的本事,早已刻在肌肉记忆里。几个稍微深入的问题,比如“concurrenthashmap在JdK8中的优化细节”和“Spring循环依赖的解决机制”,他也结合源码实现和自己的项目经验,给出了清晰的解释。
王工一边在笔记本上记录,一边点头:“基础很扎实。那我们聊聊项目吧,您简历上写的那个跨境电商订单系统,峰值qpS能做到多少?怎么保证高可用”?这是林晨的得意之作。他详细介绍了系统架构:分库分表策略、读写分离、缓存层设计、熔断降级机制。讲到关键处,他甚至顺手在会议室的玻璃白板上画起了架构图。 “当时我们用了Redis集群做热点数据缓存,消息队列做订单异步处理,数据库层面做了主从切换和延迟监控”。林晨的语速加快,眼睛里有了光,“最紧张的一次是‘黑五’大促,订单量涨了五倍,我们提前做了全链路压测和预案,最后平稳度过”。
王工推了推眼镜:“压测数据有吗?当时发现了什么瓶颈”? “有,主要瓶颈在数据库连接池和第三方支付接口的调用超时上。我们调整了连接池参数,对支付接口做了降级策略——如果超时率超过阈值,就切换到备用通道”。林晨答道,“这些都在事后复盘文档里”。
一轮面试持续了五十分钟。结束时,王工主动和他握了握手:“林工经验很丰富,我这边没什么问题了。稍等,二面面试官马上来”。
林晨心里一松。第一关过了。 二面面试官看起来更资深些,四十岁左右,自称是技术部的高级架构师。问题开始偏向系统设计和实战场景。 “如果让你设计一个类似美团外卖的骑手调度系统,你会怎么考虑”?架构师抛出问题。 林晨思考了几秒,开始拆解:“核心是实时匹配订单和骑手,关键指标是配送效率和成本。我会分成几个模块:订单池管理、骑手状态管理、匹配算法引擎、派单执行和监控反馈。匹配算法要考虑骑手实时位置、订单目的地、骑手负载、路线规划、甚至天气因素……” 他越说越投入,从数据库选型讲到缓存策略,从算法优化讲到容灾设计。
架构师不时追问细节:“实时位置更新频率怎么定?数据量大时怎么存储和检索?匹配算法如果出现局部最优解陷阱怎么办”?这些问题有些棘手,但林晨凭借多年的实战经验,给出了务实的解决方案:“位置更新可以分级处理,空闲骑手低频更新,接单骑手高频更新;数据存储可以用时空索引数据库如postGIS,或者用Redis Geo;算法陷阱可以通过引入随机扰动和定期全局重平衡来缓解……”。 “嗯”。架构师在笔记本上写着什么,“你对微服务架构怎么看?你们之前的系统是单体还是微服务”? “我们是渐进式改造,核心订单模块先拆成了微服务”。
林晨实话实说,“微服务有好处,比如独立部署、技术栈灵活,但代价也不小——分布式事务、链路追踪、运维复杂度都上来了。我的体会是,不要为了微服务而微服务,业务规模和团队规模到了再考虑拆分”。架构师点了点头,似乎认可这个务实观点。
二面又持续了近一小时。结束时,架构师说:“我这边也差不多了。最后一面是我们技术总监,他刚好现在有时间,你直接去他办公室吧”。
林晨心里涌起一阵期待——三轮技术面,说明公司对这次招聘很重视。而且一面二面都顺利,总监面应该更多是综合评估和薪资沟通。
技术总监的办公室在走廊尽头,玻璃隔断,能看到里面摆着书架和绿植。总监姓李,看起来四十多岁,穿着poLo衫,气质更偏向管理者而非纯技术。 “请坐”。李总监示意林晨坐下,快速浏览着前两轮的面试评价,“王工和刘工对你的技术评价都不错。我简单问几个问题吧——你离开上一家公司后,这段时间在做什么”? 林晨早有准备:“主要在系统性地学习新技术,比如深入研究了Kubernetes和云原生架构,也在补AI和机器学习的基础知识。我觉得技术人需要持续更新知识库”。
“AI”?李总监抬了抬眼,“怎么想到学这个”? “我觉得这是未来趋势。而且AI和传统后端系统结合的场景越来越多,比如智能推荐、风险控制、运营自动化”。林晨回答得谨慎,没有透露自己正在秘密开发的投资系统。
李总监不置可否,转而问道:“你对加入星海有什么期望?包括技术方向和职业发展”。
林晨斟酌着用词:“我希望能在有挑战的业务场景里发挥技术价值。星海做企业SaaS,系统稳定性和扩展性要求很高,这正是我擅长的。职业发展上,我希望能在架构层面有更多贡献,也可以带团队”。
“薪资期望呢”?李总监问到了关键。 林晨心里快速盘算。星海不是大厂,但规模尚可,自己虽然有120万的长期目标,但眼下急需一份工作稳定家庭。他报出了一个务实但不算低的数字:“月薪希望能在40K到45K之间,看总包结构”。 李总监没有立即回应,在笔记本上记了一笔,然后问了几个团队管理和跨部门协作的问题。
林晨结合过去带小团队的经验,回答得中规中矩。 最后,李总监站起身:“今天的面试就到这儿。我们会在三天内给答复,无论是否通过,hR都会联系你”。
“谢谢李总”。林晨礼貌告辞。 走出星海科技的办公楼,已经是下午四点多。阳光透过科技园高楼间的缝隙洒下来,照在身上暖洋洋的。林晨站在路边,深吸了一口气。 三轮技术面试,他感觉自己发挥得不错。问题都答上来了,项目经验也得到了认可。尤其是最后总监面,虽然李总监表情平淡,但至少没有当场表现出不满意。 也许这次真的有机会。 他拿出手机,想给苏婉发条微信说下面试情况,但打了几行字又删掉了——还是等有确定结果再说吧,免得她空欢喜一场。
地铁上开始拥挤起来了。林晨站在车厢连接处,看着窗外飞速掠过的城市景观,心里那点期待像小火苗一样慢慢燃起来。如果星海能给到40K,哪怕14薪,一年也将近六十万。虽然离他曾经的百万年薪还有距离,但至少能缓解房贷压力,让苏婉不用再担心同事的议论。 更重要的是——这是一份正经的互联网技术工作,能让他保持技术手感,同时有时间继续钻研AI。
他最近已经用python搭起了简单的神经网络模型,正在用股票历史数据做训练。如果能入职星海,白天工作,晚上和周末继续研究,两不耽误。
回到家时,苏婉正在厨房准备晚饭。林晨放下背包,走到厨房门口:“今天面试了一家做SaaS的公司,感觉还行”。 苏婉转过头,眼睛亮了一下:“怎么样”?“三轮技术面都过了,等消息”。林晨尽量语气平静,“公司规模中等,技术栈应该比较新”。 “那就好”。苏婉笑了笑,继续切菜,但林晨能看出她动作轻快了些。
晚饭后,林晨陪乐乐搭了一会儿积木,然后回到书房。他没有开电脑学习,而是拿出笔记本,复盘今天的面试问题。哪些答得好,哪些可以优化,哪些知识点还需要巩固。这是他多年养成的复盘习惯——每一次面试都是学习和改进的机会。
睡前,他又刷新了一次邮箱,没有新邮件。心里那点期待开始掺杂进一丝不安。
三天内给答复,明天、后天、大后天……他默默计算着时间。
窗外夜色渐深,鹏城的霓虹灯光透过窗帘缝隙渗进来。林晨躺在床上,闭上眼睛,脑海里却反复回放着面试时的对话片段。李总监最后那个平淡的表情,到底意味着什么? 他翻了个身,告诉自己:别多想,等消息就是。
三天后,邮箱里准时收到一封来自星海科技hR的邮件。 林晨点开,心跳如鼓。 邮件正文很简短:“感谢您参加星海科技的面试。您的技术能力给我们留下了深刻印象,但经过综合评估,我们认为您与当前岗位的匹配度尚有差距。我们已经将您的简历存入人才库,期待未来有机会合作……” 后面的话,林晨没有再往下看。 他坐在电脑前,盯着屏幕,足足五分钟没有动。
窗外阳光明媚,书房里安静得能听见自己的呼吸声。 又一次。 期待燃起,又无声熄灭。
第27章 背景调查
面试天启科技,是在星海科技拒信到来后的第五天。
那天早上,林晨正机械地刷新着招聘网站,手机突然震动起来。一个陌生号码,他犹豫了一秒才接通。
“林先生您好,我是天启科技的hR张薇。看到您在boSS直聘上的简历,想跟您聊聊我们这边资深后端开发工程师的岗位……”
电话那头的声音年轻而热情,像是在沉闷的水面上投下一颗石子。林晨匆忙拿起笔记本,一边应答一边记录要点:天启科技,成立三年的AI创业公司,刚完成b轮融资,技术团队在快速扩张。
“您方便这周四下午过来面试吗?地点在南山科技园”。
“可以的,没问题”。林晨答应得很快,心里却涌起一丝复杂的情绪——是期待,也是警惕。上次星海科技的经历还历历在目,他不敢再轻易乐观。
面试那天,天启科技的办公室比星海科技小得多,但氛围更像个真正在做事的技术团队。
一面是技术经理老陈,三十出头,架着眼镜,说话直来直去。他丢给林晨一道系统设计题:设计一个支持千万级用户的实时推荐系统。林晨在白板上画架构图时,手心微微出汗,但思路很清晰——缓存策略、消息队列、数据分片,这些都是他在前公司实际做过的东西。
老陈偶尔点点头,偶尔提出刁钻的追问:“如果Redis集群挂了呢”?“冷启动问题怎么解决”?林晨一一作答,虽然不敢说完美,但能感觉到对方眼里的认可。
二面是cto,一个看起来还没三十岁、穿着卫衣的年轻人,姓苏。他更关注的是林晨的项目经验和离职原因。当林晨说到“公司业务调整,部门整体优化”时,苏cto停顿了一下。
“当时裁了多少人”?
“整个部门,大概四十多人”。林晨平静地回答,心里却紧绷着。
“明白了”。苏cto没有继续追问,而是话锋一转,“如果加入我们,你最想做什么”?
林晨认真想了想才回答:“想做真正有价值的系统,能看到用户在用,能看到业务在增长”。
苏cto笑了笑,没有表态,只是说:“我们会尽快给您答复,三天之内”。
那个“三天”又来了。林晨走出天启科技的大楼时,深圳下午的阳光刺眼,他眯起眼睛,心里默默计算:明天、后天、大后天……
但这次,答复来得比预期快。
第二天下午,林晨还在犹豫要不要投另一家公司时,手机就响了。是天启科技的hR张薇,语气里带着明显的善意:“林先生,我们技术团队对您的评价很好,想邀请您进入下一步流程。不过按照公司规定,需要先完成背景调查”。
那一刻,林晨的心情复杂得难以形容。既松了口气——至少这次没有被一面拒绝,又紧张起来——背景调查,这道他最不可控的关卡。
而现在,需要等待背调电话。
手机屏幕亮起的那一刻,林晨正在厨房里洗中午用过的碗。水龙头哗哗地流着,他手上沾着泡沫,瞥见屏幕上那个陌生的鹏城本地座机号码,心脏猛地一跳。
来了。
他把湿漉漉的手在围裙上胡乱擦了两下,深吸一口气,才按下接听键。
“您好,请问是林晨先生吗”?电话那头是一个年轻女性的声音,语速平稳,带着hR特有的那种既礼貌又疏离的职业感。
“是的,我是”。林晨尽量让自己的声音听起来平静。
“林先生您好,我是天启科技的hR,我姓王。关于您面试的资深后端开发工程师岗位,我们这边已经完成了技术面试评估,现在进入背景调查阶段。需要和您确认几个信息,并获取您前公司直属上级和hR的联系方式,方便我们进行核实”。王hR的话清晰直接,没有任何寒暄。
林晨的心悬到了半空。背景调查,求职路上最后一道,也是最不可控的一道关卡。他报出了前公司hR总监李敏的联系方式,以及自己离职前那位已经调去其他部门、但还算保持联系的前技术经理的电话。每一个名字和号码报出时,他都在脑子里快速过一遍:这些人会怎么说?李敏那个出了名的公事公办,会不会实话实说?前经理呢,虽然关系尚可,但毕竟不是直属上级了……
“好的,记录好了”。王hR顿了顿,“另外,还需要跟您核实一下您的离职原因。您在面试时提到是公司业务调整,部门整体优化,对吗”?
“是的”。林晨回答得很快,手心却有些出汗。裁员,这两个字在职场里并不光彩,哪怕是大环境使然。他担心对方会深究,会质疑是不是他个人能力或表现有问题才被“优化”掉。
“明白了。我们会在1-3个工作日内完成背调,有结果会第一时间通知您。请注意保持电话畅通”。王hR的语气依旧没有太多波澜,“如果背调通过,我们会进入最终的薪资沟通环节”。
“好的,谢谢”。挂了电话,林晨才发现自己刚才一直不自觉地屏着呼吸。他靠在厨房冰凉的瓷砖墙面上,看着窗外下午略显沉闷的天空。南山区密集的楼宇轮廓在薄雾中若隐若现,就像他此刻的前景。
接下来的两天,时间仿佛被拉长了。
每一次手机震动,都让他神经紧绷。他尽量让自己沉浸在吴恩达的机器学习课程里,敲着python代码,尝试理解那些关于梯度下降、损失函数的公式和图表。但注意力总是不由自主地飘向静默的手机。他甚至开始有点后悔,当初离职时,是不是应该更“艺术”地处理一下和前同事、特别是hR的关系?比如多请顿饭,多说几句好话?
焦虑像潮水一样,在学习的间隙不断涌上来。他计算着存款的消耗速度,看着记账软件里房贷扣款成功的通知,心头沉甸甸的。乐乐兴趣班的费用也该交了,又是一笔不小的开支。苏婉虽然什么都没说,但晚上备课的时间明显更长了,台灯常常亮到深夜。他知道,妻子也在默默分担着压力。
第三天下午,林晨正在调试一个简单的线性回归模型,试图用房价数据预测趋势——这算是他把AI学习和自己那点投资兴趣结合起来的初步尝试。手机又响了,还是那个座机号码。
他几乎是秒接。“喂,王小姐您好”。
“林先生,背景调查我们已经完成了”。王hR的声音这次似乎稍微松快了一点点,“您的前公司hR李敏女士证实了您是由于公司整体业务收缩,您所在的跨境电商事业部进行人员优化而离职的,属于公司层面的裁员行为。您的前技术经理也对您过往的工作能力和职业态度给予了正面评价”。
林晨感觉堵在胸口的那块大石头,瞬间被移开了一大半。他不由自主地挺直了背:“谢谢,麻烦你们了”。
“不客气,这是流程”。王hR话锋一转,“那么,接下来我们可以谈谈薪资期望了。您在面试登记表上填写的期望年薪是120万人民币。根据我们公司的薪资架构,以及这个岗位的级别,我们初步评估的预算范围大概在年薪70万到90万之间,包含绩效和年终奖。不知道您这边是否有调整的空间”?
70到90万。林晨的心又沉了一下。距离他的底线期望100万,还有差距,更别说他最初坚持的120万了。但比起之前那些连谈薪机会都没有的面试,这至少是一个可以讨价还价的起点。
他迅速冷静下来。不能露怯,也不能死咬。“王小姐,这个预算范围我了解了。不过,这个期望值是我基于过去十年的经验积累、技术能力,以及目前市场行情和家庭经济压力综合考量确定的。我在面试中也向技术总监详细阐述过我对高并发系统架构的理解和项目经验,我相信我的能力能够匹配甚至超越这个岗位的要求。当然,我也理解公司有薪资体系,我愿意就具体的薪资结构,比如底薪、绩效比例、年终奖月数、股票期权等细节,进行更深入的沟通”。
他把早就准备好的说辞,用一种平和但坚定的语气抛了出去。既表达了立场,又展现了愿意谈判的灵活性。
电话那头沉默了几秒,似乎是在记录或思考。“好的,林先生,您的情况和想法我这边记录了。我需要和我们部门的招聘负责人以及技术面试官再沟通一下。有进一步的消息,我会再联系您”。
“好的,期待您的消息”。
再次挂断电话,林晨长长地呼出一口气。
背景调查通过了,这关总算过了。但薪资,又是一道艰难的坎。70-90万,如果最终能谈到85万以上,税后实际到手,加上苏婉的工资,勉强能覆盖房贷、生活、孩子教育和基本开支,但想要快速积累资本或者应对突发情况,依然捉襟见肘。
他走到阳台,点燃了一支烟——失业后这坏习惯有点复萌。烟雾缭绕中,他望着楼下小区里奔跑玩耍的孩子,还有提着菜匆匆回家的老人。普通的,充满烟火气的生活。而他,一个三十五岁的男人,却在这里为了一份工作的薪水,斤斤计较,忐忑不安。
他知道自己不能退让太多。那不仅仅是钱,某种程度上,也是对他过去十年职业生涯价值的一种确认,是对他未来信心的一种支撑。如果轻易妥协,他怕自己以后在面对其他压力时,也会习惯性地弯腰。
可是,如果对方就是坚持预算呢?他还有多少时间和资本去等待下一个“可能”?
掐灭烟头,林晨回到电脑前。屏幕上,那个简陋的房价预测模型还在运行,生成了一条略显粗糙的趋势线。他看着那条线,忽然想起自己正在学的机器学习里,有一个概念叫“损失函数”,用来衡量模型预测值和真实值之间的差距。优化算法,就是不断调整参数,让这个“损失”最小化。
他现在的处境,不也像在优化一个复杂的“人生模型”吗?技术能力、薪资要求、家庭负担、时间成本、市场行情……都是参数。裁员是已经发生的“真实值”,而他要找到最优解,让未来的“损失”最小,收益最大。
仅仅依靠一份工作薪水,这个模型的“收益”上限似乎一眼就能看到天花板。他盯着屏幕上自己写的几行爬取股票数据的代码,一个模糊的念头再次浮现:或许,他需要引入一个新的“变量”,一个不完全依赖于雇佣关系的收入“特征”。
这个念头让他精神微微一振。他关掉课程视频,打开了券商交易软件,看着那一片绿油油、偶尔夹杂几点红的自选股列表,陷入了沉思。
窗外,天色渐渐暗了下来,鹏城的夜晚即将降临,无数盏灯火会依次亮起,其中一盏,还在等待着确定的归宿。
第28章 儿子的再次安慰
下午与天启科技hR那通关于薪资的电话,像一块浸了水的棉花,堵在胸口,闷得慌。
70到90万。
这个数字在他脑子里盘旋了一路。平心而论,对于一个非管理岗的技术职位,在当下的市场环境里,这不算差,甚至比很多同龄人被裁后能找到的待遇要好。但距离他心里的那条线——那条由房贷、家庭开销、未来不确定性以及那点可笑的自尊心共同划出的期望薪资——还差着一截。
更让他难受的,是那种被标价、被衡量、然后被摆在一个“合理区间”里的感觉。三十五岁,十年经验,曾经独立负责过百万级用户的项目模块,如今他的市场价被清晰地定义在七十到九十万之间。仿佛他过去十年积累的价值,就浓缩成了这个冰冷的数字区间。
林晨走进书房,关上了门。他靠在椅子上,闭上眼睛,想将那些关于薪资、谈判、未来规划的嘈杂声音暂时屏蔽掉。失业这几个多月来,每一次面试,无论成功与否,结束后都会带来一种深深的疲惫,不是身体的累,而是心气被反复磋磨后的乏力。
“爸爸”。
门被轻轻推开一条缝,乐乐探进半个小脑袋,眨巴着大眼睛看着他。
林晨睁开眼,勉强挤出一个笑容:“乐乐,怎么了”?
“爸爸,你不开心吗”?乐乐推开门,小心翼翼地走进来,仔细看着林晨的脸。
小孩子的心思有时候敏锐得可怕。林晨愣了一下:“没有啊,爸爸挺好的”。
“哦”。乐乐似懂非懂地点点头,却没有离开,而是走到林晨身边,仰着小脸看他。
林晨看着儿子清澈的眼神,感觉到身边的小人儿动了。过了一会儿,乐乐转身哒哒哒地跑出书房,很快又哒哒哒地跑回来,手里拿着他最心爱的那辆红色遥控小汽车,背在身后,神秘兮兮地站到林晨面前。
“怎么了乐乐”?林晨有些疑惑。
乐乐把小手从身后伸出来,把那辆他平时视若珍宝、连妈妈都不许碰的小汽车,郑重其事地放到林晨手里。车漆被擦拭得锃亮,轮胎上还沾着在小区玩时粘上的细沙。
“爸爸,给你玩”。乐乐的小表情异常认真。
林晨彻底愣住了:“给爸爸?你不是最宝贝这辆车吗”?
“嗯,我最喜欢它了”。乐乐点点头,然后仰起小脸,逻辑简单直接,“所以我要把它送给你。妈妈说过,把自己最喜欢的东西给别人,别人就会开心。爸爸你不开心,那你玩我的小汽车就会开心了”!
他顿了顿,又补充道:“它跑得可快了!还会亮灯!你玩它肯定会开心的”!
林晨看着儿子清澈见底的眼睛,又看看手里这辆被孩子精心保护的小汽车,喉咙像是被什么东西猛地堵住了,酸涩的感觉从鼻腔直冲眼眶。他张了张嘴,却发不出任何声音。
这辆小汽车,在乐乐的小世界里,是他的全部宝藏,是他每天睡前都要抱着看一会儿的珍贵玩具,是他和小朋友们炫耀的资本。而现在,这个小家伙,毫不犹豫地把它拿出来,要送给看起来“不开心”的爸爸。
成年人世界里那些复杂的算计、价值的衡量、面子的顾忌、未来的焦虑……在这一辆被孩子体温焐热的小汽车面前,显得那么苍白,那么可笑,又那么沉重。
房贷月供一万二?存款还有三十来万但坐吃山空?面试薪资谈不拢?三十五岁职业危机?
所有这些压得他喘不过气的巨石,在这一刻,似乎都被儿子那双小手,轻轻地、笨拙地,推开了一点点缝隙。缝隙里透进来的,不是解决问题的具体方法,而是一道温暖的光。
这道光告诉他,无论他在外面被定义成什么价格,贴上什么标签,遭遇什么挫败,在这个家里,他永远是乐乐眼里那个需要被安慰、值得用全部“宝藏”去换他开心的爸爸。
林晨猛地伸出手,将还有些懵懂的儿子紧紧搂进怀里。他把脸埋在儿子柔软散发着儿童洗发水清香的头发里,双臂用力,像是要抓住这浮世中唯一确定不移的锚点。
“爸爸”?乐乐被抱得有点紧,小声叫了一下,但很乖地没有挣扎,反而也用小手拍了拍林晨的背,模仿着平时妈妈安慰他的样子,“爸爸不哭哦,小汽车给你玩”。
林晨深吸一口气,将眼眶里汹涌的热意死死压了回去。不能在孩子面前哭。他是爸爸,是这座小房子的支柱之一。
“爸爸没哭”。他的声音从乐乐发间传出,带着一点不易察觉的沙哑,“爸爸是高兴。乐乐真乖,真懂事”。
他松开儿子,双手扶着乐乐小小的肩膀,看着他的眼睛,无比认真地说:“这车爸爸不能要,这是乐乐最喜欢的宝贝,要自己留着玩”。
“可是……”乐乐看着被塞回自己手里的小汽车,有点着急,“我想让爸爸开心”。
“乐乐关心爸爸,想帮爸爸,这就是让爸爸最开心的事情了”。林晨努力让自己的笑容更自然、更明亮一些,“比一百辆小汽车都让爸爸开心。真的,爸爸现在特别特别开心”。
他说的是真心话。那股沉甸甸压在心口的郁气,虽然还在,但已经被另一种更坚实、更温暖的东西托住了。那是对家人的责任,也是从家人那里获得的无条件支持。苏婉深夜的陪伴和理解,乐乐此刻纯真的“倾囊相助”,都成了他疲惫灵魂的补给站。
“真的吗”?乐乐将信将疑。
“真的,你看爸爸是不是笑了”?林晨扯开嘴角,做了个夸张的笑脸。
乐乐仔细看了看,终于也笑了,小心翼翼地抱着小汽车:“那……那我先收起来。等爸爸下次不开心的时候,我再给你玩”!
“好,一言为定”。林晨伸出小指。
“拉钩上吊,一百年不许变”!乐乐郑重其事地勾住,完成了这个庄严的仪式。
这时,苏婉端着菜从厨房出来,看到父子俩凑在一起拉钩,笑着问:“你们俩秘密约定什么呢”?
“秘密”!乐乐抢先喊道,宝贝似的跑回房间放他的小汽车去了。
林晨站起身,走向厨房帮忙端菜。经过苏婉身边时,他低声快速说了一句:“谢谢”。
苏婉侧头看他,眼神温柔:“谢什么”?
“没什么”。林晨摇摇头,没再解释。有些情绪,有些感动,彼此明白就好。
餐桌上,灯光温暖。乐乐叽叽喳喳地说着幼儿园的趣事,苏婉微笑着倾听,偶尔给儿子夹菜。林晨吃着饭,看着眼前这一幕,内心渐渐平静下来。
天启科技的offer,接还是不接?接了,薪资落差带来的不甘和现实压力如何平衡?不接,下一个机会在哪里?空窗期继续拉长,家里的储蓄还能支撑多久?
这些问题依然存在,一个都没有解决。但此刻,林晨心里却少了许多焦躁。儿子的那辆小汽车像一记温柔的棒喝,敲醒了他。他的奋斗,他的坚持,甚至他暂时的落魄和焦虑,最终的归宿不就是为了守护眼前这盏温暖的灯,这张无忧无虑的笑脸吗?
既然目标是明确的,那么路径上的坎坷,似乎也就不那么可怕了。谈判可以继续谈,技术可以继续学,路子可以继续找。他有手有脚,有积累了十年的技术底子,还有一个无论顺境逆境都等着他回来吃饭的家。
怕什么?
深夜,乐乐早已睡熟。林晨坐在书房里,没有开灯,只有电脑屏幕发出幽幽的光。他再次点开了那个加密文件夹,里面是他近一个月断断续续收集的A股历史数据、一些开源的基础量化策略代码,以及零散的笔记。
之前看这些,多少带着点急功近利的浮躁,想着如何快速变现,缓解经济压力。现在再看,心态却有些不同。这不仅仅是一个可能的“创收副业”,更是一条需要沉下心来,用他的逻辑和能力去探索、验证的技术路径。就像他曾经攻克一个个项目难题一样。
他新建了一个文档,敲下标题:“智能投资辅助系统——可行性研究与初步架构”。
窗外,灯火依旧璀璨,这座城市从不缺少奋斗的故事,也从不缺少失意与挣扎。但在这个普通的居民楼小书房里,一个刚刚被五岁儿子用心爱的小汽车“安慰”过的父亲,悄悄点燃了内心另一簇火苗。
这簇火苗,源于责任,也源于爱。它可能很微弱,但足够照亮他接下来要走的,那段需要咬牙坚持的、孤独的学习之路。
第29章 纠结的抉择
邮件提示音响起时,林晨正对着电脑屏幕上新建的“智能投资辅助系统”文档发呆。
文档里还只有寥寥几个标题:数据源、策略模型、回测框架、风险控制。
他点开邮箱,是天启科技hR发来的正式录用通知。 职位:后端高级开发工程师。 薪资:月薪22,000元,13薪,另有项目奖金(视绩效而定)。 入职时间:一周内确认。 白底黑字的数字像针一样扎进眼睛。22K。和他预期的120万年薪,差距不是一星半点。折算下来,年薪不到30万,加上不确定的奖金,撑死35万。这甚至比他被裁员前的薪资还低了一截。
手机震动,是hR打来的电话,语气热情:“林先生,offer收到了吧?我们团队真的很期待您的加入。薪资方面,已经是这个岗位的上限了,您也知道现在市场行情……希望您能尽快确认哦”。 林晨含糊地应了几句,挂了电话。客厅里,儿子乐乐正专注地搭着积木,嘴里哼着幼儿园教的儿歌。苏婉在厨房准备晚饭,抽油烟机嗡嗡作响,传来炝炒白菜的香味。这平常的烟火气,此刻却让他心头沉甸甸的。 房贷每月雷打不动的一万二。家庭开销、孩子的教育费用、父母的赡养……30万的存款,在鹏城这个吞金兽面前,像阳光下迅速消融的冰块。
接受这份工作,意味着家庭财政能立刻止血,但也就此锁死在一个远低于他能力和预期的价位上。不接受,继续在求职市场沉浮,下一个机会在哪里?下一个offer会不会更差? “怎么了?脸色这么难看”。苏婉端着菜出来,敏锐地察觉到他情绪不对。 林晨把手机推过去,屏幕亮着那份offer邮件。苏婉擦擦手,拿起手机仔细看了一遍,沉默了片刻。 “先吃饭吧”。她没多说什么,转身去盛饭。 饭桌上气氛有些沉闷。乐乐叽叽喳喳说着幼儿园的趣事,林晨和苏婉都只是勉强笑着应和。
吃完饭,苏婉收拾碗筷,林晨陪着乐乐玩了一会儿,直到把孩子哄睡。
客厅里只开了一盏落地灯,光线昏黄。苏婉泡了两杯柠檬水,坐到林晨身边。 “你怎么想”?她问,声音很平静。 林晨揉着眉心,长长吐了口气:“我不知道。接了,心里憋屈,感觉被市场彻底否定了,十年经验就值这个价?不接……钱的压力就在那儿,一天比一天重”。 “憋屈,和实实在在的房贷、孩子的奶粉钱,哪个更难受”?苏婉看着他,眼神里有理解,也有现实的冷静,“我知道你心气高,技术也好,不该是这个价。但现实是,你失业快五个月了,这是第一个正经offer”。 “可这是个‘向下兼容’的选择”。林晨声音有些干涩,“一旦接受了,我的简历上就会出现一段薪资大幅下降的经历。以后再想跳,hR会怎么看我?他们会觉得我就只值这个价了。而且还只是后端高级工程师而不是资深,并且和我真正想深入的方向……”, “你想深入的方向是什么”?苏婉问,“是那个‘智能投资系统’” ?
林晨点点头,又摇摇头:“不完全是。那更像是一个可能的‘副业’或者技术验证。我最近查了很多资料,听张伟他们也聊了不少,感觉未来的核心赛道,一个是大模型,真正的AI;另一个是web3代表的下一代互联网架构。天启这个岗位,沾了点web3的边,不算最核心。而且薪资开成这样,也说明他们本身可能就在产业链的末端”。
他越说思路越清晰,焦虑中带着一种分析问题的本能:“接了这个offer,我大概率会被日常开发任务缠住,学习那些真正前沿的、有颠覆性的技术的时间会大大减少。等于用一份勉强糊口的工作,换来了未来三到五年可能再次落后的风险”。
苏婉安静地听着,手指摩挲着温热的玻璃杯壁。她是语文老师,对技术名词一知半解,但她听得懂丈夫话里的核心矛盾:眼前的生存,和长远的发展。 “那……如果我们能再撑一段时间呢”?她轻声说,“我是说,如果暂时不接,你专心去学你刚才说的那些‘核心’技术,家里的钱,精打细算,还能撑多久”?
林晨心里快速计算着:“我们存款34万。房贷一年14.4万,基本生活开销、孩子费用,一年最少8到10万。就算极度节俭,一年也得20万出头。30万,最多撑一年半,这还是不生任何病、没有任何意外的情况下”。
“一年半……”苏婉重复着这个数字,像是在掂量它的分量,“一年半,你能学到什么程度?能找到比现在好很多的工作吗”?“我不知道”。林晨坦诚得近乎残酷,“市场变化太快,AI的门槛现在看起来很高,竞争也激烈。我35岁了,从头学起……成功率有多少,我没法给你一个确切的数字。这本身就是一个风险极高的赌注”。
两人陷入沉默。窗外是鹏城不眠的夜景,远处科技园方向灯火璀璨,那里是无数机会与梦想的聚集地,也是无数人挣扎与焦虑的角斗场。近处楼宇的灯光映在玻璃上,明明灭灭。 “乐乐今天给了我一百块钱”。苏婉忽然说,嘴角泛起一丝温柔的笑意,“他说要给爸爸买开心。这孩子……” 林晨心头一暖,想起儿子那双清澈又认真的眼睛。
“林晨”,苏婉握住他的手,她的手很暖,“我知道你怕。怕选错了,怕辜负了我们,怕自己真的不行。我也怕。怕下个月房贷扣款的时候余额不足,怕乐乐想学点什么我们拿不出钱”。 她顿了顿,声音更坚定了一些:“但是,我更怕你为了眼前的安稳,把自己困在一个你不甘心、也看不到未来的地方。你还记得你刚失业那会儿,整夜整夜睡不着,不是因为钱,是因为觉得自己的技术生命好像突然到头了,那种恐慌吗”?
林晨当然记得。那是比经济压力更深的窒息感。 “如果接了这份工作,那种恐慌可能会暂时被每月到账的工资掩盖,但它不会消失,只会变成你每天上班时心里的一根刺”。
苏婉看着他,“你还年轻,技术底子那么好。乐乐的一百块钱买不来一个高薪offer,但它提醒我,也提醒你,这个家最宝贵的不是你马上能赚回来多少钱,而是你这个人,你的状态,你的心气还在不在”。
“你的意思是……”林晨喉咙有些发紧。 “我的意思是,我支持你再赌一把”。苏婉说,眼神亮亮的,“不是盲目地赌。是用一年的时间,像备战高考一样,去学你认准的东西。家里的事,开销,我来规划,我能再紧一紧。咱们一起扛过去。但如果……如果到了明年这个时候,情况还是不好,那时候我们再低头,接受现实,找个能糊口的工作,也不迟。至少我们试过了,你不后悔,我也不遗憾”。
林晨反握住妻子的手,握得很紧。他一句话也说不出来,只觉得胸腔里堵着的那块巨石,被这番话语温柔而坚定地撬开了一丝缝隙。
灯光下,苏婉的脸庞柔和而坚韧。这个和他一起在鹏城打拼了十年的女人,此刻展现出的魄力和支持,远超他的想象。
他躺在床上,睁眼看着天花板。脑海里像有两个小人在激烈辩论。一个拿着计算器,冷冰冰地列出每月固定的支出,嘲讽他的不切实际。另一个则挥舞着“transformer架构”、“零知识证明”、“扩散模型”这些闪着光的名词,描绘着一个技术突破后海阔天空的未来。
辗转反侧间,他拿起手机,下意识地点开了股票软件,又关上。打开那个新建的“智能投资辅助系统”文档,看着空荡荡的页面。或许,苏婉说的“技术变现”,这条路真的该认真考虑了?哪怕先从最简单的数据爬虫、策略回测开始? 凌晨四点,鹏城下起了淅淅沥沥的小雨。
他起身走到阳台,点燃一支烟(失业后偶尔复吸的坏习惯)。雨丝飘进来,带着凉意。远处的地平线开始泛起一丝灰白。他想起张伟上次吃饭时说的话:“web3这边机会是有,但泡沫也大,真正硬核的岗位不多。不过你要是能把AI和区块链结合的点想明白,那就不一样了”。 AI + web3?智能投资系统算是一个结合点吗?还是太浅了? 雨渐渐停了。天光微亮。
林晨掐灭烟头,做了一个决定。明天开始,不,今天开始,重新制定学习计划。目标不再仅仅是“找到一份工作”,而是“系统性地掌握AI与web3的核心交叉领域,并探索可行的技术变现路径(智能投资系统作为首个验证项目)”。 他回到书房,打开电脑,在文档的第一行郑重地敲下:“目标:六个月内,完成机器学习基础、深度学习框架(pytorch)、智能合约开发(Solidity)的系统学习,并搭建投资系统数据与回测基础框架”。
他知道这条路布满荆棘,也知道自己押上了家庭未来一年的缓冲期。但此刻,比起接到22K offer时的憋闷,他心中更多是一种破釜沉舟后,反而清晰起来的决绝。 天色大亮时,他收到张伟发来的一条微信链接,是一个关于“去中心化AI计算网络”的前沿技术论坛预告,地点就在南山科技园。 “这周末的,有点意思,去听听”?张伟问。 林晨回复:“去。谢谢”。 他关上手机,看着窗外彻底苏醒的城市。纠结并未完全消失,但抉择已下。
剩下的,就是沿着这条选定的、未知道路,一步一步,走下去。
第30章 拒绝offer
那一夜,林晨纠结到失眠了。
今天他拒绝了天启科技的offer,回复邮件时手指原本很稳,却在点击“发送”按钮的瞬间微微停顿了半秒,仿佛在最后确认这个动作的不可逆性。随着屏幕上的进度条一闪而过,“发送成功”的提示弹出,22K的安全网被他亲手撤掉了。也就是在那一刻,久违的、空落落的恐慌感席卷而来。
他靠在椅背上,长长地吐出一口气,胸腔里那股憋了整整一周的浊气,似乎随着这口气排出去了一些。 解脱感是有的,但紧随其后的,是更清晰、更具体的焦虑。
书房的窗帘拉着,挡住了鹏城午后过于热烈的阳光。电脑屏幕的光映在他脸上,明暗不定。书桌上摊开着那晚和苏婉一起计算的那张A4纸,上面密密麻麻的数字像一群无声的蚂蚁,啃噬着刚刚升起的些许轻松。
三十来万存款,一万二房贷,加上生活费,乐乐幼儿园的学费……苏婉说得对,满打满算,一年多。这不是一个模糊的“一段时间”,而是一个精确的、正在倒计时的沙漏。每过一天,沙粒就少一点。
他拿起手机,屏幕解锁,壁纸是乐乐去年在莲花山公园放风筝时笑得眼睛眯成缝的照片。孩子的笑容纯粹而充满希望,像一束光,照进此刻有些灰暗的心境。正是为了守护这样的笑容,他才不能轻易低头。 “天启科技”的offer邮件还静静地躺在收件箱里。22K,十三薪,期权画饼。
如果退回十年前,刚毕业那会儿,这算是不错的起点。但现在,他是林晨,三十五岁,有十年经验,有家庭,有每月雷打不动一万二的支出。这个数字,不是起点,而是一个需要奋力挣扎才能避免的下滑点。接受它,意味着默认自己十年的积累只值这个价,意味着未来几年很可能被锁死在类似的薪资区间和业务范畴里,更意味着他向现实妥协,放弃了对那个“120万”目标以及背后所代表的职业尊严和可能性的最后坚持。
代码可以骗人,但逻辑不会。市场的逻辑,行业的逻辑,个人价值的逻辑,此刻在他脑海里异常清晰。
web3和传统互联网后端,技术栈和思维模式有重叠,但核心差异巨大。他现有的优势在于系统架构、稳定性和工程经验,但区块链的共识机制、智能合约安全、token经济模型,这些才是未来价值所在。
天启给的岗位,更像是一个用旧经验维持新瓶装旧酒业务的角色,学习空间有限。 “用一年时间,赌一个更高的可能性”。他低声重复了一遍那晚和苏婉达成的共识。声音在安静的书房里显得有些空洞,但眼神却逐渐聚焦。
突然,手机震动起来,一个陌生的鹏城本地号码。 林晨心头一跳,大概猜到了是谁。他清了清嗓子,按下接听,尽量让声音听起来平稳:“喂,您好”。 “林先生您好,我是天启科技的hR张薇”。电话那头传来一个干练的女声,语气带着职业化的温和,“我们刚刚收到了您关于录用通知的邮件回复。首先,非常感谢您参与我们公司的面试流程,并走到了最后一步”。标准的hR话术开场。林晨“嗯”了一声,等待下文。 “对于您最终的选择,我们感到有些意外,也觉得很遗憾”。张薇的语气里确实透着一丝不解,“在之前的面试反馈中,几位技术面试官对您的工程能力和项目经验评价都是很正面的,认为您非常适合我们后端高级开发工程师的这个岗位。所以,方便冒昧问一下,您主要出于哪些考虑,最终决定不接受这个offer呢?是我们哪里做得不够好,或者您对岗位、团队有什么疑虑吗?我们非常重视每一位候选人的反馈”。
问题来了。林晨早有心理准备。拒绝offer后,尤其是走到终面的候选人,hR通常会询问原因,用于内部复盘。他需要给出一个得体、真实但又不至于得罪人的理由。 “张薇你好,感谢你们的认可和跟进”。林晨措辞谨慎,“首先,绝对不是因为贵司或团队有什么问题。面试过程中,我能感受到技术的专业性和团队的活力。我拒绝的原因,更多是出于个人长远的职业规划考虑”。他停顿了一下,组织语言:“我仔细研究了岗位Jd和未来业务方向。这个岗位的核心,似乎更多是利用我过往的后端经验,去维护和优化一个基于现有服务中台,对于新技术涉及可能不会太深。而我个人,在经历了之前的工作后,非常希望下一个阶段能更深入web3的核心技术栈和业务逻辑,甚至希望能有机会参与从零到一的、更具探索性的项目”。
他说的基本是实话,只是隐去了薪资这个最关键也最敏感的因素,将理由包装成对技术深度和业务前景的追求。这在技术圈里,是一个体面且常见的说法。 电话那头沉默了几秒,似乎张薇在消化和记录。然后她的声音再次响起,多了些理解的味道:“明白了,林先生。您是希望寻找一个技术挑战更大、更能接触核心模块的机会。感谢您这么坦诚的反馈,这对我们未来的岗位设计和人才吸引很有帮助。不得不说,您对自己的规划很清晰”。 “清晰谈不上,只是不想再走弯路”。林晨苦笑一下。 “那么,林先生,如果未来我们这边有更符合您期望的、偏向底层或创新业务的岗位开放,是否方便我们再联系您呢”?张薇展现了专业的素养,开始为未来留有余地。 “当然,随时欢迎”。林晨也给出积极的回应。行业圈子不大,留个善缘没坏处。
“好的,那再次感谢您的时间。祝您早日找到心仪的平台。再见”。 “再见”。
电话挂断。书房重新陷入寂静。 和hR的沟通比他预想的要平和顺利。对方没有纠缠,也没有试图用任何条件挽回,这反而让林晨更加确信自己的决定是对的——如果对方真的非常看重他,至少会尝试沟通薪资或职责范围。这种干脆的“遗憾但尊重”,说明他在对方的价值评估体系里,并非不可替代。 这很正常,但也让他心头掠过一丝凉意。
三十五岁,在就业市场上,容错率正在急剧降低。每一次拒绝,都可能是在消耗本就有限的“被选择”机会。 他甩甩头,把这种消极的念头压下去。既然选择了破釜沉舟,就没有回头路,只能往前看。
打开电脑,调出昨晚制定的“六个月学习与探索计划”。文档的第一行写着粗体的标题:【转型攻坚:从传统后端到AI+web3交叉领域】。下面分成了几个模块:
1. 核心基础夯实(2个月): 系统性学习机器学习(吴恩达课程)、深度学习基础,重点掌握pytorch框架。同时完成一个Solidity智能合约入门项目。
2. 方向探索与项目实践(3个月): 深入研读去中心化机器学习、联邦学习相关论文。尝试将简单的机器学习模型与区块链智能合约结合,设计并实现一个原型,比如……一个基于链上数据预测Gas价格波动的小模型?或者更贴近他最初想法的,一个非常简陋的、单因子量化回测框架?
3. 求职准备与输出(1个月):整理项目,撰写技术博客,针对性投递AI或web3领域的岗位。 计划很粗略,但有了方向,心就不那么慌了。他知道,最大的挑战不是学习本身,而是在没有收入、存款持续消耗的压力下,保持高效的学习状态和清晰的头脑。 他点开第一个任务项附带的链接,一门经典的机器学习课程。视频开始缓冲。
就在这时,手机又震动了一下,是微信。 林晨拿起来一看,是张伟发来的消息。 “晨哥,明天下午那个‘去中心化AI计算网络’的论坛,别忘了啊。地点在南山科技园南区,发你定位了。听说这次有几个真搞技术的大佬过来,不是纯忽悠概念的,值得一听。我大概两点到,门口碰头”? 论坛?对了,早几天张伟提过。林晨看了看日程,明天下午确实空白。他本来打算全天啃书学习。 去,还是不去? 学习计划刚开始,时间宝贵。但张伟说“有真搞技术的大佬”,或许能听到一些前沿的思路,甚至认识一些人。他现在缺的不仅是知识,还有对这个新兴领域的直观感知和行业人脉。
犹豫只持续了片刻。他手指敲击屏幕回复:“收到,谢谢伟哥。明天下午两点,定位处见”, 关掉微信,他重新将目光投向电脑屏幕上已经开始播放的课程视频。讲师正在用英文讲解监督学习的基本概念,语调平缓。 林晨深吸一口气,拿起旁边的笔记本和笔。
窗外的鹏城,车流如织,这座城市的节奏永远不会为谁的驻足而放缓。而在这一方小小的书房里,一个三十五岁的男人,在拒绝了眼前可见的稻草后,开始为自己编织一艘或许能驶向更广阔海域的船。 第一步,从听懂每一个陌生的术语开始。
第31章 老同事的消息
第二天下午两点,南山科技园。
午后的阳光毒辣地泼洒在玻璃幕墙上,折射出刺眼的光。林晨站在论坛的入口处,被扑面而来的冷气激了一下。这里人头攒动,比起传统互联网峰会那种西装革履的严肃,这里更显年轻、躁动,空气里弥漫着咖啡味和昂贵的香水味。
手机震动,微信弹出张伟的消息:“晨哥,我到签到处了,你进来了吗”?
林晨回复:“刚进门,马上到”。
收起手机,他穿过人群。几分钟后,他在巨大的蓝色海报展板前看到了张伟。五年没见,张伟胖了一圈,发际线高了点,但精神极好,穿着一件印着dAo Logo的黑色极客t恤,手腕上戴着一块显眼的各种链上数据闪动的智能手表。
“晨哥!这里”!张伟一眼认出了他,热情地挥手,大步走来给了他一个用力的拥抱,“可算把你盼来了”。
两人寒暄着走进会场。台上,一位年轻的演讲者正激情澎湃地讲着“去中心化算力网络如何重构AI未来”,背后的ppt上满是复杂的架构图和代币模型。
听了半小时,林晨大概摸清了门道。虽然术语新颖,但底层的技术逻辑并没有脱离分布式计算的范畴。
中场休息时,张伟拉着林晨到了会场外的露台吸烟区。这里相对安静,只有几个正在用英语打电话谈融资的人。
“怎么样?听出点门道没”?张伟递给林晨一瓶水,眼神灼灼。
“技术底座还是那些东西,p2p网络、共识算法、容器化调度”。林晨拧开水,实话实说,“但商业模式完全变了,听起来确实很有想象力”。
“不仅是想象力,是实打实的红利”。张伟收起了刚才的嬉皮笑脸,身体微微前倾,压低了声音,“晨哥,既然你已经从那破地方彻底脱身了,就没必要再往那种夕阳行业里看了”。
林晨愣了一下,随即苦笑。他点点头:“是啊,本想着能多撑几年,结果‘毕业’来得比想象中快”。
“出来得正是时候”!张伟一拍大腿,语气笃定,“我早跟你说过,那家公司跨境电商业务到头了,技术栈又老,待着就是温水煮青蛙。既然现在锅砸了,反而是老天爷给你换个活法的机会”。
“话是这么说,但这‘青蛙’跳得实在狼狈”。林晨走到露台边缘,看着楼下车水马龙的滨海大道,自嘲地叹了口气,“房贷车贷,孩子上学,哪一样都不是靠‘换个活法’这种虚词儿能填平的”。
“所以我才急着约你出来”。张伟也收敛了笑意,神色变得认真,“晨哥,咱认识这么多年,你技术底子多厚我最清楚。你现在缺的不是能力,是风口。听兄弟一句劝,别去卷那些传统大厂的p7、p8了,来web3搏一把”。
张伟看着林晨侧脸的白发,沉默了两秒,突然直截了当地开口:“晨哥,来web3吧。只要你愿意点头,我这边好几个朋友的公司抢着要人”。
“我对这块……毕竟没经验”。林晨有些迟疑。
“经验?什么是经验”?张伟指了指会场里面,“里面那些讲ppt的所谓‘架构师’,很多连分布式系统的cAp定理都讲不清楚。你不一样,你搞了十年高并发、高可用,这才是web3基础设施最缺的东西!现在的公链、Layer2、deFi协议,哪个不需要极致的稳定性和扩展性?你那些‘传统’手艺,在这里就是降维打击”。
林晨心里一动。这和他之前面试互联网大厂时被嫌弃“年纪大、技术栈老”的遭遇截然不同。
“关键是回报”。张伟伸出两根手指,然后又收回半根,“以你的资历,如果去带技术团队,做底层协议开发,年薪基本在这个数起步——一百五十万。这还没算token期权,如果项目发币且上了大所,那收益可能就是几倍几十倍的翻”。
“一百五十万”?林晨拿着水瓶的手猛地一紧,呼吸微微一滞。
“这还是保守估计”。张伟看着他的眼睛,认真地说,“晨哥,我知道你稳,但现在的环境,守着那点‘安全感’就是慢性自杀。这个行业确实乱,泡沫也大,但只有在泡沫里,咱们这种搞技术的才能用最短的时间赚到别人一辈子的钱。你是想继续去卷那几个大厂的螺丝钉岗位,还是来这里搏一把”?
喧闹的人群声仿佛退远了,林晨耳边只剩下“一百五十万”这个数字在回荡。
这不仅仅是一个数字,它是好多年的房贷,是孩子未来的教育基金,是他摇摇欲坠的中年尊严的支撑点。
“你需要补的东西不多”,张伟见他动摇,趁热打铁,“Solidity语言,两周就能上手;以太坊虚拟机(EVm)原理,你这种老兵一看就懂。关键是思维要转过来,理解去中心化和token经济”。
林晨沉默良久,终于开口,声音有些沙哑:“你手头有靠谱的项目吗?我是说,不是那种纯圈钱跑路的”。
“有,所以我才叫你来”。张伟咧嘴一笑,拿出手机,“我刚推给你几个猎头名片,还有两个正在招cto的deFi项目白皮书。你回去研究一下,觉得行,让猎头立马安排内推”。
……
傍晚,林晨回到家。苏婉正在厨房忙碌,孩子的动画片声音充满了客厅。
那是一种温馨但脆弱的平静。
林晨没有立刻回卧室,而是站在阳台上,看着鹏城刚刚亮起的万家灯火,长长吐了一口气。下午的那场对话,像一颗石子投入了他原本想要平静死磕AI的心湖,激起层层涟漪。
回到书桌前,电脑屏幕上还停留在昨晚暂停的深度学习课程界面。
兴奋感退去后,理性的钟摆开始回荡。
高薪背后是什么?是一个极其年轻、波动剧烈、监管尚未明晰的行业。他三十五岁了,有家庭,有不能输的底线。
但……这难道不是一个机会吗?一个用他过去十年积累的技术功底,去换取更快摆脱财务困境的机会?哪怕这个行业有泡沫,只要他在泡沫破裂前站稳脚跟,积累足够的资本,是不是就能获得更大的安全垫?
林晨关掉课程视频,打开了一个新的文档,手指在键盘上敲击出清脆的声响。
【web3转型可行性调研与学习路径(备选)】
核心概念突击:去中心化、共识机制(pow/poS)、智能合约原理。(结合今日论坛内容消化)
技术栈迁移:
语言:Solidity(类JS,复用编程经验)。
架构:EVm机制、Layer2扩容方案(optimism/Arbitrum)。
工具:Remix, hardhat。
市场验证:利用张伟的人脉,本周内接触猎头,验证薪资真实性与岗位要求。
他把这个新文档保存,缩小窗口,放在了屏幕左侧。而右侧,依然是那个名为“python/深度学习六个月计划”的文件夹。
两条路,开始并行出现在他面前。
一条是面向未来的AI,看似更“正统”,但路途遥远,竞争激烈;一条是当下火热的web3,看似“投机”,但能解燃眉之急,回报惊人。
他不需要立刻二选一。在接下来的几个月里,他决定尝试“双线程并发”。用张伟提供的机会去检验自己在web3领域的市场价值,同时用系统性的自学去夯实AI的基础。
多一条路,就多一分希望,也多一分选择的主动权。
林晨看了一眼窗外彻底黑下来的天色,给张伟发了一条微信:“资料收到了,谢了兄弟。我研究一下,这几天就给你答复”。
发送完毕,他重新点开了《Solidity智能合约开发指南》的pdF,同时在笔记本上写下了第一行笔记。
书房里,键盘敲击的声音再次响起。那是一种在迷茫中重新找到节奏,在压力下开始主动出击的声音。
第32章 研究Web3
鹏城的午后,阳光透过书房的百叶窗,在书桌上切出一道道明暗相间的光栅。林晨坐在电脑前,屏幕的光映着他专注的脸。距离和张伟参加论坛已经过去两天,他消化了那些信息,决定不再被动等待,而是主动出击,深入这个被张伟称为“充满泡沫与机遇”的 web3 世界。
他首先打开了几个主流的科技资讯网站和开发者社区。输入“web3”关键词,海量的信息瞬间涌来。标题五花八门:《web3:下一代互联网的范式革命》、《一夜暴富还是价值回归?解读 NFt 狂潮》、《dAo:去中心化自治组织的未来工作模式》……扑面而来的新名词让他有些眼花。兴奋之余,他也保持着程序员特有的警惕——任何被过度炒作的概念,底下往往藏着复杂的技术逻辑和未必坚实的根基。
他深吸一口气,决定从最基础的开始,点开了一篇被多次引用的长文《why web3 matters》。作者从互联网的演进史讲起:web 1.0 是只读的,信息单向传递;web 2.0 是可读可写的,用户创造内容,但平台中心化掌控数据和价值;而 web 3.0 的核心是“可拥有”(ownable),即基于区块链技术,实现用户对自身数据、数字资产乃至社区治理权的真正拥有。
“所有权……区块链……”林晨默念着这两个词。前者触动了他作为个体在互联网巨头面前近乎透明的无力感,后者则是一个他听过很多次但从未深究的技术名词。他点开了维基百科和几个技术博客,开始啃“区块链”这个硬骨头。
分布式账本、共识机制(pow、poS)、密码学哈希、不可篡改、去中心化……一个个概念像拼图一样在他脑中逐渐拼接。作为一个有十年后端开发经验的老手,他很快理解了其技术原理的精妙与工程实现的挑战。“本质上,是一个在不可信环境中建立信任的系统”,他总结道,“用算力或权益投票的成本来保证账本的一致性。这想法很 Geek,也很烧钱”。想起比特币挖矿消耗的巨额电力,他眉头微皱。
理解了基石,他开始浏览具体的应用领域。deFi(去中心化金融)让他眼前一亮——借贷、交易、衍生品,传统金融的功能试图用智能合约自动执行,去除中介;NFt(非同质化代币)则更贴近他之前的跨境电商领域;还有 GameFi、SocialFi 等各种“x-Fi”的组合。看得他既感新奇又觉荒诞:“金融属性太强了,很多像是披着不同外衣的投机游戏”。
但这毕竟是张伟指出的高薪方向。林晨切换思路,开始搜索“web3 开发技术要求”。招聘信息汇总起来,一个不同于传统互联网的技术栈轮廓逐渐清晰:
核心语言:Solidity。 这是以太坊上编写智能合约的主流语言。语法看起来有点像 JavaScript,但涉及大量的 Gas 费用优化以及安全考量。
交互库:web3.js / Ethers.js。 连接前端 dApp 与区块链网络的桥梁。
底层知识: 对以太坊架构的理解,包括节点、交易、事件日志及 ERc 标准(如 ERc-20、ERc-721)。
工具链: hardhat 开发框架、Remix 在线 IdE、metamask 钱包及 Alchemy 节点服务。
林晨拉过笔记本开始罗列。左边是他熟悉的 Java Spring cloud、mySqL、Redis、Kafka、K8s;右边则是全新的 Solidity、EVm、truffle、IpFS。对比之下,差异显着。传统开发集中在服务器端业务逻辑,而 web3 更像是在一个公开、缓慢但坚不可摧的“世界计算机”上编写具有金融属性的程序。
“几乎是从头学起”,他揉了揉太阳穴,“但底层逻辑还是编程。安全性是对有限资源 Gas 的极致优化,这是关键差异点”。他并不畏惧学习新语言,真正的挑战在于思维模式的转变。
他翻出了以太坊白皮书以及 Uniswap、pound 等知名项目的文档。这些文档充满了数学公式和机制设计。他泡了杯浓茶,强迫自己沉浸进去。他欣赏 Uniswap 用恒定乘积公式实现自动做市商的简洁巧妙,也惊叹于借贷协议中利率实时调整的模型。“有意思”,他敲着桌面,“这不仅仅是编程,是微观经济模型在代码中的实现”。
但同时,他也嗅到了浓烈的风险气息。合约漏洞导致数亿美元被盗的新闻不时弹出,监管的不确定性如同达摩克利斯之剑。这是一个技术、金融、理想主义与欺诈混杂的狂野西部。
窗外的天色不知不觉暗了下来,鹏城湾的方向亮起了点点灯火。林晨关掉喧嚣的行情网站,让自己冷静下来。他需要的不只是一份工作,而是一个能持续积累、相对稳健的立足点。
“双线并行”,他想起自己的决定,“AI 是面向未来的确定性趋势,web3 是存在高薪窗口的冒险机会”。他为 web3 划出了固定的学习时段:第一步,一周内掌握 Solidity 基础语法并部署“hello world”;第二步,透彻理解 ERc-20 标准代码;第三步,搭建 hardhat 本地开发环境。
目标明确后,心里的杂乱被压了下去,取而代之的是熟悉的专注。他打开编辑器,敲下了第一行代码: pragma solidity ^0.8.0; contract helloworld { string public greeting = hello, web3! }
代码很简单,但他知道,这是一个新世界的入口。书房里只有键盘轻微的敲击声,窗外的鹏城灯火璀璨。
就在他准备结束今天的学习时,手机屏幕亮了一下,是张伟发来的微信: “晨哥,这周六下午在南山科技园有个小范围的 web3 技术沙龙,几个项目方的 tech Lead 会来聊聊实战中的坑。我有两张票,一起来?顺便介绍两个朋友给你认识”。
林晨看着信息,手指在屏幕上方停顿了几秒。线下沙龙,直接接触一线从业者……这比独自看文档要高效得多。
“好,时间地点发我”。他回复道。
心里那根探索的弦,又被轻轻拨动了一下。
第33章 加密货币的世界
周六早晨,鹏城难得的清爽天气。
林晨坐在书桌前,电脑屏幕上同时开着三个窗口:左边是 Solidity 的官方文档,中间是张伟昨晚发来的技术沙龙邀请函,右边则是一个崭新的交易所注册页面。他先点开了沙龙邀请函的链接。地点在南山科技园的一家共享办公空间,时间下午两点,主题是“deFi 协议的安全审计实践”。林晨看了眼手机银行里仅剩的二十多万的存款,咬了咬牙——这种线下活动,是他目前接触行业最直接的途径。
“得去”。他自言自语,在日历上做了标记。
但去之前,他想先做点功课。张伟在微信里随口提过一句:“老林,你要真想了解 web3,光看代码不够,得实际体验一下。至少注册个交易所,买点币感受感受”。于是就有了右边那个注册页面。
林晨选择了国内用户较多的一家交易所——bN。注册流程比他想象中繁琐:邮箱验证、手机绑定、设置密码、安全提示问题……最后还要进行 KYc(了解你的客户)认证。他拿起身份证,对着摄像头拍照上传。系统提示需要等待审核。
“比开股票账户还麻烦”。林晨嘀咕着。但转念一想,这或许正是区块链世界的特点——在追求去中心化的同时,入口处却不得不依赖中心化的身份验证。这种矛盾感让他觉得有趣。
等待审核的间隙,他翻开了交易所的帮助文档。术语扑面而来:现货交易、合约杠杆、Staking 质押、ApY 年化收益率、Gas 费、钱包地址、助记词……
“有点意思”。林晨的编程本能被激活了。他开始在笔记本上梳理逻辑:交易所是中心化平台,用户把币存在平台,交易记录在平台数据库里,这其实和传统金融的券商很像;真正的去中心化交易应该是在链上完成的,比如 Uniswap,但那种操作对新手不友好;钱包才是用户真正掌握资产的地方,私钥即所有权;Gas 费是以太坊网络的“燃油费”,每次链上操作都要支付……他越梳理越清晰。这就像学一门新编程语言:先理解核心概念,再掌握生态工具,最后才能写出可用的程序。
半小时后,KYc 审核通过。林晨看着账户里空空如也的资产页面,深吸一口气。接下来要充值了。他点开“购买加密货币”选项,系统提供多种方式:银行卡、微信支付、支付宝……他选择了最熟悉的支付宝。
“买多少呢”?林晨犹豫了。家庭财务紧张,家庭每月支出近两万,存款只剩二十多万。失业金还没领几个月,每一分钱都得精打细算。但张伟说得对——不实际体验,永远隔着一层。
“就当交学费”。他下定决心,输入金额:2000 元。
支付成功。几秒钟后,账户里显示到账:280 USdt(泰达币,一种与美元 1:1 锚定的稳定币)。林晨盯着那个数字,心里有种奇异的感觉。这 2000 元现在变成了一个数字凭证,存在于某个他看不见的数据库里,但理论上,他可以用它换取任何上架交易的加密货币。
他点开交易对列表:btc/USdt、Eth/USdt、bNb/USdt……上百个交易对的价格都在实时跳动。林晨先点开了比特币(btc)。当前价格: USdt。他快速心算:280 USdt 大概能买 0.0066 个 btc——连百分之一都不到。
“真贵”。他感叹。但转念一想,比特币总量只有 2100 万枚,目前已经挖出 1900 多万枚,稀缺性或许是价格支撑的逻辑之一。
他又点开以太坊(Eth)。价格:2250 USdt。这个便宜些,280 USdt 能买接近 0.12 个 Eth。林晨没有急着下单。他先点开了 btc 的 K 线图——这是他从股市里带来的习惯。日线图展开,一根根红绿蜡烛上下排列。他切换到技术指标页面:mA5、mA10、mA30 均线缠绕,mAcd 在零轴附近徘徊,RSI 在 50 左右震荡……
“和股票的技术分析逻辑差不多”。林晨敏锐地发现了这一点。价格波动、成交量、市场情绪、技术形态——这些金融市场的通用语言,在加密货币世界依然适用。但不同之处也很明显:第一,7x24 小时不间断交易,没有节假日;第二,波动剧烈,日内振幅经常达到 5% 以上;第三,消息驱动特别明显。
“这是一个高度敏感、高波动、全球化的市场”。林晨在笔记本上写下结论。
研究了半个多小时,他终于决定下单。林晨选择了限价单——程序员对“确定性”的偏好。他设置了两个订单:买入 0.0006 个 btc,限价
USdt;买入 0.002 个 Eth,限价 2200 USdt。
下单后,订单进入挂单列表。林晨刷新页面,眼睛盯着订单状态。几秒钟后,Eth 订单先成交了。价格击穿了 2200,账户里 USdt 减少了 4.4,多出了 0.002 Eth。又过了两分钟,btc 订单也成交了。
现在,他的账户里有 250 USdt、0.0006 btc 和 0.002 Eth。林晨靠在椅背上,长长吐了口气。就这么简单?但隐隐的不安也随之而来。
“如果交易所跑路了怎么办”? “如果密码忘了怎么办”? “如果手机丢了怎么办”?
这些风险在传统金融里都有成熟的解决方案,但在加密货币世界,责任更多地落在了用户自己身上。
“这就是去中心化的代价”。林晨明白了。权力下放的同时,责任也下放了。他认真地开启了谷歌验证器,设置了资金密码,并离线备份了助记词。
时间已近中午。林晨刷新了一次持仓页面。btc 涨到了 ,Eth 涨到了 2260。浮盈扩大到了约 0.432 USdt,折合人民币三元左右。林晨心跳微微加速。不是因为这三块钱,而是因为他真切地感受到了这个市场的脉搏——那种 7x24 小时不停歇的全球资金流动。
他关掉交易页面,新建了一个 Excel 表格,开始记录买入标的、价格、数量以及浮盈。
“得用数据说话”。这是林晨的习惯。
12 点 47 分,该准备出发去南山科技园了。起身前,他最后看了一眼窗外。物理世界有房贷、有家庭压力、有中年危机。数字世界有代码、有加密算法、有去中心化梦想。而他站在中间,需要找到连接两者的桥梁。
手机震动,张伟发来微信:“老林,下午沙龙见。对了,你注册交易所没?可以小资金体验下,但千万别上头。这行暴富神话多,但亏光的更多”。
林晨回复:“注册了,买了点 btc 和 Eth。明白,只是体验学习”。
放下手机,他穿上外套。走到门口时,又忍不住回头看了眼电脑——虽然已经关机,但他知道,在那个数字世界里,他的资产还在随着市场波动。这种感觉既虚幻又真实。
“代码可以骗人,但逻辑不会”。林晨想起自己常说的这句话。
在加密货币的世界里,代码就是逻辑,逻辑就是规则。而他要做的,是理解规则,然后决定是否参与游戏。林晨拉开门,走了出去。
第34章 张伟的引荐
第二天上午,阳光透过百叶窗,在书房地板上切出明暗相间的条纹。林晨刚结束晨间的加密货币盘面观察,正准备打开 Solidity 教程视频,微信提示音接连响起。是张伟发来的消息。
“老林,昨天的沙龙感觉咋样?有没有被那帮年轻人忽悠着去冲土狗币”?文字后面跟着个坏笑的表情。
林晨笑着打字回复:“还行,开了点眼界。土狗币就算了,我这把年纪,心脏受不了那种过山车”。
“明智”。张伟秒回,“对了,正事。上次不是跟你提过看 web3 的机会吗?我这边有个挺靠谱的,做 NFt 交易平台的,叫‘链艺坊’。他们 cto 是我前前公司的师兄,人很实在,技术也硬。公司刚完成 A 轮,正在扩招,尤其缺有传统互联网经验又能快速上手 web3 的中高级开发”。
林晨的心跳快了一拍。他放下手机,深吸一口气,才继续回复:“NFt 交易平台……具体做什么方向的?国内合规吗”?
“问得好”。张伟直接拨了语音过来,声音透着熟悉的爽快,“他们总部注册在新加坡,主要做海外市场,支持多链。平台定位是‘精品 NFt 画廊’,想走高端路线,跟那些炒图片的野鸡平台区别开。国内有运营和技术团队,在南山区科技园那边。合规方面,他们很谨慎,只做技术开发和海外运营支持”。
林晨走到窗边,看着楼下小区里遛狗的老人:“技术栈呢?主要用哪些”?
“后端还是 Go 和 Java 居多,毕竟要处理高并发交易。前端 React。核心是智能合约,用 Solidity,部署在以太坊、polygon、Solana 这些链上。他们现在最头疼的就是合约安全审计和性能优化,还有平台整体的架构稳定性——NFt 交易涉及链上链下数据同步,挺考验设计”。张伟顿了顿,“我觉得你的背景挺合适。十年全栈,电商高并发场景扛过,学习能力又强。怎么样,有兴趣聊聊吗?我可以直接把你简历推给 cto,先初步沟通一下”。
机会来得比预想中快。林晨没有立刻答应,而是问:“薪资范围大概多少?你了解吗”?
电话那头沉默了两秒。“说实话,web3 公司薪资相差很大。这家算正规军, A 轮融了不少,应该不会太抠。但肯定比不上你之前期望的 120 万。我估摸着,资深开发或者技术负责人的岗位,总包可能在 80 到 100 万之间。当然,具体得看面试情况和你的职级”。
80 到 100 万。距离心理预期还有差距,但比起之前石沉大海的求职,这已经是看得见摸得着的可能性。更重要的是,这是一个进入新兴行业的切口。
“行,麻烦你引荐一下”。林晨下了决心,“我把最新简历发你”。
“够意思”!张伟笑道,“我这就跟师兄说。对了,他们 cto 姓赵,技术出身,不喜欢虚的。沟通的时候,多聊技术实现和你的思考,少谈情怀和行业趋势,他更看重实际问题解决能力”。
挂断电话,林晨立刻打开电脑,将最近自学 web3 的经历补充进简历。他没有夸大,而是如实写了:正在系统学习区块链原理、 Solidity 语言及智能合约开发,已完成几个简单的 demo 合约(如投票合约、简易拍卖合约),对 NFt 标准(ERc-721, ERc-1155)有初步理解,并开始关注 Layer2 扩容及跨链技术。同时,他强调了十年全栈经验中对系统稳定性、高可用架构和性能优化的积累。
简历发过去不到半小时,张伟就回了消息:“搞定。赵 cto 对你简历挺感兴趣,尤其你电商背景里关于交易系统、支付对账和风控的经验。他今晚八点有空,约个线上会议先聊聊,你看方便不”?
“方便”。林晨回复。他看了眼时间,离晚上八点还有几个小时。
这几个小时,林晨没再继续看教程。他打开“链艺坊”的官网和海外平台,仔细研究其产品功能、支持的区块链、上线的 NFt 系列特点。又搜索了关于 NFt 交易平台常见的技术挑战:如何确保链上资产与平台展示的实时一致?如何设计高效的批量上链、交易撮合与结算流程?智能合约安全漏洞主要有哪些类型? Gas 费优化有哪些方案?他将自己能想到的问题和可能的解决思路一一罗列。
晚上七点五十,林晨提前进入视频会议链接。八点整,屏幕另一端准时出现一个面容清瘦、戴着黑框眼镜的中年男人,背景像是个简洁的办公室。
“林晨你好,我是赵哲,‘链艺坊’的 cto。张伟跟我提过你”。对方声音平和,没有寒暄,直接切入主题,“我看你简历,之前在跨境电商做了十年,主要负责后端和系统架构”?
“是的,赵总”。林晨坐直身体,语气平稳,“主要负责过交易核心系统、库存与订单中心、支付清结算平台,也参与过几次大促期间的性能优化和容灾演练”。
“嗯。电商交易系统,尤其是跨境,对数据一致性和系统稳定性要求很高”。赵哲推了推眼镜,“你觉得,这套经验里,哪些能迁移到 NFt 交易平台的建设上”?
林晨早有准备:“我觉得核心相似点在于对‘交易’本身的理解。无论商品还是 NFt,都涉及资产转移、状态同步、记录不可篡改。电商里我们通过数据库事务和对账系统来保证最终一致性。在 NFt 交易中,链上环节由智能合约保证,但链下依然需要高效系统处理搜索推荐、订单管理,并确保状态同步准确。我过去的架构经验应该能直接应用”。
赵哲点了点头,表情看不出满意与否,但显然在认真听。“那么,差异和挑战呢?你觉得最大的不同是什么”?
“最大的不同,是‘信任基石’的变化”。林晨思考着说,“传统电商信任平台背书, NFt 交易信任代码和合约。这对技术提出了新要求:一是智能合约必须极度安全,代码即法律;二是系统设计必须考虑区块链特性,比如交易确认延迟、 Gas 费波动、不同链的性能差异。这需要开发者深入理解区块链底层”。
“说得不错”。赵哲终于露出一丝极淡的笑意,“你最近在自学 Solidity,感觉如何?难点是什么”?
“语法上手不算太难”。林晨坦诚道,“但思维模式的转变是难点。写智能合约首先要考虑安全性,因为部署后极难修改。每一个变量的修改都要推敲是否会被恶意利用。另外,对 Gas 消耗的优化意识也是全新的”。
“安全意识是第一位”。赵哲赞同道,“我们团队在合约审计上的投入很大。如果你加入,初期需要具备代码审查和安全风险识别的能力”。他话锋一转,“你对 NFt 交易平台目前的用户门槛高问题,有什么看法”?
林晨结合调研给出了技术侧思考:“核心是隐藏区块链的复杂性。我们可以做更友好的钱包集成体验,通过元交易或 Layer2 方案让用户感知不到 Gas 费。目标是让用户像使用传统 App 一样便捷”。
沟通持续了四十多分钟。最后,赵哲说:“今天聊得挺愉快。你的基础扎实,方法务实。这样,如果你有兴趣,我安排下周进行正式技术面试,主要考察编码和系统设计。你看时间上”?
“没问题,我随时可以配合”。林晨压下心头的雀跃,沉稳应答。
“好。具体时间 hR 会通知你”。
屏幕暗下去,书房里重新安静下来。林晨靠在椅背上,长长地呼出一口气。掌心居然有些潮湿。虽然还没到谈薪那一步,但至少,门被敲开了。
他给张伟发了条微信:“刚聊完,赵总约了技术面试。谢了兄弟”。张伟很快回复:“可以啊!技术面是硬仗,好好准备”!
放下手机,林晨看着窗外鹏城的夜景。失业以来的沉重感,似乎被今晚这四十分钟的对话撬开了一丝缝隙。路还长,面试只是开始。他重新点亮屏幕,打开了代码编辑器。
夜还深,战斗才刚刚打响。
第35章 恶补区块链
清晨六点半,城市尚未完全苏醒,只有环卫车的音乐偶尔从远处飘过。书房的窗户刚透进一丝灰白的光,像是一层薄薄的霜,覆盖在杂乱的书桌上。林晨揉了揉干涩的眼角,他的眼睛里布满了细微的红血丝,那是连续熬夜的勋章,也是焦虑的注脚。
屏幕的冷光映射在他略显清瘦的脸上。此时,他的浏览器上同时并排开着三个截然不同的网页:左侧是以太坊官方文档(Ethereum.org),密密麻麻的英文术语像阵列整齐的士兵;中间是知名技术社区的区块链专区,讨论帖里充斥着“mEV攻击”、“Layer 2扩展”等黑话;右侧则是一个课程购物网站,几个色彩斑斓的课程封面正闪烁着“限时特惠”的红字。
距离与链艺坊 cto 赵哲约定的正式技术面试,只剩下最后五天。
对于一个三十五岁、有着十年传统互联网开发经验的工程师来说,五天时间从零跨越到专业,听起来像是个疯狂的笑话。但林晨没有退路。失业的这几个月在招聘软件上投出的几十份简历,大多石沉大海。在这个“大厂毕业生”满街走的寒冬,赵哲递来的这根橄榄枝,不仅是一份工作的机会,更是他证明自己尚未被时代抛弃的唯一抓手。
“代码可以骗人,但逻辑不会”。他盯着屏幕,低声重复着这句他带新人时常挂在嘴边的话。现在面对这个全然陌生的领域,这句话成了他唯一的定心丸。区块链的核心不就是分布式账本和共识逻辑吗?底层逻辑搞通了,代码只是表达。他安慰自己。
但他面对的现实是——时间太紧了。
他快速浏览着几个售价不等的课程:《Solidity 智能合约从入门到实战》、《以太坊 dApp 开发全栈指南》、《deFi 协议解析与安全审计》……每个封面都宣称“零基础三天速成”、“包教包会”。
林晨没有急着下单。十年的编程生涯让他养成了一种近乎冷酷的警惕:越是宣称简单的东西,背后的坑往往越深。他跳过那些“讲师真帅”、“受益匪浅”的五星好评,专门去翻带图的长评。
“第三章讲 Gas 费优化太浅了,完全没提到内存对齐,实际项目里这点知识根本不够,部署上去就是烧钱”。 “项目实战部分还在教怎么用老版本的 truffle 框架,现在主流都改用 hardhat 了,讲师根本没更新课件”。
林晨一边看一边在白纸上勾勒关键点。他需要的是“实战经验”,是那种在代码修罗场里摸爬滚打出来的真知灼见,而不是照本宣科的语法说明。最后,他选定了两门课:一门 399 元的语法与安全实践课,重点讲重入攻击等安全坑;另一门 599 元的 dApp 实战课,涵盖了从合约编写到前端 web3 调用的完整链路。
下单付款时,支付宝余额显示的数字让他手指微微顿了顿。这两门课加起来近一千块,在现在的经济状况下,这足够家里一周的菜钱。
“投资自己,是最不可能亏本的投资”。他低声自语,声音很轻,像是在说服那个躲在客厅沙发阴影里、正为下个月房贷发愁的那个“家庭支柱”林晨。他点击了确认支付,转账成功的清脆提示音,像是一声发令枪响。
第一天,林晨没有写一行代码。他从最基础的原理啃起。
他把自己关在书房里,手机调成静音。分布式账本、哈希指针、默克尔树(merkle tree)、poS 共识机制……这些概念他之前在新闻里零散看过,但这次是系统性地串联。他发现多年开发经验带来的优势开始显现。当讲师尝试解释区块链的结构时,他在笔记本上写下:Linked List + cryptography;当讲师谈到智能合约的原子性时,他立刻在旁边标注:database transaction (AcId)。
这种降维打击式的理解速度让他稍微找回了点自信。然而,这种自信在进入 Solidity 语言学习后,迅速被另一种巨大的不安全感所取代。
Solidity 的语法虽然类似 JavaScript 或 c++,但其背后的底层思维模式却是颠覆性的。在传统 web 开发中,发现 bug 只要发个热修复补丁就行,但在区块链的世界里,代码一旦部署(deploy),它就变成了某种“数字法律”。如果合约有漏洞,它就像一座已经浇筑完成的钢筋混凝土大桥,任何微小的裂缝都可能导致数亿资产的崩塌,且无法撤回。
“这根本不是写代码,这是在造保险箱”。他对着屏幕喃喃自语。他开始在笔记本上疯狂画图,那是合约状态变量与函数修饰符(modifier)之间的复杂关系图。他必须弄清楚 internal 和 private 的细微差别,必须理解为什么 uint256 永远优于 uint8。
第二天下午,林晨决定开始动手。他在 VS code 里创建了第一个 .sol 文件。
这是一个极其简单的合约:一个“数字存钱罐”。功能只有三个:存钱、查询余额、所有者提款。不到五十行代码,但在敲下每一个字符时,林晨都感到一种前所未有的压力。
他反复检查了三四遍: “构造函数正确设定了 owner 吗?如果没有,任何人都能把钱提走”。 “提款函数加了 require(msg.sender == owner) 权限校验吗”? “转账用的 transfer 方法在 0.8.0 以上的版本里还是最推荐的吗”?
当他在本地开发环境 hardhat 上输入部署命令,终端跳出“contract deployed at: 0x...”的那一刻,一种久违的、纯粹的编程快乐从心底涌了上来。那是十几年前,他刚上大学第一次写出“hello world”时的那种满足感。他给合约转入了 1 个测试以太币,然后点击提款函数,看着余额精确地变回原样。
那是创造了一个能独立运行的逻辑体的成就感。哪怕它如此简单,它也是在这个混乱的世界里,完全受他掌控的一块净土。
第三天和第四天,林晨进入了真正的深水区:一个具有投票功能的去中心化应用(dApp)。
这个项目的复杂度比存钱罐高出了几个量级。他不仅要写复杂的逻辑处理,还要处理前端页面,用 web3.js 库去连接 metamask 钱包,处理各种复杂的签名和异步状态。
他遇到了两个几乎让他崩溃的坎。
第一个是 Gas 费优化。在以太坊上,每一行代码的运行都要花钱。他最初写的代码因为使用了大量的循环,部署费用高得惊人。为了省钱,他开始没日没夜地钻研如何减少状态变量的修改。他学会了用 view 和 pure 标记函数,学会了如何利用位运算来存储数据,甚至学会了手动在内存中缓存数组。
第二个是 异步处理的噩梦。区块链不是即时的。一个交易发出后,需要等待矿工打包。前端页面不能一直卡着,他必须设计出一套复杂的加载状态:pending(处理中)、confirmed(已确认)、Failed(失败)。
第四天深夜,时针已经指向一点。他试图在投票合约里添加一个“委托投票”功能——用户可以把自己的票权转给另一个人。这涉及到映射(mapping)的嵌套逻辑。如果处理不好,就会产生循环委托:A 委托给 b,b 委托给 c,c 居然又委托回了 A。
林晨的手指在键盘上飞速敲击,烟灰缸里的烟头已经堆成了小山。他写完又删掉,删掉又重写。当他终于用一个递归检查函数锁死这个逻辑漏洞时,大脑已经因为过度运转而隐隐作痛。
他看着代码,还是觉得不够优雅。那种追求极致的工程洁癖让他想继续改,但他看了一眼日历,理智告诉他:面试在即,他需要的是全局的视野和对关键风险点的把控,而不是在这里钻一个微小功能的牛角尖。
他合上电脑,走到阳台。深夜的城市很静,只有远处的路灯散发着昏黄的光。他想,区块链不就是这样吗?在透明中寻求信任,在博弈中寻求共识。而他现在,正在和自己的焦虑达成共识。
第五天,面试前一天。这是最后冲刺的时刻。
林晨决定完成最后一个里程碑:把自己写的合约部署到真实的以太坊测试网(Sepolia)上,而不仅仅是本地模拟器。
他在“测试币水龙头”网站上像个乞丐一样申请了 0.1 个测试 Eth。等待测试币到账的间隙,他给自己泡了一杯极其浓郁的红茶。茶叶在杯底翻滚,像极了他这几天的心境。
他想起了赵哲在电话里说的那句话:“我们需要能快速学习,并且能把扎实的基础原理应用到新场景的人。区块链不是魔法,它只是更严谨的计算机科学”。
这五天,林晨感觉自己就像一块被扔进高效溶剂的海绵。累吗?这种累几乎是生理性的。焦虑吗?每当想起下个月的账单,焦虑就会像潮水一样涌上来。但当他看着笔记本上密密麻麻的、从模糊变清晰的概念图,那种脚踏实地的获得感,暂时将所有的恐惧都压在了水面之下。
“叮”。电脑发出一声清脆的提示音。
测试币到账了。林晨坐直身体,深吸一口气,开始最后的部署流程。配置测试网节点、编译合约、估算 Gas……他点击了那枚名为“confirm”的蓝色按钮。
屏幕上,交易哈希(tx hash)显示出来,状态显示为黄色的“pending”。
那一分钟长得像是过了一个世纪。他盯着浏览器上的转圈图标,心脏跳动的节奏竟然和那个图标重合了。
几分钟后,状态变成了翠绿色的“Success”。合约地址生成,它像一颗电子尘埃,永久地刻在了全球无数台电脑共同维护的账本上。
林晨打开自己写的前端 demo,连接钱包,尝试发起第一次提案,并为自己投下了一票。
再次确认交易,等待。 “成功”。 前端页面跳出提示:“提案 1,总票数:1”。
虽然这个数据除了他自己没人关心,虽然那些测试币分文不值,但这一刻,林晨实实在在地感觉到,自己摸到了那道门的边缘。他不再是一个围观者,他成了这个新世界的一个微小的建设者。
关掉电脑前,他最后一次检查了准备好的资料:三页手写的原理笔记、整理好的常见智能合约漏洞清单、以及在 Github 上已经整理得整整齐齐的项目代码。
手机屏幕亮了一下,是妻子苏婉发来的微信。 “明天面试加油。乐乐今天问我,爸爸最近在学什么厉害的新魔法,为什么都不陪她玩。我说爸爸在给自己加魔力”。
林晨看着屏幕,眼眶微微发热。他回复了一个大大的拥抱表情,然后补充了一句:“明天面试完,带你们去吃好吃的”。
窗外,夜色正浓。林晨站在窗前,最后看了一眼那串复杂的合约地址。
他知道,明天的面试才是真正的考验。这五天的恶补只是让他拿到了一张入场券,赵哲那种级别的技术大佬,一眼就能看穿他的稚嫩。但他不再害怕了。
因为他已经证明了一件事:三十五岁的身体里,依然藏着二十五岁时的求知欲和学习力。
明天,他将带着这五天的疲惫与收获,去推开那扇属于他的、通往未来的门。他不再是站在门外茫然张望的人,他是已经握住了钥匙的行者。
第36章 Web3公司一面
上午九点半,南山科技园。
这里的空气似乎比其他地方流动得更快。林晨提前半小时抵达了链艺坊公司所在的写字楼。这座建筑外立面采用了大量不规则的几何切割,巨大的玻璃幕墙像是一面冷峻的镜子,清晰地映射着鹏城深蓝得近乎透明的天空,以及下方如蚁群般行色匆匆的白领。
林晨站在楼下,拉了拉衬衫的下摆。这件衬衫是他昨晚亲自熨烫的,平整的领口让他感到一种久违的庄重感。走进大厅,一股冷气扑面而来,前台背景墙是一块巨大的 LEd 屏幕,流动的区块链节点可视化图案像繁星般交织、扩散。这种极具视觉冲击力的“极客感”,让他这个在传统互联网摸爬滚打十年的老兵,既感到一丝新鲜,又隐隐觉得陌生。
他在休息区坐下,手里紧紧攥着打印好的简历和那本硬壳笔记本。笔记本的边缘已经微微磨损,那是过去五天他反复翻阅、在深夜里无数次记录下的见证。每一页都填满了密密麻麻的流程图、逻辑校验和对 Solidity 语法的各种避坑指南。
“林晨先生吗”?一位穿着印有公司 Logo 文化衫、看起来只有二十四五岁的 hR 走了过来,“请跟我来,赵总监已经在会议室等您了”。
穿过开放办公区时,林晨习惯性地观察着周围。这里的氛围与他熟悉的大厂完全不同:没有那种压抑的格子间感,工位宽敞且随意,随处可见的人体工学椅和昂贵的机械键盘。不少程序员的显示器上并不是熟悉的 IdE 编辑器,而是 Uniswap 的流动性曲线、Etherscan 的区块高度跳动,或者是某项协议治理的提案列表。
这里呼吸的是另一种数字货币的空气。
会议室的门推开,链艺坊 cto 赵哲正低头划动着平板电脑。他穿着简单的黑 t 恤,眼神锐利得像是一把手术刀。
“林晨?请坐。我是赵哲”。他没有多余的寒暄,直接切入正题,“前面我们已经简单聊过一次。这次我们深入聊聊。说说你最熟悉的系统架构,遇到过的最大技术挑战,以及你怎么解决的”。
这是林晨的舒适区。他略一沉吟,选择了曾主导重构的订单分库分表项目。
“那是三年前,我们承载的日订单量突破了千万级,原有的单库架构在 I/o 上出现了严重的瓶颈……”林晨从最初的性能压测讲起,详细阐述了分片策略的选择、如何在不影响业务的情况下实现平滑迁移,以及在分布式环境下如何利用 tcc 模式处理数据一致性。
赵哲听得很仔细,指尖偶尔在桌面上轻点。他突然打断追问:“在平滑迁移过程中,如果双写阶段出现了毫秒级的延迟,你怎么保证旧库和新库的最终一致性”?
林晨没有慌乱,这是他在无数个加班夜里复盘过的问题。他迅速给出了基于 binlog 校验和异步补偿机制的方案。
二十分钟的问答,像是一场高水平的传球练习。林晨感觉得到,自己十年的技术积淀正在一点点转化为对方眼中的信任。那种成熟开发者的稳重与逻辑缜密,是任何突击学习都无法模拟出来的。
赵哲放下笔,目光从平板电脑移到林晨脸上,语气变得微妙起来。
“你的技术基础非常不错,是典型的优秀后端架构师。但链艺坊做的是 web3,核心是去中心化逻辑。坦白说,我看你的背景,并没有实际的区块链项目经验。这几天你对这个领域深入了解了多少?”
林晨感觉到心跳快了一拍。这是决定成败的一问。
他没有试图用一些虚头巴脑的行业黑话来蒙混过关。他缓缓翻开那本笔记,将其推到赵哲面前:“坦白说,赵总,我是这五天通过突击、系统性学习进来的。过去 120 小时里,我强制自己完成了从分布式账本原理、共识机制到加密学基础的扫盲。然后我重点钻研了 Solidity,尝试去理解它和 Java 的思维鸿沟”。
他指着笔记上手绘的逻辑图说:“我写了一个简单的数字存钱罐合约,用来测试权限控制和重入攻击。然后我完成了一个基础的去中心化投票 dApp。但我知道,这只是皮毛。像 Gas 费深度优化、多签钱包集成、合约安全审计这些复杂领域,我目前只是初步了解概念”。
林晨合上笔记本,直视赵哲的眼睛,语气诚恳而有力:“但我拥有一个开发者最核心的资产——学习能力和工程直觉。我花了五年理解高并发,花了三年理解分布式,我有足够的动力在未来三个月内,把这些经验重塑到区块链开发中”。
会议室陷入了死一般的沉静。
赵哲拿起林晨的手机,征得同意后,熟练地打开区块浏览器。当他看到那串在 Sepolia 测试网上真实的合约创建记录时,嘴角微微上扬。
“五天”。赵哲把手机递还,“从零到能部署一个完整流程的测试合约,你的执行力超出了我的预期。重要的是你确实动手做了,而且你不仅知道‘怎么做’,还知道‘哪里不会’。这在现在的行业里很难得”。
他顿了顿,语气缓和了许多:“web3 迭代太快,昨天的最佳实践明天可能就是漏洞。你的后端经验在处理大规模系统稳定性方面,其实是我们急需的补丁。技术一面,我认为可以通过。接下来会有二面,我们要深度聊聊项目理解,以及……薪资期望”。
走出办公楼时,上午的阳光已经带上了灼热的质感。
林晨站在路边,长长地呼出一口气。第一关,过了。
但赵哲最后提到的“薪资期望”,像一根细小却尖锐的刺,扎在他的心里。他很清楚,链艺坊虽然是新锐,但未必愿意为一个“正在转型”的开发者支付 120 万的年薪。那是一个顶级架构师的价格,而他目前在 web3 领域,更像是一个高潜力的学徒。
回到家,林晨没有休息。他打开电脑,开始研究赵哲建议的 openZeppelin 合约库。正如赵哲所说,那是工业级的代码,每一行注释都透着严谨。对比之下,他自己前天写的代码简直像个漏风的筛子。这种从无知到发现新大陆的兴奋感,让他暂时忘却了疲惫。
然而,就在他沉浸在代码逻辑中时,桌上的手机震动了一下。
那是招聘平台的消息提醒:
“林先生您好,关注您的简历很久了。我们是大厂 t 集团旗下新成立的 AI 应用事业部。目前我们正在招募高级开发负责人,负责大规模大模型应用的架构落地。您的十年后端经验与我们的技术栈高度匹配,薪资方面我们会提供非常有竞争力的 package。不知您是否考虑聊聊?”
林晨盯着屏幕,呼吸渐渐变得急促。
t 厂,那是国内互联网的顶峰之一。AI 应用事业部,那是当下最炙手可热、也最“主流”的赛道。在那里的每一分钟,他都能发挥出自己积累了十年的最大产出,而不需要像现在这样,为了一个 Gas 优化问题死磕到凌晨。
一边是充满未知、甚至可能让他“降薪入行”的 web3 新领域,那里有着极致的去中心化理想和陡峭的学习曲线;
一边是背靠大厂、能迅速将多年经验变现、且同样处于技术前沿的 AI 赛道,那里有更稳定的保障和更清晰的晋升路径。
林晨靠在椅背上,转头看向窗外。鹏城的午后,天空明亮得让人睁不开眼。
他曾以为自己唯一的出路是向死而生,拼命挤进 web3 的门缝。可现在,另一扇金光灿灿的大门也向他缓缓敞开。
这五天的疯狂努力,似乎不仅给了他进军 web3 的钥匙,更意外地唤醒了他作为一个资深开发者沉睡已久的职业价值。
两个选择,两个时代。
后天是链艺坊的二面,而 t 厂的邀约也如影随形。林晨低下头,看着笔记本上那个手绘的、通往未来的逻辑图。他知道,人生的算法从未如此复杂。
每一个方向,都弥漫着未知的迷雾,但也同样闪烁着名为“希望”的光亮。
第37章 二面:联合创始人
链艺坊的办公室在南山科技园一栋不算起眼的写字楼里,但内部装修极富极客风格——裸露的工业风天花板,随处可见的绿植墙,开放式工位上摆满了多屏显示器。林晨坐在小型会议室里,能隐约听到外面讨论“Layer 2 Gas 优化”、“NFt 流动性池”的片段。
上一轮技术面通过后, hR 很快安排了这第二轮面试。一面是考察硬技能,而这一轮的面试官是公司的联合创始人—— Steven wang 。
林晨查过资料, Steven 是硅谷公链项目早期的核心开发,典型的“海归大牛”。面对这种人物,单纯展示代码能力恐怕不够。他昨晚又把链艺坊的技术博客翻了一遍,试图理解他们到底想构建什么。
门被推开,一个穿着灰色卫衣、戴着黑框眼镜的年轻男人走了进来,手里拿着一个飘出枸杞味道的保温杯。他看起来三十出头,比林晨还年轻几岁。
“林晨?我是 Steven ”。他笑容随意,没什么架子,“抱歉久等,刚在盯一个测试网部署”。
“王总您好”。林晨起身,略有些紧张。对方的气场和年龄形成的反差,让他一时拿不准该更恭敬还是更随意。
“坐坐,别客气”。 Steven 在林晨对面坐下,喝了一口水,“赵哲跟我聊了,说你基础很扎实。我们这行,经验是一方面,但更重要的是学习能力和对这件事的……信念感”。
“谢谢王总认可”。林晨坐直身体,“我也确实对 web3 很感兴趣,这段时间一直在学习”。
“嗯”。 Steven 点点头,目光落在林晨的简历上,却没翻开,而是直接问道:“那你学了这段时间,抛开具体技术,你觉得 web3 最核心的价值是什么?它到底要解决什么问题”?
果然。不问算法,直接上“价值观”拷问。林晨知道,对方想听的绝不是教科书上的标准答案。
林晨沉吟了几秒,缓缓开口:“我觉得,最核心的是‘可信的协作’和‘价值归属的重新定义’。互联网解决了信息传递的效率问题,但没解决信任问题。我们需要银行、大平台作为担保,而区块链试图构建一个担保人是代码和共识机制的系统”。
Steven 身体微微前倾,示意他继续。
“至于价值归属”,林晨想到自己十年电商经历里的利益博弈,“现在的互联网,价值大部分被平台捕获。 web3 通过通证经济,试图让价值的创造者和早期参与者能更直接地分享到增长红利。就像开发者可以直接从自己的代码应用中获得收益,而不再仅仅依靠工资”。
“说得不错”。 Steven 笑了笑,但眼神里的审视没放松,“那痛点呢?你觉得目前最大的障碍是什么”?
“用户体验和物理世界的连接”。林晨这次回答得快了些,“私钥管理对普通人太不友好, Gas 费和交易速度依然是门槛。更重要的是,很多项目还停留在‘金融游戏’层面。如何真正服务实体经济,比如版权确权、甚至像跨境电商中的支付信任问题,我觉得这是决定它能走多远的关键”。
Steven 点了点头,又问:“我们链艺坊目前聚焦在 NFt 基础设施层,你怎么看这个方向”?
林晨知道到了关键,必须结合对方业务:“我觉得很务实。 NFt 是目前最能被普通用户感知的入口。做基础设施层,比如更好的交易市场协议、跨链流动性方案,是在夯实赛道的基础,而不是追逐短期泡沫”。
会议室里安静了片刻。 Steven 手指轻轻敲着桌面,似乎在掂量林晨话里的分量。
“你刚才提到跨境电商的信任问题”, Steven 忽然换了个角度,“如果用区块链来改造,你觉得从哪里切入最可行”?
林晨精神一振:“支付和结算。传统跨境资金流转慢、手续费高。如果有一个基于稳定币的支付网络,结合智能合约实现条件支付——比如买家确认收货后货款自动释放,中间环节大幅减少。当然,这涉及合规等一系列复杂问题,但理论上非常契合”。
“理论到实践,距离很远”。 Steven 说。虽然语气里没有否定,但透着一种陈述,“不过,能结合原有经验看问题,思路是对的。我们不需要只会写合约的码农,我们需要能理解业务痛点,再用技术去探索解决方案的人”。
他放下保温杯,目光变得直接:“林晨,你 35 岁,从传统互联网转型过来,潜力我认可。但毕竟经验尚浅。如果加入我们,你可能需要从基础开发做起。薪资方面,恐怕很难匹配大厂的收入。你怎么看”?
终于谈到最现实的问题了。林晨感到心跳加速,他知道坦诚是关键。
“我理解”。林晨诚恳地说,“年龄和经验在技术领域是劣势,也是优势。优势是可以对问题有更全面的视角,更珍惜机会。薪资方面,我确实有家庭压力。但如果平台方向是我认同的,我愿意在合理范围内综合考虑,也相信自己的成长速度能很快匹配更高的价值”。
Steven 看了他一会儿,脸上露出一个轻松的笑容:“行,我大概了解了。你刚才聊的这些,说明你确实在思考,不是盲目追热点。这就够了”。他站起身,“后面 hR 会沟通具体细节。我们公司不大,但环境比较纯粹。当然,压力也不小,创业公司嘛”。
“明白,谢谢王总”。林晨也起身,心中一块石头暂时落地。
走出办公室,下午的阳光有些刺眼。林晨站在路边深吸了一口气。二面感觉不错,但 Steven 那句“距离很远”以及谈及薪资时的现实,也让他清醒。
手机震动,是链艺坊 hR 的微信:“林先生,恭喜通过二面!接下来是 hR 面,沟通薪资福利,时间安排在明天下午三点,方便吗”?
林晨回复确认,手指却不由自主地滑到了 t 厂那封 AI 面试邀请的邮件上。
真正的选择,似乎才刚刚开始。
第38章 薪资谈判
手机屏幕在略显凌乱的书桌上突兀地亮起,蓝光映照着林晨略显疲态的脸。来电显示是一个鹏城本地的固定号码。
此时距离林晨回复链艺坊 hR 的微信刚过去三个小时。这三个小时里,他其实什么都没干,只是盯着 t 厂那封 AI 部门的面试邀约邮件出神。窗外,深南大道的车流汇成一条永不停歇的河流,而他就像是一条搁浅在滩涂上的鱼,拼命扇动鱼鳃,试图嗅到一点湿润的水汽。
看到号码的一瞬,他的心跳不可抑制地快了一拍。作为一名在职场摸爬滚打十年的“老兵”,他太清楚这种效率意味着什么——这通常意味着用人部门的老大直接拍了板,流程正在被特事特办。
“喂,您好”。他清了清嗓子,身体不自觉地坐直,尽量让声音听起来平稳而专业。
“林先生您好,我是链艺坊科技的 hR 李经理”。电话那头传来一个干练的女声,带着一种互联网金融行业特有的利落节奏,“关于明天的 hR 面,Steven 刚才跟我特别交代过。他觉得您的技术底子非常扎实,可以省去一些繁琐的初级流程,直接先跟你通个气。他对您的评价很高,认为您转型的决心比单纯的技术堆砌更有价值。”
“谢谢”。林晨握紧了手机,指关节因为用力而微微泛白。
通过了!虽然只是口头确认,但失业五个多月以来,这是他收到的最清晰的一个信号。那五个多月里,他经历了从最初的“带薪休假”心态,到投出百余份简历石沉大海的焦虑,再到自我怀疑的绝望。而现在,一个实实在在的 offer 终于近在咫尺。
“我们了解到您上一份工作的薪资水平。”李经理开门见山,没有任何寒暄,“基于您的经验和面试表现,我们给出的是‘高级区块链开发工程师’岗位。在正式发邮件前,我想先听听您目前的预期?”
来了。这是职场中最关键的一场“心理贴身肉搏”。
林晨深吸一口气,脑海中浮现出 Steven 昨天在办公室里提到的“现实”。Steven 曾直白地告诉他,web3 行业虽然有泡沫,但那是给资本看的,对于转型的传统大厂人,公司给出的每一分钱都要看到产出。
他知道 120 万的年薪已成昨日黄花,现在的他不需要光鲜的头衔和期权画饼,他需要的是一份能让他重新起步、能让家庭财务状况不再恶化的支点。
“李经理,我认真考虑过”。林晨字斟句酌,语气中带着一种真诚的克制,“结合贵司目前的融资阶段和我跨赛道转型的背景,我的期望月薪是 38K”。
他报出了这个数字。38K,年薪约 45.6 万。这仅是他被裁前薪酬的三分之二左右。这个数字无法覆盖他曾经在私人银行配置的理财方案,无法支付苏婉原本计划的南极旅行,但这是他能给出的最“务实”的诚意,也是他保住中年人自尊的最后一道防线。
电话那头陷入了令人窒息的沉默。两三秒的时间,在林晨的感觉中却像是一个世纪。他能听到自己略显急促的呼吸声,手心已经渗出了细密的汗珠。
“38K……”李经理重复了一遍,语气里透出一丝为难,“林先生,坦白说,我们公司目前这个级别的薪资上限在 35K 左右。Steven 确实很欣赏您的潜力,也考虑到了您的资历,所以我们愿意直接给到您 35K 的月薪”。
林晨的心猛地跳了一下。35K,其实已经达到了他的心理底线。他几乎要脱口而出“接受”,但李经理紧接着抛出了附加条款:
“不过,因为您是跨赛道转型,这 35K 会附带一个为期三个月的试用期考核。您需要在这三个月内,独立负责一个去中心化金融(deFi)协议的核心合约模块开发。如果期满未能达成安全审计要求,或者出现重大逻辑漏洞,我们会重新评估岗位或薪资。这一点,需要您事先知情”。
这不仅是一份薪资,更是一场豪赌。这意味着林晨必须在九十天内,把过去十年积累的 Java、分布式架构经验,全部强行转化为 Solidity 代码。一旦失败,等待他的不仅是再次失业,还有职业生涯的彻底崩塌。
房贷、车险、双方老人的医疗备用金,还有苏婉每天假装不经意却又满含期待的眼神……这些重担像是一座无形的山,压得他几乎喘不过气。但眼前这艘名为“链艺坊”的小船,是他在茫茫大海中唯一能抓到的救生艇。
“我理解”。林晨的声音变得无比坚定,“我愿意接受这个挑战。我相信自己的技术基础能够达成目标”。
“好的”。李经理的语气明显轻松了下来,“具体入职细节明天下午三点在公司面谈。如果你没问题,待会儿我会先发一份正式的意向邮件给你”。
挂断电话,林晨在狭小的书房里挥动了一下拳头,用力地砸在空气中。那一刻,他感到的不仅是喜悦,更有一种“劫后余生”的虚脱感。
他点开邮箱,附件 pdF 很快加载出来。“月度基本工资:人民币 35,000 元(税前)”,那几行黑体字在电脑屏幕上熠熠生辉。
然而,喜悦的保质期短得惊人。
当他关掉 pdF 窗口,目光不自觉地再次移向收件箱里那封未读邮件——来自 t 厂(腾讯)AI 应用事业部的面试邀约。
这是一种极度荒诞且残酷的拉扯。一边是触手可及、虽然颠簸但能救命的草台班子;另一边是矗立在行业之巅、代表着这个时代最强技术浪潮的航空母舰。
如果是在三年前,林晨根本不会看链艺坊一眼。他这种级别的工程师,目标只会是 t 厂、b 厂或者A厂。t 厂的 AI 部门,那是目前全中国乃至全球最高端的实验室之一,薪资上限远非 35K 可比,那里有最好的显卡集群,最顶尖的算法科学家,以及足以写进简历、照亮后半生的背书。
可是,现在的他已经三十五岁了。
三十五岁的大厂面试,是一场充满恶意的考核。他不知道 t 厂的 hR 会如何看待他这五个月的职业断档,也不知道面试官会如何百般刁难他关于大模型落地的理解。相比于链艺坊的诚意,t 厂更像是一个高不可攀的梦境。
“如果是你,你会怎么选”?他对着空荡荡的书桌自言自语。
最终,现实的理智和男人的野心达成了某种微妙的妥协。他拿起手机,给苏婉发了条微信:“老婆,链艺坊那边给 offer 了。月薪 35K,虽然比以前降了不少,但稳住了。晚上回家细说”。
放下手机,他深吸一口气,强迫自己冷静下来,点开了 t 厂那封带有企鹅图标的邮件。他的手指微微颤抖,在回复框里敲下了最得体的词句:
“您好,感谢邀约。我对该岗位非常感兴趣。我本周时间均可,看您那边安排”?
他决定玩一场“时间差”的游戏。在正式签下链艺坊的劳动合同、在正式把那份赌约变成现实之前,他必须去看看那条大船离自己究竟有多远。哪怕只是为了让自己死心,哪怕只是为了去呼吸一口大厂那带有咖啡香气的空气。
做完这一切,林晨给老同事张伟的发了条微信。
“伟哥,晚上有空吗?我请你吃饭,老地方”。
“哟,这动静,是有喜事”?张伟接着又发了条微信,“怎么,被哪家大户人家收编了”?
“拿到链艺坊的 offer 了,但也收到了 t 厂 AI 部门的消息”。林晨感慨道,“心里有点没底,想听听你的意见”。
“行啊!t 厂都勾搭上了?可以啊林晨。晚上见面聊,我正好也想和你聊聊”。
林晨拉开了书房的窗帘。
此时正是傍晚,夕阳将整座城市涂抹成了灿烂的橘红色。那些高耸入云的写字楼在金光中显得格外神圣。林晨看着窗外,突然觉得那并不是钢筋水泥的森林,而是一个巨大的竞技场。
他曾经在这里迷失,在这里跌倒,而现在,他终于拿到了重新入场的门票。
他走进洗手间,仔细打理了一下已经有些日子没修剪的胡茬。镜子里的那个男人,虽然眼角多了几道皱纹,虽然眼神里少了几分轻狂,但那股属于工程师的冷峻和坚毅又重新聚拢了起来。
35K的月薪,三个月的生死考核,t 厂不可预知的挑战。
这一切都像是重担,但也像是燃料。林晨知道,无论最终踏上哪一条船,他的人生列车,在停滞了五个月后,终于又要缓缓驶出站台了。汽笛已经鸣响,剩下的,只有向前。
第39章 调查行业风险
窗外的鹏城科技园,霓虹灯在深夜依然闪烁。林晨坐在书桌前,那杯庆祝用的茶已经凉透。
兴奋劲儿过去后,一种职业本能让他冷静下来。三十五岁,失业五个月,好不容易拿到一个 offer —— 35K ,比预期低不少,但总算能缓解房贷压力。可为什么心里总有些不踏实?他重新打开电脑,屏幕蓝光映在脸上,先搜了搜“ web3 行业现状”。
搜索结果跳出来,林晨快速浏览了一份行业白皮书。报告里充满“去中心化金融”、“元宇宙基建”等词汇,但翻到风险分析章节,字句变得谨慎:
“……当前全球监管框架尚未统一,各国政策存在不确定性……” “……项目同质化严重,技术价值与金融泡沫需区分……”
林晨皱了皱眉。他关掉报告,在技术论坛里搜索“ web3 工作风险”。这次的信息更直接,一个匿名用户发帖:“入职某链游公司三个月,项目黄了,工资发了一半跑路,仲裁都找不到人”。
跟帖里有人回复:“现在很多 web3 公司注册在海外,实际运营在国内,法律上很模糊”。
林晨滑动鼠标滚轮,越看心越沉。他切换到新闻网站,搜索“区块链公司 暴雷”。页面刷新,跳出十几条相关新闻:《某数字藏品平台突然关闭,用户资产无法提取》、《警惕!以 web3 为名的资金盘项目卷走数亿元》。
其中一条新闻让林晨的手指停在触摸板上。那是三个月前的报道,一家做 NFt 平台的深圳公司,办公地点就在南山科兴科学园,距离链艺坊不到三公里。报道写道,公司创始人失联,办公室一夜搬空。
林晨深吸一口气,点开天眼查,输入链艺坊的全称。
注册信息显示,公司成立时间 2022 年 5 月,注册资本 500 万,实缴资本却只有 50 万。经营范围虽然包含“区块链技术相关服务”,但特别标注了“不含虚拟货币发行、交易等金融业务”。
“看起来一切正常”。林晨盯着屏幕。 35K 的月薪确实能缓解当下的焦虑。可是,如果这家公司也突然解散呢?到那时他又要重新找工作,简历上多了一段短暂的 web3 经历,对传统互联网公司来说可能还是减分项。
他想起面试时赵哲说的话:“我们做的是工具层,合规性没问题”。当时觉得靠谱,现在却忍不住多想——在监管不明朗的环境里,“工具”和“违规”的界限真的那么清晰吗?
凌晨一点,科技园里还有不少窗户亮着。林晨想起自己十年前刚来鹏城时,也曾想过加入初创公司搏一把,但最终选择了稳定。三十五岁,他赌不起了。不是赌不起机会,是赌不起家庭。
手机震动了一下,是苏婉发来的微信:“还没睡?别太晚”。
林晨回复:“马上睡,在研究点东西”。
他重新打开电脑,搜索“ t 厂 AI 部门 业务方向”。 t 厂去年重组了 AI 实验室,今年重点投入大模型。有猎头透露,高级开发岗 base 可以给到 55K 到 85K ,年包可能超过百万。
百万。离一百二十万的目标还有点距离,但比链艺坊高出一倍多,而且 t 厂稳定。林晨感到一阵烦躁。如果链艺坊的 offer 早来一个月,他可能毫不犹豫就接了。可现在有了对比,选择变得艰难。
他点开一个程序员社群,发了个匿名提问:“收到一家 web3 创业公司 offer , 35K ,同时有大厂 AI 部门面试机会。该选哪个”?
回复陆续跳出。 用户 A :“选大厂。 web3 水太深,很多公司活不过一年”。 用户 b :“看风险承受能力。如果拖家带口建议求稳”。 用户 E :“如果有大厂机会,优先大厂。 web3 经历对以后回传统互联网不一定有帮助”。
林晨关掉社群,最后搜索了“链艺坊拖欠工资”、“链艺坊纠纷”。在职场点评网站的角落里,有一条匿名评论:“面试过,聊得挺好,但最后没去。听说内部管理有点乱,项目方向老变”。
再往下,一个技术讨论帖提到:“链艺坊在做的方案,跟去年跑路的‘链易通’很像,底层框架有安全漏洞”。
林晨盯着“跑路”两个字,后背有点发凉。
直到凌晨四点,他才迷迷糊糊睡去。睡梦中,他站在一个十字路口,左边路牌写着“35K ,但可能塌方”,右边写着“未知,但道路坚固”。
醒来时是早上七点。手机屏幕亮着,链艺坊 hR 发来新消息:“林先生,请问考虑得如何?明天中午前需要您确认哦”。
而邮箱里, t 厂招聘系统也发来了新邮件:“您的面试已安排在下周三下午两点,地点 t 厂总部大厦……”。
林晨坐起身,看着手机里的两条消息,知道必须做出选择了。
第40章 张伟的建议
深夜的深南大道依然车流如织,两旁的摩天大楼虽然熄灭了大半灯火,但那些依旧亮着的窗户,像是一双双不知疲倦的眼睛,盯着每一个在鹏城寻找出路的灵魂。
林晨在南山科技园附近的一家二十四小时茶餐厅见到了张伟。茶餐厅里冷气开得很足,甚至有些刺骨,空气中弥漫着浓郁的黄油味和淡淡的消毒水气息。张伟刚加完班,眼底带着些许血丝,衬衫领口微微发黄,但精神头还算亢奋。
“我就知道你得纠结”。张伟听完林晨关于链艺坊和 t 厂的对比,往嘴里塞了一块菠萝包,含糊不清地说道,“三十五岁老兵,遇到这种‘保底救命钱’和‘顶级大厂梦’的二选一,换谁都得失眠”。
林晨苦笑一声,把那份调研来的负面信息推到张伟面前,声音里带着疲惫:“这就是我纠结的原因。 web3 这一行,看着像星辰大海,踩进去可能就是万丈深渊。我刚查到有些小道消息说他们的技术底层和之前跑路的平台有渊源。老张,你说我这年纪,要是真掉进坑里,还有爬出来的机会吗”?
张伟放下筷子,神色正经了些。他拿起林晨的笔记翻了翻,沉默了片刻,才缓缓开口:“老林,我在这行混得比你久,说句掏心窝子的。 web3 确实有风险,很多公司就是披着技术的皮做资金盘,打着去中心化的旗号干着中心化割韭菜的勾当。但机会也确实大,这种时代的红利,往往就藏在这些混乱和争议里”。
他顿了顿,眼神变得锐利起来:“链艺坊我还是了解点,圈子里口碑两极分化。 Steven 这个人确实是技术出身,在硅谷待过,骨子里有那种极客的傲气。你听到的那些‘魔改开源框架’的传闻,在圈子里其实很普遍。关键在于,他们是为了跑路而改,还是为了解决性能瓶颈而改?如果是后者,那叫技术突破;如果是前者,那才叫埋地雷”。
“所以我现在拿不准”。林晨揉了揉太阳穴,面前的柠檬茶已经喝了一半,“ t 厂那边面试在即,那是 AI 部门,现在最火的赛道。我怕这边确认了入职,那边万一成了,我这人品就彻底败光了。可要是推了这边去搏 t 厂,万一面试挂了,我这就真的一无所有了”。
“这就是典型的‘既要又要’”。张伟嘿嘿一笑,身体微微前倾,压低了声音,“老林,我建议你别光看那些职场八卦。那些敲键盘的,有的连钱包地址都没申请过。你现在有 offer 在手,你有权利要求更透明的信息。你可以直接问 hR ,或者侧面打听他们的融资现状。 web3 公司如果拿到了正规机构的钱,性质就不一样了”。
林晨眼神一亮:“你是说查他们的背书”?
“对”。张伟点点头,指关节敲击着桌面,“跑路的公司通常没有正经 Vc 敢投。 Vc 的尽调不是吃干饭的,尤其是那些头部的美元基金。如果他们真拿到了 A 轮,那至少说明财务是被审计过的,合规性上通过了专业机构的初筛。一个拿了千万美金投资的团队,犯不着为了那点钱卷款跑路”。
送走张伟后,林晨回到家,妻子苏婉已经睡了。他没有开灯,直接走进了书房。书房里堆着他这段时间买的区块链书籍和打印的代码片段,在月光下显得有些杂乱。
他打开电脑,屏幕的冷光映射在他略显苍老的脸上。这次他绕开了那些碎片化的、充满了情绪宣泄的论坛,开始在垂直的区块链创投数据库和海外新闻稿里检索。他知道,在 web3 的世界里,中文圈的信息往往滞后且充满水分,真正的动向必须去源头找。
凌晨三点,在一个叫 crunchbase 的初创企业数据库里,一条发布在海外科技媒体上的英文简报被他翻了出来:“ chaincraft Studio (链艺坊海外名称)已完成 800 万美元 A 轮融资,由 hashKey capital 领投,数家硅谷知名基金跟投”。
林晨心头一震。 hashKey capital ?那不是一般的投资机构,那是目前业内公认最合规、背景最深厚的顶级基金之一。他们领投的项目,在合规性上几乎是打过“钢戳”的。
他紧接着又在天眼查的“融资历程”里反复挖掘,终于翻到了一个隐藏较深的变更记录。虽然链艺坊在国内注册的实缴资本只有 50 万,但在三个月前,公司新增了一家合伙企业的股东。经过多层穿透,林晨惊讶地发现,那背后的资金来源中,竟然隐约闪现着国内某知名红杉关联方的影子。
“拿过 A 轮,而且是正经机构领投,还有国内顶级 Vc 的影子公司参与”。林晨盯着屏幕,原先那种“随时跑路”的疑虑在这一刻彻底消散了不少。
这意味着,链艺坊至少不是草台班子。 800 万美元,折合人民币接近六千万。这笔钱足够支撑一个五十人规模的团队在南山科技园挥霍两三年。更重要的是,专业机构的背书意味着他们通过了 KYc (了解你的客户)和 AmL (反洗钱)的审查。
他重新看向那 35K 的月薪。
在 web3 的野蛮生长和 t 厂的精英赛道之间,天平似乎又开始左右摇摆。链艺坊提供的是一个全新的、极具爆发力的位置,虽然充满变数,但他能作为核心骨干去开荒。而 t 厂则是传统的稳健路线,虽然 AI 也是新方向,但在大厂内部,他大概率只是一颗更高级、薪水更丰厚的“螺丝钉”。
“确实有风险,但机会也确实大”。张伟的话在他耳边回响,伴随着茶餐厅里刺骨的冷气。
林晨看了一眼手机,凌晨三点四十。距离链艺坊 hR 要求的确认截止时间还有不到五个小时。而在他的邮箱里, t 厂的面试邀请函正静静地躺在那里,像是一个充满诱惑却又难以捉摸的幻梦。
他想起了乐乐明年的学费,想起了苏婉这段时间为了省钱不再光顾的化妆品专柜,想起了自己已经微微有些发福的体态和日渐后移的发际线。
三十五岁,真的能为了一个“可能”的 AI 梦,去推掉一个“确定”的高薪 offer 吗?
他点开链艺坊 hR 的微信对话框,手指在键盘上悬停了良久。对话框里还停留着 hR 发来的那句:“林先生,希望能尽快听到您的好消息”。
既然公司背景已经基本坐实,那么现在的核心问题,就不再是安全性,而是他林晨到底想要什么样的未来。
他站起身,走到窗前。鹏城的黎明前夕是最黑暗的,但远方的地平线上,已经隐约有一抹紫色的光在酝酿。
“既然是赌,不如赌得大一点”。他自言自语道。
他坐回电脑前,没有先回复 hR ,而是又打开了 t 厂的岗位描述( Jd )。他需要再次确认, t 厂的那个 AI 岗位,究竟是做纯应用层开发,还是涉及到底层的模型训练。如果只是做业务层,那吸引力其实大打折扣。
看着看着,他发现 t 厂的要求里有一条:具有分布式系统架构经验,熟悉大规模并发处理。这正是他在电商行业积累了十年的老本行。
“老林的价值,不应该只是 web3 的新手,而应该是懂分布式系统的老将”。他似乎摸索到了某种答案。
在 web3 领域,底层的区块链技术本质上就是一种极端的分布式系统。如果他在链艺坊能把这套分布式经验和智能合约结合起来,那他将成为极少数跨越两个维度的开发者。
天光微亮。林晨做出了一个大胆的决定。
他给链艺坊的 hR 回复了一条信息:“李经理,感谢公司的信任。 offer 我已收到并确认,我会按时入职。但在入职手续办理前,我还有几个关于技术架构落地的细节,希望能和 Steven 再简短交流一次”。
他没有拒绝,而是接下了。同时,他也决定去参加下周三 t 厂的面试。
这在职场上或许不那么“地道”,但在此时此刻,在这个被现实和梦想反复揉搓的程序员眼中,这是保护家庭和追求未来的唯一平衡点。
放下手机,他感觉胸口积压了多日的闷气终于吐出了一半。
接下来的挑战,才是真正的硬仗。
第41章 家庭会议
几天后到傍晚六点半,鹏城科技园附近的家里,厨房飘出番茄炒蛋的香味。苏婉系着围裙,正把最后一道菜端上桌。五岁的儿子乐乐在客厅地毯上摆弄积木,嘴里哼着幼儿园新学的儿歌。这个小小的两居室,是他们在鹏城打拼十年换来的家,每月一万二的房贷,像悬在头顶的钟摆,规律而沉重地提醒着时间的流逝。
林晨坐在餐桌旁,笔记本电脑开着,屏幕上是 Solidity 智能合约的代码示例,但他眼神有些飘忽。下午那通电话还在耳边回响——链艺坊的 hR 李经理,语气虽然客气,却透着一种不容商量的利落:“林先生,我已经帮你和技术总监以及老板都沟通过了。35K 确实是目前我们能给出的上限,这个职级的薪资架构已经封顶了,确实没法再往上突破。公司真的很看重您的架构思维,但如果您还在犹豫,我们可能就要启动备选方案了”。他当时以“需要和家人商量”为由,请求将回复时间推迟到今晚九点。
“吃饭了”。苏婉把盛好的米饭递过来,声音温和:“今天面试怎么样?”。林晨接过饭碗,犹豫了一下:“上午那家 web3 公司,下午又打电话来了。那边态度很明确,35K 是底价,一分钱也涨不动了,让我今晚必须定下来”。
苏婉夹菜的手顿了顿:“35K,算上年终奖金,基本可以覆盖家庭开支了”。餐厅里安静了几秒,只有乐乐用勺子敲碗边的轻微声响。苏婉放下筷子,看向丈夫:“你心动了,还是在担心?”。
“房贷、乐乐幼儿园学费、日常开销……每个月固定支出差不多两万”。林晨苦笑:“存款还有不到三十万,看起来不少,但坐吃山空,最多撑一年半载的。如果中间谁生个病,或者家里有什么急事……”。他没说完,但苏婉懂。她教语文,见过太多家庭因为经济问题产生的裂痕。鹏城这座城,光鲜亮丽的外表下,多的是被房贷、车贷、教育费用压得喘不过气的中年人。
“可是”,苏婉蹙起眉:“你昨天不是查了这家公司,说风险很大吗?什么实缴资本低、技术方案抄袭……还有,web3 这个行业本身,新闻里老是看到什么交易所暴雷、项目跑路。我怕……”。
“怕我进去干不了几个月,公司就没了?”。林晨接过话头,语气里带着疲惫的坦诚:“我也怕。但怕有用吗?现在大环境不好,t 厂面试在下周三,就算我拼命学,也没把握一定能过。万一没过,下一个机会什么时候来?一个月?两个月?这期间家里只出不进”。
苏婉沉默地吃着饭,给乐乐擦了擦嘴角的饭粒。过了好一会儿,她才轻声说:“我不是反对你去。我只是……担心。你以前做跨境电商,虽然累,但至少行业稳定。web3 太新了,新得让人心里没底”。
林晨放下碗,抽出两张餐巾纸,一张递给儿子,一张自己拿着。他没急着反驳,而是从手机里调出一个笔记 App,屏幕转向妻子:“这是我下午列的”。苏婉凑近看。
屏幕左边一栏写着“接受 offer”,下面罗列着:
1. 立即缓解经济压力;
2. 切入新兴技术领域;
3. 保持职场状态;
4. 为 t 厂面试增加实战案例。
右边一栏写着“拒绝 offer”,下面列着:
1. 经济压力持续;
2. 行业风险高;
3. 技术方向偏离;
4. 职业声誉风险。
最下面还有一行加粗的字:“折中方案——接受 offer,但设定明确止损线和学习计划”。
“折中方案?”。苏婉抬头看他。林晨点头,眼神变得专注,那是他思考技术难题时的神情:“嗯。既然对方已经把底牌掀了,不接受就是错过。接受这个工作,首要目标是解决未来六到十二个月的家庭现金流问题。但同时,我必须做好两手准备”。
他滑动屏幕,显示出更详细的计划:
第一,入职后,立即将薪资分成三部分;
第二,工作时间全力完成公司任务,但每天保证两小时深度学习;
第三,设定明确止损线;
第四,“最重要的”,林晨看着妻子的眼睛:“我需要你的支持。不是盲目的支持,是像现在这样,帮我看到风险,也一起计算可能性”。
苏婉伸手,覆在他放在桌上的手背上:“我要是怕你累,当初就不会支持你从跨境电商转技术了”。她笑了笑:“你记得我们刚来鹏城的时候吗?住关外农民房,你一边做客服一边自学 Java。那时候比现在难多了”。
林晨反手握紧她的手。苏婉深吸一口气:“所以,按你的‘折中方案’来吧。既然 35K 已经到顶了,咱们也不去纠结那几千块的涨幅。接受这个 offer,但咱们说好:
第一,留足应急金;
第二,健康比工作重要;
第三……周末至少抽半天,好好陪乐乐”。
晚上八点五十,林晨坐在书桌前,敲下了给链艺坊 hR 的回复邮件。点击发送时,鼠标的咔嗒声在安静的房间里格外清晰。窗外,科技园的写字楼依然灯火通明。书桌另一头,摊开着一本《python 深度学习》。旁边笔记本上写着:“学习计划(入职后)——目标:下周三 t 厂面试前,吃透 cNN 基本原理与简单实现”。
offer 接受了,但真正的战场,才刚刚划定界限。
第42章 入职准备
林晨点击了邮件中的“接受offer”按钮。
鼠标轻击的瞬间,屏幕上弹出确认提示框。他停顿了两秒——这两秒里,脑海里闪过苏婉在餐桌旁安静倾听的侧脸,闪过房贷还款日的日历提醒,闪过那些被拒简历的已读不回——然后按下了确认。
页面跳转,显示“入职流程指引已发送至您的邮箱”。
他靠在椅背上,长长吐出一口气。窗外的鹏城湾在午后阳光下泛着粼粼波光,远处春笋大厦的尖顶直插云霄。这个城市永远在快速运转,而他,在失业几个月后,终于又要回到那个齿轮系统里去了。
只是这次,要进入的是一个完全陌生的齿轮组。
这几个月的失业生活,像是一场漫长而静默的溺水。起初,他觉得自己有十年的资深开发经验,换个赛道不过是轻而易举,甚至还带着某种“终于可以休息一下”的解脱感。但随着投出去的简历石沉大海,随着面试官那些针对“年龄”与“高阶架构思维”的隐秘审视,他才发现,程序员的三十五岁确实是一道坎。他在家里的存在感变得越来越小心翼翼,甚至连呼吸声都怕吵到正在备课的苏婉,或者影响到正在玩耍的乐乐。
第二天早上,他打开 hR 发来的入职指引邮件,仔细阅读。下周一报到,地点在南山科技园的一栋写字楼。需要带身份证、学历证明、离职证明,还有——体检报告。
他看了眼时间,现在还来得及去附近的体检中心。体检报告通常需要几个工作日,但科技园附近的体检机构大多有“入职绿色通道”,加急的话下午就能出结果。
出门前,他给苏婉发了条微信:“offer接了,下周一开始上班。现在去体检”。
苏婉很快回复,文字后面跟着一个可爱的笑脸表情:“好。晚上想吃什么?庆祝一下”。
林晨看着屏幕,嘴角不自觉上扬。这几个月来,家里的庆祝总是带着某种悲壮色彩——第一次面试通过时,第一次收到兼职项目款时,每一次都像是绝地求生中的小小补给站。虽然大家都心知肚明压力依然存在,但那份仪式感是苏婉在努力维持着家庭的温度。而这一次,终于有了些真正“上岸”的意味。
“简单点就行,你做的我都爱吃”。他回复道。
体检中心在科苑北路上,这栋白色建筑里弥漫着常年不散的消毒水味。在这里排队的人,大多有着相似的面孔:年轻的、稚嫩的、或是像林晨这样带着一丝难以掩盖的疲惫。他们都在为进入这片被称为“中国硅谷”的土地置办最后一张入场券。
排队、填表、抽血、拍胸片,一套流程走下来花了一个多小时。抽血时,护士看了一眼他的手背,随口问了一句:“程序员吧?”。
林晨一愣:“你怎么知道?”。
“这一带体检的,血管这么沉、皮肤这么白的,十个有九个是写代码的”。护士半开玩笑地说。
林晨苦笑。这是职业留下的烙印,像某种隐形的纹身。
等待打印报告的间隙,他在休息区的长椅上坐下,打开手机。习惯性地,他没有去刷朋友圈,而是打开了京东。
他搜索着 web3 相关的书籍。《区块链技术指南》、《智能合约开发实战》、《以太坊白皮书解读》、《Rust语言编程》……他选了五六本,加入购物车。
付款时,他犹豫了一下。这些书加起来要三百多块,够家里两三天的菜钱了。失业这几个月,他学会了对每一笔支出进行“逻辑分析”。但想到下周一就要面对全新的技术栈,想到面试时那位技术总监老赵犀利的眼神,他还是点了确认支付。
“代码可以骗人,但逻辑不会”。他低声念叨着这句自己常说的话。
这是他转行做技术第一天,领路师傅教他的。技术这东西,糊弄不了人。不懂就是不懂,在代码面前装不了样子,在编译器面前更没有侥幸。
下午四点,加急的体检报告出来了。一切正常,除了“轻度脂肪肝”和“建议减少久坐”——这几乎成了鹏城程序员的标准配置。他把报告折好塞进包里,走出体检中心。
此时正是科技园最繁忙的时段之一。外卖骑手的电动车在狭窄的街道间穿梭,写字楼下偶尔有三两成群的年轻人端着咖啡讨论着“并发”、“模型”和“投后估值”。
林晨特意绕路走到了那栋即将成为新工作地点的写字楼下。他站在马路对面,仰头看着那座玻璃幕墙在夕阳下折射出暗金色光芒的大厦。
“链艺坊科技有限公司”。
他在心里默念。这个名字听起来很“web3”,带着某种混合了技术极客与艺术气质的意味。面试时来过几次,但当时全部注意力都在应对技术问题上,根本没时间观察环境。现在静下来看,这栋楼周围配套设施不错:楼下有二十四小时便利店,对面是一家看起来格调颇高的咖啡馆。
手机震动,是张伟发来的消息。张伟是他以前在跨境电商公司时的搭档,现在在一家大厂做高级架构师,消息一向灵通。
“听说你接了链艺坊的offer?”。
林晨有些惊讶,回复道:“刚接。你怎么知道?”。
“圈子小”。张伟发来一个咧嘴笑的表情:“那家公司我了解一些,做 NFt 平台的,在圈内小有名气。技术总监老赵是我前同事,人不错,技术扎实。不过……”。
“不过什么?”。林晨的心跳快了几分。
“web3 这行业,波动大”。张伟的话语里带着过来人的审慎:“牛市的时候,猪都能飞起来,月薪六七万的开发遍地走;熊市的时候,项目说没就没。总之你心里有个数,把这家当成技术入门的跳板可以,但别指望能干到退休。对了,他们用的主要是 Solidity 和 Rust,你这几天可以突击一下”。
“已经在学了”。林晨如实说:“Solidity 的语法和 JavaScript 有点像,但那个 gas 费机制和安全性考虑,完全是另一个思路”。
张伟发来一段语音,背景音有些嘈杂,显然是在开会间隙:“没错,千万别用写 web2 的思维去写智能合约。老赵他们对代码质量抓得特别严,去年听说出过一次小规模的合约漏洞,亏了点钱,老赵差点当场引咎辞职。所以你去了,估计要从写最枯燥的测试用例开始,别嫌烦”。
林晨听着,心里那点刚升起的轻松感又沉下去几分。
高风险,高要求,三十五岁,从头学起。这哪是上岸,这简直是跳进了另一片暗流涌动的新海域。
“谢谢提醒”。他回复道。
“客气啥,下周三 t 厂的面试你还是得去试试。那才是真正的正规军”。张伟最后叮嘱了一句。
回到家时,已经晚上七点。
一推开门,那种独属于家的、混合了饭菜香与洗衣液味的气息便扑面而来。这种气息在这一刻显得格外珍贵,它让林晨觉得,无论外面的技术浪潮如何翻涌,这里始终是他的锚。
两人坐下吃饭。桌上准备了三个菜,虽然简单,但苏婉特意买了一瓶可乐。可乐倒在玻璃杯里,细密的气泡噼啪作响,像是在为某种微小的胜利欢呼。
“书我买了几本,明天能到”。林晨夹了块鸡蛋,语气里带着一种强撑出来的斗志:“周末两天得猛补一下。Solidity 的智能合约、Rust 的系统编程,还有区块链的底层共识协议。这些东西不吃透,周一上班心里没底”。
苏婉有些担心地看着他:“两天时间,补这么多东西,你身体吃得消吗?”。
“来不及也得来”。林晨苦笑:“现在不是二十出头的时候了,没人会因为你是新来的就给你几个月的适应期。周一上手,周二可能就要出方案”。
苏婉安静地吃着饭,橘黄色的灯光洒在她肩上。过了好一会儿,她才轻声说:“我今天在学校没课的时候,也查了查 web3 的资料。虽然看不太懂那些算法,但我看到一句话”。
林晨抬头看她。
“不管它是下一代互联网,还是像某些人说的只是个泡沫,技术本身是没有错的”。苏婉的眼神清澈而坚定:“就像你以前做跨境电商,就算平台以后倒闭了,但你写的那些高性能架构、你处理过的大数据经验,都是长在你脑子里的,谁也拿不走”。
林晨心里一暖。这就是苏婉,她不懂什么是“去中心化”,不懂什么是“哈希碰撞”,但她总能用最朴素的逻辑,抚平他内心的焦躁。
“对。我就是这么想的”。他说。
吃完饭,照顾乐乐睡下后,林晨走进了那个几平米的书房。
那是他的避难所,也是他的战场。
电脑屏幕亮起,映照着他略显苍白的脸。他点开了 Solidity 的在线教程页面。Solidity 是一种用于编写智能合约的编程语言,它的逻辑与传统的后端语言大相径庭。在这里,每一行代码的执行都意味着真实资产的流动,任何一个微小的溢出错误或逻辑漏洞,都可能导致数百万美元的损失。
他开始尝试编写一个简单的借贷合约。
function deposit public payable { ... }
他一边敲击键盘,一边在脑海里模拟着以太坊虚拟机的执行流程。每写一行,他都要停下来思考:这个函数会不会被重入攻击?这个变量的可见性是否正确?
直到晚上十一点,一个基础版本的借贷合约终于在本地测试链上跑通了所有的测试用例。看着终端窗口里显示的绿色 passed 字样,他揉了揉发酸的眼睛,长舒一口气。
但他没有关闭电脑。
他点开了桌面下一个名为“家庭财务规划工具”的隐蔽文件夹。这是他这几个月来自学 AI 时的实战项目——一个基于深度学习的量化交易模型。
他在里面悄悄运行着从各种加密货币交易所抓取的数据。这不仅是为了学习 python 和 pytorch,更是他试图通过技术手段来对抗中年危机的一种尝试。
屏幕上跳动的预测曲线忽高忽低。他更新了今天的市场数据,重新开始训练模型。在神经网络的层层迭代中,他仿佛看到了一种确定性——一种输入决定输出的、不被外界干扰的逻辑。
这种逻辑让他感到安全。
然而,他很清楚,即将开始的新工作并不是这种简单的数学模型。那里有老赵的严格审核,有 web3 行业的剧烈波动,有张伟口中“说没就没”的项目,还有他必须在下周三去面对的、像高山一样沉重的 t 厂面试。
睡前,他关掉了所有的设备。
他躺在黑暗中,听着身边苏婉均匀的呼吸声。窗外,鹏城的夜色从未真正暗下去,科技园那些写字楼的灯火依然如同繁星,那是无数像他一样的人在燃烧自己的生命,试图在时代的浪潮中划出一道属于自己的痕迹。
三十五岁,在很多人眼里是该“求稳”的年纪。但他却在这一刻,选择跳上一艘还在剧烈摇晃、甚至连航向都尚不明确的新船。
他能站稳吗?
在这个充满了不确定性的时代,没人能给出答案。
但至少,在那个确认按钮按下的一刻,他已经伸出了脚。他感受到了一种久违的、刺痛的生命感。那是重回战场的战栗,也是为了守护那个温暖小家而生出的最后一点孤勇。
黑暗中,林晨缓缓握紧了拳头。
下周一,不仅是一个 offer 的兑现,更是他技术生涯下半场的真正开球。他闭上眼,脑海里浮现出还没写完的 cNN 算法逻辑,以及那句不断回响的话:“代码可以骗人,但逻辑不会”。
既然已经选择了出发,那就只能跑得比浪潮更快一点。
第43章 入职第一天
早上七点半,林晨站在科技园一栋写字楼下,仰头看着玻璃幕墙上反射的朝阳。“链艺坊”三个艺术字体的Logo嵌在二十三层的位置。他深吸一口气,整理了一下身上那件略显正式的浅蓝色衬衫——这是苏婉昨晚特意熨烫好的,说是新工作要有新气象。
电梯里挤满了年轻人,t恤、卫衣、运动鞋是标配,不少人戴着降噪耳机,手指在手机屏幕上快速滑动。林晨站在角落,能清晰地感觉到自己与这个环境的年龄差。三十五岁,在这个平均年龄可能不到二十八岁的团队里,已经算是“老同志”了。前台是个扎着丸子头的女孩,笑容很甜:“林晨老师是吧?hR昨天交代过,我带您去工位”。
“老师”?林晨愣了一下。“我们这儿都这么叫,技术好的前辈都叫老师”。女孩一边引路一边解释,“您的工位在c区,靠窗那边”。
办公区是开放式的工业风装修,裸露的管道和水泥柱被涂成了亮黄色。工位上,双屏显示器、机械键盘、人体工学椅已经配好,桌上还放着一个印有公司Logo的欢迎礼盒。
“林老师,早啊”。戴着黑框眼镜的阿杰走过来,“我是前端组的,tech Lead说您今天到,让我先带您熟悉一下”。阿杰二十五六岁,说话语速极快。林晨一边和他握手,一边打开了公司配发的macbook pro。
阿杰递过来一张密密麻麻的便签纸,上面写满了开发环境需求:homebrew、Node.js 16+、Yarn、truffle、hardhat、metamask……林晨一边操作,一边心里暗暗叫苦。虽然提前看了书,但实际操作时,光是安装nvm就因为残留版本冲突折腾了二十分钟。阿杰在旁边偶尔提示,但大部分时间都在自己花绿绿的VScode界面上飞速敲击。
中午,林晨和阿杰等几个年轻同事去吃隆江猪脚饭。聊起天来,林晨发现自己很难插上话——他们讨论的是最新的deFi协议攻击细节、新公链的tpS数据、还有NFt市场的火爆项目。这些名词林晨在书上看过,但缺乏实战背景,只能默默听着。
“林老师,您怎么看EIp-1559之后的Gas费机制”?后端的小王忽然问。林晨努力回忆书本知识,尽量严谨地回答:“从经济学角度看,基础费销毁机制能缓解通胀,但对矿工冲击大……”他能感觉到几个年轻人交换了一下眼神,那意思大概是:理论还行,但不够“接地气”。
下午两点,tech Lead陈峰召集项目会议。他眼神锐利,直接投屏展示架构图:“林晨,你刚来,先跟阿杰做前端拍卖界面。需求在Jira上,UI稿在Figma。这周五要出第一个可演示版本”。
林晨看着复杂的NFt拍卖逻辑:出价、加价、截止时间、流拍处理、Gas费优化……每一个细节背后都有智能合约的对应函数。回到工位,他开始疯狂啃需求,一边看前端代码,一边翻看Solidity合约的AbI定义。下午四点,一个typeScript类型定义错误让他卡了半天。阿杰快速帮他解决后,轻飘飘留下一句:“您慢慢习惯就好”。林晨听出了潜台词:你得加快速度。
下班时间已过,办公区依然灯火通明。林晨揉了揉发酸的眼睛,决定留下来把基础框架搭出来。晚上七点,他走出大楼,科技园的灯光已亮成一片。地铁上,他给苏婉回复:“有点挑战,但能学到东西”。他省略了那些手忙脚乱和格格不入。
回到家,吃着温热的饭菜,看着熟睡的孩子,林晨的心情渐渐平复。他意识到,这份工作不仅是薪水,更是一个证明——证明自己还能跟上这个时代的速度。夜深了,他在脑海中反复模拟React组件的生命周期和Solidity的事件触发。
从明天开始,每一分钟都不能浪费。
第44章 技术栈的挑战
上午九点,链艺坊的开放式办公区已经坐满了人。
林晨盯着屏幕上打开的代码仓库,眉头不自觉地皱了起来。昨天下午项目会结束后,tech Lead 陈峰已经把项目权限和任务详情发给了他。这是一个 NFt 拍卖平台的前端模块,需要他负责用户资产展示、出价交互和交易状态实时更新的部分。
技术栈清清楚楚地写在项目文档里:React 18 + typeScript + Vite,与后端智能合约交互使用 ethers.js,部分复杂状态管理用 Zustand。每一个词他都认识,但组合在一起,尤其是要在三天内做出“可演示版本”,压力像潮水般涌来。
他上一次正经写前端代码,还是五年前用 jquery 和 bootstrap 做后台管理系统。React 他听说过,知道是 Facebook 搞的框架,但从来没碰过。typeScript 更陌生,只知道是 JavaScript 加了类型系统。至于 Vite、Zustand 这些工具,名字都新鲜。
“晨哥,环境配好了吗”?旁边工位探过来一张年轻的脸,是昨天一起吃午饭的前端同事阿杰,戴着黑框眼镜,头发染了一撮灰蓝色。
“差不多了,正在看项目结构”。林晨尽量让自己的声音听起来平静。
“那就好。这个项目其实不难,核心逻辑都在合约那边,我们前端主要是把数据展示好,交互做流畅”。阿杰说着,指了指自己屏幕,“我负责拍卖列表和搜索,咱们模块挨着,有问题随时问我”。
“谢谢”。林晨点点头,心里稍微松了点。至少同事看起来还算友善。
第一步:初识代码墙
他深吸一口气,点开项目 REAdmE,从头开始看。先按照文档把依赖装好,然后启动开发服务器。终端里滚过一行行安装日志,最后显示“Local:
Auction platform”的标题。
“第一步总算没卡住”。林晨心里默念,开始按照任务描述,找到对应的组件目录。第一个要改的文件是 src/ponents/Assetcard.tsx。点开,满眼都是陌生的语法。
林晨盯着代码看了足足十分钟。interface、React.Fc、useState、usecallback、usememo、bigNumber…… 这些概念像一堵墙横在面前。他能大概猜出一些——useState 应该是管理状态的,usecallback 和 usememo 跟性能优化有关,interface 定义类型。但具体怎么用,为什么要这么用,脑子里一片空白。
更麻烦的是,这代码和他习惯的后端 Java/python 写法完全不同。函数式组件、hooks、JSx 语法…… 每一样都需要重新理解。
“晨哥,卡住了”?阿杰又探过头来,看到林晨屏幕上的代码,“哦,Assetcard 啊,这个组件其实挺典型的。你要改的是出价按钮那块的样式,产品说现在的按钮不够醒目,要加个渐变背景和 hover 效果”。
林晨苦笑:“样式先放放,我连这组件怎么工作的都还没完全看懂”。
阿杰愣了一下,随即露出理解的表情:“哦对,你之前主要做后端是吧?React 这套确实需要适应一下。要不你先看看官方文档?React 和 typeScript 的官网教程都挺不错的”。
“嗯,正在看”。林晨已经打开了 React 官网,同时另一个标签页是 typeScript handbook。
调试:新手的挫败感
时间一分一秒过去。上午十点半,林晨勉强理解了函数式组件的基本概念,尝试着修改了一点样式代码。保存后,浏览器热更新,按钮确实变了颜色。但当他尝试添加一个简单的功能——在出价时显示加载状态——时,问题来了。
按照他的理解,应该在 handlebid 函数里设置某个状态,然后在按钮上根据这个状态显示“出价中……”。他模仿着现有代码,加了个 const [isSubmitting, setIsSubmitting] = useState(false),然后在按钮的 disabled 属性里用这个状态。
保存,编译报错:type boolean is not assignable to type string | undefined.
林晨盯着错误信息,不明所以。他检查代码,按钮的 disabled 属性确实是布尔值啊。
“阿杰,能帮我看一眼吗”?他不得不求助。
阿杰凑过来,扫了两眼:“哦,这里。你看按钮的 disabled 属性类型定义,可能是从某个 UI 库来的,它接受的是 string 或者 undefined,不是 boolean。你得改成 disabled={isSubmitting ? true : undefined}”。
林晨恍然,同时又感到一阵无力。这种细节,没有经验根本想不到。改好,编译通过。但点击按钮测试时,控制台又报错:Uncaught typeError: onbidclick is not a function。
“这又是为什么”?林晨感觉自己像个刚学编程的新手。
阿杰耐心解释:“onbidclick 是从父组件传下来的回调函数,但你在 Assetcard 里测试的时候,父组件没传这个 prop,所以是 undefined。你得在父组件里模拟一个函数传进来,或者先判断是否存在”。
林晨按照提示修改,终于让按钮能正常显示加载状态了。就这么一个简单的功能,花了他整整一个小时。
进度与规范的挑战
抬头看时间,已经十一点四十。办公区里开始有人起身去吃饭,讨论着中午吃什么。几个年轻同事在聊昨晚玩的游戏,术语飞溅——“符文”、“打野”、“gank”。林晨完全插不上话。他关掉文档页面,揉了揉发酸的眼睛。一个上午,只勉强弄懂了一个组件的一小部分,而周五就要交付可演示版本。
这种进度,别说三天,给他三周都不一定够。
午休时,他没什么胃口,在楼下便利店随便买了个三明治,回到工位边吃边继续看代码。阿杰和其他几个同事结伴出去吃了,办公区空了一半。林晨啃着干巴巴的三明治,眼睛没离开屏幕。他打开项目的其他组件文件,一个个看过去,试图理解整个前端架构。越看心越沉——项目用了不少他完全没接触过的库和模式:React Router 做路由、React query 管理服务端状态、tailwind cSS 写样式……
下午一点半,同事们陆续回来。阿杰看到林晨还在工位,有些惊讶:“晨哥,你没休息啊”?
“嗯,抓紧时间熟悉熟悉”。林晨说。
下午的工作更具体。陈峰在团队群里 @ 了他,让他下午四点前提交一个简单的 pR,把 Assetcard 组件的几个样式问题修复了。这是个小任务,算是让他熟悉 git 工作流。林晨不敢懈怠,按照公司文档的流程,从拉取最新代码、创建分支、修改、提交、推送到远程,一步步做。提交前他还特意检查了代码格式,确保符合项目的 ESLint 配置。
三点五十,pR 创建成功。他松了口气,以为至少这关过了。十分钟后,陈峰在 pR 下面评论了:
“@林晨 提交信息写得太简单了,‘fix styles’这种描述不够具体。请参考我们的提交规范:feat:、fix:、docs: 等前缀,后面跟模块名和具体改动。另外,你这个分支是从 main 直接拉的吗?应该从 develop 拉。重新弄一下”。
林晨看着评论,脸有些发烫。他确实没仔细看提交规范文档,分支也拉错了。
“好的,马上改”。他在下面回复。重新操作,又花了二十分钟。这次他仔细看了规范文档,提交信息写成:fix(asset-card): adjust bid button styles with gradient and loading state。
再次提交,陈峰很快点了通过。“好了,下次注意”。陈峰私聊发来一句。
“明白,谢谢陈导”。林晨回复,手心有点出汗。
夜战与思维的火花
这只是个最简单的代码提交流程,就出了岔子。真正的编码挑战还在后面。
下午剩下的时间,林晨强迫自己进入高效学习状态。他不再试图一次性理解整个项目,而是采用“问题驱动”的方式——遇到什么不懂的,立刻查文档、搜 Stack overflow、看项目里类似的代码是怎么写的。React 的 hooks 机制、typeScript 的类型推导、Vite 的热更新原理…… 一个个概念像拼图一样慢慢拼凑起来。他发现自己多年后端开发积累的编程思维还是有用的——组件化对应模块化、状态管理对应数据流、生命周期对应初始化销毁。只是具体实现方式不同。
到下午六点,正常下班时间。办公室里大部分人还没走,web3 公司似乎没有准点下班的习惯。阿杰和几个同事在讨论一个技术方案,声音时高时低。林晨看了看任务列表,今天计划要完成的“理解项目架构和核心组件”只完成了一半。他犹豫了一下,关掉了准备下班的念头。
房贷月供一万二,试用期薪资三万,存款三十万在缓慢消耗。这份工作不能丢,至少试用期必须过。他点开外卖软件,叫了份隆江猪脚饭,然后继续回到代码世界。
晚上七点,外卖到了。林晨在茶水间快速吃完,回来时看到陈峰也还在工位,正对着三个显示器调试智能合约代码。
“陈导,还不走”?林晨随口问了句。
“嗯,合约有个 gas 优化问题要解决”。陈峰头也没抬,“你呢?第一天就加班”?
“技术栈不太熟,想多花点时间补补”。
陈峰这才转过头,看了林晨一眼:“正常。web3 技术迭代快,前端生态半年一变。保持学习就行。有问题随时问,但尽量先自己查文档”。
“明白”。林晨点头。
回到工位,他泡了杯茶,重新打开电脑。夜晚的办公室安静了许多,只有键盘敲击声和偶尔的讨论。窗外是南山区科技园的夜景,高楼灯火通明。
林晨深吸一口气,点开了 Solidity 的官方文档。既然前端暂时啃不动,他想先看看智能合约那边是什么逻辑。毕竟拍卖的核心业务在链上,理解了合约,前端只是展示层。
Solidity 的语法让他稍微舒服了点——至少是类 c 的语言,有变量、函数、结构体、事件这些熟悉的概念。他找到项目用的拍卖合约代码,一行行读下去。这是一个简单的英式拍卖合约:卖家上架 NFt,设置起拍价和拍卖时长;买家出价,必须高于当前最高价;拍卖结束后,最高出价者获得 NFt,卖家收到款项。
逻辑清晰,但细节很多:出价时要锁定 Eth、拍卖结束后的资金结算、流拍处理、手续费计算…… 林晨看着看着,忽然心里一动。这拍卖逻辑,和他之前研究的量化交易策略里的“趋势跟踪”有点相似——价格在特定规则下形成趋势,直到时间截止形成最终成交。
如果把每个 NFt 看作一只股票,拍卖过程就是一段短期的价格发现过程。那么,能不能用类似的数学模型来描述?这个念头一闪而过,他自嘲地笑了笑。现在连前端代码都写不利索,还想这些。但那个想法像颗种子,悄悄埋在了心里。
归途与自省
晚上九点半,林晨终于把拍卖合约的核心逻辑理清楚了。他合上电脑,颈椎已经僵硬得发疼。
林晨收拾东西,轻声离开。电梯下行时,他看着镜面里自己疲惫的脸,三十五岁的眼角已经有了细纹。回到家快十点了。苏婉还没睡,在客厅备课。
“这么晚”?她抬头,眼里有担忧。
“嗯,技术栈不太熟,加了会儿班”。林晨放下背包,瘫在沙发上。
苏婉起身给他倒了杯水:“别太拼了,身体要紧”。
林晨接过水杯,温热的感觉从掌心传来。他忽然想起白天那些年轻同事讨论游戏的样子,想起自己面对陌生代码时的无力感,想起陈峰那句“保持学习就行”。
“婉婉”,他轻声说,“我觉得自己像个刚入行的新人”。
苏婉坐到他身边,握住他的手:“你本来就是新入行啊。从跨境电商到 web3,跨度这么大,给自己点时间”。
“可是时间不等人”。林晨看着天花板,“周五就要交东西,我现在连门都没入”。
“那也得一步一步来”。苏婉语气温柔,“你忘了当年刚学编程的时候了?也是从 ‘hello world’ 开始的。现在至少你已经有十年经验,学习能力比那时候强多了”。
林晨沉默了一会儿,点点头。是啊,十年前他刚毕业,连 Git 都不会用,现在不也成了资深工程师?技术栈再新,底层逻辑还是相通的。
晚上十一点,林晨躺在床上却睡不着。他干脆拿起手机,搜索“React 快速上手”、“typeScript 实战技巧”。他看到一篇讲 React hooks 最佳实践的文章,正好解答了他白天的疑惑。
凌晨十二点半,林晨闭上眼睛。明天,要从哪里突破呢?他想好了:先不管那些花哨的库和工具,集中精力把核心用法搞熟。
代码可以骗人,但逻辑不会。而逻辑,是他最擅长的东西。
第45章 代码审查
周一上午九点,林晨坐在工位上,盯着 Github 页面上那个刚刚创建的 pull Request(代码合并请求),心跳有些加速。这是他在新公司的第一个 pR。
过去一周,他几乎每天加班到晚上十点,周末也泡在代码里。任务不算复杂:为一个 deFi(去中心化金融)项目的前端添加一个质押收益计算器组件。他用了自己最熟悉的 React 方式完成了开发,自测了几遍,功能都正常。
鼠标在“create pull request”按钮上悬停了十几秒,林晨深吸一口气,点了下去。页面跳转,pR 编号 #347 出现在屏幕上。他顺手在 Slack 的技术频道里 @ 了 tech Lead 陈峰:“陈哥,质押计算器组件的 pR 已提,麻烦有空 review 一下”。
消息刚发出去,陈峰几乎秒回:“收到,上午处理”。
林晨松了口气,起身去接水。路过陈峰的工位时,看到对方已经点开了 pR 页面,眉头微皱,手指在键盘上快速敲击。回到座位,林晨强迫自己不去刷新页面,转而开始看项目里另一个模块的代码。但注意力总是不集中,每隔几分钟就忍不住瞥一眼屏幕右下角的 Slack 图标。
这种等待代码审查的感觉,比他预想的要焦虑。在上一家跨境电商公司,他的代码审查通常很顺利——十年老员工,对业务系统和代码库了如指掌,提交的 pR 往往只有些格式小调整。但在这里,一切都是新的:新技术栈、新编码规范、新的最佳实践,甚至新的思维方式。
上午十点半, Slack 图标终于闪动起来。
陈峰:“@林晨 看完你的 pR 了,问题比较多,我们快速过一下?现在方便的话来小会议室”。
林晨心里一沉,回复:“好的,马上来”。
拿起笔记本和笔,他走向走廊尽头的小玻璃会议室。推门进去时,陈峰已经坐在里面,面前的 macbook 屏幕上正是那个 pR 的页面,右侧评论栏里密密麻麻的红色标记。
“坐”。陈峰指了指对面的椅子,语气平静但严肃,“我们先整体说,然后你回去逐条修改”。
林晨坐下,打开笔记本准备记录。
“首先,功能实现没问题,计算逻辑是对的”。陈峰开门见山,“但问题出在代码质量、安全性和可维护性上。我一条条说,你记一下”。
他滚动页面到文件开头:“第一,typeScript 类型定义太松散。你看这里”,他指着屏幕,“userInput: any,这等于没定义类型。我们项目要求严格类型,所有变量、函数参数、返回值都必须明确定义。用 any 在审查中直接会被打回”。
林晨点头,快速记下:“明白,我改成具体类型”。
“第二,智能合约交互部分”。陈峰翻到另一段代码,“你直接调用了合约方法,但没有处理可能的失败情况和 Gas 费估算。这在 web3 前端是必须的——每一次链上交互都可能失败,可能耗光用户 Gas 费。你需要加上 try-catch,加上 loading 状态,加上预估 Gas 并提示用户确认”。
“这个我确实没考虑到……”林晨如实说。在传统 web 开发里, ApI 调用失败通常只是重试或报错,但涉及真金白银的 Gas 费,完全是另一个维度。
“第三,代码结构”。陈峰继续,“你把所有逻辑都写在一个组件里,计算函数、格式化函数、状态管理全混在一起。按照我们项目的规范,计算逻辑应该抽离成独立的纯函数,放在 utils 目录下;格式化函数也应该独立;状态管理考虑用 Zustand 而不是全用 useState,因为这部分状态可能在应用其他地方也需要访问”。
林晨看着自己那八百多行的组件文件,突然意识到问题所在——他用了最快速、最直白的方式实现功能,但没考虑后续维护和扩展。
“第四,安全问题”。陈峰的语气更严肃了些,“你这里用了 eval 吗”?
林晨一愣:“没有啊……”
陈峰指向一段动态计算公式的代码:“虽然不是 eval,但你用 new Function 动态执行用户输入的计算公式,这本质上和 eval 一样危险。如果用户输入恶意代码呢?即使在我们自己控制的前端,这种模式也绝对禁止。计算公式必须白名单化,只允许几种预设模式”。
林晨背后冒出冷汗。他确实为了方便,允许用户输入自定义计算公式,然后动态执行。这在传统 web 也许还行,但在涉及加密资产的环境里,简直是漏洞。
“第五,样式问题”。陈峰翻到最后,“你用了内联样式和大量 !important 覆盖。我们项目用 tailwind cSS,要求原子化样式类。另外,响应式设计考虑不足,在移动端布局会乱”。
他停下来,看向林晨:“暂时就这些主要问题。细节评论我都在代码行里加了,总共……四十七条评论”。
四十七条。林晨感觉脸上有些发烫。工作十年,他从未在一个 pR 里收到过这么多修改意见。
“陈哥,抱歉,是我没熟悉好规范”。他诚恳地说。
陈峰摆摆手:“不用道歉,新人第一个 pR 都这样。 web3 开发,尤其是金融相关,安全性和代码质量的要求比传统 web 高几个数量级。一笔错误交易可能造成用户永久资产损失,一个合约漏洞可能被黑客利用导致项目归零。所以审查严格是必须的”。
他顿了顿,语气缓和了些:“但你的优势也很明显——实现速度快,基础逻辑扎实,没有低级错误。只是需要适应我们的标准和思维方式”。
林晨点头:“我回去一条条改。大概需要多久”?
“给你两天时间”。陈峰说,“改完后重新提交,我会再审查。另外,建议你仔细读一下项目里的 coNtRIbUtING.md 贡献指南,还有 code-review-checklist.md 代码审查清单,里面写了所有要求和常见问题”。
“好的,我马上看”。
回到工位,林晨先点开陈峰说的那两个文档。贡献指南足足有三十多页,从 Git 工作流、提交信息规范、代码风格、测试要求,到安全注意事项、性能优化点,事无巨细。代码审查清单更是列了一百多项检查项。
他泡了杯浓茶,开始逐条处理评论。
第一条,类型定义。他把所有的 any 都替换成具体类型: string、 number、 bigNumber( web3 中处理大数字的库)、自定义接口……光是完善类型,就花了两个小时。
第二条,智能合约交互。他查阅项目里其他类似组件的实现,学习如何处理交易发送、等待确认、错误回退。添加了 Gas 费估算函数,在用户点击前弹出预估费用和确认框。这部分涉及对以太坊交易机制的深入理解,他边学边做,到下午三点才完成。
第三条,代码结构重构。这是最耗时的。他把那个庞大的组件拆解:计算逻辑抽成 calculateYield.ts,格式化函数抽成 formatters.ts,状态管理改用 Zustand 创建独立 store。拆解过程中,他发现了自己原来代码里的几个隐藏 bug ——状态更新时机不对导致渲染闪烁。如果不是重构,这些 bug 可能要到用户使用才会暴露。
第四条,安全问题。他彻底重写了计算公式部分。不再允许用户自由输入,而是提供几个预设计算模式(线性、指数、对数),用户只能选择模式和调整参数。虽然灵活性下降,但绝对安全。
第五条,样式重构。他强迫自己学习 tailwind cSS 的类名体系,把一堆内联样式替换成原子化类。调整响应式断点,确保从手机到桌面都能正常显示。
晚上八点,办公室只剩下寥寥几人。林晨终于处理完最后一条评论,重新运行测试,全部通过。他再次提交 pR ,这次在描述里详细列出了所有修改点,并 @ 陈峰。
几分钟后,陈峰回复:“收到,明天上午审查。”
林晨关掉电脑,揉了揉发酸的眼睛。走出写字楼时,南山科技园的夜空稀疏地亮着几颗星。晚风带着深圳湾的潮湿气息吹来,他深吸一口气,疲惫中却有种奇异的充实感。今天这四十七条评论,像一面镜子,照出了他过去十年在舒适区里形成的思维定式——只求功能实现,忽视安全质量;只顾眼前交付,不想长期维护。而 web3 这个领域,正在用最严格的标准逼迫他打破这些定式。
地铁上,他打开手机,看到苏婉发来的消息:“今天又加班?晚饭在锅里,记得热了吃”。
他回复:“刚下班,在回去路上。今天被陈哥批了代码,改了整整一天”。
苏婉很快回复:“批得狠吗?”
“四十七条修改意见”。
“啊……那确实不少。不过能学到东西就好,别太有压力”。
“嗯,确实学到很多。就是感觉……三十五岁重新当学徒,滋味挺复杂”。
“学徒不可怕,可怕的是连当学徒的机会都没有。你现在至少还有公司愿意花时间培养你,不是吗”?
林晨看着这句话,心里某个地方被触动了。是啊,如果是在原来那家公司,以他十年老员工的资历,谁敢给他的 pR 提四十七条意见?但在那里,他也温水煮青蛙般停止了成长。而现在,虽然被批评、被要求重写、像个新手一样从头学起,但每一天都能感觉到自己在突破旧边界。
回到家已经九点半。苏婉陪乐乐睡了,餐桌上留着饭菜和一张便签:“热两分钟就能吃,别凑合”。
林晨热了饭,坐在餐桌前安静吃完。然后打开自己的笔记本电脑,没有继续看公司代码,而是点开了那个他一直在悄悄开发的智能投资系统。这几天忙于适应新工作,系统的开发进度慢了下来。但此刻,看着自己完全掌控的代码库,他忽然有种奇妙的感觉——在公司的 pR 里,他是被审查者,要遵循别人的规范;但在这个自己的项目里,他是规则的制定者。而这两种角色,或许都需要。
他写了几行代码,又停下来思考。今天陈峰强调的安全性和健壮性,是不是也应该应用到自己的投资系统里?比如更严格的输入验证,更完善的错误处理,更模块化的架构……
手机震动了一下,是陈峰发来的 Slack 消息,在他提交的新 pR 下:“初步看了一下,修改方向都对。明天我会详细审查,今天早点休息”。
林晨回复:“谢谢陈哥,明天见”。
关掉电脑,他走到阳台上。夜色中的深圳,无数写字楼依然灯火通明。这座城市永远不缺加班的人,不缺学习的人,不缺在压力中试图抓住机会的人。
他想起下午修改代码时的一个瞬间——当他终于理解为什么 web3 前端必须预估 Gas 费并提示用户确认时,那种“啊,原来如此”的顿悟感。那种感觉,让他想起二十多岁刚入行时,第一次理解异步编程,第一次搞明白闭包,第一次成功调试一个复杂 bug 时的兴奋。三十五岁,重新找到那种学习新东西的兴奋感。这或许就是这次被迫转型,最珍贵的收获。
第46章 年轻同事的质疑
上午上班,林晨刚打开电脑,就看到了代码仓库里那条 pR 的更新状态。
“Approved with minor suggestions.”
陈峰最终批准了合并,并在评论区留下了几条额外的优化建议,语气比昨天温和了许多。林晨松了口气,紧绷了一整天的神经终于松弛下来。他花了十五分钟处理完那些建议,点击了合并按钮。看着自己入职后的第一个功能模块正式进入代码库,一种久违的成就感涌了上来,尽管这成就感里夹杂着昨天被“拷打”四十七条意见的复杂滋味。
他起身去接水,路过开放式工区时,几个年轻同事正凑在一起低声讨论着什么,见他过来,声音压得更低,随即散开回到各自工位。林晨隐约听到了“大叔”、“年纪”几个词,脚步微微一顿,面上没什么表情,径直走向茶水间。
这家位于南山科技园的 web3 初创公司,办公环境是典型的互联网风格:裸露的工业风天花板、可升降办公桌、随处可见的绿植和懒人沙发。团队平均年龄看起来不超过二十八岁,穿着潮牌 t 恤、戴着各色头戴式耳机的年轻人占了大半。林晨一身简单的优衣库 poLo 衫和休闲裤,坐在其中确实显得有些“格格不入”。
中午十二点,同事们开始张罗午饭。几个年轻开发者——小赵、阿 Ken 和雯雯——招呼着一起去楼下新开的轻食沙拉店。
“晨哥,一起吗”?小赵随口问了一句,他是团队里前端主力,染着一头灰发,耳朵上戴着黑色耳钉。
林晨本想答应,融入一下,但听到“轻食沙拉”,胃里本能地抗拒。他这个年纪,还是更习惯吃顿热乎的米饭炒菜。“你们去吧,我约了人”。他找了个借口,其实只是打算去隔壁那家粤菜小馆吃个碟头饭。看着三个年轻人说说笑笑走向电梯,讨论着昨晚某款新上线链游的“Gas 费优化策略”和某个 KoL 的直播,林晨默默转身走向另一侧的消防通道。楼梯间安静,只有他的脚步声。
在“隆江猪脚饭”吃完一份双拼饭,林晨回到公司时,小赵他们还没回来。他打开技术文档,继续啃 Solidity 的进阶特性——合约继承、库合约、内联汇编。这些概念对他这个有十年后端经验的人来说不算难,但 web3 特有的安全范式和经济模型约束,需要反复理解。
下午两点,同事们陆续回到工位。短暂的午休后,工区又活跃起来。林晨去洗手间,刚走到隔间门口,就听见里面传来清晰的对话声——是阿 Ken 和小赵。
“……那个新来的林晨,昨天 pR 被陈哥批得那叫一个惨,四十七条意见,我入职那会儿都没这么夸张”。阿 Ken 的声音带着点夸张。
“正常,年纪大了,思维定式固化了呗。我看了他代码,有些写法真的很‘传统’,估计以前做那种老掉牙的电商系统做的”。小赵语气随意,“不过人家态度还行,改得挺快”。
“态度好有啥用,技术跟不上节奏白搭。 web3 迭代多快啊,咱们这行吃的就是年轻饭,反应快、学习快、能熬夜。你看他,中午都不跟我们一起吃饭,估计也聊不到一块去。我听说他都三十五了?真·大叔了”。
“嘘——小声点,可能在外面”。
水龙头被拧开,哗哗的水声掩盖了后面的对话。林晨站在隔间外,握着门把手的手紧了紧,指节有些发白。他脸上没什么表情,等里面的人出来、脚步声远去后,才推门进去。镜子里映出一张三十五岁的脸,眼角有了细纹,头发虽浓密但鬓角已见零星灰白。他打开水龙头,用冷水扑了扑脸。
下午的工作,林晨格外沉默。他高效地处理着陈峰新分配的一个任务——为一个 deFi 协议的利率计算模块编写智能合约。键盘敲击声密集而稳定,屏幕上的代码一行行增加,结构清晰,注释详尽。他刻意运用了昨天学到的安全模式和代码规范。
然而,工区里弥漫的那种轻松、活跃、带着网络流行语和游戏梗的氛围,像一层无形的玻璃罩,将他隔在外面。旁边的雯雯和另一个设计妹子讨论着某个社交 dApp 的 UI ,夹杂着“meme”、“dAo”、“NFt 头像”之类的词;后面两个年轻后端在争论某个新公链的 tpS 数据,语气激动得像在讨论足球赛。
林晨能听懂每一个技术名词,甚至能参与进去给出专业见解。但他发现,自己插不上话的,是那些技术讨论之外的东西——他们聊的网红餐厅、最新的综艺、某个 cosplay 展、某款二次元手游的新角色、还有那些他完全没听过的社交软件上的趣事。他第一次如此清晰地感受到,年龄带来的不仅仅是身体上的变化,还有兴趣圈层、信息渠道、乃至语言体系的微妙差异。他不是不懂技术,而是不懂他们的“语境”。
快下班时,行政小姐姐在群里发通知,周五晚上部门组织去车公庙某家网红酒吧团建,欢迎新人参加。群里顿时一片“+1”和表情包刷屏。林晨看着手机,犹豫了。去,意味着可能要面对更尴尬的社交场景,听着完全不懂的音乐,喝着不习惯的酒,努力找话题;不去,则可能被贴上“不合群”、“老古板”的标签。
他最终回了个:“收到,尽量参加”。 先留个活话。
下班地铁上,拥挤的 11 号线里,林晨戴着耳机,却没听音乐。他看着窗外飞速掠过的城市夜景,高楼大厦的灯光在眼底连成一片模糊的光带。一种深切的孤独感,并非源于身边无人,而是源于身处人群却难以融入的疏离,悄然包裹了他。
这种孤独,比失业在家埋头学习时更具体,更令人无力。那时,目标清晰,敌人明确(技术短板、经济压力)。而现在,敌人变成了无形的氛围、年轻的目光、以及自己内心那一点点不肯放下的、属于“前资深工程师”的矜持。
回到家,妻子苏婉已经接儿子乐乐回来了,正在厨房做饭。饭菜的香气和乐乐跑来跑去玩玩具火车的声音,瞬间驱散了地铁上的冷清。
“今天怎么样?新工作还适应吗”?苏婉端菜出来,关切地问。
“还行,代码过了”。林晨洗了手,帮忙摆碗筷,没提听到的议论和午餐的疏离。
吃饭时,乐乐叽叽喳喳说着幼儿园的趣事,苏婉微笑着听,偶尔给林晨夹菜。温暖的灯光下,简单的三菜一汤,却让林晨感到踏实。这里是他的锚点,无论外面风雨如何,这片港湾始终宁静。
晚上,哄睡乐乐后,林晨回到书房。他没有立刻打开电脑学习,而是靠在椅子上,望着窗外零星灯火。年龄是客观存在的,代沟也是。但技术能力、解决问题的能力、以及创造价值的能力,不应该被年龄简单定义。那些年轻同事讨论的游戏、社交、流行文化,他或许不懂,也没必要全懂。他的优势在于十年积累的系统思维、项目经验、抗压能力和更沉稳的心态。 web3 领域固然年轻化,但真正复杂的系统架构、经济模型设计、安全攻防,需要的恰恰是深度思考和严谨性,这些并非年轻人的专利。
想通了这一点,胸中的郁结散开不少。他打开电脑,这次没有看 Solidity 文档,而是点开了自己那个智能投资系统的本地开发环境。白天在公司学到的安全规范和代码组织思路,正好可以迁移过来优化自己的项目。这才是属于他的战场,能完全自主掌控节奏、验证想法、创造价值的地方。
他沉浸进去,开始重构一段风险控制模块的代码。时间悄然流逝,书房里只有键盘清脆的响声。直到手机震动,打断了他的思绪。是大哥林枫发来的微信语音。点开,传来侄儿林浩有些沮丧的声音:“小叔,你睡了吗?今天厂里组长又说我学东西慢,流水线上一个检测步骤老是出岔子……我是不是真的挺笨的?”
林晨听着电话那头年轻人迷茫的声音,仿佛看到了另一个维度上的“代沟”与“不适应”。他关掉代码编辑器,拿起手机,走到阳台,拨了回去。
夜风吹拂,远处鹏城的霓虹依旧闪烁。这个夜晚,三十五岁的林晨,在努力融入新环境的同时,也开始思考,如何帮助另一个年轻人,找到属于他的、挣脱流水线束缚的可能。
第47章 加班的困境
晚上八点,鹏城科技园开放式办公区依然灯火通明。键盘敲击声、鼠标点击声、偶尔响起的电话铃声交织在一起,空气里弥漫着咖啡和外卖混杂的气味。林晨揉了揉发涩的眼睛,看向屏幕右下角的时间——20:07。
他所在的这个 web3 初创公司,团队平均年龄不超过28岁。坐在他斜对面的小陈,去年刚硕士毕业,此刻正戴着降噪耳机,身体随着隐约漏出的音乐节奏微微晃动,手指在键盘上飞舞。旁边工位的小李,正在和产品经理激烈讨论某个 deFi 协议的交互逻辑,语速快得像在说 rap。
林晨面前的屏幕上,是一个尚未完成的智能合约函数。他今天已经写了七百多行 Solidity 代码,修复了三个潜在的安全漏洞,参与了两次代码评审。从早上九点坐到工位到现在,除了午餐和两次去洗手间,他几乎没怎么动过。腰椎传来的隐隐酸胀感在提醒他:你已经35岁了,不是那些可以连续熬夜三天还生龙活虎的年轻人了。
更重要的是,他答应过乐乐。“爸爸,你今晚真的能回来陪我拼乐高吗”?早上出门时,五岁的儿子抱着他的腿,眼睛亮晶晶地问。那是一套航天主题的乐高,乐乐盼了一个星期。“爸爸尽量”。林晨当时摸了摸儿子的头,心里其实没底。
项目正在赶进度。他们正在开发一个跨链资产桥接协议,竞品已经上线测试版,团队压力很大。项目经理老王下午在群里发了消息:“兄弟们,这周是关键节点,大家辛苦一下,争取周五前把核心模块联调通过”。
“辛苦一下”在互联网行业的潜台词,大家都懂。林晨又看了一眼工作群。最新几条消息是:
小陈:“老王,前端交互层我优化完了,测试环境已部署,你瞅瞅”?
老王:“@所有人 后端接口文档谁还没更新?明天测试组要介入”。
小李:“我半小时后更新完。对了,食堂送夜宵了,有人要一起点吗”?
夜宵。这意味着很多人打算继续熬下去。林晨胃里一阵翻腾。不是饿,是焦虑。他需要做出选择:是留下来,继续和这群年轻人一起“奋斗”,证明自己这个“大叔”不比他们差,还是按时下班,回家履行对儿子的承诺?
如果是在十年前,他刚毕业那会儿,他会毫不犹豫地选择前者。那时候他单身,住在公司附近,加班到凌晨两点是常态,第二天照样精神抖擞。他甚至享受那种“为事业拼搏”的感觉,觉得年轻就该挥霍时间。
但现在不一样了。他有家庭,有责任。更重要的是,经历了裁员和求职的波折,他对“工作”的理解发生了变化。代码可以重写,项目可以延期,但孩子的成长瞬间,错过了就是永远。
可是……试用期。这两个字像悬在头顶的达摩克利斯之剑。这份工作月薪 35K,虽然离他120万的年薪预期很远,但至少能缓解房贷压力,让家庭财务喘口气。如果因为“不够拼”而在试用期被卡掉……
“林哥,不走啊”?小陈摘下一只耳机,转过头来问道。他桌边已经堆了两个空的红牛罐子。 “还有点东西要收尾”。林晨含糊地应道。 “厉害”。小陈竖起大拇指,语气里听不出是真诚还是别的什么,“我听说你有小孩?这个点还不回去,嫂子没意见”? 这话问得随意,但林晨心里咯噔一下。他笑了笑:“跟家里说过了,项目紧”。 “也是”。小陈重新戴上耳机,“咱们这行就这样。我女朋友昨天还跟我吵呢,说我陪她的时间还没陪代码多。没办法啊,年轻不拼,老了拼不动”。
林晨沉默地转回屏幕。小陈的话像一根细针,扎在他心上。“老了拼不动”——在年轻人眼里,35岁的他,大概已经算“老”了吧。他强迫自己集中精神,继续检查合约代码。一行行复杂的逻辑在眼前流过,require 语句、modifier 修饰器、event 事件触发……他的技术功底确实扎实,学习 Solidity 虽然才一个多月,但凭借多年的开发经验和这两个月恶补的区块链知识,上手比很多年轻同事还快。项目经理老王私下夸过他一次,说他的代码结构清晰,安全考虑周全。
但这不够。在这个行业,尤其在初创公司,“态度”往往和“能力”一样重要,甚至更重要。而“态度”最直观的体现,就是你在工位上待了多久。
时间滑向八点半。办公室里的人似乎更多了。几个原本可能已经下班的同事,吃完夜宵后又回到了工位。讨论声、键盘声比之前更密集。一种无形的压力在空气中弥漫——当大多数人都选择留下时,那个选择离开的人,就显得格外突兀。
林晨终于完成了手头那个函数的最后一部分逻辑,跑了一遍单元测试,全部通过。他保存代码,提交到 Git 仓库,写了一段清晰的 mit message。按正常节奏,今天的工作已经完成了,甚至超额完成。他该走了。
但当他拿起背包,环顾四周时,动作又迟疑了。老王从独立办公室走出来,正站在白板前和几个核心开发讨论架构问题,神情严肃。小李和小陈凑在一起看测试报告,眉头紧锁。所有人都在忙碌,所有人都在为这个项目投入额外的时间。他这个时候起身离开,会不会显得……不合群?不敬业?
手机震动了一下。是苏婉发来的微信。 苏婉:“还没下班?乐乐一直念叨你,乐高拆开了但没拼,说要等你回来一起。饭在锅里热着”。 后面跟着一张照片:乐乐坐在爬行垫上,面前是散落的乐高零件,小家伙托着腮,眼巴巴地看着门口方向。
林晨的心脏像被什么东西攥紧了。他几乎能想象出儿子期待又有点失落的小表情。他深吸一口气,做出了决定。关电脑,收拾背包,动作尽量轻,但还是引起了旁边小李的注意。 “林哥,这就走了”?小李抬头,有些诧异。 “嗯,家里有点事”。林晨尽量让语气自然,“今天的任务都完成了,代码已提交。有问题随时群里 @我,我手机在线”。 小李点点头:“行,路上小心”。
林晨站起身,感受到几道目光似有若无地扫过自己。他挺直腰背,走向出口。经过白板时,老王刚好讨论告一段落,看了他一眼。 “老王,我今天的部分完工了,先走一步”。林晨主动开口。 老王看了看手表,点点头:“好。明天早会别忘了”。 语气平淡,听不出情绪。但林晨心里还是悬了一下。他点点头,快步走出办公区。
电梯下行时,镜面墙壁映出他略带疲惫的脸。西装衬衫,技术人员的标准打扮,但眼角的细纹和略微松弛的皮肤,与这座园区里绝大多数青春洋溢的面孔格格不入。走出大厦,夜晚的凉风吹来,带着鹏城特有的、海风混合着城市喧嚣的气息。科技园周边依然热闹,不少大楼灯火通明,外卖骑手穿梭不息。这里永远不缺奋斗的故事,也不缺被奋斗挤压的个人生活。
地铁上,林晨找了个角落的位置坐下。车厢里人不多,他拿出手机,犹豫了一下,点开了公司的工作群。没有新消息 @他。他又点开与项目经理老王的私聊窗口,输入又删除,最终还是没有发任何解释或表决心的话。
他告诉自己:我完成了分内工作,且质量不差。我有权利在合理时间下班,陪伴家人。如果公司因为这一点就否定我的价值,那这样的公司,或许也不值得长期投入。道理都懂,但焦虑感并未完全消散。试用期就像一场漫长的考试,每一个细节都可能被评分。
回到家已经快九点半。钥匙刚插进锁孔,门就从里面被打开了。“爸爸”!乐乐扑上来,紧紧抱住他的腿。苏婉系着围裙从厨房出来,脸上带着温柔的笑意:“回来啦。快去洗手,吃饭。乐乐等你等得都快望穿秋水了”。 “爸爸,我们拼火箭”!乐乐迫不及待地拉着他的手往客厅走。
看着儿子兴奋的小脸,感受着家里温暖的灯光和饭菜香气,林晨一路上的纠结和压力,忽然消散了大半。他抱起乐乐,亲了亲他的小脸蛋:“好,等爸爸吃完饭,我们一起拼,把火箭发射到火星去”!
餐桌上,苏婉给他盛了热汤,轻声问:“今天很累吧?脸色不太好”。 林晨喝了一口汤,胃里暖和起来,叹了口气:“项目赶进度,团队都在加班。我……提前回来了”。 苏婉静静看着他,没有追问,只是说:“吃饭吧。工作重要,家也重要。你能平衡好,不容易”。简单一句话,却让林晨心头一暖。这就是苏婉,她不会给他施加压力,总是用最平和的方式给予理解和支持。
饭后,林晨真的坐在地垫上,陪着乐乐一点点拼装乐高火箭。孩子的专注和快乐感染了他,那些关于加班、试用期、年龄焦虑的思绪暂时被抛到脑后。这一刻,他只是个父亲。
晚上十一点,哄睡乐乐后,林晨轻手轻脚回到书房。他没有开大灯,只点亮了台灯。电脑屏幕幽幽亮起。他并没有继续加班公司的工作,而是点开了另一个软件——他那个正在逐步完善的智能投资系统原型。
既然无法控制职场的加班文化,那就把可控的时间用在更能积累长期价值的事情上。公司的项目是谋生,而这个系统,可能是未来的出路。他调出了最近的 A 股数据,开始尝试将今天在公司写智能合约时想到的一种状态机逻辑,迁移到投资系统的交易状态判断模块中。思路意外地顺畅,一行行 python 代码在指尖流淌。
夜深人静,书房里只有键盘轻微的嗒嗒声。窗外的鹏城依旧霓虹闪烁,但对于林晨来说,内心的某种焦躁正在被清晰的代码逻辑和逐渐成型的系统蓝图所抚平。他或许无法像年轻人那样无休止地加班,但他有他们暂时没有的经验、沉淀和更明确的目标。这场中年职场突围战,他得找到属于自己的节奏和战场。
第48章 技术债务
清晨八点半,林晨已经坐在了科技园写字楼的工位上。昨晚优化投资系统到凌晨一点,但此刻他精神还不错。窗外的南山科技园在晨光中逐渐苏醒,远处腾讯滨海大厦的玻璃幕墙反射着金色的阳光。他抿了一口保温杯里的黑咖啡,打开了昨天没来得及细看的项目代码库。
入职这家 web3 公司已经两周,他主要负责一个 deFi 借贷平台的后端智能合约开发。前两周主要在熟悉业务逻辑和团队协作流程,今天终于要开始深入核心代码了。项目名叫“鲸鱼金融”——一个面向大户的加密资产借贷协议。林晨点开主合约文件,Solidity 代码在编辑器里铺展开来。
只看了一分钟,他的眉头就皱了起来。五百行的合约文件里,竟然有四处完全相同的抵押品清算逻辑,只是变量名稍有不同。继续往下翻,一个处理利率计算的函数里嵌套了七层 if-else 判断,像一团纠缠的毛线球。注释?寥寥无几,仅有的几行还写着:“这里好像有问题,但先这样吧”。
林晨深吸一口气,点开了测试目录。空的。只有几个自动生成的骨架文件,没有任何实际测试用例。他又查看了文档目录,只有一个 REAdmE.md,里面写着“鲸鱼金融——下一代 deFi 借贷协议”,下面就没有实质性内容了。“这……”林晨感觉太阳穴在跳。他从业十年,经历过各种项目,但像这样基础质量的项目,在稍微正规点的公司都活不过立项评审。
上午九点,团队站会。tech Lead 陈峰——一个三十出头、穿着印有“hodL”字样 t 恤的瘦高男人——站在白板前,语速飞快:“这周重点是上线流动性挖矿功能,吸引第一批用户。合约开发部分,林晨你负责挖矿奖励的发放逻辑,三天内完成开发,周五部署测试网”。
林晨举手:“陈哥,我看了现有的合约代码,有些问题想讨论一下”。 陈峰看了眼手表:“简单说,五分钟”。
“第一,代码重复严重,同样逻辑写了四遍,维护起来是灾难。第二,核心函数嵌套太深,可读性和可测试性都很差。第三,完全没有单元测试,部署风险极高。第四,缺乏技术文档,新人上手成本太高”。林晨尽量用平实的语言陈述,“我建议先花一周时间做基础重构,建立测试框架,然后再开发新功能。否则技术债务会越积越多,后期迭代成本会呈指数级增长”。
会议室里安静了几秒。几个年轻程序员交换着眼神。坐在角落的王明——那个上周连续熬了三个通宵的 95 后——小声嘀咕:“又要拖进度……”
陈峰笑了,那是一种混合着无奈和不以为然的笑容:“林哥,我知道你以前在大公司待过,讲究那些规范。但咱们这是创业公司,赛道窗口期就几个月,慢一步就死了”。他走到白板前,用马克笔写下四个大字:“能跑就行”。
“咱们的优先级很明确:第一,功能快速上线;第二,用户体验;第三,营销推广”。陈峰敲着白板,“代码质量?排第十吧。只要合约能编译、能部署、用户能操作,就够了。测试?手动点一点就行。文档?等咱们活下来再补”。
林晨试图争辩:“但智能合约涉及真金白银,一个整数溢出漏洞就可能让所有资金归零。去年那个……” “去年是去年,咱们的合约简单”。陈峰打断他,“林哥,我知道你是好心,但现实是:投资方在看数据,用户在看收益,没人看你的代码写得好不好看。咱们这个月必须上线流动性挖矿,下个月交易量要翻倍,否则下一轮融资就悬了”。他拍了拍林晨的肩膀,语气缓和了些:“这样,你先按现有架构把挖矿功能做出来。等上线后稳定了,咱们再抽时间优化,行吧”?
站会结束,团队成员鱼贯而出。林晨坐在椅子上没动。窗外的阳光刺眼,他却觉得有些冷。那种熟悉的无力感又涌了上来——不是面对裁员时的恐慌,而是一种更深的失望:对技术被工具化的失望,对行业浮躁氛围的失望。
他想起十年前刚入行时,带他的导师说过:“代码是程序员的手艺,手艺不能糙”。那时的互联网行业虽然也快,但至少还有对技术本身的敬畏。现在呢?区块链、web3,概念一个比一个炫,但扒开光鲜的外衣,里面可能是草台班子和屎山代码。
“林哥,还不走”?王明探头进来。 “马上”。林晨关掉编辑器。
中午吃饭时,林晨在科技园附近的“湘满楼”遇到了张伟。两人点了两个菜,张伟听林晨说完早上的事,苦笑着摇头:“正常,太正常了。现在 web3 圈子里,十个项目有九个是这样。快速发币、快速上线、快速拉盘,然后要么跑路,要么归零。真正想做事的团队,凤毛麟角”。
“那你还推荐我来”?林晨夹了块剁椒鱼头。 “当时不是看你急着找工作嘛”。张伟压低声音,“而且这家至少是真在做产品,虽然糙了点。不过说实话,兄弟,你要是图长远发展,这里确实不是久留之地”。
林晨沉默地吃着饭。张伟继续说:“你知道为什么他们不重视代码质量吗?因为整个商业模式就不靠技术驱动。吸引用户靠的是高 ApY(年化收益率),留住用户靠的是庞氏经济学,赚钱靠的是发币割韭菜。技术?就是个道具。所以人家才说‘能跑就行’”。
“那你觉得我应该怎么办”?林晨问。 张伟想了想:“两条路。第一,适应环境,他们让你怎么写你就怎么写,拿几个月工资,同时骑驴找马。第二,如果你实在受不了,趁早撤。不过……”他顿了顿,“你现在这个年纪,再找工作的难度不小。除非——” “除非什么”?“除非你有特别硬的技能,硬到能打破年龄歧视”。张伟看着林晨,“比如,AI”。
林晨心里一动。下午回到公司,林晨打开那个混乱的合约文件。他做了个决定:不推翻现有架构,但在自己负责的挖矿功能模块里,尽可能写出清晰的代码。他新建了一个 utils 目录,把通用的数学计算函数抽离出来。给每个函数写了清晰的注释,包括参数说明、返回值、可能的异常。
敲代码时,他刻意放慢了速度。每一行都思考:这样写半年后还能看懂吗?如果别人接手,能理解这里的逻辑吗?那个嵌套七层的 if-else 函数,他用了半小时重构,拆分成三个小函数,每个职责单一。
隔壁工位的王明凑过来看了一眼屏幕,惊讶道:“林哥,你写这么多注释干嘛?还抽函数……这得多花多少时间啊”。 “现在多花一小时,以后可能省下十小时”。林晨头也不抬。 “但陈哥不是说周五就要吗”? “来得及”。
下班前,陈峰过来看进度。看到林晨代码库里那些清晰的函数和注释,他表情复杂。最终只说了句:“注释写得太详细了,其实没必要”。林晨没接话。
晚上七点,林晨准时下班。地铁上,他戴着耳机,但没听音乐,只是看着窗外飞驰而过的城市灯火。回家后,苏婉已经做好了饭。乐乐扑过来要爸爸讲区块链是什么,林晨用“网上大账本”的比喻简单解释,孩子听得似懂非懂,但眼睛亮晶晶的。
等乐乐睡了,林晨回到书房,打开了那台承载着他所有野心的电脑。他没有立刻去写那堆让他疲惫的 Solidity 代码,而是点开了收藏夹里深埋的一个文件夹,里面是他最近两个月死磕的深度学习笔记。
事实上,从入职前那段空窗期开始,他就已经意识到了 web3 的虚火,并开始系统性地攻克深度学习。他不仅啃完了吴恩达的经典课程,甚至已经开始尝试将 LStm(长短期记忆网络)模型应用到自己的 A 股量化投资系统中。
但今晚,他在搜索框里输入的词条变成了:“transformer 架构在时间序列预测中的深度应用”。
成千上万的链接跳出来。有炫耀算力霸权的行业新闻,也有深奥的学术论文。林晨并没有像初学者那样感到迷茫,他已经过了那个阶段。现在的他,正处于一个瓶颈期:如何将这些最前沿的 AI 模型,真正转化为投资系统中精准的买卖信号。
深夜十一点,苏婉端了杯热牛奶进来。看到屏幕上复杂的注意力机制图解,她轻声问:“还在钻研那个新模型”? “嗯”。林晨接过牛奶,杯壁的温度让他紧绷的神经稍微舒缓,“今天在公司,那种幻灭感特别强”。 “还是因为那些‘屎山’代码”? “不只是代码本身”。林晨抿了一口牛奶,目光从屏幕移向窗外,“是那种环境。大家都在透支未来的信用去换取当下的快钱。我以前觉得 web3 是未来,但今天我才意识到,如果没有扎实的技术底层,那只是沙滩上的城堡。而 AI,才是我能握在手里、谁也拿不走的真本事”。
苏婉在他身边坐下,看着他已经密密麻麻写了大半本的推导笔记。林晨继续说:“我原本以为掌握了深度学习的基础就能做出好的投资系统,但今天复盘发现,传统的模型还是太迟钝了。我想把现在最火的 transformer 引入进来,用它来捕捉那些稍纵即逝的市场逻辑”。
“想做就彻底做透”。苏婉的话依然简洁有力,“你之前跟我说,区块链只是解决了信任问题,而 AI 才能解决生产力问题。既然你已经入门了,就别在门口徘徊”。林晨看着她,有些感慨地笑了:“你就不怕我这套系统最后还是跑不赢大盘,折腾了半天又是空忙一场”? “怕啊”。苏婉也笑了,眼中闪烁着坚定,“但更怕你空有一身手艺却被平庸的环境磨平了。你那股钻研劲儿,是我最看重你的地方。就算系统成了,也不是因为运气,是因为你真的看懂了背后的数学”。
那一刻,林晨心里那丝关于“35岁转行是否太晚”的最后摇摆,彻底烟消云散了。他不再仅仅是为了生存而焦虑,而是为了攻克某个技术高地而战栗。
睡前,他给张伟发了条微信:“之前你给我的那个吴恩达资源我啃完了,现在在搞 transformer 的位置编码优化,你那边有没有关于金融时间序列数据降噪的硬核论文”? 几分钟后,张伟回复了一串 pdF 文件名,附言:“好家伙,你这进度够快的。看来你不是想转行,你是想在 AI 圈子里卷死我们啊!这几篇是顶会论文,够你折腾几宿的”。
林晨点开链接,看着全英文的算法推导。他没有退缩,反而感到一种久违的兴奋——那是多年前初次写出完美程序时的纯粹喜悦。窗外,鹏城的夜色正浓,但林晨眼前的屏幕上,每一行 python 脚本、每一组张量运算,都在为他勾勒出一条通往未来的、无比清晰的上升曲线。
第49章 薪资延迟
手机银行 App 的余额数字,在十一月的第五天依然没有变化。林晨坐在科技园写字楼下的星巴克,第三次刷新页面。公司通常每月 5 号上午十点前,工资就会到账。但今天已经下午两点,账户里上个月剩下的两万三千块,还是两万三千块。他抿了口已经凉掉的美式,苦涩从舌尖蔓延到心头。
试用期第一个月,他几乎每天都加班到九点以后。这家名为“链艺坊科技”的 web3 公司规模不大,总共四十来人,技术团队占一半。他负责的是去中心化交易平台(dEx)的流动性聚合模块,用 Solidity 写着智能合约,用 React 搭着前端界面,还要跟产品经理争论那些明显违反区块链基础逻辑的需求。累,但充实。至少代码在跑,项目在推进,每个 mit 都是实实在在的产出。
可工资没到。“可能是银行系统延迟”。他对自己说,但手指已经不自觉点开了房贷还款的日历。每月 15 号,一万二的月供。如果工资晚个一两天还好,但如果……
手机震动,是苏婉发来的微信:“工资到了吗?乐乐下周末幼儿园组织去野生动物园,要交 380 块活动费”。 林晨盯着屏幕,指尖悬在键盘上几秒,最终回复:“可能银行延迟,我再等等。活动费你先垫上,我工资到了转你”。 发送。
他几乎能想象出苏婉看到这条消息时的表情——不是责怪,而是那种细微的、被努力掩饰的担忧。上次被裁员后,家里财务一直紧绷。三十来万的存款在每月房贷、生活费、乐乐开销的侵蚀下,像烈日下的冰块一样消融。这份 web3 公司的工作,月薪税前三万五,是他和家庭重新站稳的希望。而现在,希望的第一块砖就松动了。
下午回到公司,开放办公区里气氛有些微妙。几个年轻同事凑在一起低声说着什么,见林晨进来,声音戛然而止,各自散开回到工位。林晨不动声色地坐下,眼角余光扫过斜对面的前端开发小赵——那小伙子正盯着手机银行界面,眉头紧锁。
“林哥”,隔壁工位的测试工程师王磊凑过来,压低声音,“你工资……到了吗”? 林晨心里一沉,面上保持平静:“还没,你也是”? 王磊苦笑:“我上个月才转正,这要是第一个月正式工资就延迟,我真得考虑下个月房租怎么交了”。 “hR 有通知吗”? “没,群里静悄悄的”。
林晨点开公司全员钉钉群,最后一条消息还是昨天下午产品经理发的需求文档。他想了想,起身走向 hR 办公室。玻璃隔间里, hR 经理李姐正在打电话,表情严肃。见林晨敲门,她快速对着话筒说了句“晚点再说”,挂断,换上职业笑容:“林晨,有事”? “李姐,想问下薪资发放的事”。林晨尽量让语气听起来像普通询问,“往常都是 5 号到,今天还没收到,是不是银行那边有什么问题”? 李姐的笑容没变,但眼神闪烁了一下:“哦,这个啊。财务那边说银行系统处理有点延迟,可能明天就能到。大家稍安勿躁”。 “是所有人都延迟吗”? “应该是吧,统一发放的嘛”。李姐拿起水杯喝了一口,“放心,公司运营一切正常,就是个小技术问题”。
走出 hR 办公室时,他听到里面又传来压低声音的电话通话:“……我知道,但总要安抚一下……再给我两天时间……”
回到工位,林晨没再写代码。他打开浏览器,开始搜索“链艺坊科技”的最新消息。这家公司去年 A 轮融了三千万,主打“下一代去中心化金融基础设施”,白皮书写得天花乱坠。但实际产品呢?他入职这一个月看到的,是一个交易深度不足、用户量稀少、 UI 还经常出 bug 的 dEx 原型。融资的钱烧了快一年,产品还没真正跑起来。而整个 web3 行业,自从去年那波牛市结束后,已经沉寂了大半年。
下班前,技术领导陈峰——也就是上次拒绝林晨重构建议的那位 tech Lead ——突然召集技术团队开会。二十来人挤在小会议室里,陈峰站在白板前,没讲技术,没讲需求,而是讲起了“行业周期”。 “……大家也知道,现在整个 web3 处于价值发现阶段,短期波动是正常的。我们链艺坊看的是长期价值,是下一代金融基础设施的愿景”。陈峰声音洪亮,但眼神有些飘忽,“公司目前运营稳健,大家不必为一些短期的小问题分心。接下来我们要集中精力,把 V2 版本的核心功能上线,只要产品数据起来,下一轮融资很快就会到位”。
有人举手:“陈总,薪资延迟是因为融资进度问题吗”? 会议室瞬间安静。陈峰顿了顿:“薪资发放是财务流程问题,跟融资无关。我可以明确告诉大家,公司资金充足,战略清晰。大家做好手头工作,就是对公司最大的支持”。
地铁 11 号线上,林晨给张伟发了条微信:“伟哥,链艺坊这家公司,你了解他们最近的状况吗”? 张伟很快回复:“怎么?入职感觉不对”? “薪资延迟了, hR 说是银行问题,但我感觉没那么简单”。对话框显示“对方正在输入…”很久,最后发来一段语音。林晨戴上耳机,张伟的声音压得很低:“我听到些风声,不一定准——他们 A 轮的钱可能烧得差不多了, b 轮谈了几家都不顺利。现在 web3 赛道冷得不行,投资人都在观望。你留个心眼”。 “如果 b 轮没跟上,会怎样”? “裁员,或者整个项目停掉。这种初创公司,三个月没新钱进来,基本就凉了”。
回到家已经八点半,苏婉和乐乐吃过晚饭了。桌上留着给他温着的饭菜:一碟青椒炒肉,一碗紫菜蛋花汤,米饭在电饭煲里保温。很简单的家常菜,但林晨看着,眼眶突然有点发热。 “工资还没到”?苏婉从乐乐房间走出来,轻声问。 林晨摇摇头,盛了饭坐下:“ hR 说明天可能到”。 苏婉在他对面坐下,没追问细节,只是说:“没事,家里还有钱。我工资前天发了,这个月房贷我已经存进去了”。 “乐乐的活动费呢”? “交了”。苏婉笑了笑,“其实幼儿园老师说可以缓两天,但我不想让孩子觉得家里连三百多块都要拖”。
林晨扒了两口饭,喉咙发紧。“苏婉”,他放下筷子,“这份工作……可能不稳”。 苏婉静静看着他,等他说下去。 “公司资金可能有问题,行业也在低谷。我今天查了下,我们做的那个 dEx , 24 小时交易量才不到五十万美金。这种项目,如果没有持续融资,根本活不下去”。
“那你打算怎么办”? 林晨沉默片刻:“继续学 AI 。不管这份工作能撑多久,我得给自己留条后路”。他顿了顿,“还有,我打算重新把那个量化系统的原型跑起来。上次用五万块测试,虽然没大赚,但至少没亏。如果……如果真的又失业了,至少有个能产生现金流的备选”。 苏婉伸手握住他的手,掌心温暖:“你想做什么就去做。家里有我”。
深夜,林晨没有睡。他打开电脑,点开那个命名为“ quantSys_v0.2 ”的文件夹。这是他在学习机器学习过程中,用 python 搭建的一个简易量化交易系统。当时他觉得太慢,不如专心工作赚钱,就把系统停了。现在,他看着屏幕上那些熟悉的代码,突然觉得,这些冰冷的函数和类,比 hR 的笑容和陈峰的愿景,要可靠得多。
代码可以骗人,但逻辑不会。数据可以波动,但趋势可循。他启动了数据更新脚本,开始拉取最新的 A 股、基金和商品期货数据。屏幕上的日志一行行滚动,在寂静的房间里发出微弱的光。窗外,鹏城湾的夜色深沉。远处春笋大厦的尖顶隐没在雾霭中,像一座随时可能崩塌的海市蜃楼。而林晨知道,这一次,他不能再把全部希望寄托在任何一座别人建造的楼上了。
第50章 行业震荡
周一的早晨,鹏城科技园,“链艺坊科技”公司的开放式办公区弥漫着一种不同寻常的紧张。林晨刚在自己的工位坐下,还没来得及打开电脑,隔壁工位的小王就凑了过来,压低声音:“晨哥,看了吗?出大事了”。
“什么”?林晨心里咯噔一下,立刻想到了上个月的薪资延迟。
小王把手机屏幕转过来,是某知名科技媒体的头条推送,加粗的红色标题触目惊心:《知名 deFi 协议“星链资本”疑似暴雷,tVL(总锁定价值)24 小时内蒸发超 3 亿美元,创始人团队失联》。下面还有一连串的相关推送:
《多地用户聚集维权,“星链资本”办公地遭围堵》
《监管发声:将加强对虚拟资产交易平台的穿透式监管》
《行业震动,多家 web3 公司宣布暂停招聘或启动裁员》
林晨快速浏览着新闻详情。“星链资本”是去年风光无限的明星项目,主打跨链借贷和收益聚合,最高时管理着近十亿美元的加密资产。报道称,两天前,该项目智能合约出现异常,用户无法提取资产,随后官方社交媒体停止更新,核心团队成员电话全部无法接通。有技术分析指出,合约可能存在后门或漏洞,导致资产被转移至未知地址。
“这……跑路了”?林晨感到一股寒意从脊背升起。这不是小打小闹,是数亿美元级别、影响巨大的行业地震。
“基本上实锤了”。小王脸色发白,“我有个朋友的朋友,投了五十万进去,现在全没了,正在拉维权群。听说昨晚已经有几十号人去他们在前海的注册地了,但那里早就人去楼空”。
办公区里,窃窃私语声像潮水一样蔓延开来。不少人根本没心思工作,都在刷手机、看群聊、低声交流。空气中充满了焦虑和不安。
上午十点,平时很少露面的公司创始人兼 cEo 王总突然召集全体员工开紧急会议。会议室挤得满满当当。王总站在前面,脸色比平时严肃许多,眼袋明显,显然也没睡好。
“各位同事,相信大家都看到了今天早上的新闻”。王总开门见山,声音有些沙哑,“‘星链资本’的事件,对整个行业,对我们公司,都会产生非常直接和严重的冲击”。他顿了顿,目光扫过台下每一张脸。“首先,我必须强调,我们‘链艺坊科技’的业务模式与‘星链资本’有本质不同。我们聚焦的是底层区块链基础设施服务和合规的企业级解决方案,不涉及任何形式的资金池、借贷或高风险金融衍生品。我们的技术是扎实的,业务是真实的”。
这番话试图稳定军心,但台下不少人眼神游移,显然没那么容易被说服。
“但是”,王总话锋一转,语气沉重,“行业的信誉遭到重创,这是不争的事实。投资者信心受挫,市场流动性可能进一步收紧。更关键的是——”他提高了音量,“监管的达摩克利斯之剑,已经明确落下来了”。
他调出 ppt,展示了几份刚刚发布的官方文件截图和媒体报道。“相关部门已经表态,将加强对虚拟资产相关业务的审查和监管力度,防范金融风险。这意味着,所有在这个赛道上的公司,包括我们,未来一段时间将面临更严格的合规要求、更谨慎的资本态度,以及……可能更艰难的市场环境”。
台下响起一片压抑的骚动。“必要调整”四个字,像一块石头砸进了本就不平静的水面,激起了更多猜测。
回到工位,林晨发现内部通讯软件上,几个项目群已经炸了锅。有人担心 b 轮领投方重新评估赛道,有人担心甲方暂停合作,而最深层的恐惧则是:裁员。林晨默默看着这些消息,没有参与讨论。他点开了自己正在负责的一个智能合约审计项目的文档,却有些看不进去。
中午吃饭时,气氛更加压抑。往常热闹的园区食堂,今天他们这一桌格外安静。坐在对面的老赵,一个在公司干了三年的老员工,扒拉了两口饭就放下了筷子,叹了口气:“三十五了,房贷车贷,孩子刚上小学……经不起折腾啊。上次被裁还能说是跨境电商不行,这次要是再……真不知道该怎么跟家里说”。
旁边一个年轻点的女生小声说:“我男朋友家里本来就反对我做这个,觉得是炒币的,不正经。这下更没法交代了”。
林晨听着,嘴里饭菜有些发苦。他想起了苏婉,想起了乐乐。自己入职才一个多月,还在试用期。如果公司真的启动“调整”,试用期员工无疑是最脆弱的一批。那份刚刚看到希望的 35K 月薪,可能转眼又成泡影。
下午,紧张的气氛有增无减。行业群里开始流传各种小道消息。tech Lead 陈峰把林晨叫到小会议室,关上了门。
“林晨,坐”。陈峰揉了揉太阳穴,“今天的情况你也看到了。咱们手头这个企业链改项目,甲方刚才来电话了,要求我们提供更详尽的合规风险评估报告,以及……项目进度可能会暂缓两周,他们要‘内部再评估’”。
“计划得跟着变”。陈峰无奈道,“现在风向变了,甲方比我们更怕风险。你手上的智能合约开发部分,先停一停,重点配合法务和商务,把那份合规报告需要的数据和技术说明部分弄出来。记住,措辞要严谨,重点突出我们技术的安全性和透明性,跟‘星链’那种划清界限”。
“明白了”。林晨点头。工作内容突然从技术开发转向了“危机公关”式的文档输出,这本身就是一个强烈的信号。
下班时,天色已暗。林晨走出大厦,科技园依旧灯火通明,但在他眼里,这些光芒似乎都蒙上了一层不确定的阴影。地铁站里,他听到两个穿着某互联网大厂工牌的年轻人在聊天:“还好我们搞的是 AI,虽然卷,至少没那么玄乎,监管也清晰”。
AI……林晨心中一动。他想起自己家里那台电脑上,已经重启并运行了几天的量化交易系统原型。那东西基于的是传统的金融市场数据和机器学习算法,跟区块链、加密货币这些似乎处在两个世界。
回到家,苏婉已经做好了饭。乐乐在客厅玩积木。一切看似如常,但苏婉敏锐地察觉到了林晨眉宇间的凝重。
“怎么了?公司有事”?饭后,苏婉轻声问道。
林晨没有隐瞒,把今天行业爆雷的情况简单说了。“感觉……又站在悬崖边上了”。他苦笑一下,“这个行业,水太深,风浪太大”。
苏婉握住他的手,温暖而坚定:“别怕。最坏的时候我们都过来了。你不是已经开始弄你那个投资系统了吗?就算……就算这边真的不行了,咱们也还有路”。
林晨反握住妻子的手,点了点头。是的,他不能把所有的希望都寄托在这艘风雨飘摇的船上。
深夜,林晨坐在书房电脑前。屏幕上,左侧是今天需要处理的、充满谨慎措辞的合规报告模板;右侧,是他那个量化系统的监控界面。几条简单的曲线在悄然爬升,代表着他用仅剩的几万块钱试水资金,在过去几个交易日里,系统自动执行交易带来了小幅但稳定的盈利。
一边是混乱、恐慌、前途未卜的 web3 世界;一边是安静、遵循数学规律、由自己代码掌控的量化世界。这种对比,在此刻显得尤为强烈和讽刺。
手机震动了一下,是张伟发来的信息:“行业地震,你们公司怎么样?自己多留个心眼。另外,我之前说的 t 厂 AI 部门那个朋友,他们团队最近确实在招人,要求不低,但机会难得。你要是对 AI 真有兴趣,这或许是个值得考虑的方向。风口,可能真的要换了”。
林晨盯着这条信息,又看了看电脑屏幕上那两条截然不同的“战线”,一个念头前所未有的清晰和强烈:也许,是时候做出选择了。在下一波巨浪拍过来之前,他必须找到一块更坚实的礁石,或者,自己建造一艘能抗风浪的船。窗外,鹏城的夜景璀璨依旧,但某些大厦里的灯光,或许在今夜之后,将永久熄灭。
第51章 项目暂停
周一早晨,南山科技园的空气里弥漫着一股不同寻常的压抑。
林晨走进“链艺坊科技”公司时,发现前台的小姑娘正低着头快速滑动手机屏幕,眉头紧锁。开放式办公区比往常安静得多,敲击键盘的声音稀稀拉拉的,几个早到的同事凑在一起低声说着什么。见他进来,声音立刻压得更低,眼神躲闪。他心里咯噔一下。上周五“星链资本”暴雷的余震,显然已经穿透行业报道,直接砸进了这间不大的办公室。
九点半,例行晨会。创始人王总罕见地提前五分钟就站在了会议室白板前,双手抱胸,脸色是熬夜后的灰败。tech Lead陈峰坐在旁边,手指无意识地敲着桌面,眼神放空。人到齐后,王总没有像往常一样让各人同步进度,而是清了清嗓子,声音有些干涩:“各位,占用大家一点时间,宣布一个重要调整”。
会议室里落针可闻。林晨注意到坐在斜对面的产品经理小王,手指捏紧了笔。
“我们目前核心推进的‘去中心化供应链金融平台’项目”,王总顿了顿,目光扫过众人,“接到主要合作方,也就是甲方‘寰宇物流’的通知,基于近期市场环境和监管风向的审慎评估,他们决定……暂缓该项目的进一步投入和合作开发”。
“暂缓”?一个年轻开发忍不住出声,“王总,是暂缓多久?我们迭代到一半的智能合约模块……”
“没有具体时间表”。王总打断他,语气疲惫但强硬,“甲方要求我们暂停所有相关开发工作,包括测试环境部署。后续是否重启,何时重启,等待他们进一步通知”。
“那就是停了”。坐在林晨旁边的老赵低声嘟囔了一句,声音不大,但在寂静的会议室里格外清晰。
陈峰这时开口补充,试图缓和气氛:“大家不要过度解读。行业有波动很正常,甲方也是出于风险考虑。项目暂停期间,公司会为大家安排其他学习或预研任务,比如深入理解零知识证明的最新应用,或者看看Layer2的解决方案……”
“陈哥”,林晨突然开口,声音平稳,“项目暂停,意味着目前我们团队——至少是这个项目组——没有明确且紧急的产出任务了,对吗?”
陈峰被他问得一噎,看了一眼王总。王总点了点头:“可以这么理解。但公司会保障大家的岗位和基本薪资,利用这段时间充充电、沉淀一下技术,未必是坏事”。
保障岗位和基本薪资?林晨心里冷笑。他三十五岁了,不是刚毕业的愣头青。在跨境电商公司十年,他太明白“项目暂停”、“业务调整”、“等待通知”这些词背后意味着什么了。那通常是裁员的前奏,或者至少是公司经营陷入严重困境的信号。尤其是对于“链艺坊科技”这样融资轮次不高、主要靠单个大项目撑着的初创公司,核心项目被甲方单方面暂停,几乎等同于被判了死缓。每拖一天,都是在消耗所剩无几的现金储备。
晨会在一片压抑中结束。王总和陈峰快步离开,留下会议室里一片低气压。
“完了,这下真完了”。小王把笔扔在桌上,往后一靠,“寰宇物流是我们最大的金主,他们一撤,公司账上还能烧几个月?”
“怪不得上周五王总开完紧急会议回来脸都是黑的”。老赵叹了口气,“我说怎么突然让我们整理项目文档和代码仓库,还要求特别规范……这是在为交接,或者为裁人做准备啊”。
“不会真要裁吧?我才入职三个月……”一个刚招进来的应届生脸色发白。
“慌什么,王总不是说了保障岗位吗”?有人试图安慰,但底气明显不足。
林晨没参与讨论,他默默收拾好自己的笔记本,走回工位。打开电脑,屏幕上还停留着上周未完成的智能合约代码,一个用于自动化审核供应链单据中关键信息的函数,他花了些心思优化Gas消耗。现在看来,很可能永远没有上线运行的机会了。
一种熟悉的、冰凉的焦虑感,顺着脊椎慢慢爬上来。距离上次在跨境电商公司被裁员,才过去不到四个月。那种突然失去依托、前途未卜的茫然和沉重,他以为在新的行业、新的公司可以暂时摆脱,没想到这么快就又嗅到了同样的气息。
而且这次,似乎更糟糕。上一次是被动淘汰,多少还有些“行业趋势”、“公司战略调整”作为借口,而这一次,他主动跳进了一个看似前沿实则波涛汹涌的赛道,却可能因为赛道本身的崩塌而再次搁浅。
他点开自己悄悄运行的量化系统监控界面。小小的窗口里,曲线依旧保持着极其缓慢但稳定的上升斜率。过去一周,市场震荡,他的系统通过微调参数,小幅回撤后再次收复失地,总资产默默地增加了两千多块。对比窗外整个web3行业的惊涛骇浪和室内即将到来的职业危机,这个小小的数字显得如此微不足道,却又如此真实、可控。
“代码可以骗人,但逻辑不会”。他想起自己常琢磨的这句话。web3的故事讲得再动听,一旦支撑故事的资金和信心崩塌,所有建立在之上的代码大厦都可能瞬间倾覆。而他的量化系统,逻辑基于公开的市场数据、经过验证的统计规律,虽然简单,却扎实。
下午,办公室的气氛更加诡异。明显没什么人有心思干活。有人不停地刷着招聘网站和行业社群,有人戴着耳机看视频教程却眼神发直,也有人聚在茶水间,交换着不知从哪听来的小道消息。
快下班时,林晨收到了张伟发来的微信。张伟:“晨哥,在吗?你们公司那边,情况怎么样?听到些风声”。
林晨走到楼梯间,拨通了电话。“不太好”。他言简意赅地把项目暂停的情况说了。
电话那头张伟沉默了几秒,叹了口气:“果然……这次震荡波及面太广,很多项目方和投资机构都吓破胆了,收缩是必然的。你们公司体量小,抗风险能力弱,最难受”。
“嗯,感觉到了。可能撑不了多久”。
“那你有什么打算”?张伟问得直接。
林晨看着楼梯间窗外,南山科技园华灯初上,无数写字楼格子间亮起灯光,那里有无数和他一样的打工人,其中多少人也正面临着类似的焦虑?“继续找机会吧。你上次说的,t厂AI部门……”
“对!我正想跟你说这个”!张伟的声音提高了一些,“我那个在t厂的朋友,昨天又跟我提了一次。他们AI应用事业部下面,确实有个团队在急招有工程化经验、又能理解业务场景的研发,p8级别,带小组。招聘窗口本来快关了,但因为最近一些候选人选择去了别的业务线,又空出名额。他觉得你的背景挺契合,尤其是你之前做电商系统,有复杂业务逻辑的落地经验,这是他们看重的”。
p8,带小组。林晨心跳快了一拍。这比他之前面试的那些web3公司提供的职位层级要高,更重要的是,t厂,AI核心部门。这几乎是他目前能想到的最理想的技术转型跳板。
“但是”,他冷静地问,“我的AI背景不强,主要是自学,没有大厂AI项目经验。这硬伤怎么破”?
“所以需要你尽快准备,突出你的学习能力、工程架构思维,还有你对AI技术解决实际问题的理解。简历要重新打磨,重点突出你从零自学AI的成果和思考,还有你那个量化系统——这就是你工程能力和AI应用思维的证明”!张伟语速很快,“机会不等人,这次窗口不知道开多久。我建议你,如果现在公司情况不明朗,不如集中火力攻这个。需要内推,我马上让我朋友操作”。
挂掉电话,林晨靠在冰冷的墙壁上。楼梯间感应灯暗了下去,他沉浸在黑暗中。焦虑依然存在,但这一次,慌乱之中,似乎有了一条隐约可见的路。不再是漫无目的地海投简历,等待不确定的面试,而是有一个明确的目标,需要他调动全部的精力和智慧去攻克。
回到工位,他关掉了那份可能永远无法上线的智能合约代码。打开了一个新的文档,标题写上:“t厂AI部门面试准备与个人技术陈述”。既然脚下的船可能要沉,那就必须尽快学会游泳,或者,找到一艘更坚固的新船。
下班走出办公楼,晚风带着一丝凉意。地铁站入口人流如织,每个人脸上都写着一天的疲惫。林晨汇入人流,手机震了一下,是苏婉发来的消息:“晚上想吃什么?乐乐说想吃你上次做的那个蒸蛋”。
简单的文字,却像一块温暖的磐石。他深吸一口气,回复:“好,我买点虾仁回去。今天有点累,但没事,回家说”。
家庭是他最后的港湾,也是他必须奋力前行的最大动力。他不能再次倒下。
第52章 寻找退路
鹏城的雨总是下得黏糊糊的。
窗外雨丝细密,将科技园那些玻璃幕墙大楼晕染成一片模糊的光斑。林晨坐在书房电脑前,屏幕上是精心修改过的简历文档,光标在“工作经历”一栏闪烁,像他此刻犹豫不决的心跳。
距离张伟告知 t 厂 p8 职位窗口重开,已经过去三天。这三天里,他除了吃饭睡觉,几乎所有时间都泡在了 Leetcode 、系统设计案例和 AI 基础理论的复习中。 t 厂的面试难度业内闻名,尤其是 p8 级别的技术面,据说能扒掉人三层皮。他必须全力以赴。
但心底深处,总有个声音在低语:万一呢?万一 t 厂面试失败了呢?把所有的鸡蛋都放在一个篮子里,风险太大了。公司那边,项目暂停已是事实,晨会上王总那张灰败的脸和越来越频繁的紧闭房门开小会,都预示着风暴将至。他不能坐以待毙。
“得找条退路”。林晨对着屏幕喃喃自语。手指在键盘上敲击,将最近一段“链艺坊科技”的 web3 开发经历,从简历的显眼位置调整到了更靠后的地方,描述也尽量模糊化,重点突出了之前十年跨境电商平台的后端架构经验。他删掉了“Solidity”、“智能合约”、“deFi 协议”这些扎眼的词汇,换上了更通用的“分布式系统”、“高并发处理”、“微服务架构”。
简历投递平台的选择也有讲究。他避开了那些新兴的、主打区块链和 web3 的垂直招聘网站,转而登录了猎聘、 boSS 直聘这些主流平台。筛选条件设定为:鹏城、互联网、后端开发、技术专家/架构师,薪资范围保守地设在了 40-60K ——这比他之前期望的 120 万年薪(月均 80-100K)几乎腰斩,但眼下,稳定和安全似乎比高薪更重要。
鼠标点击“一键投递”,几十份简历像出巢的工蜂,飞向一个个陌生的招聘方。最初的几个小时,是令人焦灼的沉默。林晨强迫自己离开电脑,做了几组俯卧撑,又泡了杯浓茶。他翻开那本《深度学习》,试图用公式和算法驱散内心的不安,但目光总是不由自主地瞟向手机。
直到下午三点,第一个电话来了。是一个座机号码,区号 0755 。林晨深吸一口气,接通,用尽量平稳的声音:“喂,您好”。
“是林晨先生吗?我这边是‘迅达科技’的 hR ,看到您投递的后端架构师岗位”。对方是个语速很快的女声,“方便简单沟通一下吗”?
“方便的,您请说”。
“您简历上最近一段经历,公司叫‘链艺坊科技’?是做哪块业务的?时间好像不长,只有几个月”?
来了。林晨心里一紧,尽量用平实的语气回答:“是的,这是一家探索区块链技术在供应链金融领域应用的公司,我负责后端技术架构。因为个人职业规划调整,目前正在看新的机会”。
“区块链啊……”对方拖长了尾音,语气里透出一种微妙的、了然的疏离感,“我们这边是传统的电商平台业务,对稳定性要求非常高。您之前主要在跨境电商,技术栈是 Java Spring cloud 那一套对吧?最近这段……区块链的经验,可能和我们岗位的技术栈匹配度不是特别高。而且我看您在这家公司时间比较短,是项目原因还是”?
“主要是项目方向调整”。林晨简短地回答,不想多谈。
“明白了。这样,您的简历我先收录,后续如果有合适的机会再联系您”。客套而标准的拒绝话术。
电话挂断。林晨握着手机,手心有些凉。第一个电话,几乎在听到“区块链”三个字时就戛然而止。接下来的两天,类似的场景重复上演。一家做在线教育的中型公司技术负责人直接问:“林先生,您这个 web3 的背景……我们这边业务比较务实,可能不太需要这方面经验。您能确保自己的技术重心没有偏离吗”?
一家本地生活服务平台的面试官更犀利:“我看您从做了十年的稳定领域跳到 web3 ,现在又跳出来,这个职业路径我们有些疑虑。您如何证明自己技术的扎实度和延续性?毕竟 web3 很多概念,跟我们的业务场景差距太大”。
甚至有一家银行的科技子公司,在技术一面时,面试官饶有兴致地问了几个智能合约安全的问题,林晨回答得不错,但到了二面 hR 那里,对方委婉表示:“林先生技术功底是好的,但我们银行体系内,对从业人员过往经历的合规性和稳定性审查非常严格。您最近这段在区块链初创公司的经历,可能……在背调环节会有些不确定因素。非常抱歉”。
每一次挂断电话或视频面试,书房里的寂静就加深一层。窗外雨停了,但阴云未散,灰蒙蒙的天光透过窗户,映照在林晨逐渐僵硬的脸上。他原本以为,自己十年扎实的后端经验是压舱石,那几个月的 web3 经历只是一段可以轻描淡写的插曲。现实却给了他沉重一击。在那些传统互联网公司、金融机构的 hR 和技术负责人眼里,这段经历非但不是加分项,反而成了一个刺眼的“风险提示标签”——技术栈可能浮夸、职业规划可能浮躁、公司背景可能不稳、甚至涉及领域存在合规模糊地带。
深夜,林晨没有开灯,独自坐在黑暗里。电脑屏幕幽幽的光照亮他紧抿的嘴唇和眼底的疲惫。
后悔吗?是的,一丝苦涩的悔意,像这南方的回南天,悄无声息地渗透进来,濡湿了心情。
当初从跨境电商大厂被裁,他在失业的泥潭里挣扎了半年,才勉强抓住这份 35K 的 web3 机会。相比之前的薪资,这已经是尊严折半后的妥协,可那时他以为这至少是一块能让他喘口气的浮木。他本想借着“时代前沿”的光环重新起跳,却没料到,这浮木烂得这么快。
现在, web3 的船眼看要沉,他想重新游回熟悉的对岸,却发现别人已经因为你身上沾了“海水”——那些在传统行业看来既新兴又可疑的技术经历,而不太愿意拉你上船。
原本降薪入职已是无奈,如今这段短暂且带有“风险标签”的经历,反而成了他职业履历上洗不掉的污点。他像是被困在了两个世界的夹缝里:旧世界嫌他“不纯粹”,新世界又要“抛弃”他。
“一步错,步步错”?他低声问自己。
手机屏幕亮起,是苏婉发来的微信:“老公,还在学习吗?别太晚,我给你热了牛奶,出来喝点吧”。
简单的文字,却像黑暗里透进的一束暖光。林晨深吸一口气,揉了揉发涩的眼睛。不能这样。后悔是最无用的情绪。路是自己选的,坑是自己踩的,怨天尤人解决不了任何问题。他站起身,走到客厅。苏婉穿着睡衣,将温好的牛奶递给他,什么也没问,只是轻轻拍了拍他的手臂。
“有点不顺利”。林晨喝了一口牛奶,低声说。
“嗯”。苏婉在他身边坐下,“我猜到了。这几天你接电话的语气,越来越沉”。
“原来那点 web3 经验,现在好像成了污点”。林晨苦笑,“传统公司嫌你不务实,怕你技术飘了,还怕你背景不干净”。
“那就别想‘退路’了”。苏婉的声音很柔和,却带着力量,“老公,你之前不是常说,当所有常规的路都走不通的时候,或许就是逼你走一条非常规但正确的路的时候。张伟哥说的那个 t 厂机会,不就是吗?他们看重的,应该不是你会不会写智能合约,而是你真正的学习能力、技术架构思维和潜力,对吧”?
林晨怔了怔,看着妻子沉静的眼眸。是啊,他这两天焦虑于寻找“退路”,拼命想抹去 web3 的痕迹,回归“安全区”,本质上是一种恐惧和退缩。而 t 厂的面试,恰恰要求他展现的不是过去的“安全”,而是面向未来的“突破”能力。 AI 领域,对他而言同样是全新的,需要极强学习能力和技术迁移能力。
“退路越找,心越慌”。林晨缓缓吐出一口气,眼神重新聚焦,“因为那些根本不是我想走的路,只是恐惧驱使下的胡乱抓挠。真正的路,只有前面那一条,就算难,也得闯”。
“想通了”?苏婉微笑。
“想通了”。林晨点头,将剩下的牛奶一饮而尽,“不投了,也不瞎琢磨了。接下来的时间,全部押在 t 厂的面试准备上。没有退路,就是最好的退路”。
他回到书房,关掉了所有招聘网站的标签页,清空了杂乱的书桌。屏幕上,只剩下打开的 IdE 、算法题库和那本厚重的《深度学习》。
窗外的城市灯火阑珊,雨后的夜空依稀透出几颗疏星。这一次,他必须破釜沉舟。
第53章 被裁的预兆
鹏城的春天来得早,科技园里的紫荆花已经开得有些颓了,花瓣零落在地上,被匆匆走过的脚步碾成淡紫色的泥。
林晨走进公司所在的写字楼时,明显感觉到气氛不对。往常这个点,一楼大厅的咖啡角总是挤满了端着杯子大声讨论的年轻人,话题离不开“共识机制”、“Layer 2 扩容”或是哪个新项目又融了多少钱。今天却异常安静,只有零星几个人坐在角落,低头刷着手机,表情凝重。
电梯里,他遇到了运营部的小王。一个小去年毕业的实习生,平时总是活力满满,见面会热情地喊“晨哥早”。今天小王只是勉强扯了扯嘴角,眼睛有点红,怀里抱着一个纸箱。
“小王,这是……” 林晨心里咯噔一下。
“晨哥”,小王的声音很低,“我……我被优化了。今天办完手续就走”。他顿了顿,像是想挤出一个笑容,却没成功,“以后常联系”。
电梯门开了,小王抱着箱子匆匆走了出去,背影有些仓惶。林晨站在原地,电梯门缓缓关上,镜面里映出他自己有些发愣的脸。
优化。 这个词最近在圈子里出现得越来越频繁,听起来比“裁员”温和,但实质一样冰冷。
走到工位区,那种异样的安静更加明显。开放式办公区往常键盘敲击声、讨论声、电话声混成一片,此刻却只有压抑的低声交谈和偶尔响起的消息提示音。几个老员工的工位空着,电脑黑屏,私人物品也不见了。
邻座的老赵凑过来,压低声音:“看到了吧?早上 hR 和部门老大挨个叫去谈话,实习生全清了,还有几个试用期没过的也走了。听说……” 他左右看了看,声音更低了,“下一步就是动老员工了。公司账上可能真有问题,上个月工资就拖了几天,这个月还没动静”。
林晨沉默地打开电脑,登录内部系统。邮箱里有一封未读邮件,来自人事部,标题是《关于近期组织架构优化的说明》。点开,通篇是标准的外交辞令:“为了更高效地聚焦核心业务”、“阶段性结构调整”、“感谢每一位同学的付出”、“公司对未来充满信心”……
他关掉邮件,手指无意识地在桌面上敲击着。入职才两个月,准确说,是两个月零七天。在跨境电商公司干了十年,一朝被裁;好不容易转型进入看起来火热的 web3 领域,脚跟还没站稳,新的风暴似乎又来了。
他下意识地开始计算:两个月,属于绝对的新人。如果裁员,按照“末位淘汰”或者“成本优化”的逻辑,新人、薪资相对较高的、或者贡献暂时不明显的,往往首当其冲。自己三条似乎都沾了点边——新人,薪资 35K 在技术部不算低但也不算最高,这两个月主要在熟悉项目和技术栈,还没独立负责核心模块。
房贷每个月一万二。乐乐幼儿园费用、一家三口的生活开销……如果断了收入,家里的存款还能撑多久?上次被裁后,存款已经消耗了一部分,虽然这两个月有工资进账,但公司这个月工资延迟发放本身就是个危险信号。
一股熟悉的焦虑感,像冰冷的海水,慢慢从脚底漫上来。他深吸一口气,强迫自己冷静。焦虑解决不了任何问题。代码可以骗人,但逻辑不会。现在需要的是基于事实和逻辑的判断与行动。
他点开招聘网站,但很快又关掉了。上一段经历还历历在目——盲目海投传统岗位只是浪费时间,还加剧恐慌。t 厂的面试准备不能停,那是目前看起来最清晰、最有希望的一条路。但眼前的危机是实实在在的,他不能把全部希望寄托在一个尚未确定的面试上,而对迫在眉睫的风险视而不见。
中午去食堂,人少了许多。往常排长队的几个窗口现在冷冷清清。打饭的阿姨都忍不住嘀咕:“今天人怎么这么少”?
林晨端着餐盘找了个角落坐下,味同嚼蜡。耳边传来隔壁桌几个技术部老员工的低声议论:
“听说投资方那边出了点问题,下一轮融资悬了”。
“项目进展也不理想,主网延迟上线,生态没做起来,token 价格跌得厉害……”
“我听说不止我们,好几家同行都在收缩。泡沫期过了,潮水退得比想象中还快”。
林晨默默地听着。web3,这个曾经让他觉得充满可能、试图抓住的新风口,此刻显露出它极其残酷和现实的一面。高波动,强周期,极度依赖资本和市场情绪。自己转型进来,本想避开传统互联网的内卷,却似乎跳进了一个更不确定、更颠簸的浪潮里。
下午的工作效率很低。他试图集中精神看项目代码,但思绪总是飘走。窗外天色阴沉下来,似乎要下雨。鹏城的春天,天气也变得快。他再次打开那个记录着学习计划和进度的本地文档。在“t 厂面试攻坚”的主条目下,他新建了一个子项:“应急与转型深化”。然后敲下几行字:
现状评估:当前公司极不稳定,裁员风险高(预估概率 > 70%),需立即启动应急方案。
财务缓冲:核实家庭现有流动资金,计算无收入状态下最低生存时长(需覆盖房贷、基础生活、乐乐教育)。压缩一切非必要开支。
技术聚焦:web3 领域知识继续维护,但不再作为主要投入方向。所有业余时间与精力,ALL IN AI(机器学习/深度学习基础、python 数据科学生态、可能的金融 AI 应用方向)。t 厂面试是短期核心目标,AI 技术深度是长期立身之本。
信息收集:谨慎地(discreetly)联系业内朋友(如张伟),了解其他 web3 公司真实状况及传统大厂 AI 部门招聘动态,不主动投递,但保持信息通道畅通。
心理建设:接受可能再次失业的现实,将其视为加速转型的推力而非打击。保持每日最低运动量,维持生理心理健康。
写完这些,他盯着屏幕,良久,按下了保存键。文档的标题,不知不觉被他改成了“涅盘路线图-第 2 版”。
下班时,雨终于下了起来,噼里啪啦打在玻璃上,模糊了科技园里那些灯火通明的写字楼。那些楼里,有多少人和他一样,正在经历着类似的忐忑?又有多少人,已经悄然离场?
林晨没带伞,把外套顶在头上冲进地铁站。回到家时,身上有些湿了。苏婉接过他滴着水的外套,摸了摸他的手:“怎么淋湿了?快擦擦。饭在锅里热着”。
乐乐跑过来抱住他的腿:“爸爸”!林晨抱起儿子,感受着那小小的、温暖的身体,心里那根紧绷的弦稍稍松了一些。他没提公司里的事,只是像往常一样吃饭,陪乐乐玩了一会儿积木。
夜深人静,林晨坐在书桌前。再次被裁的可能性很大,家庭经济压力会骤然增大。但这一次,和上一次被裁时那种茫然无措的状态不同,他似乎有了一点方向。
AI,那个需要投入大量时间精力去啃的硬骨头,那个可能在未来成为他创造价值工具的东西。危机迫使他必须更专注,更全力以赴。他打开了一个新的网页,输入:“机器学习入门,如何系统学习 python、tensorFlow、pytorch……”
鼠标点击搜索的那一刻,窗外雨声渐歇。屏幕的光映在他脸上,明暗不定。他知道,真正的战斗,或许在拿到 t 厂 offer 之前,就已经在另一个看不见的战场上打响了。而这场战斗,没有退路。
第54章 第二次裁员
周一早晨的科技园,空气里弥漫着一种说不清的压抑。林晨刚在工位坐下,还没来得及打开电脑,部门助理就走了过来,声音很轻:“林哥,hR 的 tina 请你现在去一下 3 号会议室”。
该来的,还是来了。林晨心里咯噔一下,但脸上没什么表情,只是点了点头:“好”。
起身时,他瞥了一眼周围。几个同事低着头,手指在键盘上敲得飞快,仿佛这样就能证明自己的“不可或缺”。办公室里安静得过分,连平时最活跃的“00 后”都噤若寒蝉。林晨深吸一口气,整理了一下身上这件穿了两年、但熨烫平整的衬衫,走向会议室。
3 号会议室是那种最小的透明玻璃间。hR tina 已经坐在里面,面前摆着一个文件夹。她三十出头,妆容精致,但眼神里透着一丝职业性的疲惫和疏离。
“林晨,请坐”。tina 指了指对面的椅子,语气还算客气。林晨坐下,没有说话,只是看着她。
tina 翻开文件夹,推过来一份文件。“公司最近的情况,想必你也有些了解。业务调整,部分岗位需要优化。很遗憾,你的岗位也在这次优化名单里”。她的语速平稳,像在背诵一段演练过很多次的台词,“这是解除劳动合同协议,你看一下。根据你在公司的服务时长——两个月零七天,公司决定给予半个月工资作为经济补偿。今天办完离职手续,补偿金会和本月工资一起结算,三个工作日内支付”。
半个月工资。
林晨拿起那份协议,目光扫过那些冰冷的条款。赔偿金额那一栏,数字小得刺眼。他在这家公司,拿着比之前跨境电商略高、但远未达到预期的薪水,拼命学了两个月 web3,加班加点赶项目,现在换来的是半个月工资的“优化”。一股火气直冲头顶,但很快被他压了下去。愤怒没用。他想起自己上周制定的“应急方案”,其中一条就是:如果被裁,必须争取合法权益。
“tina”, 林晨放下协议,声音平静,但每个字都清晰有力,“根据《劳动合同法》第四十六条、第四十七条,用人单位裁减人员,应当向劳动者支付经济补偿。补偿标准是按劳动者在本单位工作的年限,每满一年支付一个月工资。六个月以上不满一年的,按一年计算;不满六个月的,支付半个月工资。没错”。
tina 点点头,似乎松了口气,以为他接受了。
“但是”,林晨话锋一转,“tina,公司走的是《劳动合同法》第四十一条的‘经济性裁员’。根据法律规定,裁减人员二十人以上或者裁减人数占总人数百分之十以上的,用人单位必须提前三十日向工会或者全体职工说明情况,并向劳动行政部门报告。据我所知,公司并没有履行这套程序吧”?
他看着tina略显僵硬的表情,继续平稳地输出:“如果没有履行法定程序,公司现在的行为就属于‘违法解除’。根据第八十七条,违法解除应当支付赔偿金,标准是经济补偿金的两倍。也就是 $0.5 \times 2$,正好是一个月”。
他顿了顿,补上了致命的一击:“退一步说,就算公司想按标准补偿,根据第四十条,如果今天就要我办完手续离职,没有提前三十天书面通知,公司也必须额外支付一个月工资作为‘代通知金’。所以,不管是按照‘2N’的违法解除赔偿,还是‘N+1’的合法解除补偿,我要求的这一个月工资,都是在法律框架内最克制的要求”。
会议室里安静了几秒。tina脸上的职业微笑有些僵硬,她显然没料到林晨不仅熟悉法条,还精准地抓住了公司为了快刀斩乱麻而在程序上偷懒的软肋。
“林晨,你说的这些……通常实践中,大家都是好聚好散,没必要抠得这么死……”
“法律规定不是为了让人抠字眼,而是为了保护弱势方”。林晨打断她,语气依旧平稳,但带着不容置疑的坚定,“tina,我理解你的立场,也理解公司的困难。我不是在胡搅蛮缠。半个月和一个月,对你们来说只是账面上的微小浮动,但对我而言,这是我依法应得的权益,是我家庭未来一个月的重要支撑”。
他身体微微前倾,声音低了一些,但更显沉重:“我三十五岁,刚从上家公司被裁,家里有房贷,有孩子。找到这份工作不容易,这两个月我全力以赴。现在公司有困难,我接受优化,但请公司也遵守法律,给我一个最基本的、合法的交代。一个月的经济补偿,是我的底线。如果公司坚持只给半个月,那我可能需要花时间去咨询劳动仲裁,那对大家的时间精力都是损耗。我想,这也不是你希望看到的处理结果”。
这番话,有理有据,有情感但不煽情,有底线且暗示了后续可能的风险。tina 沉默了片刻,手指无意识地敲了敲桌面。她拿起手机:“我需要请示一下”。
五分钟后,她回到会议室,脸色缓和了一些。“林晨,公司同意按一个月工资支付经济补偿。这是修改后的协议,你看一下,没问题就签字吧。”
离开与迷茫
“谢谢”。林晨吐出两个字,仔细看完新协议,签下了自己的名字。笔尖划过纸张,沙沙作响,像是一种无奈的割裂。走出会议室时,他感觉脚步有些虚浮。又一次,失业了。
回到工位,他开始默默收拾个人物品。一个水杯,几本关于区块链和 python 的书,一个充电器。东西少得可怜。两个月的时光,仿佛没留下什么痕迹。交接工作异常简单,直属 Leader 拍了拍他的肩膀,说了句“保重,以后常联系”,眼神有些闪躲。
中午之前,他办完了所有手续,拿着那张薄薄的离职证明,走出了写字楼。阳光有些刺眼,林晨站在路边,一时竟不知该往哪里去。回家?面对苏婉关切的目光,面对乐乐的疑问?他感到一阵窒息。
他漫无目的地往前走,穿过天桥,走到深圳湾公园附近。找了张面朝大海的长椅坐下。海风带着咸湿的气息吹来,远处是春笋大厦和蜿蜒的海岸线,这座城市依旧繁华耀眼,但他却像个被甩出轨道的零件,孤独地滚落在角落。
一种前所未有的恐慌和沮丧攥紧了他的心脏。三十五岁,两次被裁,技术栈在剧烈变化中显得陈旧又不够深入,未来的路在哪里?
不知坐了多久,手机震动起来。是苏婉发来的微信:“老公,中午记得吃饭。别太累”。 简简单单一句话,让林晨的鼻子猛地一酸。他深吸一口气,回复:“好,你也是”。
关掉手机屏幕,他看着波光粼粼的海面。在资本和趋势面前,个体的价值如此脆弱,除非你拥有不可替代的“硬通货”。
技术。深度。立身之本。
一个念头,如同黑暗中划亮的火柴,虽然微弱,却固执地亮着:也许,张伟上次随口提的,那个需要深厚数学和算法功底的 AI 方向,才是真正该去沉下心钻研的?不只是为了面试,而是为了给自己铸一件无论风浪如何都能傍身的铠甲?
林晨站起身,腿有些麻。他最后看了一眼这片代表鹏城繁华与梦想的海湾,转身朝着地铁站走去。
失业的剧痛还在持续,但在一片混沌的黑暗里,那点关于“技术深度”的思考火星,似乎开始顽强地寻找可以燃烧的东西。
第55章 反思与顿悟
钥匙转动,推开家门。屋里很安静,苏婉带着乐乐去上晚上的绘画班了,还没回来。这种安静此刻显得格外沉重,仿佛能听见存款数字在账户里悄然流逝的声音。他瘫在沙发上,连开灯的力气都没有。窗外,对面楼宇的灯光透过玻璃,在昏暗的客厅地板上投下斑驳的光影。
失败。清晰的、不容辩驳的失败。
跨境电商十年,一朝被裁;转投web3,满怀希望,却只换来两个多月的短暂停留和又一次裁员通知。技术关能过,薪资却始终卡在120万这个他自认匹配价值的门槛上,一次次谈崩。问题到底出在哪里?真的是市场不识货,还是自己高估了?
黑暗中,他点开手机银行App。那串数字再次刺痛他的眼睛。赔偿金到账了,加上之前剩下的,总额……勉强维持在24万出头。鹏城的房贷每月雷打不动,家庭开销再怎么省,也是流水般出去。这笔钱,撑不了太久。焦虑像冰冷的海水,慢慢淹没他的胸腔,带来一阵窒息感。
不能这样下去。他猛地坐起身,打开了客厅的灯。刺目的白光让他眯了眯眼,却也驱散了一些浑噩。他需要好好想一想,彻彻底底地想清楚。打开笔记本电脑,他新建了一个文档,标题打下四个字:失败复盘。
一、 跨境电商十年
关键词: 熟练工、业务逻辑、维护为主、技术栈陈旧(php、传统架构)。
核心竞争力?似乎有,又似乎没有。离开那个平台,那些对特定业务逻辑的深刻理解,价值大打折扣。市场愿意为“即战力”付高价,但更愿意为“未来潜力”和“稀缺技术”付超高溢价。自己属于前者,且随着年龄增长,性价比在下降。
二、 web3求职经历
关键词: 跟风、概念火热、技术门槛相对模糊(对他而言)、行业波动剧烈。
自己看到了热度,听到了“高薪”传说,便一头扎进去。学习了Solidity,了解了智能合约,面试时能应对技术问题,但这够吗?仔细回想那些面试官的眼神,除了技术考核,似乎总带着一丝审视——审视他是否真正理解这个行业的底层逻辑和长期价值,还是仅仅为了高薪而来。
当自己坚持120万年薪时,对方或许看到的不是一个笃定的行业信仰者,而是一个待价而沽的“淘金客”。在波动巨大的新兴领域,企业(尤其是非头部)对成本的敏感远超想象,他们更愿意用期权画饼,或用相对高薪吸引真正的狂热信徒或顶尖极客,而不是一个“求稳”的中年转型者。
三、 核心竞争力缺失
这是最关键的一点。林晨在文档里把这几个字加粗、标红。什么是真正的、可迁移的、不受特定行业或公司限制的核心竞争力?是解决复杂问题的底层思维能力?是掌握一门足够深、足够硬、代表未来方向的尖端技术?还是两者结合?
他过去十年的经验,更多是“应用层”的熟练,缺乏对“基础层”的掌控。就像盖房子,他擅长根据已有图纸和材料砌墙装修,但如果地基工艺革新了,新型建筑材料出现了,他的那套经验就可能迅速贬值。web3的区块链、去中心化,听起来很“底层”,但对他而言,进入时已是应用层热闹非凡的时候。他学习的是如何在这个新地基上盖房子,而非理解这个地基为何被创造出来,以及它未来可能演变成什么形态。更重要的是,这个“地基”本身,尚未被主流社会完全接纳,波动性太大。
那么,什么才是那个更稳固、更主流、且代表明确未来方向的“地基”级技术?一个词在他脑海中越来越清晰:AI(人工智能)。
其实这个念头并非凭空出现。上次裁员后迷茫时,张伟就提过“看看AI”;这次在深圳湾绝望时,那个“必须掌握硬核技术深度”的念头,具体指向的也是“AI底层算法”。只是之前被web3的“快钱”传闻吸引了注意力,没有深入思考。
他关掉复盘文档,打开了浏览器。开始搜索:“AI就业市场薪酬”、“机器学习工程师前景”、“2023年AI技术趋势”、“大语言模型对开发者的影响”。大量的信息涌入视野。招聘网站上,AI相关岗位的薪资范围确实令人咋舌,资深算法工程师、大模型研发专家,年薪百万以上并不罕见,甚至两百万、三百万的职位也时有出现。更重要的是,这些岗位来自各行各业:互联网大厂、金融机构、车企、医疗器械公司……AI正在像水电煤一样渗透进所有行业,这意味着需求是广泛而持续的。
技术论坛里,讨论热火朝天。pytorch、tensorFlow、transformer、扩散模型、强化学习……一个个术语跳出来。他点开几个入门教程,看到那些数学公式、矩阵运算、梯度下降的曲线,感到一阵久违的挑战感和……兴奋感。是的,兴奋。这种需要啃硬骨头、需要深厚数理和工程功底的东西,反而让他看到了“壁垒”——正是他缺失的“核心竞争力”所在。
跟风web3,是因为它热,但热潮可能退去。投身AI,不仅仅是因为它现在热,更是因为他看到了它背后坚实的逻辑:提升效率、解决复杂问题、创造新生产力的巨大潜力,这是技术发展的本质驱动力之一。 它或许会有波动,但大方向已然确立,是未来十年、甚至更长时间的技术主航道之一。
“我需要的是在一条足够宽、足够长的赛道上,建立自己的技术壁垒”。林晨喃喃自语,眼睛越来越亮,“而不是在一条狭窄、起伏不定的小道上,追逐短暂的浪花”。
年龄是劣势吗?在需要快速学习、适应新概念的应用层面,或许是。但在需要经验、系统思维、工程化能力和持久耐力的深度技术层面,年龄带来的沉稳、专注和抗压能力,未尝不是一种优势。35岁,从头学AI晚了吗?也许比应届生晚,但比起40岁、45岁被迫转型,现在正是时候。
他想起面试web3公司时,自己心里那点对“不确定性”的隐隐担忧。当时觉得是为了高薪可以忍受的风险。现在明白了,那风险不仅仅是公司倒闭,更是自身技能在那种不确定性环境下的“浮萍”状态。而AI技能,无论去大厂、创业公司,还是未来自己想做点什么事情,都是实实在在的硬通货。
思路渐渐清晰,如同迷雾被阳光刺破。焦虑依然存在,经济压力还是悬在头顶的剑,但方向感的获得,极大地缓解了那种漫无目的的恐慌。他打开一个新的文档,开始制定计划:
行动计划
学习目标: 系统掌握机器学习、深度学习核心理论与实战,重点跟进大语言模型相关技术。语言:python(需巩固加强)。框架:pytorch为主。数学基础:线性代数、概率统计、微积分(需要复习)。
时间规划: 全职学习。每日至少保证8-10小时高效学习时间。分为理论学习、代码实践、项目复现、社区交流四个部分。
资源准备: 筛选优质在线课程(coursera、吴恩达;国内深蓝学院等)、经典书籍(《深度学习》、《动手学深度学习》)、开源项目、技术博客。
产出导向: 不能只输入。必须有自己的代码仓库,从简单的模型复现开始,逐步尝试构建小项目。考虑将之前模糊的“智能投资分析”想法,作为一个长期实践项目来构思,将AI与金融数据分析结合。
期限与缓冲: 暂定3-4个月密集攻坚期,达到可面试中级机器学习工程师的水平。同时,经济上……28万存款,必须极度节俭,撑过这段时间。t厂的二面,要全力准备,那是潜在的“上岸”机会,但不能作为唯一指望。
写完这些,林晨长长地吐了一口气。心中那块巨石,似乎被挪开了一些。不再是漫无目的的漂泊,而是看到了彼岸,尽管距离遥远,风浪未知,但至少,船桨握在了自己手中,知道了该往哪个方向用力。
窗外传来钥匙声响,苏婉和乐乐回来了。乐乐叽叽喳喳地说着今天画了怎样的大海,苏婉温柔地应和着。林晨合上电脑,站起身。脸上不再是傍晚时的灰败,虽然疲惫,但眼神有了焦点。他走过去,接过苏婉手里的东西,摸了摸乐乐的头。
“爸爸,你怎么了?眼睛红红的”。乐乐仰头问。
“没事”,林晨笑了笑,“爸爸刚才在想事情,现在想通了”。
苏婉看了他一眼,似乎察觉到他情绪的变化,没有多问,只是轻声说:“饭在锅里热着,先吃饭吧”。
吃饭时,林晨主动开口:“婉婉,我可能……需要一段时间,专心学点新东西。工作的事,先不急”。
苏婉夹菜的手顿了顿,抬眼看他,目光里有询问,但更多的是支持:“想学什么”?
“AI,人工智能。我觉得这才是以后吃饭的真本事”。林晨语气平静,却带着决心。
苏婉点点头,给他碗里夹了块排骨:“学吧。家里的事你别操心,有我。需要买什么书、什么课,该花就花”。
没有质疑,没有抱怨,只有一如既往的信任。这份信任,此刻比任何鼓励都更有力量。林晨鼻子微微发酸,重重点头:“嗯”。
夜深人静,乐乐和苏婉都睡了。林晨坐在书桌前,再次打开电脑。他没有立刻开始学习,而是点开了那个标注着“家庭资产与开支”的表格。看着上面的数字,他默默计算着。然后,他新建了一个文件夹,命名为“AI重生之路”。在里面,他郑重地敲下了第一行学习笔记:
“day 1. 认清现实,选择赛道。核心竞争力在于深度,而非浮光掠影。从python和线性代数复习开始。目标:构建属于自己的技术护城河”。
窗外,鹏城的夜空难得能看到几颗星星。星光虽弱,却足以照亮一段新的征程。林晨知道,这条路绝不会轻松,甚至可能比想象中更艰难。但这一次,他不是追逐风口,而是选择夯实自己的地基。
代码可以骗人,但逻辑不会。而人生的选择,同样如此。
第56章 AI的启发
时间进入2025年12月底。
鹏城的天气依旧温和,但林晨的心境却像坐过山车。自从上次复盘会后,他强迫自己进入规律的学习状态,每天泡在技术论坛和 Leetcode 上,为可能的 t 厂面试做准备。但内心深处,那种“方向模糊”的焦虑感,依然像背景噪音一样挥之不去。
这天下午,他正对着电脑屏幕上一道复杂的动态规划题皱眉,手机忽然震动了一下。是前同事张伟发来的微信消息,没有文字,只有一个链接,标题是:《openAI 发布 chatGpt:对话式 AI 的新里程碑》。
初次邂逅:不仅仅是玩具
林晨随手点开,快速浏览了一下文章。虽然 2025 年的今天,AI 早已不是新鲜词,但这篇文章复盘了三年前那次改变世界的发布。他正准备关掉页面,手指却顿住了,他开始顺着链接去体验最新迭代的版本。
文章里附了一个简单的演示视频。一个用户用自然语言问:“用 python 写一个快速排序算法,并加上详细注释”。几秒钟后,一段结构清晰、注释规范的代码就生成了出来。接着,用户又问:“这段代码的时间复杂度是多少?用通俗的语言解释一下”。AI 立刻给出了准确的分析和比喻。
林晨的背脊下意识地挺直了。作为十年码农,他太清楚这意味着什么。这不是玩具。这玩意儿,能理解意图,能生成符合规范的代码,还能解释原理。他立刻在电脑上搜索 “chatGpt”,找到了官网。在 2025 年这个节点,它已经进化到了极其恐怖的程度。
震撼体验:理解的力量
第一个问题,他带着一丝考校的心态,输入了自己刚才卡壳的那道 Leetcode 动态规划题的中文描述:“有一个背包,容量为 $w$,有 $n$ 个物品,每个物品有重量 $w_i$ 和价值 $v_i$,求能装入背包的最大价值”。
回车。几乎在瞬间,回答框里开始逐字跳出答案。不仅仅是代码,还包括了问题分析(0-1 背包问题)、状态定义、转移方程、代码实现(python),甚至最后还补充了一句:“注意边界条件,dp 数组通常初始化为 0,容量从大到小遍历以防重复选取物品(针对 0-1 背包)”。
林晨盯着屏幕,足足愣了十秒钟。他试过很多代码辅助工具,从早期的代码片段提示,到后来的 Github copilot,但那些更像是“高级补全”。眼前这个 chatGpt,它是在“理解”问题,并在“思考”后给出解决方案。那种流畅和准确,带来了一种近乎诡异的震撼。
他深吸一口气,开始尝试更多问题:
求职场景: “帮我写一封英文求职信,申请 t 厂的 AI 算法工程师岗位,突出我的十年全栈经验和近期自学深度学习的决心”。(一封格式标准、用词得体、重点突出的求职信框架立刻生成。)
知识科普: “解释一下 transformer 架构中的自注意力机制,用比喻的方式”。(AI 用“宴会上每个人同时与所有人交谈并根据相关性调整倾听程度”的比喻,将复杂的数学概念讲得生动形象。)
商业分析: “我想在鹏城科技园附近开一家快餐店,帮我分析一下优势和潜在风险”。(它从人流量、消费能力、竞争格局、成本结构等多个维度进行了条理清晰的分析,框架极其专业。)
认知重启:海啸将至
接下来的几个小时,林晨完全沉浸在与这个 AI 对话的震撼中。他问技术,问商业,问学习路径。每一次回答,都像有一个不知疲倦、学识渊博的专家在与他实时对话。
窗外天色渐暗,林晨却感觉自己的大脑被一道强光劈开,豁然开朗。他转而疯狂地搜索一切相关信息:技术论坛已经炸锅;AI 绘画(Stable diffusion、midJourney)正甚嚣尘上;曾经火热的 web3 社群,讨论也明显全面流向了 “AIGc”。
林晨靠在椅背上,双手交叉放在脑后,望着天花板。心脏在胸腔里有力地跳动,不是因为焦虑,而是因为一种久违的、接近兴奋的颤栗。他之前的判断是对的,但还不够深刻。AI 不是未来之一,它正在成为唯一的、汹涌澎湃的现在。
这不仅仅是技术迭代,这是生态位重塑。那些需要理解、生成、转换内容的工作,都将面临重新定义。而掌握构建和驾驭这些 AI 能力的技术人,将成为新生态里的“造水者”和“驾船人”。
全力投入:为计划注入灵魂
“这才是真正的机会……”林晨喃喃自语。web3 像是远处迷雾重重的森林,而 AI 则是眼前一条正在急速拓宽、路面坚实的超级公路。他重新打开学习计划文档,在开头加粗了一行字:
核心认知:AI,特别是大模型及相关应用,是未来十年以上确定性最高、天花板最高、对个人技术壁垒要求也最高的核心赛道。All in。
学习路径也随之微调。必须深入理解 transformer 架构,实战 pytorch/tensorFlow 框架,研究 prompt Engineering(提示词工程),以及 AI 与“投资分析”结合的实践。
晚饭时,苏婉察觉到了他的不同。那是一种由内而外透出的、带着热度的专注。林晨详细讲述了今天的震撼,苏婉微笑回应:“你看它的眼神,跟我看你当年第一次做出那个自动报表工具时的眼神有点像”。
终极构想:智能投资系统
夜深人静,林晨坐在书桌前,打开了一个新的空白文档,敲下了标题:《“智能投资系统”构想 V0.1》。
如果 AI 能理解复杂问题,是否可以将金融市场的海量数据喂给它,辅助做出投资决策?这不只是一个学习项目,这可能是他融合十年编程经验与未来 AI 技能的终极实践。
在 2025 年失业的低谷中,三十五岁的林晨,因为一个对话式 AI 的启发,真正点燃了内心那簇名为“希望”与“野心”的火苗。
代码可以骗人,但逻辑不会。而逻辑告诉他,这一次,他可能真的踩在了时代的鼓点上。
第57章 制定学习计划
清晨六点半,鹏城的天刚蒙蒙亮。林晨已经醒了,或者说,他几乎一夜没怎么合眼。脑子里像有个高速运转的cpU,各种关于AI、机器学习、未来路径的想法来回碰撞。他轻手轻脚地起床,看了眼身边熟睡的苏婉和儿子乐乐,悄悄带上卧室门,走进了狭小的书房。
打开电脑,屏幕的光映亮了他有些疲惫但异常兴奋的脸。他做的第一件事,就是打开昨晚创建的《智能投资系统构想V0.1》文档,在标题下面加了一行加粗的字:【项目前提:系统性掌握AI/mL技术栈】。
“方向定了,接下来就是执行”。林晨喃喃自语,点开了浏览器。搜索引擎里输入“AI 学习路线”、“机器学习 入门”、“深度学习课程”。一瞬间,海量的信息涌来:知乎的高赞回答、b站上的免费教程列表、各种培训机构天花乱坠的广告、技术论坛里众说纷纭的讨论帖。
林晨没有慌乱。十年的程序员生涯让他养成了一个习惯:面对复杂问题,先做信息收集和评估,再制定可执行的计划。他新建了一个Excel表格,列名分别是:课程/资源名称、平台/作者、费用、口碑评价(来源)、预计耗时、优先级。他泡了杯浓茶,开始像一个技术采购员一样,仔细筛选。
免费资源很多。b站上就有不少搬运的斯坦福cS231n(计算机视觉)、cS224n(自然语言处理)课程视频,还有国内一些高校的公开课。技术博客、开源项目、paper with code网站……信息量庞大得足以淹没一个新手。“免费是最贵的”。林晨想起不知在哪里看过的一句话。对于他现在的处境——时间紧迫、目标明确、需要最高效的路径——漫无目的地看免费教程,可能反而会浪费最宝贵的窗口期。
他的目光落在了几个需要付费,但口碑几乎一致推崇的名字上。
第一个是吴恩达(Andrew Ng)在coursera上的经典课程《machine Learning》。这门课被称为无数人的机器学习启蒙课,用相对易懂的方式讲解基础概念和算法,配套的编程作业也很有名。“299美元……折合人民币两千多”。林晨看了一眼价格,手指在鼠标上停顿了一下。他的银行卡里,家庭存款已经跌破30万大关,并且还在随着每个月的房贷、生活费、孩子开销稳步下降。每一笔非必要支出,都像在割肉。但他很快想起了昨晚的决断。“投资自己,是眼下唯一确定有高回报的事”。他咬了咬牙,在Excel里记下这门课,标记为“优先级:高”。
第二个是李沐(mu Li)的《动手学深度学习》。这位亚马逊AwS资深首席科学家,和他的团队一起打造了这本在线交互式书籍和配套课程,以代码实践驱动,深入浅出地讲解深度学习,在中文AI学习圈子里有口皆碑。课程本身是开源的,但配套的深度讲解视频和专属社区服务需要付费。“这个更适合我”。林晨想。他有扎实的编程基础,缺乏的是对深度学习框架(pytorch)和核心概念的体系化理解。李沐课程“动手”的特质,正好契合他“学以致用,快速构建系统”的目标。
他继续搜索,补充了其他一些资源:快速重温线性代数、概率论、微积分等数学基础的参考书目和视频;pytorch官方教程和文档;以及几个关注金融量化、时间序列预测的Github开源项目,作为后续实践参考。
不知不觉,窗外天已大亮。鹏城早高峰的车流声隐隐传来。苏婉轻轻推开书房门,端着一碗小米粥和一个煮鸡蛋进来。“一早就忙上了”?她把早餐放在书桌角落,瞥了一眼屏幕上密密麻麻的表格和网页。
“嗯,得把学习路线规划出来,不能乱打”。林晨接过粥,温度刚好,“谢谢老婆”。
苏婉看着他眼里的血丝,心疼又无奈:“别太拼,身体要紧。这……又要花钱买课了吧”?她看到了浏览器支付页面的标签。
“嗯,两门主要的,加起来大概四千块左右”。林晨说得平静,但留意着苏婉的反应。
苏婉沉默了几秒,轻轻叹了口气:“该花的钱得花。家里……我这边工资还能撑一阵,你安心学。就是这存款,看着越来越少,心里有点慌”。
林晨握住她的手:“我知道。所以我才要规划好,用最短的时间,学最有效的东西。这笔投资,我一定会让它超额回报”。他的语气坚定,眼神里有一种破舟沉釜的光芒。
吃完早饭,林晨正式开始制定他的“AI涅盘学习计划V1.0”。他在一个新的文档里写道:
总体目标: 4-6个月内,系统掌握机器学习与深度学习核心理论与实战能力,能够独立设计、实现、调优中等复杂度的模型,并为“智能投资系统”打下坚实的技术基础。
核心资源:
基础与框架: 吴恩达《machine Learning》;李沐《动手学深度学习》。
数学补强: 3blue1brown动画视频及经典教材,以够用、理解为原则。
技术栈聚焦: python -> Numpy/pandas -> matplotlib/Seaborn -> Scikit-learn -> pytorch -> 相关扩展库(如prophet等)。
阶段规划:
第一阶段(第1-2个月):筑基与入门。 完成吴恩达《mL》课程,吃透编程作业;同步进行数学补强;熟练使用数据科学生态。
第二阶段(第3-4个月):深度学习核心攻坚。 主攻李沐《动手学深度学习》,掌握神经网络、cNN、RNN/transformer及pytorch核心技巧。
第三阶段(第5-6个月):专题实践与系统构思。 聚焦金融时间序列预测,构建预测原型,设计“智能投资系统”架构。
每日时间表(暂定):
上午 8:00-12:00:核心课程学习/编码实践
下午 2:00-6:00:数学补强/技术拓展阅读
晚上 8:00-10:00:复习、总结、规划
写到这里,林晨长长地舒了一口气。计划摆在眼前,庞大,清晰,也令人望而生畏。尤其是看到“数学补强”那几个字,他仿佛已经感觉到当年被高数支配的恐惧正在回归。
他点开了付费入口,两次支付确认,银行卡的扣款短信接连响起。四千块,是乐乐好几个月的零花钱,是家里两个月的物业水电燃气费。它现在变成了硬盘里的课程和浏览器里的书签。“代码可以骗人,但逻辑不会,人更不能”。林晨想起自己常说的话。这次,他押上的不是一段代码的逻辑,而是自己未来人生的逻辑。
他点开课程的第一节视频,吴恩达教授温和的声音从耳机里传出:“wele to machine Learning...”
林晨摊开崭新的笔记本,拿起笔。窗外的鹏城,阳光已经完全驱散了晨雾,高楼大厦的玻璃幕墙反射着耀眼的光芒。这座城市永远忙碌,永远在淘汰和新生。而他,正式关上了过去十年的门,开始朝着一个充满代码、数学公式和未知挑战的新世界,迈出了第一步。
第58章 购买课程
鼠标指针在“确认支付”按钮上悬停了足足十秒。
林晨深吸一口气,看了眼电脑屏幕右下角的时间:晚上九点四十七分。客厅里传来儿子乐乐看动画片的轻微声响,厨房水槽边,苏婉正在清洗晚餐的碗碟,水流声规律而清晰。这个再普通不过的鹏城夜晚,因为他即将点击的这个按钮,似乎被赋予了某种沉重的仪式感。
屏幕上,购物车里躺着他精心挑选的最后一份学习资源——一门来自国外顶尖理工学院教授录制的《数据科学数学基础》高级进阶课。尽管昨天已经豪掷四千多购买了吴恩达和李沐的核心课程,但在昨晚翻阅了前者的预习资料后,林晨敏锐地发现,自己那点快要还给大学老师的数学底子,根本支撑不起高强度的算法推导。
两千一百元。这是这门数学专项课的价格。加上昨天的支出,他在不到二十四小时内,已经在“大脑投资”上砸下了快七千块。
七千块。这个数字在他脑海里自动换算成了别的东西:将近半个月的房贷,儿子乐乐一学期的课外班费用,或者全家人三个月的生活开销。他失业在家,每个月唯一的进账是两千出头的失业救济金,杯水车薪。存款数字在支付了上笔学费后,已经无声地跌破了二十三万五。这笔钱一出去,账面上就只剩下二十三万三千多了。
指尖有些发凉。他不是没想过找免费资源,但时间和效率是他现在最耗不起的成本。三十五岁,失业,家庭支柱,他必须用钱去买一条最清晰、最能缩短摸索过程的路径。系统的课程、完整的推导演练、有问必答的助教社区,这些都是他急需的“加速器”。
“投资的逻辑很清晰”,他暗自对自己说,“用当前确定的、可承受的现金,去搏一个未来可能远超此数倍的职业回报”。虽然这可能性目前看起来还像远处海平面上一丝微弱的光,但他必须押注。
指关节微微用力,点击,指纹验证,短信码输入。几秒钟后,屏幕弹出绿色的“支付成功”。手机震动,银行App的扣款通知精准推送:【支出2100.00元,账户余额232,112.37元】。林晨迅速锁屏,把手机扣在桌面上,仿佛这样就能暂时忽略那个不断缩小的数字。他靠在椅背上,长长地吐出一口气,心头沉甸甸的,那是背水一战的实感。
“又买了一门”?苏婉不知何时已经洗完了碗,擦着手走进小书房。她穿着家居服,眼神里带着一丝关切,也藏着一丝难以察觉的忧虑。
“嗯,最后的一块拼图”。林晨坐直身体,把屏幕转向她,“昨天那两门是教怎么盖房子的,今天这门是教怎么打地基的。如果不把数学基础补牢,后面学算法就像在沙滩上建大厦,早晚要塌”。
苏婉俯身看了看,屏幕上那些复杂的矩阵公式和微积分符号对她来说宛如天书。她的目光在价格上停留了一瞬,嘴唇微微抿了一下,但很快移开,点了点头:“买好了就行。钱花了就花了,咱们家……还没到那份上。我工资还能撑得住”。
这话她说得轻柔,但林晨听出了里面刻意淡化了的压力。苏婉的教师工资要覆盖每月近两万的房贷和全家开销,根本是杯水车薪。她是在用自己的温柔,为林晨筑起最后一道心理防线。
林晨抓住她的手,冰凉。他语气坚定,更像是在对自己承诺:“放心,婉婉。给我四个月,最多半年,这笔投资我一定会赚回来”。
第二天早晨七点,林晨准时起床,比失业以来的任何一天都早。洗漱后,他给自己冲了杯浓咖啡,八点整,准时点开了视频。
吴恩达教授温和的声音和清晰的板书出现在屏幕上。第一课讲的是单变量线性回归。原本以为这只是简单的“找直线”,但当涉及代价函数(cost Function)和梯度下降(Gradient descent)的数学推导时,林晨才发现挑战才刚刚开始。
他必须不断暂停视频。遇到不太明白的偏导数部分,他就立刻翻开那门刚买的数学课,找到对应章节快速回顾。时间在专注中流逝得飞快。原计划看三节课视频,结果光是推导清楚梯度下降的收敛逻辑,就花了他整整一上午。
午饭后,他开始动手实践。按照课程要求,在本地运行python代码,用梯度下降模拟拟合数据点。 “Import numpy... 定义迭代率... 更新权重...”他嘴里低声念叨着。当代码运行几百次后,屏幕上终于出现了一条完美拟合数据点的红线时,一种久违的、属于程序员的纯粹成就感涌了上来。
那是逻辑被验证、机器听从指令的快乐。尽管这只是一个“hello world”级别的程序,但林晨知道,这代表他已经踏入了那个门槛。
下午五点,大脑已经处于饱和状态,尤其是高强度的数学运算消耗了大量精力。林晨没有硬撑,他起身走到窗边,看着楼下深南大道上奔流不息的车流。这座城市从不怜悯弱者,但也从不拒绝拼命的人。
他回到桌前,翻开一个专门的“概念本”,开始把今天的所得用自己的话重写一遍。他坚信最高效的学习不是被动输入,而是主动重构。他在本子的扉页写下一行字:“代码可以骗人,但逻辑不会”。
晚上七点,苏婉下班带回了新鲜的排骨。看到林晨还在桌前忙碌,旁边摊开着写满公式的草稿纸,她轻声问道:“学得怎么样”?
“有点慢,但地基正在一点点扎下去”。林晨揉了揉发酸的眼睛,笑了笑,“比我想象中有趣,也比我想象中难。但这种脑子转起来的感觉,挺好”。
夜深人静,林晨再次坐回书桌前。他没有继续推公式,而是打开了股市行情软件。看着跳动的K线图,他脑中忽然闪过今天学的“梯度下降”。
他在学习计划的“实践项目”一栏,郑重地加了一行备注:【探索线性回归模型在多因子股价分析中的初步应用】。
七千块钱购买的,不止是几百G的视频资料。它是一把钥匙,打开了一扇门,门后是一条必须靠他自己双脚走出的道路。这条路可能通往大厂的offer,也可能通往财务自由的险峻山径,但唯一确定的是,他已经迈出了第一步。
这一夜,林晨关上灯躺在床上时,心里比前几个月任何一个夜晚都要踏实。颈椎的酸痛和大脑的疲惫是真实的,但那种重新掌控生活节奏的感觉,让他觉得,自己心里点亮的那颗微弱的光,正在变得越来越清晰。
第59章 数学的挑战
凌晨一点,鹏城某小区狭窄书房的依然亮着灯。林晨盯着屏幕上那个简单的线性回归公式,眉头拧成了一个疙瘩。“y = β? + β?x + e……”他低声念着,手指无意识地敲击着桌面。公式本身并不复杂,甚至可以说简单得过分。但当他试图理解吴恩达在视频里解释的“最小二乘法”,以及如何通过矩阵运算来求解β系数时,大脑就像生锈的齿轮,发出刺耳的摩擦声。
矩阵?特征向量?协方差?这些词汇像是从记忆深处某个落满灰尘的角落里飘出来的幽灵。林晨隐约记得,大学时那门《线性代数》他考了78分——不算差,但也绝不算好。更重要的是,那是十三年前的事了。
十三年。对于一个在跨境电商公司写了十年业务代码的程序员来说,十三年意味着什么?意味着他熟练掌握了Spring boot、mySqL、Redis,能闭着眼睛搭建一套分布式系统,但对矩阵求逆的记忆,早已被无数个“if-else”和“for循环”覆盖得干干净净。
“靠……”林晨揉了揉发胀的太阳穴,关掉视频,打开浏览器。他在搜索框里输入:“机器学习需要哪些数学基础?”搜索结果跳出来,密密麻麻。线性代数、概率论与数理统计、微积分、优化理论……每点开一个链接,焦虑就加深一层。那些技术博客和知乎回答里,充斥着“必须掌握”、“核心基础”、“否则寸步难行”之类的字眼。更让他心头发紧的是,许多回答都假设读者是“理工科背景”、“数学基础良好”。
林晨确实是理工科毕业,中南省那所大学的计算机专业不算顶尖,但也正经教过高数、线代和概率论。问题在于,他毕业了,工作了,然后把那些“用不上”的知识,像卸载旧软件一样,从大脑硬盘里清除了。现在,当他想安装一个名为“AI工程师”的新程序时,系统提示:缺少必要的运行库。
他靠在椅背上,望着天花板上那盏有些晃眼的吸顶灯。窗外远处的城中村早已安静下来,只有远处偶尔传来的货车轰鸣。妻子苏婉和儿子乐乐在卧室里睡得正熟,这个小小的书房,成了他一个人的战场。而此刻,他连敌人的第一道防线都还没突破。
一种熟悉的无力感涌上来。不是被裁员时那种突如其来的重击,而是一种更缓慢、更粘稠的侵蚀——你意识到自己与目标的距离,不是靠努力奔跑就能缩短的,中间横亘着一道需要重新搭建的桥梁。而你,已经三十有五,存款在减少,时间在流逝。手机屏幕亮了一下,是银行App的月度账单推送。林晨瞥了一眼,没点开。他知道数字:房贷、房租、生活费、乐乐的幼儿园费用,还有昨天刚支出7000块的课程费。那笔钱像一根针,扎在心头。
“不能停”。他对自己说,声音在寂静的房间里显得格外清晰。失业这两个月,他面试、碰壁、焦虑、调整方向,好不容易才找到这条看起来有希望的路。如果连数学这道坎都过不去,那之前的决心、苏婉的支持、还有那不断减少的存款,都成了笑话。
林晨深吸一口气,关掉所有网页,打开了一个空白文档。他在最顶端写下:“数学补课计划”。然后,他开始列清单:1. 线性代数:矩阵运算、特征值/特征向量、奇异值分解(SVd)。重点:理解如何用矩阵表示数据和模型参数,以及SVd在降维中的应用。2. 概率论与数理统计:条件概率、贝叶斯定理、常见分布、最大似然估计。重点:理解机器学习中的概率模型和不确定性。3. 微积分:偏导数、梯度、链式法则。重点:理解神经网络反向传播的核心——梯度下降。4. 优化理论:凸优化基础、拉格朗日乘子法。重点:理解损失函数最小化的数学原理。
写完清单,他盯着看了足足一分钟。内容不多,甚至可以说很基础,但对于一个遗忘已久的中年人来说,每一行都像一座需要翻越的小山。“从哪里开始呢”?他想起大学时用的教材,那本绿色封皮的《线性代数》,好像还在老家。但远水解不了近渴。林晨再次打开浏览器,这次他搜索的是“成人自学数学” 资源。几个小时后,天边泛起了鱼肚白。
林晨的电脑桌面上,多了几个新的文件夹和书签。他找到了mIt的公开课《线性代数》,找到了可汗学院的相关章节,还下载了几份国内名校的讲义pdF。更重要的是,他在一个技术论坛里,发现了一份名为《机器学习数学基础速查与直观理解》的精华帖,作者用程序员能懂的语言和代码示例,解释那些抽象的数学概念。这让他稍微松了口气。至少,路标是清晰的。
早晨七点,苏婉起床准备早餐,看到书房里依然亮着的灯和丈夫布满血丝的眼睛,吓了一跳。“你……一夜没睡”?“睡了几个小时,后来又醒了”。林晨活动了一下僵硬的脖子,声音有些沙哑,“在想学习计划的事”。苏婉走过来,看了一眼屏幕上密密麻麻的笔记和打开的多个pdF文档。“遇到困难了”?“嗯”。林晨苦笑,“发现要学AI,得先补数学。大学学的,全还给老师了”。
苏婉沉默了几秒,轻轻拍了拍他的肩膀:“慢慢来,别急。身体要紧”。“不急不行啊”。林晨摇摇头,指了指电脑屏幕上的银行App图标,“存款一天天少,我得尽快学出点东西来,哪怕先找个相关工作过渡也行”。这话说出口,两人都陷入了短暂的沉默。经济压力是房间里真实存在的大象,他们每天都在小心翼翼地绕开它,但谁都清楚它的体积和重量。
“先吃早饭吧”。苏婉转身走向厨房,“我给你煮个鸡蛋,补补脑”。早餐时,林晨一边剥鸡蛋,一边用手机继续看那份《直观理解》的帖子。帖子讲到矩阵乘法可以看作是一种线性变换,就像拉伸、旋转、剪切空间。他试着想象,突然觉得有点意思——代码是逻辑的排列,数学是空间的变换,底层似乎有某种相通的美感。
“爸爸,你在看什么”?乐乐捧着牛奶杯,好奇地问。“在看……魔法公式”。林晨笑了笑,用孩子能懂的方式说,“学会了这些公式,爸爸就能做出更聪明的电脑程序”。“像奥特曼的变身器吗”?“嗯……差不多吧”。林晨揉了揉儿子的脑袋,“一种能让爸爸变厉害的变身器”。
送走苏婉和乐乐后,林晨没有立刻回到电脑前。他换了一身运动服,下楼绕着小区的跑道慢跑了二十分钟。清早的空气带着一丝凉意,跑动让僵硬的思维稍微活络了一些。他需要保持体力,这场自学马拉松,拼的不仅是智力,更是耐力。回到家,冲了个澡,林晨正式开始了他的“数学重生之旅”。
他选择从线性代数开始,打开mIt公开课的视频。Gilbert Strang教授白发苍苍,讲课时充满热情。林晨戴上耳机,拿出崭新的笔记本。第一个概念:向量。“这我懂”。林晨心想,不就是有方向的量嘛。但Strang教授很快引入了向量的几何意义和线性组合,接着是将矩阵看作是对向量的操作集合。当教授在黑板上写下Ax=b,并解释A如何将向量x“变换”成向量b时,林晨第一次感受到了那种“啊哈”!的顿悟时刻。
原来,那些枯燥的数字方阵,是在描述空间如何被扭曲、拉伸。而求解线性方程组,就是在寻找一个输入x,使得经过A这个“机器”加工后,能得到想要的输出b。这个直观的图像,比单纯记忆行变换和求逆公式,要深刻得多。他暂停视频,在笔记本上画了一个简单的坐标系,尝试自己描述一个小矩阵对向量的作用。然后,他打开python,用Numpy库写了几行代码,亲眼看到矩阵乘法如何改变向量的坐标。
“有点意思”。林晨嘴角微微上扬。当抽象的概念通过代码和可视化变成具体可感的东西时,学习的阻力似乎小了一些。整个上午,他都沉浸在向量空间、子空间、零空间这些概念里。笔记写了十几页,代码也敲了几十行。遇到卡壳的地方,他就去翻那篇精华帖,或者去网上搜索。慢慢地,那些曾经面目可憎的术语,开始变得熟悉起来。
午饭是简单的面条,苏婉早上准备好的。林晨一边吃,一边用手机继续看可汗学院关于概率的视频。下午,他开始挑战微积分——主要是偏导数和梯度。这是理解神经网络如何“学习”的关键。求导的规则他还有点印象,但梯度的方向意义,需要重新建立理解。他找到一张神经网络损失函数的示意图,尝试手动推导一个简单线性模型关于权重的偏导数。过程有些繁琐,但一步一步下来,当他最终得到那个表示“误差对权重敏感度”的表达式时,一种久违的成就感油然而生。那不是完成一个业务需求的成就感,而是一种触及事物底层逻辑的、纯粹的智力愉悦。
傍晚时分,林晨合上笔记本,感到大脑像被充分锻炼后的肌肉,既疲惫又舒畅。他站起来,走到窗边。夕阳给密集的“握手楼”镀上了一层金边。一天的高强度学习,他并没有完全掌握那些数学知识,距离“熟练掌握”更是差得远。但他迈出了第一步,而且是扎实的一步。他重新建立了与数学的连接,找到了适合自己的学习方法,更重要的是,他克服了最初看到数学公式时那种本能的畏难和焦虑。
“代码可以骗人,但逻辑不会”。他想起自己常说的话。数学,或许就是那个最不容欺骗的底层逻辑。苏婉下班接乐乐回来了。晚饭时,林晨主动跟苏婉聊起了今天的学习心得,讲到矩阵的几何意义时,甚至还用手比划了几下。苏婉虽然听不太懂技术细节,但能看到丈夫眼中重新亮起的光彩,那比什么都让她安心。
夜里,林晨再次坐回电脑前。他没有继续啃数学,而是打开了吴恩达的机器学习课程,从昨天卡住的地方继续。这一次,当视频中再次出现矩阵表示法、梯度下降公式时,他不再是一片茫然。虽然理解速度依然不快,需要不时暂停思考,但他能跟得上教授的节奏了,能看懂那些公式在试图表达什么。这是一种微小的、但至关重要的进步。
学习间隙,他习惯性地打开股票软件,看了一眼自选股。红绿闪烁的K线图,此刻在他眼中,似乎不再是纯粹的情绪博弈图表。他想起了今天学的概率、统计,还有那个“从数据中寻找规律”的机器学习核心思想。一个念头越来越清晰:这些正在艰难啃下的数学知识,不仅能帮他找工作,更能为他打开另一扇门——一扇用理性和算法,在市场中寻找规律的门。
他新建了一个笔记文件,命名为“投资系统数学基础构想”,寥寥写下了几个关键词:时间序列分析、统计套利、风险模型……然后,他关掉这个文件,继续看课程视频。路要一步一步走,他知道自己离真正构建系统还差十万八千里,但至少,方向更明确了。
深夜,林晨保存好所有文档,准备休息。关机前,他瞥了一眼桌面日历。距离他再次失业,已经过去半个月了。存款的数字在减少,但大脑里的东西,好像在增加。他关掉灯,躺到床上。黑暗中,那些矩阵、梯度、概率公式还在脑海里轻轻碰撞,发出细微的声响。明天,数学的挑战,还将继续。
第60章 第一个模型
深夜十一点,狭窄的书房里,只有书桌上的屏幕还亮着。
林晨盯着pytorch官方教程的最后一个章节,已经看了三遍。屏幕上是一个完整的神经网络代码示例——mNISt手写数字识别,深度学习界的“hello world”。过去两周,他像海绵一样吸收着那些抽象的概念:张量、梯度、反向传播、损失函数。数学补课起了作用,至少现在看到矩阵乘法不再发怵,能理解为什么权重更新要用链式法则。但理解归理解,距离“亲手创造一个能思考的东西”,还隔着一段需要代码去填补的距离。
“跟着做一遍”。他对自己说,声音在安静的房间里显得格外清晰。新建python文件,导入torch和torchvision。下载mNISt数据集——一个包含六万张28x28像素手写数字图片的经典数据集。代码跑起来,终端开始显示下载进度。
林晨看着那些滚动的日志,忽然有些恍惚。三十五岁,再次失业1个月,存款以每月两万多的速度消耗,自己却在这里下载一堆黑白数字图片。这个场景如果拍下来给一年前的自己看,恐怕会觉得是个荒诞的玩笑。但数据下载完成的提示音把他拉回现实。
接下来是数据预处理:将图片像素值从0-255归一化到0-1之间,转换成pytorch能处理的tensor格式,分割成训练集和测试集。这些步骤他已经在Jupyter Notebook里练习过多次,手指在键盘上敲击得流畅。真正的挑战从定义模型开始。
教程提供了一个简单的全连接神经网络:输入层784个节点(28x28),两个隐藏层各128个节点,输出层10个节点(对应数字0-9)。结构图在屏幕上展开,林晨逐行敲入代码。
class Net(nn.module):
def __init__(self):
super(Net, self).__init__
self.fc1 = nn.Linear(784, 128)
self.fc2 = nn.Linear(128, 128)
self.fc3 = nn.Linear(128, 10)
def forward(self, x):
x = x.view(-1, 784)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = self.fc3(x)
return x
不到二十行代码。但林晨知道,这二十行背后是三十年来神经网络研究的结晶。每一层Linear代表一次矩阵乘法和偏置加法,每个ReLU激活函数给模型注入非线性——正是这种非线性让神经网络能够拟合复杂的函数关系。
他想起大学时上的《人工智能导论》,教授说神经网络是“黑箱”,输入输出之间是难以解释的权重迷宫。当时觉得神秘,现在亲手搭建时,却感受到一种奇异的透明感——每一层都在做确定性的数学运算,所谓的“智能”不过是这些运算在大量数据训练后,权重被调整到能提取有效特征的状态。
“代码可以骗人,但逻辑不会”。他低声念着自己的口头禅,点击运行。
模型初始化完成。接下来是训练循环的核心部分:定义损失函数(交叉熵损失)和优化器(随机梯度下降SGd)。学习率设为0.01,一个保守的起始值。第一次训练开始了。
林晨设置了5个epoch(遍历整个训练集的次数)。代码运行,GpU风扇轻微转动——他庆幸自己当年配电脑时选了带独立显卡的型号,虽然是为了打游戏,现在却成了训练模型的利器。
第一个epoch结束时,终端打印出损失值:2.302。准确率:10.3%。“跟随机猜差不多”。林晨苦笑。mNISt有十个类别,随机猜测的准确率应该是10%,模型现在几乎没学到任何东西。
但他没有停。第二个epoch,损失降到1.876,准确率升到23.7%。第三个epoch,1.432,45.2%。数字的变化有种催眠般的魔力,他盯着屏幕,看着那些代表模型正在“学习”的证据。第四个epoch结束时,准确率突破了70%。损失值降到0.876。
林晨身体前倾,手肘撑在桌上。他能感觉到心跳在加速——不是因为紧张,而是因为某种接近真相的兴奋。那些抽象的数学概念正在转化为具体的、可测量的能力提升。模型在“理解”那些手写数字的形状特征。
第五个epoch,最后一个。训练循环在运行,进度条缓慢移动。林晨起身倒了杯水,回到座位时,刚好看到最终结果打印出来:Epoch 5/5, Loss: 0.356, Accuracy: 89.7%。
89.7%。他眨了眨眼,重新读了一遍。然后,几乎是本能地,他修改了代码——将epoch数从5改为20,学习率微调到0.005,重新运行。
这一次他不再干等。他打开了tensorboard(pytorch的可视化工具),看着损失曲线随着训练轮次平滑下降,准确率曲线稳步上升。第10个epoch时,准确率突破92%;第15个epoch,94.1%;第20个epoch结束时,终端显示:Final test Accuracy: 95.3%。
房间里安静得能听到电流声。林晨靠在椅背上,长长地呼出一口气。95.3%。这意味着他刚刚亲手构建的这个简单神经网络,在识别手写数字图片的任务上,已经能达到接近人类的水平——至少对于mNISt这种相对干净的数据集是这样。
但这还不是终点。他打开测试集,随机抽取了几张图片,用训练好的模型进行预测。代码输出预测结果,他对照着真实标签一一核对。
第一张,图片是个歪歪扭扭的“7”,模型预测:7,正确。第二张,像个“3”又有点像“8”,模型预测:3,正确。第三张,一个很标准的“0”,模型预测:0,正确。连续对了十张。
然后他故意挑了一张模糊的、像素似乎有噪声的图片,看起来像“4”但下半部分缺失。模型预测:4,概率置信度87%。真实标签:4。林晨盯着那张图片看了很久。
那一刻,他忽然理解了为什么AI会让人着迷。不是因为它有多神秘,恰恰相反,是因为它的确定性。你给它数据,定义好架构和优化目标,它就会沿着数学上最陡峭的下降方向,一点一点调整自己内部的数百万个参数,直到找到那个能最大限度区分不同类别特征的权重组合。这个过程是可重复、可测量、可改进的。
而更关键的是,这个刚刚能识别手写数字的模型,和那些能识别猫狗图片、翻译语言、下围棋、甚至预测股票走势的模型,在本质上用的是同一套方法论。区别只在于数据规模、模型复杂度和计算资源。
林晨关掉tensorboard,打开一个新的文件。他开始修改代码——不是照搬教程,而是尝试自己的改动:增加一个隐藏层,把神经元数量从128增加到256,尝试不同的激活函数(把ReLU换成LeakyReLU),调整学习率衰减策略。
重新训练。这一次,准确率在30个epoch后达到了97.1%。虽然只是提升了不到两个百分点,但那种“通过调整架构和超参数来控制系统性能”的掌控感,比第一次看到准确率上升时更强烈。
窗外的科技园,几栋写字楼还亮着零星的灯光。林晨看了眼时间,凌晨两点半。他应该去睡觉了,明天还要继续学卷积神经网络(cNN)——那才是处理图像更专业的架构。
但他没动。他打开那个名为“投资系统数学基础构想”的笔记,在空白处写下:
“凌晨2:35。训练出第一个神经网络模型,mNISt准确率97.1%。关键体会:
AI不是魔法,是工程。可量化、可优化。
模型性能取决于三要素:数据质量、架构设计、训练策略。
如果它能从像素中学会识别数字,那它应该也能从K线图中学会识别模式。
下一步:用cNN重做mNISt,理解卷积层如何提取空间特征。这对处理金融时间序列可能有启发”。
写完,他保存笔记,关掉电脑。
躺在床上时,脑子却停不下来。那些损失曲线、准确率数字、权重矩阵在眼前旋转。他想起大学时第一次写出能正确运行的“hello world”程序时的兴奋,想起第一次做出能处理真实业务的电商系统时的成就感。
但今晚的感觉不一样。那不只是“让代码运行起来”的满足,而是更接近……创造。创造一个能“学习”的东西,给它数据,看它成长,调整它的结构让它变得更好。
黑暗中,林晨睁着眼睛。房贷月供一万二,存款还剩不到二十三万,再次失业第二个月。这些数字依然冰冷地悬在头顶。但此刻,他第一次清晰地看到了一条路——不是web3那种充满不确定性的新领域,而是一条基于数学、代码和数据,每一步都踏实可测的路。
AI这条路。
他翻了个身,想跟苏婉说点什么,却听到妻子均匀的呼吸声——她早就睡了。明天吧,明天可以告诉她,自己今天做出了一个能认数字的“小东西”。虽然它现在还只能认数字。但林晨知道,这只是开始。
窗外的鹏城,凌晨三点的街道空旷安静。而在狭窄书房的书桌上,那个保存在硬盘里的模型文件,正安静地等待下一次被加载、被改进、被赋予新的任务。
比如,认识K线图的形态。比如,预测明天的涨跌。比如,从混乱的市场噪声中,找出那些微弱的、可盈利的信号模式。
林晨闭上眼,脑子里不再是焦虑和迷茫,而是一层层堆叠的神经网络架构图,是损失函数需要优化的曲面,是等待被挖掘的金融数据。他睡着了,嘴角带着半年来第一次真正放松的弧度。
第61章 深度学习框架
林晨坐在书桌前,窗外是科技园不变的灯火通明,而他的电脑屏幕上,正同时打开着两个截然不同的编程环境。
那个 97.1% 准确率的 mNISt 模型带来的兴奋感尚未完全消退,但理性很快占据了上风。林晨清楚,偶然的成功不能复制,要想真正把 AI 技术变成自己手中的利器,尤其是未来应用到变幻莫测的金融市场分析上,他必须系统性地掌握工具,而不仅仅是跟着教程跑通一个例子。
深度学习框架,就是这最重要的工具。
当前主流的两大巨头——tensorFlow 和 pytorch,如同武林中的两大门派,各有拥趸,各有优劣。林晨决定,花上一周时间,把这两个框架都深入体验一遍,再决定自己的主攻方向。
他首先打开了 tensorFlow 的官方文档。作为谷歌出品的老牌框架,tensorFlow 以其工业级的稳定性、强大的分布式训练能力和成熟的部署生态着称。
林晨按照指南安装配置,开始了第一个 tensorFlow 程序——依旧是手写数字识别。
“静态计算图……”林晨一边敲代码,一边琢磨着这个核心概念。
在 tensorFlow 1.x 时代,需要先定义计算图(Graph),然后在会话(Session)中运行,这种“先构图,后执行”的模式,对于习惯了 python 即时执行思维的程序员来说,确实有些绕。
好在现在主流已是 tensorFlow 2.x,默认开启了 Eager Execution(急切执行),像普通 python 代码一样即时运行,大大降低了入门门槛。通过高级 ApI tf.keras,构建模型变得相当直观。
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.dense(128, activation=relu),
tf.keras.layers.dense(10, activation=softmax)
])
model.pile(optimizer=adam, loss=sparse_categorical_crossentropy, metrics=[accuracy])
代码简洁明了。
训练过程也顺利,最终准确率跑到了 97.5%,比上次自己用“原生” pytorch 略高一点点。但林晨在尝试自定义一个损失函数,并想深入查看中间某层梯度时,遇到了一些麻烦。
tensorFlow 的调试体验,尤其是想要深入其计算过程时,总觉得隔着一层,不如直接写 python 代码那样透明和易于介入。它的优势似乎更在于“生产部署”——一旦模型确定,转换成 Savedmodel 或 tFLite 格式,在各种终端和服务器上的部署非常成熟。
“这就像一套精密的自动化生产线”,林晨在笔记上写道,“设计好了流程,它就能稳定高效地运转,但如果你想中途调整某个零件的加工参数,可能需要专门的工具和接口”。
接下来,他切换到了 pytorch 的环境。
其实上一章的 mNISt 就是用 pytorch 的教程完成的,但那次更多是“跟随”。这次,他打算以“研究者”和“探索者”的心态重新审视它。
pytorch 由 Facebook(现 meta)AI 研究院推出,核心设计哲学是“python 优先”和动态计算图。林晨从最基本的张量(tensor)操作开始,感受其与 Numpy 的相似性带来的亲切感。
构建模型时,他需要自己定义一个继承自 torch.nn.module 的类,并在 forward 方法中明确写出数据流动的过程。
import torch
import torch.nn as nn
import torch.optim as optim
class SimpleNN(nn.module):
def __init__(self):
super.__init__
self.flatten = nn.Flatten
self.linear_relu_stack = nn.Sequential(
nn.Linear(28*28, 128),
nn.ReLU,
nn.Linear(128, 10)
)
def forward(self, x):
x = self.flatten(x)
logits = self.linear_relu_stack(x)
return logits
这种面向对象的方式,让模型的每一层、每一个操作都清晰可见。
最让林晨感到舒心的是 pytorch 的自动微分(autograd)系统和调试的便捷性。他可以在训练循环的任何地方,插入打印语句查看张量的值、形状,甚至计算梯度。
动态图意味着计算图是在代码运行时动态构建的,这带来了无与伦比的灵活性——你可以用 python 原生的控制流(if、for、while)来构建模型结构,这在研究新模型结构时简直是神器。
“这才是编程的感觉”。林晨忍不住感叹。
他尝试修改网络结构,增加一个跳跃连接(Skip connection),在 tensorFlow 中可能需要调整 tf.keras 的 ApI 用法,而在 pytorch 里,他几乎像写普通 python 类一样自然地在 forward 方法里实现了。
为了更直观地对比,林晨决定用两个框架分别实现同一个稍复杂的模型——一个简单的卷积神经网络(cNN),再次在 mNISt 上测试。
结果,在模型性能上两者相差无几(pytorch 版本 98.2%,tensorFlow 版本 98.1%),但在开发体验上,林晨明显感觉 pytorch 更符合他的思维习惯。
那种对模型细节的掌控感,对训练过程每一步的透明可见,让他觉得安心。尤其是想到未来他要开发的智能投资系统,必然需要频繁地尝试各种网络结构、损失函数,甚至自定义训练逻辑,pytorch 的动态和灵活显得至关重要。
“tensorFlow 像是为大规模部署而生的重型战舰,稳定、强大,但转向稍慢;pytorch 则像是灵巧的突击舰,适合快速迭代和前沿探索”。林晨在对比总结中写下这句话,“对于目前的我,处于技术探索和原型快速开发阶段,pytorch 显然是更合适的武器”。
做出了选择,林晨感觉目标清晰了许多。
他不再满足于仅仅实现教程里的基础模型。接下来的几天,他给自己定下了新的挑战:不依赖高级 ApI 的过度封装,尽量从相对底层的角度,用 pytorch 重新实现几个深度学习的经典模型,深入理解其机理。
他选择了三个有代表性的模型:LeNet-5(cNN 开山鼻祖之一)、简单循环神经网络(RNN)用于体验时序处理,以及 transformer 中最核心的多头自注意力(multi-head Attention)机制。
这不再是跟着教程敲代码,而是需要他仔细阅读原始论文(或权威解读),理解每一层的数学含义,然后用 pytorch 的张量操作和自动微分将其“翻译”成代码。
实现 LeNet-5 相对顺利,虽然比用现成的 nn.conv2d 和 nn.maxpool2d 组合要繁琐,但亲手写出卷积和池化的操作过程,让他对图像特征提取的理解深刻了许多。
RNN 的实现则让他对处理序列数据、隐藏状态传递有了直观感受。
而 transformer 的自注意力机制,则是最大的挑战。矩阵运算、缩放点积、多头拆分与合并……林晨对着公式,一遍遍推导,一步步用代码实现。
当最后那个小小的自注意力模块能正确计算出一组示例序列的注意力权重时,窗外已是凌晨三点,但他毫无倦意,只有一种攻克难关后纯粹的智力愉悦。
这些重新造轮子的过程,速度很慢,也没有直接带来任何实用价值,但林晨知道,这些深入底层的理解,正在构筑他技术大厦最坚实的地基。
他不再只是一个调用 ApI 的“调参侠”,而是开始真正理解这些强大工具背后的原理。
夜深人静,林晨保存好所有代码和笔记。他活动了一下僵硬的脖颈,目光落在屏幕上那些自己亲手实现的模型结构图上。
从静态图到动态图的选择,从使用 ApI 到理解原理的深入,他感觉自己正一步步褪去过去十年跨境电商开发中形成的某种“应用层思维”,向着技术更本质的层面靠近。
“这些 cNN、RNN、Attention,本质上都是在学习数据中的模式和关联”。他靠在椅背上,若有所思,“数字图片中的边缘、形状是模式,语言序列中的上下文依赖是关联……那么,金融时间序列数据中的趋势、波动、周期,以及不同资产之间的联动,是不是也是一种更深层次、更复杂的模式和关联”?
这个念头让他心跳微微加速。
技术工具的选择和深入掌握,最终都是为了通向那个目标——理解并量化金融市场的不确定性。
他感觉,手中的“武器”正在变得趁手,而那个模糊的目标,也似乎因为技术路径的清晰,而透出了更具体的光亮。
第62章 计算资源的限制
书房里,林晨盯着屏幕上缓慢爬行的进度条,眉头紧锁。
他的宏碁暗影骑士游戏本,三年前为了偶尔打打《守望先锋》买的,此刻正发出直升机起飞般的风扇轰鸣。屏幕上,pytorch 正在训练一个用于分析 A 股市场行业轮动规律的 LStm(长短期记忆)网络。
数据集不算大,不过是过去五年申万一级行业指数的日度收益率序列,但模型跑了快一个小时,才完成了不到 30 个 epoch(训练轮次)。
“这速度……”林晨揉了揉发胀的太阳穴,手指无意识地敲击着桌面。
他开发的“晨曦一号”智能投资系统,核心模块之一就是这个行业轮动模型。
原理不复杂:利用 LStm 捕捉不同行业板块间复杂的时序依赖关系,试图预测未来一段时间内哪些行业可能跑赢大盘。想法很好,代码也调通了,但训练速度成了拦路虎。
笔记本的 Gtx 1060 显卡,6Gb 显存,在 2023 年玩主流游戏都勉强,拿来跑稍复杂点的深度学习模型,更是力不从心。
林晨已经尽可能优化了:减小批量大小(batch size)、使用混合精度训练、把能放到 cpU 上的预处理都挪出去……但硬件天花板就在那里。
更让他焦虑的是时间。
再次失业在家三个多月,存款数字在缓慢但坚定地下降。鹏城的房贷、一家三口的生活费、乐乐幼儿园的学费……每一样都是实实在在的压力。
他必须尽快让这个系统跑起来,验证其有效性,甚至开始产生收益。时间,某种意义上比金钱更珍贵。
“不能等”。林晨关掉了训练程序。
风扇声逐渐平息,书房恢复了安静,只剩下窗外隐约传来的车流声。
他打开浏览器,开始搜索“深度学习 训练 加速”“个人 GpU 服务器”“云服务器 AI 训练”。
信息如潮水般涌来。知乎、cSdN、Github 上的讨论帖,技术博客的测评,各大云服务商的广告……
他泡了杯浓茶,像当年准备高考一样,开始系统性地研究和记录。
首先是自己组装一台深度学习工作站。
他快速列了个配置单:Rtx 3090 显卡(24Gb 显存,当时的高端卡)大概一万二;配套的 cpU、主板、大内存、大功率电源、机箱……整套下来,两万块打不住。
这还没算可能需要的多卡并联(为了更大模型或更快训练)。
两万块,几乎是目前家庭备用金的十分之一。而且,一台固定配置的机器,可能很快又面临性能瓶颈或技术迭代。
“太重了,也不灵活。”林晨在“自建工作站”后面打了个叉。
失业期投入这么大一笔固定资产,风险太高。
接着是云服务器。
阿里云、腾讯云、华为云、AwS、Google cloud……他一个个官网点进去,找到它们的 GpU 计算实例产品页面。
价格让他倒吸一口凉气。
以阿里云为例,一台配备单颗 NVIdIA V100(32Gb 显存,专业计算卡)的 gn6v 实例,按量付费(用多久算多久钱)的价格,每小时接近三十元。
如果包月,一个月要一万多。
腾讯云、华为云的同类产品价格也大同小异。AwS 的 p3 实例更贵。Google cloud 的 tpU(张量处理单元)倒是专门为 tensorFlow 优化,但他现在主攻 pytorch,而且 tpU 实例价格也不菲。
“这根本不是个人开发者能长期负担的”。林晨感到一阵无力。
他瘫在椅子上,看着天花板。
难道就要被卡在这里?用笔记本慢慢磨?一个模型训练几天甚至一周?那迭代速度、实验效率将低得无法接受。
他的学习进度、系统开发进度都会被严重拖慢。
不行。一定有更经济的方法。
林晨坐直身体,开始更细致地研究云服务器的计费模式。
除了标准的按量付费和包月包年,他注意到一些服务商提供了“抢占式实例”(Spot Instance)或“降价实例”。
这种实例利用了云服务商闲置的算力资源,价格可以低至常规按量付费的 10%–30%,但有个致命缺点:不稳定,服务商随时可能回收这些资源,中断你的任务。
对于需要长时间稳定训练的任务来说,这风险太大。
他又把目光转回常规按量付费,但思路变了:不是长期租用,而是“精确打击”。
“我的模型,真的需要一直跑吗”?林晨自问。
大部分时间,他是在写代码、调试逻辑、分析数据、设计实验。真正需要强大算力的,是代码调试完成后,那一段集中的模型训练时间。
如果他能把训练任务规划好,高效利用云服务器,训练完就立即释放资源,那么总成本可以控制。
他重新打开阿里云控制台,仔细查看不同 GpU 型号实例的价格。
V100 太贵,那就看低一档的。p100(16Gb 显存)实例,按量付费每小时十几元。还有更老的 K80、m60 等,价格更低,但性能也差不少。
“性价比……”林晨新建了一个 Excel 表格,开始认真计算。
他预估了自己未来一个月可能需要进行的训练任务:行业轮动模型(LStm)、个股趋势预测模型(cNN + Attention)、多因子模型(传统机器学习结合神经网络)的回测与优化,以及可能的集成模型训练。
他假设自己每天集中使用云服务器进行高强度训练的时间控制在 4–6 小时,其他时间用本地笔记本做轻量实验和开发,周末可能多用一些。
表格拉下来,如果使用 p100 实例,按最保守的每天 4 小时、每月 30 天计算,一个月的费用是:
4 小时 / 天 x 30 天 x 15 元 / 小时 = 1800 元。
如果使用更便宜的 t4(显存小些)或老型号实例,可能控制在 1000 元左右。
“一千到两千……”林晨沉吟。
这比他预想的自建工作站两万投入少了一个数量级,也远比长期包月云服务器便宜。
这笔钱,相当于家庭一个月的生活费,或者乐乐两个月的幼儿园学费。
压力依然存在,但似乎可以承受。
更重要的是,这笔投入是“可变成本”,可以根据他的项目进度和财务状况灵活调整。
用得起就用,紧张了就少用或不用。
而且,云服务器意味着随时随地可以访问,性能稳定,无需维护,还能随时切换不同配置尝试。
“这是一种投资”。林晨说服自己,“对学习效率的投资,对项目进度的投资。时间就是金钱,在这里,花钱买时间,可能是划算的”。
他再次审视自己的存款账户。
失业时大概有三十万备用金,几个月下来,因为房贷、生活费和之前买书买课程,已经用了接近12万。
如果再拿出两千块投入云服务器……
“必须花。”他下定了决心。
如果因为心疼这点钱而无限期拖延项目,损失的可能是更大的机会成本。
他没有选择最便宜的“抢占式实例”。
为了训练稳定性,他选择了常规的按量付费。
在阿里云上,他找到一款名为“ecs.gn5i-c8g1.2xlarge”的实例,配备一颗 p100 GpU(16Gb 显存),按量付费每小时 12.5 元。
他仔细阅读了计费规则:按秒计费,每小时结算,用完后要记得主动释放,否则会一直计费。
“得像用电一样精打细算”。林晨苦笑。
注册、实名认证、充值 500 元(作为启动资金,防止小额消费频繁充值麻烦)、选择华南地区(鹏城)的可用区以减少网络延迟、创建实例、选择 Ubuntu 系统镜像、配置安全组(开放 SSh 端口)……
一系列操作后,屏幕上显示实例创建成功,分配了公网 Ip。
林晨打开终端,用 SSh 连接上去。熟悉的 Linux 命令行界面出现。
他首先按照文档,在云服务器上配置 cUdA 驱动、安装 Anaconda、创建 python 虚拟环境、安装 pytorch(GpU 版本)及相关依赖库。
这些步骤他已经在本地笔记本上做过无数次,轻车熟路。
云服务器的网络速度很快,下载安装包比家里宽带快得多。
环境配好后,他将本地开发好的行业轮动模型代码和数据,通过 scp 命令上传到云服务器。
深吸一口气,他在云服务器上启动了训练命令。
python industry_rotation_lstm.py --gpu 0 --epochs 100
命令回车。
几乎瞬间,训练日志开始快速滚动。一个 epoch,在本地笔记本上需要近两分钟,在这里,二十秒不到就完成了。
进度条以肉眼可见的速度向前推进。
林晨盯着那流畅滚动的日志,听着(实际上听不到,因为服务器在数据中心)无声却澎湃的算力奔腾,心中涌起一股奇异的感动。
那是一种突破束缚、获得力量的快感。
金钱,在此刻转化成了实实在在的计算能力,转化成了推进项目、验证想法的可能性。
不到四十分钟,100 个 epoch 训练完成,模型保存。
他立刻在服务器上启动了初步的回测评估脚本。
结果很快出来:在测试集(过去一年的数据)上,这个简单的 LStm 行业轮动策略,相比等权持有所有行业的基准,获得了约 8% 的年化超额收益,夏普比率也有所提升。
虽然回测参数和条件还很粗糙,过度拟合的风险没有仔细检验,但这无疑是一个积极的信号。
“值了”!林晨握了握拳,脸上露出了失业以来少见的、纯粹属于技术人的兴奋笑容。
这五百块充值,第一次使用可能只扣掉几块钱,但带来的信心和进度推进,远超其货币价值。
他谨慎地通过控制台停止了云服务器实例,计费停止。
窗外,天色已近黄昏。
鹏城的晚高峰即将开始,楼下街道传来隐约的喧嚣。
书房里,林晨却觉得格外宁静。
他解决了硬件瓶颈,看到了系统初步有效的曙光。虽然前路依然漫长,经济压力依然悬顶,但至少,他找到了一条在资源限制下继续前进的路。
他保存好模型结果,整理好实验记录。
下一个任务,是让这个模型变得更稳健,并开始构思下一个模块——如何捕捉市场情绪和突发事件的影响?
或许,需要引入自然语言处理(NLp)技术,分析新闻和社交媒体文本?
又是一个新的技术领域,意味着更多的学习,也可能意味着……更多的计算资源消耗。
林晨看着阿里云控制台账户里剩余的余额,笑了笑。
那就继续精打细算,继续用金钱换取时间和效率。
这是创业期,或者说,是人生转型期必须支付的代价。
他关掉云服务器控制台页面,重新打开了本地笔记本上的 pycharm。
接下来,他要好好分析刚才的训练结果,并开始研究 transformer 在金融文本情感分析中的应用。
风扇声再次轻轻响起,但这次,林晨的心境已然不同。
他知道,在他需要的时候,强大的算力就在云端,触手可及。
这感觉,就像在黑暗的隧道里,终于看到前方有一点稳定的、可以自己控制的光。
第63章 Kaggle初体验
窗外的鹏城湾在晨雾中若隐若现,但林晨的视线完全聚焦在屏幕上。
阿里云 p100 实例的远程桌面流畅得让人感动。昨晚,他首次用云端算力完成了行业轮动模型的初步训练,回测曲线那道微微上扬的斜率,像一剂强心针注入了他连月来自学 AI 的疲惫身躯。
然而,兴奋过后是更深的清醒——这只是一个模型,一个未经真正实战检验的“玩具”。
“得找块磨刀石”。林晨喃喃自语,手指在键盘上敲入关键字Kaggle进行搜索。
这个全球最大的数据科学竞赛平台,他早有耳闻,却从未真正踏足。
过去十年做跨境电商后台开发,和数据挖掘、机器学习隔着行业壁垒。如今转型 AI,这里成了检验学习成果、接触真实数据与前沿方法的绝佳战场。
注册过程很简单。
用户名他想了想,敲下“dawncoder”——晨曦编码者,寓意着在 AI 黎明时分起步的编程者。
个人简介栏,他犹豫了一下,没有写“前跨境电商工程师”,而是简洁地填上:“AI 自学实践者,专注于金融时间序列分析”。
主页刷新出来,琳琅满目的竞赛项目让他一时眼花缭乱。
有预测房价的,有识别猫狗图片的,有分析信用卡欺诈的,有预测股票走势的……
目光在“股票价格预测”竞赛上停留了几秒,他最终还是挪开了。
自己的投资系统是更复杂的多市场、多策略体系,直接套用单一股价预测竞赛的框架,可能反而会限制思路。他需要的是更通用的数据预处理、特征工程和模型优化经验。
最后,他选择了一个正在进行中的、相对经典的竞赛:“泰坦尼克号幸存者预测”。
数据量适中,问题清晰(根据乘客信息预测是否幸存),社区讨论和公开代码(Kernel)极其丰富,非常适合新手练手。
点击“Join petition”,下载数据集。
压缩包解压后,几个 cSV 文件躺在文件夹里:
train.csv(训练集,包含特征和是否幸存的标签),
test.csv(测试集,只有特征,需要预测结果),
gender_submission.csv(提交格式示例)。
林晨搓了搓手,打开 Jupyter Notebook,新建了一个名为“titanic_Firsttry”的文件。
他先快速浏览数据:乘客 Id、舱位等级、姓名、性别、年龄、同船兄弟姐妹 / 配偶数量、同船父母 / 子女数量、船票号、票价、客舱号、登船港口。幸存情况是二分类(0 / 1)。
“先从最简单的逻辑回归开始”。他自语道,手指开始在单元格里敲入代码。
导入 pandas、numpy、sklearn,读取数据,查看基本信息、缺失值。
“年龄有缺失,客舱号缺失更多,登船港口也有少量缺失……”他一边记录,一边思考处理方法。
对于年龄,他采用了中位数填充;客舱号缺失太多,暂时放弃这个特征,只提取是否有客舱号作为一个二值特征;登船港口用众数填充。
特征工程方面,他根据常识和快速浏览的讨论区提示,做了几项简单处理:
从姓名中提取称呼(mr、mrs、miss 等)作为新特征,将性别映射为数值,将舱位等级(pclass)视为有序分类特征,计算家庭规模(SibSp + parch + 1),并创建是否独自乘船的特征。
“好了,先跑一个基线模型”。
他将处理后的训练集分割出 20% 作为验证集,用标准化后的特征训练了一个逻辑回归模型。
验证集准确率:78.5%。
林晨挑了挑眉。
这个成绩……在他快速查看的公开排行榜上,目前顶尖队伍的准确率已经超过 82%,甚至 83%。
他这个 78.5%,估计排在很后面。
但他没气馁,这本来就是“第一次”。
他开始尝试其他模型:随机森林、支持向量机、梯度提升树(用 sklearn 的 Gradientboostingclassifier)。
调参是门学问,他暂时采用网格搜索(GridSearchcV)进行简单优化,同时注意使用交叉验证避免过拟合。
一番折腾后,随机森林模型在验证集上达到了 80.1% 的准确率。
提升有限,但聊胜于无。
“特征工程可能还是太粗糙了”。他意识到问题。
于是,他点击竞赛页面的“Kernels”标签,按“投票数”排序,找到几个高赞的公开代码。
点开一个标题为“prehensive data exploration with python”的 Kernel,林晨立刻被吸引住了。
作者不仅用精美的可视化(Seaborn 库)深入分析了每个特征与幸存率的关系,还提出了许多他没想到的特征构造思路:
比如根据票价和舱位等级推断社会地位,根据客舱号前缀推断甲板位置,将年龄分段并与其他特征组合,甚至利用姓氏关联家庭成员可能一起遇难或幸存的情况……
另一个专注于模型集成的 Kernel 更是让他大开眼界。
作者没有只用一个模型,而是构建了一个“投票分类器”(Votingclassifier),融合了逻辑回归、随机森林、梯度提升、xGboost 等多个模型的预测结果,并细致地调整了各模型的权重和超参数。
代码中还使用了更高级的交叉验证策略和评估指标(如 AUc-Roc 曲线)。
“原来差距在这里”。
林晨深吸一口气,既有挫败感,更有一种豁然开朗的兴奋。
他之前的做法,就像一个只学会了步枪射击基础动作的新兵,而顶尖选手已经在熟练运用各种特战装备,研究地形,制定协同战术。
他不再急于提交自己那可怜的 80.1% 准确率的预测结果。
而是沉下心来,像一个贪婪的海绵,吸收着这些公开代码中的精华。
他新建了一个 Notebook,开始模仿着进行更细致的数据探索可视化。
年龄分布与幸存率的关系图显示,儿童和老人存活率更高;性别与舱位等级的交叉分析揭示,头等舱的女性存活率极高;家庭规模与存活率呈现复杂的非线性关系……
基于这些洞察,他重新设计特征。
他借鉴思路,创建了“title”(称呼)特征,将“稀有称呼”如“Lady”“countess”等归为一类;根据客舱号首字母推断“deck”(甲板),缺失的单独归类;结合年龄和性别创建“Ageclass”“AgeSex”等交互特征;甚至尝试对票价进行对数变换以缓解偏态分布。
模型方面,他开始尝试简单的堆叠(Stacking)。
用随机森林、Gbdt 和 SVm 作为第一层模型,用逻辑回归作为第二层元模型进行融合。
调参过程更加小心,他学习了使用随机搜索(RandomizedSearchcV)在更大参数空间内高效寻优,并开始关注学习曲线来判断模型是否欠拟合或过拟合。
重新训练,验证集准确率缓缓爬升到 81.3%、81.7%……
他将这个融合模型在完整的训练集上重新训练,然后对测试集进行预测,生成提交文件。
上传,等待系统评分。
页面刷新,结果出现:
public Score(基于测试集部分数据的公开分数)—— 0.8132。准确率约 81.32%。
他立刻去看排行榜。
密密麻麻的名单,他按分数从高到低寻找自己的名字“dawncoder”。
下滑,再下滑……终于在两千多名的位置找到了自己。
排名:2187 / 4896。
几乎垫底的一半。
林晨看着这个数字,沉默了几秒钟。
然后,嘴角却微微弯起了一个弧度。
没有沮丧,反而有一种踏实的释然。
排名固然难看,但这一趟 Kaggle 初体验,价值远超排名本身。
他亲手处理了真实、杂乱、有缺失的数据;实践了从简单到复杂的特征工程;直观感受到了不同模型的特性与调参影响;更重要的是,他打开了视野,看到了真正的数据科学家是如何思考、如何探索、如何集成创新的。
那些公开的 Kernel 就是最好的免费教材,充满了实战智慧和代码艺术。
他关掉排行榜页面,没有继续在这个竞赛上死磕。
他的目标不是成为 Kaggle 专家,而是汲取养分,浇灌自己的“晨曦一号”系统。
“特征工程可以更精细……模型融合思路值得借鉴……尤其是针对时间序列数据,是不是可以构造更有针对性的滞后特征、滚动统计特征”?
林晨的大脑飞速运转,将刚刚学到的思路与自己正在构建的金融量化系统进行映射。
他新建了一个文档,开始记录本次 Kaggle 之行的收获与反思:
数据探索至关重要:可视化不是点缀,是发现规律、指导特征构造的灯塔。
特征即黄金:很多时候,好的特征比复杂的模型更能提升性能,需要结合领域知识(金融、航运等)进行创造性构造。
模型融合的力量:单一模型有天花板,合理集成多个差异化的模型(异质集成)能有效提升鲁棒性和准确率。
调参需系统:网格搜索、随机搜索、贝叶斯优化,工具要会用,更要理解其背后的原理,避免盲目。
社区与分享:Kaggle 最宝贵的不是奖金,而是这个开放、共享、充满顶尖实践智慧的社区。
写完总结,窗外已是午后。
鹏城湾上空的雾气散尽,阳光洒在海面,泛起片片金鳞。
林晨站起身,活动了一下僵硬的脖颈。
排名 2187 的尴尬数字已然抛在脑后,心中充斥的是一种充盈的收获感和清晰的前行方向。
他的“晨曦一号”智能投资系统,或许也该引入这种“竞赛”思维——不是与人竞赛,而是让不同的子策略、不同的模型版本,在历史数据或模拟环境中不断“竞争”“融合”,优胜劣汰,进化出更强的整体。
思路,越来越清晰了。
下一次,或许可以尝试一个时间序列预测相关的竞赛,直接磨砺金融数据分析的刀锋。
第64章 NLP的兴趣
窗外,鹏城的初春来得猝不及防。昨天还穿着薄外套,今天林晨只穿了件短袖坐在电脑前,仍觉得后背微微发汗。书房的空调他舍不得开太久——失业这几个月,每一度电都得精打细算。
他正在整理昨晚Kaggle竞赛的笔记。屏幕上密密麻麻的记录:特征工程的可视化方法、LightGbm与xGboost的集成技巧、如何利用交叉验证防止过拟合……这些从其他参赛者公开代码里“偷师”来的干货,比任何付费课程都实在。
“排名2187,共4896人”。林晨看着最终成绩,嘴角却带着笑意。若是十年前刚毕业那会儿,他大概会为这个中下游的排名沮丧。但现在,三十五岁的他更明白什么才是真正的收获——那些沉淀在脑子里的方法论,远比一个虚拟的排名数字有价值。
整理到一半,浏览器标签页里一篇技术博客吸引了他的注意。标题是《从RNN到transformer:NLp是如何被彻底改变的》。作者用生动的比喻解释了注意力机制:“就像你读一篇长文,不会平均用力看每个字,而是自动聚焦到关键句子。transformer让机器学会了这种‘聚焦’能力”。
林晨滑动鼠标,目光停留在几个关键词上:bERt、Gpt、预训练、微调。
他隐约记得,之前面试某家web3公司时,技术总监随口提过一句:“我们正在尝试用bERt做智能合约的漏洞检测”。当时他对NLp(自然语言处理)还停留在“分词、词向量”的浅层认知,没太在意。
但现在不一样了。经过几个月的系统学习,林晨对AI的认知维度正在快速拓宽。他意识到,如果自己的“晨曦一号”投资系统只分析数字(股价、成交量、技术指标),那就像只用一只眼睛看世界。
“市场情绪呢”?林晨靠在椅背上,自言自语,“政策公告、财报解读、行业新闻、社交媒体上的热议……这些文本信息里,藏着多少数字无法直接表达的信号”?
这个念头一旦升起,就像种子落入湿润的土壤,迅速生根发芽。
他立刻行动。先是花了两个小时,在coursera上找到一门斯坦福大学的《自然语言处理与深度学习》公开课,加入学习列表。接着,在知乎、掘金等技术社区搜索“transformer入门实战”,收藏了十几篇高赞教程。
最让他兴奋的是,在hugging Face官网上,他发现了一个名为“model hub”的宝藏库。
“这太不可思议了……”林晨滚动着页面,眼睛发亮。
bERt-base-chinese、Gpt-2、t5、RobERta……一个个预训练好的模型像货架上的商品一样陈列着,大部分只需几行代码就能调用。更关键的是,这些模型大多开源,允许微调以适应特定任务。
“也就是说,我不需要从零开始训练一个理解中文的巨型模型——那是需要海量数据和算力,只有大厂才玩得起的游戏”。林晨快速思考着,“我只需要在这些已经具备强大语言理解能力的‘大脑’基础上,用我自己的数据(比如财经新闻、股评)对它进行‘专项培训’,它就能学会针对金融文本的分析能力”。
这个认知让他心跳加速。这意味着门槛的极大降低,意味着个人开发者也有机会利用最前沿的NLp技术。
接下来的三天,林晨进入了新一轮的沉浸式学习。
第一天,他主攻transformer架构。那篇着名的论文《Attention Is All You Need》他打印出来,对照着中文解读,啃了三遍。自注意力机制(Self-Attention)、位置编码(positional Encoding)、前馈网络(Feed-Forward)……一个个模块在他脑中逐渐清晰。他画了无数张草图,尝试理解输入一个句子“今天股价大涨”时,模型内部是如何计算每个词与其他词的相关性权重的。
“难怪能解决长距离依赖问题”。林晨在笔记上写道,“RNN像接力赛,信息传递远了会衰减;transformer让每个词都能直接‘看到’句子里的所有其他词,一举解决了瓶颈”。
第二天,他深入研究bERt(bidirectional Encoder Representations from transformers)。这个名字直译过来是“来自transformer的双向编码器表示”。双向(bidirectional)是它的精髓——传统语言模型只能从左到右或从右到左单向预测,bERt却能同时考虑上下文,从而获得更深层的语义理解。
“masked Language model(掩码语言模型)和Next Sentence prediction(下一句预测)”。林晨总结着它的两个预训练任务,“通过让模型预测被随机掩盖的词,以及判断两个句子是否连续,它学会了词语之间的关系和句子间的逻辑。这就像让一个孩子通过完形填空和组句游戏来掌握语言”。
第三天,他转向Gpt(Generative pre-trained transformer)。与bERt的“理解”取向不同,Gpt更擅长“生成”。它的训练方式是给定上文,预测下一个词。这种自回归(Auto-regressive)方式让它能写出连贯的文本。林晨在本地跑了一个小型的Gpt-2 demo,输入“央行今日宣布”,模型输出了“降准0.5个百分点,释放长期资金约1.2万亿元……”虽然内容纯属虚构,但格式和语气竟有模有样。
“一个擅长理解,一个擅长生成”。林晨对比着,“对于投资分析,目前更需要的是理解能力,从文本中提取情感倾向、关键事件、风险提示。所以bERt路线可能更合适”。
理论学习必须用实践巩固。林晨决定动手微调一个模型试试。
他在hugging Face上选择了bert-base-chinese,这是一个通用的中文bERt模型。任务设定为简单的文本分类:判断一段中文文本的情感是正面、负面还是中性。
数据从哪里来?林晨想到了电商评论。他在网上找到了一个公开的中文电商评论数据集,包含数万条用户对商品的评价以及对应的情感标签(1—5星,他将其归为正面、中性、负面三类)。
接下来是代码时间。得益于hugging Face的transformers库,流程被大大简化。
from transformers import berttokenizer, bertForSequenceclassification
from transformers import trainer, trainingArguments
import torch
from datasets import load_dataset
# 加载数据和分词器
dataset = load_dataset(csv, data_files=reviews.csv)
tokenizer = berttokenizer.from_pretrained(bert-base-chinese)
# 定义数据预处理函数
def preprocess_function(examples):
return tokenizer(examples[text], truncation=true, padding=max_length, max_length=128)
tokenized_dataset = dataset.map(preprocess_function, batched=true)
# 加载预训练模型,指定分类标签数
model = bertForSequenceclassification.from_pretrained(bert-base-chinese, num_labels=3)
# 设置训练参数
training_args = trainingArguments(
output_dir=./results,
num_train_epochs=3,
per_device_train_batch_size=16,
evaluation_strategy=epoch,
)
# 创建trainer并开始微调
trainer = trainer(
model=model,
args=training_args,
train_dataset=tokenized_dataset[train],
eval_dataset=tokenized_dataset[test],
)
trainer.train
代码跑起来了。林晨的笔记本电脑风扇开始嗡嗡作响,GpU占用率跳到了98%。他看着屏幕上滚动的损失(loss)值逐渐下降,准确率(accuracy)缓缓上升,一种熟悉的、久违的成就感涌上心头。
三个小时后,微调完成。他在测试集上评估,准确率达到了92.7%。对于一个下午鼓捣出来的小实验,这个结果相当不错。
林晨新建了一个python脚本,输入一段自己编的评论:“这款手机电池续航太差了,半天就没电,而且拍照模糊,非常失望”。运行模型预测。
模型输出:负面(置信度0.96)。
他又输入:“物流超快,包装完好,产品跟描述一模一样,性价比很高,推荐”!
模型输出:正面(置信度0.94)。
“成功了”!林晨握了握拳,脸上露出笑容。虽然这只是最基础的分类,虽然电商评论和财经文本在语言风格、专业术语上差异巨大,但这条路走通了。
他关掉实验代码,打开“晨曦一号”的项目文件夹。在“数据模块”子目录下,他新建了一个文件夹,命名为NLp_data。
“下一步,得想办法获取财经领域的文本数据”。林晨盘算着,“上市公司公告、券商研报、权威财经媒体的新闻、雪球、股吧等社区的讨论……这些数据清洗、标注后,就能用来微调一个专业的‘金融情感bERt’”。
他甚至想到了更远的应用场景:实时监控社交媒体上对某家公司的舆论风向变化,或许能比财报更早发现潜在风险;分析央行或监管机构的政策表述,捕捉措辞的微妙差异,预判政策走向;自动解读冗长的上市公司年报,提取关键财务数据和风险提示……
窗外,天色已暗。鹏城的灯火次第亮起,勾勒出城市的天际线。书房里,只有屏幕的光映在林晨专注的脸上。
他忽然意识到,自己正站在一个奇妙的交汇点上。一边是冰冷严谨的数字与概率(量化交易),另一边是复杂多变的人类语言与情绪(NLp)。而AI,正是连接这两端的桥梁。
失业的焦虑、存款减少的压力,在这一刻似乎被暂时屏蔽了。取而代之的,是一种更广阔的好奇心与探索欲。他仿佛看到,自己正在构建的那个智能投资系统,因为注入了“理解语言”的能力,正在变得更有生命力和洞察力。
“先从爬虫开始吧”。林晨新建了一个文档,写下明日计划:“1. 研究财经网站的反爬策略,设计合规的数据抓取方案。2. 寻找可用的已标注金融文本数据集。3. 设计金融领域情感分类的标签体系(不止正面、负面,可能包括‘利好’、‘利空’、‘中性’、‘不确定’、‘重大政策’等更多维度)”。
写完计划,他保存文档,靠在椅子上长长舒了口气。
肚子咕咕叫了起来。他这才想起,自己中午只随便吃了几口面条。起身去厨房,烧水,准备下点速冻饺子。等待水开的时候,他拿起手机,下意识点开了股票软件。
自选股列表里,几只他长期观察的股票涨跌互现。若是以前,他只会盯着K线图和指标。但现在,他脑子里冒出的第一个念头是:“今天关于这几家公司,有没有什么重要的新闻或者分析报告?市场的主流情绪是怎么看的”?
水烧开了,蒸汽顶得锅盖噗噗作响。
林晨放下手机,把饺子倒进锅里。白色的饺子在滚水中起伏,他忽然笑了笑。
语言是信息的载体,情绪是市场的催化剂。而他,正在学习如何用AI这把钥匙,去解开那些藏在文字背后的财富密码。
这条路,似乎越走越宽了。
第65章 计算机视觉
窗外的鹏城湾在晨光中泛起粼粼波光,林晨揉了揉有些发酸的眼睛,将昨晚整理的 NLp 学习笔记保存归档。
连续两周沉浸在 transformer 架构和 bERt 模型的原理中,那种从困惑到豁然开朗的过程让他着迷。但作为一个有十年开发经验的老码农,他深知技术学习的广度同样重要——特别是在 AI 这个日新月异的领域。
“接下来该学计算机视觉了”。林晨打开笔记本,新建了一个名为“cV_Learning”的文件夹。
计算机视觉(puter Vision),这个让机器“看懂”世界的领域,对林晨来说既熟悉又陌生。熟悉的是,他在跨境电商公司工作时接触过简单的图像处理,比如商品图片的自动裁剪和优化;陌生的是,那些基于深度学习的现代 cV 技术,对他而言还是一片待开垦的沃土。
他先花了一个上午时间梳理知识体系。从最基础的图像表示(像素、通道、色彩空间)开始,到传统的图像处理方法(边缘检测、特征提取),再到深度学习的革命性突破。当他看到 2012 年 AlexNet 在 ImageNet 竞赛中以压倒性优势夺冠的那张历史性图表时,内心涌起一阵技术人特有的激动——那是深度学习在 cV 领域的第一声春雷。
“卷积神经网络(cNN)……”林晨喃喃自语,点开了吴恩达教授在 coursera 上的经典课程。
卷积层、池化层、全连接层,这些概念像拼图一样在他脑中逐渐拼接成型。他特别喜欢卷积操作的那个直观比喻:用一个小的滤波器(比如 3x3 的矩阵)在图像上滑动,就像拿着放大镜一寸寸地查看图像中的局部特征。
“所以边缘检测其实就是一种特定的卷积核”。林晨在 Jupyter Notebook 里敲下几行代码,用 opencV 库加载了一张鹏城湾夜景的照片,然后尝试用 Sobel 算子提取边缘。当黑白分明的轮廓线在屏幕上显现时,他仿佛听到了图像在向他“说话”。
午饭是苏婉提前准备好的便当,林晨一边吃着,一边继续研究。cNN 的进化史像一部技术史诗:从 LeNet-5 的手写数字识别,到 AlexNet 的深度突破,再到 VGGNet 那令人印象深刻的“3x3 卷积堆叠”设计哲学。
但真正让他屏住呼吸的是 ResNet(残差网络)。
“跳跃连接(Skip connection)……”林晨反复阅读着何恺明那篇着名论文中的图示。当神经网络层数加深时,梯度消失问题会让训练变得极其困难,而 ResNet 通过让信息“跳过”某些层直接传递,巧妙地解决了这个问题。
他在草稿纸上画着示意图:“假设我们要学习一个映射 F(x),传统的网络试图直接拟合 F(x),而 ResNet 学习的是残差 F(x)?x,然后输出 x+[F(x)?x]=F(x)。这样即使深层网络的权重更新很小,至少恒等映射的部分能保证信息流通……”
“太优雅了”。林晨忍不住赞叹。这种在看似复杂问题中找到简洁本质的能力,正是顶尖工程师与普通码农的区别。
下午三点,他开始研究目标检测(object detection)。这是 cV 领域最具实用价值的方向之一——不仅要识别图像中有什么,还要标出它们在哪里。
两阶段检测器代表 R-cNN 系列,单阶段检测器代表 YoLo……林晨对比着两者的架构图。R-cNN 先产生候选区域再分类,精度高但速度慢;YoLo(You only Look once)则将检测任务转化为回归问题,把整张图像输入网络,一次性输出边界框和类别,速度极快。
“YoLo v3 的 darknet-53 主干网络,结合了 ResNet 的跳跃连接思想……”林晨下载了 YoLo 的开源代码,在本地环境里尝试运行。当看到示例代码成功检测出图像中的狗、自行车和卡车时,他意识到自己正在触摸到当前工业界最实用的 cV 技术之一。
理论必须与实践结合。林晨决定动手做一个项目:用目标检测技术识别家里的常见物品。
第一步是收集数据。他拿起手机,在客厅、厨房、卧室各个角度拍摄了上百张照片——沙发、茶几、电视、冰箱、微波炉、床、衣柜……每张照片都包含多件物品。
“得自己标注数据了”。林晨苦笑。这可能是 cV 项目中最枯燥的环节。他下载了 LabelImg 工具,开始一张张地画边界框、打标签。鼠标点击、拖动、输入类别名称,这个动作重复了数百次。当标注完最后一张照片时,窗外已是华灯初上。
晚餐后,林晨开始构建模型。他选择了 YoLo v5 的 pytorch 实现,这是一个在 Github 上拥有数万星标的流行项目。按照教程,他将数据集按 8∶1∶1 的比例分为训练集、验证集和测试集。
“数据增强很重要”。林晨在配置文件中启用了随机翻转、裁剪、色彩抖动等选项——这能让模型看到更多样的数据变体,提高泛化能力。
训练开始了。GpU 风扇发出轻微的嗡鸣,屏幕上滚动着损失函数下降的曲线。林晨泡了杯茶,守在电脑前观察着每一个 epoch(训练轮次)的性能变化。
第一个 epoch,损失值很高,模型基本在瞎猜;第十个 epoch,损失开始稳定下降;第三十个 epoch,验证集上的 mAp(平均精度均值)达到了 0.65……
“有戏”。林晨眼睛一亮。
训练完成后,他加载了最佳权重文件,然后用手机实时拍摄进行测试。当他将摄像头对准客厅的茶几时,屏幕上实时显示出三个边界框:
[沙发:0.92] [茶几:0.89] [水杯:0.78]
置信度分数在 0.7 以上,意味着模型相当确定自己的判断。林晨移动手机,摄像头扫过书架,模型又识别出了“书架”和“书籍”;对准厨房,识别出“冰箱”“微波炉”“电饭煲”。
“虽然只是个小 demo,但……”林晨看着屏幕上实时跳动的检测框,一种创造的喜悦油然而生。这就是编程的魅力:你用代码定义规则,机器按照规则运行,然后世界就在你眼前以新的方式被“看见”了。
他保存了模型文件,在项目文档中详细记录了整个过程:数据收集的难点(光线变化、遮挡问题)、标注的注意事项(边界框要贴合物体、类别要统一)、训练中的调参经验(学习率设置、早停策略)……
夜深了,林晨站在阳台上眺望鹏城的夜景。远处科技园的写字楼还亮着星星点点的灯光,那里可能正有团队在研究更先进的视觉算法。
他突然想到一个问题:计算机视觉和自己的量化投资系统有什么关系?
表面上看,一个处理图像,一个处理金融数据,似乎风马牛不相及。但林晨的思维开始发散:能不能用视觉技术分析 K 线图的形态?或者识别财经新闻中的图表信息?甚至……监控卫星图像来分析港口货运量、停车场车辆密度,作为宏观经济的前瞻指标?
这个想法让他兴奋起来。AI 的魅力就在于这种跨领域的连接——当你掌握了不同模态的技术后,就能在看似无关的事物之间架起桥梁。
回到书房,林晨在技术规划文档中新增了一节:“多模态融合探索”。他写下初步想法:“视觉技术可能为投资系统提供另类数据维度,需关注:1)图表识别;2)卫星图像分析;3)视频信息提取……”
敲下最后一个句号时,时间已过午夜。林晨关掉电脑,脑海中却还在回放着白天学习的那些模型架构。cNN 的层次化特征提取,ResNet 的跳跃连接,YoLo 的端到端检测……这些精妙的设计像一首首无声的乐章,在他心中回荡。
躺在床上,他忽然想起多年前刚学编程时,老师说过的一句话:“计算机最本质的能力是计算,但最伟大的能力是感知”。
那时他不完全理解这句话。但现在,当他自己亲手让机器“看见”了客厅里的沙发和茶几时,他明白了:感知是理解世界的第一步,而理解世界,正是所有智能——无论是人类的还是机器的——最原始的渴望。
窗外的鹏城渐渐安静下来。在这个失业的夜晚,林晨却感觉自己比以往任何时候都更接近技术的核心。他闭上眼睛,梦见自己站在数据的海洋边,而 AI 是他建造的船,正载着他驶向未知的彼岸。
第66章 投资的想法
窗外的鹏城又迎来了一个潮湿的清晨。林晨坐在书桌前,眼前的屏幕上不再是卷积神经网络的代码,也不是目标检测的训练日志,而是一篇偶然点开的、标题为《揭开量化交易的面纱:数学、代码与市场的博弈》的长文。
这篇文章出现在一个技术论坛的“跨界讨论”板块。作者显然是个同时精通金融和编程的极客,用冷静的笔触拆解了量化交易的核心——利用历史数据,通过数学模型(后来进化到机器学习模型)寻找统计意义上的规律,构建交易策略,并由程序自动执行,试图剥离人性情绪带来的非理性波动。
“市场噪音中的微弱信号……”林晨喃喃念出文中的一个小标题,手指无意识地敲着桌面。
他原本只是休息时随意浏览,但文章里那些概念——阿尔法因子、回测、夏普比率、最大回撤——像一颗颗小石子投入他最近被 AI 知识填满的脑海,激起了意想不到的涟漪。尤其是读到“现代量化基金越来越多地引入机器学习,尤其是深度学习模型,来处理高维、非线性的市场数据,预测短期价格走势或识别复杂模式”这一段时,他敲击桌面的手指停住了。
一种熟悉的、混合着好奇与兴奋的战栗感,顺着脊椎爬了上来。这感觉,和他第一次理解反向传播算法,第一次看到自己写的 cNN 成功识别出猫狗图片时,颇为相似。
但这一次,似乎还多了点别的东西。
他的目光离开屏幕,投向窗外灰蒙蒙的天空。鹏城的天空总是这样,即便在清晨,也带着一种忙碌的底色。楼下偶尔传来早高峰车流隐约的喧嚣,提醒着他这个城市永不停歇的运转节奏,以及自己暂时脱离其外的尴尬处境。
失业。存款消耗。房贷。苏婉的默默支持。父母的担忧。一次次面试后因薪资期望而起的微妙叹息……
这些现实的压力,像背景噪音一样持续存在着。学习 AI 让他暂时沉浸,获得智力上的愉悦和“未来可能有用”的虚幻安全感,但并不能直接缓解每个月账单带来的冰凉触感。
而这篇文章,以及文章中描绘的那个由数据、模型和自动化交易构成的世界,突然指向了一种可能性——一种将他正在拼命学习的技能,直接转换为经济收益的可能性。
“用 AI 预测股票……”这个念头一旦升起,就带着灼热的温度,再也按捺不下去。
他立刻行动起来,关掉论坛页面,打开了浏览器。搜索关键词从“tensorFlow 图像分类”变成了“金融数据 ApI”“A 股历史数据”“python 量化交易库”。
信息如潮水般涌来。他看到了聚宽、米筐这些国内量化平台,了解到 tushare、AkShare 这些获取金融数据的 python 库。他快速浏览着一些开源的基础量化策略代码,虽然那些策略看起来简单(比如双均线交叉),但整个框架——数据获取、预处理、策略编写、回测、可视化——清晰地呈现出一条路径。
“这不就是一个典型的、数据驱动的、可建模、可优化的系统吗”?林晨的眼睛越来越亮,“市场数据是输入,交易信号是输出,中间的预测模型……不就是我正在学的这些东西吗”?
区别在于,图像识别训练用的 mNISt 数据集是静态的、干净的,而金融市场的数据是流动的、充满噪声的、且具有反身性(参与者认知会影响市场本身)。这非但没有吓退他,反而激起了他作为程序员和初入 AI 领域者的挑战欲。更复杂、更混沌,意味着可能存在的“套利”空间(如果模型真的能捕捉到某些规律的话)也更大?
他点开了一个关于“LStm 预测股价”的 Jupyter Notebook 示例。代码并不复杂,核心是用长短时记忆网络对历史股价序列进行建模,预测下一个时间点的价格。回测结果图显示,模型预测曲线与真实股价曲线在某些局部走势上似乎有跟随性,但整体而言,误差依然明显。
“单变量时间序列预测,而且只用了价格……”林晨皱起眉,下意识地用上了最近学到的分析思维,“特征太单一了。市场情绪、资金流向、基本面变化、行业新闻、甚至全球宏观事件……这么多因素都没考虑。这顶多算个玩具”。
但玩具也是从简单开始的。他意识到,如果真的想尝试,他需要构建一个庞大得多的特征工程体系。股价、成交量、各种技术指标(mAcd、RSI、KdJ……)是基础。或许还可以爬取新闻文本,做情感分析?甚至,他想起了昨天刚完成的计算机视觉项目——能不能用 cV 模型自动识别 K 线图的特定形态组合?或者分析上市公司公开的卫星图像,评估其仓储、厂区活跃度?
这个想法像一颗种子,在脑海里迅速生根发芽,枝蔓横生。每一个枝蔓都指向他最近学到的一项 AI 技术:NLp 处理新闻和财报,cV 分析图表和图像,时间序列模型预测走势,甚至强化学习来模拟交易员在动态环境中的决策……
一种奇妙的“连通感”击中了他。之前学习的那些看似分散的知识点——神经网络、词向量、卷积层、目标检测——此刻仿佛被一根名为“量化交易”的线串了起来,指向一个清晰具体、且极具诱惑力的目标:创建一个属于自己的、智能化的投资系统。
这个系统不一定能保证暴富(他理性地知道金融市场没有圣杯),但它代表了一种全新的可能性:用技术构建一个可能产生现金流的“副业”,或者说,一个应对未来不确定性的“技术压舱石”。它不同于找工作,那是出售自己的时间换薪水;这更像是创造一个自动化的、基于数字的“雇员”,替他去参与另一场游戏。
兴奋逐渐沉淀为一种更扎实的冲动。他打开一个新的笔记文档,标题写下:“AI+量化投资探索路线”。
手指在键盘上停顿了一下。现实的压力悄然浮现。苏婉会怎么想?她会觉得这是不务正业,还是又一次冒险的尝试?家里的存款还能支撑多久?用真金白银去验证这些模型的想法,风险有多大?
他站起身,走到狭小的阳台上,点燃了一支烟。烟雾融入潮湿的空气。楼下,送孩子上学的小车驶过,穿着西装步履匆匆的上班族走向地铁站。那个世界依然按部就班。
而他,站在这个临时的“避难所”里,手里却似乎抓住了一根不一样的绳子。一根由代码和数据编织的绳子,另一端没入那片充满机遇与风险、数字与财富交织的迷雾海洋。
“不能盲目”。他对自己说,吐出一口烟,“得先彻底研究清楚。数据从哪里稳定获取?回测平台怎么选?最基本的策略该如何实现?风险控制模型怎么建立……这又是一个庞大的学习工程”。
但这一次,学习的目标前所未有的具体和迫切。
掐灭烟头,他回到电脑前,眼神里的迷茫和焦虑被一种专注的研究欲望取代。他不再漫无目的地浏览,而是开始系统性地收藏有价值的资源、记录关键概念、规划下一步的学习和实践步骤。
书桌上的灯光,照亮了他专注的侧脸,也照亮了屏幕上新打开的、关于“金融时间序列分析”和“量化回测常见陷阱”的页面。窗外的城市依旧喧嚣,但在这个小小的房间里,一个即将影响深远的想法,已经完成了从萌芽到破土的关键一步。
林晨知道,他接下来的学习之路,将因为注入这个“投资的想法”而变得更具方向,也或许,更加惊心动魄。
第67章 获取金融数据
清晨六点半,鹏城某老小区狭窄的书房里,林晨已经坐在电脑前两个小时了。
窗外天色渐亮,远处科技园那些玻璃幕墙大楼开始反射晨光。林晨揉了揉发酸的眼睛,目光重新聚焦在屏幕上——那里正打开着三个浏览器标签页:tushare 官网、akshare 的 Github 页面,还有一个量化交易入门教程。
“数据是量化系统的血液”。他低声重复着昨晚在论坛上看到的那句话。
经过昨天一整天的研究,林晨已经基本理清了思路:要开发 AI 投资系统,第一步不是急着写模型代码,而是先搞定数据源。没有高质量、完整的历史数据,什么机器学习模型都是空中楼阁。
他先点开了 tushare 官网。这是一个在国内量化圈颇有名气的金融数据接口库,提供 A 股、基金、期货等多种数据。注册流程很简单,但看到“高级权限需要积分或付费”的提示时,林晨还是皱了皱眉。
“先注册基础版试试”。他输入手机号,获取验证码,几分钟就完成了注册。
登录后,林晨按照文档示例,在本地 python 环境里安装了 tushare 库,然后写了一段最简单的测试代码:
import tushare as ts
ts.set_token(token)
pro = ts.pro_api
# 获取平安银行日线数据
df = pro.daily(ts_code=000001.SZ, start_date=, end_date=)
print(df.head)
代码运行,控制台开始滚动输出数据。林晨屏住呼吸盯着屏幕——成功了!数据框里清晰地显示着日期、开盘价、最高价、最低价、收盘价、成交量……这些基础字段都有了。
他兴奋地搓了搓手,但很快冷静下来。tushare 基础版的数据频率和字段都有限制,而且获取大量历史数据需要时间。更重要的是,他需要的不只是 A 股数据,还有基金、期货、期权,甚至宏观经济指标。
“得找备用方案”。林晨点开了 akshare 的 Github 页面。
akshare 是一个完全免费的金融数据接口库,由国内开发者维护,数据源更丰富。安装过程也很顺利,但当他尝试获取数据时,遇到了第一个技术难题——网络请求超时。
“可能是数据源网站的反爬机制”。林晨没有慌张,十年的编程经验让他习惯性地开始排查问题。
他打开浏览器开发者工具,模拟请求头,添加延迟,尝试使用代理……一个小时后,当 akshare 成功返回上证指数历史数据时,林晨长舒一口气,后背已经微微出汗。
时间到了上午九点,股市开盘。林晨突发奇想,写了个实时获取股票报价的小脚本。看着屏幕上跳动的最新价格,他忽然有种奇妙的感觉——那些曾经只在炒股软件上看到的数字,现在正通过自己写的代码流淌进电脑里。
“这就是程序员看市场的视角”。他自言自语。
苏婉轻手轻脚地走进书房,放下一杯温水:“早饭在桌上,趁热吃。”
林晨这才意识到自己从凌晨四点起来到现在还没吃东西。他起身活动了下僵硬的肩膀:“马上就去。对了,婉婉,我找到获取金融数据的方法了”。
“能赚钱吗”?苏婉问得直接,眼神里带着期待和担忧交织的复杂情绪。
“现在还早,得先有数据,然后分析,建模型,回测验证……”林晨解释着流程,看到妻子似懂非懂的表情,他笑了笑,“简单说,就是先学会怎么‘看’市场,然后才能想办法‘猜’对市场”。
“那你好好‘看’”。苏婉拍拍他的肩,“别太累”。
吃完早饭回到书房,林晨面临下一个挑战:数据存储和处理。
他下载了沪深 300 成分股过去三年的日线数据——这是第一步要构建的基础数据集。tushare 和 akshare 双管齐下,花了将近两个小时,终于把 300 只股票的数据都爬了下来。数据量不小,单个 cSV 文件就有几十 mb。
“得用数据库了”。林晨果断放弃了用文件存储的原始想法。
他在本地搭建了 mySqL 数据库,设计了一个简单的股票日行情表结构,然后写 python 脚本把 cSV 数据批量导入。这个过程又遇到编码问题、日期格式转换问题、空值处理问题……等 300 只股票数据全部入库成功时,已经是下午一点。
林晨饿得肚子咕咕叫,但精神异常亢奋。他看着数据库里整齐排列的数百万行数据,就像将军看到了自己的士兵阵列。
然而真正的考验才刚刚开始。
数据有了,但能用吗?林晨深知,原始金融数据往往存在各种问题:缺失值、异常值、复权问题、停牌期间的无效数据……
他打开 Jupyter Notebook,开始用 pandas 进行数据分析。这是 python 里最强大的数据处理库,林晨之前自学时已经掌握了基础操作,但真正用于实战还是第一次。
import pandas as pd
import numpy as np
# 从数据库读取某只股票数据
df = pd.read_sql(SELEct * FRom daily_data whERE ts_code=000001.SZ, connection)
# 检查缺失值
print(df.isnull.sum)
# 检查异常值(比如价格为负)
print(df[df[close] <= 0])
果然,数据里存在少量缺失值,还有几个交易日因为特殊原因收盘价为 0。林晨开始编写清洗函数:用前向填充法处理缺失值,对异常值进行标记或剔除……
“这还不够”。他想起论坛上那些量化高手的话,“原始价格数据要转换成有意义的特征”。
特征工程——这是机器学习的关键步骤。对于股票数据,原始价格意义有限,技术指标才能反映市场状态。
林晨开始计算最基础的几个技术指标。他先写了一个移动平均线函数:
def calculate_ma(df, window=5):
df[fma{window}] = df[close].rolling(window=window).mean
return df
然后是相对强弱指数(RSI):
def calculate_rsi(df, window=14):
delta = df[close].diff
gain = (delta.where(delta > 0, 0)).rolling(window=window).mean
loss = (-delta.where(delta < 0, 0)).rolling(window=window).mean
rs = gain / loss
df[rsi] = 100 - (100 / (1 + rs))
return df
一个下午,林晨沉浸在代码和数学公式里。他计算了 mAcd、布林带、动量指标……每完成一个指标函数,他就运行测试,看着数据框里新增的列,有种创造者的成就感。
傍晚六点,当林晨终于完成第一批 10 只股票的特征工程时,窗外已是华灯初上。他靠在椅背上,看着屏幕上那些密密麻麻的数字和曲线,忽然笑了。
“原来这就是量化分析的基础”。他喃喃道,“把市场变成数字,把数字变成特征,把特征喂给模型……”
这个过程的繁琐超出了他的预期,但每一步的完成都让他更接近目标。更重要的是,通过亲手处理这些数据,他开始真正理解金融市场的数据结构——不再是股民眼中的 K 线图,而是程序员眼中的多维矩阵。
手机震动,是母亲发来的微信:“晨晨,吃饭了吗?别老盯着电脑”。
林晨回复:“吃了,妈。在学新东西,挺好的”。
他关掉电脑,走到窗前。对面楼里家家户户亮着灯,有人家在做饭,有孩子在写作业,有夫妻在看电视——这是最普通的鹏城夜晚。而在这千万扇窗户中的一扇后面,一个失业的 35 岁程序员,正在尝试用代码解读市场的秘密。
林晨忽然想起多年前刚学编程时,老师说过的话:“程序员的超能力,是把复杂世界抽象成逻辑”。
他现在做的正是这件事:把波诡云谲的金融市场,抽象成一行行数据、一个个特征、一条条规则。
晚饭时,苏婉问起进展。林晨用最通俗的方式解释:“就像你要做一桌好菜,我先去把各种食材买齐,洗干净,切好,准备好调料。现在食材准备阶段完成了一小部分”。
“那什么时候能炒菜”?苏婉问。
“还得研究菜谱呢”。林晨笑道,“就是交易策略”。
晚上九点,林晨重新坐回电脑前。他没有继续写代码,而是打开了一个空白文档,开始整理今天的学习笔记:
1.数据源:tushare(部分付费)+ akshare(免费但需处理反爬)
2.存储方案:mySqL 数据库,已设计基础表结构
3.数据处理:pandas 数据清洗,初步完成缺失值、异常值处理
4.特征工程:已实现 10 个基础技术指标函数
5.待解决问题:数据更新机制、分钟级高频数据获取、财务数据整合……
写到这里,林晨停顿了一下,在文档末尾加了一行字:
“数据质量决定模型上限。宁可慢,不可乱”。
这是他今天最大的感悟。在跨境电商公司工作时,他也处理过大量数据,但那些是用户行为数据、商品销售数据,错了顶多影响推荐效果。而金融数据不同——每一行数字背后,都是真金白银的波动。
睡前,林晨最后检查了一次数据库。300 只股票的基础数据安静地躺在表格里,等待被分析和挖掘。他忽然有种奇怪的感觉:这些冰冷的数据,似乎有了温度。
手机又震动了,这次是堂哥林枫发来的语音:“晨晨,浩浩今天打电话回来,说工厂最近订单少了,可能要裁员。他问我该怎么办,我也不知道怎么建议……你说呢”?
林晨看着这条消息,沉默了很久。
窗外,鹏城的夜空难得能看到几颗星星。这座永远忙碌的城市里,无数人正在为生计奔波——在工厂流水线上,在写字楼格子间里,在送外卖的路上,在开网约车的深夜。
而此刻,林晨坐在书桌前,面前是闪烁着代码的屏幕,身后是熟睡的妻子,手机里是堂哥关于侄儿前途的询问。
他忽然明白了自己为什么要做这个投资系统。
不仅仅是为了赚钱,不仅仅是为了证明自己,更是为了在不确定的时代里,找到一种确定性的方法——一种用逻辑对抗随机,用数据理解世界,用技术创造可能的方法。
“明天再研究下基本面的数据获取”。林晨设定好闹钟,关掉台灯,“财报数据、行业数据、宏观数据……都得整合进来”。
黑暗中,他闭上眼睛,脑海里不是股票代码和 K 线图,而是更广阔的图景:一个能够理解市场语言、洞察经济脉搏、辅助投资决策的智能系统。
这条路很长,但他已经迈出了第一步。
而且,他隐约感觉到,自己走对了方向。
第68章 第一个策略
书房的空调嗡嗡作响,努力对抗着鹏城3月的闷热。
林晨盯着屏幕上密密麻麻的代码,眼神专注。过去一周,他像蚂蚁搬家一样,从 tushare 和 akshare 上抓取了沪深 300 成分股过去五年的日线数据——开盘价、收盘价、最高价、最低价、成交量。然后用 pandas 清洗、处理,计算出一系列技术指标:移动平均线(mA)、相对强弱指数(RSI)、布林带(bollinger bands)、mAcd……这些指标被拼接成一个个“特征向量”,按时间顺序排列,形成了他模型的“饲料”。
数据准备好了。接下来,是给这些数据找一个能消化它们、并预测未来的“大脑”。
他选择了 LStm(长短期记忆网络)。这是一种特殊的循环神经网络(RNN),擅长处理像股价序列这样具有时间依赖性的数据。普通的 RNN 在传递长期信息时容易“遗忘”,而 LStm 通过精巧的“门”结构(输入门、遗忘门、输出门)控制信息流,能更好地记住序列中的长期模式。这听起来很像是为捕捉股市那些若隐若现的“趋势”和“周期”量身定做的。
“理论上是这样”,林晨揉了揉发酸的眼睛,自言自语。实践是另一回事。
他打开 pytorch,开始搭建模型结构。输入层对应特征维度,接着是两层 LStm 层,用于捕捉不同时间尺度的依赖关系,然后是 dropout 层——随机“丢弃”一部分神经元连接,防止过拟合的常用手段,最后是全连接层输出预测值:下一个交易日的收盘价。
定义损失函数(mean Squared Error,均方误差),选择优化器(Adam),设置学习率、训练轮数(epoch)……
敲下最后一行代码,林晨深吸一口气,点击运行。
风扇的转速明显加快,笔记本电脑的散热口发出轻微的嘶鸣。屏幕上,代表损失值的曲线开始跳动,随着迭代轮数的增加,那条曲线缓缓向下探去。训练集上的损失在下降,这意味着模型正在从历史数据中学习规律。
同时,他也预留了一部分从未见过的数据作为验证集,用来监控模型在“新数据”上的表现,防止它只死记硬背训练数据。
训练持续了将近四十分钟。当进度条走到终点,林晨立刻启动了回测程序。
回测,就是用训练好的模型,在另一段历史数据(测试集)上模拟交易,检验策略盈利能力。他设定了简单的规则:如果模型预测明日收盘价高于今日收盘价一定阈值(比如 0.5%),则模拟买入;如果预测低于今日收盘价一定阈值,则模拟卖出;否则持有。
程序开始运行,一行行日志快速滚动。林晨的心跳也跟着加快。他仿佛能听到虚拟资金在 K 线图上流动的声音。
终于,回测报告生成了。
他的目光第一时间锁定在几个关键数字上:
测试集累计收益率:18.7%
年化收益率:约 32.5%
夏普比率:1.2
最大回撤:-8.3%
林晨的呼吸停滞了一瞬,随即,一股强烈的热流从胸腔直冲头顶。十八个点!超过三十的年化!夏普比率大于 1 意味着风险调整后的收益还算不错,最大回撤控制得也尚可。
成功了?他的第一个 AI 量化策略,在历史回测中,竟然跑出了如此漂亮的曲线?
他猛地从椅子上站起来,在狭小的书房里来回走了几步,拳头不自觉地握紧。几个月来的焦虑、自我怀疑、埋头苦学的孤寂,在这一刻似乎找到了一个宣泄的出口。这不是纸上谈兵,这是代码和数学构建出的、实实在在的“可能性”。他的路,或许真的走对了!
兴奋持续了几分钟。冷静,必须冷静。林晨强迫自己坐回屏幕前,开始仔细审视回测的细节。
他调出了策略的净值曲线图。曲线总体向上,但中间有几段明显的盘整和下跌。他查看了交易信号分布,有些密集区域连续发出买入信号,有些阶段则长时间空仓。他又对比了模型在训练集和验证集上的损失曲线。
看着看着,他眉头渐渐皱起。
验证集上的损失,在训练后期下降得非常缓慢,甚至有轻微抬头的迹象,而训练集损失还在稳步下降。两者之间的差距在拉大。
一个熟悉的术语跳入脑海:过拟合(overfitting)。
他的模型,可能过于“精通”训练数据中的特定噪声和偶然模式了,以至于损害了它在未知数据上的泛化能力。就像一个学生把一本习题册的每一道题甚至标点符号都背得滚瓜烂熟,但遇到稍微变形的考题就可能抓瞎。回测用的测试集虽然也是历史数据,但和训练集时间上相邻,可能存在一定的相似性,掩盖了部分过拟合的问题。如果拿到真正的、未来的行情中去,表现可能会大打折扣。
“果然没那么简单”,林晨低声说,刚才的兴奋迅速褪去,取而代之的是一种混合着警觉和求知欲的冷静。
他重新审视自己的模型和流程。特征工程是否充分?除了技术指标,是否应该加入更多元的数据,比如他之前计划的基本面数据、情绪指标?LStm 的结构是否合理?层数、神经元数量、dropout 比率是否需要调整?训练数据和测试数据的划分方式是否科学?要不要采用更复杂的交叉验证?
问题一个接一个涌现。但这并没有让他沮丧,反而点燃了他更强烈的探索欲。发现问题,正是进步的起点。
他记下几个 immediate 的优化方向:尝试加入更多特征(先从获取到的财报基础数据开始),调整 LStm 的超参数(隐藏层维度、层数),引入更严格的早停(Early Stopping)机制防止过拟合,甚至考虑结合其他模型(比如注意力机制)来提升对关键时间点的捕捉能力。
窗外,天色已近黄昏。鹏城的天空被染成一片橙红。
林晨保存好代码和回测结果,关掉了密密麻麻的编程界面。他没有感到疲惫,反而有种充实的清醒。第一个策略,就像一个粗糙但能运转的原型机,它证明了这条路有矿可挖,同时也清晰地指出了通往富矿路上需要扫除的障碍。
他走到窗边,看着楼下小区里逐渐亮起的灯火和归家的行人。房贷的压力、失业的阴影、家庭的期待,依然像背景音一样存在。但此刻,他心中多了一份沉甸甸的、由代码和逻辑构建出的底气。
这个策略还不完美,甚至可能充满缺陷。但它是从零到一的突破。
下一步,就是在优化之后,用一点真正的资金,去现实市场里试一试水温。不是全部身家,只是一个小额的、他完全能承受损失的实验账户。回测再漂亮也是“纸上富贵”,真正的战场,在下一刻开盘的交易所里。
他回头看了一眼电脑屏幕,黑暗中,它像一块沉默的黑色矿石,里面却可能蕴藏着改变轨迹的能量。
“慢慢来”,他对自己说,“代码可以骗人,但逻辑不会,人更不能”。
真正的挑战,或许才刚刚开始。
第69章 风险管理
屏幕上的两条曲线像一道无形的裂痕,横在林晨心头。
那个 18.7% 的回测收益率带来的短暂兴奋早已冷却。此刻,他更关注的是训练集损失曲线平滑下降,而验证集曲线却在某个节点后开始微微上扬的分化现象。过拟合。这个在机器学习领域老生常谈的问题,在量化交易的语境下,意味着模型可能只是“记住”了历史数据的噪音,而非真正学会了市场规律。把这样的模型投入实盘,无异于蒙眼走钢丝。
“不能急着上实盘”。林晨关掉回测图表,向后靠在椅背上,书房里只听得见主机风扇低沉的嗡鸣。窗外的鹏城夜空,零星灯火点缀着密集的楼宇轮廓。他揉了揉发酸的眼眶,思路逐渐清晰。
问题发现了,优化方向也有了,但在这之前,还有一个更根本的环节被他忽略了——风险控制。一个只能预测涨跌(哪怕预测精度尚可)的策略,是残缺的。它没有回答:如果预测错了怎么办?该投入多少资金?亏损到什么程度必须退出?盈利了又该何时落袋为安?
这些,才是交易系统中决定生死存亡的部分。收益决定了你能走多高,而风控决定了你能不能活下来。
接下来的几天,林晨暂时搁置了模型优化的具体编码工作,转而一头扎进了风险管理的知识海洋。他泡在 quantconnect、聚宽等平台的社区论坛,翻阅那些真正经历过市场牛熊的量化交易者分享的经验帖——尤其是那些关于爆仓、关于回撤控制的血泪教训。同时,他系统性地查阅学术论文和经典书籍,从最基础的《期货市场技术分析》中关于资金管理的章节,到更现代的《主动投资组合管理》中关于风险预算的复杂模型。
他像个海绵一样吸收着,并在笔记本上(这次是真正的纸质笔记本,他感觉有些核心思路需要手写下来加深记忆)梳理出关键点:
仓位管理: 这是风控的第一道闸门。绝对不能把所有资金押注在一次交易上。他学习了固定比例法(每次投入总资金的固定百分比)、凯利公式(在已知胜率和赔率情况下的最优下注比例),以及更具动态性的波动率调整仓位法(市场波动大时自动降低仓位)。
止损策略: 这是防止单次亏损无限扩大的“保险丝”。他研究了固定价格止损、移动止损(如跟踪止损)、技术指标止损(如跌破某条均线)以及基于波动率的百分比止损。每种方法都有其适用场景和优缺点。
止盈策略: 与止损相对,但同样重要,目的是锁定利润,避免坐过山车。除了固定目标止盈,还有移动止盈、分批止盈等更灵活的方式。
组合风险: 当他未来同时运行多个策略、交易多个品种时,还需要考虑策略之间的相关性,避免所有策略在同一时间遭遇同类型风险,导致整体回撤过大。
“最重要的原则”,林晨在笔记本上重重写下,“永远是活下去。收益可以慢慢积累,但本金一旦大幅亏损,需要更高的收益率才能回本,而且心态极易崩溃”。
理论需要落地。他重新打开 pycharm,在之前那个略显单薄的“策略”类旁边,开始创建一个全新的“Riskmanager”(风险管理器)类。这个类将作为未来交易系统的核心组件之一,独立于预测模型,专门负责计算仓位、发出止损止盈指令。
他决定先从相对稳健的方法入手。在仓位管理上,他实现了一个基于账户总净值的固定比例方法,并设置了一个最大单笔仓位上限(比如总资金的 2%)。同时,他写了一个简单的波动率监测模块,计算标的近期价格波动率(如 AtR 指标),当波动率异常升高时,仓位比例会自动下调。
止损方面,他选择了“百分比止损”结合“移动止损”的混合方式。入场后,先设置一个基于入场价的固定百分比作为初始止损(例如 -5%)。一旦价格向有利方向移动超过一定幅度,止损价就自动上移(跟踪止损),锁定部分利润,同时给予行情继续发展的空间。
止盈则相对灵活,他设置了两重止盈:第一重是固定比例止盈(如 +10%),到达后平掉一半仓位,剩下的一半采用更宽松的移动止损,博取更大趋势的可能。
代码敲击声中,一个个函数被构建起来:calculate_position_size、check_stop_loss、update_trailing_stop、check_take_profit……他力求逻辑清晰,参数可配置,方便后续调整和优化。
“光有逻辑还不够,得能直观看到效果”。林晨心想。他修改了回测框架,将新的风控模块整合进去。回测引擎在模拟交易时,每一笔买卖决策不仅要看模型的预测信号,还必须经过 Riskmanager 的审核:能买多少?有没有触发止损或止盈?
他选用了同一段历史数据重新回测。这一次,回测报告出来后,累计收益率从之前的 18.7% 下降到了 15.2%。表面看收益降低了,但林晨仔细分析交易明细和资金曲线图后,眉头反而舒展开来。
最大的单笔亏损被严格限制在了 -5% 左右,没有出现之前可能存在的深度套牢。资金曲线的回撤(从高点回落的最大幅度)明显变小,曲线看起来更平滑,少了些陡峭的“悬崖”。虽然牺牲了一些潜在利润(比如有些仓位被过早止损或止盈),但整个交易过程显得可控了许多。
“这才像个样子”。林晨长舒一口气。一个完整的、可运行的量化交易系统雏形,终于在他手中拼接起来。它现在至少包含了几个关键模块:数据获取与处理、特征工程、AI 预测模型(尽管还需优化)、风险管理系统、回测框架。骨架已经搭好,剩下的就是不断填充血肉、优化细节。
他给这个初生的系统项目命名为“phoenix trader”(凤凰交易者),寓意着从灰烬中重生。创建了一个新的 Git 仓库,将代码谨慎地提交上去,并写下了详细的 REAdmE 说明。
完成这一切,已是深夜。林晨站起来活动了一下僵硬的肩颈,走到窗边。远处,鹏城湾的方向隐约有灯光闪烁。他知道,距离用这个系统真正赚到钱,还有很长的路要走。模型需要优化,风控参数需要更精细的测试,实盘环境下的滑点、网络延迟、交易接口稳定性等问题都还是未知数。
但至少,方向越来越清晰了。他不再是那个只盯着预测准确率的“模型炼金术士”,而开始像一个真正的“系统架构师”一样思考,思考如何构建一个健壮的、能够长期在复杂金融市场中生存并获取利润的机器。
这种从混沌到有序、从单点突破到系统构建的过程,带来了一种更深沉、更扎实的成就感。它驱散了部分因失业和财务压力带来的焦虑,取而代之的是一种专注于解决问题的平静力量。
他忽然想起侄儿林浩。那孩子也在流水线上,重复着看不到太多变化的工作。自己现在摸索的这条路,虽然艰难,但至少每一步都在创造新的东西,都有学习和成长。或许,这也是一条可以分享的路?
这个念头一闪而过。眼下,最重要的是让“凤凰”先真正飞起来一小段。林晨回到电脑前,打开模拟交易账户的界面。他决定,在投入真金白银进行极小额实盘测试之前,先让系统在模拟环境中全自动运行一周,观察它在更接近真实的环境下(尽管没有实际资金流动),面对实时行情数据、处理模拟订单的表现。
他启动了系统,设置好监控告警。屏幕上,行情数据开始滚动,系统日志窗口偶尔跳出一两行状态信息。一切似乎平静地运转起来。
林晨泡了杯浓茶,没有离开。他就坐在那里,看着屏幕,像守护着一个刚刚点燃火种、尚在摇曳的炉灶。他知道,这第一周的模拟运行,不会一帆风顺。但无论出现什么问题,都是宝贵的经验,都是让“凤凰”羽毛更加丰满的必经之路。
窗外的夜色,渐渐褪去最浓的黑,透出一点深蓝。鹏城的又一个清晨,即将来临。
第70章 小额实盘
周一早晨九点十五分,A 股集合竞价开始。
林晨坐在书房电脑前,屏幕上并排开着四个窗口:左边是“phoenix trader”系统的监控面板,实时显示着策略状态、持仓信息和风险指标;中间是行情软件,红绿 K 线正在跳动;右边是 python IdE,随时准备介入调整;最下方是资金账户的登录界面,余额显示着刚转入的 .00 元。
他深吸一口气,点击了监控面板上的“启动实盘”按钮。
系统状态从“模拟盘”变为“实盘运行”,日志窗口开始滚动信息:
[09:15:03]系统启动,连接券商 ApI 成功
[09:15:05]加载今日候选股票池……完成,共 23 支标的
[09:15:08]执行开盘前风险检查……通过
[09:15:10]等待开盘……
过去一周的模拟实盘测试结果不错——在严格控制仓位和止损的前提下,系统在五个交易日内实现了 1.7% 的正收益,最大回撤控制在 0.8% 以内,资金曲线平稳上升。虽然模拟盘和实盘存在差距,但至少证明这套从数据清洗、特征工程、模型预测到风险控制的完整链路,在逻辑上是自洽的。
“代码可以骗人,但逻辑不会”。林晨低声重复着自己的口头禅,“现在,该让人来检验逻辑了”。
九点三十分,正式开盘。
监控面板上的数字开始跳动。系统按照既定策略,在开盘后五分钟内完成了首批建仓——不是一次性买入,而是分三笔在细微的价格波动中入场,这是他从风险管理中学到的“平滑入场”技巧。总仓位控制在 30%,分散在三支不同行业的股票上。
林晨强迫自己不去看分时图的每一次波动。他起身去厨房倒了杯水,回来时发现其中一支持仓股票已经上涨了 1.2%,系统自动触发了第一层止盈预警,将该标的标记为“次日优先减仓”。
“这么快”?他有些意外,坐回椅子上。
日志窗口更新:
[09:38:15]标的[002xxx]触发止盈阈值 1,记录止盈信号
[09:38:17]受 t+1 规则限制,当日不可卖出,已加入次日减仓计划
盈利虽然微小,但那个“+”号让他心跳加速了一下。这是真正的钱,不是模拟盘里的数字——虽然收益尚未落袋,但系统已经在真实市场规则下给出了正向反馈。
整个上午,系统又完成了两次小规模的交易:一笔来自原有持仓的减仓操作,一笔是当日新建的试探性仓位。一盈一亏,盈亏相抵后略微盈利。林晨逐渐适应了这种“旁观者”的角色——他设计了这个系统,现在需要相信它,就像飞行员相信自动驾驶仪。当然,他设置了硬性风险底线:单日最大亏损不超过总资金的 2%,一旦触发,系统将禁止新增仓位,并在可交易窗口内逐步降低持仓。
中午休市时,他算了下账:上午交易了五笔,全部为可卖出仓位或合法建仓,扣除手续费后净赚 87 元。
“还不够一顿像样的午饭”。林晨苦笑,但心里那点成就感是真实的。这 87 元的意义不在于金额,而在于验证——验证他这几个月埋头苦学的 AI 技术、量化知识,真的能在真实的 A 股交易规则下产生现金流,哪怕只是涓涓细流。
下午开盘后,市场波动加大。一支持有隔夜仓位的股票突然跳水,跌幅迅速扩大到 ?3.5%,触发了系统的动态止损线。日志窗口弹出警告:
[13:42:33]标的[300xxx]价格异常波动,触发动态止损
[13:42:35]执行可卖出仓位止损,亏损 ?2.1%
林晨看着那笔亏损的交易记录,心里紧了一下。但他马上注意到,系统在止损后并没有贸然加仓,而是将释放的风险额度用于重新评估市场结构,并把另一支刚出现买入信号的股票加入了次日重点观察列表。三分钟后,这支股票开始拉升,而系统保持了克制的沉默。
到下午三点收盘时,当日的交易汇总出来了:
总交易次数:9 笔
盈利次数:5 笔
亏损次数:4 笔
累计盈亏:+142 元
当日收益率:0.284%
年化收益率(按单日简单推算):约 74.8%(这个数字意义不大,他知道)
最大回撤:?0.7%
林晨盯着“+142 元”看了很久。然后他打开手机银行,确认证券账户的可用资金确实变成了
元。
他靠在椅背上,长长地呼出一口气。
窗外的阳光斜射进来,在书桌上投出明亮的光斑。鹏城四月午后的温度正好,楼下小区里有老人在散步,远处深南大道上的车流声隐隐传来。这个再普通不过的工作日下午,对林晨来说却像是一个仪式——他从一个被动等待雇佣的码农,变成了一个能用自己的技术创造价值的人,哪怕这个价值目前还微小得可怜。
接下来的四天,林晨保持着同样的节奏:每天早上九点十五分启动系统,下午三点收盘后复盘。他不再整天盯着屏幕,而是把更多时间用来优化代码——实盘暴露了一些模拟盘中没有的问题,比如网络延迟导致的成交价格偏差、某些小盘股流动性不足时系统下单的冲击成本等。
他针对这些问题做了调整:增加了对订单成交情况的监控模块,优化了流动性评估算法,甚至还写了一个简单的“市场情绪”因子——通过爬取财经新闻的关键词频次,作为辅助决策的参考。这些调整都是微小的,但积累起来,系统的韧性在增强。
到周五收盘时,账户资金变成了
元。
一周时间,5 万元本金,赚了 836 元。
林晨把这个数字记在了笔记本上,然后在旁边写了一行小字:“实盘第一周,系统存活,盈利。证明路径可行”。
他合上笔记本,走到阳台。傍晚的风吹过来,带着楼下桂花树若有若无的香气。隔壁阳台上,邻居正在收衣服,看到林晨,笑着点了点头——在这栋宝安区的老小区里,大多数邻居都知道林晨失业了,但没人知道他每天关在房间里做什么。
“林哥,最近在忙啥呢”?邻居随口问。 “学点新东西,试试看能不能搞出点名堂”。林晨回答得含糊,但语气里有了之前没有的底气。
回到屋里,手机响了。是大哥林枫打来的。 “小晨,这周末来我家吃饭?我爸说好久没见你了”。林枫的声音从听筒里传来,背景音里有机器轰鸣声,他应该还在工地上。 “这周可能不行,在盯一个项目测试”。林晨说,“下周吧,下周一定过去”。 “什么项目?找到新工作了”? “不算工作,是自己弄的一个小系统”。林晨斟酌着用词,“做金融数据分析的,刚上线测试”。
电话那头沉默了几秒,然后林枫说:“金融?那东西风险大啊。你...小心点,咱们家底子薄,经不起折腾”。 “我知道,只拿了很小一部分钱在试”。林晨说,“大哥你放心,我心里有数”。
挂断电话后,林晨看着电脑屏幕上那一周的资金曲线——总体向上,但有几次小的回撤。他知道大哥的担心是对的,金融市场确实凶险。但正因为凶险,才需要技术来驯服。他的系统现在还很稚嫩,就像刚学会走路的孩子,但至少,它已经能走了。
晚上苏婉回来时,林晨正在厨房做饭。简单的两菜一汤:清炒菜心,红烧排骨,紫菜蛋花汤。 “今天怎么样”?苏婉放下包,走进厨房。
“系统第一周实盘结束了”。林晨把菜盛到盘子里,“赚了八百多”。 苏婉愣了一下,然后笑了:“真的?那...挺好的”。
“只是刚开始,还得长期验证”。林晨把菜端上桌,“但至少证明,我学的这些东西不是纸上谈兵”。
吃饭时,乐乐叽叽喳喳说着幼儿园里的事,苏婉偶尔插几句话,林晨大多时候在听。这种日常的温暖,让他觉得这一周的紧绷感慢慢舒缓下来。再次失业这四个多月来,他第一次觉得,自己可能真的找到了一条路——一条不用再去求职网站投简历、不用再看hR脸色、不用再为35岁年龄焦虑的路。
当然,他知道前路还长。836元对于家庭开支来说杯水车薪,系统还需要更多市场环境的考验,他得继续学习更先进的模型算法... 但至少,黑暗的隧道尽头,开始有了光。 睡前,林晨又看了一眼账户。元。他关掉电脑,对自己说:“下周目标,系统不亏钱就行”。 而内心深处,一个更野心的声音在低语:如果每周都能有这样的收益,哪怕只有0.5%,复利下去的话... 他摇摇头,把这个念头压下去。不能贪,风险管理第一条:活着,比赚多少更重要。
窗外夜色渐深,鹏城的灯火绵延到远方。在这个有无数人奋斗、挣扎、成功或失败的城市里,林晨在自己的小书房里,点亮了一盏属于他自己的灯。 虽然微弱,但它在亮着。
第71章 优化策略
鹏城的夜晚,科技园区的灯火透过书房窗户,在林晨的电脑屏幕上投下斑驳光影。他盯着“phoenix trader”系统过去一周的详细交易日志,眉头紧锁。
836元的盈利,这个数字在家庭开销面前杯水车薪,但更让他警觉的是日志里那几笔亏损交易。
“问题不在盈亏本身”,林晨喃喃自语,手指在触摸板上滑动,“而在一致性”。
他调出系统的决策逻辑图。目前的核心模型是基于 LStm(长短期记忆网络)对股价时序数据进行预测,简单来说,就是让 AI“记忆”历史走势规律来推测未来。但一周的回测和实盘数据显示,这种单一模型在震荡市中表现尚可,一旦遇到突发消息引发的剧烈波动——比如上周三那笔亏损 -2.1% 的交易——就容易“失灵”。
“就像只靠一条腿走路”,林晨揉了揉发涩的眼睛,起身去冲第二杯咖啡,“稳定性太差”。
厨房里,苏婉给乐乐辅导完功课,正收拾书包。见林晨出来,她轻声问:“又遇到难题了”?
“嗯,策略需要优化”。林晨往马克杯里倒热水,速溶咖啡的香气弥散开,“现在这个模型,太容易受噪声干扰”。
苏婉走过来,靠在水池边:“我不懂技术,但听起来,你是想让它更‘聪明’一点”?
“更‘稳健’一点”。林晨纠正道,“投资不是追求单次暴利,而是长期稳定盈利。现在的系统,胜率大概 55%,最大回撤……”他调出手机上的计算器快速按了几下,“一周内就出现过 2.1%,年化下来可能很吓人。这不行”。
“那你打算怎么改”?
“加‘拐杖’。”林晨喝了口咖啡,思路逐渐清晰,“不能只依赖一个 AI 预测模型。得引入那些被市场验证了几十年的技术指标,让它们和 AI 互相印证。就像……中医把脉还要结合现代仪器检查,多重验证”。
回到书房,林晨打开新的浏览器标签页。他需要快速补课。
mAcd(指数平滑异同移动平均线)、RSI(相对强弱指标)、布林带(bollinger bands)……这些名词在炒股软件里常见,但他过去十年做跨境电商后台开发,对这些传统金融技术指标只是耳闻,从未深究。
“从头学”。他打开知乎、掘金、Github,搜索技术指标的 python 实现原理。
mAcd 的核心是快慢均线的分离与聚合,用来判断趋势强度和转折;RSI 衡量价格变动速度,评估超买超卖;布林带则通过标准差构造通道,反映价格波动区间和突破信号……
林晨一边查资料,一边在 Jupyter Notebook 里写测试代码。他先尝试用 ta-lib 库(一个金融技术分析函数库)直接计算这些指标。
import talib
import numpy as np
# 假设close_prices是收盘价序列
close_prices = np.array([...])
# 计算mAcd
macd, macd_signal, macd_hist = talib.mAcd(close_prices)
# 计算RSI
rsi = talib.RSI(close_prices, timeperiod=14)
# 计算布林带
upper_band, middle_band, lower_band = talib.bbANdS(close_prices)
代码很简单,但关键是如何解读这些指标,并将它们转化为交易信号。
“不能简单看金叉死叉”。林晨翻阅着经典技术分析书籍的电子版,“这些指标都有滞后性,单独使用效果有限。但如果是多个指标在同一时间窗口内发出共振信号呢”?
他脑海中浮现出一个多因子决策框架。
假设 AI 的 LStm 模型给出“看涨”概率为 65%,这本身只是一个中等强度的信号。但如果此时 mAcd 在零轴上方形成金叉,RSI 从超卖区(低于 30)回升至 50 以上,同时价格突破布林带中轨向上——多个技术指标同时转向积极,那么这笔交易的成功概率就可能大幅提升。
反之,如果 AI 看涨,但 mAcd 死叉、RSI 超买、价格触及布林带上轨,系统就应该忽略这个买入信号,甚至考虑反向操作。
“权重分配是个关键”。林晨新建了一个 Excel 表格,开始设计打分系统。
他将决策因子分为三类:
AI 核心预测(权重 40%):LStm 模型输出的涨跌概率值。
趋势指标(权重 35%):mAcd、均线系统等,判断大方向。
震荡指标(权重 25%):RSI、布林带等,判断短期位置和超买超卖状态。
每个类别下,不同的信号状态(如金叉、死叉、超买、突破等)赋予不同分值。最后加权求和,总分超过某个阈值(比如 60 分)才执行交易。
“这还不够”。林晨盯着表格,“阈值不能固定。牛市和熊市,震荡市和趋势市,市场情绪不同,阈值应该动态调整”。
他想起之前学机器学习时接触过的“自适应系统”。或许可以加入一个市场状态分类器?先用简单算法(比如波动率、均线排列)判断当前是趋势市还是震荡市,再根据不同的市场状态,微调决策模型的权重和阈值。
思路越来越多,林晨却感到一阵焦虑。复杂度在增加,而时间不等人。家庭存款还在缓慢消耗,每个月的房贷、生活费、乐乐的兴趣班费用……这些数字像背景音一样持续低鸣。
他深吸一口气,压下烦躁。
“代码可以骗人,但逻辑不会”。他对自己说,“一步步来。先实现多指标集成,回测看看效果”。
接下来的三天,林晨进入了近乎闭关的状态。
白天苏婉带乐乐去学校后,他就坐在电脑前,一行行代码编织着更复杂的决策网络。晚上家人睡了,他继续调试参数、跑回测。书房成了孤岛,只有键盘敲击声和主机风扇的嗡鸣相伴。
过程中遇到了不少坑。
ta-lib 库对数据长度有要求,短时间序列计算某些指标会返回 NaN(非数字)。他不得不修改数据预处理管道,确保足够长的历史数据窗口。
多个指标的信号有时互相矛盾。比如 mAcd 看涨,但 RSI 已严重超买。他需要设计更精细的冲突解决规则,不是简单投票,而是分析矛盾背后的市场情境——是强势逼空行情,还是顶部衰竭征兆?
回测系统也需要升级。原来只记录盈亏,现在要记录每一笔交易触发时,各个因子的具体得分、市场状态分类、最终决策总分。这样事后才能分析哪些因子有效,哪些是噪声。
第三天深夜,初步版本完成了。
林晨用过去两年的 A 股数据(2023 年初至 2024 年底)进行回测。这个时间段包含了下跌、震荡和反弹多种行情,是很好的测试场。
他启动了回测程序。
进度条缓慢爬行。屏幕上不断刷出模拟交易记录:
2023-04-15, 买入, 因子得分: 72.3 (AI:65, 趋势:15, 震荡:-7.7), 状态: 震荡市
2023-04-22, 卖出, 收益率: +3.2%
2023-05-06, 买入, 因子得分: 58.1 (AI:70, 趋势:-5, 震荡:-6.9), 状态: 下跌市 -> 忽略,未交易
2023-07-11, 买入, 因子得分: 81.5 (AI:68, 趋势:20, 震荡:-6.5), 状态: 反弹市
...
两个小时后,回测结束。
林晨屏住呼吸,看向最终报告。
回测周期:2023-01-04 至 2024-12-29(约两年)
初始资金:100,000 元
最终资金:136,847 元
总收益率:36.85%
年化收益率:约 17%
最大回撤:8.2%
胜率:61.3%
交易次数:147 次
他眼睛一亮。
相比之前单一模型回测的大起大落(年化可能更高但回撤常超过 15%),新策略的曲线平滑了许多。36.85% 的总收益不算惊艳,但关键在于最大回撤控制在 8.2%——这是一个职业投资者可以接受的波动范围。胜率从 55% 提升到 61.3%,意味着交易质量在提高。
“有戏”。林晨握了握拳,疲惫的脸上露出笑容。
但他没有立刻庆祝。职业习惯让他先找问题。
仔细查看亏损交易,发现大部分集中在 2023 年下半年市场单边下跌时。即便系统通过市场状态分类降低了仓位,但“做多”策略在熊市天然劣势,仍然难以避免小额亏损。
“如果加入做空机制呢”?林晨脑海里闪过这个念头,随即又摇头,“A 股做空门槛高,而且我的实盘账户现在也没权限。先聚焦多头优化”。
他注意到,在 2024 年的结构性行情中,系统表现更好。当 AI 模型与技术指标共振时,往往能抓住一些板块轮动的机会。
“明天用这个新策略跑实盘”。林晨看了眼时间,凌晨两点半。他保存好所有代码和回测数据,关机。
躺到床上时,大脑却依然活跃。
技术指标整合只是第一步。接下来还可以考虑更多维度:基本面数据(市盈率、营收增长率)?新闻情绪分析(爬取财经新闻做情感打分)?甚至……其他市场的联动(美股、港股对 A 股的影响)?
越想越远,越想越复杂。
“不能贪多”。他在黑暗中提醒自己,“先把当前框架跑稳。实盘验证才是试金石”。
窗外,科技园区的灯光依然明亮。那些灯火下,无数和他一样的程序员、产品经理、创业者,或许也在为某个算法、某个功能、某个商业模型绞尽脑汁。
这个时代,技术是杠杆,但找到正确的支点,需要耐心、迭代,还有那么一点在混沌中洞察规律的运气。
林晨闭上眼睛。
明天,新的实盘周期开始。优化后的“phoenix trader”将迎来第一次实战检验。
他不知道的是,就在他沉睡时,系统后台的一个定时任务悄然启动——它正在自动下载最新的美股盘前数据。而在林晨原本只针对 A 股设计的策略逻辑里,某个边界条件判断,因为数据格式的细微差异,正悄然发生着预料之外的变化……
第72章 机器学习优化
凌晨两点,宝安某老旧小区狭窄的书房里,屏幕的冷光映照着林晨专注的脸。
他盯着刚刚运行完毕的程序输出,眉头微皱。系统自动下载美股数据时果然遇到了问题——雅虎财经 ApI 返回的某些历史数据格式不一致,导致 pandas 在解析时抛出了类型错误。
“边界条件……”林晨低声自语,手指在键盘上敲击。
他花了半小时修改数据预处理模块,增加了更鲁棒的类型转换和异常值处理。修复完成后,系统顺利载入了过去五年标普 500 指数成分股的日线数据,总计超过六十万条记录。
但真正让他陷入思考的,是另一个问题。
过去一周的实盘运行加上新整合的传统技术指标,现在他的决策系统里已经有三十七个特征维度。从移动平均线到波动率指标,从成交量变化到市场情绪代理变量,系统在每次预测前都要处理这些海量数据。
“太多了”。林晨靠在椅背上,揉了揉发酸的眼睛。
他想起以前做跨境电商系统时的一个教训:当时为了追求功能全面,他们在订单处理模块里加入了十几个校验规则和异常处理流程。结果系统变得臃肿不堪,每次新需求都要考虑与旧逻辑的兼容性,最终不得不重构。
代码可以骗人,但逻辑不会。
林晨点开 Jupyter Notebook,新建了一个文件。他决定用 xGboost 来做一次彻底的特征重要性分析——这是他在学习机器学习课程时掌握的工具,一种基于梯度提升树的算法,能直观地展示每个特征对模型预测的贡献程度。
“先看看哪些特征在真正起作用”。
他导入数据,开始编写代码。首先将三十七个特征标准化处理,然后划分训练集和测试集。xGboost 模型的参数需要仔细调优:学习率不能太高,否则容易过拟合,树的最大深度要控制,子采样比例要设置……
窗外远处的城中村渐渐安静下来,只有远处偶尔传来货车的轰鸣声。林晨完全沉浸在代码的世界里,一行行指令在屏幕上流淌。
三小时后,模型训练完成。
林晨运行特征重要性分析函数,屏幕上生成了一张横向条形图。三十七个特征按照重要性得分从高到低排列,结果让他有些意外。
排名前五的特征分别是:20 日波动率、相对强弱指标(RSI)的 14 日均值、布林带宽度、成交量的 5 日变化率、以及 mAcd 柱状图的趋势。
这些都在预料之中。
但往下看,从第十名开始,特征的重要性得分断崖式下跌。第二十名之后的那些特征——比如某些特定周期的移动平均线交叉信号、成交量加权价格的一些衍生指标——重要性得分几乎为零。
“也就是说,系统里超过一半的特征,对预测的贡献微乎其微”?林晨喃喃道。
他重新运行了几次分析,每次随机划分不同的训练测试集,结果都高度一致。那些他花了不少时间从金融文献里找来的“经典指标”,在机器学习模型眼里,大部分都是噪声。
林晨没有马上删除这些低重要性特征,而是做了另一个实验:他用重要性排名前十五的特征重新训练了一个模型,然后用完整的测试集进行评估。
结果让他愣住了。
精简后的模型,在测试集上的准确率不仅没有下降,反而从原来的 61.3% 提升到了 63.8%。更重要的是,模型的泛化误差显着降低——在模拟 2022 年熊市数据的压力测试中,新模型的回撤控制得更好。
“少即是多……”林晨盯着屏幕上的数字,忽然笑了。
这是一种奇妙的顿悟时刻。在过去十年的程序员生涯里,他习惯了“功能越多越好”的思维模式。做电商系统时要支持几十种促销规则,做后台管理时要覆盖所有可能的查询条件。复杂度在不知不觉中累积,直到系统变得难以维护。
而现在,机器学习模型用冰冷的数据告诉他:很多时候,精简才是高效。
林晨站起身,走到窗边做了几个伸展动作。凌晨四点的鹏城,天空是深蓝色,几颗星星在云隙间隐约可见。楼下早餐铺的灯光已经亮起,蒸笼冒着白气——这座城市永远有人比你以为的更早开始新的一天。
他回到电脑前,开始重构特征工程模块。
删除那些低重要性特征不是简单地注释掉几行代码,而是需要重新考虑整个数据流水线的设计。林晨决定采用模块化架构:核心特征计算模块保留十五个高重要性指标,但同时设计一个可插拔的“特征扩展接口”,未来如果发现新的有效特征,可以无缝接入。
这花了将近两个小时。
当晨曦透过窗帘缝隙照进书房时,林晨完成了所有修改。他运行了完整的回测流程——从数据获取、特征计算、模型预测到模拟交易,覆盖过去三年 A 股、美股和黄金期货的数据。
结果令人振奋。
精简后的系统,年化收益从 17% 提升到 19.5%,最大回撤从 8.2% 降低到 7.1%,夏普比率——衡量风险调整后收益的指标——从 1.8 提升到 2.3。这意味着系统在承担相同风险的情况下,能获得更高的回报。
“这才是真正的优化”。林晨长舒一口气。
他看了眼时间,早上六点半。苏婉和乐乐还在睡觉,家里安静得能听见冰箱的嗡鸣声。
林晨没有去补觉,而是泡了杯浓咖啡,然后打开了实盘交易账户的后台。过去一周,原始策略在 A 股和黄金上的小规模实盘,已经带来了八百多元的收益。虽然不多,但证明了系统能真正赚钱。
现在,他决定做两件事。
第一,启用优化后的新策略,从今天开始实盘运行。
第二,增加投入资金。
林晨登录银行 App,查看自己的储蓄账户。裁员补偿金还剩二十万多,房贷账户里有三个月的预留款。他沉思片刻,决定从储蓄中再转出两万元,注入实盘交易账户。
这样总投资本金就达到了七万元。
“压力测试”。他对自己说。
如果优化后的系统能在更大资金量下稳定运行,那就证明这条路真的可行。如果出现问题……那就在模拟盘继续调整,反正实盘资金只占储蓄的一小部分。
转账操作很快完成。林晨重新配置了实盘系统的参数,设定了更严格的风控规则:单日亏损超过 2% 就暂停交易,单只股票仓位不超过总资金的 15%,黄金期货的杠杆控制在三倍以内。
做完这一切,他终于感到困意袭来。
躺到床上时,林晨脑子里还在回想那个特征重要性条形图。那些几乎为零的贡献度,像是一种无声的嘲讽——人类总喜欢把事情复杂化,而数据只相信最简单有效的逻辑。
这让他联想到自己这几个月的人生。
失业后,他一度认为需要学完 AI 的所有分支、掌握所有热门技术、面试所有类型的公司,才能找到出路。但现在看来,也许只需要聚焦在最核心的那几项能力上:扎实的机器学习基础、清晰的系统架构思维、以及将技术转化为实际价值的能力。
就像精简后的投资系统,不需要三十七个花哨的特征,只需要十五个真正有效的指标。
“专注核心……”林晨在入睡前模糊地想道。
窗外,鹏城的早晨正式开始。地铁开始运行,公交车驶出站场,科技园的班车在路上汇聚成流。这座城市永远在寻找最高效的路径,就像他刚刚优化的那个机器学习模型。
而在林晨的书房里,电脑屏幕暗了下去。但系统后台的程序仍在运行,按照新的精简逻辑,分析着全球市场的海量数据,寻找那些隐藏在噪声中的有效信号。
七万元的本金已经就位。
下一次交易信号出现时,系统会自动执行。
第73章 情绪指标
凌晨三点,鹏城湾的灯光在窗外连成一片金色星河。林晨靠在椅背上,盯着屏幕上刚刚跑完的回测结果,眉头微皱。
新优化后的策略运行了两天,实盘收益曲线平稳上升,7万元本金已经变成了元。按年化算相当可观,但林晨总觉得缺了点什么。
他点开交易日志,一页页翻看。系统在大多数时间里表现稳健,但在几个特定交易日——通常是政策发布日或财报集中披露期——会出现明显的预测偏差。模型基于技术指标给出的信号,有时会被市场情绪瞬间淹没。
“情绪……”林晨喃喃自语,起身走到窗边。
远处城中村的灯光星星点点,那里住着无数像他一样的打工者。白天在科技园的高楼里敲代码、写方案,晚上回到十几平米的出租屋,刷手机、看股票。他们的喜怒哀乐,他们的贪婪与恐惧,汇聚成A股市场最底层、也最真实的声音。
林晨忽然想起自己刚入市那几年,每天收盘后必刷股吧。那些帖子鲜活、粗糙,有时甚至粗俗,但字里行间都是最真实的情绪宣泄——“主力死全家”“明天涨停我直播吃键盘”“套了三年终于解套了泪目”。
这些情绪,是否可以被量化?
他回到电脑前,打开一个新的 python 脚本。思路很清晰:爬取东方财富股吧的评论数据,对每条评论进行情感分析,计算每只股票在特定时间窗口内的情绪得分,然后将这个得分作为新的特征输入模型。
技术实现上分三步:数据爬取、情感分析、特征工程。
爬取数据相对简单。林晨用 requests 库模拟浏览器请求,配合 beautifulSoup 解析网页。为了避免被封 Ip,他设置了随机延时,并准备了几组 User-Agent 轮换使用。目标很明确:选取沪深300成分股,爬取过去一年每个交易日收盘后两小时内的前500条热门评论。
“这数据量可不小”。林晨估算了一下,300只股票x240个交易日x500条评论,理论上是3600万条。实际爬取时会有重复和无效内容,但至少也是千万级。他的笔记本电脑肯定跑不动,好在之前买的阿里云服务器还有三个月到期,配置虽然不高,但跑爬虫和基础分析够用了。
他花了两个小时写爬虫脚本,测试了几个股票,数据正常。设置好定时任务后,爬虫开始自动运行,预计需要两到三天才能抓完所有历史数据。
接下来是情感分析。
林晨没有选择复杂的深度学习模型——训练样本标注是大问题,而且计算成本太高。他调研了几个开源的中文情感分析工具,最终选择了 SnowNLp。这个库基于朴素贝叶斯算法,虽然精度不是最高,但胜在简单易用,且对网络语言的适应性不错。
他写了个测试脚本,输入几段典型的股吧评论:
“明天高开高走,信我!”
“垃圾公司,财报造假实锤了。”
“跌了五个点,麻了,装死吧。”
“利好出尽是利空,懂的都懂。”
SnowNLp 给出的情感分值基本符合直觉:0.85、0.12、0.35、0.45。林晨又手动标注了100条评论作为验证集,计算出的准确率约78%。对于情绪趋势分析来说,这个精度可以接受——他要的不是判断每条评论的绝对情感,而是统计整体情绪倾向。
“但还有个问题”。林晨盯着屏幕,“有些评论看似情绪强烈,其实是在反讽”。
比如那条“明天涨停我直播吃键盘”,表面看是极度看好,实际上老股民都知道,这往往是反向指标,表达的是对“涨停鼓吹者”的嘲讽。这种语言现象,简单的词袋模型很难捕捉。
林晨思考片刻,决定加入两个补充规则:一是识别常见反讽句式模板,二是引入表情符号权重。股吧评论里,“[微笑]”往往不是真的微笑,“狗头保命”更是经典的免责声明。他整理了二十几种常见模式,写了个简单的规则引擎前置处理。
做完这些,天已经蒙蒙亮。林晨煮了杯咖啡,继续第三步:特征工程。
情绪数据是时间序列,如何转化为模型可用的特征?他设计了几种方案:
当日情绪均值:收盘后两小时内所有评论的情感得分平均值。
情绪波动率:情感得分的标准差,反映情绪分歧程度。
情绪动量:当日情绪均值与过去五日均值的差值。
极端情绪占比:情感得分>0.8(极度乐观)或<0.2(极度悲观)的评论比例。
情绪词频:出现“涨停”“牛市”“抄底”等关键词的频率,与“暴跌”“割肉”“跑路”等负面关键词的频率比值。
每个特征都要做标准化处理,与原有的技术指标在同一个量纲上。林晨修改了之前重构的特征工程模块,新增了 SentimentFeatureExtractor 类,实现了这些计算逻辑。
三天后,爬虫任务完成。服务器上积累了2800多万条评论数据,压缩后仍有40多Gb。林晨在本地只下载了情绪特征的计算结果——每只股票每个交易日的几个数值,数据量骤降到几mb。
他将情绪特征加入模型,重新训练。
等待训练结果时,林晨有些忐忑。这可能是他失业以来最专注的一次技术探索——不是为了面试,不是为了证明自己,而是纯粹想解决一个真实的问题。这种状态让他想起大学时通宵写代码参加竞赛的日子,虽然累,但心里踏实。
下午四点,训练结束。
林晨屏住呼吸,点开回测报告。
策略表现对比(过去三年)
原策略(15个技术特征):年化收益19.5%,最大回撤7.1%,夏普比率2.3
新策略(技术特征+情绪特征):年化收益21.2%,最大回撤6.8%,夏普比率2.6
提升了。
虽然幅度不大,但关键是在那几个情绪化交易日,新策略的预测准确率显着提高。模型学会了识别“市场过热”和“恐慌过度”的信号,在情绪极端时给出了更保守或更激进的操作建议。
林晨靠向椅背,长长吐出一口气。
窗外的鹏城湾华灯初上,写字楼的玻璃幕墙反射着夕阳余晖。他忽然意识到,自己刚刚完成了一次有趣的“跨界”——把自然语言处理技术应用到了量化投资领域。这不是教科书上的案例,而是他为了解决实际问题自己摸索出来的路径。
这种成就感,比拿到一个高薪 offer 更让他兴奋。
他打开实盘监控界面,新策略已经自动部署。系统在下午收盘前给出了三个调仓信号,都是基于技术面稳健、但情绪面出现短期过度悲观的机会。林晨确认了风控参数,点击“执行”。
交易指令发出,7万多的资金开始流动。
做完这些,林晨才感觉到饥饿。他煮了碗面条,端着碗坐回电脑前,又点开了股吧页面——这次不是爬虫视角,而是作为一个普通用户。
他随机点开一只今天跌停的股票评论区。置顶的帖子标题是:“兄弟们,天台冷吗?我来了”。
下面的回复五花八门:
“别慌,明天肯定反弹!”
“我已经躺平了,爱咋咋地。”
“主力洗盘而已,拿住了。”
“楼上的别害人了,这公司基本面早烂了。”
每条评论背后,都是一个真实的人,真实的情绪,真实的金钱得失。林晨的模型把这些情绪转化成了0到1之间的数字,转化成了特征向量,转化成了权重参数。但那些深夜无法入睡的焦虑,那些割肉离场时的不甘,那些意外盈利时的狂喜——这些温度,代码能捕捉吗?
“也许不能完全捕捉”,林晨想,“但至少,我在尝试理解”。
他吃完面条,把碗洗了。回到电脑前,又有了新想法:情绪数据源不应该只有股吧。微博、财经新闻、券商研报的语气……这些都可以爬取分析。甚至,可以尝试用深度学习模型做更细粒度的情绪分类——乐观、悲观、愤怒、恐惧、贪婪……
这个系统,还有太多可以进化的空间。
夜深了,林晨却没有睡意。他调出今天情绪特征最极端的几只股票,一只只查看它们的走势和评论。在“鹏城科技”这只股票上,他发现了有趣的现象:技术指标显示超卖,情绪得分极低(0.18,极度悲观),但模型给出的建议却是“观望”,而非“买入”。
林晨点开这家公司的基本面资料,眉头渐渐皱起。
原来,明天是它的限售股解禁日。
第74章 回测框架
窗外的鹏城科技园在晨光中苏醒,高楼玻璃幕墙反射着金色的阳光。林晨坐在书桌前,屏幕上不是股票行情,而是一行行 python 代码。
昨晚测试完情绪指标模型后,一个问题像根刺一样扎在他心里——回测。
他用的那些量化平台提供的回测功能,总觉得哪里不对劲。手续费计算太粗糙,滑点模拟不真实,最关键的是,无法同时对比多个策略在完全相同条件下的表现。
“代码可以骗人,但逻辑不会”。林晨喃喃自语,这是他这段时间形成的口头禅。
他决定自己写一个。
上午九点,送完乐乐去幼儿园的苏婉轻轻推开书房门,看到丈夫正对着白板画架构图。白板上已经写满了模块名称:数据层、策略层、交易层、评估层、可视化层……
“又要开新项目”?苏婉端着温水进来。
林晨接过水杯,眼睛还盯着白板:“得有个靠谱的回测框架。那些平台的回测,就像用尺子量空气——看起来有模有样,实际误差大到能坑死人”。
“需要多久”?
“三五天吧”。林晨喝了口水,“这次得写扎实点,以后所有策略都基于这个框架测试,相当于给自己建个实验室”。
苏婉点点头,没多问技术细节,只是轻声说:“别太拼,中午记得吃饭”。
书房门轻轻关上。林晨重新面对白板,思维像手术刀一样精准地解剖问题。
回测的核心是什么?
是模拟真实交易环境。但“真实”二字包含无数细节:交易时间、涨跌停限制、t+1 制度、手续费(印花税、佣金、过户费)、滑点(报价与实际成交价的偏差)、资金利用率、分批建仓的冲击成本……
林晨在“交易层”模块下又画出几个子模块。每细化一层,他就更清楚那些量化平台的回测为什么不可信——它们做了太多理想化假设。
“从今天起,我的系统里没有‘理想’二字”。林晨对着空荡荡的房间说。
他打开 VS code,新建项目文件夹:quantbacktestFramework。创建 REAdmE.md 文件时,他在第一行写下项目目标:
“一个尽可能逼近 A 股真实交易环境的回测框架,支持多策略并行对比,可视化分析,为实盘提供可靠依据”。
接下来的三天,林晨进入了心流状态。
早晨七点起床,八点开始编码,中午简单吃个外卖,下午继续,晚上陪家人两小时,九点后又回到电脑前。这种节奏让他想起刚毕业那会儿在鹏城加班赶项目的日子,但心境完全不同——那时是被迫,现在是主动;那时为别人写代码,现在为自己建系统。
第一天,数据层。
他设计了一个统一的数据接口,支持从本地 cSV 文件、数据库、甚至在线 ApI 获取历史数据。数据必须包含最基本的 ohLcV(开盘、最高、最低、收盘、成交量),还要能扩展自定义字段——比如他之前做的情绪指标。
关键点在于处理 A 股的特殊性:除权除息。如果回测时忽略这个,收益率计算会严重失真。林晨写了个复权因子计算模块,确保价格序列连续可比。
“这就对了”。他测试了几只股票,看着复权后的 K 线图平滑连贯,满意地点点头。
第二天,策略层。
这是框架的核心。林晨设计了策略基类 baseStrategy,所有具体策略都必须继承这个类,实现几个关键方法:initialize 初始化,handle_bar 处理每个交易日的数据,generate_signal 生成交易信号。
为了让多策略对比成为可能,他引入了策略组合的概念。可以同时加载三个、五个甚至十个策略,在完全相同的时间序列、相同的初始资金、相同的交易规则下运行。
“让我看看,到底是双均线策略厉害,还是我的情绪增强模型更强”。林晨写测试代码时,嘴角微微上扬。
第三天,交易层与评估层。
这是最繁琐的部分。林晨几乎翻遍了 A 股交易规则文档。
印花税:卖出时收取成交金额的 0.1%。
佣金:他按万分之二点五计算(这是他能找到的较低费率),单笔最低 5 元。
过户费:沪市股票成交金额的 0.002%,深市免收。
滑点模拟:他设置了三种模式——固定滑点(如 0.01 元)、百分比滑点(如 0.1%)、以及基于成交量的动态滑点(流动性差的股票滑点更大)。
涨跌停限制:买入时如果信号触发涨停价,实际无法成交;卖出时跌停同理。
t+1 制度:今天买入的股票,明天才能卖出。这个规则对短线策略影响巨大。
林晨把这些规则一个个编码实现,每写完一个模块就测试几种边界情况。过程中他发现不少量化平台的回测漏洞——有些平台居然允许 t+0 交易,有些忽略涨跌停,有些手续费计算简化到可笑的程度。
“怪不得回测收益看着很美,实盘就漏水”。他摇头苦笑。
评估层相对简单些,但指标必须全面。年化收益率、夏普比率、最大回撤、胜率、盈亏比、交易次数、持仓周期、资金曲线……林晨参考了专业量化基金的评估体系,设计了二十多个关键指标。
第四天,可视化层。
这是给“用户体验”的。林晨用 matplotlib 和 pyecharts 结合,开发了一套可视化面板。
运行回测后,会自动生成一个 htmL 报告页面,包含:
资金曲线对比图——多个策略的资金曲线叠加显示,一眼看出孰优孰劣。
收益分布直方图——看盈利交易和亏损交易的分布情况。
月度收益热力图——哪个月份策略表现好,哪个月份差,颜色深浅一目了然。
回撤曲线——最大回撤发生在什么时候,持续了多久。
持仓分析——平均持仓时间、仓位利用率等。
交易明细表格——每笔交易的时间、价格、数量、盈亏都可追溯。
林晨特意把界面做得简洁专业,没有花哨的动画,但信息密度很高。这是他做了十年后端开发的审美——功能至上,清晰第一。
第五天下午,框架基本成型。
林晨深吸一口气,准备进行第一次完整测试。他选择了三只股票:贵州茅台、宁德时代、比亚迪,时间范围是 2020 年 1 月 1 日到 2023 年 12 月 31 日,整整四年。
加载三个策略:
策略 A:简单的双均线(10 日/30 日)交叉策略。
策略 b:他之前开发的 mAcd+RSI 结合策略。
策略 c:最新的情绪指标增强模型。
初始资金都设为 10 万元,交易规则完全一致。
点击运行。
屏幕上代码滚动,进度条缓慢推进。林晨起身倒了杯水,站在窗前看着科技园里穿梭的人群。那些穿着格子衫的程序员,那些行色匆匆的白领,他们中有多少人也在寻找出路?
二十分钟后,运行完成。
浏览器自动弹出回测报告页面。林晨坐回椅子上,屏住呼吸看向屏幕。
资金曲线对比图上,三条线从同一起点出发,四年后走向截然不同:
策略 A(双均线)的曲线在 2021 年之前缓慢上升,之后开始震荡,最终净值 12.8 万,年化收益率约 6.4%。
策略 b(mAcd+RSI)表现好些,净值达到 18.2 万,年化收益率 16.1%。
策略 c(情绪增强模型)的曲线最漂亮——前期平稳上升,2022 年市场大跌时回撤明显小于前两个策略,2023 年快速修复并创新高,最终净值 24.7 万,年化收益率 25.3%。
“漂亮”。林晨忍不住出声。
更关键的是风险指标。策略 c 的夏普比率 2.8,最大回撤 ?18.7%;而策略 b 的夏普比率只有 1.9,最大回撤 ?32.4%。策略 A 就更差了,夏普比率 0.8,最大回撤 ?41.2%。
月度收益热力图上,策略 c 的绿色(正收益)月份明显多于红色。交易明细显示,策略 c 四年只交易了 47 次,平均持仓周期 21 天;策略 b 交易了 112 次,策略 A 更是高达 189 次。
“频率越低,质量越高”。林晨记下这个观察。
但真正让他警醒的是另一个发现。
他把回测时间缩短到最近一年(2023 年),重新运行。
结果变了。
策略 c 的年化收益率从 25.3% 下降到 19.8%,策略 b 从 16.1% 降到 12.5%,策略 A 直接变成负收益。
“市场风格变了。”林晨盯着屏幕,“2020—2022 年的逻辑,到 2023 年不完全适用。”
这就是回测的陷阱——过去表现好,不代表未来持续好。但他的框架至少能帮他看清这个陷阱,而不是美化它。
林晨又做了几个测试:更改手续费率、调整滑点设置、加入冲击成本模拟……每次更改,收益率都会下降几个百分点。
“实盘收益至少要比回测低 20%。”他得出一个经验法则,“那些宣称回测年化 50%、实盘也能做到的,要么是神仙,要么是骗子。”
傍晚六点,苏婉敲门叫他吃饭。
餐桌上,林晨难得地主动谈起技术细节:“我今天把回测框架写完了”。
“测试了吗”?
“测了。我的情绪模型策略,四年回测年化 25%”。
苏婉眼睛一亮:“那很好啊”。
“但那是回测”。林晨夹了块排骨,“实盘能到 20% 就谢天谢地了。而且市场在变,策略得持续优化”。
“你已经比 99% 的人专业了”。苏婉认真地说,“那些凭感觉炒股的人,连回测是什么都不知道”。
林晨笑了笑,心里却清楚:专业只是门槛。在这个市场上,专业的人很多,能持续盈利的很少。
晚饭后,他回到书房,没有继续编码,而是打开了一个空白文档。
文档标题:《回测与实盘的差距分析》。
他开始系统地列出所有可能导致差距的因素:
未来函数(回测中无意使用了未来数据)
过度拟合(策略过于契合历史数据,失去泛化能力)
交易成本低估
流动性假设过于乐观
市场结构变化
黑天鹅事件
心理因素(实盘时会恐惧、贪婪、犹豫)
每写一条,他就思考如何在框架中防范或标记。
写到第十条时,窗外已是深夜。科技园的灯光依然璀璨,但林晨书房的台灯,是这片璀璨中一个安静的光点。
他保存文档,关掉电脑,走到阳台。
晚风带着鹏城湾的潮湿气息扑面而来。远处,深圳湾大桥的灯光连成一条金色的线,横跨在黑暗的海面上。
林晨想起这几个月走过的路:从被裁员时的茫然,到自学 AI 的挣扎,再到开发投资系统的专注。每一步都踩在现实的荆棘上,但每一步都让他更接近真相。
回测框架完成了,但这只是个开始。
真正的挑战,永远是下一个交易日、下一个决策、下一个未知。
他深吸一口气,夜风灌满胸腔。
明天,该用这个框架测试更多策略了。然后,选择一个,投入实盘。
那将是代码与现实的第一次正面交锋。
第75章 第一个月总结
窗外的鹏城湾在晨光中泛着金色的波纹,林晨坐在电脑前,手指轻轻敲击着键盘。屏幕上,交易软件自动关闭了最后一个持仓订单——今天是实盘运行满一个月的日子。
他深吸一口气,点开了账户总览页面。
账户总资产:75,964.00 元
本月收益率:8.52%
沪深 300 同期涨幅:-1.73%
超额收益:10.25%
房间里安静得能听见主机风扇的轻微嗡鸣。林晨盯着那行数字,看了足足三分钟,然后缓缓靠向椅背。
成了。
不是模拟盘,不是回测数据,是真金白银的实盘账户,在一个月内跑出了 8.5% 的正收益,而同期大盘还在下跌。
他点开详细的交易日志。系统在这一个月里共执行了 47 笔交易,平均持仓时间 2.3 天,胜率 68.1%,盈亏比 1.42。最大单笔盈利出现在第二周——系统捕捉到一只半导体概念股的短线反弹,三天获利 12.7%。最大单笔亏损则是在第三周遭遇的一次假突破,止损 3.2%。
林晨调出系统的每日净值曲线。那是一条总体向上、但带有明显锯齿的折线。第一周净值增长最快,达到 4.1%;第二周横盘震荡,微涨 0.8%;第三周经历了一次回撤,净值从高点下跌 2.3%;第四周则稳步回升,最终收在全月最高点。
“这就是实盘啊”。他喃喃自语。
和回测时那条平滑向上的理想曲线完全不同,实盘的净值波动更剧烈,更“真实”。市场不会按教科书走,突发消息、情绪踩踏、流动性枯竭……这些在回测中无法完全模拟的因素,在实盘中每天都在发生。
林晨翻开笔记本,找到一个月前写下的《回测与实盘差距十大因素》清单,逐条对照:
滑点 实际平均滑点 0.08%,比预估的 0.05% 略高,但仍在可控范围。
交易费用 佣金、印花税合计约 0.15%,与预估一致。
流动性限制 7 万本金对小盘股影响不大,但系统已自动规避日成交额低于 5000 万的股票。
市场冲击成本 难以量化,但从净值波动看,可能有一定影响。
策略容量 当前资金规模远未触及策略上限。
模型过拟合风险 一个月时间太短,无法判断,需持续观察。
黑天鹅事件 本月未发生系统性风险事件。
心理干扰 林晨强制自己不干预系统决策,仅做监控。
数据延迟与错误 数据源稳定,未出现重大错误。
策略同质化 无法得知其他量化策略的动向。
“十大因素中,三个确定可控,两个暂时未发生,三个需要长期观察,两个无法确定”。林晨在笔记本上写下总结,“实盘收益比回测低约 15%,基本符合‘至少低 20%’的经验法则预期”。
他站起身,走到窗前。楼下便利店已经开门,早餐摊飘来肠粉的香气。鹏城早晨七点半的阳光,穿过高楼间隙洒在街道上,上班族们行色匆匆。
几个月前,他也是这些人中的一员——或者说,他曾经是。失业后,他一度觉得自己被这座城市抛弃了,像个旁观者,看着别人的生活继续。
但现在,看着账户里多出来的将近六千块钱,一种久违的掌控感重新回到身体里。
这不是工资,不是公司发的薪水,是他自己写的代码、自己构建的系统,从市场上“赚”来的钱。虽然数额不大,但意义完全不同。
林晨回到电脑前,打开另一个文档。他需要做一次全面的月度复盘。
技术层面:
情绪增强模型在实盘中有效,对市场恐慌/贪婪情绪的量化指标与后续走势相关性达 0.61。
多因子选股模块需优化:当前选出的股票池过于集中在科技板块,行业分散度不足。
风控模块表现稳健:最大回撤控制在 3.2%,达到预设目标。
操作层面:
自动化交易执行无误,未出现漏单、重复下单等严重错误。
监控报警系统触发两次:一次是网络中断(路由器故障),一次是数据源延迟(供应商维护),均得到及时处理。
日志系统记录完整,便于问题追踪。
心态层面:
第一周:兴奋与紧张并存,每小时查看账户,影响效率。
第二周:逐渐适应,调整为每日收盘后查看一次。
第三周:经历回撤时产生“手动干预”的冲动,但最终克制。
第四周:心态趋于平稳,更关注系统长期表现而非单日盈亏。
林晨在“心态层面”后面加了一行备注:“量化交易的第一课——信任你的系统,但不要迷信。系统的优势在于纪律性,人的优势在于适应性,二者需要平衡”。
写完复盘,他看了眼时间,早上八点十分。苏婉已经送乐乐去幼儿园了,桌上留着早餐:一碗白粥,两个包子,一碟榨菜。
他坐下来,慢慢吃着。粥还是温的。
手机震动了一下,是母亲发来的微信:“晨晨,最近找工作有进展吗?你爸昨天又问起了,我说你在学习新技术,他也没多说什么。钱还够用吗”?
林晨手指悬在屏幕上,停顿了几秒。
如果是一个月前,他会感到压力,会焦虑,会含糊其辞地说“还在找”。但现在,他看着电脑屏幕上那个 8.52% 的收益率,心里有了不一样的底气。
他打字回复:“妈,工作还在看机会,不着急。我自己在做一个投资相关的项目,这个月已经有收益了。你和爸别担心,我这边一切都好”。
发送。
没有提具体数字,没有说“量化交易”这种父母听不懂的术语,只是告诉他们:我在做事,并且开始有成果了。
很快,母亲回复:“有收益就好。注意身体,别太累”。
简单的八个字,林晨却看了很久。他知道,对于父母那一代人来说,“有收益”这三个字,比任何豪言壮语都更让他们安心。
吃完早餐,林晨没有像往常一样立刻投入代码工作。他给自己泡了杯茶,坐在沙发上,任由思绪发散。
一个月,8.5%。
如果这个收益率能持续呢?不,不需要持续每月 8.5%,哪怕年化只有 15%,复利的力量也会在几年内让资金规模发生质变。
7 万本金,年化 15%,五年后是 14 万左右;十年后接近 28 万;二十年后,可能超过 100 万。
当然,这只是最理想化的数学计算。现实中的市场有牛熊周期,策略会失效,黑天鹅会发生。但至少,这条路被验证是可行的——用 AI 技术从市场中获取收益,这条路能走通。
这对林晨来说,比赚到将近六千块钱更重要。
手机又震了一下,这次是张伟:“哥们,最近怎么样?我这边有个朋友的公司招 AI 算法,要不要推你”?
林晨想了想,回复:“谢了伟哥。不过我最近在做一个自己的量化项目,刚实盘跑了一个月,效果还不错。想再深入做一段时间看看”。
张伟很快回过来:“量化?可以啊!收益率多少”?
“第一个月 8.5%,跑赢大盘 10 个点”。
“牛逼!实盘能跑出这个数很稳了。不过提醒一句,一个月太短,至少要看三个月到半年的数据。另外,策略容量多大?你现在本金多少”?
“7 万试水。策略容量还没测到上限,理论上百万级别应该没问题”。
“那可以。需要资金的话跟我说,我认识几个做私募的朋友,他们对好的量化策略一直有兴趣”。
“好,等我数据再跑稳一点”。
放下手机,林晨走到阳台。鹏城湾的海风带着咸湿的气息扑面而来,远处货轮缓缓驶过,天空是南方特有的那种清澈的蓝。
他忽然想起三个月前,刚被裁员的那几天。他站在这个阳台上,看着同样的海景,心里是一片茫然。35 岁,房贷,家庭,失业……所有压力像潮水一样涌来。
那时候他绝对想不到,三个月后的今天,他会因为一个自己写的程序赚了将近六千块钱,而感到如此踏实和充满希望。
“代码可以骗人,但逻辑不会”。林晨轻声重复着自己的口头禅,“而市场,大概是这世界上最诚实的地方之一——它不在乎你的年龄、学历、背景,只在乎你的策略能不能赚钱”。
下午,林晨没有继续优化模型。他决定给自己放半天假,去楼下的健身房运动了一小时,然后去超市买了菜。晚上苏婉和乐乐回来时,餐桌上已经摆好了三菜一汤:清蒸鲈鱼、蒜蓉西兰花、西红柿炒蛋,还有一锅排骨玉米汤。
“今天什么日子”?苏婉有些惊讶。
“没什么特别,就是想做饭了”。林晨给乐乐盛汤,“我那个投资系统,跑满一个月了”。
苏婉眼睛一亮:“怎么样”?
“赚了 8.5%,五千多块钱”。
“真的”?苏婉放下筷子,“那……那是不是说明这个系统真的有用”?
“至少第一个月有用”。林晨夹了块鱼给乐乐,“不过还不能高兴太早,要看长期表现。但至少,它证明了这条路可以走”。
苏婉看着他,嘴角慢慢扬起笑容:“我就知道你可以的”。
那笑容里有信任、有骄傲,还有一种如释重负的轻松。林晨知道,这几个月他的焦虑,苏婉全都看在眼里,只是从不给他压力。
“爸爸好厉害”!乐乐虽然不懂什么是“投资系统”,但能感觉到父母的高兴,也跟着拍手。
晚饭后,林晨主动洗碗。水流哗哗声中,他听到客厅里苏婉在陪乐乐读绘本,温柔的声音念着:“小兔子终于找到了回家的路……”
洗好碗,他回到书房,但没有开电脑。他打开书架,抽出一本《股票作手回忆录》。这本经典他大学时读过,当时只觉得是传奇故事。现在重新翻开,字里行间却有了完全不同的体会。
利弗莫尔说:“市场永远不会错,只有人会错”。
林晨在书页空白处写下:“AI 量化系统,或许就是让人少犯错的一种方式。它没有人性的贪婪与恐惧,只有预设的规则和纪律。但设计系统的人,必须有对市场的敬畏”。
晚上十点,他合上书,打开交易软件的后台。系统已经自动生成了明天的预选股票池和交易计划,静静躺在任务队列里,等待开盘执行。
林晨检查了一遍各项参数,确认无误,然后关闭了显示器。
房间里暗下来,只有主机指示灯微弱的红光。
他躺在床上,闭上眼睛。脑海里不是代码,不是 K 线图,而是一个简单的数字:8.52%。
第一个月,8.52%。
第二个月会怎样?他不知道。市场永远充满不确定性,这是他必须接受的现实。
但至少,他有了一个可以应对这种不确定性的工具。而更重要的是,他有了继续走下去的信心。
“这才刚刚开始”。林晨对自己说,然后在鹏城湾隐约的海浪声中,沉入睡眠。
第76章 扩展品种
凌晨三点,鹏城的夜色还未褪去。
林晨坐在电脑前,屏幕上同时开着三个窗口:左边是期货主力合约的K线图,中间是可转债的转股溢价率数据表,右边是python编辑器里正在调试的策略代码。桌角放着一杯早已凉透的咖啡,旁边摊开几本打印出来的资料——《期货交易实务》《可转债投资全攻略》《量化多品种策略设计》。
他已经这样坐了五个小时。
一个月前,当股票策略实盘跑出8.52%的收益率时,林晨确实兴奋过。但那股兴奋劲儿只持续了两天,就被更深的思考取代了——如果只做股票,系统再厉害,也受制于A股t+1、涨跌停、交易时间等限制。更重要的是,单一品种意味着单一风险源。
“鸡蛋不能放在一个篮子里”。这句老话在量化领域有更专业的表述:资产配置是唯一免费的午餐。
苏婉凌晨起夜时,看到书房还亮着灯,轻轻推门进来:“还不睡”? “马上”。林晨揉了揉发酸的眼睛,“在弄新东西”。 苏婉走到他身后,看着屏幕上那些复杂的图表:“这又是什么”? “期货”。林晨指着左边窗口,“你看这个,螺纹钢主力合约。期货和股票完全不一样——t+0交易,可以做多也可以做空,有杠杆,而且交易时间更长,夜盘能到凌晨一点”。 “听起来风险很大”。苏婉皱眉。
“风险大,机会也大”。林晨切换到一个文档,“关键是要设计匹配的策略。股票我用的主要是均值回归和动量策略,但期货更适合趋势跟踪。你看这个——”
他调出一个简单的策略回测结果:基于20日和60日均线的双均线系统,在螺纹钢期货上过去三年年化收益率达到42%,最大回撤18%。
“但这个策略在股票上效果就很一般”。林晨又切换窗口,“每个品种有自己独特的‘性格’,就像不同的人要用不同的沟通方式。强行套用同一个策略,就像让程序员去跑销售,不是不行,但效率肯定低”。 苏婉似懂非懂地点点头:“那这个呢?”她指着中间窗口的可转债数据。
“可转债更有意思”。林晨眼睛亮了起来,“它既有债性又有股性。当正股价格远低于转股价时,它更像债券,有保底;当正股大涨时,它又能跟着涨,而且没有涨跌停限制”。 他打开一个自己整理的Excel表格:“我统计了过去三年所有可转债的数据,发现几个规律:第一,转股溢价率低于10%的可转债,其价格走势与正股相关性超过0.9;第二,剩余规模小于3亿的小盘债,更容易被游资炒作,波动率大;第三——”
“等等”。苏婉打断他,笑着摇头,“你这些专业名词,我一个语文老师听不懂。你就告诉我,研究这些有什么用”? 林晨深吸一口气,组织了一下语言:“简单说,我想让我的投资系统‘进化’。现在它只会炒股票,就像一个人只会说中文。我要教它说英语、法语、日语,让它能在更多场合交流,赚更多种类的钱”。 他顿了顿,语气变得认真:“而且不同品种之间有关联性。比如当股市大跌时,国债期货往往上涨,这叫‘避险情绪’。如果我的系统能同时交易股票和国债,就能对冲风险,让收益曲线更平滑”。 苏婉沉默了几秒,伸手摸了摸他的肩膀:“你瘦了”。 “有吗”? “这一个月,你每天只睡五六个小时。”苏婉的声音里带着心疼,“我知道你想尽快做出成绩,但身体要紧”。 林晨握住她的手:“放心,我有数。其实研究这些新东西,我反而更兴奋。你知道吗?就像打游戏解锁新地图,每个新领域都有新的规则要学习,新的策略要设计,这种探索感……”
他停住了,意识到自己又陷入了技术宅的兴奋状态。
苏婉笑了:“行,你继续探索吧。不过答应我,天亮前必须睡一会儿”。 “好”。 苏婉离开后,林晨重新看向屏幕。他新建了一个python文件,开始搭建多品种策略框架的核心类。
class multiAssetStrategy:
def __init__(self):
self.stock_strategy = meanReversionStrategy # 股票均值回归策略
self.futures_strategy = trendFollowingStrategy # 期货趋势跟踪策略
self.convertible_bond_strategy = cbArbitrageStrategy # 可转债套利策略
self.asset_allocation = RiskparityAllocator # 风险平价资产配置器
def run_daily(self, market_data):
# 获取各品种信号
stock_signal = self.stock_strategy.generate_signal(market_data[stocks])
futures_signal = self.futures_strategy.generate_signal(market_data[futures])
cb_signal = self.convertible_bond_strategy.generate_signal(market_data[convertible_bonds])
# 风险平价分配资金
allocations = self.asset_allocation.allocate(
signals=[stock_signal, futures_signal, cb_signal],
volatilities=self.calculate_volatilities(market_data)
)
return allocations
代码写到一半,林晨停了下来。他意识到一个关键问题:不同品种的数据频率不一样。
股票是日线数据,每天四个小时交易时间;商品期货有日盘和夜盘,每天交易时间长达12小时;国债期货又是另一套交易时间。如果要实现真正的多品种协同,他需要统一的数据处理框架。
“得重构数据模块”。林晨喃喃自语。
他打开另一个项目文件,这是之前为股票策略搭建的数据管道。现在需要扩展它,支持多种频率数据的对齐、清洗和特征工程。
凌晨四点,窗外传来第一声鸟鸣。
林晨终于完成了数据框架的初步设计。他站起身,走到阳台透气。鹏城的清晨带着海风的湿润,远处深南大道上已经有早班公交车驶过。
手机震动了一下,是张伟发来的微信:“晨哥,昨天说的那个私募朋友,我约了这周末。他对你的AI量化系统很感兴趣,想聊聊”。 林晨回复:“好,时间地点发我”。 他忽然感到一阵压力。如果只是自己小资金玩玩,失败了也无所谓。但如果要对接外部资金,系统的稳健性、风控能力、多品种覆盖度,都必须达到专业水准。
“还不够”。林晨看着东方渐亮的天色,“现在的系统还太单薄”。 回到电脑前,他新建了一个文档,标题是《智能投资系统2.0升级规划》。
第一阶段:数据层扩展
接入期货、可转债、EtF、期权数据源
构建统一的时间序列数据库,支持多频率数据
开发数据质量监控模块
第二阶段:策略层丰富
针对期货设计趋势跟踪策略簇
针对可转债设计股债轮动+套利策略
开发跨品种套利策略(如期现套利)
第三阶段:风控体系升级
引入VaR(风险价值)模型
开发实时风险监控仪表盘
建立策略熔断机制
第四阶段:资金管理优化
实现动态资产配置
开发基于机器学习的仓位控制模型
构建回撤控制模块
写完规划,天已经大亮。林晨看了眼时间,早上六点半。他本该去睡一会儿,但大脑异常清醒。
他点开期货模拟交易软件,入金10万虚拟资金,准备先用模拟盘测试几个期货策略。
第一个测试的是最简单的海龟交易策略——突破20日高点做多,跌破10日低点平仓。林晨选择了流动性较好的螺纹钢主力合约,设置好参数,让策略自动运行。
然后他切换到可转债领域。这里他设计了一个双因子策略:因子一是转股溢价率,越低越好;因子二是正股动量,选择近期涨幅排名前30%的正股对应的可转债。每只债买入仓位不超过总资金的5%。
“先跑一周模拟盘看看”。林晨设置好自动交易,终于感到困意袭来。
就在他准备关电脑时,手机弹出一条财经新闻推送:“美联储议息会议在即,大宗商品市场波动加剧……”
林晨的手指停在关机键上。
他重新坐回椅子,打开全球宏观数据网站。美元指数、美债收益率、原油价格、黄金走势……这些看似遥远的指标,其实都通过复杂的传导机制,影响着A股、商品期货甚至可转债市场。
“还得加一个宏观因子模块”。林晨苦笑着在升级规划里又添了一条。
这时,书房门被轻轻推开。五岁的乐乐揉着眼睛站在门口:“爸爸,你又是一晚上没睡吗”? 林晨赶紧起身抱起儿子:“爸爸在学新知识。走,我们去吃早餐”。 “妈妈做了你最喜欢的肠粉。”乐乐搂着他的脖子,“爸爸,你最近总是在电脑前,是不是很辛苦”? “不辛苦”。林晨亲了亲儿子的额头,“爸爸在建造一个很厉害的东西,等建好了,就能更好地保护你和妈妈”。 “像奥特曼那样吗”? “比奥特曼还厉害。”林晨笑着说,“奥特曼只能打怪兽,爸爸建的东西,能对抗更可怕的东西——风险”。 乐乐似懂非懂地点头。林晨抱着儿子走向餐厅,心里却还在想着那个多品种系统。
餐桌上,苏婉已经摆好了早餐:肠粉、皮蛋瘦肉粥、还有她特意学的潮汕菜脯蛋。林晨看着妻子忙碌的背影,忽然开口:“婉婉,如果……我是说如果,我想把家里剩下的存款也投进系统里,你会同意吗”? 苏婉盛粥的手顿了顿:“现在不是有7万在跑吗”? “7万太少了。”林晨认真地说,“多品种策略需要足够的资金才能分散风险。而且如果策略有效,资金规模越大,绝对收益才越有意义”。 “需要多少”? “再追加13万。”林晨说,“这样总资金20万,我可以分配:10万做股票,5万做期货,5万做可转债。每个品种内部还能进一步分散”。 苏婉沉默地坐下,把粥碗推到他面前:“你知道家里现在还剩多少存款吗”? “23万左右”? “23万6。”苏婉精确地说,“房贷每个月1万2,乐乐幼儿园费用、生活费、物业水电……就算我们省着花,一个月也要2万出头。这23万6,只够我们撑一年”。 她看着林晨的眼睛:“如果这15万亏了呢”? “我有信心——”
“我知道你有信心”。苏婉打断他,“但信心不能当饭吃。林晨,我们不是二十多岁的小年轻了,我们有孩子,有房贷,输不起”。 餐厅里安静下来,只有粥碗里升起的热气。
乐乐看看爸爸,又看看妈妈,小声说:“爸爸妈妈不要吵架”。 “没吵架”。林晨摸摸儿子的头,然后看向苏婉,“你说得对,是我太急了”。 他低头喝了一口粥,热流顺着食道温暖了全身:“这样吧,我先用模拟盘把多品种策略跑成熟,至少要有三个月稳定盈利的模拟记录。同时,我继续优化股票策略,用现有的7万实盘资金慢慢积累。等模拟盘和实盘数据都足够说服力了,我们再考虑追加资金”。 苏婉的脸色缓和下来:“这样稳妥”。 “还有,”林晨补充道,“周末张伟介绍的那个私募朋友,我去见见。如果能拿到外部资金,哪怕只是小规模的委托,也能验证系统的商业价值”。 “你打算做职业量化交易员”? “不一定”。林晨想了想,“但多一条路总是好的。而且……”他顿了顿,“如果我的系统真的能稳定盈利,也许未来我不需要再去公司上班,靠这个就能养活全家”。 苏婉看着他眼里的光,终于笑了:“那就去做吧。不过记住,身体是第一位的”。 “遵命,领导”。 早餐后,林晨把乐乐送到幼儿园,回来时没有立刻回到电脑前。他站在阳台上,看着楼下渐渐热闹起来的街道。
送孩子上学的家长,赶早班的上班族,开店的商户……每个人都在自己的轨道上奔波。而他的轨道,正从一条狭窄的技术栈,扩展成一个复杂的多维系统。
股票、期货、可转债、宏观因子、资产配置、风险控制……这些模块需要有机整合,而不是简单堆砌。
“就像乐团指挥”。林晨忽然想到这个比喻,“每个乐器手(策略)都要精通自己的部分,但指挥(系统框架)要协调他们,让整个乐团奏出和谐的乐曲”。 他回到书房,在升级规划的最上方加了一行字:
核心原则:不是追求单个策略的最高收益,而是追求整个系统在不同市场环境下的稳健性。
写完这句话,林晨感到思路清晰了许多。他打开期货模拟账户,发现早上测试的海龟策略已经自动成交了一单——螺纹钢在突破20日高点后,系统做多了1手。
几乎同时,可转债策略也发出了信号:筛选出三只低溢价率+正股动量的标的,各买入5%仓位。
林晨看着屏幕上跳动的持仓和浮动盈亏,忽然有种奇妙的感觉——这个系统正在慢慢“活”过来。它不再只是被动执行他的指令,而是开始主动观察市场,识别模式,做出决策。
“还差得远呢”。他对自己说。
真正的挑战才刚刚开始。多品种意味着更复杂的数据处理、更精细的风控、更智能的资金调度。而最大的挑战在于——如何让这些不同“性格”的策略和谐共处,而不是互相冲突。
林晨深吸一口气,新建了一个python文件。
这一次,他要写的不是某个具体策略,而是整个系统的“大脑”:一个基于强化学习的策略调度器。它会学习在不同市场环境下,应该给每个子策略分配多少权重,何时该增仓何时该减仓,甚至何时该暂时关闭某个策略。
代码的第一行,他郑重地写下:
# 智能投资系统核心调度器
# 目标:实现多策略、多品种的协同作战
# 原则:稳健优于激进,风控先于收益
窗外,鹏城的天空彻底亮了。
第77章 多策略组合
又是一夜凌晨三点,鹏城的夜色还未褪去。
林晨坐在书房里,屏幕上同时运行着三个python脚本。左边是期货模拟盘的实时数据流,中间是股票实盘账户的持仓监控,右边则是可转债小资金实盘的收益曲线。房间里只有键盘敲击声和主机风扇的低鸣。
他已经连续工作了十六个小时。
这不是因为焦虑,而是因为一种近乎痴迷的专注——他终于意识到了单一策略的致命缺陷。
“代码可以骗人,但逻辑不会”。林晨喃喃自语,这是他最近常挂在嘴边的话。
上周五,A股市场经历了一次毫无征兆的风格切换。他开发的基于均线突破的股票趋势策略,在连续盈利两周后,突然遭遇了三天回撤,单日最大回撤达到了2.8%。虽然总收益仍是正的,但这个波动幅度让他后背发凉。
更让他警觉的是期货模拟盘的表现。同样的趋势跟踪策略,在螺纹钢期货上表现优异,但在原油期货上却连续止损。市场在不同的时间尺度、不同的品种上,呈现出完全不同的“性格”。
“一个策略打天下,那是赌徒,不是交易者”。林晨在笔记本上写下这句话。
他开始系统性地研究量化交易中的多策略组合理论。核心思想很简单:没有任何一种策略能在所有市场环境下都赚钱。趋势策略在震荡市中会反复止损,均值回归策略在单边行情中会踏空甚至亏损。但如果将多种策略组合在一起,就能在不同市场环境下保持相对稳定的收益。
“就像一支球队”,林晨在脑海中构建着比喻,“需要有前锋、中场、后卫。趋势策略是前锋,负责在趋势明确时攻城拔寨;均值回归是中场,负责在震荡市中控制节奏、创造机会;网格交易是后卫,通过高频小额交易构建安全垫”。
理论清晰了,接下来是技术实现。
林晨首先着手开发趋势跟踪策略的升级版。他不再满足于简单的均线突破,而是引入了三重时间框架确认:日线判断大趋势方向,60分钟线寻找入场时机,15分钟线进行精细点位选择。同时加入了AtR(平均真实波幅)动态止损——市场波动大时止损放宽,波动小时止损收紧。
def trend_strategy(symbol, df_daily, df_hourly, df_15min):
# 日线趋势判断
daily_trend =
if df_daily[close].iloc[-1] > df_daily[ma20].iloc[-1] else down
# 小时线寻找入场
if daily_trend == :
# 寻找小时线回调至支撑位的机会
entry_condition = (df_hourly[close] > df_hourly[ma10]) &
(df_hourly[close] < df_hourly[ma10] * 1.02)
else:
# 寻找小时线反弹至阻力位的机会
entry_condition = (df_hourly[close] < df_hourly[ma10]) &
(df_hourly[close] > df_hourly[ma10] * 0.98)
# 15分钟线精确入场
if entry_condition.any:
# 使用AtR计算动态止损
atr_value = df_15min[atr].iloc[-1]
stop_loss = df_15min[close].iloc[-1] - 2 * atr_value if daily_trend ==
else df_15min[close].iloc[-1] + 2 * atr_value
return entry_signal, stop_loss
写完这段核心逻辑,林晨活动了一下僵硬的脖子。窗外天色已经开始泛白,鹏城湾的方向隐约透出晨光。
第二个策略是均值回归。这适用于震荡市场,核心思想是“价格总会回归均值”。林晨选择了布林带(bollinger bands)作为主要工具——当价格触及布林带上轨时做空,触及下轨时做多,回归中轨时平仓。
但单纯的布林带策略容易在强势单边行情中被套。林晨加入了两个过滤条件:一是波动率过滤,只有在布林带宽度(代表波动率)处于历史中位数以上时才触发交易,避免在窄幅震荡中频繁交易;二是趋势过滤,只有当大周期趋势不明确(比如日线在布林带中轨附近震荡)时,才启用均值回归策略。
“这样就能避免在强势上涨趋势中,因为价格触及上轨而盲目做空”。林晨解释给自己听。
第三个策略是网格交易。这是最“机械”的策略,也是林晨以前最看不上的——“太没技术含量了”。但现在他明白了,策略没有高低之分,只有适用与否。
网格交易的核心是在某个价格区间内,设置等间距的买入和卖出挂单。比如某只股票当前价格10元,设定网格间距5%,那么就在9.5元挂买入单,在10.5元挂卖出单。价格跌到9.5元就买入,涨到10.5元就卖出,赚取这5%的差价。
林晨选择将这个策略应用于可转债。因为可转债具有“下有保底”的特性,在面值附近下跌空间有限,非常适合网格交易。他编写了一个自动挂单脚本,对持仓的几只可转债进行网格管理。
class Gridtrader:
def __init__(self, symbol, center_price, grid_width=0.05, grid_num=5):
self.symbol = symbol
self.center = center_price # 网格中心价
self.width = grid_width # 网格间距比例
self.num = grid_num # 向上和向下的网格层数
def generate_grids(self):
grids = []
for i in range(-self.num, self.num+1):
price = self.center * (1 + i * self.width)
if i < 0:
grids.append({price: price, typebuyqty: 100})
elif i > 0:
grids.append({price: price, typesellqty: 100})
return grids
三个策略独立开发完成后,真正的挑战来了:如何整合?
林晨在架构设计上花了整整两天时间。他设计了一个“策略调度器”,核心逻辑是根据市场状态动态分配资金权重。
第一步,市场状态识别。他编写了一个状态分类器,根据过去20个交易日的波动率、趋势强度、成交量变化等指标,将市场分为四种状态:强势上涨、强势下跌、宽幅震荡、窄幅震荡。
第二步,策略权重分配。在强势上涨趋势中,趋势策略分配到70%资金,均值回归策略20%,网格交易10%;在宽幅震荡中,均值回归策略分配到60%,趋势策略20%,网格交易20%;在窄幅震荡中,网格交易分配到50%,均值回归30%,趋势策略20%。
第三步,动态调整。每周末进行一次状态重评估和权重再平衡。
“这就像自动驾驶系统”,林晨在代码注释中写道,“根据路况(市场状态)自动切换驾驶模式(策略权重)。直道加速(趋势策略),弯道减速(均值回归),堵车时跟车(网格交易)”。
系统整合完成的那个下午,林晨泡了一杯浓茶,坐在电脑前启动了回测。
他选择了过去三年的数据,涵盖牛市、熊市、震荡市各种行情。回测结果让他屏住了呼吸。
单一趋势策略:年化收益率18.7%,最大回撤32.4%,夏普比率0.86。 单一均值回归策略:年化收益率15.2%,最大回撤25.8%,夏普比率0.79。 单一网格交易策略:年化收益率12.5%,最大回撤15.3%,夏普比率0.92。
而多策略组合:年化收益率21.3%,最大回撤降至18.2%,夏普比率提升至1.24。
“成了”。林晨长长地吐出一口气。
最大回撤从32.4%降到18.2%,这是质的飞跃。在投资中,控制回撤比追求高收益更重要——因为50%的回撤需要100%的收益才能回本,而20%的回撤只需要25%的收益就能恢复。
夏普比率从不到1提升到1.24,意味着每承担一单位风险,获得的收益补偿更高了。
更重要的是,收益曲线变得平滑了。在单一策略大幅回撤的时期,多策略组合因为其他策略的盈利而抵消了部分损失,整体曲线呈现出“小步快跑、稳步向上”的态势。
林晨将新系统部署到实盘。股票账户的7万资金,他分配了3万给趋势策略,1.5万给均值回归,0.5万给网格交易。期货模拟盘和可转债实盘也做了相应调整。
一周后,效果开始显现。
周一,市场震荡,趋势策略小幅亏损,但均值回归策略盈利,网格交易赚取了几个价差,整体账户微涨0.3%。
周三,市场突然上涨,趋势策略抓住了突破机会,单日盈利1.8%,均值回归策略因为趋势过滤没有触发交易,网格交易正常运作,整体账户大涨2.1%。
周五,市场冲高回落,趋势策略部分止盈,均值回归策略在回调中低吸,网格交易在波动中赚取差价,整体账户再涨0.7%。
一周下来,账户总收益3.1%,最大单日回撤只有0.5%。这个波动水平,林晨晚上终于能睡得着了。
周末,他算了一笔账:如果按周化3%的收益(年化约165%),7万本金半年就能翻倍。但理智告诉他,这只是理想情况,实际市场会有更复杂的表现。
不过多策略组合带来的安全感是真实的。就像在海上航行,以前只有一艘船,风浪大了随时可能翻;现在是一个舰队,即使一艘船受损,其他船还能保持编队继续前进。
夜深了,林晨关掉电脑。书房窗外,鹏城湾的灯光倒映在海面上,连成一片璀璨的光带。
他想起两个月前被裁员时的绝望,想起面试web3公司时的挫败,想起自学AI时的孤独。那些时刻,他从未想过自己会坐在家里,构建一个能自动赚钱的系统。
技术改变命运——这句话以前听起来像鸡汤,现在成了他亲身验证的真理。
但林晨清楚,这只是开始。多策略组合提升了系统的鲁棒性,但资金规模依然是瓶颈。7万本金,即使年化50%,一年也只有3.5万收益,远不足以支撑家庭开支,更别说实现财富自由。
“需要更多资金,或者……”林晨看着屏幕上平滑上升的收益曲线,“找到放大收益的方法”。
这个念头在他脑海中盘旋,像一颗等待破土的种子。
第78章 妻子的支持
窗外,鹏城初夏的夜雨淅淅沥沥。书房里,只有键盘敲击声和散热风扇的低鸣。
林晨盯着屏幕上滚动的日志,眉头紧锁。策略调度器在过去24小时里,自动切换了三次策略模式——从趋势跟踪切换到网格交易,又在午后短暂启用了均值回归。切换逻辑基本符合他的设计,但有一个细节让他不太满意:在下午两点左右,市场出现短暂波动时,调度器似乎“犹豫”了一下,多花了0.3秒才做出决策。
0.3秒。在人类感知里几乎可以忽略,但在高频交易的世界里,可能意味着错过最佳入场点。
他正调出那段时间的详细数据,准备分析调度器的决策树,书房门被轻轻推开。
苏婉端着一碗银耳莲子羹走了进来,脚步很轻。她看到林晨专注的侧脸,屏幕荧光映在他脸上,明明灭灭。
“还在弄”?她把瓷碗放在书桌角落,避开一堆摊开的打印纸——上面密密麻麻全是回测曲线和参数表。
林晨这才回过神,揉了揉发酸的后颈:“嗯,调度器有个小问题,想看看怎么回事”。他看了眼时间,居然已经晚上十一点了。“乐乐睡了”?
“早睡了,睡前还念叨,说爸爸最近都在电脑前,都没给他讲睡前故事了”。苏婉语气平和,没有抱怨的意思,只是在陈述事实。
林晨心里一紧,愧疚感涌上来。再次失业这几个月,他要么在焦虑地投简历面试,要么像现在这样,一头扎进代码和数据的海洋里。对家庭的陪伴,确实少了很多。
“我……”他张了张嘴,想解释什么,却又觉得任何解释都苍白。
苏婉却在他旁边的椅子上坐下来,目光落向屏幕。那些跳动的曲线和代码,她看不懂,但她能看懂丈夫眼神里的专注,还有那种……找到了方向的光芒。
“这个系统”,她指了指屏幕,“就是你这段时间一直在做的,那个‘投资系统’”?
林晨点点头,顺手调出最近一周的实盘账户概览界面。简洁的仪表盘上,几个关键数字跳动着:总资产 79,820.45,周收益率 +2.6%,最大回撤 -0.5%,夏普比率 1.24。
“用七万块试的,跑了三周多”。他尽量让自己的声音听起来平静,“效果……比我想象中稳”。
苏婉看着那个“+2.6%”,又看了看下面那些陌生的术语。“所以,它真的能赚钱?不用你一直盯着”?
“理论上,设计好了逻辑,它就能自动运行。我主要就是优化这些逻辑,处理一些极端情况”。林晨解释道,语气里不自觉带上一丝技术人的兴奋,“比如今天这个问题,就是它在某些市场状态下,决策不够果断。我得调整一下它的状态识别算法……”
他说着,又习惯性地想转身去敲代码。
“林晨”。苏婉叫住他。
他回头。
苏婉看着他,眼神温柔而坚定:“你最近投简历了吗”?
林晨愣了一下,摇摇头:“上一家web3公司谈崩之后,就没怎么投了。猎头推了几个,看了Jd(职位描述),要么方向不对,要么薪资离预期太远”。他苦笑一下,“而且……我发现自己大部分心思,都在这个东西上”。
他指了指电脑。
苏婉沉默了片刻,手指轻轻摩挲着温热的瓷碗边缘。雨声透过窗户传进来,衬得书房格外安静。
“那就先别投了”。她说。
林晨愕然:“什么”?
“我说,既然你现在心思都在这个系统上,觉得它能做出点名堂,那就先别急着找工作”。苏婉的声音很清晰,每个字都落得稳稳的,“专心把它做好”。
林晨彻底愣住了。他预想过很多种情况——妻子催促他赶紧找工作,抱怨家里经济压力,担忧未来……独独没想过,她会说出这样的话。
“可是……”他喉咙有些发干,“房贷,生活费,乐乐的开销……我失业金加上你工资,撑不了多久。而且,这系统虽然现在赚了点,但本金太小,赚的也是小钱,不稳定”。
“我知道”。苏婉点点头,“但我也知道,你这段时间,虽然忙,虽然焦虑,但眼睛里是有光的。不像刚失业那阵子,整个人都是灰的”。
她顿了顿,继续道:“我是教语文的,不懂你那些代码和算法。但我懂人。你以前做跨境电商那些系统,是为了工作,为了完成任务。现在做这个,是为了自己,是为了‘验证某种可能性’。对不对”?
林晨怔怔地看着妻子。她的话,像一把精准的钥匙,捅开了他心底某个自己都没完全意识到的锁。
是啊。过去十年,他写代码是为了需求,为了KpI,为了升职加薪。那些系统成功上线,他也会有成就感,但那种成就感很快会被新的需求和bug取代。而眼前这个系统,从每一个公式的推导,每一行代码的构建,到每一次回测的验证,都完完全全出自他个人的思考与创造。它不完美,甚至有缺陷,但它的每一次进化,都清晰地打着他林晨的烙印。
这种纯粹的、指向未知的创造过程,带来的满足感,是截然不同的。
“但是风险……”林晨还是无法摆脱现实的重压。
“做什么没风险”?苏婉反问,“你急着找一个不喜欢的工作,干得不开心,说不定过两年又裁员,那不是风险?你把这个系统半途而废,以后想起来后悔,觉得当初明明有可能走通的路自己没坚持,那不是风险”?
她拿起那碗已经不太烫的银耳羹,递到林晨手里:“喝了吧,润润肺。你这些天熬夜,嗓子都有点哑了”。
林晨接过碗,温热的触感从掌心传来。
“家里存款,还能撑一段时间”。苏婉算着账,“我工资覆盖日常开销和乐乐的费用,你的失业金加上之前攒的,房贷还能供几个月。这系统不是已经开始赚钱了吗?哪怕慢一点,也是一个正向循环。咱们节约点,日子紧巴点,但也不是过不下去”。
她看着林晨,眼神里有种通透的力量:“我觉得,人有时候,需要一点‘奢侈’——奢侈地给自己一段时间,不去考虑立刻的变现,不去焦虑明天的饭碗,就专心把一件事,做到自己能做到的极致。你以前总说,真正好的代码,是‘优雅’的。你现在,不就是在追求这种‘优雅’吗”?
“优雅……”林晨喃喃重复这个词。在技术语境里,优雅的代码意味着简洁、高效、逻辑清晰、扩展性强。他追求的系统,何尝不是如此?
“可这毕竟不是写代码,是投资,是真金白银……”他仍有顾虑。
“所以更需要专注啊”。苏婉笑了,“一边焦虑找工作面试,一边惦记着系统优化,两头都做不好。不如集中火力,攻其一点。成了,或许是一条新路;不成,你这两个多月积累的AI和量化知识,难道就白费了?再去求职,底气不也更足吗”?
逻辑清晰,无可辩驳。
林晨看着妻子,这个陪伴他走过十年婚姻,经历过平淡也经历过风浪的女人。她不是技术专家,却有着洞察人心的智慧;她也会为柴米油盐操心,却能在关键时刻,给他最坚定也最清醒的支持。
碗里的银耳羹清甜软糯,顺着食道滑下,暖意蔓延到四肢百骸。
那股自从失业以来就盘踞在心底的、混杂着焦虑、自卑和迷茫的寒气,似乎被这股暖意驱散了不少。
“婉婉”,他放下碗,声音有些沙哑,“谢谢你”。
千言万语,堵在胸口,最终只化成这三个字。
苏婉摇摇头,伸手替他理了理有些凌乱的头发:“谢什么。我们是夫妻。当年你支持我辞职考研,去追当老师的梦。现在,我支持你追你的梦,不是应该的吗”?
她站起身:“早点休息,别熬太晚。系统再好,人也得睡觉”。
走到门口,她又回头,补充了一句:“对了,妈那边要是打电话来问,我就说你正在做一个很重要的项目,暂时不接外地工作。家里这边,有我”。
门轻轻关上。
书房里重新安静下来,只剩下雨声和机箱风扇声。
林晨坐在椅子上,久久没有动。胸腔里涌动着一种滚烫的情绪,那不仅仅是感动,更是一种被全然信任、被托举起来的沉重责任,以及由此催生出的、更加清晰的决心。
他重新看向屏幕。那0.3秒的“犹豫”,似乎不再只是一个需要修复的技术bug。
它像是一个隐喻——在人生的十字路口,面对不确定的未来,谁不曾犹豫?但重要的是,在看清方向后,要有果断切换策略、坚持走下去的勇气和底气。
而现在,他的底气,来自手头逐渐成熟的系统,更来自身后那个温暖而坚定的家。
他移动鼠标,关掉了繁琐的数据分析界面,打开了核心的策略调度器源代码文件。眼神重新变得锐利而专注。
夜雨未停,代码的世界里,新的优化,才刚刚开始。
就在这时,电脑右下角,社交软件闪烁了一下。是张伟发来的信息。
“晨哥,睡了没?有个事儿,可能得跟你聊聊”。
第79章 技术架构升级
凌晨两点半,林晨的手机震动了一下。
他刚从一段复杂的异步回调地狱里挣扎出来,揉了揉发酸的眼睛,拿起手机。是张伟的回复,距离他睡前发的那条询问“什么事”已经过去了六个小时。
“抱歉刚开完会。电话方便吗”?
林晨看了眼窗外沉寂的夜色,又看了看屏幕上正在运行的量化系统终端——它正安静地按照既定策略分析着夜间的外汇市场数据。他起身走到阳台,拨通了电话。
“喂,伟哥,还没睡”?林晨压低声音,怕吵醒隔壁卧室的苏婉和乐乐。
“刚弄完一个智能合约的审计报告”。张伟的声音带着熬夜后的沙哑,但语气很精神,“你上次不是说在搞量化系统吗?进展怎么样”?
“原型跑起来了,用7万块实盘试了快一个月,收益……还行,大概8%左右”。林晨实话实说,“但架构很糙,就是个脚本集合,调度、监控、风控都是手搓的,得重构”。
电话那头传来张伟敲击键盘的声音,似乎一边聊一边在查什么。“8%一个月?年化快翻倍了,可以啊。不过你说得对,这种‘实验室产品’不上正经架构,迟早出问题。我找你其实是另一件事——t厂AI Lab那边,我有个前同事跳过去了,说他们最近在扩招,尤其是应用算法方向,可能跟你现在搞的东西有重叠”。
林晨心里一动。t厂,那是国内互联网的顶级山头之一,AI Lab更是无数技术人向往的圣殿。但他立刻冷静下来:“我简历……够得着吗?而且我现在的系统,还没到能拿出去说的程度”。
“所以我才问你进展”。张伟很直接,“如果你只是玩票,那就算了。但如果你真把这系统当个正经项目在打磨,甚至有了架构升级的计划,那这就是一个非常好的‘项目经验’。大厂面试,尤其是技术面,最喜欢有完整闭环实践经验的候选人,哪怕项目不大,但深度够、思考够,比空谈算法强得多”。
夜风微凉,吹散了林晨的困意。他握着手机,脑海里快速闪过自己那个杂乱的项目目录。“我正打算重构。后端用FastApI重写,提供标准ApI;前端想用React做个可视化监控面板;然后部署到云服务器上,做成一个可以远程访问、监控的完整服务”。
“FastApI + React + 云部署……”张伟重复了一遍,笑了起来,“思路很正嘛。这就是一个标准的现代web应用架构了。你搞跨境电商后端这么多年,这套东西对你来说应该不难,重点是把你的量化逻辑封装成服务。什么时候能弄出个雏形”?
“快的话,一周。慢的话,两周”。林晨估算了一下学习React和部署的时间。
“那就搞”。张伟果断道,“搞出来之后,如果需要内推,跟我说一声。不过别急,先把东西做扎实。代码可以骗人,但逻辑不会”。
挂掉电话后,林晨站在阳台上,看着远处鹏城湾星星点点的灯火,心中那股因妻子支持而燃起的火苗,被张伟这通电话又添了一把柴。不再是模糊的“试试看”,而是有了更清晰的技术路径和潜在的机会窗口。
他回到电脑前,关掉了那个运行着原始脚本的终端。打开浏览器,新建了三个标签页:FastApI官方文档、React中文教程、一家国内云服务商的价格计算器。
重构,从现在开始。
接下来的一周,林晨进入了某种心流状态。白天,当苏婉去学校、乐乐去幼儿园后,整个家就成了他一个人的实验室。他把原本堆在书房各个角落的金融数据资料、打印的论文、写满公式的草稿纸全部收纳整齐,给三台显示器重新规划了布局:左边显示FastApI开发文档和pycharm编辑器;中间是React学习教程和VS code;右边是量化核心策略的python代码和测试终端。
FastApI的选择是经过深思熟虑的。相比传统的Flask或django,FastApI基于python 3.6+的类型提示,性能接近Node.js和Go,自动生成交互式ApI文档,对于需要高性能、清晰接口定义的量化服务后端来说非常合适。林晨花了三天时间,将原本散落在多个脚本里的数据获取模块、特征工程模块、模型预测模块、交易信号生成模块,逐一拆解、重构,封装成一个个独立的、具有明确输入输出的函数和类。
然后,他用FastApI将这些模块“粘合”起来。创建了 /api/v1/data/ 系列端点,用于获取实时和历史数据;创建了 /api/v1/feature/ 端点,用于计算技术指标和特征;最重要的是 /api/v1/signal/ 端点,它接收市场数据,调用核心AI模型,返回买卖信号和置信度。每一个端点都有详细的pydantic模型进行请求和响应数据的验证与序列化。
“这才像个样子”。林晨看着自动生成的Swagger ApI文档页面(
后端雏形完成,接下来是前端。这对林晨是个新挑战。他以前做后端,前端知识停留在jquery和一点Vue的程度。React是现代前端绝对的主流,其组件化、声明式编程的思想,与他正在做的模块化后端不谋而合。
学习过程比预想的顺利。React的核心概念——组件、JSx、状态(State)、属性(props)、hooks——对于有扎实编程基础的他来说,理解起来并不困难。难的是前端那一套生态系统:webpack(或Vite)、babel、npm包管理、cSS框架……他选择了一条最快捷的路径:使用 create-react-app 脚手架快速搭建项目,UI组件库选用轻量且流行的Ant design,图表库选用Echarts。
他的目标是做一个简洁、实用的监控面板。左侧导航栏,中间主区域显示核心内容。主区域又分为几个卡片组件:实时资产总览(账户余额、浮动盈亏、持仓)、市场状态(主要股指、汇率、大宗商品涨跌)、交易信号列表(最近产生的买卖信号详情)、性能图表(资金曲线、回撤图、胜率统计)。
当第一个Echarts折线图在浏览器里成功绘制出模拟的资金曲线时,林晨忍不住挥了一下拳头。那种从无到有,从杂乱数据到清晰可视化的创造感,令人着迷。他不断调整着图表的颜色、提示框、缩放功能,让它看起来更专业、更直观。
前后端都跑通后,最大的考验来了:部署。
他对比了几家主流云服务商。大厂的云服务稳定但稍贵,创业公司的云性价比高但怕有坑。考虑到目前系统规模小,访问量几乎为零(只有他自己看),他最终选择了一家口碑不错的中型云服务商,买了一个最低配置的云服务器(1核2G,带宽按量付费),月费不到一百块。
按照教程,他在纯净的Linux系统上安装了python环境、Node环境、Nginx、数据库。将后端FastApI代码打包上传,用Uvicorn作为ASGI服务器启动;将前端React项目构建成静态文件,也上传到服务器,通过Nginx配置反向代理和静态文件服务。
最难搞的是让后端服务稳定地在后台运行,并且开机自启。他研究了systemd,写了服务配置文件。又为了更方便管理,引入了pm2来守护Node服务(虽然目前前端是静态的,但他为未来可能的前后端分离ApI预留了可能)。
整整折腾了两天,遭遇了无数次“permission denied”、“端口被占用”、“依赖缺失”的错误。每一次排错,都是对Linux运维知识的恶补。当他在本地电脑的浏览器里,输入那个属于自己的云服务器Ip地址,看到React监控页面成功加载,并且通过页面上的按钮调用后端ApI,实时获取到最新的账户余额和交易信号时,那种跨越重重障碍终于抵达终点的成就感,几乎要满溢出来。
系统,上线了。
现在是下午四点,鹏城的阳光斜照进书房。林晨靠在椅背上,长长地舒了一口气。他拿起手机,给自己点了一份平时舍不得点的、来自南山科技园某家知名烧腊店的豪华双拼饭,多加一份叉烧。
等待外卖的间隙,他用自己的手机4G网络,再次访问了那个监控面板。页面流畅加载,图表清晰展示。这意味着,无论他在家里、在咖啡馆、甚至在未来可能去面试的路上,只要能上网,他就能随时掌握自己那个“AI交易员”的工作状态。
他点开“交易信号”列表,最新一条记录显示,就在十五分钟前,系统基于欧元兑美元汇率的小幅波动,结合AI模型判断,自动执行了一笔微量的买入操作。状态显示“已成交”。
林晨切换到实盘的券商App,核对了一下。成交记录一致。浮动盈亏栏显示着一个绿色的正数:+86.33元。
钱不多,甚至不够付刚才那顿外卖。但意义重大。这证明从数据获取、AI分析、信号生成、到自动下单执行、再到结果反馈至监控面板的整个闭环,在全新的、更健壮的架构上,跑通了。
手机震动,外卖电话。林晨起身去拿外卖,脚步都轻快了几分。
当他吃着香喷喷的叉烧饭,时不时瞥一眼旁边平板电脑上自动刷新的监控面板时,一种久违的、扎实的掌控感,慢慢在心底沉淀下来。失业的阴霾,求职的焦虑,似乎被这一行行亲手敲出的代码,一个个被攻破的技术难点,暂时驱散了。
饭吃到一半,苏婉发来微信:“晚上爸妈那边打电话来,说想过来看看乐乐,顺便……看看我们。我估计周末可能会来。你有个心理准备”。
林晨咀嚼的动作慢了下来。他看着微信,又看了看屏幕上那条+86.33元的盈利记录,以及背后代表的一整套正在悄然运转的系统。
他回复:“好,我知道了。别担心”。
周末,父母要来。他们看到的,将是一个仍在家中、没有“正经工作”的儿子。但林晨知道,有些东西已经不一样了。他放下手机,继续吃饭。代码可以骗人,但逻辑不会。而他自己亲手构建的逻辑世界,正在变得越来越清晰,越来越有力。
第80章 数据库设计
清晨六点半,鹏城科技园附近的老旧小区里,林晨已经坐在电脑前两个小时了。
窗外天色渐亮,远处科技园玻璃幕墙反射出初升阳光的金色。屋内只有键盘敲击声和机箱风扇的低鸣。屏幕上,量化投资系统的监控面板正平稳运行,但林晨的目光却锁定在日志区不断滚动的一条警告信息上:
“数据查询延迟超过200ms,建议优化存储结构”。
这是系统运行一周以来,第一次出现性能警告。
林晨端起已经凉掉的半杯咖啡,盯着那条警告看了很久。他知道问题出在哪里——系统架构升级了,前端后端都现代化了,但数据存储这一块,还停留在“能用就行”的阶段。
目前系统用的还是最简单的SqLite数据库,所有交易记录、市场数据、指标计算结果都塞在同一个文件里。当数据量小的时候没问题,但现在系统同时监控着A股三十多只股票、基金、黄金EtF,每秒钟要处理上百条实时行情,每天生成的交易日志和指标数据已经超过十万条。
“该给系统搭个像样的数据库架构了”。林晨自言自语道,声音在安静的房间里显得格外清晰。
他打开一个新的思维导图文档,在中央写下“量化系统数据库设计”。然后开始拆解需求。
第一类是结构化数据:交易记录、账户资产变化、用户配置参数。这些数据需要严格的事务支持,要保证每一笔交易记录都准确无误,不能丢失。这类数据最适合用传统的关系型数据库。
mySqL。林晨在思维导图上写下这个选项。开源、稳定、社区成熟,他在之前的跨境电商项目里用过很多次,熟悉得像老朋友。
第二类是时序数据:股价、成交量、技术指标值。这些数据的特点是时间戳是天然的主键,数据量巨大,写入频繁,查询模式固定——基本都是按时间范围查询。用传统关系型数据库存储这类数据,就像用货柜车运快递,能运但效率太低。
Influxdb。林晨写下第二个选项。专门为时间序列数据设计的数据库,写入速度快,压缩效率高,针对时间范围查询做了深度优化。这是他自学AI时接触到的技术,当时用Influxdb存储神经网络训练过程中的损失函数变化曲线,效果很好。
第三类是缓存数据:实时行情、临时计算结果、会话状态。这些数据需要极快的读写速度,但可以容忍偶尔丢失,因为源头数据还在。
Redis。第三个选项出现在思维导图上。内存数据库,读写速度能达到微秒级,是提升系统响应速度的利器。
“mySqL存核心交易,Influxdb存时序行情,Redis做缓存加速”。林晨看着这个三层架构设计,点了点头。
接下来的三天,林晨进入了沉浸式的编码状态。
每天早晨六点起床,七点开始工作,中午苏婉会把午饭送到书房门口——自从父母要来鹏城的消息确认后,苏婉对他的支持更加细致入微,仿佛在用行动告诉他:家里有我,你专心做你的事。
林晨先攻mySqL部分。他在阿里云上申请了一个最基础版的RdS实例,一个月不到两百块钱。然后开始设计表结构。
交易表需要记录:交易Id、标的代码、买卖方向、数量、价格、手续费、交易时间、策略Id。他给交易时间字段加了索引,这样按时间查询交易记录会很快。
账户资产表需要记录:每日收盘后的总资产、现金余额、持仓市值、当日盈亏。这个表要保证每天只有一条记录,用作长期资产走势分析。
策略配置表、标的监控列表、风险规则表……林晨一边设计一边写ddL语句,手指在键盘上飞舞。这些表之间的关系用外键约束起来,确保数据一致性。
“建库脚本完成”。第三天上午十点,林晨执行了最后一个SqL文件。mySqL数据库里,十多个表整齐排列,索引创建完毕,初始数据也导入完成。
接下来是Influxdb。林晨在同一个云账号下开通了时序数据库服务。这个的设计更简单,因为Influxdb不需要预定义表结构。
他创建了一个名为“market_data”的存储桶,然后开始规划数据写入格式。每条行情数据包含:测量名称(如stock_price)、标签(标的代码、市场类型)、字段(开盘价、最高价、最低价、收盘价、成交量)、时间戳。
“写入测试”。林晨写了一段python脚本,模拟生成股价数据写入Influxdb。监控面板显示,写入速度稳定在每秒五千条以上,查询最近一小时的行情数据,响应时间不到50毫秒。
“这才是专业的感觉”。林晨看着监控数据,嘴角上扬。
最后是Redis。他在云服务器上直接部署了Redis服务,配置了持久化策略——虽然缓存数据可以丢失,但有些计算中间结果还是保存下来比较好,避免重复计算。
缓存设计是个细致活。林晨规划了几个关键缓存:
实时行情缓存:存储最新行情,设置15秒过期,过期后系统会自动从数据源更新。
技术指标缓存:存储计算好的mAcd、RSI、布林带等指标值,设置5分钟过期,因为指标计算相对耗时。
策略信号缓存:存储各策略生成的买卖信号,设置1分钟过期,确保交易决策基于最新数据。
“缓存预热机制也得做”。林晨思考着。系统启动时,应该主动加载一些基础数据到缓存,避免第一批请求全部穿透到数据库。
三天后的傍晚,三层数据库架构全部搭建完毕。
林晨开始改造原有的系统代码。数据访问层要重写,原来直接读写SqLite的代码,现在要根据数据类型分发到不同的数据库。
交易记录写入mySqL,行情数据写入Influxdb,实时查询走Redis缓存。他写了一个统一的数据访问接口,对上层业务代码透明——业务代码不需要知道数据存在哪里,只需要调用“保存交易”、“查询行情”、“获取缓存”这些方法。
这工作做了整整两天。林晨像在搭建一座精密的钟表,每个齿轮都要严丝合缝。有时候一个字段的类型不匹配,就会导致整个写入失败;有时候缓存过期时间设置不合理,就会产生脏数据。
第五天晚上十一点,最后一段代码调试通过。
林晨深吸一口气,点击了系统重启按钮。监控面板暗下去又亮起来,各个模块依次启动:数据访问层连接mySqL成功,连接Influxdb成功,连接Redis成功,缓存预热完成……
实时行情开始流入,系统界面上的股价数字跳动起来。
林晨打开浏览器的开发者工具,切换到网络监控页。他模拟了一个查询请求:获取某只股票最近一个月的日K线数据,并计算相应的技术指标。
请求发出。之前用SqLite时,这个查询需要800毫秒左右,因为要从几十万条数据里筛选、计算。现在呢?
网络面板显示:请求耗时237毫秒。
林晨眼睛一亮。他又测试了几个复杂查询:多只股票对比分析、策略历史回测、账户资产走势图……响应时间全部在300毫秒以内,比之前快了三四倍。
“值了”。林晨靠在椅背上,长长吐出一口气。
这五天的高强度工作,让他找回了当年做项目攻坚的感觉。不是被动完成任务,而是主动设计架构、解决难题。每一步优化都能看到效果,每一个决策都有数据支撑。
他打开系统收益面板。自从架构升级和数据库优化后,系统运行更加稳定,交易信号生成更及时。实盘账户的收益率曲线,从之前的平缓上升,开始出现更明显的上扬趋势。
初始投入7万元,现在总资产元。收益率8.25%,而且最近三天的日均收益率达到了0.3%,比之前提升了近一倍。
虽然绝对值还不大,但趋势已经出来了。就像一列火车,刚开始启动时很慢,一旦进入轨道,速度就会越来越快。
林晨保存了所有代码,提交到Git仓库。他在提交信息里写道:“数据库架构升级完成,三层存储设计,查询性能提升3倍以上”。
写完这句话,他忽然想起什么,打开手机日历。
明天就是周六了。父母乘坐的高铁下午三点到鹏城北站。
技术上的成就感还在心头荡漾,但现实的重量已经悄然落下。父母这次来,肯定不只是“看看”那么简单。失业半年,转型做AI,现在又在搞什么量化投资——这些在父母那一代人眼里,恐怕都是不务正业。
林晨关掉电脑,走到窗边。夜色中的鹏城依然灯火通明,科技园的写字楼里还有不少窗户亮着灯。这座城市永远不缺奋斗的人,也不缺被淘汰的人。
他摸了摸口袋,里面有一张打印出来的纸,是系统最新生成的资产分析报告。纸上的数字和图表,是他这半年所有努力的量化证明。
“希望能讲得通吧”。林晨轻声说。
窗外,一辆晚归的出租车驶过,车灯在夜色中划出一道短暂的光轨,很快又消失在拐角处。就像很多故事一样,高潮来临之前,总有那么一段看似平静实则暗流涌动的路途。
第81章 监控告警
窗外的天色从深蓝渐变成鱼肚白,林晨揉了揉发酸的眼睛,看了一眼电脑右下角的时间:清晨五点四十七分。
父母今天下午就要到了。
这个念头像一根细刺,扎在他持续获得技术成就感的愉悦情绪底层。昨晚几乎没怎么睡,脑子里交替闪过一行行python代码和父母可能出现的担忧面孔。他知道,躲是躲不过去的,与其焦虑,不如做点实际的事——把系统的最后一个大短板补上。
他的量化交易系统现在有了稳健的策略、高效的数据库架构,收益曲线也在稳步上扬。但还有一个致命问题:它缺乏真正的“眼睛”和“警报器”。系统现在全天候运行,如果他不是每天亲自检查日志和绩效报表,根本无法实时知道策略是否失效、市场是否出现异常波动、程序是否出错。
一个真正的生产级系统,必须能自己监控自己,并在出问题时第一时间通知主人。
“就从这里开始吧”。林晨深吸一口气,打开pycharm,新建了一个名为monitor.py的文件。
异常检测模块是第一个目标。金融市场里,黑天鹅事件虽然罕见,但一旦发生就足以吞噬所有利润。他的系统目前只依赖历史波动率设定止损,这不够。他需要一种能自动识别“模式外”行情的方法。
林晨选择了孤立森林(Isolation Forest)算法。这是一种无监督学习算法,特别适合找出数据中的“离群点”——也就是异常值。原理不复杂:通过随机切割数据空间,那些容易被“孤立”出来的数据点,就很可能是异常。
“用过去二十个交易日的分钟级行情数据作为正常样本池”,他一边敲代码一边低声自语,“实时数据进来后,计算其异常分数。超过阈值,就触发预警”。
from sklearn.ensemble import IsolationForest
import numpy as np
class marketAnomalydetector:
def __init__(self, historical_data, contamination=0.01):
historical_data: 形状为 (n_samples, n_features) 的历史数据矩阵
特征可包括收益率、波动率、成交量变化率等
contamination: 预期异常值比例,保守点设小一些
self.model = IsolationForest(contamination=contamination, random_state=42)
self.model.fit(historical_data)
def detect(self, current_features):
score = self.model.decision_function([current_features])[0]
prediction = self.model.predict([current_features])[0]
# 分数越接近-1,越可能是异常;prediction为-1表示异常
return score, prediction
他花了一上午时间,整合了收益率、波动率、成交量突增比率三个特征,用过去一个月A股主要指数的分钟数据训练了模型。初步回测显示,这个简单的模型能捕捉到去年几次因突发消息导致的盘中急跌急涨。
但这只是第一道防线。更隐蔽的风险是“策略悄然失效”。市场风格会切换,一个过去有效的因子可能会在某个阶段完全失灵,而系统还会傻傻地继续交易,直到资金曲线出现明显回撤才发现。
“需要监控策略本身的健康度”。林晨思索着。他决定引入几个关键绩效指标的实时监控:
夏普比率滚动窗口变化:计算最近20个交易日的夏普比率,与更长期的均值比较,如果显着下降(通过统计检验),则报警。
最大回撤突破:实时更新当前回撤值,如果突破历史回撤的某个百分位(比如95%),报警。
信号失效:记录每次交易信号的实际盈亏,如果连续出现多次亏损(例如同一策略信号连续亏损5次),则怀疑信号失效。
这些逻辑被他封装进Strategyhealthmonitor类。每一个监控项都设置了可配置的阈值和检验方法。
“光检测出来没用,必须得让我立刻知道”。林晨解决下一个问题:通知渠道。
邮件太慢,短信需要接口和费用。最直接的就是微信。他研究了一下,可以通过企业微信的机器人webhook接口,向个人微信发送消息。免费,稳定,几乎零延迟。
他注册了一个企业微信应用(免费版足够),获取了webhook地址。然后写了一个简单的通知模块:
import requests
import json
class wechatNotifier:
def __init__(self, webhook_url):
self.webhook_url = webhook_url
def send_alert(self, title, content, level=warning):
# level: info, warning, critical
colors = {infogreenwarningorangecriticalred}
data = {
msgtypemarkdown,
markdown: {
content: f**{title}**> 级别:<font color=\{colors[level]}\>{level.upper}</font>> {content}> 时间:{datetime.now.strftime(%Y-%m-%d %h:%m:%S
}
}
try:
resp = requests.post(self.webhook_url, json=data, timeout=5)
return resp.status_code == 200
except Exception as e:
print(f微信发送失败: {e})
return False
他把市场异常检测、策略健康度监控、以及通知模块整合到一起,形成了一个独立的监控服务。这个服务作为守护进程,每五分钟拉取一次最新数据和绩效指标,运行检测逻辑,一旦发现问题,立即通过微信推送。
为了测试,林晨故意修改了一个策略参数,让它在回测中立刻表现失常。他点击运行监控服务,然后拿起手机等待。
不到两分钟。 “叮——”
微信提示音响起。他划开屏幕,看到一条来自“企业微信应用”的消息:
【策略健康度告警】
级别:wARNING 策略‘沪深300均值回归(改进版)’夏普比率(20日滚动)已降至0.15,低于长期均值0.82,统计检验显着(p<0.05)。建议立即审查策略参数或暂停该策略交易。 时间:2026-01-14 14:23:07
成了!
林晨盯着这条格式清晰、信息明确的告警,一股强烈的满足感涌了上来。这种感觉,比看到收益率数字跳动更踏实。这意味着他的系统从一个需要他时刻照看的“婴儿”,开始向一个能自主报告状态的“少年”迈进。风控的自动化,是量化交易走向成熟的关键一步。
他修复了测试用的错误参数,系统很快又恢复了正常。监控服务安静地运行在后台,像一名忠诚的哨兵。
下午的阳光开始西斜,透过窗户,在书桌上投下长长的光影。林晨伸了个懒腰,看着屏幕上稳定运行的终端界面和监控日志。系统的最后一个主要短板,被他用一天的时间基本补上了。
技术上的成就感是实实在在的,它冲淡了部分焦虑。但父母即将抵达的现实,依然沉甸甸地压在心头。他该如何向一辈子踏实务农、对“炒股”、“编程”这些概念既陌生又可能带有偏见的父母,解释自己这半年来在做什么?解释为什么放弃找“正经工作”,而整天对着电脑鼓捣这些“虚”的东西?
他甚至能猜到父亲可能会说的话:“晨仔,搞这些电脑东西,能当饭吃吗?不稳当啊”。
手机震动起来,是妻子苏婉发来的微信:“我接到爸妈了,刚上地铁。大概四十分钟后到。你……准备一下”。
林晨回复了一个“好”字。他关掉复杂的开发界面,清理了一下书桌。目光最后落在监控服务的日志输出上,最新一行显示:“[2026-01-14 16:05:00] 定期检查完成。市场状态:正常。所有策略健康度:良好”。
系统一切正常。但他的人生,即将迎来一场或许比任何技术面试都更艰难的“沟通压力测试”。他需要向最亲近的人,证明自己选择的这条路,不是逃避,而是真正的涅盘重生。
而证明的底气,除了他日益增长的技术能力,或许最终还是要落在这套悄然运行、正在为他积累资本的系统身上。只是,它现在足够强健了吗?能经受住未来真正的市场风浪吗?林晨心中第一次对这套倾注了心血的作品,产生了一丝不确定的审视。
第82章 错过乐乐表演
下午三点四十分,林晨的手机在书房桌面上震动了一下。
他正全神贯注地盯着三块屏幕。中间的主屏是pycharm编辑器,上面是他正在重构的“多因子风险平价模型”代码,左侧屏幕显示着实时回测曲线,右侧则滚动着今天的A股行情和几个期货主力合约的跳动。手机震动时,他的目光甚至没有从屏幕上移开半秒,手指在键盘上敲击如飞,试图解决一个困扰了他两小时的协方差矩阵数值稳定性问题。
父母昨天下午到的。出乎意料的是,沟通比预想中顺利。或许是看到儿子眼里那种久违的专注光芒,或许是林晨展示的那个有着复杂图表和实时跳动着微小盈利数字的交易监控界面,让一辈子和土地打交道的父母隐约感觉到“儿子在干一件正经的、有门槛的事”。父亲只是抽着烟,问了句:“这个……稳当不”?母亲则更关心他每天坐在电脑前十几个小时,身体吃不吃得消。房贷的压力他们懂,没再多追问,只是叮嘱注意身体。林晨松了口气,但随之而来的是更强烈的紧迫感——他必须尽快让系统稳定盈利,用实实在在的数字证明这条路走得通。
手机又震动了一下,这次是连续两声。
林晨皱了皱眉,瞥了一眼。是企业微信的告警推送,他自建的监控系统发来的:“策略‘ctA_趋势_15min’于14:55触发健康度警告:近3小时信号连续度低于阈值(0.8),疑似市场状态切换或策略失效,建议人工复核”。
他立刻切换到监控面板,调出该策略的详细日志和近期信号图。果然,下午两点后,螺纹钢主力合约进入窄幅震荡,策略发出的开仓信号在盈亏边缘反复摩擦,连续几次小额亏损。“市场噪音增大,趋势策略暂时不适应”。他喃喃自语,手指快速操作,将该策略权重临时调低,同时启动备用的一套“均值回归”子策略。一系列操作行云流水,大脑高速运转,评估着调整对整体投资组合的影响。
处理完警报,他看了眼电脑右下角的时间:15:52。好像忘了点什么?念头一闪而过,但立刻被另一个技术问题覆盖——他刚刚调用的均值回归策略,其参数是基于过去三个月数据训练的,是否需要针对当前这种突然的震荡市进行快速在线微调?他点开另一个Jupyter Notebook,开始编写几行代码,测试一个简单的在线学习模块。
时间悄然流逝。
鹏城南山区,阳光幼儿园大礼堂。
舞台上,一群穿着小蜜蜂服装的五岁孩子正在表演舞蹈《勤劳的小蜜蜂》。音乐欢快,孩子们动作稚嫩却认真。苏婉坐在家长区靠前的位置,举着手机,镜头紧紧跟着其中一只“小蜜蜂”——她的儿子乐乐。
乐乐扮演的是领舞的小蜜蜂,头上戴着颤巍巍的触角,脸上画着红扑扑的腮红。他跳得很卖力,眼睛时不时瞟向台下,似乎在寻找什么。当音乐进行到一段独舞时,乐乐按照排练好的,转向舞台右侧,做了一个展示的动作,目光也顺势扫向那边家长席的角落——那是之前说好爸爸会坐的位置。
位置上坐着一位陌生的老爷爷。
乐乐的小脸明显愣了一下,动作微微一顿,但很快又跟上节奏,只是脸上的笑容收敛了些,眼神里多了点困惑和失落。
苏婉捕捉到了儿子这一瞬间的变化,心里轻轻一叹。她早上出门前还特意提醒过林晨:“下午三点半,乐乐表演,别忘了”。林晨当时头也不抬地“嗯”了一声。中午她打电话提醒,电话里传来键盘声和林晨心不在焉的回应:“知道了,记得,我定闹钟”。
显然,闹钟要么没定,要么响了也被无视了。
表演结束,孩子们谢幕。乐乐下台后,飞快地跑到妈妈身边,第一句话就是:“妈妈,爸爸呢”?
苏婉蹲下来,整理了一下他汗湿的头发和歪掉的触角,柔声道:“爸爸……临时有很重要的工作要处理,抽不开身。他让妈妈给乐乐拍了好多漂亮的视频,回家一起看,好不好”?
乐乐的小嘴瘪了瘪,大眼睛里瞬间蒙上一层水汽,但他很懂事,没有哭闹,只是低下头,小声说:“可是……我跟小胖说,我爸爸会来的……他爸爸都来了”。他指了指不远处一个被父亲扛在肩膀上的胖小子。
苏婉心里一酸,把儿子搂进怀里:“爸爸真的很想来,但工作实在太急了。你看,这是爸爸让我带给乐乐的花”。她变魔术般从包里拿出一小束提前准备好的卡通花束(其实是昨天顺便买的),塞到乐乐手里。
乐乐拿着花,情绪稍微好了点,但那份失望,明明白白写在依然蔫蔫的小脸上。
晚上七点半,林晨被胃部的饥饿感唤醒,才从那种沉浸式的“心流”状态中脱离出来。他成功为均值回归策略嵌入了一个轻量级的在线学习逻辑,初步回测显示,在震荡市中的适应速度提升了约30%。成就感驱散了疲惫,他伸了个懒腰,听见客厅传来电视声和父母低声聊天的声音。
走出书房,母亲立刻从厨房端出一直温着的饭菜:“忙完啦?快吃饭。婉婉带乐乐去楼下玩一会儿,刚回来,乐乐好像有点不高兴”。
林晨心里“咯噔”一下。记忆猛然回笼——下午的表演!他立刻看向客厅,苏婉正在给乐乐换拖鞋,乐乐低着头,不像平时那样一回家就叽叽喳喳。
“乐乐……”林晨走过去,有些局促。
乐乐换好鞋,抬起头看了爸爸一眼,那双和林晨很像的眼睛里,没有了往常看到爸爸时的雀跃光芒,只有平静,甚至有点疏离。他没说话,转身跑去客厅找爷爷奶奶看动画片了。
苏婉直起身,看了林晨一眼,眼神平静,但林晨能读出里面的责备和一丝无奈。“吃饭吧”。她没多说什么,去厨房帮他盛汤。
这顿饭,林晨吃得味同嚼蜡。父母的闲聊,电视的声音,都进不了他的耳朵。他心里堵得难受,那是一种混合了愧疚、自责和懊恼的情绪。他并非不爱儿子,恰恰相反,正是为了给家人更好的生活,他才如此拼命。可当“拼命”具体化为一行行代码、一个个策略、一分一秒盯盘的时间时,却实实在在地侵蚀了本应陪伴家人的时刻。
饭后,乐乐洗完澡,苏婉陪他在床上读绘本。林晨犹豫了一下,还是推开儿童房的门。
暖黄的灯光下,乐乐靠在妈妈怀里,听着《猜猜我有多爱你》的故事,但眼睛时不时瞟向门口。
“乐乐”,林晨走过去,坐在床沿,声音有些干涩,“爸爸……今天下午对不起。爸爸工作太入神,忘记了时间,错过了乐乐的表演。爸爸错了”。
乐乐看着爸爸,小声问:“爸爸的工作,比看乐乐表演还重要吗”?
这个问题像一根细针,轻轻扎在林晨心上。他无法简单地回答“是”或“不是”。他想了想,尽量用五岁孩子能懂的话说:“爸爸的工作,就像在造一个很厉害的机器人帮手。这个帮手如果造好了,将来能帮爸爸赚更多钱,让乐乐和妈妈、爷爷奶奶都过得更舒服,能买乐乐喜欢的乐高,带乐乐去更多好玩的地方。但是今天,爸爸造这个帮手太专心了,忘了它其实是为了让家里人开心才造的。本末倒置了……是爸爸不对”。
“本末倒置”乐乐听不懂,但他听懂了爸爸在做一件“为了家里”的厉害事情,也听懂了爸爸承认不对。孩子的情绪来得快,去得也快。他眨了眨眼,从被子里伸出小手:“那……爸爸造的那个帮手,厉害吗”?
“还在努力让它变得更厉害”。林晨握住儿子的小手。
“那下次,爸爸能来看我表演吗?我们下个月还有六一活动”。乐乐充满期待地问。
“一定”!林晨郑重地点头,“爸爸一定提前记住,设定十个闹钟!而且,这个周末,爸爸不工作了,带乐乐和妈妈去欢乐海岸玩,好不好”?
“真的”?乐乐的眼睛瞬间亮了。
“真的。拉钩”。
看着儿子重新绽放的笑脸,和林晨拉钩盖章,林晨心里的愧疚感稍减,但反思却更深了。回到书房,他没有再打开代码。他靠在椅子上,望着窗外鹏城科技园方向璀璨的灯火。
追求技术突破和财务自由没错,但若因此错过了儿子成长的珍贵瞬间,让妻子独自承担家庭琐碎,那即便未来成功了,这份成功是否也带着无法弥补的缺憾?他开发的系统能监控市场异常、策略失效,却没能监控自己生活中最重要的“情感健康度”。
苏婉轻轻推门进来,端着一杯温水放在他桌上。“没怪你”。她轻声说,“知道你在关键期。只是……乐乐还小,他需要爸爸的在场,不仅仅是物质上的。你也别太绷着自己,弦绷得太紧会断”。
林晨握住她的手:“谢谢。周末我们去欢乐海岸,我保证手机关机”。
苏婉笑了笑:“那倒不用,万一你的‘机器人帮手’真报警了呢?只是,别忘了,你开发它,是为了生活更好,而不是让它反过来绑架你的全部生活”。
妻子的话,点醒了林晨。平衡。他需要找到那个平衡点。技术可以追求极致,但生活不能只剩下技术。他看着电脑屏幕上依然闪烁着的监控界面和行情数据,默默打开日历,将六一儿童节那天,用鲜红的颜色标记了出来,并设置了每周重复的“家庭时间”提醒。
然而,当他目光重新扫过右侧屏幕时,眉头又微微蹙起。欧元兑美元的汇率在晚间出现了一波异常的快速波动,触发了系统里一个尚未完全成熟的“跨境套利嗅探”模块的提示。新的挑战和优化需求,永远在下一秒等待。
家庭的温暖刚刚抚平一些焦虑,技术的海洋又露出了新的未知水域。他深吸一口气,知道自己无法完全停下,但至少,他学会了要时不时抬头看看岸上的灯火。
第83章 家庭的理解
周六的鹏城,天空难得地湛蓝。
林晨早早起床,把乐乐昨晚就挑好的小背包检查了一遍:水壶、纸巾、备用的小t恤,还有儿子非要带上的那本《揭秘海洋动物》。他特意穿了那件乐乐去年生日送他的“最佳爸爸”文化衫——虽然图案已经有些褪色。
“爸爸,你真的不用看电脑吗”?乐乐揉着眼睛从卧室出来,看到林晨已经穿戴整齐站在客厅,小脸上露出惊喜。
“今天不看”。林晨蹲下来,把儿子抱起来转了个圈,“今天只陪我的乐乐”。
苏婉从厨房探出头,嘴角带着笑意:“太阳从西边出来了?某人居然七点就主动关掉了所有电子设备”。
“说到做到”。林晨把乐乐放到沙发上,开始给他穿袜子,“上周答应的事,这周必须兑现”。
这是再次失业以来,林晨第一次真正意义上的“家庭日”。过去几个月,他的生活被切割成碎片:上午学python和tensorFlow,下午研究量化策略,晚上回测数据,凌晨还要盯一盯外汇市场的夜盘。时间像被榨干的柠檬,挤不出一滴给家庭的闲暇。
去欢乐海岸的车上,乐乐像只兴奋的小麻雀,扒着车窗看外面飞驰而过的城市景观。林晨握着儿子的小手,心里涌起一阵复杂的情绪——他有多久没有这样静静地观察这座城市了?那些熟悉的写字楼、高架桥、购物中心,在失业后的焦虑滤镜下,都变成了冰冷的生存符号。
“爸爸,你看那个楼好像火箭”!乐乐指着车公庙附近的一栋建筑。
林晨顺着儿子手指的方向看去,那栋大厦的流线型设计确实有些未来感。他突然想起自己正在写的那个量化系统里,有一个模块就叫“火箭助推器”,是用来识别行情爆发点的算法。
“乐乐喜欢火箭吗”?
“喜欢!我们幼儿园老师说,以后人类要坐火箭去火星”。乐乐转过头,眼睛亮晶晶的,“爸爸,你会造火箭吗”?
林晨笑了:“爸爸现在只会写代码。不过……”他顿了顿,“也许有一天,爸爸写的代码能帮造火箭的人算得更准一些”。
这话说出口,他自己都愣了一下。什么时候开始,他连和儿子聊天都绕不开技术了?
欢乐海岸的人比想象中多。虽然是十月,鹏城的阳光依然有些灼人。苏婉细心地给乐乐涂防晒霜,林晨则去排队买海洋馆的门票。排队时,他下意识地摸出手机想看看行情,手指已经划开了屏幕——然后他停住了。
锁屏壁纸是乐乐三岁时在老家河边拍的照片,笑得见牙不见眼。林晨深吸一口气,关掉了手机。
“爸爸,海豚”!进入海洋馆后,乐乐挣脱他的手,扑到巨大的玻璃幕墙前。
幽蓝的水光里,几只海豚正优雅地游弋。林晨站在儿子身后,看着那张紧贴玻璃的小脸,心里某个坚硬的地方突然松动了。他想起上周三晚上,乐乐小心翼翼问他“爸爸是不是不喜欢我了”的样子。
“乐乐”。他在儿子身边蹲下。
“嗯”?乐乐的眼睛还盯着海豚。
“爸爸要跟你说声对不起”。林晨的声音很轻,但很认真,“上周你的表演,爸爸没去,不是因为你不够重要,而是……”
他停顿了一下,寻找着五岁孩子能听懂的表达。
“而是爸爸在做一件很重要的事。就像乐乐的表演需要排练很多次一样,爸爸也在‘排练’一个很厉害的程序。这个程序如果做好了,就能帮我们赚到钱,这样乐乐以后想学什么、想去哪里玩,爸爸都能支持你”。
乐乐转过头,看了他几秒钟,然后伸出小手摸了摸林晨的脸:“爸爸是要赚钱养我,对吗”?
这句话简单得像白开水,却让林晨的鼻子猛地一酸。
“对”。他握住儿子的小手,“爸爸要赚钱养乐乐,养妈妈,养我们这个家”。
“那爸爸辛苦啦”。乐乐凑过来,在他脸上亲了一下,湿漉漉的,“下次表演爸爸来不了也没关系,妈妈给我录像了,我可以放给爸爸看”。
林晨把儿子搂进怀里,久久没有说话。玻璃幕墙另一侧,海豚跃出水面,划出一道银亮的弧线。
中午在景区餐厅吃饭时,乐乐兴奋地讲述着看到的各种海洋生物。林晨一边给儿子剥虾,一边听苏婉聊学校里的趣事——她带的班级有个孩子写了篇作文叫《我的码农爸爸》,把熬夜写代码比喻成“在键盘上种星星”。
“那孩子说,他爸爸种的星星越多,家里就能买越大的房子”。苏婉笑着说,眼神却若有深意地看了林晨一眼。
林晨知道她在说什么。这三个月,他何尝不是在“种星星”?只是种的太投入,忘了抬头看看身边的真实星空。
下午在深圳湾公园散步时,乐乐在前面追鸽子,林晨和苏婉并肩走在后面。海风带着咸湿的气息吹过来,远处是连接深港的跨海大桥。
“系统怎么样了”?苏婉问。
“实盘第三周,累计收益8.7%”。林晨说,“不过波动很大,昨天欧元那波行情,差点触发止损”。
“所以你才那么紧张”。
“嗯”。林晨承认,“外汇市场24小时运转,有时候半夜行情来了,确实忍不住要起来看看”。
苏婉沉默了一会儿,看着远处奔跑的儿子:“林晨,我不是不支持你。只是……你记不记得乐乐刚出生那会儿,你说过什么”?
林晨回想。那是五年前,他还在跨境电商公司,加班到凌晨回家,看着婴儿床里熟睡的儿子,对苏婉说:“我要努力,让这孩子以后不用像他爸这么拼”。
“我记得”。
“那你现在比那时候更拼”。苏婉轻声说,“我不是说拼不对,但你要想清楚,你拼的最终目的是什么?如果是为了让家人过得更好,那现在就已经本末倒置了——你人在家里,心却不在”。
这话像一根针,扎进了林晨心里最柔软的地方。
傍晚回家路上,乐乐在车上睡着了,小脑袋枕着林晨的腿。车里很安静,只有导航偶尔提示路况的声音。
林晨看着窗外华灯初上的鹏城,这座城市永远在奔跑,像一台永不停机的服务器。他曾是这机器里的一颗螺丝钉,掉了,自己滚到一边试图升级成齿轮。但升级的过程太专注,差点忘了自己为什么要升级。
到家后,他把乐乐轻轻抱到床上,盖好被子。回到书房,电脑屏幕还停留在昨晚的行情分析界面。那个由他一手构建的量化世界,此刻显得既熟悉又陌生。
他打开代码编辑器,看着自己写的数千行python代码。这些冰冷的符号和逻辑,承载着他全部的职业希望和财务野心。但今天乐乐那句话回荡在耳边:“爸爸是要赚钱养我”。
林晨新建了一个文档,敲下标题:《家庭-工作平衡方案》。
第一条:每天19:00-21:00为绝对家庭时间,除非极端行情,不查看任何交易数据。
第二条:每周六为家庭日,除非系统出现重大故障,不进行技术开发。
第三条:建立自动化监控报警机制,减少人工盯盘时间。
第四条……
他一条条写着,不是写给别人看的承诺,而是写给自己执行的操作手册。写到最后,他加了一条备注:“所有技术努力的最终目的,是让家人有选择生活的自由,而非被生活选择。牢记”。
保存文档后,林晨打开了量化系统的监控界面。屏幕上,欧元兑美元的汇率曲线正在一个狭窄区间内震荡。系统给出的建议是“观望”——这意味着至少未来几小时,不需要他干预。
他关掉显示器,走出书房。客厅里,苏婉正在整理今天拍的照片,屏幕上是乐乐和海豚的合影,笑得很灿烂。
“下周”,林晨在她身边坐下,“我想开始投简历了”。
苏婉转过头:“系统稳定了”?
“还不够稳定,但已经有初步验证”。林晨说,“而且我意识到,闭门造车不是长久之计。我需要一个真正的AI开发环境,需要团队,需要更前沿的技术视野”。
更重要的是——他在心里补充——他需要一份稳定的收入,来对冲量化交易的风险。不能把所有压力都放在那个尚未成熟的自研系统上。
苏婉握住他的手:“想好投哪些公司了”?
“张伟上次说,t厂AI部门最近在扩招”。林晨说,“还有几家做金融科技的公司,也在招量化策略工程师”。
“那就试试”。苏婉的声音很平静,“最坏也就是继续现在这样,不是吗”?
林晨点点头。窗外的鹏城夜景璀璨如星河,而在这间小小的客厅里,一种久违的踏实感正在缓慢回归。
睡前,他又去看了看乐乐。儿子睡得正香,怀里抱着那只旧海豚玩偶。林晨轻轻摸了摸他的头发,想起白天在海洋馆的那个拥抱。
也许真正的涅盘重生,不只是技术的突破或财富的积累,而是在跌落谷底时,依然能看清什么是最重要的。代码可以优化,系统可以迭代,但有些东西一旦错过,就再也补不回来。
回到书房,他最后检查了一次量化系统的运行状态。控制台里跳出一条新日志:“检测到黄金期货市场异常波动模式,相似历史模式胜率72%,建议模块优化”。
又是一个机会。但这次,林晨只是记下了这条提示,设置了明天上午九点的提醒,然后干净利落地关机。
明天的事,明天再说。今夜,他只想做个安静的父亲和丈夫,在这座不停奔跑的城市里,守住一方小小的、温暖的时空。
第84章 收益突破
鹏城午后的阳光透过百叶窗,在书桌上切割出明暗相间的条纹。林晨盯着屏幕上跳动的黄金期货行情图,心跳比平时快了几分。
昨晚系统提示的“异常波动模式”正在上演。
伦敦金现货报价在每盎司 1820 美元附近已经横盘整理了近一周,但十五分钟前,一根突兀的阳线拔地而起,成交量瞬间放大。他的系统在 1821.5 美元的位置自动发出了“试探性做多”信号,并动用了账户里约 5% 的保证金——对于 7 万块的本金来说,大约占用 3500 元,对应 1 手合约(在当前杠杆与保证金比例下)。
林晨没有干预。这是他给自己定下的规矩:在系统经过充分回测、且当前市场环境符合模型预设条件时,除非出现极端情况或明显的逻辑错误,否则信任算法的判断。
他的手心有些潮湿。这不再是模拟盘,也不是历史数据回测。这是真金白银,是他失业后家庭储备金里划出来的、带着沉甸甸压力的七万块钱中的一部分。每一分波动,都直接牵扯着神经。
阳线之后是短暂的停顿,价格回踩到 1822 美元。林晨的呼吸微微屏住。屏幕上,代表持仓盈亏的数字变成了负的十几美元。不多,但那种真实的“亏损感”瞬间袭来。
阳线之后是短暂的停顿,价格回踩到1822美元。林晨的呼吸微微屏住。屏幕上,代表持仓盈亏的数字变成了负的十几美元。不多,但那种真实的“亏损感”瞬间袭来。
“冷静”。他低声对自己说,目光移向系统监控面板。风控模块显示正常,当前回撤远低于预设的单个头寸最大止损线(2%)。策略逻辑说明窗口里,系统给出的开仓理由清晰罗列:“1. 四小时图mAcd底背离确认;2. 一小时图突破下降通道上轨;3. 异常成交量伴随价格突破,疑似主力试盘或消息驱动初期;4. 关联美元指数出现疲软迹象。综合概率评估:短期向上波动概率68.5%”。
理由充分,逻辑自洽。林晨强迫自己靠向椅背,拿起旁边的保温杯喝了口水。温热的茶水划过喉咙,稍稍安抚了紧绷的情绪。他告诉自己,这就是量化交易必须经历的心理关——对抗人性中天然的恐惧与贪婪,让概率和纪律说话。
几分钟后,价格再次启动。
这一次不再是孤零零的阳线,而是连续三根五分钟级别的小阳线,稳步将价格推升至1825美元上方。持仓盈亏由绿转红,开始正增长:+50美元,+120美元,+200美元……
林晨没有感到兴奋,反而更加专注。他迅速调出更细粒度的一分钟图,观察上涨的微观结构。是流畅的买盘推动,还是跳跃式的脉冲?这关系到上涨的持续力。同时,他监控着外汇市场上美元指数的实时变动,以及美股期货的盘前表现。黄金受多重因素影响,任何关联市场的风吹草动都可能引起连锁反应。
价格在1826美元附近遭遇阻力,来回拉锯。系统的盈利一度回吐到只剩80美元。林晨的手指在键盘上方悬停了一瞬,但最终还是放下了。模型没有给出平仓或加仓信号,意味着当前波动仍在预期范围内。
这种等待尤为煎熬。窗外传来小区里孩子们放学后的嬉闹声,远处隐约有地铁驶过的轰鸣。鹏城的日常在继续,而他独自坐在这个房间里,与全球市场的电子脉冲进行着无声的博弈。孤独感再次泛起,但这一次,里面掺杂了一丝奇异的笃定——他并非全然盲目,他有自己打造的“武器”。
突然,一则快讯弹窗从屏幕角落闪过:“【突发】美联储某理事发言被市场解读为鸽派,强调‘需耐心观察通胀数据’,美元短线急挫”。
几乎在同一秒,黄金价格像是被注入了一针强心剂,猛地跃过1826美元的阻力,直冲1828美元!
林晨持仓的盈利数字开始快速跳动:+350,+480,+600……
系统依然安静,没有发出平仓指令。根据策略,这波由消息驱动的急涨,需要观察其能否站稳并形成新的支撑平台。盲目追涨或急于止盈都可能错失主升段。
价格在1828-1829美元区间震荡了约二十分钟,成交量保持活跃。美元指数则继续小幅下滑。林晨注意到,系统内部的一个子模型开始计算“消息消化系数”和“新均衡价格区间”。数字不断刷新,最终,在价格第二次回踩1828.5美元并获得支撑时,系统评估“短期驱动逻辑未变,技术支撑有效”,继续持有。
时间指向下午三点。国内期货市场临近收盘,但外盘黄金交易依然活跃。盈利已经突破了800美元。按汇率折算,已经超过5000人民币。
10%的收益线,近在咫尺。
林晨感到喉咙有些发干。他再次拿起水杯,发现水已经凉了。他起身去客厅接水,路过乐乐紧闭的房门(孩子还在幼儿园),看到门上贴着的卡通画,脚步顿了顿。画上一家三口手拉手,太阳笑得眯起眼。那是乐乐前几天画的。
就是为这个。林晨握了握拳,走回书房。
接下来的一个小时,行情进入了缓慢的攀升通道。没有再次急拉,而是每一步都踩得相对扎实,高点逐步抬高。当价格触及1832美元时,系统的持仓盈利稳稳越过了1000美元大关。
初始化资金 7 万元,当前账户总资产已突破 77,000 元,整体收益率超过 10%。
屏幕上的数字清晰而冷静。林晨静静地看着,最初几秒,大脑似乎有些空白。没有预想中的狂喜呐喊,也没有如释重负的虚脱。一种更深沉、更复杂的感觉慢慢从心底涌上来,像温热的泉水,浸润了这几个月来干涸焦虑的每一个角落。
是验证。是对自己这几个月没日没夜学习、编码、调试、回测的验证。是对那条看似冒险、不被多数人理解的转型之路的初步验证。代码没有骗人,逻辑没有骗人。他用python写下的算法,用tensorFlow构建的模型,用无数历史数据训练出来的模式识别能力,在这个真实的战场上,拿到了第一块确凿的勋章。
他靠在椅子上,长长地、缓缓地吐出一口气。肩膀几个月来第一次感觉到了些许放松,不是全部,但那一根紧绷到极致的弦,终于松了第一扣。
他这才注意到,自己的嘴角不知何时已经扬起。不是大笑,而是一种踏实、确信的微笑。
他没有立刻平仓。系统依旧显示持有信号,虽然强度比高峰时有所减弱。他检查了所有风控参数,确认安全边际充足,然后决定让利润再跑一会儿。按照策略,系统会在上涨动能衰竭到一定阈值,或出现明确反转信号时自动离场。
关掉交易软件的主界面,他打开了记录文档。开始详细记录这次交易的全过程:触发信号的原因、持仓期间的关键价格节点和对应市场事件、自己的心理状态变化、系统表现与预期的对比。这是他的交易日志,也是系统迭代的宝贵素材。
记录到一半,手机震了一下。是苏婉发来的微信:“晚上想吃什么?乐乐说想吃你上次做的番茄牛腩了。[笑脸]”
林晨看着这条消息,又抬头看了看屏幕上那个代表盈利的、令人安心的数字,笑容加深。他快速回复:“好,我来做。顺便,晚上加个菜,庆祝一下”。
“庆祝什么”?苏婉很快回问。
“阶段性小胜利”。林晨打字,“回头细说”。
他没有透露具体数字,不是隐瞒,而是想在一个更放松的氛围下,一家人慢慢分享这份来之不易的慰藉。这不仅仅是五千块钱,这是信心的基石,是家庭财务缓冲垫的增厚,是前路有光的证明。
傍晚,厨房里飘出番茄牛腩浓郁的酸甜香气。林晨系着围裙,熟练地翻炒着锅里的青菜。乐乐在客厅摆弄他的积木,苏婉在旁边备课,偶尔抬头看看丈夫在厨房忙碌的背影,眼神温柔。
吃饭时,林晨简单说了今天投资账户有一些盈利,证明了系统思路大体可行。“不多,但是个好开头”。他给乐乐夹了块牛腩,语气平静而坚定。
苏婉眼睛亮了一下,给他盛了碗汤:“辛苦了。我就知道你可以的”。没有过多追问细节,这是一种默契的信任。
乐乐似懂非懂,但能感受到爸爸语气里的高兴,也咧开嘴笑:“爸爸好厉害”!
看着妻儿的笑脸,林晨觉得这五千多块钱带来的价值,远超出数字本身。它驱散了笼罩在家中的一部分阴霾,带来了久违的、实实在在的希望。
晚饭后,哄睡乐乐,林晨回到电脑前。黄金价格最终在1835美元附近,系统触发了“上涨动量衰减”信号,自动平仓离场。最终结算,这笔交易净盈利+1260美元,折合人民币约8900元。单笔收益率超过本金的17.8%,账户总收益达到11.78%。
他没有沉浸在喜悦中,而是立刻开始了复盘分析。为什么系统能在1821美元就捕捉到信号?异常波动模式识别模块起了关键作用。平仓点位是否最优?或许可以引入更动态的止盈算法。整个过程,系统自动执行,他的干预为零——这很好,证明了系统的自动化可靠性。
深夜,鹏城的灯火在窗外连成一片璀璨的光河。林晨保存好复盘文档,新建了一个文件夹,命名为“实盘记录_里程碑01_10%突破”。然后,他打开了招聘网站和简历文件。
收益突破是强心剂,但并非终点。他知道这条路依然漫长,市场的复杂性远超单一模型,未来的回撤和考验必然存在。这份盈利,更像是一张“准入许可证”,证明了他具备用技术从市场获取回报的潜力。
而更稳定、更具成长性的道路,依然需要一份坚实的职场立足点。技术需要更大的平台锤炼,视野需要更顶尖的圈子拓展,家庭也需要更持续可靠的现金流保障。
他点开了t厂AI部门的职位描述,又浏览了几家头部金融科技公司量化策略工程师的要求。然后,他开始根据这两个月来自学AI和开发量化系统的实战经历,逐一修改、充实简历上的项目经验描述。
指尖敲击键盘的声音,在寂静的夜里显得格外清晰。这一次,声音里不再只有焦虑,多了几分笃定和方向感。
窗外的光河静静流淌,如同金融市场里永不停歇的数据流。而在这间小小的书房里,一个刚刚验证了自己技术刀锋的男人,正在为他下一阶段的征程,默默打磨着另一块敲门砖。
他知道,这只是开始。
第85章 学习强化学习
窗外的深圳湾在晨光中泛着细碎的金光,林晨却无暇欣赏。书房的窗帘拉上了一半,三块屏幕亮着,映着他专注的脸。距离上次黄金期货盈利已经过去一周,账户里的数字又往上跳了跳,稳定在七万八左右。短暂的喜悦过后,一种更深层的渴望在他心里滋长——现有的系统,本质上还是基于规则和传统机器学习模型(预测价格走势)的“半自动”系统。它聪明,但还不够“智慧”。
“如果能训练出一个真正懂得在复杂金融市场里‘生存’和‘狩猎’的智能体呢”?这个念头一旦冒出,就再也压不下去。
他点开收藏夹里标记已久的几篇论文和开源项目。《playing Atari with deep Reinforcement Learning》、《deep Reinforcement Learning for trading》。强化学习(Reinforcement Learning, RL),这个让AI在游戏里从零开始击败人类冠军的技术,其核心思想深深吸引了他:智能体(Agent)通过与环境(Environment)交互,根据行动(Action)获得的奖励(Reward)来学习最优策略(policy)。这不正是一个交易员在市场中摸索、试错、最终形成自己交易体系的抽象过程吗?
“把市场看作环境,把买卖操作看作行动,把盈亏看作奖励……”林晨喃喃自语,手指在键盘上无意识地敲击着。这个类比让他兴奋。传统的量化策略,往往是人类设计好规则(比如“金叉买,死叉卖”),或者用监督学习预测未来价格然后制定策略。而强化学习,是让AI自己从海量历史数据中探索,找出能最大化长期累积收益的“行为模式”。它可能发现人类根本想不到的微妙特征和时机。
但兴奋很快被现实的复杂性冲淡。金融市场的“环境”极其复杂、非稳态、充满噪声,奖励信号(盈亏)稀疏且延迟,还存在高昂的“试错成本”(真金白银的亏损)。这比Atari游戏里控制一个小方块吃豆子难了无数个数量级。
“先从概念和经典算法啃起”。林晨定了定神,打开了Notion笔记,新建了一个页面,标题写上“强化学习入坑笔记(量化交易视角)”。
他给自己规划了三天的基础理论学习。第一天,搞懂马尔可夫决策过程(mdp)、价值函数(Value Function)、策略梯度(policy Gradient)这些核心概念。厚厚的pRmL(pattern Recognition and machine Learning)书和相关博客文章成了他主要的精神食粮。三十五岁的大脑重新像海绵一样吸收这些略显抽象的数理知识,有时一个公式要推导好几遍,在草稿纸上写满才豁然开朗。
“状态(State)、动作(Action)、奖励(Reward)、策略(policy)……”他像念经一样重复着这些术语,试图将它们烙印在思维里。理解到一定程度后,他开始尝试用python写一些最简单的模拟环境,比如一个简化的“股票赌大小”游戏,来验证最基本的q-learning算法。
第二天和第三天,他集中火力攻克两个当下最主流的深度强化学习算法:dqN(deep q-Network)和ppo(proximal policy optimization)。
dqN算是深度强化学习的开山之作之一,用深度神经网络来近似q值函数(评估在某个状态下采取某个动作的长期价值)。林晨仔细研究了其核心技巧:经验回放(Experience Replay)和目标网络(target Network)。经验回放就是把智能体与环境交互的经历(状态、动作、奖励、新状态)存储起来,然后随机抽样进行训练,打破数据间的相关性,提高稳定性。目标网络则是单独用一个更新较慢的网络来提供q值目标,缓解训练震荡。
“这思路妙啊”,林晨看着代码实现,忍不住赞叹,“就像人不能只盯着最近一笔交易的得失,要时不时回顾总结过去的各种交易情况(经验回放)。也不能因为今天赚了点就立刻飘了,得有个相对稳定的自我评价基准(目标网络)”。
而ppo则属于策略梯度家族,直接优化策略函数本身。它通过一个“裁剪”技巧,限制每次策略更新的幅度,确保训练更加稳定。林晨发现,ppo在连续动作空间(比如决定买卖多少比例仓位)或者更复杂的策略建模上往往比dqN更有优势。
“dqN更像是在学习‘在什么情况下做什么动作最好’的查表,而ppo是在学习一套‘行为准则’本身”。他尝试用自己理解的语言总结。
理论学习告一段落,林晨摩拳擦掌,准备动手将RL融入他的投资系统。这才是真正的挑战。
他首先需要定义“环境”。他选取了A股市场某只流动性较好的EtF(交易所交易基金)的分钟级历史数据,时间跨度三年。环境的状态(State)设计为过去N分钟的价格序列、成交量、以及一些技术指标(如RSI、mAcd)的向量。动作(Action)简化为三个:买入(全仓)、卖出(清仓)、持有。奖励(Reward)则定义为每次动作转换后持仓市值的变化率(考虑手续费)。
接着是构建智能体。他决定先用相对简单的dqN试试水。在pytorch框架下,他搭建了一个包含几层全连接网络的q网络,输入是状态向量,输出是三个动作对应的q值。
训练开始。他让智能体在历史数据上“回测”,一开始完全是随机探索,买买卖卖。看着模拟账户曲线像过山车一样上蹿下跳,林晨哭笑不得。训练过程极其缓慢,而且非常不稳定。有时智能体似乎学到了一点东西,知道在下跌时卖出,但很快又会陷入疯狂交易的怪圈,累积的手续费就把模拟利润吃光了。
“奖励稀疏……动作对收益的影响有延迟……市场状态非马尔可夫……”他一边盯着训练日志里几乎不增长的累计奖励,一边揪着头发总结问题。经典的“稀疏奖励”和“信用分配”难题活生生摆在眼前。一次成功的买入,可能得益于几天前某个卖出动作避免了更大亏损,但智能体很难建立起这种长程的因果关系。
他尝试调整奖励函数,加入一些基于技术面判断的“塑形奖励”(Shaping Reward),比如当价格突破均线时给予微小正奖励,试图引导学习。也尝试了更复杂的网络结构,加入LStm层来处理时间序列特征。
连续三天的调试,每天对着屏幕超过十四小时。苏婉晚上进来送水果,看到他眉头紧锁、屏幕上满是曲折的损失函数曲线和乱七八糟的交易信号图,轻轻叹了口气,把水果放下,默默带上门。
第四天深夜,林晨遇到了一个更棘手的问题:过拟合。智能体在训练数据(某一段历史时期)上表现得似乎不错,累计奖励开始缓慢上升,但换到另一段“未见过的”历史数据(验证集)上测试,表现就一塌糊涂,甚至不如随机策略。
“它在死记硬背特定历史行情下的‘正确答案’,而不是学会通用的交易原则”。林晨靠在椅背上,感到一阵深深的疲惫和挫败。窗外的灯火已稀疏,城市进入沉睡。屏幕的光映着他眼里的血丝。
他关掉训练程序,起身走到窗边,做了几个深蹲,活动了一下僵硬的脖颈。冷水洗了把脸,回来坐下,没有继续钻牛角尖调试参数,而是打开了另一个文档——他的求职简历。
简历上,“项目经验”一栏已经更新了“基于机器学习的多市场量化交易系统(个人项目)”,并简要描述了架构和实盘成绩。现在,他思考着是否要把“探索强化学习在量化交易中的应用”也作为一个研究方向写上去,哪怕目前还没出成果。
“写上去”,他对自己说,“至少表明我的技术视野和持续学习的态度。t厂或者那些金融科技公司,应该会看重这种前沿技术的探索能力”。
他简要地在简历末尾的“技能与兴趣”部分加了一句:“正在研究深度强化学习(dqN/ppo)在金融时序决策中的应用”。
做完这件事,他重新打开代码。这一次,他没有急于运行,而是从头开始审视整个训练框架。环境设计是否合理?状态特征是否真正具有预测性?动作空间是否太简单或太复杂?奖励函数是否真正引导智能体关注长期收益?
“也许,我太心急了,总想让它立刻学会‘赚钱’”。林晨反思,“或许第一步,应该先让它学会‘不亏钱’,或者学会在模拟环境中达到某个基准策略(比如简单均线策略)的水平”。
他决定换一个思路,不再直接用历史价格数据,而是先在一个自己完全可控的、简化但能体现某些市场特性的模拟环境中训练智能体。比如,模拟一个具有趋势和均值回复特性的随机价格序列。先验证算法本身的有效性,再逐步迁移到真实复杂环境。
思路一转,压力似乎小了一些。他新建了一个项目文件夹,命名为“RL_trading_Simulator”。当手指再次在键盘上敲下第一行代码时,那种熟悉的、面对未知挑战的专注感又回来了。挫败感仍在,但已被一种更坚定的探索欲覆盖。
他知道,这条路不容易,甚至可能短期内看不到实用成果。但内心深处有个声音告诉他,这个方向是对的。让AI学会在不确定性的海洋中自主导航,这不仅是提升投资系统的关键一跃,或许也是他个人技术生涯中必须征服的一座高山。
窗外,天色已微微发白。新的一天即将开始,而他的代码世界,才刚刚进入又一个攻坚的深夜。
第86章 过拟合的教训
窗外的鹏城科技园在晨光中苏醒,林晨却已经对着屏幕奋战了四个小时。
经过一周的调整,他将强化学习模型从复杂的历史数据环境,迁移到了一个高度简化的模拟环境中——只跟踪沪深300指数的五只核心成分股,交易动作简化为“买入”、“持有”、“卖出”三种,奖励函数也重新设计,更注重风险调整后的收益。
“这次应该稳了”。林晨揉了揉发酸的眼睛,看着训练曲线。
屏幕上,代表累计奖励的蓝色线条在最近500个训练周期(episode)中稳定上扬,最终在测试集上的年化收益率模拟达到了惊人的42.8%,最大回撤控制在15%以内。夏普比率超过2.5——这放在任何量化基金都是顶尖级别的表现。
回测结果完美得令人心跳加速。
林晨深吸一口气,打开了实盘交易账户。这个账户里是他从原本30万存款中,专门划出的5万元“实验资金”。前几次小规模测试有盈有亏,总资金还剩4万7千多。
“就用这个策略,实盘跑一周看看”。他点击了部署按钮。
系统开始运行。第一天,模型在开盘后半小时发出“买入”信号,选择了三只股票。林晨手动确认,下单。收盘时,三只股票平均涨幅1.2%,账户浮盈五百多块。
“开局不错”。林晨嘴角微扬。
第二天,模型没有操作,持仓股微跌0.5%,正常波动。
第三天,模型在上午十点发出“卖出”信号,平仓。这次操作小幅盈利3%。下午两点,模型再次发出“买入”信号,换了另外两只股票。
林晨跟着操作,心里那点疑虑渐渐消散。回测的完美表现似乎在实盘中得到初步验证,虽然样本还小,但信号看起来合理。
然而,转折发生在第四天。
大盘低开,模型持仓的两只股票跌幅超过3%。按照策略逻辑,应该在跌幅达到2.5%时触发止损。但模型没有动作。林晨盯着屏幕,犹豫着是否要手动干预——说好了让系统自主运行一周。
他忍住了。
收盘时,两只股票跌幅扩大到4.7%。当日账户回撤超过两千元。
第五天,市场震荡反弹,但模型持仓股反弹乏力。下午,模型终于发出“卖出”信号,但这次是割肉离场,单笔亏损接近5%。
林晨眉头紧锁。
更糟糕的是,卖出后不到半小时,那两只股票开始拉升,收盘时几乎收复前一日跌幅。
“这模型在干嘛”?林晨忍不住出声,仿佛在质问屏幕里的代码。
第六天,模型的操作开始变得“诡异”。它在一些毫无技术依据的时点频繁交易,上午买入,下午卖出,仿佛在追逐某种只有它能看到的幻影。佣金和印花税在侵蚀本金。
第七天,当林晨看到账户总资金已经跌到 6 万 1 千多元 时,他果断停止了实验。
一周时间,实盘亏损已经 超过 12%。而回测数据显示,在同一时间段、同一策略下,模拟收益本应是 正的 3.5%。
巨大的落差让林晨后背发凉。
他瘫坐在椅子上,盯着账户余额的数字,感觉那串数字在嘲笑他。窗外天色已暗,城中村的灯光次第亮起,远处写字楼的玻璃幕墙反射着霓虹。这个他奋斗了十年的城市,此刻显得格外冷漠。
“问题出在哪里”?他强迫自己冷静下来,开始复盘。
首先排除技术故障:数据源是实时的,交易接口正常,代码执行没有报错。
然后排除市场异常:这一周大盘整体波动率属于正常范围,没有黑天鹅事件。
那么,只剩下一个可能——模型本身有问题。
林晨重新打开训练日志和回测报告,一行行代码、一个个参数地检查。突然,他的目光停留在训练集和测试集的划分方式上。
为了追求“漂亮”的回测结果,他在划分数据时,采用了简单的“前80%数据训练,后20%数据测试”方法。但股票数据具有很强的时间序列特性,这种划分可能导致模型在测试集上“看到”了训练集末尾的趋势延续,从而给出虚假的优秀表现。
更深入检查后,他发现了一个致命问题:在特征工程阶段,他无意中使用了一些“未来数据”。
比如,他计算了股价的20日移动平均线作为特征,但在处理时,没有严格避免数据泄露——在某个时间点,模型“看到”了包含该点之后数据的移动平均值。这在回测中不会报错,因为所有数据都是已知的,但实盘中,你不可能知道未来的平均值。
“过拟合……”林晨喃喃吐出这个词。
在机器学习中,过拟合指模型过度适应训练数据中的噪声和特定模式,导致在未见数据上表现糟糕。他的模型,就像一个只会背诵历年考题答案的学生,一旦遇到新题型,就束手无策。
而金融市场的“新题型”每天都在出现。
林晨感到一阵懊恼,但更多的是警醒。他太急于求成了,被回测的漂亮数字迷惑,忽略了量化交易中最基本的陷阱。
他关掉交易软件,打开一个新的python脚本。这次,他要从头构建更严谨的验证流程:
严格避免任何形式的数据泄露,确保每个时间点的特征只使用该点之前的信息。
采用“滚动窗口”回测:用过去N年的数据训练,测试接下来一年的表现,然后窗口滚动,模拟模型在历史中逐步演进和实战的过程。
加入更多的正则化手段(dropout、L2正则化),防止模型过度复杂。
使用K折交叉验证的变体,评估策略的稳定性。
在模拟环境中加入交易成本、滑点、限价单成交概率等更真实的约束。
敲击键盘的声音在寂静的房间里回荡。林晨完全沉浸其中,忘记了时间,也暂时忘记了账户亏损带来的焦虑。他正在解剖自己的错误,这个过程痛苦但必要。
深夜十一点,苏婉轻轻推开书房门,端来一杯热牛奶:“还没休息”?
林晨抬起头,眼睛有些发红,但眼神清明:“遇到一个关键问题,在调整”。
“顺利吗”? “不顺利,但找到方向了”。林晨接过牛奶,温度正好,“我的模型之前犯了错,现在知道怎么改了”。
苏婉看着他专注的神情,没有多问,只是说:“别熬太晚”。
“嗯,很快就好”。
门重新关上。林晨喝了一口牛奶,温热的感觉从喉咙蔓延到胃里。他看向屏幕上正在重新运行的验证代码,这一次,回测曲线不再那么“完美”了——年化收益率降到28%,最大回撤增加到18%,夏普比率也回落到2.0左右。
但这些数字,反而让他感到踏实。
因为这是经过更严格检验后,更接近真实的数字。金融市场没有圣杯,任何声称能在回测中持续获得超高收益的策略,大概率都藏着过拟合的幽灵。
“代码可以骗人,但逻辑不会”。林晨想起自己常说的话,苦笑了一下,“但人会被漂亮的回测曲线骗”。
他保存了所有修改,将优化后的策略重新部署到模拟环境,设定运行24小时,观察其在更长历史周期中的表现。
关机前,他最后看了一眼实盘账户:-12.3%。
这个亏损,成了他AI量化之路上的第一个深刻烙印。但它买到了一个千金难换的教训:在金融市场,过去的表现永远不能保证未来的结果。真正的智能,不是完美拟合历史,而是在不确定性中寻找稳健的泛化能力。
而泛化能力的背后,是对数据、对市场、对人性深刻的敬畏。
第87章 加入验证集
凌晨两点,城中村的出租屋里只有键盘敲击声和机箱风扇的低鸣。
林晨盯着屏幕上那行刺眼的亏损数据,已经整整复盘了三个小时。6.1万——这是他优化模型后投入实盘的剩余资金。一周时间,从7万到6.1万,12%的跌幅像一记闷棍敲在头上。
但奇怪的是,此刻他心里没有恐慌,反而异常冷静。
“代码可以骗人,但逻辑不会”。他低声重复着自己的口头禅,鼠标在历史K线图上缓缓移动。
问题就出在验证环节。
之前的模型在回测中表现完美,是因为他用了全部历史数据来训练,又用同样的数据来验证——这就像让学生既用课本复习,又用同一本课本考试,考满分不代表真会了。一旦遇到没见过的题目(新的市场行情),立刻露馅。
这就是机器学习里臭名昭着的“过拟合”。
林晨关掉交易软件,打开pycharm。屏幕上是他过去一个月写的量化系统代码,三千多行,像他亲手搭建的积木城堡。现在,他得拆掉一部分,重新设计地基。
“训练集、验证集、测试集…”他念叨着这三个机器学习最基本的概念,在草稿纸上画图。
传统的做法是把数据随机分成三块:70%训练,15%验证,15%测试。但金融数据有个致命特点——时间序列依赖。今天的股价受昨天影响,不能像图片分类那样随机打乱顺序。
“得用时间序列分割”。林晨在搜索引擎里输入这几个字。
凌晨三点,他找到了解决方案:滚动窗口交叉验证。
原理很简单——假设你有2010年到2023年的数据,先用2010-2015年训练,用2016年验证;然后用2010-2016年训练,用2017年验证…以此类推,像一扇窗户在时间轴上滚动。这样既尊重了时间顺序,又能充分验证模型在不同时期的泛化能力。
理论懂了,实现起来又是一堆坑。
林晨的代码原本是直接用train_test_split函数随机分割,现在要重写数据加载模块。他泡了杯浓茶,开始敲代码。
def time_series_cv_split(data, train_years=5, val_years=1):
时间序列滚动窗口分割
data: 按时间排序的dataFrame
返回: [(train_idx, val_idx)] 列表
splits = []
start_idx = 0
while start_idx + train_years + val_years <= len(data):
train_end = start_idx + train_years
val_end = train_end + val_years
train_indices = list(range(start_idx, train_end))
val_indices = list(range(train_end, val_end))
splits.append((train_indices, val_indices))
start_idx += 1 # 每次滚动一个时间单位
return splits
写完后,他跑了一遍测试。用A股沪深300指数2010年到2023年的日线数据,设置5年训练1年验证,程序生成了8组不同的训练-验证组合。
“这样应该够了”。林晨揉了揉发酸的眼睛。
但验证集只是第一步。真正的考验在样本外测试——用模型完全没见过的、最新的数据进行最终评估。
林晨做了个决定:把2023年全年数据留出来,作为最终的测试集。用2010-2022年的数据做滚动交叉验证,选出在多个验证期表现最稳定的模型参数,最后再用2023年的数据看真实效果。
这个流程,专业量化机构叫“walk-Forward Analysis”(向前步进分析),是避免过拟合的黄金标准。
凌晨四点,程序开始运行。
屏幕上的进度条缓慢移动,每一次滚动窗口分割,模型都要重新训练一次。8组验证,意味着要训练8次模型。林晨那台三年前的游戏本风扇狂转,cpU温度飙升到85度。
他起身走到窗边。城中村的凌晨很安静,远处偶尔有外卖骑手的电动车驶过。楼下那家潮汕粥铺已经亮起灯,准备早市的食材。
半年前,他还在跨境电商公司加班到这个时候,为了一个促销活动页面。现在,他为一个验证流程的代码熬夜。
身份变了,但那种沉浸在心流状态的感觉,没变。
一个小时后,程序跑出第一轮结果。
林晨坐回电脑前,屏住呼吸看屏幕上的输出:
第1组验证 (2010-2014训练,2015验证):年化收益率 12.3%,最大回撤 -8.7% 第2组验证 (2010-2015训练,2016验证):年化收益率 9.8%,最大回撤 -10.2% 第3组验证 (2010-2016训练,2017验证):年化收益率 15.1%,最大回撤 -7.3% ... 第8组验证 (2010-2021训练,2022验证):年化收益率 6.4%,最大回撤 -12.5%
8组验证的平均年化收益率:10.2%,平均最大回撤:-9.6%。
“稳了”。林晨长舒一口气。
最关键的是,8组验证的结果没有出现极端值——没有某一年突然暴赚50%,也没有某一年巨亏30%。收益曲线相对平稳,这说明模型没有过度拟合某个特定时期的市场风格。
他接着运行最终的样本外测试:用2010-2022年全部数据重新训练最优参数模型,然后在2023年的全新数据上测试。
进度条再次移动。
这一次,林晨反而没那么紧张了。如果验证集的设计是科学的,那么测试集的结果应该不会偏离太远。就像你用了正确的方法学习,考试不会突然不及格。
二十分钟后,结果弹出:
样本外测试 (2023年数据): 年化收益率:8.7% 最大回撤:-11.2% 夏普比率:1.05 胜率:58.3%
比验证集的平均表现略差,但完全在可接受范围内。最关键的是,这个模型在2023年那种震荡下跌的市场中,依然实现了正收益,最大回撤控制在12%以内。
“这才叫鲁棒性”。林晨靠在椅背上,笑了。
鲁棒性(Robustness)——系统在异常或危险情况下的生存能力。这个词今天有了具体的意义:就是他的模型在不同年份、不同市场风格下,都能保持相对稳定的表现。
他看了眼时间,凌晨五点十分。
该睡了,但他兴奋得睡不着。干脆打开实盘账户,把新的模型部署上去。不过这次,他只投入了1万元——先用小资金跑一段时间,确认实盘表现和回测一致,再逐步加仓。
“慢慢来,这次不能再犯急功近利的错误”。他对自己说。
部署完系统,天已经蒙蒙亮。林晨走到阳台,晨风带着深圳湾方向传来的潮湿气息。远处天际线开始浮现轮廓,那些他曾经在里面加班的大楼,此刻还沉睡在黎明前的昏暗里。
他突然想起苏婉昨晚睡前说的话:“老公,乐乐下个月幼儿园要交下学期的学费了,八千多”。
当时他正盯着亏损的账户,只含糊应了声“嗯,我想办法”。
现在,看着阳台上那盆自己失业后开始养的绿萝——三个月,已经从几片叶子长得爬满了半个栏杆——林晨心里有了些底气。
“会好起来的”。他轻声说,不知道是对绿萝说,还是对自己说。
回到电脑前,他最后检查了一遍新的系统架构:
数据模块:支持时间序列滚动分割
训练模块:集成交叉验证流程
验证模块:多期历史验证+样本外测试
实盘模块:小资金起步,逐步扩容
这个架构,比之前那个追求“完美回测”的脆弱系统,健壮了不止一个量级。
关机前,林晨新建了一个文档,标题是《量化系统开发日志》。他在今天那栏写下:
“2023年x月x日,凌晨。吃一堑长一智,终于理解了验证集的意义。模型不是要拟合历史,而是要捕捉那些能在未来重复出现的规律。就像人生经验——有用的不是某次成功的具体做法,而是那次成功背后的底层逻辑”。
“下一步:让这个系统在实盘上跑一个月。如果表现稳定,就可以考虑增加资金了”。
他保存文档,合上电脑。
窗外,第一缕晨光照进城中村狭窄的巷道。粥铺的蒸汽升腾起来,新的一天开始了。
林晨躺到床上,闭上眼睛前,脑子里闪过一个念头:
“如果这个系统真的能稳定盈利…那我不但能解决眼前的生计问题,也许还能…”
他没想完,就沉沉睡去。
枕头边的手机屏幕亮了一下,是苏婉设置的闹钟:六点半。再过一小时,她就要起床给乐乐做早餐,然后赶去学校上早自习。
而林晨,将在几个小时后醒来,继续他无人监督、自我驱动的学习之路。
两条不同的生活轨迹,在这个小小的出租屋里交错。一个向外,面对学生和课堂;一个向内,面对代码和数据。
但他们都相信,方向是对的。
第88章 学习期权
窗外,南山科技园的灯火渐次亮起,又一个夜晚降临。
林晨揉了揉有些发涩的眼睛,视线从屏幕上密密麻麻的K线图移开,落在书桌一角苏婉留下的便签上。便签上娟秀的字迹列着下个月的开销:乐乐学费8250元,房贷元,生活费预算5000元……总计近两万六。旁边还画了个小小的加油表情。
他深吸一口气,将便签小心地贴回显示器边框。压力像无形的网,但此刻,这张网带来的不是窒息感,而是某种清晰的驱动力。实盘账户里那优化后的新模型运行了一周多,目前浮盈八百多块,波动平缓,符合预期。这是个好兆头,但远远不够。单靠股票现货策略,收益的天花板肉眼可见,且无法有效规避系统风险。他需要更强大的工具,更精细的风险控制手段。
期权,这个在金融领域被誉为“衍生品皇冠上的明珠”的东西,进入了他的视野。
最初接触这个概念,还是在以前公司茶水间听搞金融的同事吹牛,什么“一天十倍”、“权利金归零”之类的极端案例,听着像赌博。但真正沉下心研究,林晨才发现,期权本质上是一种精巧的风险定价和转移工具。对于他正在构建的量化系统而言,期权不仅能提供非线性收益的可能,更重要的是,它能实现对冲。
“用确定的小额成本(权利金),去管理不确定的巨大风险,或者博取高杠杆收益……”林晨咀嚼着教科书上的定义,手指在键盘上敲击,打开了一个新的Jupyter Notebook。他给自己的学习任务很明确:第一,理解期权定价的核心——波动率与希腊字母;第二,找到适合当前系统初期的、风险可控的期权策略;第三,将策略模块化,集成进现有系统。
波动率,尤其是隐含波动率,成了他第一个攻坚点。这玩意儿不像历史价格那样直观,它代表了市场对未来价格波动幅度的预期,是期权价格中最重要的变量之一。“市场情绪的温度计”,有人这么形容。林晨开始搜集数据,上证50EtF期权、沪深300期权……他调用各种免费ApI和开源库,试图计算历史波动率,并初步估算隐含波动率。python的numpy和pandas库再次派上大用场,但涉及期权定价的布莱克-斯科尔斯(b-S)模型及其变种时,他需要更专业的金融计算库。
“quantLib……”林晨搜索着,这是一个开源的量化金融计算库,功能强大但学习曲线陡峭。他没有退缩,在虚拟环境里安装、调试,对着文档和寥寥无几的中文博客,一点点啃。编译错误、版本冲突、晦涩的c++接口……这些技术难题反而激起了他的斗志。某种程度上,这和他调试一个复杂的分布式系统没什么不同,都是与逻辑和细节搏斗。
熬了两个晚上,他终于让quantLib在本地跑通了一个简单的欧式期权定价示例。当屏幕上根据输入的标的股价、行权价、无风险利率、波动率和到期时间,准确计算出看涨期权和看跌期权的理论价格时,林晨有种打通了任督二脉的舒畅感。理论价格与市场实际报价的差异,就隐含了市场独特的波动率预期——那个神秘的“隐含波动率”。
接着是希腊字母(Greeks)。delta(δ):期权价格相对于标的资产价格的变化率;Gamma(γ):delta的变化率,衡量delta的稳定性;theta(θ):时间流逝对期权价值的影响(时间价值衰减);Vega(ν):波动率变化对期权价值的影响;Rho(p):利率变化的影响。这五个字母,共同描绘了期权风险的全景图。
“这不就是多维度的偏导数吗”?林晨灵光一闪,用他熟悉的数学和编程思维去理解,“期权价格是一个多元函数,标的资产价格(S)、时间(t)、波动率(σ)、利率(r)是变量。希腊字母就是对这个函数求不同变量的偏导,衡量各个维度上的风险敞口”。 一旦套上这个框架,抽象的概念立刻变得可计算、可管理。他迅速写了几段代码,利用quantLib的接口计算不同情景下的希腊字母值,并可视化其变化曲线。
看着屏幕上随着模拟股价变动而灵敏跳动的delta曲线,以及随时间推移稳定下滑的theta曲线,林晨对期权风险动态特性的感知从未如此清晰。“持有期权,就像在管理一个随时变化的风险组合。对冲,本质上就是通过买卖标的资产或其他期权,将这些希腊字母风险(尤其是delta)调整到可接受或可盈利的范围”。
基础理论武装完毕,接下来是策略选择。期权策略五花八门,从简单的买入看涨/看跌,到复杂的跨式、宽跨式、蝶式、鹰式组合。对于目前求稳为主的林晨来说,那些需要精准判断方向或波动率大幅变化的高风险策略暂时不予考虑。他的目光锁定在“备兑开仓”(covered call)上。
这是一种相对保守的收入增强策略:持有标的资产(比如EtF),同时卖出该资产的看涨期权(通常是虚值期权)。收入来自卖出期权获得的权利金。如果到期时股价低于行权价,期权无价值过期,权利金稳稳落袋;如果股价上涨超过行权价,期权被行权,需按行权价卖出标的资产,赚取权利金加上资产上涨的利润(上限被封顶),同时资产被卖出。
“用持有的现货股票作为‘抵押’,卖出看涨期权‘收租’……”林晨琢磨着,“这就像在持有房产的同时,把房子未来一段时间的‘涨价收益权’卖出去,先拿到一笔租金。房价涨不到约定价格,租金白赚;涨超了,房子按约定价卖掉,也赚了差价和租金”。 这个策略的优势在于,在市场温和上涨或震荡时,能提供额外的现金流(权利金),增强整体收益;劣势是限制了上行收益空间。
这非常适合他当前的情况。实盘账户里已经有了一些EtF持仓,可以作为“抵押品”。卖出虚值看涨期权,既能增加收益,又保留了标的资产大部分上涨潜力(因为行权价设得比现价高)。关键是要计算好行权价和到期日的选择,平衡权利金收入与上行机会成本。
他开始回测。选取上证50EtF和对应的期权合约历史数据,编写备兑开仓策略的回测框架:每月或每两周在持有EtF的基础上,卖出下月轻度虚值(行权价比现价高2-3%)的看涨期权,收取权利金。到期时根据情况平仓或展期。回测结果让他精神一振:在过往一段震荡上行的行情中,单纯的EtF持有策略年化收益约10%,最大回撤15%;而加入备兑开仓后,年化收益提升到13%-15%,最大回撤缩小到12%左右!虽然牺牲了极端大涨时的部分利润,但收益曲线明显更加平滑,夏普比率提高。
“这才是真正的对冲和增强……”林晨兴奋地搓了搓手。他立刻着手将这一策略模块化。设计信号生成器(基于持仓、期权链数据、波动率水平选择合约)、下单执行模块(连接模拟或实盘接口)、风险监控模块(实时计算组合的delta、theta等,设置预警)。他特别注意了保证金管理和流动性风险:卖出期权需要占用保证金,必须确保账户资金充足;同时选择的期权合约要有足够的成交量,避免无法平仓。
当他将第一个备兑开仓策略模块初步嵌入主系统,并启动针对当前持仓的模拟运行时,窗外已是凌晨三点。系统自动筛选出了合适的期权合约,计算了预期权利金收入、潜在最大收益、盈亏平衡点等参数,并给出了执行建议。整个过程流畅、理性,完全由数据和算法驱动。
林晨靠在椅背上,长长地呼出一口气。疲惫感袭来,但大脑却异常清醒。他仿佛看到自己的量化系统从一个只会单打独斗(现货交易)的武士,正在进化成一名懂得使用盾牌和精密弩箭(期权对冲与增强)的战士。防御和进攻的手段都更加丰富。
更重要的是,他粗略算了一下,如果实盘持仓的EtF部分,能通过持续的备兑开仓策略,每年额外获取5%-8%的权利金收益,那将是一笔相当可观的稳定现金流。乐乐的学费、部分房贷压力……似乎看到了更具象的解决方案。
当然,他知道这只是第一步。期权世界深似海,波动率交易、价差策略、更复杂的动态对冲……还有太多需要学习。但今夜,他成功地在系统的防御和收益矩阵中,嵌入了一块新的、强有力的拼图。
就在他准备关机休息时,手机屏幕亮了一下,是微信消息。来自林浩,他大哥的儿子,在东莞一家电子厂打工。
“小叔,睡了吗?有个事……想问问你”。
林晨皱了皱眉,这么晚发消息,不太像林浩的风格。他回复:“还没,刚忙完。什么事”?
消息框显示“对方正在输入…”,持续了好一会儿,一条长消息才发过来:
“厂里最近效益不好,可能要裁一批人。我学历低,年纪也不占优势了……流水线上干了这么多年,感觉看不到头。心里有点慌。小叔,你见识多,你说……像我这样的,还能学点别的啥不?干啥都行,就是不想一辈子在流水线上了”。
林晨看着这条消息,睡意全无。他仿佛看到了另一个维度上的“困境”与“求变”。侄儿林浩才二十六岁,但工厂生涯似乎已提前让他感到了某种“中年危机”。自己埋头在代码和金融数据里寻找出路,而家族里年轻一代的迷茫,此刻也真切地传递了过来。
他该如何回答?指一条怎样的路,才是真正对这个踏实肯干、但缺乏方向和技能的侄儿有帮助的?
窗外的鹏城,灯火依旧璀璨,照亮着无数个奋斗、迷茫与寻找希望的故事。林晨知道,他自己的战斗远未结束,而现在,他似乎也需要为家人,点亮一盏可能的灯。
第89章 组合优化
鹏城的雨季来得猝不及防。
窗外雨点敲打着玻璃,书房里却只有键盘敲击声和偶尔的鼠标点击。林晨盯着屏幕上密密麻麻的python代码和金融数据图表,眉头时而紧锁,时而舒展。
过去一周,他的智能投资系统在加入了期权策略模块后,确实如回测显示的那样,开始产生稳定的现金流。备兑开仓策略在震荡市中表现稳健,每月能贡献几千元的权利金收入。这笔钱虽然不多,却像及时雨,刚好覆盖了每月的房贷利息部分。
但林晨很快发现了新问题。
“单一策略的风险太集中了”。他对着屏幕自言自语,手指无意识地敲着桌面。
系统现在同时运行着四个策略模块:A股的均值回归策略、商品期货的趋势跟踪、黄金的避险对冲,以及新加入的期权备兑开仓。每个模块都独立运行,各自根据市场信号买卖。回测时表现都不错,但实盘运行两周后,林晨发现了一个致命缺陷——当某个市场出现极端行情时,多个策略可能会同时触发止损。
上周三就是例子。美联储意外鹰派表态,全球市场剧烈波动。他的A股策略和商品策略几乎同时发出卖出信号,导致账户单日回撤达到3%。虽然期权策略的权利金收入弥补了部分损失,但这种“各自为战”的模式显然不够聪明。
“得让这些策略学会配合”。林晨打开浏览器,开始搜索“投资组合优化”。
现代投资组合理论(mpt)——这个由哈里·马科威茨在1952年提出的理论,林晨在大学金融选修课上听过,但当时只觉得是纸上谈兵。如今亲自管理真金白银时,他才意识到这套理论的价值。
“不要把鸡蛋放在同一个篮子里”,这句俗语背后的数学原理,就是马科威茨用均值-方差模型描绘的“有效前沿”。
林晨泡了杯浓茶,下载了几篇经典论文和教科书pdF。接下来的三天,他像回到了考研时期,从早到晚啃着那些充满数学公式的金融工程教材。
“预期收益率……协方差矩阵……夏普比率……”他在笔记本上写写画画,“原来如此,不仅要看单个策略的收益,还要看它们之间的相关性”。
第四天下午,林晨终于搞懂了核心思想:通过数学优化,找到在给定风险水平下收益最高的资产配置比例,或者在给定收益目标下风险最小的组合。
理论懂了,下一步是实践。
他打开Jupyter Notebook,新建了一个python文件。首先要计算各个策略的历史收益率和它们之间的相关系数矩阵。
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
# 加载四个策略的历史日收益率数据
stock_returns = pd.read_csv(stock_strategy_returns.csv, index_col=0, parse_dates=true)
future_returns = pd.read_csv(future_strategy_returns.csv, index_col=0, parse_dates=true)
gold_returns = pd.read_csv(gold_strategy_returns.csv, index_col=0, parse_dates=true)
option_returns = pd.read_csv(option_strategy_returns.csv, index_col=0, parse_dates=true)
# 对齐时间序列
all_returns = pd.concat([stock_returns, future_returns, gold_returns, option_returns], axis=1, join=inner)
all_returns.columns = [股票策略期货策略黄金策略期权策略]
# 计算相关系数矩阵
correlation_matrix = all_returns.corr
print(策略间相关系数矩阵:)
print(correlation_matrix)
运行结果让林晨眼睛一亮。
策略间相关系数矩阵:
股票策略 期货策略 黄金策略 期权策略
股票策略 1.000000 0. -0. 0.0
期货策略 0. 1.000000 0.0 0.
黄金策略 -0. 0.0 1.000000 -0.0
期权策略 0.0 0. -0.0 1.000000
“黄金策略和股票策略呈弱负相关,这正是我想要的”!林晨兴奋地搓了搓手。负相关意味着当股票下跌时,黄金往往上涨,两个策略可以相互对冲。
接下来要构建有效前沿。林晨搜索了开源金融库,找到了cvxopt这个凸优化工具包。安装配置花了些时间,但一旦跑通,那个经典的抛物线形有效前沿曲线出现在屏幕上时,他忍不住握拳轻呼了一声。
“这就是科学投资的魅力”。他盯着屏幕上那条优雅的曲线,每个点都代表一种资产配置方案,横轴是风险(标准差),纵轴是预期收益。曲线左上方的边界就是“有效前沿”——在同样风险下收益最高,在同样收益下风险最低的组合。
但理论模型需要结合实际约束。林晨根据自己的情况添加了几条限制:
第一,每个策略的最低配置不能低于10%,否则失去意义; 第二,期权策略最高不能超过30%,因为权利金收入虽稳定但上限有限; 第三,总杠杆不能超过1.5倍,这是他的风险底线。
修改优化模型,重新计算。这一次,有效前沿上的点变得稀疏了,但更符合实际操作。
林晨选择了三个候选组合:
激进型:预期年化收益18%,年化波动率12%
平衡型:预期年化收益15%,年化波动率9%
稳健型:预期年化收益12%,年化波动率6%
他倾向于平衡型。配置比例是:股票策略35%,期货策略25%,黄金策略20%,期权策略20%。
“等等,还得考虑交易成本”。林晨突然想到一个重要细节。期货和期权的手续费、滑点成本都不同,如果不考虑进去,回测再漂亮也是空中楼阁。
他重新调整模型,加入了每个策略的预估交易成本率。有效前沿曲线整体下移了一些,但形状不变。
就在林晨准备将优化后的配置写入主系统时,手机响了。是林浩。
“小叔,没打扰你吧”?电话那头的声音有些忐忑。
“没事,你说”。林晨保存了代码,身体向后靠在椅背上。
“我……我决定听你的,去学厨师”。林浩说得很慢,但很坚定,“昨天跟线长提了离职,他劝我再想想,说工厂下半年可能接新订单。但我算过了,就算不被裁,一个月到手也就五千多,在鹏城根本存不下钱”。
林晨坐直了身体:“你想清楚了?学厨师很苦,要从打杂开始”。
“我想清楚了。在流水线上干了三年,每天重复同一个动作,我觉得自己快变成机器了”。林浩的声音里有一种年轻人特有的不甘心,“我想学门手艺,实实在在的手艺。就算将来开不了大饭店,至少能在老家镇上开个小餐馆,也比在工厂强”。
这话让林晨心里一动。他想起自己当初决定学AI时,也是这种“不想变成机器”的冲动。
“需要多少钱学费?生活上有没有困难”?林晨问得直接。
“我问了几家培训学校,半年制的课程大概一万二到一万八。我存了八千多,还差一些……”林浩有些不好意思,“小叔,我能先跟你借点吗?我保证工作后尽快还”。
“钱不是问题”。林晨看了眼电脑屏幕上刚刚优化好的投资组合,预期年化收益15%,“但你得答应我两件事”。
“小叔你说”。
“第一,既然要学,就学到最好。不要只满足于拿个证书,要真的把烹饪当成一门技术来钻研”。
“我保证”!
“第二,学成之后,先别急着回老家”。林晨看着窗外雨幕中朦胧的科技园高楼,“鹏城有上千万人口,餐饮市场巨大。你在这里练手艺、见世面,比在老家小镇强”。
电话那头沉默了几秒,然后传来林浩深吸一口气的声音:“好,我听小叔的”。
挂断电话后,林晨没有立即回到代码世界。他走到窗前,看着楼下街道上匆匆赶路的行人。雨中的鹏城依然忙碌,外卖骑手穿着雨衣穿梭,白领们撑着伞快步走向地铁站。
他突然意识到,自己正在做两件相似的事:优化投资组合,也是在优化人生组合。
投资上,他把不同策略按比例配置,追求风险调整后的最优收益。人生上,他也在重新配置自己的技能、时间、资源——从跨境电商码农转型为AI+金融的复合型人才,现在又开始影响家族下一代的职业选择。
“也许可以建立一个更广义的优化模型”。 这个念头一闪而过,林晨笑着摇摇头,现在还太早。
回到电脑前,他将优化后的资产配置比例写入系统主控模块。系统将在每晚收盘后,根据各策略的最新表现和市场状态,动态调整资金分配比例,始终朝着有效前沿上的最优解靠近。
点击“保存并部署”,新的组合优化模块开始运行。林晨看着屏幕上跳动的实时监控数据,四个策略的资金分配比例在初始值附近轻微波动,系统正在适应新的协调机制。
就在这时,邮箱弹出新邮件提醒。林晨点开,是一封来自某头部量化私募的拒信——他一周前投的简历,对方婉拒了,理由是他的“背景与公司当前需求不完全匹配”。
若是两个月前收到这样的邮件,林晨可能会沮丧。但现在,他只是平静地关掉邮件窗口,目光回到自己正在运行的投资系统上。
屏幕右下角,系统实时净值曲线平稳上升,今天已浮盈0.8%。窗外雨渐渐小了,夕阳从云层缝隙中透出金光,洒在科技园的玻璃幕墙上,反射出温暖的光泽。
林晨忽然想起马科威茨理论中的一个细节:有效前沿是基于历史数据计算的,但未来永远不会简单重复历史。真正的挑战在于,如何在市场结构变化时,及时识别并调整模型参数。
就像人生,没有一劳永逸的最优解,只有持续的动态优化。
他新建了一个文档,标题写上:“自适应市场状态识别模块——待开发”。
雨停了,鹏城的夜晚即将来临。书房里的键盘声再次响起,清脆而坚定。
第90章 第三个月
窗外的鹏城,暮色渐沉。科技园区的写字楼陆续亮起灯光,像一片倒置的星河。林晨坐在书房里,面前的屏幕上不是求职网站,也不是教学视频,而是一份刚刚自动生成的、长达三十七页的pdF报告。
标题是:“‘启明’量化系统——第三个月度绩效分析报告(实盘)”。
他深吸一口气,点开了摘要页。
目光扫过那几个加粗的关键数字时,林晨感到自己的心跳漏了一拍。
累计收益率:25.03%(年化约100.12%) 最大回撤:7.21% 夏普比率:1.83 月度胜率:66.7%(三个月均盈利) 波动率:13.05%
二十五个百分点。三个月。
他的手有些微微发抖,不是激动,而是一种近乎于“不真实”的确认。他反复看了三遍那个数字,然后才点开后面的详细分析。
系统用清晰的图表展示了净值曲线的攀升过程。那不是一条平滑向上的直线,而是一条带着锯齿、但整体坚定向上的阶梯。第一个月,市场震荡,收益只有5.8%,但回撤控制在了4%以内。第二个月,抓住了一波中小盘股的反弹,单月收益跳升到11.2%,净值曲线明显抬升。第三个月,也就是刚刚过去的这个月,市场先抑后扬,系统在下跌初期迅速降低了仓位,并在底部区域精准增加了指数EtF和黄金EtF的配置,当月收益7.1%,不仅守住了前两个月的利润,还创了新高。
那条代表最大回撤的阴影区域,始终被牢牢压制在净值曲线的下方,最惊险的一次发生在第二个月中旬,市场突发利空暴跌,系统净值一度从高点回落7.2%,但触发了动态止损和风险平价模型的再平衡指令,迅速砍掉了部分暴露过大的头寸,并将资金转向了国债逆回购和货币基金,最终将损失锁定,没有进一步扩大。随后市场企稳,系统又逐步加回了风险资产。
“7.21%……”林晨喃喃道。这个数字,比他预设的8%警戒线还要低。更重要的是,这次最大回撤发生后的恢复期很短,净值在随后的十四个交易日内就创出了新高。这意味着系统不仅“扛得住跌”,还“爬得上坡”。
他翻到策略贡献分析页面。图表显示,贡献最大的依然是多因子选股模型(主要运行在A股),其次是商品期货的ctA趋势跟踪策略,然后是指数增强与择时模块。之前独立运行时表现波动较大的期权波动率套利策略,在纳入组合优化框架、被严格控制仓位占比后,其非对称收益特性反而为组合提供了不错的“彩票型”收益增强,且没有带来额外的尾部风险。
“马科威茨老爷子,诚不欺我”。林晨嘴角终于露出一丝笑意。上一章他埋头苦学现代投资组合理论,将各个单兵作战的策略整合成一个协同的“军团”,现在看来,这步棋走对了。有效前沿上的那个最优解点,在实盘中真的被逼近了。
他关掉报告,打开了实盘交易账户。
总资产:元。
初始投入是五】七万元整。三个月,赚了一万七千五百多。平均每月五千多块。
这个数字,如果放在他被裁员前,或许只是他月薪的几分之一,不值一提。但放在此刻——他已经再次失业近五个月,家庭存款持续消耗,每月还有一万多的房贷雷打不动要还——这五千多块,意义完全不同。
它不仅仅是一笔收入。
它是一个证明。证明他这几个月闭门苦学的东西,不是空中楼阁,不是纸上谈兵,而是能真金白银从市场里掏钱的真实能力。证明他选择的这条“AI+金融”的自救路径,在理论上成立之后,在实践上也跑通了最初也是最难的一程——实盘验证。
焦虑感,像退潮一样,从四肢百骸缓缓消散。取而代之的是一种沉静的、扎实的底气。
他靠向椅背,目光投向窗外璀璨的鹏城夜景。远处,鹏城湾的方向隐约可见,那些临海的大平层公寓灯火通明,那是这座城市财富与成功的象征之一。以前他路过那里,总会感到一种遥不可及的距离感,甚至有一丝身为“码农”却难在鹏城真正立足的苦涩。但现在,看着账户里那个六万多的数字,再想到这条按照当前年化收益率(虽然短期年化极不可靠,但趋势是好的)可能持续生长的净值曲线,那种距离感似乎第一次被具象化的“可能性”所填充。
他知道,三个月太短。在量化投资领域,三年甚至五年以上的实盘记录才算初步经历过周期考验。他也知道,25%的收益里很可能有运气成分,市场不会永远眷顾同一个策略。未来的路还长,黑天鹅、模型失效、过度拟合、交易成本侵蚀……无数陷阱在暗处潜伏。
但至少,他有了一个不错的开局。一个远超他自己最初预期的开局。他当初构建这个系统时,内心的保守期望不过是“能跑赢通胀,或者年化10%-15%就谢天谢地”。25%的累计收益和7%出头的回撤,这个风险收益比,已经摸到了一些专业量化产品(当然是最初级那种)的门槛。
他拿起手机,想给苏婉打个电话,分享一下这份喜悦。但手指悬在拨号键上,又停住了。
还不是时候。他想。这份报告,这份成绩,应该在一个更正式、更稳妥的场合拿出来。比如,当累计收益突破十万?或者,当系统稳定运行满半年?现在说,固然能让妻子安心不少,但难免让她产生过高的、不切实际的期待。投资市场变幻莫测,他不能让家人跟着净值曲线坐过山车。他要呈现的,必须是经过时间过滤的、相对确定的结果。
最终,他只是给苏婉发了条微信:“老婆,晚上不用等我吃饭,我这边在做一个重要的数据复盘,可能会晚点。你和乐乐先吃”。
苏婉很快回复:“好,记得热饭。别太累”。
简单的对话,却让林晨心里一暖。这几个月,苏婉承受的压力不比他小,却从未给过他额外的负担,只是默默支撑着这个家。这份成绩,未来一定要稳稳地交到她手上。
他重新坐直,回到电脑前。兴奋和欣慰渐渐沉淀为更深层的思考。
系统运行良好,但绝非完美。报告中也指出了几个潜在问题:在市场极度低迷、流动性枯竭的极端情境下(模拟测试),部分止损指令可能无法理想成交;因子模型在某些特定行业板块(如近期受政策强力调控的房地产)出现了短暂的失效;跨境资产(外汇、海外EtF)的交易成本和汇率对冲机制还需要进一步优化。
“不能飘”。林晨对自己说。他新建了一个文档,标题是“启明系统V1.2迭代规划”。他将报告中提到的问题一一列出,并开始构思解决方案:引入更智能的流动性监测模块,开发针对政策敏感行业的特殊风控子模型,研究更高效低成本的跨境结算通道……
不知不觉,窗外夜色已深。书房里只有键盘清脆的敲击声和屏幕闪烁的光亮。林晨完全沉浸在对系统下一个版本的构思中,那种专注和投入,与几个月前他疯狂投简历、焦虑等待面试通知时的状态截然不同。那时他的目光是向外的,渴求着一个外部机会的认可。而现在,他的目光是向内的,聚焦于自己亲手建造的、正在不断生长的“系统”之上。
这种掌控感,踏实而有力。
当他完成初步的迭代规划框架时,时间已近晚上十一点。他保存文档,最后看了一眼实盘账户的资产数字,然后平静地关掉了交易软件和数据分析平台。
三个月的成绩单,优秀。 但这只是第一场小考。 真正的漫长征途,刚刚开始。
他站起身,活动了一下僵硬的脖颈。走到窗边,望着这座不眠的城市。远处,鹏城湾的灯火依旧璀璨,但此刻落在他眼里,少了几分虚幻的遥望,多了一些清晰的路径。
路,是一步一步走出来的。系统,是一个模块一个模块迭代出来的。 他转身离开书房,心里那份数月未有的从容,比账户里增长的数字,更让他感到珍贵。
第91章 准备面试
清晨七点,鹏城科技园附近的老小区里,林晨被手机闹钟准时唤醒。他没有赖床,翻身坐起,第一件事是拿起床头柜上的平板,点开了“启明”系统的监控界面。
屏幕上,清晰的数字跃入眼帘:账户总资产87,908元。昨日收益+387元。
他嘴角不自觉地扬起一个弧度。不是狂喜,而是一种踏实、笃定的微笑。三个月,25%的收益,最大回撤控制在7.21%以内。这组数据,像一块经过千锤百炼的基石,稳稳地垫在了他心底。曾经失业带来的那种悬空感、财务上的逼仄焦虑,被这块基石托住了大半。
洗漱时,他看着镜子里那张比三个月前清瘦了些、但眼神明显更亮的脸,心里那个盘旋了好几天的念头,终于清晰落地。
“时机到了”。
是的,时机到了。自学AI、构建量化系统,最初的动力是求生,是给自己找一条活路。但现在,这条路不仅走通了,还走出了一个不错的开局。系统的稳定运行,不仅仅带来了每月几千块的收益,缓解了房贷和家庭开销的压力,更重要的是,它证明了林晨这三个月闭关苦学的价值——他的技术转型是成功的,他的学习能力、工程化能力,足以支撑他在AI这个新赛道立足。
这意味着,他可以不再仅仅满足于“自救”。他可以,也应该,带着这份实战成果,重返职场,去更大的平台,接触更前沿的技术,实现更大的价值。同时,一份稳定的、有竞争力的薪水,依然是这个家庭最需要的压舱石。
吃完早餐,送走要去学校的苏婉和蹦蹦跳跳上幼儿园的乐乐,家里安静下来。林晨没有像往常一样立刻坐到电脑前开始看论文或者调试代码,而是泡了杯浓茶,在书桌前正襟危坐,打开了那个尘封一段时间的文件夹——“求职资料”。
简历模板还是十年前毕业时用的那个简洁版式,内容却已经迭代了无数次。最近一次更新,停留在六个月前,那次更新充满了被裁员后的仓促和迷茫,堆砌着过去十年跨境电商后端开发的项目经验,试图向当时火热的web3方向靠拢,却显得力不从心。
他深吸一口气,将旧简历拖进了“历史归档”文件夹。新建一个空白文档。
标题:林晨 - AI算法工程师/量化策略研究员。
年龄:35岁。他敲下这个数字时,手指停顿了半秒。年龄,在技术圈,尤其是国内互联网圈,曾经是他最大的心结和焦虑源。但此刻,他忽然觉得这个数字不再那么刺眼。三十五岁,有十年扎实的工程经验,有面对危机快速转型并取得成果的证明,这或许不该是劣势,而是一种独特的复合优势——如果他能把故事讲好的话。
他开始梳理过去三个月的“项目经验”。这可能是他这份新简历最核心、也最与众不同的部分。
项目名称:启明AI量化投资系统(个人独立开发) 项目时间:2025年x月 - 至今 技术栈:python, tensorFlow, pytorch, Scikit-learn, pandas/Numpy, mySqL, 阿里云EcS 项目描述: 设计并实现了一套覆盖多市场(A股、商品期货、EtF)的AI量化投资系统。核心工作包括:
数据管道构建:自建爬虫与清洗框架,处理tb级日/分钟级行情、基本面、舆情数据。
特征工程与模型研发:针对不同市场特性,构建数百维技术指标与另类特征;使用LStm、GRU、Attention机制等深度学习模型,以及LightGbm、xGboost等集成学习模型,进行趋势预测、波动率估计与拐点识别。
多策略融合与风控体系:开发动态权重分配模块,融合时序预测、统计套利、均值回归等多种策略信号;实现包含仓位控制、止损止盈、波动率约束的多层次风控模块。
全自动化交易执行:对接券商ApI,实现从信号生成、订单管理到绩效归因的全闭环自动化交易。 项目成果: 系统实盘运行三个月,累计收益25.03%,年化收益率超过100%,最大回撤7.21%,夏普比率优于2.0。系统持续稳定运行,实现了个人投资管理的智能化与纪律化。
写到这里,林晨停下手指,仔细审视这段文字。没有夸大,每一个数据都经得起查验(他的监控后台有详细日志)。他刻意突出了“独立开发”、“全闭环自动化”、“实盘运行”、“风险控制”这些关键词。这不再是学习笔记或者玩具项目,这是一个有复杂架构、有真实数据支撑、有持续产出并经过市场检验的“产品”。对于招聘方来说,这样一个项目所体现的工程能力、算法应用能力、解决问题能力和对金融市场的理解,其说服力可能远超十个纸上谈兵的Kaggle比赛金牌。
接着,他精简了过往十年工作中与数据、算法、系统架构相关性较强的部分,用更技术化的语言重新描述,突出自己的工程素养和解决复杂业务问题的经验。最后,在技能列表里,他将“python(精通)”、“机器学习/深度学习”、“tensorFlow/pytorch”提到了最前面,后面才是Java、Spring cloud等传统后端技能。
整份简历打磨完毕,已近中午。他通读了几遍,确保逻辑清晰、重点突出、没有错漏。然后,他做了一件之前很少做的事——准备“作品集”。
他将“启明”系统的整体架构图(用draw.io画的)、核心策略模块的简要说明、以及过去三个月平滑向上的资金曲线图(隐去了具体金额和标的),整理成一个简洁的pdF文档。他不能泄露核心代码和策略细节,但这些材料足以让懂行的面试官一眼看出项目的规模和完成度。
做完这些,他感到一种久违的“准备就绪”的兴奋感,夹杂着一丝不可避免的紧张。这不同于之前海投web3岗位时的盲目,这是一种基于自身实力构建的、有明确目标的主动出击。
下午,他没有立刻开始投递。而是打开了Leetcode和牛客网,开始有针对性地刷题。AI岗位的面试,算法和数据结构仍然是绕不过去的基础关,尤其是大厂。他重温着动态规划、二叉树、图论,手指在键盘上敲击着熟悉的代码,感觉比三个月前顺畅了许多——持续的高强度编程,让他的“手感”保持得不错。
傍晚,苏婉接乐乐回家。吃饭时,林晨状似随意地提起:“我准备开始找工作了,这次主要看AI相关的岗位”。
苏婉夹菜的手微微一顿,抬眼看他,目光里有询问,也有期待:“有方向了”?
“嗯”。林晨点点头,给乐乐舀了一勺蒸蛋,“技术上准备得差不多了,简历也改好了。这次……有点不一样的东西可以拿出手”。
他没有细说“启明”系统的具体收益,但还是简单提了一句:“我这几个月做的那个自动投资的小程序,运行得还挺稳定,帮我赚了点零花钱,这也算是个实战项目”。
苏婉眼睛亮了一下,她不太懂技术细节,但她听懂了“稳定”和“实战项目”这两个词,更看到了林晨眼神里那份沉淀下来的自信。她笑了笑,给林晨夹了块他爱吃的排骨:“那就好。慢慢找,别太急,家里现在……还撑得住”。她知道丈夫这几个月承受的压力,也看到了他的变化,这份支持无需多言。
乐乐眨巴着大眼睛,看看爸爸又看看妈妈,虽然不太明白,但感觉气氛很好,也咧开嘴笑了:“爸爸要上班班了吗?那是不是又能带我去吃好吃的了”?
童言稚语让饭桌上的气氛更加轻松。林晨摸摸儿子的头:“对,等爸爸找到新工作,带你去吃大餐”。
夜深人静,林晨再次坐在电脑前。他登录了猎聘、boSS直聘,更新了在线简历,将那份精心打磨的简历和作品集pdF上传。在搜索框里,他输入了“AI算法工程师”、“机器学习”、“量化研究员”等关键词,地点限定“鹏城”。
屏幕上刷出一排排职位信息:t厂、A厂、h厂、新兴的AI独角兽、券商金融科技部、量化私募……薪资范围从30K到80K+不等,有些还带着诱人的股票期权。
他的目光在那些知名公司的Logo上停留。这一次,他不再感到高不可攀的眩晕。他逐条阅读职位描述,对比着自己的技能列表和项目经验,心里默默评估匹配度。
最后,他选择了三家看起来最对路、团队介绍也最有技术含量的公司,两家大厂,一家头部量化私募,郑重地点击了“投递简历”。
鼠标点击声在安静的房间里显得格外清晰。简历化作数据流,飞向未知的hR系统和算法筛选。
林晨靠在椅背上,长长地呼出一口气。窗外,科技园的写字楼依旧灯火通明,那里是无数代码和梦想碰撞的地方。他知道,投递只是第一步,接下来可能是一轮轮残酷的笔试、面试、技术拷问。
但这一次,他心中没有多少惶恐。他手中有代码,有逻辑,有这三个月夜以继日构建起来的“启明”系统作为底气。三十五岁,从头开始,踏入AI浪潮,这场面试,他准备好了。
等待的序幕,就此拉开。
第92章 简历优化
深夜十一点半,鹏城宝安区某小区书房里,屏幕的光映在林晨脸上。他刚挂断一个电话,手指在桌面上轻轻敲击着,嘴角带着一丝难以察觉的笑意。
电话是猎头打来的。
距离在招聘平台更新简历才过去两天,第一个主动联系就来了。对方是一家专注互联网高端职位的猎头公司,办公地点在南山科技园。电话里,那位自称李顾问的女士语气专业而热情:“林先生,看到您更新的简历非常惊艳。独立开发并实盘运行三个月的量化投资系统,年化收益超过25%,这个项目经验在AI算法工程师里非常独特”。
林晨当时握着手机,心脏跳得快了几分。他尽量让自己的声音听起来平静:“谢谢。这个系统是我过去几个月自学的成果,用pytorch搭建了多个预测模型,整合了传统量化因子”。
“这正是我们客户需要的”。李顾问说,“目前有几家公司在招AI量化研究员,其中一家是t厂的金融科技部门,另一家是头部私募。您的背景——十年全栈开发加上扎实的AI实战项目,年龄反而成了优势,意味着稳定性和项目经验”。
年龄成了优势。这句话让林晨心里某个紧绷的弦松了一松。
挂断电话后,他打开那份已经修改过七八遍的简历文档。白底黑字,简洁的排版,但每个字都经过反复推敲。
林晨 | 35岁 | AI算法工程师/量化研究员 核心技能:python · pytorch · tensorFlow · 机器学习 · 深度学习 · 量化交易系统
往下翻,工作经历部分,过去十年的跨境电商平台开发被压缩成一段概述,重点突出“高并发系统架构经验”和“复杂业务逻辑抽象能力”。而最近几个月的经历,则被展开成一个独立板块:
个人项目:启明智能量化投资系统(2025年3月-至今)
独立设计并开发覆盖A股、基金、期货、期权、外汇的多市场量化交易系统
使用pytorch构建LStm、transformer时序预测模型,结合xGboost等传统机器学习算法
实现多因子模型融合,动态风险控制模块,最大回撤控制在8%以内
系统实盘运行三个月,初始资金7万元,累计收益30%(年化约120%)
技术栈:python/pytorch/pandas/Numpy/postgreSqL/docker
林晨的目光停留在“累计收益30%”这个数字上。实际收益比三天前整理简历时又涨了五个百分点——这周A股有个小波段,系统抓住了。他犹豫过是否要把具体收益率写上去,毕竟这看起来太像炫技,甚至可能引发对策略可持续性的质疑。但最终他决定保留。代码可以骗人,但实盘曲线不会。这是他能拿出的最硬的证据。
他继续优化项目描述。之前的版本更偏技术实现,现在他增加了业务视角的表述:
项目价值:
验证了AI模型在复杂金融时序数据上的预测能力
探索了多策略融合与动态风控在实盘环境中的可行性
形成了从数据采集、特征工程、模型训练到实盘部署的完整AI落地闭环
写完这几行,林晨靠在椅背上,长长吐了口气。这几个月埋头敲代码、看论文、调参数的日子,此刻被压缩成简历上的几百个字。但每个字背后,是无数个凌晨四点的屏幕微光,是面对亏损曲线时的自我怀疑,是某个模型突然收敛时的狂喜。
他起身走到窗边。小区里大部分窗户已经暗了,只有零星几盏灯还亮着。远处,北环大道的车流声隐约传来,这座城市从未真正沉睡。
手机震动了一下。是李顾问发来的微信:“林先生,已初步将您简历推荐给t厂金融科技组和两家私募。t厂那边反馈很快,他们对既有工程能力又有AI量化实战经验的候选人很感兴趣,可能会在一两天内安排电话初筛。建议您准备一下:1. 项目细节,尤其是模型选择依据和风控逻辑;2. 对AI在金融领域应用的宏观思考;3. 为什么选择这个时间点转型”。
林晨回复了“收到,谢谢”,手指在屏幕上停留了几秒,又加了一句:“方便问一下,t厂这个岗位的薪资范围大概是多少吗”?
消息发出去后,他有点后悔。太着急了吗?
没想到李顾问回复得很快:“理解。根据职级,年包在80万到150万之间,看面试定级。您之前的期望薪资是120万对吧?这个范围是有可能覆盖的”。
80万到150万。林晨看着这个数字区间,心脏又跳快了一些。不是之前web3公司那种“画饼式”的“上不封顶”,而是实打实的区间。如果面得好,甚至可能超过120万的预期。
他坐回电脑前,没有立刻开始准备面试问题,而是做了一件更务实的事:打开另一个文档,标题是“面试问答预演”。
第一个问题他就写了:“请详细说明你的量化系统,为什么选择LStm和transformer?如何避免过拟合”?
他开始敲字回答,不是写草稿,而是模拟真实面试场景,用口语化的语言表述:“金融时序数据具有长期依赖性和非线性特征,LStm擅长捕捉长期依赖,transformer的注意力机制能更好地处理全局关系。我采用的方法是……”
敲着敲着,他停了下来。不对,这样太技术了,面试官如果不熟悉这两个模型怎么办?
他删掉重写:“简单来说,股票价格的变化不仅受最近几天影响,可能跟几个月前的某个事件相关,这就需要模型有‘长期记忆’——LStm干这个。同时,不同股票之间、不同经济指标之间有关系,需要模型能‘关注’到这些关系——transformer干这个。至于过拟合,我用了三个方法:第一,数据增强,通过时间窗口滑动生成更多训练样本;第二,dropout层,随机让一部分神经元失效;第三,也是最关键的,实盘验证。任何在回测中表现好但实盘不行的策略,我都会回溯分析,找到过拟合的根源”。
这样好多了。技术内核没丢,但更容易听懂。
他又写了十几个可能的问题,从“你如何看待AI替代传统量化研究员”到“如果给你一百万资金,你会如何分配策略权重”,每个问题都准备了技术版和通俗版两种回答思路。
做完这些,已经凌晨一点半。林晨保存文档,关掉电脑。躺到床上时,脑子却异常清醒。
t厂。中国互联网的顶级殿堂之一。他三十五岁,再次失业六个月,靠着自学和一股狠劲,竟然敲开了那扇门的第一道缝隙。哪怕只是电话初筛,也意味着他的简历没有被系统自动过滤,没有被hR直接扔进“年龄过大”的垃圾桶。
黑暗里,他想起六个月前那个绝望的下午,在星巴克刷招聘软件,投出去的简历石沉大海。想起妻子苏婉深夜端来的那碗汤,说“大不了我养你”。想起自己对着吴恩达的课程视频,一遍遍重看梯度下降公式。
然后他想起那根资金曲线。从七万开始,缓慢爬升,偶尔回撤,但整体坚定向上。就像他这几个月的人生。
第二天早晨七点,林晨准时起床。先打开电脑查看系统状态——昨夜美股交易时段,外汇策略小赚0.8%,系统总资产来到9万元。他做了日常数据维护,然后开始系统性梳理自己的知识体系。
不仅仅是准备面试,更是对自己这几个月学习成果的重新架构。他画了一张思维导图:中央是“AI量化系统”,延伸出五个分支——数据层、特征工程、模型层、策略层、风控层。每个分支再展开具体技术选型、理论依据、实现细节、踩过的坑。
这个过程花了整整一上午。当思维导图完成时,林晨有种奇异的通透感。那些散落在笔记本、代码注释、论文摘要里的知识点,被一根逻辑线串起来了。他不再只是一个“会调用pytorch ApI”的程序员,而是真正理解这套系统为何如此设计、每个选择背后权衡的构建者。
下午,他做了两件事:第一,把思维导图精简成一张架构图,放进作品集;第二,根据李顾问的提示,开始准备“宏观思考”部分。
AI在金融领域的应用。林晨泡了杯浓茶,对着空白文档思考。他回想起自己最初为什么选择量化方向——不仅仅是为了赚钱,更是因为金融数据是检验AI模型泛化能力的绝佳战场。股价预测是典型的“小样本、高噪声、非平稳”问题,任何在这里有效的模型,其鲁棒性都经过极限测试。
他写下几个观点:
AI不会完全替代人类研究员,但会重新定义研究员的角色——从手动挖掘因子,到设计因子挖掘框架、评估模型有效性、理解模型决策逻辑。
当前AI量化的瓶颈不在于模型复杂度,而在于高质量标注数据稀缺、市场机制建模困难、过拟合风险极高。解决这些需要跨学科知识:金融、计算机、统计、甚至行为经济学。
长期看,AI将推动量化投资从“黑箱策略”转向“可解释策略”,监管压力和客户需求都会朝这个方向推动。
写到这里,林晨停顿了一下。他意识到,自己这几个月积累的,不仅仅是技术能力,还有某种“行业视角”。这是年龄和经历给的礼物——一个二十五岁的天才算法工程师可能写出更优雅的模型代码,但未必能理解金融市场深处的博弈逻辑和人性弱点。
傍晚五点,手机再次响起。是一个固定电话,号码显示来自“鹏城南山区”。
林晨深吸一口气,接听。
“您好,是林晨先生吗?我是t厂金融科技部的招聘专员,收到您的简历,想跟您约个时间做电话初筛,大概三十分钟,聊聊您的项目经验和职业规划。您看明天上午十点方便吗”?
声音干练,语速适中,标准的互联网大厂hR腔调。
林晨稳住呼吸:“方便的。明天上午十点,我准时等您电话”。
“好的。我们会重点聊聊您的量化系统项目,请提前准备一下。另外,请确保通话环境安静。那明天联系”。
电话挂断。
林晨握着手机,在书房里站了好一会儿。窗外,夕阳正把天际线染成橙红色,远处腾讯滨海大厦的玻璃幕墙反射着暖光。
他走到客厅,妻子苏婉正在陪乐乐搭积木。看到他的表情,苏婉抬起头:“有消息了”?
“嗯。t厂,明天电话面试”。林晨说,声音里带着克制住的激动。
苏婉眼睛一亮,放下积木走过来,握住他的手:“太好了!我就知道你能行”!
乐乐也跑过来抱住林晨的腿:“爸爸要上班了吗”?
林晨弯腰抱起儿子:“爸爸要去试试看。成不成还不知道,但至少有机会去试试了”。
那天晚上,一家三口吃了顿简单的火锅。林晨没怎么聊面试的事,反而说起乐乐幼儿园的趣事,说起老家乡下亲戚要翻修房子。但餐桌下的手,一直微微攥着。
睡前,林晨最后检查了一遍邮箱和招聘平台。发现又有两家公司查看了他的简历,其中一家是知名的外资量化基金。平台站内信里,还有另一个猎头的留言,询问他是否对某AI独角兽的算法岗位感兴趣。
他把这些信息记录下来,没有立刻回复。先集中精力过t厂这一关。如果初筛通过,后面还有至少两轮技术面、一轮总监面、一轮hR面。每一关都是硬仗。
关灯躺下时,苏婉在黑暗里轻声说:“别想太多,正常发挥就好。你现在的能力,比六个月前强了十倍都不止”。
林晨“嗯”了一声,握住她的手。
他知道自己强了。但职场竞争从来不是绝对值的比拼,而是相对位置的争夺。在t厂那样的地方,每个候选人都是顶尖的。他的优势在于跨界经验——十年工程功底加上AI量化实战。他的劣势也在于跨界——没有正统的AI学术背景,没有大厂算法团队经验。
成败的关键,在于他能否让面试官相信:这个三十五岁、半路出家的程序员,用四个月时间野蛮生长出来的AI系统,不是玩具,而是一个真正有洞察、有潜力、有商业价值的作品。
而证明的方式,不是靠华丽的术语堆砌,而是靠对每个技术细节的透彻理解,对每个设计选择的清晰解释,对每个失败教训的坦诚剖析。
代码可以骗人,但逻辑不会。
人更不能。
第93章 父母的担忧
晚上八点半,林晨刚调试完pytorch环境里一个恼人的cUdA版本冲突,手机就响了。
屏幕上显示着“爸”。
他深吸一口气,按下接听键。背景音里隐约有电视声,应该是父母在老家客厅看的晚间新闻。
“喂,爸”。
“小晨啊,吃饭了吗”?父亲的声音一如既往的沉稳,但林晨能听出那沉稳底下压着的试探。
“吃了,苏婉做的,炒了两个菜”。林晨起身走到阳台,鹏城初夏的夜风带着湿气拂面,楼下城中村的巷子里传来炒粉摊的锅铲声,“你们呢”?
“我们也刚吃完”。父亲顿了顿,直接切入主题,“最近工作怎么样?还忙吗”?
来了。林晨心里一紧。
失业这事儿,他一直没跟老家的父母细说。最初是怕他们担心,后来是觉得解释起来太复杂。电话里只说“公司在调整,最近不那么忙”,含糊地带了过去。但两个月过去,父母显然察觉到了不对劲——以前儿子周末加班的抱怨听不到了,电话接得倒是越来越及时。
“还行,在学些新东西”。林晨尽量让语气轻松。
“新东西”?母亲的声音插了进来,显然是凑在听筒旁,“什么新东西?你不是一直搞电脑吗”?
“还是电脑相关的,就是技术更新了,得跟着学”。林晨解释,“现在流行人工智能,AI,就是让电脑更聪明,能自己学东西”。
电话那头沉默了几秒。林晨几乎能想象父母在老家客厅对视一眼的困惑。
“学这个……公司要求的”?父亲问。
“算……是吧,提升自己”。林晨模糊了主语。
“那学了能涨工资不”?母亲更关心实际,“你现在房贷一个月一万多,乐乐马上要上小学,开销大。光学习不干活,钱从哪里来”?
问题直戳要害。林晨感到喉咙发干。
“妈,我心里有数。房贷的钱够的,我们还有点存款”。他没敢说存款正在以每月一万二的速度被房贷吞噬,也没提那七万块正在股市和期货市场里随着他写的代码上下浮沉,“学这个是为了以后更好发展,现在这行变化快,不学就跟不上了”。
“你跟不上”?父亲的声音里带了点不满,“你在鹏城干了十年,大公司都待过,怎么说也是老师傅了。怎么还要从头学”?
“爸,技术这行不一样”。林晨试图用他们能理解的比喻,“就像……以前咱们老家种地用牛,后来用拖拉机,现在听说有无人机撒农药了。你不能因为会赶牛车,就觉得拖拉机没用,对吧?我现在就是在学开拖拉机,不,是学搞无人机”。
又是一阵沉默。林晨听到母亲小声嘀咕:“听不懂他说的什么机……”
父亲清了清嗓子:“小晨,我不是反对你学习。活到老学到老,道理我懂。但是——”他加重了语气,“你现在三十五了,不是二十五。家里有老婆孩子,有房贷。你该先稳住,找份踏实工作干着,学习可以业余时间搞。我听说现在送外卖一个月也能挣万把块,你先找个事做,别让家里断了收入”。
林晨感到一阵无力。他知道父亲是为他好,是出于最朴素的生存智慧:手停口停。在父母那一代人眼里,没有“全职学习转型”这种概念,那是不务正业,是冒险。
“爸,送外卖……不是长久之计”。林晨尽量耐心,“我现在学的这个东西,学好了,以后可能挣得比之前更多。而且我已经在弄一个自己的系统,用电脑分析股票期货,能自动交易,最近已经开始有点收益了”。
他抛出“自动交易”“有收益”,希望能增加说服力。
果然,母亲立刻追问:“炒股?那可不能碰!你王叔家儿子前年炒股亏了二十万,媳妇差点跟他离婚”!
“不是单纯炒股,是用AI模型分析,概率大才操作,而且有风险控制……”林晨越解释越觉得像在给自己挖坑。量化交易、机器学习、回测曲线、夏普比率……这些概念在父母听来无异于天书。
“你别弄那些虚的”。父亲下了结论,“我跟你妈商量了,你要是暂时困难,家里还有几万块钱积蓄,先给你打过去应急。但你得赶紧找个正经工作,哪怕工资低点,先干着。学习的事,慢慢来”。
林晨鼻子一酸。老家父母省吃俭用一辈子,那几万块钱是他们的养老底子。
“不用,爸,真不用”。他声音有点哽,“钱够用。你们别操心。我……我心里有规划”。
“你有什么规划”?父亲追问,“规划到什么时候能找到工作?下个月?还是下半年”?
林晨答不上来。t厂的电话初筛安排在明天,结果未知。即便过了,后面还有好几轮面试。就算一切顺利,入职也是两个月后的事。而家里的存款,满打满算只够撑到年底。
“爸,妈,你们相信我一次”。林晨看着远处科技园那些灯火通明的大厦,那些他曾经进出过的写字楼,“我在鹏城十年,不是白混的。我知道现在行业在往哪里变,我也知道自己的短板在哪里。这次失业是危机,但也是机会。如果我随便找份工作糊口,可能这辈子就这样了。但如果我咬牙把AI这关过了,把量化系统做成熟,未来可能完全不一样”。
他顿了顿,说出这些日子反复对自己说的话:“我已经三十五了,没有太多试错时间。所以这次,我要选那条难走、但可能走得更远的路”。
电话那头久久没有声音。
良久,父亲叹了口气,那叹息声穿过千里电话线,沉甸甸地压在林晨心上。
“你从小就主意正”。父亲说,“当年非要报计算机,我说这专业虚,不如学医或者当老师,你不听。后来非要留在鹏城,我说房价太高,不如回省城,你也不听。现在……唉”。
“但你都走出来了”。父亲的声音低下去,“这次,爸还是那句话:路你自己选,选了就别后悔。家里那几万块钱,给你留着当后路。实在不行……就回来。老家房子虽然旧,总有个住的地方”。
“爸……”林晨眼眶发热。
“好了,不说了”。父亲恢复了一贯的简洁,“学习别太累,注意身体。跟苏婉说,带乐乐常视频,你妈想孙子”。
“嗯”。
“挂了吧”。
电话挂断。阳台外,鹏城的夜色繁华依旧。林晨握着发烫的手机,站了很久。
他知道,父母的担忧没有消除,只是被暂时安抚了。那通电话像一面镜子,照出了他此刻处境中最现实的一面:一个三十五岁的失业男人,用着存款,学着前途未卜的新技术,搞着风险不明的投资系统,还拒绝了父母“先找份工作”的朴素建议。
任性吗?或许有点。
但他想起自己过去两个月啃下的那些数学公式、调试过的那些模型、回测曲线从亏损到微微上扬的那个拐点。代码不会骗人,数据不会骗人。他的系统虽然稚嫩,但逻辑是通的,方向是对的。
回到书房,电脑屏幕上还开着pytorch的终端窗口和量化系统的监控界面。他点开交易账户。
七万本金。今日盈亏:+595元。
收益率0.85%。微不足道。
但这是系统自动执行了三笔小仓位交易的结果,胜率2胜1负。没有情绪干扰,没有追涨杀跌,只是冷静地执行着他设定的策略。
林晨看着那个数字,深吸一口气。
他打开笔记软件,在“家庭压力”条目下,简单记录:“父母来电,担忧。已安抚。暂不需经济支援。压力转化为动力”。
然后,他切换到t厂面试准备的文档。明天上午十点,电话初筛。猎头明确说了,对方会对量化系统细节深入提问。
他需要把系统的每一个模块——数据抓取、特征工程、模型选择、风险控制、执行逻辑——都用最清晰、最结构化的语言描述出来。不仅要讲技术实现,还要讲设计思想,讲为什么选这个模型而不是那个,讲回测结果如何支撑决策。
这不仅仅是一场面试。
这是向父母、向自己、也向那个不确定的未来,证明他选的路,值得咬牙走下去。
夜深了。书房里只有键盘敲击声和主机风扇的低鸣。林晨揉了揉发涩的眼睛,瞥见监控界面上,系统又自动挂出了一笔黄金期货的限价单。
夜盘刚刚开始。
他的战斗,也在寂静中继续。
第94章 第一个AI岗面试邀请
早晨七点半,鹏城科技园附近的小区房里,林晨已经对着电脑屏幕坐了快一个小时。
窗外的天色刚亮透,楼下早餐摊飘来肠粉的米香。他揉了揉发酸的眼睛,注意力完全集中在眼前的代码上——这是昨晚投资系统自动运行后生成的一份异常报告,显示在凌晨三点左右,黄金期货合约的预测模型出现了短暂的数据漂移。
“又是数据源的问题……”林晨低声自语,手指在键盘上快速敲击,调出日志文件逐行排查。
这几个月,他已经习惯了这种节奏:早起检查系统,修复问题,然后开始一天的学习或求职准备。再次失业第187天,焦虑感其实并未完全消失,只是被压缩成了一种背景噪音,而占据前台的是具体到每一行代码、每一个算法参数的技术问题。
九点整,手机震动了一下。
林晨瞥了一眼,是招聘平台的推送。他本打算像往常一样划掉,但“AI算法工程师”几个字让他手指顿了顿。点开详情,发信方是“星云科技”——一家在鹏城还算有点名气的二线互联网公司,主营企业级SaaS服务,最近几年也在布局AI赛道。
邮件正文很简洁:
“林晨先生您好,我们在招聘平台看到您的简历,对您AI相关的学习经历和项目经验很感兴趣。现邀请您参加我司算法工程师岗位的笔试环节。笔试为线上形式,请在48小时内登录以下链接完成。祝顺利”。
没有hR的寒暄,没有公司介绍,就是一段标准化的邀约。
林晨盯着屏幕,心脏却突然重重地跳了两下。
他放下手机,又拿起来,把邮件从头到尾仔细读了三遍。然后起身走到窗边,做了几个深呼吸。初冬的鹏城,空气里带着凉意,吸入肺里让人清醒。
这是第一个。
不是那些挂羊头卖狗肉的“AI产品经理”,不是要求五年以上相关经验的“AI专家岗”,而是一个实实在在的、面向有转型意愿者的算法工程师笔试邀请。
几个月来,他投了上百份简历。大部分石沉大海,小部分回复是“经验不匹配”,还有零星几个web3公司的面试,最终都卡在了薪资预期上。而真正标注“AI”、“算法”、“机器学习”的岗位,这是第一次有回音。
他走回电脑前,点开笔试链接。页面跳转到一个专业的在线考试系统,需要先进行环境检测——摄像头、麦克风、屏幕共享。笔试说明里写着:共计10道题,包含5道算法编程题(在线编码环境),3道机器学习理论题,2道系统设计题。限时3小时。
“来真的”。林晨喃喃道,嘴角却不自觉地上扬。
这种情绪很复杂。有激动——自己的努力终于被看见了一角;有紧张——第一次面对专业考核;更有一种强烈的证明欲,像闷在炉子里的炭,终于等到了风口。
他没有立刻开始答题。反而关掉了页面,起身去厨房冲了杯速溶咖啡。端着杯子回到书桌前,他打开了另一个文件夹,里面是他这几个月整理的学习笔记、代码练习和项目文档。
从最基础的线性回归、逻辑回归,到决策树、随机森林、SVm;从神经网络的前向传播、反向传播,到cNN、RNN、LStm的结构理解;从tensorFlow的静态图到pytorch的动态图优势;从过拟合、欠拟合的解决到梯度消失、爆炸的应对策略……几十万字的笔记,上百个手写实现的demo,还有那个已经实盘运行了快一个月的多策略量化投资系统。
这些都是他的弹药。
林晨深吸一口气,重新打开了笔试链接。这次,他点击了“开始考试”。
第一道编程题是经典的“两数之和”变体,要求在数组中找到三个数,使它们的和最接近给定目标。林晨扫了一眼,手指已经在键盘上敲了起来。双指针法,先排序,时间复杂度o(n2)。五分钟,代码写完,测试用例全过。
第二道是二叉树的中序遍历迭代实现。同样手到擒来。
第三道就开始上难度了:设计一个数据结构,支持在o(1)时间复杂度内完成插入、删除和获取随机元素。林晨思考了一分钟,脑海里的知识图谱迅速检索——哈希表加数组。哈希表保证o(1)的查找和删除,数组保证o(1)的随机访问,删除时用数组末尾元素替换被删除元素的位置以保持连续性。思路清晰,代码一气呵成。
编程题部分,他用了不到四十分钟就全部完成,并且反复检查了边界条件。
接下来是机器学习理论题。
第一题:“请简述梯度下降法中,批量梯度下降、随机梯度下降和小批量梯度下降的优缺点及适用场景”。
林晨在答题区敲下:
“批量梯度下降(bGd):使用全部训练数据计算梯度,方向准确,收敛稳定,但每次迭代计算量大,内存消耗高,不适合大数据集。随机梯度下降(SGd):每次随机使用一个样本计算梯度,计算快,可在线学习,但梯度方向波动大,收敛不稳定,可能难以达到最优。小批量梯度下降(mini-batch Gd):折中方案,每次使用一小批样本(通常32、64、128),兼顾了计算效率和收敛稳定性,是目前深度学习最常用的优化方法。适用场景:bGd适用于小规模数据集或对收敛稳定性要求极高的场景;SGd适用于大规模在线学习或数据流场景;mini-batch Gd适用于绝大多数深度学习模型训练”。
第二题:“什么是过拟合?列举三种常见的防止过拟合的方法并简要解释”。
“过拟合指模型在训练集上表现很好,但在未见过的测试集上表现显着下降,即模型过于复杂,‘记忆’了训练数据中的噪声和细节,导致泛化能力差。防止方法:1. 正则化(L1/L2):在损失函数中加入模型复杂度的惩罚项,限制参数大小,促使模型更简单。2. dropout:在神经网络训练过程中随机‘丢弃’一部分神经元,强制网络学习更鲁棒的特征,是一种集成学习的近似。3. 早停法(Early Stopping):在训练过程中监控验证集性能,当性能不再提升甚至下降时提前停止训练,防止过度训练”。
回答这些理论题时,林晨感觉异常顺畅。那些曾经晦涩难懂的概念,经过几个月的反复咀嚼、实践、调试,已经内化成了肌肉记忆。他甚至能联想到自己在量化系统中,为了防止模型过拟合历史数据,特意加入了L2正则化和动态早停机制。
最后两道系统设计题更有挑战性。
一道是:“假设要为公司设计一个用户画像推荐系统,请描述主要模块、技术选型及需要考虑的关键问题”。
另一道是:“设计一个实时检测交易数据异常(如欺诈交易)的系统流程”。
这两题没有标准答案,考察的是知识广度、工程思维和解决问题的方法论。林晨结合自己过去十年后端开发的经验和这几个月学习的AI知识,谨慎地组织着回答。他从数据采集、清洗、存储讲到特征工程、模型选择(推荐系统他提到了协同过滤、矩阵分解到深度学习模型如deepFm的演进;异常检测他提到了孤立森林、自动编码器、时序模型LStm的应用),再到模型部署、A/b测试、在线监控和迭代更新。他强调数据质量的重要性,强调线上线下一致性,强调系统可解释性和运维成本。
写完最后一段,点击提交时,时间显示用了2小时47分钟。
屏幕弹出“提交成功”的提示。
林晨靠在椅背上,长长地吐出一口气。咖啡已经凉了,但他浑然不觉。此刻的心情,就像跑完了一场准备已久的马拉松,疲惫,但更多的是释放和期待。
他走到阳台,科技园的方向,高楼玻璃幕墙反射着上午的阳光。那里有无数他曾经向往或未曾了解的机会。
这个笔试,只是一个开始。他知道,星云科技可能不是他的最终目标,薪资待遇或许也达不到他之前的预期,但这是一个信号——他自学的东西,市场是认的;他选择的转型方向,路是通的。
手机又震了一下。是苏婉发来的微信:“乐乐说今天幼儿园有画画课,他想画爸爸在电脑前工作的样子。你那边怎么样”?
林晨看着信息,笑了笑,回复:“刚完成一个公司的AI岗位笔试。感觉不错”。
很快,苏婉回了一个笑脸和两个字:“加油”。
简单,却足够温暖。
林晨收起手机,目光重新投向电脑。投资系统的控制面板上,今日累计收益已经显示为+2.3%。虽然金额不大,但那根小小的阳线,和刚才完成的笔试一样,都是黑暗中逐渐亮起的、实实在在的光点。
他坐回桌前,没有休息,而是打开了t厂招聘官网的页面。昨天已经完成了电话初筛,hR说一周内会有进一步通知。他需要准备得更充分一些。
第一个AI岗的面试邀请来了。他相信,这绝不会是最后一个。
第95章 笔试
早晨七点半,鹏城的天空泛着灰白色的光。林晨坐在书桌前,笔记本电脑屏幕亮着,邮箱里躺着昨晚收到的新邮件——来自一家名为“智创未来”的AI初创公司的在线笔试邀请。这是继星云科技之后,他收到的第二个AI相关岗位的笔试通知。
他喝了口已经凉掉的速溶咖啡,揉了揉有些发胀的太阳穴。连续几天的备考和面试准备,让三十五岁的身体开始发出抗议。但心里那股劲儿撑着——失业第128天,每一个机会都不能放过。
“智创未来”这家公司他之前研究过,规模不大,五十人左右,专注在计算机视觉和工业质检领域。岗位是“机器学习工程师”,薪资范围写的是25-40K,比星云科技稍高一些。更重要的是,岗位描述里明确要求“有扎实的机器学习理论基础和python工程能力”,这正好撞在他的枪口上。
笔试时间是上午9:00-11:00,线上进行,全程摄像头监控。林晨提前半小时就进入了系统,调试好摄像头和网络,将手机静音放到客厅,书桌上只留下笔记本电脑、一支笔和几张草稿纸。苏婉送完乐乐上学后,轻手轻脚地关上了卧室门,给他一个绝对安静的环境。
8:59,系统界面刷新。倒计时开始。
林晨深吸一口气,点击“开始答题”。
第一部分是30道选择题,限时45分钟。题目涵盖机器学习基础、概率统计、线性代数、深度学习常见模型。
第一题:“在SVm中,以下哪种核函数对应的特征空间维度是无穷维”?
A. 线性核
b. 多项式核
c. 高斯核(RbF)
d. Sigmoid核
林晨几乎没犹豫就选了c。这是他在吴恩达课程里反复强调过的知识点——高斯核函数通过泰勒展开可以映射到无穷维特征空间。手指点击鼠标的瞬间,心里稍微踏实了一点:自学的东西,真的用上了。
但接下来的题目开始变得刁钻。
“假设你训练了一个逻辑回归模型,发现训练集准确率99%,测试集准确率只有55%。以下哪种方法最不可能解决问题”?
A. 增加正则化强度
b. 收集更多训练数据
c. 减少特征数量
d. 增加模型复杂度
林晨眉头微皱。这题考的是过拟合与欠拟合的区分。训练集准确率极高而测试集极低,明显是过拟合。解决过拟合通常需要正则化、更多数据、减少特征(即降低模型复杂度)。那么“增加模型复杂度”显然是火上浇油。他选了d。
答题过程像在时间河流里逆流而上。有些概念明明看过,但具体细节模糊了;有些题目需要快速计算协方差矩阵的特征值,草稿纸上写满公式。第22题关于batch Normalization在训练和推理阶段的不同处理,他卡了足足两分钟,最后凭记忆选择了“训练时使用当前batch的均值和方差,推理时使用移动平均的均值和方差”。
当最后一道选择题提交时,倒计时显示还剩3分17秒。林晨后背出了一层薄汗。
第二部分是编程题,2道,限时45分钟。
第一题:“给定一个整数数组nums和一个目标值target,请你在数组中找出和为目标值的那两个整数,并返回它们的数组下标。假设每种输入只会对应一个答案,且不能重复使用相同的元素”。
林晨几乎笑出来——这是Leetcode第一题“两数之和”,太经典了。他迅速在代码编辑区写下哈希表解法,时间复杂度o(n),空间复杂度o(n)。测试用例全部通过。
第二题难度陡增:“实现一个简单的神经网络前向传播过程。给定输入矩阵x(形状为n_samplesxn_features),权重矩阵w1(n_featuresxhidden_size)、w2(hidden_sizexoutput_size),偏置向量b1、b2,激活函数使用ReLU。请写出计算过程并返回输出矩阵”。
这题考察对神经网络底层计算的理解。林晨沉下心来,在草稿纸上画出计算图:
Z1 = x·w1 + b1
A1 = ReLU(Z1)
Z2 = A1·w2 + b2
output = Z2 # 假设输出层无激活
然后他用Numpy风格写出代码,注意了矩阵乘法的维度匹配。写完后反复检查了几遍,确认没有错误。提交时,时间还剩12分钟。
最后一部分是开放问答题,1道,限时30分钟。
题目是:“请谈谈你对当前AI大模型(如Gpt系列)发展的理解,并分析其在工业落地时面临的主要挑战及可能的解决方案。字数不少于500字”。
林晨看着题目,眼睛亮了。这不是死记硬背能答的题,需要真正的思考和见解。他闭上眼睛,快速整理思路——过去几个月,他不仅学了技术,也看了大量行业分析、论文解读。苏婉帮他订阅的《人工智能前沿》周刊,每期他都仔细阅读。
他敲下键盘:
“我对AI大模型发展的理解基于三个维度:规模扩展、能力涌现与成本约束……”
开头定下框架,然后展开:
“规模扩展遵循‘缩放定律’,参数数量、数据量和计算量同步增长带来性能提升,但边际效益递减已现端倪。能力涌现是大模型最引人注目的特征,如思维链、代码生成、跨模态理解等,这些能力并非显式编程,而是从海量数据中自组织产生……”
写到这里,他想起自己开发的量化投资系统——本质上也是用小规模模型在特定领域(金融时序数据)尝试捕捉“涌现”的规律。这个联想让他下笔更有底气。
“工业落地挑战主要包括:1. 计算成本极高,训练与推理能耗巨大;2. 模型黑箱性导致可靠性难以保证,在医疗、金融等高风险领域应用受限;3. 数据隐私与安全问题;4. 与现有It系统集成难度大……”
针对每个挑战,他提出了自己的思考:
“对于成本问题,除了硬件优化和模型压缩,更根本的可能是重新思考架构——是否所有任务都需要千亿参数模型?领域特定的小而精模型组合可能是更经济的路径。对于可靠性,可解释AI(xAI)与形式化验证结合或是方向。隐私问题可通过联邦学习、差分隐私等技术缓解……”
他越写越投入,几乎忘了这是场考试。这些思考是他深夜阅读论文、在技术论坛与人辩论、看着自己开发的系统运行时逐渐形成的。虽然零散,但有自己的逻辑。
写到“大模型不应被视为万能解决方案,而应作为基础能力层,与领域知识、业务逻辑、人类专家形成协同系统”时,系统提示还剩5分钟。他快速收尾,检查错别字,点击提交。
11:00整。屏幕弹出“笔试已完成,感谢参与”。
林晨靠在椅背上,长长吐出一口气。两个小时的专注消耗了大量精力,但精神却处于一种奇特的亢奋状态。他回顾整个笔试过程:选择题大概有七八道不确定,编程题应该全对,开放题……他觉得自己写到了点子上。
没有标准答案,无法估分。但这种“尽力了”的感觉很实在。
他起身走到客厅,倒了杯温水。窗外是鹏城典型的景象:高楼玻璃幕墙反射着上午的阳光,远处科技园的方向,车流已经开始涌动。这个城市永远在快速运转,不管你是在失业焦虑中,还是在参加一场可能改变命运的笔试。
手机震动,是苏婉发来的微信:“考完了吗?感觉怎么样”?
林晨回复:“刚结束,感觉……还行。该写的都写了”。
“那就好。中午想吃什么?我给你带回来”。
“随便,你定吧”。
放下手机,林晨重新坐回电脑前。笔试结束了,但等待结果的过程可能更煎熬。他点开自己的量化投资系统后台——这是他最近养成的习惯,用实在的数据波动来平衡求职的虚幻不确定性。
系统显示,昨晚美股交易时段,他持仓的一只科技股EtF因财报超预期上涨3.2%,带动账户整体收益又增加了1.8%。自投入七万实盘以来,累计收益率已经接近9%。虽然绝对金额不大,但这条几乎每天都向上的曲线,成了他心理上的重要支撑。
“代码可以骗人,但逻辑不会”。他喃喃自语,这是他最近常对自己说的话。投资系统基于他亲手写的逻辑,笔试答案基于他这几个月的学习,都是真实的积累。成不成,看缘分,但至少没有欺骗自己。
他关掉系统,打开t厂面试准备的笔记。星云科技的笔试结果还没出,“智创未来”的笔试刚完成,但t厂的面试才是真正的重头戏——那是他心中设定的“理想目标”。简历筛选通过了,第一轮技术面试约在下周。他需要把时间线型代数、概率论、机器学习算法、深度学习架构、系统设计……全部再过一遍。
笔记本上密密麻麻,不同颜色的笔标注着重点、易错点、需要深入理解的概念。三十五岁重新学这些基础理论并不轻松,记忆力和精力都不比二十多岁时,但优势是理解深度和工程视角——他知道这些理论最终要落地成代码、解决实际问题。
中午十二点半,苏婉提着外卖回来。简单的两菜一汤,两人坐在餐桌旁安静吃饭。苏婉没多问考试细节,只是说:“乐乐今天美术课画了幅画,说画的是‘爸爸在电脑前工作’,等会儿给你看”。
林晨点点头,心里温暖。家庭的日常琐碎,是对抗外部不确定性的最好缓冲。
饭后,他小憩了二十分钟,然后继续投入复习。下午三点左右,邮箱“叮”了一声。他心跳快了一拍——难道是笔试结果?
点开,是“智创未来”的系统自动邮件:“尊敬的林晨先生,您的笔试已提交成功,我们将在一至三个工作日内完成评审并通知结果。感谢您的参与”。
还是等待。
林晨关掉邮箱,深吸一口气,重新打开pytorch官方文档。下周的t厂面试,他需要准备得更充分。这场笔试,无论结果如何,至少证明了一件事:他这几个月自学的方向是对的,能力是被市场初步认可的。
窗外的光线慢慢西斜,在书桌上拉出长长的影子。键盘敲击声规律地响着,屏幕上代码和公式滚动。在这个普通的鹏城午后,一个三十五岁的男人,正用最笨拙也最扎实的方式,试图抓住AI时代的尾巴,完成一场属于自己的涅盘重生。
而这场笔试,只是漫长道路上的又一个台阶。
第96章 技术一面
下午两点五十五分。
林晨坐在书桌前,最后一次检查设备。笔记本电脑摄像头角度已调至最佳,确保能拍到上半身和部分背景——背景是简洁的书架,上面整齐码放着《机器学习实战》、《python金融大数据分析》以及几本厚厚的深度学习专着。耳机麦克风测试完毕,声音清晰无杂音。屏幕共享功能预先演练过,能流畅切换桌面和代码编辑器。面试链接已在浏览器中打开,虚拟会议室里只有他一个头像,安静得能听见自己略微加速的心跳。
窗外,鹏城初夏的阳光有些晃眼,远处11号线地铁驶过的隐约轰鸣,成了此刻唯一的背景音。
深吸一口气,再缓缓吐出。这是t厂技术一面的视频面试,岗位是AI算法工程师(机器学习方向)。距离笔试过去四天,“智创未来”那边还没消息,但眼前这场面试,无疑分量更重。t厂,国内互联网的顶级标签之一,其AI实验室更是无数技术人向往的圣地。尽管只是第一轮技术面,林晨却把它当作这几个月自学成果的终极检验。
三点整。
屏幕一闪,会议室里多出一个头像。一位三十多岁、戴着黑框眼镜的男性,Id显示“t厂-算法专家-王工”。背景是简洁的办公隔间,能看到双显示器和一个写着复杂公式的白板一角。
“林晨你好,我是今天的面试官,姓王”。对方声音平稳,带着技术人特有的清晰语调,“我们开始”?
“王工您好,我是林晨”。林晨点头,尽量让声音听起来沉稳。
惯例的自我介绍环节。林晨用两分钟概括了十年跨境电商后端开发经历,重点突出了技术栈的广度(Java/python/mySqL/Redis)和解决复杂系统问题的经验。随后,他话锋一转:“去年年底离职后,我系统自学了机器学习和深度学习,重点补足了数学基础(线性代数、概率论、统计)、算法原理以及pytorch/tensorFlow的工程实践。最近几个月,我完成了一个个人项目——一个覆盖多市场的智能量化投资系统,从数据采集、特征工程、模型训练到实盘交易都独立实现,目前已有小额实盘运行”。
他没有隐瞒失业空窗期,而是将其转化为专注学习的证明,并把“量化投资系统”这个硬核项目推到了最前面。
果然,王工扶了扶眼镜,身体微微前倾:“量化投资系统?这个有意思。你详细说说”。
来了。林晨心中一定,手指在键盘上轻敲,启动了屏幕共享。他先展示了一个简洁的dash可视化面板——这是他用plotly和dash快速搭建的内部监控界面。面板上,几条颜色各异的曲线清晰展示着A股、商品期货、黄金EtF等不同市场子模型近一个月的预测准确率、回测收益率和最大回撤数据。旁边还有一个实时更新的账户总览,显示着初始本金、当前总资产、累计收益率(+9%)和夏普比率。
“这是我系统的监控面板”。林晨开始讲解,语气逐渐从容,“整个系统采用模块化架构,分为数据层、特征层、模型层、策略层和执行层”。
他切换到代码编辑器,打开几个核心文件。“数据层,我接入了多家数据商的ApI(聚宽、tushare等),统一了不同市场(A股、期货、基金、外汇现货)的数据格式和时序对齐。这里我写了一个异步数据抓取和校验管道,确保数据的及时性和完整性”。
“特征工程部分”,他打开另一个文件,“我针对不同市场特性,构建了技术指标特征(如mAcd、RSI、布林带等)、统计特征(滚动均值、方差、偏度)、以及基于新闻舆情和宏观数据的另类特征。这里用了不少时间序列处理技巧,比如处理缺失值、平滑异常点,以及特征标准化”。
王工插话问:“新闻舆情特征怎么处理的?文本数据如何量化”?
林晨早有准备,切换到另一个模块:“我用了预训练的bERt模型微调,对抓取的财经新闻标题和摘要进行情感分析和主题分类,生成情绪分数和热点标签,再作为数值特征输入模型。这部分准确率有待提升,但初步实验显示对某些市场波动有领先指示作用”。
王工点了点头,示意继续。
“模型层是核心”。林晨打开模型目录,“我没有采用单一模型通吃所有市场,而是针对不同资产特性,试验了多种模型组合。比如对于波动率较高的商品期货,我用了基于LStm(长短期记忆网络)的时序预测模型,结合Attention机制捕捉长期依赖;对于相对平稳的指数EtF,梯度提升树(LightGbm)表现更稳健;而外汇市场,我尝试了transformer架构来捕捉跨币种的联动关系”。
他点开一个训练日志文件:“所有模型都用pytorch实现,训练时严格划分训练集、验证集和测试集,使用早停法防止过拟合,并用交叉验证评估泛化能力。损失函数根据策略目标定制,比如对于趋势跟踪策略,我重点优化预测方向(涨跌)的准确率;对于套利策略,则更关注预测价差的精度”。
“策略层负责将模型预测信号转化为具体的交易指令”。林晨切换到策略模块代码,“这里我实现了多种经典量化策略模板,比如双均线交叉、布林带突破、动量反转,但核心信号都来自模型预测。同时,我构建了一个简单的组合优化器,根据各子模型近期表现动态分配资金,并设置了严格的风险控制规则——单笔交易最大仓位、单日最大亏损、整体最大回撤阈值,一旦触发,系统会自动降低仓位或暂停交易”。
“执行层”,他最后展示了一个与模拟券商ApI交互的模块,“目前通过券商提供的ApI接口,支持自动下单和撤单。为了模拟真实环境,我加入了滑点成本和手续费计算。实盘运行使用的是一个小额账户,主要目的是验证系统闭环的稳定性和逻辑正确性,而非追求高额收益”。
整个讲解过程持续了约二十分钟。林晨力求逻辑清晰,既展示宏观架构,又在关键细节处深入,同时避免陷入过于晦涩的数学推导。他注意到,屏幕那头的王工从一开始的审视,逐渐变得专注,手指偶尔在桌面上轻点,像是在跟着思考。
讲解完毕,林晨结束了屏幕共享。会议室安静了几秒。
“很有意思的项目”。王工终于开口,语气里带着明显的认可,“能看出来你不是纸上谈兵,确实从工程角度完整走了一遍流程。有几个问题想深入探讨一下”。
“您请问”。林晨精神一振。
“第一,你提到用了多种模型。在实际运行中,如何评估和选择哪个模型更适合当前市场状态?是手动切换,还是系统自动判断”?
“目前是半自动”。林晨回答,“我设置了一个模型表现评估模块,定期(如每周)计算各子模型在最近一个滚动窗口内的夏普比率、最大回撤、预测准确率等指标,并生成排名。我可以根据排名手动调整资金分配权重,未来计划引入元学习(meta-Learning)或强化学习框架,让系统自动根据市场状态(如波动率、趋势强度)选择最合适的模型或模型组合”。
“第二,风险控制规则的具体参数,你是怎么设定的?比如最大回撤阈值”。
“这部分结合了历史回测和主观经验”。林晨坦诚道,“我回测了系统在过去三年不同市场阶段(牛市、熊市、震荡市)的表现,统计出回撤分布。比如,在极端熊市回测中,系统最大回撤达到过-25%。我将实时运行的最大回撤阈值设为-15%,一旦触及,系统会自动将总仓位减半,并发出警报。这个参数未来需要更精细的动态调整,可能跟市场恐慌指数(VIx)之类的宏观指标挂钩”。
“第三,也是最重要的”,王工的问题变得尖锐,“你认为你的AI模型,相比传统的量化策略(比如那些基于数理统计的成熟策略),优势在哪里?仅仅是因为用了深度学习吗?你的模型可解释性如何?如果某天它突然连续亏损,你如何排查是市场环境变了,还是模型本身出了问题”?
这个问题直击AI量化领域的核心矛盾。林晨沉思片刻,缓缓答道:
“我认为优势不在于简单地替换了策略逻辑,而在于‘特征抽象能力’和‘非线性关系捕捉能力’。传统量化策略依赖人工定义的技术指标和线性(或简单非线性)关系,而深度学习模型,尤其是LStm、transformer这类结构,能够从原始价格、成交量、甚至文本数据中,自动学习出更复杂、更高维的特征表示,并捕捉那些难以用显式公式描述的非线性互动关系。这有可能发现一些被传统方法忽略的微弱信号或复杂模式”。
他话锋一转:“但您提到的可解释性和失效排查,确实是当前AI量化面临的巨大挑战。我的做法是:第一,在特征工程中,尽可能保留一部分可解释的传统特征(如mAcd值),与模型提取的抽象特征一同输入,这样在分析模型决策时,可以部分追溯到这些‘锚点’。第二,我使用ShAp(Shapley Additive explanations)等可解释性工具,定期分析模型对单个预测结果的贡献度,试图理解模型‘看重’哪些输入特征。第三,建立严格的监控体系,不仅监控收益指标,更监控模型预测的置信度、预测分布的变化等内部状态。一旦出现连续亏损,我会首先检查市场波动率、相关性结构等外部环境是否发生结构性变化;如果外部环境未变,则深入分析模型内部状态,比如通过对比错误样本和正确样本的特征ShAp值差异,来推测模型可能在哪类情形下‘失灵’。这更像是一个‘假设-检验’的调试过程,需要结合量化分析和市场直觉”。
王工听完,沉默了片刻。林晨手心微微出汗,不知道自己这番结合了实践和思考的回答能否过关。
“很好的思考”。王工终于说道,脸上露出一丝极淡的笑意,“不仅考虑了怎么做,还考虑了怎么解释、怎么调试。这在AI落地应用中至关重要,尤其是金融这种高风险的领域。你的项目展示了你扎实的工程实现能力、系统的机器学习知识,以及……不错的问题意识”。
他看了一眼时间:“我们聊了四十多分钟,技术细节聊得比较深了。今天的面试就到这里。你的情况我会详细记录并反馈。如果通过,后续会有更资深的同事进行二面,可能涉及更底层的算法优化、分布式训练框架,以及一些开放性场景题”。
“谢谢王工”。林晨心中一块石头落地,语气诚恳。
“不客气。你的自学能力和项目执行力很突出。保持联系”。王工点了点头,退出了会议室。
屏幕恢复平静,只剩下林晨自己的头像。
他靠在椅背上,长长地舒了一口气。喉咙有些发干,这才意识到刚才精神高度集中,连水都忘了喝。起身去客厅倒了杯水,回来时,看到书桌上手机屏幕亮了一下。
是量化系统的每日收盘推送通知: 【今日小结】账户总资产:元。较昨日:+287.44元(+0.53%)。累计收益率:+8.73%。最大回撤:-4.02%。今日交易:A股模型触发1笔小额买入,期货模型无操作。系统状态:正常。
虽然只是几十几百元的波动,但那根缓慢但持续向上的收益曲线,此刻却给了他一种难以言喻的踏实感。代码可以骗人,但逻辑不会。这几个月埋头苦学、一行行敲出来的系统,正用它最朴素的方式,验证着那些深夜啃下的公式、调试通宵的算法,并非空中楼阁。
窗外,地铁的轰鸣声再次由远及近。鹏城的午后,依然繁忙不息。技术一面的紧张感逐渐褪去,取而代之的是一种混合着疲惫与兴奋的充实。他知道,这只是一个开始,后面还有更严峻的挑战。但至少,第一步,他走得扎实,得到了认可。
手机又震了一下,是苏婉发来的微信:“面试怎么样?乐乐说晚上想吃红烧排骨,我买了些,等你‘凯旋’回来掌勺?[偷笑]”
林晨笑了笑,回复:“面完了,感觉还行。排骨留给我,保证完成任务”。
他关掉电脑,活动了一下僵硬的脖颈。阳光斜照进书房,在那些厚厚的技术书上投下温暖的光斑。路还长,但方向,似乎越来越清晰了。
第97章 算法面
屏幕右上角的倒计时还剩三分钟,林晨做了个深呼吸。面前是t厂在线面试平台的代码编辑器界面,左侧是题目描述,要求手写快速排序算法,并分析时间复杂度。
上一轮王工的肯定还在耳边,但林晨清楚,二面才是真刀真枪。他活动了一下手指,目光扫过题目要求——不仅要写出来,还要解释优化点。
倒计时归零。
“林工,准备好了吗”?耳机里传来声音,比王工更沉稳些,带着一种技术人特有的冷静。
“准备好了”。林晨对着摄像头点点头。
“好,第一题,快速排序。给你十五分钟,写核心代码,然后讲思路”。面试官顿了顿,“提醒一下,我们关注边界条件、原地排序的实现,以及你在实际工程中如何应用或优化这个算法”。
林晨没有立刻敲代码。他盯着空白编辑器,脑海里先过了一遍流程:选基准、分区、递归。但面试官最后一句话是重点——实际工程应用。
他敲下第一行注释:“python实现,原地排序,避免递归过深时栈溢出风险”。
手指在键盘上跳动,代码流畅地出现。他刻意避开了教科书上最简单的递归版本,而是采用了栈模拟递归的迭代写法,并在分区函数里加入了针对近乎有序数组的优化——随机选择基准元素。
def quick_sort_iterative(arr):
if not arr or len(arr) <= 1:
return arr
stack = [(0, len(arr)-1)]
while stack:
low, high = stack.pop
if low >= high:
continue
# 随机选择基准,避免近乎有序数组退化到o(n^2)
pivot_idx = random.randint(low, high)
arr[low], arr[pivot_idx] = arr[pivot_idx], arr[low]
pivot = arr[low]
# 分区操作
i, j = low + 1, high
while i <= j:
while i <= j and arr[i] <= pivot:
i += 1
while i <= j and arr[j] > pivot:
j -= 1
if i < j:
arr[i], arr[j] = arr[j], arr[i]
arr[low], arr[j] = arr[j], arr[low]
# 先压入较大的区间,控制栈深度
if (j - low) > (high - j):
stack.append((low, j-1))
stack.append((j+1, high))
else:
stack.append((j+1, high))
stack.append((low, j-1))
return arr
写完代码,时间才过去八分钟。
“我写完了”。林晨说。
“比预期快”。面试官的声音听不出情绪,“先解释一下为什么用迭代而不是递归”?
“两个考虑”。林晨清了清嗓子,“第一,工程实践中,递归深度受系统栈限制,处理大规模数据有风险。第二,迭代版本更容易加入自定义的调度策略——比如我刚才优先处理较小分区,这能进一步控制栈的使用量”。
“随机选择基准呢”?
“这是应对实际数据分布的策略。教科书上的快速排序在最坏情况下——比如数组已经有序或逆序——会退化到o(n2)。真实业务数据常常有部分有序的特征,随机化能保证数学期望上的o(n log n),更稳定”。
面试官沉默了几秒,林晨能听到那头轻微的键盘敲击声,大概是在记录。
“时间复杂度分析”。
“平均情况o(n log n),最坏情况通过随机化避免,但理论上仍是o(n2)。空间复杂度,迭代版本是o(log n)的栈空间”。林晨顿了顿,“在实际工程中,如果数据量极大,我会考虑结合内省排序——当递归深度超过某个阈值时,切换到堆排序,保证最坏情况也是o(n log n)。这是c++ StL里sort函数的实现思路”。
又是一阵沉默,然后面试官说:“可以。下一题,用你理解的方式,讲解神经网络的反向传播原理”。
林晨精神一振。这才是他闭关六个月啃透的核心。
他没有直接说公式,而是从场景切入:“假设我们在训练一个识别猫图片的网络。前向传播时,输入一张图片,网络逐层计算,最后输出一个概率值——比如0.8,表示网络认为这张图有80%可能是猫”。
“但标签告诉我们,这其实是一张狗的照片,标签是0。那么网络就犯错了,误差是0.8”。
“反向传播要解决的,就是‘这个误差,应该如何分摊给网络中的每一个参数,让它们知道该往哪个方向调整’”。
林晨拿起手边的笔和纸,对着摄像头简单画了个三层网络示意图:“核心是链式法则。误差从输出层开始,先计算输出层权重对误差的梯度——‘如果我微调这个权重,误差会变化多少’。然后这个梯度会向后传递,成为前一层的‘误差信号’”。
“一层层往回传,就像涟漪反推。每一层都回答两个问题:第一,我的权重该怎么调;第二,我应该给我的前一层传递什么样的误差信号”。
他刻意避免陷入数学符号的海洋,而是用比喻:“可以想象成一家公司出了生产事故。总经理问责部门经理,部门经理问责组长,组长问责一线员工。每一层都要明确:自己该负多少责任,以及下属该负多少责任。反向传播就是那个‘责任追溯算法’”。
面试官突然插话:“那梯度消失和爆炸呢”?
“这正是链式法则的副作用”。林晨立刻接上,“梯度在反向传递时,每一层都要乘以该层的激活函数导数等因子。如果这些因子长期小于1,梯度越往前传就越小,直到消失——深层网络的前几层几乎得不到有效更新信号,这就是梯度消失。反之,如果因子长期大于1,梯度就会指数级放大,导致更新步长过大,网络震荡甚至溢出,这是梯度爆炸”。
“你在实际项目中遇到过吗?怎么解决”?
“在我的量化模型里,LStm层曾经有梯度消失迹象”。林晨实话实说,“我用了梯度裁剪应对爆炸风险,对消失问题,除了经典的正则化和合适的激活函数,更重要的是——我添加了残差连接。让前面层的输出不仅能通过非线性变换传递,还能直接‘跳过’几层到达后面,这样梯度就有了一条高速公路,避免在非线性变换中损耗殆尽”。
面试官“嗯”了一声:“那自然引向下一个问题:过拟合。你的模型怎么处理”?
林晨知道,这才是算法工程师的日常痛点。
“分几个层面”。他梳理思路,“第一,数据层面,扩充和增强。我的量化数据有限,但我通过时间序列的滑动窗口、加入可控噪声生成合成数据。第二,模型结构,我用dropout,在训练时随机‘关闭’一部分神经元,强迫网络不过度依赖某些特定路径。第三,正则化,L2正则给权重增加衰减惩罚,让模型偏好更小的参数,复杂度降低”。
“还有吗”?
“早停法”。林晨说,“我会在验证集上监控性能。一旦验证集损失连续几个epoch不降反升,就停止训练,哪怕训练集损失还在下降。因为那意味着模型已经开始‘死记硬背’训练数据,丧失了泛化能力”。
“这些方法,你在你的量化系统里都用了”?
“是的,而且组合使用”。林晨点头,“但我觉得最根本的对抗过拟合的方法,是理解业务逻辑。我的模型最终要生成交易信号,所以我设定了严格的逻辑约束——比如模型如果给出‘全仓买入某只近期暴雷股票’的信号,即使模型置信度再高,也会被规则层拦截。数据和逻辑双重校验,比单纯的技术手段更可靠”。
说完这句话,林晨忽然意识到自己说多了。这是技术面试,不是业务讨论。
但耳机里传来一声轻笑。
“有意思”。面试官说,“很多算法工程师只盯着技术指标,忘了模型最终要解决实际问题。你刚才提到规则层拦截,这其实是一种‘语义正则’——用先验知识约束模型空间”。
林晨松了口气。
“今天的算法部分就到这里”。面试官说,“整体不错。基础扎实,能联系工程实践,有自己的思考。尤其是对过拟合的理解,不止于技术手段”。
“谢谢”。
“不过”,面试官话锋一转,“算法工程师不能只懂算法。下一轮,我们会考察系统设计和实际场景的解决方案。准备好更开放的问题”。
屏幕暗下,面试结束。
林晨靠在椅背上,长长吐了口气。窗外,南山科技园的灯火次第亮起。他看了眼手机,下午五点十七分。苏婉还有一节课才下班,乐乐在幼儿园。
他顺手点开量化系统的监控终端。今日收益:+427.31元。系统自动执行了三笔小额交易,胜率100%。资金曲线缓慢而坚定地向上爬升。
比收益更让他安心的是日志里的那句话:“所有风控规则通过,信号逻辑与宏观数据流吻合”。
代码可以骗人,但逻辑不会。
林晨关掉界面,开始思考面试官最后那句话——“更开放的问题”。会是什么?分布式训练?模型部署?还是真实的业务场景题?
他起身走到厨房,接了杯水。冰箱上贴着乐乐画的画:一个歪歪扭扭的小人坐在电脑前,头顶写着“爸爸工作”。
看着画,林晨笑了笑。无论下一轮是什么,他得接着往前走。
手机震动,是张伟发来的微信:“面得如何?t厂二面一般是个技术leader,风格很务实,过了这关,后面hR面就稳了”。
林晨回复:“刚结束,感觉还行。面试官说下一轮是开放场景题”。
张伟秒回:“那大概率是系统设计或者案例分析。准备好纸笔,可能要画架构图。对了,这轮面试官是谁?说不定我认识”。
林晨这才想起,自己连对方名字都不知道。全程只称呼“面试官”。
他摇摇头,打字:“不知道,没自我介绍”。
张伟发来一个捂脸的表情:“t厂风格,技术面不问姓名,只看实力。等好消息吧”。
放下手机,林晨望向窗外。后海地铁站的人流开始密集,下班高峰期到了。那些匆匆身影里,有多少人和他一样,刚刚经历了一场看不见的考试?
他打开笔记本,新建了一个文档。标题写上:“开放场景题——可能的方向”。
手指悬在键盘上,他突然觉得,这种面对未知却积极准备的状态,比之前失业时的茫然,要好太多了。
至少,现在他有了可以攻克的“问题”。
而问题,总是有解的。
第98章 系统设计面
会议室的门被轻轻推开,林晨深吸一口气,走了进去。
这间会议室比之前视频面试那间更大,落地窗外是鹏城科技园错落有致的写字楼群。会议桌旁坐着一位看起来四十岁上下、戴着黑框眼镜的男士,穿着简单的灰色polo衫,面前放着一台笔记本电脑和一本摊开的笔记本。
“林晨是吧?请坐”。对方抬头,声音平和,“我是王毅,AI平台部的系统架构师。这一轮我们聊聊系统设计”。
“王老师好”。林晨拉开椅子坐下,将背包放在脚边。他注意到王毅的笔记本上已经写了几行字,字迹工整。
“放松点,这轮不是考你背八股文”。王毅笑了笑,推了推眼镜,“我们聊一个实际的业务场景:假设公司要为一个新的电商App搭建一个推荐系统,从零开始,你是技术负责人,需要设计整个技术架构和实现链路。给你五分钟思考,可以画图,可以列提纲,然后我们一步步聊”。
林晨心脏跳得快了一拍。这正是他过去几个月反复琢磨、并在自己那个量化投资系统中实践过的领域——构建一个完整的、可落地的AI系统流水线。他强迫自己冷静下来,从背包里拿出平板电脑和触控笔。
“可以用这个画吗”?
“当然,请便”。
五分钟。林晨脑中飞速运转。电商推荐系统……用户、商品、交互行为……离线训练、在线服务……特征工程、模型迭代……数据流、算力成本……他一边想,一边在平板上快速勾勒出几个大的模块框。
时间到。
王毅身体微微前倾:“好,我们从哪里开始”?
林晨将平板转向对方,清了清嗓子:“我习惯从业务目标反推技术架构。对于一个新电商App的推荐系统,核心业务目标有三个:提升用户点击率、增加订单转化率、优化用户停留时长。技术目标则需要支撑这三个业务目标,具体是:精准性、实时性、可扩展性、可维护性”。
王毅点点头,在笔记本上记了一笔:“继续”。
“基于这些目标,我会将整个系统划分为五个核心层”。林晨用笔尖点着平板上的框图,“第一层,数据层。这是地基。需要采集用户静态属性、商品属性,以及最重要的用户动态行为数据——浏览、点击、加购、下单、评价。数据采集端需要埋点规范,保证数据质量和一致性。存储方面,用户和商品属性这类更新不频繁的数据适合用mySqL或postgreSqL;行为流水数据量巨大且需要实时分析,我会用Kafka做消息队列缓冲,然后落地到hdFS或数据湖做离线分析,同时也会同步一份到clickhouse这类oLAp数据库供实时查询”。
他语速平稳,每个技术选型都带着简要理由。王毅听得认真,偶尔插问。
“为什么选clickhouse而不是druid或Kylin”?
“综合考虑查询性能、社区生态和运维成本”。林晨回答,“clickhouse在单表聚合查询上性能极佳,适合推荐系统里常见的‘用户最近30天行为统计’这类查询,而且部署相对简单。新团队初期资源有限,需要平衡性能和运维负担”。
“合理”。王毅示意他继续。
“第二层,特征工程层”。林晨切换到下一张图,“这是推荐系统的‘燃料加工厂’。原始数据不能直接喂给模型,需要提取特征。我会分为离线特征和实时特征两条流水线。离线特征主要利用夜间计算资源,处理历史数据,生成用户长期兴趣向量、商品热度统计、协同过滤矩阵等;实时特征则处理最近几分钟甚至几秒内的用户行为,捕捉即时兴趣变化,比如用户当前会话中点击了哪些类目”。
他详细描述了特征存储方案——离线特征存入Redis集群供白天服务读取,实时特征则通过Flink流处理实时更新到在线缓存。“这里的关键是特征版本的统一管理和回滚机制,防止特征不一致导致线上推荐效果抖动”。
王毅频频点头,手中的笔在纸上沙沙作响。
“第三层,模型层”。林晨进入了最核心的部分,“对于新App,冷启动是个大问题。我建议采用多模型混合的策略。初期数据少,可以用基于规则的策略(比如热门商品、新品推荐)和简单的协同过滤模型撑场面,快速上线。同时并行训练更复杂的模型,比如深度学习排序模型——我会先用wide&deep模型结构,兼顾记忆性和泛化性。等用户行为数据积累到一定量,再引入强化学习来优化长期用户满意度”。
他顿了顿,补充道:“模型训练方面,离线训练用tensorFlow或pytorch分布式训练框架,部署在公司的Kubernetes集群上,按需调度GpU资源。这里要设计好实验管理平台,方便算法工程师做A/b测试和模型迭代”。
“线上服务呢”?王毅追问,“模型怎么部署?延迟要求多少”?
“第四层,在线服务层”。林晨早有准备,“推荐系统的线上服务要求高吞吐、低延迟。我会将模型导出为Savedmodel或oNNx格式,用tF Serving或自研的c++高性能推理框架加载。服务部署采用多副本、负载均衡,保证可用性。整个推荐请求的端到端延迟要控制在100毫秒以内,其中模型推理部分不超过50毫秒”。
他详细描述了线上服务的流程:“用户打开App,请求到达推荐服务网关。服务首先从特征存储中拉取该用户的特征和候选商品特征,然后经过召回阶段——先用倒排索引或向量检索从百万级商品池中快速筛选出千级别的候选集,再经过精排模型对这批候选商品进行精准打分排序,最后经过重排阶段,考虑业务规则、多样性、新鲜度等因素,生成最终展示给用户的top N推荐列表”。
王毅听到这里,脸上露出了明显的赞许神色:“召回、精排、重排,链路很清晰。那么,最后一个层呢”?
“第五层,监控与反馈层”。林晨切到最后一幅图,“系统上线不是终点。需要建立完善的监控大盘:追踪推荐结果的曝光、点击、转化率等核心业务指标;监控服务qpS、延迟、错误率等性能指标;监控特征覆盖率、模型预测分数分布等算法指标。同时,用户对推荐结果的反馈(点击、跳过、长时间浏览等)需要实时回流到数据层,形成闭环,驱动模型持续迭代优化”。
他总结道:“这五层架构,从数据采集到模型迭代,形成一个完整的飞轮。系统设计时还需要考虑非功能需求:弹性扩缩容应对大促流量高峰;多机房部署保证容灾;数据隐私合规处理;以及最重要的——成本控制。比如,通过模型量化、蒸馏等技术优化推理成本;通过特征采样、负样本优化降低训练成本”。
说完,会议室里安静了几秒。
林晨手心有些出汗。他是不是讲得太细了?或者哪里出了纰漏?
王毅放下笔,双手交叉放在桌上,认真地看着林晨:“你之前做过完整的推荐系统项目”?
“没有直接在公司做过”。林晨坦诚道,“但我自己独立设计并实现了一个量化投资AI系统,从数据采集(金融市场数据)、特征工程(技术指标、基本面因子)、模型训练(时序预测、强化学习)、到在线交易和监控回测,走完了全链路。很多设计思路是相通的。另外,我研究了业界很多开源架构和论文,比如阿里、Youtube、Netflix的推荐系统技术博客”。
“自己动手做过,和只看文档,完全是两回事”。王毅感慨道,“你刚才提到的成本控制、特征版本管理、闭环反馈,这些都是实际项目中才会遇到的痛点。你的设计考虑得很周全,不仅知道要做什么,还知道为什么这么做,以及可能会踩什么坑”。
他翻看了一下面前的资料:“你之前是做跨境电商的?不是纯算法背景”?
“是的,做了十年全栈和业务开发。算法是最近半年多系统学习的”。
“难怪”。王毅笑了,“你的设计里有很强的工程思维,不是单纯追求模型精度。这对于AI落地来说,恰恰是最宝贵的。算法工程师很多,但能把算法变成稳定、高效、可扩展的在线系统的工程师,才是团队真正需要的”。
林晨心中一块石头落地,但不敢松懈。
王毅又问了几个深入的问题:如何解决推荐系统里的“信息茧房”问题?如何设计A/b测试平台来科学评估模型效果?如果线上服务出现性能劣化,排查步骤是什么?林晨结合自己的理解和实践,一一作答。
面试进行了将近一个小时。最后,王毅合上笔记本,站起身,主动向林晨伸出手:“今天的交流很愉快。你的系统设计能力超出了我的预期,尤其是考虑到你的背景转换时间这么短”。
林晨连忙起身握手:“谢谢王老师”。
“下一轮会是终面,面试官是我们部门的负责人,陈博士”。王毅透露道,“他会更关注你对AI技术发展的宏观思考,以及一些……嗯,更根本的问题。好好准备”。
陈博士。林晨记下了这个名字。
走出会议室,傍晚的阳光透过走廊窗户洒进来,在光洁的地板上拉出长长的光影。林晨站在窗边,俯瞰着科技园华灯初上的景象。密集的写字楼里,无数程序员还在敲打着代码,无数算法还在训练和推理。
他刚才描述的,不仅仅是一个面试答案,更是他为自己规划的、即将踏入的新世界蓝图。
手机震动了一下,是苏婉发来的微信:“面试怎么样?乐乐说想吃披萨,晚上庆祝一下”?
林晨回复:“还不错。吃披萨,我请客”。
他按下发送键,嘴角扬起。不管最终结果如何,今天,他清晰地看到了自己的成长轨迹——从被裁员时那个迷茫的中年码农,到现在能够从容设计复杂AI系统的准专家。
这条涅盘之路,他走得很踏实。
第99章 HR面
清晨七点半,林晨被手机闹钟准时唤醒。
他睁开眼,盯着天花板看了几秒,深吸一口气。今天是hR终面,理论上最后一关,也是最关键的一关——谈薪。
洗漱时,他看着镜子里的自己。三十五岁的面容,眼角细纹清晰可见,但眼神比三个月前刚失业时,多了几分沉静和笃定。胡茬刮得干净,换上那套面试专用的深灰色西装——这是苏婉用年终奖给他买的,说是“战袍”。
餐桌上,苏婉已经准备好了早餐:小米粥、水煮蛋、一小碟榨菜。
“紧张吗”?苏婉把粥推到他面前。
“有点”。林晨实话实说,“技术面都过了,王工评价也不错。但薪资……这次我不想再妥协了”。
“你上次说,t厂的薪资结构比较规范”?苏婉轻声问。
“嗯,基本工资+绩效+年终奖,年终奖一般有4-6个月,看部门效益和个人绩效。公积金全额顶格交,还有补充商业保险”。林晨剥着鸡蛋,“但关键还是base,base定了,其他都是乘数”。
苏婉点点头,没再多问。她懂林晨的压力:房贷每月一万二,乐乐幼儿园费用、日常开销……家庭每月硬性支出逼近两万。如果薪资达不到一定水平,即便入职,经济上的紧绷感也不会消失,甚至可能因为通勤成本、工作强度增加而更焦虑。
“我算过了”。林晨喝了一口粥,语气平静,“如果base能有48K,乘以16薪(按4个月年终奖保守估算),年包大概775万左右。扣除税和五险一金,每月到手大概三万出头。覆盖家庭开支、存下一些,还能继续投入我的投资系统。这是底线”。
“48K……”苏婉默念了一遍,“在鹏城,这个水平的AI岗位,多吗”?
“对于有经验的、能过t厂系统设计面的,不算离谱”。林晨放下勺子,“但我是转型,没有大厂AI项目背书,年龄也没优势。这是最大的变数”。
上午九点五十分,林晨提前抵达t厂位于南山科技园的办公大楼。
与前几次技术面试不同,hR面试被安排在一间更小、更温馨的会议室,落地窗外是郁郁葱葱的园区绿化。桌上甚至摆了一小盆绿萝。
十点整,一位三十多岁、穿着得体职业套装的女士准时推门而入。她笑容标准,手里拿着一个文件夹和一台平板。
“林先生您好,我是AI平台部的hRbp,我姓李”。她主动伸出手。
“李经理您好”。林晨起身握手。
寒暄几句后,李经理切入正题:“首先恭喜您通过了前面几轮专业面试,尤其是王工那边的系统设计面,反馈非常不错。我们部门负责人陈博士也看了您的面试记录,对您从工程落地角度思考AI系统的能力很感兴趣”。
“谢谢”。林晨保持微笑,心里却绷紧了弦。铺垫越好,往往意味着后面的谈判越需要谨慎。
“今天主要是最后一轮综合面,以及沟通一下岗位和薪酬期望”。李经理打开平板,“我先简单介绍一下这个岗位。这是AI平台部下设的‘算法工程化’小组的资深工程师岗位,主要职责是将研究团队的模型算法进行工程封装、性能优化、部署上线,并负责相关工具链的维护和开发。需要兼顾对算法原理的理解和扎实的工程实现能力。您之前的电商全链路架构设计思路,和这个岗位的匹配度很高”。
林晨仔细听着,这确实是他想要的方向——不是纯研究,也不是纯业务开发,而是中间层的核心工程。
“团队目前有8个人,您入职后,可能会负责其中一个子方向的推进。直接汇报对象是小组的tech Lead,也就是王工面试您的那位”。李经理继续道,“工作强度在t厂属于中等偏上,项目紧急时会有加班,但公司有加班费和调休制度。办公地点就在这里,偶尔需要去深汕合作区的数据中心支持”。
介绍完毕,李经理问了一些常规问题:职业规划、如何看待加班、团队协作中遇到分歧如何处理等。林晨的回答中规中矩,既展现了积极性,也体现了成熟度。
终于,话题来到了最关键的部分。
“林先生,方便了解一下您目前的薪资状况,以及对这个岗位的薪酬期望吗”?李经理的语气依旧平和,但眼神多了几分专注。
来了。林晨清了清嗓子,按照昨晚反复推演过的说辞开口:“我上一份工作在跨境电商公司,担任后端架构师,总包年薪大约60万。目前我处于离职状态”。
他顿了顿,观察了一下hR的表情,继续道:“对于这个岗位,我期望的月基本薪资是48K”。
会议室里安静了几秒。
李经理在平板上记录着,脸上笑容不变:“48K。能分享一下您这个期望值的考量吗”?
林晨知道,这是hR在试探他的底线和逻辑。
“主要基于几点”。林晨坐直身体,语气诚恳但坚定,“第一,市场价值。我调研过鹏城AI算法工程化方向,3-5年经验、具备全链路思维能力的资深工程师,薪资范围普遍在45K-65K之间。我有十年后端和架构经验,虽然AI项目经验是自学的,但通过之前的面试,我相信我的工程化能力和系统思维已经得到了验证,应该处于这个区间的中上水平”。
“第二,岗位价值。您刚才介绍的职责,需要同时对接算法研究和业务落地,对综合能力要求很高。这个岗位创造的价值,理应匹配相应的报酬”。
“第三,个人与家庭的实际需求”。林晨说到这里,稍微放慢语速,“我在鹏城安家,有房贷和家庭负担。一份能够让我安心投入工作、没有后顾之忧的薪资,能让我更好地为公司创造长期价值。我相信,稳定且有动力的员工,是双赢的基础”。
他说的都是实话,但把“家庭压力”转化为“长期稳定贡献的动力”,这是一种话术。
李经理听完,点了点头,没有立刻反驳,而是说:“您说的这些我们理解。t厂的薪酬体系是综合定薪,会参考岗位级别、候选人过往薪资、面试表现、以及内部薪酬带宽等因素。48K这个数字,对于您面试的p6级别岗位来说,属于偏高的期望值”。
p6。林晨心里一动,这是t厂的技术序列中级职称,通常对应3-8年经验的骨干工程师。和他预想的差不多。
“特别是考虑到您没有直接的AI大厂项目经验,属于转型入职”。李经理补充道,语气依然温和,但话语里的压力清晰可辨,“我们的薪资建议,可能会基于您上一份工作的薪资,给予一个合理的涨幅。直接给到48K的base,跨度比较大,可能需要特批”。
林晨的心微微下沉。但他没有慌乱,只是问:“那么,公司方面大概能给出的范围是多少呢”?
“这个需要我回去与招聘负责人、还有部门负责人陈博士沟通后才能确定”。李经理没有给出具体数字,这是hR的常规操作,“我会将您的期望和理由完整反馈上去。不过,我也需要坦诚地告诉您,最终的数字可能会低于您的期望,可能需要您有一定的调整空间”。
“我明白”。林晨点头,“但我相信我的能力和这个岗位的匹配度,也相信t厂对于真正合适的人才,会给出有竞争力的报酬。48K是我的诚恳期望,也是基于我现状和未来贡献的评估”。
他没有说“这是我的底线”,但语气和措辞已经表明了态度。
面试又进行了几分钟,李经理询问了入职时间、是否有其他offer在流程中(林晨如实说没有),最后再次表示会尽快推进流程。
十点四十,林晨走出t厂大楼。
初夏的阳光已经有些灼热,科技园里穿着各色文化衫的年轻人步履匆匆。他抬头看了眼高耸的腾讯大厦,心里五味杂陈。
技术关过了,但薪资这一关,依然悬而未决。hR那句“可能需要特批”,像一根细微的刺,扎在刚刚升起的希望上。
他没有立刻回家,而是在园区里慢慢走着。路过一家便利店,进去买了瓶冰水,靠在路边的栏杆上,看着车流。
手机震动了一下,是苏婉发来的微信:“面完了?怎么样”?
林晨想了想,回复:“面完了。提了48K,hR说偏高,需要内部沟通,让等消息”。
苏婉很快回复:“嗯,别多想,等结果吧。中午想吃什么?我给你做”。
简单的几句话,让林晨烦躁的心绪平复了一些。他拧开瓶盖,喝了一大口冰水。
回到家中,已是中午。苏婉做了他爱吃的辣椒炒肉和清炒菜心。饭桌上,两人都没怎么提面试的事,聊了聊乐乐在幼儿园的趣事。
下午,林晨照例坐在电脑前。他没有打开求职网站,而是点开了自己开发的智能投资系统。
经过近两个月的实盘磨合和持续优化,系统运行越来越稳定。最初投入的五万块本金,在经历了初期的小幅波动后,最近两周开始呈现 steady growth(稳定增长)的态势,目前总资产已经到了五万三千多。虽然绝对收益不多,但胜率、盈亏比、回撤控制等关键指标都达到了他的设计预期。
这小小的盈利,像黑暗中的一缕微光,给了他莫大的安慰和底气。
他调出系统的日志,仔细检查着今天的交易信号和执行情况。股票、期货、黄金、外汇……不同的策略模块在各自的时间窗口里安静地工作着,像一支纪律严明的小型军队。
“如果……如果t厂的offer薪资不理想”,林晨盯着屏幕上跳动的曲线,心里默默想着,“或许,我真的可以靠这条路走下去”?
但这个念头只是一闪而过。他知道,投资系统的稳定性和长期盈利能力还需要更长时间的验证,目前的收益远不足以支撑家庭。一份稳定的、有发展前景的工作,依然是当下的最优解。
只是,这份“最优解”的定价权,此刻并不完全在他手里。
傍晚,林晨收到了hR李经理发来的邮件,内容很简短:“林先生,您的面试流程已全部完成。薪酬事宜正在内部沟通中,预计1-3个工作日内会有进一步消息。请耐心等待”。
标准化的措辞,看不出任何倾向。
林晨回复了“谢谢”,关上邮箱。
等待,又是等待。从失业到现在,他似乎一直在等待:等待面试通知,等待面试结果,等待offer,等待薪资审批……
但这一次的等待,似乎格外漫长。因为这一次,他离目标如此之近,近到几乎能触摸到那份职业转型后的新生活。
深夜,林晨躺在床上,辗转难眠。苏婉已经睡着了,呼吸均匀。
他拿起手机,无意识地刷着技术论坛。忽然,一条来自前同事张伟的微信跳了出来:
“老林,听说你面t厂AI部门了?走到哪一步了”?
林晨精神一振,回复:“刚走完全部面试,在等hR谈薪结果”。
张伟很快回过来:“牛逼啊!能走到终面,技术肯定过关了。哪个部门?AI平台部”?
“对”。
“那个部门老大陈博士,是个狠人,技术眼光毒得很。他能让你过,说明你真有两把刷子”。张伟发了个竖起大拇指的表情,“不过最近听说t厂那边整体在控hc(人头)和成本,薪资批得比较严。你期望多少”?
林晨犹豫了一下,还是说了:“48K base”。
对话框显示“对方正在输入…”,过了好一会儿,张伟的消息才过来:“这个数……有点挑战。不过你情况特殊,转型成功的话,这个价也值。等结果吧,有啥需要打听的,跟我说”。
“谢谢伟哥”。
放下手机,林晨望着天花板。张伟的消息,既带来了些许安慰(陈博士是“狠人”,认可了技术),也印证了hR说的“需要特批”可能并非完全是托词。
控成本,严审批……这些宏观因素,是他无法控制的。
他能控制的,只有自己的能力和底线。
窗外,鹏城的夜景璀璨如星河。这座城市的繁华与机会,似乎触手可及,又似乎隔着一层看不见的玻璃。
林晨闭上眼,强迫自己入睡。
明天,又是新的一天。无论结果如何,生活总要继续,代码总要写下去。
只是,在梦境边缘,那个关于48K的数字,依旧在轻轻叩问。
第100章 曙光初现
晚上九点半,鹏城宝安老小区的书房里面,只有键盘敲击声和机箱风扇的低鸣。
林晨刚优化完一小段特征工程的代码,端起已经凉透的茶水喝了一口。屏幕右下角,邮箱图标突然跳动起来。
他心脏猛地一缩。
点开。
发件人:t厂招聘组。标题:关于您近期应聘AI开发岗位的反馈。
手指悬在触控板上停顿了三秒,林晨深吸一口气,点开邮件。
“尊敬的林晨先生:非常感谢您参与我司AI开发岗位的面试流程。经过综合评估,我们认为您的技术能力与项目经验符合岗位要求,但在薪资预期方面,您提出的48K月薪与我司对该级别岗位的薪酬架构存在一定差距。鉴于当前整体hc(headcount)与成本控制政策,我们暂时无法为您提供符合预期的offer。我们已将您的资料存入人才库,未来如有更匹配的机会,会优先与您联系。再次感谢您对t厂的关注与投入,祝您前程似锦”。
邮件很标准,很hR,也很冰冷。
林晨靠在椅背上,望着屏幕上那几行字。奇怪的是,预想中的巨大失落感并没有席卷而来。没有愤怒,没有不甘,甚至连之前面试web3公司失败时那种憋屈感都淡了许多。
他反而……松了一口气。
像是终于等到了另一只靴子落地。悬了三天的心,反而落回了实处。
他关掉邮件窗口,没有像往常那样立刻陷入自我怀疑或焦虑计算房贷还能撑几个月。而是顺手点开了另一个一直在后台默默运行的终端窗口。
那是他的“启明”量化系统实时监控界面。
命令行里,绿色的数字在跳动。今日预估收益:+ 3,127.86元。
林晨盯着那个数字,嘴角慢慢扯开一个弧度。
三千块。不多。甚至不如他以前在跨境电商公司旺季时一个月的加班费。但这是系统自动运行,在他写代码、面试、甚至睡觉时,默默为他赚来的。是纯利润。
他点开详细的交易日志。过去一周,系统在A股市场进行了17笔短线交易,胜率76.5%,夏普比率稳定在1.2以上。虽然资金量小(他目前只投入了七万块实盘测试),但曲线是平滑向上的。
就在刚才,在他收到t厂拒信的同一时刻,系统刚刚自动平仓了一笔小盘股的短线操作,获利四百多块。
一种奇异的对比感涌上心头。
一边是代表着传统职业路径、光鲜大厂身份的offer,因“薪资架构”和“成本控制”而关闭大门。另一边,是自己用代码一点点搭建起来、尚显稚嫩却实实在在产生收益的“机器”。
哪一个更真实?哪一个更可控?
林晨站起身,走到狭小的阳台。夜色中的城中村依然喧闹,大排档的油烟味飘上来,远处科技园的玻璃幕墙在夜色中亮着片片灯火,那里就有t厂的大楼。
他曾经无比渴望走进那些灯火里,仿佛那里才有安全感和价值认同。
但现在,他看着自己屋内那台嗡嗡作响的电脑主机,里面跑着他四个多月心血凝聚的系统,心里却生出一种前所未有的踏实感。
“代码可以骗人,但逻辑不会”。他低声重复了一遍自己常想的话,“收益数字,更不会”。
这6个月,他经历了什么?35岁被裁员,存款消耗,面试屡屡因薪资碰壁,家庭压力,自我怀疑……但同时,他也从零啃下了机器学习、深度学习,用python和tensorFlow搭建了第一个能跑起来的模型,不断迭代,直到它能在真实市场里赚到钱。
这条路,是他自己一拳一脚打出来的。没人给他画饼,没人给他设限。成与败,责任和成果,都百分百属于自己。
t厂的拒绝,与其说是一次失败,不如说是一次清晰的提示:那条按部就班、依赖平台光环和职级薪酬体系的路,对他这个年龄、这种背景的转型者,或许已经越来越窄,代价(降薪妥协)越来越高。
而另一条路——虽然艰难、孤独、充满不确定性——却正在他脚下隐隐透出光亮。
手机震动了一下,是妻子苏婉发来的微信:“乐乐睡了。今天面试有消息了吗”?
林晨打字回复:“刚收到邮件,没成。薪资没谈拢”。
苏婉很快回复:“没事的,老公。别灰心。你最近太累了,早点休息”。
林晨看着屏幕,心里暖了一下。他继续打字:“没灰心。反而想清楚了。可能我就不该把所有希望都押在找一份‘好工作’上。我做的那个投资系统,今天又赚了三千。虽然不多,但它在持续赚钱”。
苏婉:“真的吗?那太好了!不过……这个稳定吗?风险大不大”?
林晨:“有风险,但我一直在优化风控模块。至少,它给了我另一条思路。我想先集中精力把它做好,做出规模。找工作的事,可以暂时放一放,有特别好的机会再看”。
苏婉发来一个拥抱的表情:“我和乐乐都支持你。你觉得对的路,就去走。家里还有点积蓄,你别太有压力”。
放下手机,林晨回到电脑前。他没有再去看招聘网站,也没有去修改简历。他打开了“启明”量化系统的系统架构图。
之前因为要准备面试,系统的优化进度慢了下来。现在,障碍消失了——或者说,选择变得清晰了。
他新建了一个文档,标题写上:“启明智投一号V2.0优化清单”。
强化风控引擎:引入动态回撤控制,加入更多极端市场情景模拟。不仅要赚,更要活下来。
扩大资产类别:目前只做了A股短线。下一步接入期货ctA策略(需要模拟盘充分测试),研究黄金EtF的波段规律。
提升信号质量:引入更多另类数据源(舆情、产业链数据),尝试用更复杂的神经网络结构(如LStm、transformer)处理时序特征。
优化执行链路:降低交易滑点,研究算法订单拆分。
完善监控与告警:做一套可视化dashboard,手机能随时查看关键指标和异常警报。
列完清单,林晨估算了一下时间。全力投入的话,完成V2.0大概需要两个月。这期间,系统V1.0用现有资金继续运行。
如果V2.0的回测和模拟盘表现能达到预期,那么……他就可以考虑逐步增加实盘资金了。不再只是七万块。
这个想法让他心跳微微加速。不是焦虑,而是兴奋。一种久违的、对创造某样东西并亲眼见证它成长的兴奋。
窗外的喧嚣渐渐平息。夜已深。
林晨最后看了一眼邮箱,那封拒信还躺在收件箱里。他笑了笑,没有删除,也没有标记为未读。就让它留在那里吧,像一个路标,提醒他曾经走过哪里,又转向了何方。
他关掉大灯,只留下屏幕的微光。手指重新放回键盘,敲下了新代码文件的第一行:
启明智投一号 V2.0 - 风控核心模块升级
目标:在不确定性中,寻找确定性更高的收益路径。
作者:林晨 日期:今夜,及未来无数夜。
屏幕的光映着他专注的脸。焦虑褪去,迷茫消散,一种清晰而坚定的力量,在寂静的代码世界中悄然生长。
鹏城的夜空看不到太多星星,但城中村这扇小小的窗户里,一颗属于自己的星,正开始发出微光。
天,就快亮了。
第101章 调整心态
清晨六点半,鹏城的天空泛着鱼肚白。
林晨准时醒来,没有闹钟,也没有失业初期那种心悸般的惊醒。他轻手轻脚地起床,看了一眼身旁熟睡的苏婉和儿子乐乐,嘴角不自觉地微微上扬。厨房里,他给自己冲了杯黑咖啡,端着杯子走到书房的电脑前。
屏幕亮起,首先映入眼帘的是“启明智投一号V2.0”的开发计划文档。昨晚他写到凌晨一点,将V2.0的架构拆解成了十几个具体的模块和任务项,排好了优先级。旁边另一个窗口,是昨晚收盘后自动生成的当日投资报告。
“昨日收益:+2876.43元。月度累计收益:+18,542.67元。账户总资产:83,876.21元”。
他的目光在“账户总资产”的数字上停留了几秒。八万三千多,比起他曾经的年薪,微不足道。比起鹏城湾的房价,更是九牛一毛。但这个数字的意义不在于多少,而在于方向——它正在持续地、稳定地向上增长。
更重要的是,它代表着一种可能性。一种不依赖于任何公司、任何老板,只依赖于自己写的代码和构建的逻辑,就能产生现金流的可能性。
他抿了一口咖啡,苦涩中带着醇香。过去几个月那种被房贷、家庭开支、求职压力逼到墙角的窒息感,正在一点点消散。不是压力消失了,而是他找到了一个可以喘息的支点。
“代码可以骗人,但逻辑不会,人更不能”。他想起自己常念叨的这句话。投资系统不会骗他,它忠实地执行着他设定的策略,在市场波动中捕捉那些微小的、确定的概率优势。这给了他一种前所未有的踏实感。
上午九点,送完乐乐上幼儿园的苏婉回到家,看到林晨还坐在电脑前,屏幕上是复杂的代码和图表。
“今天不投简历了”?苏婉走过来,双手轻轻搭在他肩上。
“暂时不投了”。林晨身体向后靠了靠,握住她的手,“我想明白了。之前我太着急,总想着快点找到一份高薪工作填补空缺,证明自己‘没问题’。结果就像无头苍蝇,到处碰壁,心态也搞坏了”。
“那现在怎么想”?
“现在”?林晨指了指屏幕上的系统界面和开发计划,“现在我有两条腿走路。一条腿是‘启明智投一号’,它现在能给我提供基本的生活现金流,而且我有信心把它做得更好,让这条腿越来越粗。另一条腿,才是真正的职业发展”。
他切换屏幕,打开一个新的思维导图,标题是“AI深度学习进阶路径”。
“我之前自学,主要是为了应付面试,学得比较杂,也比较浅。现在,我想系统地、深入地啃一遍”。林晨的鼠标在导图上移动,“从transformer架构开始,把bERt、Gpt这些经典模型的原论文精读一遍,不只是调用ApI,要理解每一个设计选择背后的数学原理和工程权衡。然后,用pytorch从零开始实现几个核心模块……”
他说得眼睛发亮,苏婉虽然听不懂那些技术名词,却能感受到丈夫身上重新燃起的那种专注和热情。那是在他刚毕业、对编程充满无限好奇时才有的状态。
“需要多久”?苏婉问了一个很实际的问题。
“至少三个月,全职投入的话”。林晨估算道,“这期间,‘智投一号’的优化升级同步进行。等我觉得技术储备差不多了,再重新瞄准目标”。
“目标是什么”?
林晨深吸一口气,吐出两个字:“t厂”。
苏婉微微一愣:“他们不是刚拒绝……”
“他们拒绝的是那个要价120万、但可能只有80万实力的我”。林晨摇摇头,眼神坚定,“等我用三个月时间,把实力提升到匹配120万,甚至更高的水平,再去敲他们的门。或者,是其他同级别的一线大厂。A厂、h厂、b厂……他们的核心AI部门,才是我想去的地方”。
他顿了顿,语气变得沉稳而清晰:“我不再追求‘尽快找到一份工作’,我追求的是‘进入那个能让我接触到最前沿AI技术、参与定义未来’的圈子。为此,我愿意沉下心来,补上该补的课”。
苏婉看着丈夫侧脸上那抹熟悉的倔强和理性,心里最后一丝担忧也化为了支持。她知道,当林晨用这种语气制定计划时,通常意味着他已经考虑清楚了所有的变量和路径。
“需要我做什么”?她问。
“照顾好乐乐,还有……”林晨笑了笑,“偶尔提醒我,别学得太疯,忘了吃饭。另外,家里的开支,这几个月可能还得紧一点,虽然系统有收益,但我打算大部分利润都作为本金复投进去,让它滚起来”。
“没问题”。苏婉干脆地点头,“我的工资够覆盖日常开销和房贷。你就安心学你的”。
接下来的日子,林晨的生活进入了高度规律化的节奏。
早晨六点半起床,七点到八点,处理“启明智投一号”的日常监控、数据复盘,微调参数。八点到九点,早餐、送娃(如果苏婉早课则由他送)。九点到十二点,是第一个深度学习时段,通常用于精读论文、推导公式。
午休一小时,他强迫自己离开电脑,听听音乐,或者就在小区里走走。鹏城初夏的阳光已经开始炽烈,科技园附近的街道上,随处可见穿着各色文化衫的年轻程序员们匆匆而过,手里端着咖啡,讨论着需求、bug和算法。林晨混迹其中,却感觉心态已然不同。他不再是那个焦虑的求职者,而更像一个观察者,一个蓄力的潜行者。
下午一点到六点,是动手实践时间。他在Github上新建了一个私人仓库,命名为“AI_涅盘之路”。里面按照日期和主题,分门别类地存放他实现的代码。从最简单的多层感知机,到cNN、RNN,再到难度飙升的transformer的Self-Attention机制、positional Encoding……他强迫自己不只是复制粘贴,每一行代码都要理解,都要能回答出“为什么这样写”。
遇到卡壳的地方,他就去Stack overflow、知乎、各种专业论坛上搜索,或者翻看国内外顶尖高校的公开课视频。有时候一个技术难点能卡住他一两天,但攻克之后的成就感,远比拿到一个面试邀请更实在。
晚上七点到九点,是家庭时间,陪乐乐玩,和苏婉聊天。九点以后,如果精力允许,他会再花一两个小时,推进“启明智投一号V2.0”的开发,或者看看财经新闻、研报,思考如何将新学的AI模型应用到更复杂的市场预测中。
每周五晚上,他会雷打不动地和一个老朋友视频连线——前同事张伟。
“哟,林总,气色不错啊,看来在家修炼得挺好”?屏幕里的张伟依然是一副乐天派的样子,背景是他那堆满了机械键盘和手办的工位。
“别调侃我了”。林晨笑道,“就是按计划学着呢。最近在啃transformer,头大”。
“正常,那玩意儿刚出来的时候我们也懵”。张伟喝了口可乐,“不过你方向是对的。现在不管是大厂还是我们这种搞web3的,底层都在向transformer架构靠拢。你既然瞄准了t厂AI部门,这个就是必考题,而且得答得深”。
“你们那边最近怎么样?还是那么忙”?
“忙,区块链性能优化,老难题了”。张伟摆摆手,“不过说正事,你既然定了目标,光埋头学也不行,得有点‘作品’或者能拿出手的东西。光说‘我学过’,分量不够”。
林晨点头:“我也在想这个问题。‘启明智投一号’算一个,但毕竟是交易系统,涉及实盘,不太好直接展示细节。我打算用学的模型,在Kaggle上找几个有挑战性的比赛打一打,或者自己搞个小项目”。
“Kaggle可以,能上榜最好,不上榜也能证明你有解决实际问题的工程能力”。张伟想了想,“另外,t厂AI部门的老大,陈博士,我听说过,技术眼光很毒,喜欢有自己独立思考的人。你到时候面试,除了技术细节,最好能有点自己对AI发展的见解,哪怕是雏形,也能加分”。
“陈博士”?林晨记下了这个名字,“有什么公开资料或者论文倾向吗”?
“我帮你留意一下,回头发你。对了”,张伟忽然压低声音,“我们公司有个投资的小道消息,跟AI芯片设计有关,不算内幕,就是行业动态,你要不要听听?说不定对你的系统或者学习方向有启发……”
夜深了,鹏城的灯火依旧璀璨。
林晨结束和张伟的通话,走到阳台上。晚风带着些许凉意,吹散了书房里闷了一天的代码气息。楼下街道上,晚归的车流汇成一条光的河流。
三个月。他在心里再次确认这个时间表。
用三个月时间,完成一次真正意义上的技术涅盘。不是为了逃避失业,而是为了积蓄力量,朝着那个真正向往的技术高峰发起冲击。
“启明智投一号”的收益曲线在脑海中平稳上升,AI学习路径图上的一个个节点被点亮。焦虑被一种沉静的期待所取代。他知道这条路不容易,深度学习的每一个台阶都陡峭无比,但他更知道,自己已经没有退路,也不想再有退路。
转身回到书房,他打开了一个新的空白文档,敲下了标题:“关于AI模型物理成本与优化效率的思考——从一次失败的量化交易尝试说起”。
这是他在优化“启明智投一号”风控模块时产生的一个模糊想法,还没成型。但或许,它可以成为未来某个时刻,与那位“陈博士”对话的一个引子。
屏幕的微光映着他专注的脸。窗外,鹏城不眠,而属于他的战斗,才刚刚以一种更沉稳、更坚定的方式,重新开始。
第102章 深度学习进阶
窗外的鹏城湾在晨曦中泛起粼粼波光,林晨已经坐在电脑前两个小时了。
书桌上摊开着打印出来的论文——《Attention Is All You Need》。A4纸上用红蓝两色笔画满了圈圈线线,旁边是他密密麻麻的手写笔记。三个月深度学习计划进入第二周,他终于开始啃这块硬骨头。
“注意力机制……”林晨喃喃自语,手指在键盘上敲下一行注释,“就像人读文章时,不会平均关注每个字,而是会把重点放在关键词上”。
这个概念听起来简单,但数学表达却让他头疼。q(查询)、K(键)、V(值)三个矩阵的运算,缩放点积注意力,多头注意力……他打开Jupyter Notebook,决定从最基础的开始实现。
import torch
import torch.nn as nn
import math
class ScaleddotproductAttention(nn.module):
def __init__(self, dropout=0.1):
super.__init__
self.dropout = nn.dropout(dropout)
def forward(self, q, K, V, mask=None):
# 计算注意力分数: q * K^t / sqrt(d_k)
d_k = K.size(-1)
scores = torch.matmul(q, K.transpose(-2, -1)) / math.sqrt(d_k)
if mask is not None:
scores = scores.masked_fill(mask == 0, -1e9)
# Softmax归一化
attention_weights = torch.softmax(scores, dim=-1)
attention_weights = self.dropout(attention_weights)
# 加权求和
output = torch.matmul(attention_weights, V)
return output, attention_weights
写完这段代码,林晨长舒一口气。他创建了几个随机张量进行测试,看着注意力权重矩阵在控制台打印出来——那些数值确实呈现出“聚焦”特征,某些位置的权重明显高于其他位置。
“有点意思”。他嘴角扬起。
接下来的三天,林晨完全沉浸在transformer架构的世界里。他画了十几张架构图,从编码器到解码器,从位置编码到前馈神经网络。每理解一个组件,他就在pytorch里实现一遍。
位置编码是他觉得最精妙的设计之一。“既然transformer没有RNN那样的序列顺序概念,就得通过位置编码告诉模型每个词的位置信息”。他在笔记里写道,“正弦余弦函数的交替使用,既能表示绝对位置,又能捕捉相对位置关系,而且可以扩展到任意长度……”
他翻出那篇着名的《the Annotated transformer》博客,对照着逐行理解。遇到卡壳的地方,就跑到Github上找开源实现参考,或者在Stack overflow上搜索相关问题。
周五晚上十点,苏婉端着一盘切好的水果走进书房。
“还在研究那个什么……变形金刚”?她把水果放在桌角,俯身看向屏幕。
“是transformer”。林晨笑着纠正,伸手揽住妻子的腰,“不过你说得对,这架构确实像变形金刚——模块化、可组合、威力强大”。
苏婉看着屏幕上那些复杂的数学公式和代码,轻轻摇头:“我看不懂,但能感觉到你很享受这个过程”。
“确实”。林晨叉起一块苹果,“以前做电商后端,大部分时间在堆业务逻辑。现在学这些东西,有种在触碰技术本质的感觉。每个公式、每个设计选择背后,都有一套严密的逻辑”。
他指着屏幕上的多头注意力示意图:“你看,就像这个多头机制。单头注意力可能只关注一种关系,比如‘动词-宾语’。但八个头一起工作,就能同时关注语法、语义、指代等多种关系——这设计多优雅”。
苏婉笑了:“你现在说起技术,眼睛会发光”。
林晨一愣,随即意识到这是真的。失业初期的焦虑和迷茫,已经被一种更扎实的东西取代——对知识的渴求,对理解的成就感。
周末两天,林晨决定挑战自己:实现一个mini-Gpt。
这不是简单的照搬教程。他给自己设定了几个目标:
1. 从零实现transformer解码器架构;
2. 用wikitext-2数据集训练;
3. 能生成连贯的文本;
4. 代码要整洁、模块化、有完整注释。
周日上午,他开始准备数据。
import torchtext
from torchtext.datasets import wikitext2
from torchtext.data.utils import get_tokenizer
from torchtext.vocab import build_vocab_from_iterator
# 加载数据集
train_iter = wikitext2(split=train)
tokenizer = get_tokenizer(basic_english)
def yield_tokens(data_iter):
for text in data_iter:
yield tokenizer(text)
# 构建词表
vocab = build_vocab_from_iterator(yield_tokens(train_iter), specials=[<unk><pad><bos><eos>])
vocab.set_default_index(vocab[<unk>])
print(f词表大小: {len(vocab)}) # 输出:
三万多词的词表,对于mini模型来说太大了。林晨决定只保留前个高频词,其余统一映射为<unk>。他知道这会损失一些信息,但训练速度和内存占用会更友好。
下午,他开始搭建模型核心。transformer块、层归一化、残差连接……他像搭积木一样,把之前实现的组件组合起来。
最考验他的是训练循环的设计。学习率调度、梯度裁剪、损失计算,每一个细节都可能影响最终效果。他参考了hugging Face的源码,但做了大量简化——毕竟这只是个教学性质的mini模型。
周一凌晨一点,代码终于跑起来了。
林晨盯着屏幕上滚动的训练日志,看着损失值从8.5逐渐下降到4.2。虽然离真正可用的语言模型还差很远,但那些数字的下降曲线,在他眼中比任何风景都美。
训练了五个epoch后,他写了一个简单的生成函数。
def generate_text(model, start_text, max_len=50, temperature=0.8):
model.eval
tokens = tokenizer(start_text)
token_ids = [vocab[<bos>]] + [vocab[token] for token in tokens]
for _ in range(max_len):
input_tensor = torch.tensor(token_ids).unsqueeze(0) # [1, seq_len]
with torch.no_grad:
output = model(input_tensor)
# 取最后一个时间步的logits
next_token_logits = output[0, -1, :] / temperature
next_token_probs = torch.softmax(next_token_logits, dim=-1)
# 基于概率采样
next_token_id = torch.multinomial(next_token_probs, num_samples=1).item
if next_token_id == vocab[<eos>]:
break
token_ids.append(next_token_id)
# 将token Ids转换回文本
generated_tokens = []
for token_id in token_ids[1:]: # 跳过<bos>
if token_id == vocab[<eos>]:
break
generated_tokens.append(vocab.get_itos[token_id])
return .join(generated_tokens)
他输入起始文本:“the future of artificial intelligence”。
模型思考了几秒钟——实际上是GpU在进行矩阵运算——然后开始输出:
“the future of artificial intelligence is not only about the development of new algorithms but also about the integration with human cognitive processes and the ethical considerations that must be addressed in the design of such systems.”
林晨盯着这行文本,愣住了。
虽然语法简单,用词基础,但逻辑是连贯的!更重要的是,这短短一句话里包含了三个层次:技术发展、人机融合、伦理考量——这恰好是当前AI讨论的核心议题。
“它……理解了”。林晨喃喃道。
他知道这不过是统计概率的产物,是模型从训练数据中学习到的模式。但那种“理解”的错觉,那种从无序数据中涌现出有序思想的魔力,让他第一次真切感受到了语言模型的威力。
窗外天色渐亮,鹏城湾对岸的科兴科学园开始亮起零星灯光。那些灯火通明的办公楼里,正有成千上万的工程师在训练比他的mini-Gpt庞大千倍、万倍的模型。
林晨保存了所有代码和笔记,在项目REAdmE里写下:“mini-Gpt v0.1 - 从零实现的transformer语言模型,参数量约500万,在wikitext-2上训练5个epoch”。
他打开那份已经写了十几页的《关于AI模型物理成本与优化效率的思考》文档,在末尾添加了一段:
“实现mini-Gpt的过程让我意识到,transformer的成功不仅在于其架构优越性,更在于它提供了一种清晰的‘计算范式’。每一个注意力头、每一层前馈网络,都可以被精确地量化为FLops(浮点运算次数)和内存访问量。这种可量化性,是优化物理成本的基础”。
写完这段话,他忽然想到什么,重新打开生成函数,输入新的起始文本:
“what should I prepare for an AI engineer interview at a top tech pany?”
模型输出:“You should have a solid understanding of machine learning fundamentals, deep learning architectures, programming skills in python, experience with frameworks like pytorch or tensorFlow, and the ability to solve practical problems with code.”
林晨笑了。虽然回答很模板化,但方向是对的。
他关掉电脑,走到阳台。晨风带着海水的咸味扑面而来,远处的地平线泛起鱼肚白。
三个月计划才刚开始,但他已经能感觉到自己的代码能力在发生质变。从前端到后端,从业务逻辑到算法实现,从调包侠到能亲手搭建transformer——这种成长是实实在在的。
手机震动了一下,是“启明智投一号”的每日收益报告。过去一周,系统在黄金和A股板块的短线操作中又获得了3.2%的收益。账户总资产已经悄悄突破了九万。
经济压力在缓解,技术能力在提升,方向越来越清晰。
林晨深吸一口清晨的空气,回到书房。他打开招聘网站,在搜索框输入“AI工程师”,筛选条件选择“鹏城”、“深度学习”、“pytorch”。
几十个职位跳出来,其中不乏t厂、A厂、h厂等大厂的核心AI部门。
他点开t厂AI Lab的招聘页面,职位描述里写着:“负责大规模预训练语言模型的研发与优化,要求深入理解transformer架构,有从零实现模型的经验……”
林晨的目光落在“从零实现模型的经验”这几个字上。
他看了看自己刚刚完成的mini-Gpt项目,又看了看那份还在完善的《物理成本与优化效率》文档。
一个念头清晰起来:是时候开始准备面试了。
但他不打算海投简历。他要瞄准最核心的岗位,用最扎实的准备,去打一场有把握的仗。
就像他的投资系统——不追求高频交易,只等待高概率机会,然后全力出击。
林晨新建了一个文件夹,命名为“面试准备”。里面第一个文档,他写下了标题:“如何向面试官解释注意力机制——从直觉到数学,从代码到应用”。
窗外,鹏城的又一个工作日开始了。
而他,已经准备好了奔跑的姿势。
第103章 论文阅读
鹏城的秋雨来得突然,打在书房的窗户上,噼啪作响。林晨关掉mini-Gpt的训练日志页面,屏幕上最后一行显示着验证集上的困惑度(perplexity)——一个比初始值低了不少的数字,证明他那个玩具模型确实学到了东西。
成就感是实实在在的,但短暂的兴奋过后,一种更深层的“虚”感浮现出来。
他能搭出架构,能跑通代码,甚至能训练出一个能生成像样句子的小模型。可如果面试官追问:“为什么transformer要用LayerNorm而不是batchNorm”?“多头注意力的‘头’数选择依据是什么?除了论文里说的,你有没有自己的见解”?“最近moE(mixture of Experts)架构火起来了,你觉得它和标准transformer的优劣对比,核心矛盾在哪里”?
他恐怕只能回答出教科书和博客里的标准答案,而缺乏那种基于大量文献阅读和独立思考形成的、属于自己的“技术观”。
“地基还不够深”。林晨对自己说。实践让他有了“手感”,但要想在顶尖技术面试中脱颖而出,甚至未来在t厂那样的地方站稳脚跟,必须对前沿动向和理论基础有系统性的把握。光会调包和实现是远远不够的。
他打开了那个新建的“面试准备”文件夹,在里面又创建了一个子文件夹,命名为“paper_Reading”。
目标明确:系统阅读最近五年(主要2021-2025)AI顶级会议的论文。优先级:NeurIpS(神经信息处理系统大会)、IcmL(国际机器学习大会)、cVpR(计算机视觉与模式识别会议,虽然偏视觉,但很多架构思想通用)。自然语言处理顶会AcL、EmNLp也需关注。
第一步是收集。arxiv(预印本网站)是主战场,但海量论文让人眼花缭乱。他记得一些技术大佬的博客提到过筛选方法:关注最佳论文(best paper)、口头报告(oral)和亮点论文(Spotlight);关注谷歌、meta、openAI等巨头实验室以及斯坦福、mIt、cmU等顶尖高校知名课题组的工作;在知乎、twitter(现x)上跟随一些活跃的研究者,看他们推荐什么。
他花了一上午时间,像蜘蛛结网一样,从一篇引用率极高的2022年NeurIpS最佳论文《transformers are SSms:》开始,通过它的参考文献和引用它的文章,不断延伸,初步筛选出了三十多篇他认为必须精读或至少泛读的论文。主题涵盖:transformer变体与效率优化(如Linear Attention、FlashAttention)、大模型训练技巧(如LLamA系列技术报告)、扩散模型(diffusion)基础、多模态(尤其是视觉-语言模型)最新进展,以及一些看起来就很有意思的新方向,如基于状态空间模型(SSm)的mamba架构。
下午,雨势稍歇。林晨泡了杯浓茶,正式开始了他的“论文攻坚战”。
第一篇选择的是谷歌关于moE架构在大语言模型中应用的详细研究论文。光是摘要和引言就让他反复看了三遍。满眼的“sparsely-activated”、“conditional putation”、“expert capacity”、“load balancing loss”……每个词似乎都认识,连起来却构成了一堵坚硬的术语墙。
他深吸一口气,没有跳过,也没有急着去搜中文博客。而是拿出一个崭新的墨绿色硬壳笔记本——这是苏婉前两天买给他的,说是“奖励他学习用功”——和一支顺滑的钢笔。
“第一步,抄写摘要和核心问题定义,用自己的话复述一遍”。他定下规矩。
笔尖在纸上沙沙作响。遇到不理解的术语,他就在旁边划条线,转到浏览器打开Google Scholar或相关开源项目文档去查。这个过程极其缓慢,读了两页正文,花了一个多小时,笔记本上才记了不到一页。其中大半是他自己的批注和疑问:
“这里说的‘专家’(Expert)其实就是前馈网络(FFN)层?每个token根据路由(Router)选择激活少数几个‘专家’……目的是大幅增加模型总参数量(万亿级别)但保持实际计算量(激活参数量)相对恒定?核心是解决‘大模型’与‘计算成本’的矛盾”?
“负载均衡损失函数……是为了防止某些‘专家’总是被选到,而其他‘专家’闲置?如何确保路由学习的稳定性?”
“Figure 2 的示意图看了半天才懂,路由网络和专家网络是并行的……嗯,有点像去一个超大型自助餐厅,每个顾客(token)先到导购台(Router)拿到推荐菜牌(选择少数几个专家),然后只去这几个对应的餐台(Expert)取菜(计算),而不是跑遍所有餐台。效率的关键在于导购台推荐得准,且各个餐台客流相对均衡。”
这个自助餐厅的比喻让他自己都笑了,但确实帮助他理解了核心思想。他把这个比喻也记在了旁边。
读得头晕眼花时,他就站起来,看看窗外被雨水洗刷得格外清晰的南山科技园建筑群。那些玻璃幕墙大楼里,或许正有人轻松讨论着他此刻绞尽脑汁理解的概念。这种距离感没有让他气馁,反而激起了更强的斗志。
“慢慢来,一篇一篇啃。代码可以跑起来看日志,论文也得一个字一个字读进去,变成自己的理解”。
接下来几天,林晨的生活节奏固定下来:上午,让“启明智投一号”自动运行,简单复盘前一日市场情况和系统信号,偶尔做极小仓位的验证性操作;下午和晚上,全身心扑在论文阅读上。
笔记本上的内容越来越丰富。从moE到FlashAttention(利用GpU硬件特性极致优化注意力计算),从LLamA的技术细节到Swin transformer(计算机视觉中引入层次化窗口注意力的开创工作)……他不仅记论文内容,更记录自己的思考、疑惑、与已有知识的关联,以及那些灵光一现的比喻或联想。
读到一篇关于用强化学习优化大模型解码阶段生成策略的论文时,他联想到自己的“智投一号”在生成交易信号后,其实也有一个“执行”阶段,是否可以借鉴这种“学习式决策”而非固定规则?他在这篇论文的笔记末尾专门留了一页,写下了这个跨领域的想法。
一周后,墨绿色笔记本用了大半。林晨感觉自己的大脑像被重新梳理了一遍,很多之前模糊的概念变得清晰,更重要的是,他看到了这个快速演进领域的地图轮廓和主要路径,而不仅仅是几个孤立的点。
是时候输出了。
他决定把笔记整理成系列技术博客。目的有三:一是巩固学习成果,费曼学习法强调“教是最好的学”;二是构建个人技术品牌,为求职增加筹码;三是或许能获得反馈,甚至结识同行。
平台选择知乎。那里技术氛围相对浓厚,也有不少从业者和研究者活跃。
第一篇博客,他选择了自己理解最透、也觉得最有意思的moE架构。标题斟酌良久,最后定为:《从“自助餐厅”到万亿参数:深入浅出理解moE(mixture of Experts)架构》。他没有直接堆砌论文公式和图表,而是从“为什么需要moE”(大模型规模与计算成本的矛盾)这个根本问题出发,用自己那个“自助餐厅”的比喻贯穿全文,逐步引入路由机制、负载均衡、专家网络等核心概念,最后结合论文中的关键实验结果,讨论其优劣与适用场景。文末,他附上了自己阅读的那篇核心论文以及其他几篇重要参考文献的链接。
写博客又是另一重考验。需要把艰深的技术用通俗而不失准确的语言表达出来,逻辑要清晰,节奏要把握好。他反复修改了三四遍,直到自己读起来觉得顺畅明白,才在某个周二晚上,点击了发布。
发布后,他有些忐忑地刷新了几次页面,只有零星几个阅读。他自嘲地笑了笑,关掉网页,继续去读下一篇关于扩散模型理论基础的论文。这才是主业,博客只是副产品。
然而,两天后的下午,当他完成另一篇关于注意力机制各种高效变体(Linear、Flash、FlashAttention-2等)的博客草稿,准备上传时,顺手点开了知乎后台。
他愣住了。
那篇moE博客的阅读量显示:2.3万。点赞数:487。收藏数:312。评论:89条。
他心跳微微加速,点开评论。
前排高赞评论是:“比喻精妙!终于把moE看懂了,之前读论文云里雾里。感谢作者”! “干货满满,梳理得很清晰,特别是负载均衡那块,比原论文讲得还明白”。 “博主是不是业内人士?理解很深啊”。 “求更新这个系列!期待下一篇”!
也有挑刺和深入讨论的: “关于专家容量(Expert capacity)的公式推导,博主简化了一些条件,实际论文里考虑了溢出(overflow)处理,这里可以补充一下”。 “moE在推理时的延迟问题,博主提到但没展开,这部分其实很关键,特别是在追求低延迟的应用场景”。 “最近有篇新论文提出了更细粒度的moE变体,可以关注一下”。
林晨一条条仔细看着,尤其是那些指出不足或提出深入问题的评论,他不仅看,还认真回复。对于公式推导简化的指正,他承认并表示感谢,承诺在博客里加个注脚说明;对于推理延迟问题,他回复说这确实是moE的挑战之一,并简要提到了几篇针对该问题优化的论文方向。
这种纯粹的技术交流让他感到久违的愉悦。不再是跨境电商群里无休止的扯皮和推诿,也不是失业初期那些泛泛的安慰或打听,而是围绕具体技术点,有来有往,相互启发。他甚至通过评论区,和一个似乎是在读博士的用户简单讨论了几句关于路由网络梯度稳定性的最新方法,对方分享了一篇刚挂在arxiv上的新预印本,林晨如获至宝。
晚上,苏婉批改完作业出来,看到林晨对着电脑屏幕,脸上带着一种专注而柔和的笑意,手指在键盘上敲打着,像是在进行愉快的对话。
“这么高兴?投资系统又赚了”?苏婉走过来,把手搭在他肩上。
“不是钱的事”。林晨侧头笑了笑,指着屏幕,“你看,我写的技术文章,有人看,有人讨论,还有人给我提建议。感觉……像是摸到了那个圈子的边儿”。
苏婉俯身看了看那些评论,虽然看不太懂具体技术内容,但那种积极、专业的氛围她能感受到。“真好”。她由衷地说,“我就说你有真本事。这下更有信心了吧”?
“嗯”。林晨握住她的手,“路还长,但方向好像更亮了”。
他新建了一个文件夹,命名为“blog_Series_AI_papers”,把第一篇博客的源文件和收集到的反馈都放了进去。然后,他将那篇关于注意力机制变体的博客精心修改后,再次发布。
这一次,他心态平和了许多。他知道,持续输出有价值的内容,本身就是最好的积累。这些博客,连同他的mini-Gpt项目代码、论文阅读笔记,都将成为他技术履历中扎实的一部分。
夜深了,鹏城的灯火在雨后的夜空中格外璀璨。林晨最后刷新了一下知乎后台,新博客的阅读数正在稳步上升。同时,他注意到有一条未读的私信,来自一个Id他有些眼熟、似乎在某篇论文作者列表中见过的用户。
私信标题只有两个字:“请教”。
第104章 技术博客
林晨坐在电脑前,窗外是鹏城又一个寻常的黄昏。天际线被染成淡淡的橙红色,远处南山科技园的写字楼玻璃幕墙反射着最后的日光。他刚刚结束今天第三篇NeurIpS论文的精读,笔记文档里又多了三千多字。
伸了个懒腰,他点开浏览器。知乎个人主页上,那篇关于moE架构的解读文章,阅读量已经突破两万,点赞收藏超过一千五,评论区有几十条专业讨论,甚至还有几个他眼熟的AI领域博主留言表示“分析到位”。
一种久违的、扎实的成就感,像温润的泉水,缓缓浸润着他这些日子因求职不顺而有些干涸的心田。
这感觉,和他之前做跨境电商系统、优化后端接口性能后看到数据提升时不同。那更多是完成任务的释然,是技术债被清偿的轻松。而现在,是分享与碰撞带来的愉悦,是知识被认可、思考激起涟漪的满足。
“或许,张伟说得对”。林晨想起前同事兼好友的话,“技术人不能只埋头干活,也得学会‘发声’。尤其是在这个信息爆炸、个人品牌越来越重要的时代”。
他之前十年,太专注于手头的项目、公司的KpI,把自己活成了一个高效但沉默的“代码执行单元”。失业后的自学,起初也是被迫的、封闭的,带着焦虑和求生欲。直到开始写那篇论文博客,把艰深的原理用自己的话捋顺、输出,他才隐约触摸到另一种可能性——不只是学,更是梳理、创造和连接。
鼠标在收藏夹里几个技术社区间游移:知乎、掘金、cSdN、Github……最终,他点开了那个对国内开发者而言更具历史感和“基地”意味的网站——cSdN。
蓝白相间的简洁界面,顶部导航栏熟悉的“博客”、“下载”、“论坛”。林晨大学时期就在这里找过不少代码片段和教程,工作后渐渐来得少了。他快速注册了一个新账号,Id想了想,敲下“晨光破晓_AI”。头像选了张简单的、带点科技感的蓝色渐变抽象图。
开通博客,第一步是写个人简介。
他盯着空白的简介框,手指在键盘上悬停了几秒。要怎么写?失业中年码农?AI自学爱好者?还是……
他删掉又输入,最终敲下:
“十年全栈,现专注AI/深度学习。相信技术改变世界,更相信持续学习与分享的力量。记录转型路上的思考与实践,涵盖AI理论、算法实现及跨领域应用(如量化交易)。代码可以骗人,但逻辑不会,人更不能”。
最后一句是他一直以来的信条,此刻写在这里,竟觉得格外贴切。
博客开通,像在一片数字荒原上插下了一面小小的旗帜。接下来,是耕种。
林晨没有立刻动笔写新文章。他先花了半天时间,系统整理了自己过去三个多月的学习笔记。从最初的python数据科学库回顾,到机器学习基础概念梳理,再到深度学习框架(tensorFlow/pytorch)的对比与实践,最后是近期精读的前沿论文解读。他将这些内容分门别类,规划了一个清晰的博客系列目录:
AI转型之路(经验与心态篇)
深度学习从入门到理解(理论实践篇)
前沿论文精读与实现(跟踪与思考篇)
AI的跨界狂想(应用探索篇) —— 这里他特意留出了位置,准备放入关于智能投资系统的内容。
规划清晰后,他决定第一篇正式博客,就从最实在的“工具选择”开始。题目定为:《35岁老码农的AI工具箱:tensorFlow还是pytorch?一个实践者的深度对比》。
这篇文章,他写得格外用心。没有罗列枯燥的官方特性对比,而是从自己这个“转型者”的实际体验出发:
“当你从传统的web开发、业务系统开发,一头扎进AI这个新领域时,面对这两个星光熠熠的框架,就像给一个刚学会走路的孩子选择是穿耐克还是阿迪……它们都很好,但哪双更合脚,更能帮助你跑起来,甚至未来跳得更高”?
他结合自己复现论文算法、搭建“启明智投一号”原型系统的实际经历,对比了两者在模型定义、动态图/静态图、部署便利性、社区生态、学习曲线等方面的差异,最后给出了针对不同场景(研究、快速原型、生产部署)的选择建议,并附上了自己整理的关键代码片段和常见“坑”的解决办法。
“对于像我这样有扎实编程基础但AI背景不深的人,pytorch的‘pythonic’和动态图带来的直观调试体验,可能是更友好的起点。它让你更专注于算法逻辑本身,而不是框架的魔法。而tensorFlow,尤其是其生态系统和部署工具链,当你需要严肃考虑模型上线、服务化时,优势会非常明显……技术选型没有银弹,只有最适合当前阶段和目标的鞋子”。
写完已是深夜。检查错别字,调整格式,配上几张清晰的示意图和代码截图。点击“发布”。
关掉网页,林晨没有立刻去睡。他走到阳台,鹏城的夜风带着微凉。楼下街道偶尔有车辆驶过,远处写字楼依然有点点灯火。他知道,那篇博客就像一颗投入湖面的小石子,能否激起涟漪,涟漪有多大,需要时间。
然而,第二天下午,当他再次登录cSdN时,消息通知的小图标上已经出现了红色的“99+”。
点开一看,博客阅读量超过五千,评论近百条。
“博主分析得很中肯,我也是从Java转AI,pytorch上手确实快”! “感谢分享,对比表格很清晰,收藏了”! “博主对部署方面的考虑很实际,这点很多教程都不提”。 “请问博主,您提到的‘启明智投一号’是个人项目吗?对AI+量化感兴趣,能否多分享一些”? ……
一条条评论看下来,林晨嘴角不自觉地上扬。尤其看到那些表示“有帮助”、“收藏学习”的留言,那种分享的价值感愈发真切。他也认真回复了一些技术性问题,在交流中,自己的理解似乎也更深了一层。
更让他意外的是,博客后台显示,文章被加入了多个cSdN的“专题推荐”,粉丝数也开始缓慢但持续地增长。有几个评论者,看Id和发言,似乎也是有一定经验的开发者或相关领域的学生。
初战告捷。林晨趁热打铁,按照规划,开始撰写系列的第二篇、第三篇……他保持着每周2-3篇的更新频率,内容扎实,文风平实,不炫技,但力求把复杂问题讲明白。他的“AI转型之路”系列,尤其是其中结合个人心路历程的篇章,吸引了不少同样面临职业转型或技术焦虑的读者。
两周后,他觉得时机差不多了。投资系统“智投一号”已经稳定运行了一段时间,虽然实盘资金不大,但逻辑框架经过多次迭代,相对成熟,也积累了一些独特的思考。他决定在“AI的跨界狂想”系列下,写一篇“预热”性质的文章。
标题斟酌良久,定为:《当AI遇见K线:一个码农对量化交易系统的浅层思考与架构探索》。
在这篇文章里,他没有透露具体的策略细节、参数或收益数据——那是核心机密,也是风险所在。他重点分享的是“如何思考这个问题”:
为什么认为传统技术分析(指标、形态)有结合AI(尤其是时序预测、模式识别)的潜力?
从软件工程角度,一个稳健的量化系统应该有哪些核心模块(数据获取与清洗、特征工程、模型训练与验证、回测框架、风险控制、自动化执行)?
在尝试用LStm、transformer等模型处理金融时间序列数据时,遇到了哪些典型问题(如过拟合、非平稳性、市场状态切换)?有哪些初步的解决思路?
强调“风控为先”的理念,以及如何设计简单的规则化风控模块作为AI信号的“安全阀”。
最后,他坦诚地写道:“这只是一个技术人的跨界探索实验,绝非投资建议。金融市场复杂无比,任何模型都有其局限性。对我而言,这个过程最大的收获,不是可能的收益,而是将AI技术应用于一个全新、复杂领域的思维锻炼和工程实践。它迫使我去理解另一个领域的逻辑,思考如何将不确定性部分‘封装’,让算法在边界内发挥作用”。
这篇文章发布后,引起的反响比他预想的更大。阅读量迅速破万,评论区异常活跃:
“博主思路清晰!我一直想做这个,但不知道从何入手”。 “求开源框架”! “风控部分说得太对了,很多搞量化的新人就栽在重模型轻风控上”。 “博主有没有考虑过加入基本面的因子”? “同是码农转型,求交流”!
私信也开始增多,有单纯请教技术的,有探讨策略想法的,甚至还有一两条模模糊糊、询问是否合作或提供技术服务的试探。
林晨保持着冷静。技术分享可以,核心细节和具体合作则异常谨慎。他礼貌地回复技术问题,对其他邀请则委婉表示“目前仍在探索学习阶段,暂无合作计划”。他深知,在投资这个领域,尤其是公开场合,必须如履薄冰。
但无论如何,他的cSdN博客,已经从一个简单的学习记录本,渐渐变成了一个有点影响力的个人技术品牌窗口。他不再是互联网上无声的亿万字节之一,而是有了一个微小的、但确实存在的发声点。
这天晚上,苏婉端着一盘切好的水果走进书房,看到林晨正对着博客后台的数据图表微笑。
“看来你的‘博客事业’进展不错”?苏婉将水果放在桌上,语气带着调侃,但眼神温柔。
“嗯,比想象中好”。林晨叉起一块苹果,“没想到写点东西,分享出去,能收到这么多反馈。感觉……学习不再是单向的输入,变成了双向的交流。而且,好像有了一点点的……话语权”?
“那是你写得确实好,有干货”。苏婉在他旁边坐下,“我看过几篇,虽然很多技术细节不懂,但能感觉出来,你是真弄明白了才写,不是故弄玄虚。这种实在,大家是能感受到的”。
林晨点点头,握住妻子的手。失业以来的阴霾,似乎被这小小的博客撕开了一道口子,透进了更多光亮和新鲜的空气。他知道,博客不能直接带来工作,不能立刻解决房贷压力,但它带来了别的东西:认可感、连接感、以及一个持续输出倒逼输入的高效循环。
更重要的是,它正在为他积累一种无形但可能至关重要的资产——技术影响力。
他瞥了一眼电脑角落,那个知乎私信图标依然亮着。那位Id眼熟、语气谦逊的“请教者”,他还没有回复。之前是觉得需要更多积累,现在,随着cSdN博客的稳步起航,他似乎有了更多一点底气去接触。
或许,是时候谨慎地回复那条私信,看看涟漪的另一端,连接着怎样的风景了。
第105章 开源项目
林晨是在深夜回复那条知乎私信的。
窗外的鹏城依旧灯火通明,但宝安区这个老式小区的夜晚却很安静。他坐在书桌前,屏幕的光映在脸上。知乎私信界面很简单,对方Id叫“算法手艺人”,头像是个抽象的齿轮图案,个人简介只有一行字:“关注AI与量化交叉领域”。
点开聊天记录,对方一个星期前发来的消息很简短:“您好,拜读了您关于tensorFlow与pytorch对比的文章,视角很独特。最近看到您关于量化系统架构的思考,想请教一个问题:在您设计的风控模块中,如何平衡黑盒模型的预测能力与白盒规则的可解释性?冒昧打扰,盼复”。
林晨的手指在键盘上悬停了几秒。一个星期,对方等了一个星期。这期间他经历了什么?从焦虑到沉淀,从闭门造车到开始输出。他敲下回复:
“您好,抱歉回复迟了。您的问题很核心,我的思路是‘分层解释’:在最底层使用黑盒模型(如LStm、transformer)做特征提取与趋势预测,但在决策层强制接入可解释的规则引擎。具体来说,模型输出的是概率和置信度,规则引擎根据这些信号,结合市场宏观指标、波动率阈值等白盒规则做最终执行与否的裁决。相当于让AI做‘参谋’,规则做‘司令’”。
点击发送。他以为对话就此结束,毕竟技术圈这种一次性请教很多。
但五分钟后,回复来了。
“感谢回复!这个‘参谋-司令’架构很有意思,尤其是强制接入规则层的设计,很多纯AI派会认为这是束缚。我最近也在做类似方向的探索,但数据预处理部分总感觉不够优雅。方便分享更多关于数据管道设计的思路吗?当然,理解这可能涉及您的核心系统”。
对方的用词很克制,但问题直指要害。林晨能感觉到,屏幕那头是个真正在干活的人。他想了想,决定多聊几句。
“数据管道我开源了一部分工具代码在Github上,仓库叫‘quant-data-utils’,主要是A股分钟级数据的清洗、对齐和特征工程基础模块。核心策略没放,但管道设计思路可以从代码里看出来。欢迎交流”。
这是他上周刚做的事。在博客获得一定反响后,他意识到,光写文章还不够。代码才是最硬核的简历。他花了两天时间,从自己的“智投一号”系统中剥离出数据预处理和回测引擎框架部分,仔细剔除了所有与核心策略相关的参数和模型,确保开源的是“骨架”而非“血肉”。然后创建了Github仓库,写了详细的REAdmE.md,包括项目结构、依赖安装、快速开始示例,甚至加了一个简单的流程图说明模块间的数据流向。
发完这条消息,林晨顺手点开了自己的Github仓库页面。
仓库创建于七天前。头三天,只有零星的几个Star(点赞),来自几个关注他博客的技术粉丝。第四天,他写了一篇博客,专门介绍这个开源项目,并附上了链接。变化从那天晚上开始。
Star数量跳到了23。有了第一个Fork(复制仓库)。Issue(问题)区出现了第一个提问,关于pandas版本兼容性。林晨认真回复了。
此刻,深夜十一点半。他刷新页面。
Star:47。Fork:8。watch(关注):12。
数字不大,但对一个上线仅一周、作者毫无名气的个人开源项目来说,这已经超出了林晨的预期。更让他心跳加速的是,仓库下方出现了第一个pull Request(pR,代码合并请求)。
pR的提交者Id是“fintech-dev”,标题是“优化了数据下载模块的重试机制和日志输出”。林晨点开详细内容,对方修改了大约三十行代码,主要是在数据抓取失败时增加了指数退避重试策略,并把日志输出格式标准化。代码写得很干净,注释清晰。
林晨深吸一口气。这是一种奇妙的体验。你的代码,放在一个公共平台上,被陌生人阅读、使用,甚至改进。这种开放带来的反馈循环,比闭门造车快得多。他仔细审查了代码改动,逻辑正确,风格一致。他点击了“merge pull request”(合并请求)。
几秒后,代码库更新了。贡献者列表里,除了他自己,多了“fintech-dev”的名字。
一种细微的成就感,像温水流过胸腔。失业以来,他第一次感觉到自己创造的东西,正在真实地触碰到行业的一角,并引发了涟漪。
他回到知乎私信界面,“算法手艺人”又回复了。
“看到了您的Github仓库,正在看代码。数据对齐模块的‘时间轴融合’想法很巧妙,特别是处理不同数据源延迟的部分。我fork了,准备在我们内部的数据平台上试试适配。另外,有个小建议:REAdmE里可以加一个‘Roadmap’(路线图),比如计划增加哪些数据源、支持哪些回测指标,这样能吸引更多贡献者”。
林晨笑了。这是内行的建议。他回复:“好建议,我明天就加。你们内部平台是做量化研究的”?
“算是,一家小基金的研究部门。看了您的博客和代码,感觉您不是在校学生或纯研究员,更像是有工业系统经验后转AI的。冒昧猜一下”?
“以前做跨境电商系统,现在转型AI”。林晨坦然承认。
“难怪架构感很扎实。转型期不容易,但您走的路子很正。开源是个好选择,既能沉淀技术,又能建立连接。说不定会有机会找上门”。
聊到这里,双方都默契地没有深入打听对方的具体公司或职位。技术圈的这种交流,常常保持在“以代码会友”的层面,反而更纯粹。
结束对话后,林晨没有立刻睡觉。他打开仓库,开始规划Roadmap。他列出了几个方向:增加港股、美股主流数据源接口;完善回测引擎的夏普比率、最大回撤等指标计算;考虑加入一个简单的模拟交易模块框架。他尽量让目标看起来具体、可实现,且欢迎社区贡献。
写完Roadmap,提交更新。他又浏览了一遍仓库的Insights(数据洞察)页面。过去一周,仓库有来自中国、美国、新加坡的访问者。大部分流量来自直接访问和搜索引擎,少量来自技术论坛的引用。
关掉电脑前,他最后刷新了一次。Star数字跳到了51。
躺到床上时,妻子苏婉已经睡着了。林晨在黑暗中睁着眼,回想这几个月的变化。从被裁员那天的手足无措,到疯狂自学时的焦虑,再到写出第一篇博客时的试探,如今代码被陌生人使用和修改。每一步都踩在实地上。开源,像打开了一扇窗。他不再是孤身一人面对庞大的技术体系,而是加入了一个无数开发者共同构建、互相审视、彼此促进的庞大网络。他的价值,开始以代码的形式,被客观地衡量和认可。
这种认可,暂时无法兑换成薪水,但它带来的信心和连接,或许比薪水更重要。他知道,路还很长。t厂的面试尚未到来,投资系统的收益曲线还在波动,家庭的储蓄仍在消耗。但今夜,这47个Star,8个Fork,和一个来自陌生同行的优质pR,像黑暗中的几颗星,虽然微弱,却清晰地告诉他:方向没错,继续走。
入睡前,他模糊地想,明天要检查一下“启明智投一号”的实盘表现。最近A股震荡,系统应该能捕捉到一些波动机会吧?还有,那个“fintech-dev”,会不会是某个机构的工程师?他的优化代码风格很专业……
意识沉入睡眠。书桌上的电脑已经休眠,但Github服务器上,那个名为“quant-data-utils”的仓库,依然静静地躺在那里,等待下一个访问者、下一个Star、下一个Fork。代码的世界,永不眠。
第106章 社区互动
清晨六点半,宝安区老老旧小区的书房窗帘缝隙透进微光。
林晨比闹钟早醒了十分钟。他习惯性地先摸过手机,解锁,点开券商App——这个动作已经成为他失业以来每日清晨的固定仪式。
账户总资产:87,432.51元。
他的手指在屏幕上停顿了两秒,又仔细看了一眼昨日收益:+2,186.33元。
这是“启明智投一号”系统运行最近一周以来,单日收益再次突破两千元。林晨靠在床头,深深吸了一口气,又缓缓吐出。屏幕上跳动的数字不再是冰冷的数据,而是某种实实在在的证明——证明他过去三个月在AI和量化领域投入的数百个小时没有白费,证明那条通过技术实现财务自主的道路,并非虚幻的空中楼阁。
但他很快冷静下来。最近A股震荡,昨天创业板指数涨了1.8%,系统抓住了一波小行情而已。量化交易最忌讳的就是把短期波动当成能力。他关掉App,起身洗漱。
上午的学习计划是精读一篇关于transformer模型在时间序列预测中应用的论文。但九点钟刚过,Github的邮件通知就跳了出来——他的开源项目“quant-data-utils”仓库收到了一个新的Issue。
林晨点开链接。
Issue标题是:“使用tuShare数据源时,获取日线数据报错‘KeyError: ‘price’’”。
提交者Id:StockquantNewbie。
问题描述写得很详细,附上了代码片段和完整的报错信息,最后还客气地加了一句:“我是量化新手,正在学习您的工具库,这个问题困扰了我两天,如果是我用法不对还请指教”。
林晨仔细看了代码。问题其实不复杂:这位新手直接调用了工具库里的get_daily_data函数,但没注意到tuShare的免费接口最近调整了返回数据的字段名,原来的price字段改成了close。工具库里的数据清洗模块还没来得及适配这个变动。
他想了想,没有直接回复代码修改方案,而是先敲了一行回复:“感谢使用和反馈!这个问题是由于数据源ApI变动导致的。请先尝试以下临时解决方案——”
他给出了两行修改代码的建议,可以暂时绕过这个问题。
然后他继续写道:“我今天会发布一个v0.2.1版本,在数据清洗模块中添加对最新tuShare接口的适配。另外,建议您在调用时始终检查返回数据的列名,这是处理外部数据源的好习惯。欢迎继续提问”。
点击提交回复。
几分钟后,Issue页面下出现了新的评论:“太感谢了!临时方案有效!原来是这样,我明白了。期待新版本”!
林晨看着那句“我明白了”,嘴角不自觉上扬。这种通过代码帮助到具体某个人的感觉,比单纯看到Star数字增长更实在。他关掉Issue页面,立刻开始在本地代码库中修改数据清洗模块,测试,然后提交更新,打上v0.2.1的标签,推送到Github。
做完这些,他才重新回到论文上。但注意力已经有些分散了。
干脆,他打开了项目仓库的主页。Star数:73。Fork数:21。比昨天又涨了几个。他点开Insights标签,查看流量数据——过去一周有来自美国、新加坡、甚至德国的访问。一个小小的数据工具库,正在被世界不同角落的开发者看到。
中午简单煮了碗面条,林晨一边吃一边刷着Github的通知。除了那个Issue,他还收到了两条新的“watch”(关注)通知,以及一条来自用户“quant-lover”的私信。
私信内容是英文的:“hi, I found your quant-data-utils project very clean and practical. Im working on a crypto quantitative strategy and wondering if you have plan to add support for crypto exchanges like binance or coinbase? If not, I might be able to contribute a module.”
(你好,我发现你的quant-data-utils项目非常简洁实用。我正在研究加密货币量化策略,想知道你是否有计划添加对币安或coinbase等交易所的支持?如果没有,也许我可以贡献一个模块。)
林晨读完,放下筷子。加密数字货币……这确实是当前量化投资的热门领域,但他自己之前主要精力放在A股和传统期货,对这块研究不深。他斟酌了一下措辞,用英文回复:“thank you for your interest! currently the project focuses on traditional financial markets (A-shares, futures). Support for crypto exchanges is a great idea and definitely within the roadmap. Im not very familiar with crypto ApIs, so a contribution would be highly appreciated. You can open an issue first to discuss the design, or directly create a pull request. Looking forward to it!”
(感谢你的关注!目前项目专注于传统金融市场(A股、期货)。支持加密货币交易所是个很好的想法,也符合路线图规划。我对加密货币ApI不太熟悉,所以非常欢迎贡献。你可以先开一个Issue讨论设计,或者直接创建一个pull Request。期待你的贡献!)
回复完,他感觉有点奇妙。一个在鹏城出租屋里失业的中年码农,正在和可能身处世界任何地方的开发者,用英文讨论着一个开源项目的特性扩展。这种连接感,冲淡了独自学习的孤独。
下午,他继续研究论文,同时分心关注着Github。果然,“fintech-dev”——那位提交了第一个pR的贡献者——又出现了。这次他提交了一个新的pR,优化了项目REAdmE文档中的安装说明,添加了更清晰的pip安装步骤和常见错误排查。
林晨点开代码变更查看,改动虽小但很贴心。他点了合并,并在pR评论区留言:“Nice improvement, thanks again!”(很好的改进,再次感谢!)
几乎同时,他收到了“fintech-dev”的私信,这次是中文:“维护者你好,看到你合并了pR。我注意到你项目里用了pytorch做简单的特征工程,最近我在尝试用Graph Neural Network(图神经网络)建模股票关联性,如果你有兴趣,我们可以交流一下”。
Graph Neural Network(图神经网络)?林晨心里一动。这是深度学习里相对前沿的领域,用于建模关系数据。用GNN来挖掘股票之间的隐藏关联,构建更复杂的因子——这个想法很有吸引力,也超出了他目前的知识范畴。
他立刻回复:“非常有兴趣!GNN我还没深入学过,但一直想了解在量化中的应用。你方便分享一些学习资料或者简单的思路吗?或者,我们可以约个时间线上聊聊”?
对方回复很快:“我整理一下资料,晚点发你Github邮箱。线上聊也可以,我平时晚上九点后有空”。
“好,那我等你邮件”。
结束对话,林晨靠在椅背上,望着电脑屏幕。窗外传来远处马路隐约的车流声,屋内只有主机风扇的低鸣。但此刻,他感觉这个小房间不再封闭。通过网线和代码,它连接着一个活跃的、专业的技术社区。这里有遇到问题的新手,有提出建议的同好,有默默贡献代码的伙伴,还有愿意分享前沿知识的探索者。
这种被需要、被认可、被连接的感觉,与他之前在跨境电商公司里日复一日写业务代码、应对产品经理需求变更的感受截然不同。在那里,代码是工具,是任务,是KpI的一部分。而在这里,代码是作品,是桥梁,是对话的语言。
他忽然想起知乎上“算法手艺人”说过的话:“开源不只是把代码扔出去,而是打开一扇门,让同道中人走进来”。
门,似乎真的打开了。
傍晚,苏婉接乐乐放学回来。小家伙一进门就嚷嚷:“爸爸!我今天算术得了小红花”!
林晨抱起儿子转了一圈:“真棒!晚上让妈妈给你加个鸡腿”。
吃饭时,苏婉看着林晨时不时瞥向手机屏幕的样子,轻声问:“今天学习还顺利吗?看你好像有心事”。
林晨放下筷子,笑了笑:“不是心事,是……有点新鲜事”。他把今天Github上收到Issue、和国外开发者交流、还有“fintech-dev”提出讨论GNN的事情简单说了说。
苏婉听得很认真,末了点点头:“挺好的。感觉你最近状态比刚失业那会儿好多了,没那么焦虑了”。
“嗯,找到点节奏了”。林晨给乐乐夹了块排骨,“而且‘启明智投一号’昨天表现不错,赚了两千多”。
苏婉眼睛微微一亮:“真的?那……能稳定吗”?
“不敢说稳定”。林晨摇头,“市场千变万化,系统还需要更多考验。但至少证明这条路能走通,这很重要”。
夜里十点,乐乐睡了。林晨坐在电脑前,收到了“fintech-dev”发来的资料压缩包和一个在线会议链接。他点开资料,里面是几篇关于GNN在金融领域应用的论文pdF,还有一个简单的示例代码项目。
他正浏览着,电脑右下角又弹出一封新邮件通知。发件人邮箱后缀是“@talent-hunter.”,标题是:“Regarding your Github project - quant-data-utils”(关于您的Github项目 - quant-data-utils)。
林晨的心跳,莫名快了一拍。
第107章 收益稳定
清晨六点半,鹏城的天空刚泛起鱼肚白。
林晨已经坐在书桌前,屏幕上并排开着三个窗口:左边是“启明智投一号”的实时监控面板,中间是pytorch的深度学习教程,右边是昨晚那封神秘邮件的回复草稿。
他的目光首先落在监控面板上。
过去180天。
这是“智投一号”持续运行的完整周期。林晨点开月度收益曲线图——一条总体向上、偶有回撤但很快修复的爬坡线。六月平均收益5.2%,七月6.8%,八月遭遇市场震荡回撤至3.5%,但九月迅速反弹到7.1%,十月6.3%,十一月最新数据是5.9%。
月均收益稳定在5-8%的区间。
林晨点开总资产栏:初始投入的7万元本金,经过半年运转,累计盈利42,718元。账户总资产112,718元,接近翻倍。
他靠向椅背,长长地呼出一口气。
这口气里,有半年来每个深夜调试代码的疲惫,有面对市场波动时的紧张,更有此刻看到数字确凿增长后的释然。四万两千多块钱——听起来不算惊天动地,但对于一个再次失业半年、存款持续消耗的中年男人来说,这是一根实实在在的救命稻草。
房贷每月一万二。这半年的盈利,刚好覆盖了三个多月的月供。
林晨打开手机银行,确认了昨天系统自动执行的一笔出金:2,150元已到账。这是十一月的第一笔利润提取,用于支付本月部分房贷。剩下的部分,用苏婉的工资顶上,压力小了很多。
他想起三个月前,自己还不得不动用到期的定期存款来还贷。那时看着存折上数字一点点减少,心里像压着石头。现在,石头虽然还在,但至少轻了一些。
“代码可以骗人,但逻辑不会”。林晨喃喃自语,看着监控面板上那些跳动的指标——夏普比率0.86,最大回撤8.3%,胜率62%。这些冷冰冰的数字背后,是他一遍遍优化特征工程、调整模型参数、设计风控规则的成果。
系统已经学会了“保守”。
最初版本过于激进,试图捕捉每一个波动,结果在八月那波突如其来的政策调控中吃了亏,单日回撤超过5%。林晨连夜修改策略,加入了市场情绪监测模块和动态仓位调整机制。现在的系统更像一个经验丰富的猎手:大部分时间潜伏观察,只在胜率足够高、风险足够低时才出手,而且一旦风向不对,立刻止损撤离。
这半年的稳定收益,不是靠运气,而是靠这套不断完善的风控逻辑。
手机震动,是苏婉发来的消息:“乐乐早餐吃完了,我送他去幼儿园。你记得吃早餐,别又只顾着看电脑”。
林晨心里一暖,回复:“好,收益数据出来了,这个月又稳住了”。
几秒后,苏婉回复了一个笑脸表情:“我就知道你行的。晚上买条鱼庆祝一下”?
“好”。
放下手机,林晨重新看向那封猎头邮件。
发件人邮箱是eliza.chen@talent-hunter.,一家在科技圈颇有口碑的高端猎头公司。邮件内容很简洁:表示关注到林晨在Github上的“quantAI-Framework”项目,认为其技术思路与某头部大厂AI Lab正在招募的资深研究员岗位高度匹配,询问是否有兴趣进一步沟通。
没有透露具体公司名称,但“头部大厂”“AI Lab”这些关键词,已经足够让人浮想联翩。
林晨这半年并非完全闭门造车。他持续关注招聘市场,知道t厂、A厂、h厂都在大力投入AI,尤其是大模型和AI for Science方向。薪资也水涨船高,资深岗位的年包普遍在百万以上,顶尖人才甚至能谈到两三百。
但之前的教训让他冷静。
那些web3公司的面试,技术关过了,却卡在薪资预期上。对方觉得一个35岁、非科班出身、刚从跨境电商转型的工程师,不值120万年薪。林晨也不愿妥协——他知道自己的技术积累和项目经验,绝对值这个价。僵持的结果,就是一次次无果而终。
现在情况不同了。
“启明智投一号”的稳定收益,给了他底气。这份底气不是虚张声势,而是实实在在的财务缓冲。即使暂时找不到理想工作,这套系统每月产生的现金流,也能支撑家庭基本开支,让他有更多时间等待和选择。
更重要的是,这个项目本身就成了最好的能力证明。
一个能稳定盈利的量化AI系统,其技术含量和工程难度,远超过大多数纸上谈兵的算法项目。它证明了林晨不仅懂理论,更能落地;不仅能建模,更能处理实盘中的各种脏数据、延迟、滑点和黑天鹅事件。
这封猎头邮件,就是市场开始认可这份价值的信号。
林晨没有立刻回复。
他先点开了自己的Github主页。“quantAI-Framework”项目的star数已经涨到287,fork数也有43。最近一周的贡献者图表显示,除了他自己,还有两个活跃的提交者:一个是之前那位“fintech-dev”,另一个是新加入的海外开发者,Id叫“crypto-arb”,专注于加密货币套利模块的优化。
社区在慢慢生长。
林晨点开“fintech-dev”昨天新提交的pR——关于用图神经网络(GNN)建模股票关联性的实验代码。他仔细审阅了代码结构,发现对方不仅实现了基础功能,还加入了注意力机制,让模型能动态聚焦于不同时期最重要的关联股票。
很专业的实现。
林晨在pR评论区留言:“Attention机制的设计很巧妙,特别是时间衰减权重的部分。我有个想法:是否可以结合行业板块信息,构建分层图结构?底层是个股关联,上层是板块关联,让信息在不同粒度间传递”。
几分钟后,“fintech-dev”回复了:“好思路!我今晚试试看。另外,你主策略里的因子合成模块,是否考虑过用自动编码器做降维?我看了代码,目前还是手工选取和加权”。
两人就这样在代码评论区讨论起来,像两个隔着屏幕的棋手,在算法棋盘上落子交锋。
这种纯粹的技术交流,让林晨感到愉悦。没有薪资谈判,没有年龄歧视,没有职场政治,只有对问题本身的探究。这种时候,他感觉自己又变回了那个大学时期熬夜写代码的少年,眼里只有逻辑和创造。
讨论告一段落后,林晨终于回到那封邮件。
他新建了一个文档,开始梳理自己的优势:
完整的量化AI系统实战经验(已稳定运行半年,月均收益5-8%)。
全栈能力:从数据爬取、清洗、特征工程,到模型训练、部署、监控、风控。
开源项目维护经验,具备技术影响力和社区协作能力。
对AI成本(特别是训练和推理的物理成本)有深入思考。
十年工程经验带来的系统思维和抗压能力。
最后一点,他特意加粗。
这是他从无数次调试和失败中学到的:再精巧的模型,如果不能高效、稳定、低成本地运行,就是空中楼阁。AI不只是数学,更是工程;不只是算法,更是系统。
梳理完毕,林晨开始撰写回复邮件。
他没有表现得过于急切,也没有刻意低调。语气专业、坦诚、有重点:感谢对方的关注,简要介绍自己的核心项目和经验,表达对AI前沿方向(特别提到大模型和AI for Science)的兴趣,并询问岗位更具体的要求和团队情况。
点击发送。
邮件飞向网络另一端。林晨不知道这封邮件会带来什么,可能是又一次面试机会,也可能石沉大海。但这一次,他的心态平和了许多。
因为他的脚下已经有了基石。
“启明智投一号”的稳定收益,就像一艘漂泊小船终于找到了压舱石。风浪依然会有,但至少不会轻易倾覆。这让他能更从容地面对求职的波折,更专注地提升技术,更耐心地等待真正适合自己的机会。
林晨关掉邮箱,打开pytorch教程。
今天要学习的是transformer模型的并行化训练优化。视频里,讲师正在讲解如何通过梯度累积和混合精度训练,在有限GpU内存下训练更大模型。林晨边听边记笔记,脑子里已经开始构思:这种技术是否可以应用到自己的量化模型中?用更深的网络捕捉更长期的市场模式?
学习到上午九点半,他起身活动筋骨,走到阳台。
楼下小区花园里,几个退休老人在打太极拳,动作缓慢而沉稳。远处,鹏城科技园的那些玻璃幕墙大楼在阳光下反射着光,里面坐着成千上万和他一样的工程师,写代码,调模型,追逐着技术的浪潮。
林晨忽然想起自己刚失业时的焦虑。
那时觉得天塌了,35岁被抛下船,前面是茫茫大海。现在回头看,那场裁员反而逼他跳进了更深的水域——不再是做业务需求的螺丝钉,而是真正沉下去研究技术的本质,并用自己的双手创造出了能持续产生价值的东西。
失业是危机,也是转机。
而转机的钥匙,始终握在自己手里:学习的能力,实践的能力,坚持的能力。
手机又震了一下。林晨以为是苏婉,拿起一看,却是银行App的推送通知:
“您尾号3378的账户于07:45入账1,820元,备注:量化策略收益”。
又一笔利润到账。
林晨笑了笑,收起手机,回到书桌前。教程视频还在继续,讲师正讲到关键处。他戴上耳机,重新投入那片由数学和代码构成的海洋。
风浪还在,但他已经学会了游泳。
第108章 扩大资金
周五晚上九点半,鹏城南山科技园的写字楼依然灯火通明。
打开笔记本电脑,登录券商交易软件,熟悉的“智投一号”监控界面跳了出来。屏幕上的曲线在过去的三个月里,画出了一条令人安心的上升轨迹。
账户总资产:148,726.41元 累计收益率:、112.47% 当月收益率:6.2% 最大回撤:-3.8% 夏普比率:2.1
林晨的目光在“最大回撤”和“夏普比率”上多停留了几秒。前者衡量的是系统在最糟糕情况下的亏损幅度,后者则综合了收益和风险,数值越高意味着承担单位风险获得的回报越高。2.1的夏普比率,在量化策略里已经算是相当优秀的水平了。
最初的7万元本金,经过半年多的运行,已经变成了接近15万。平均每月5-8%的收益,看似不高,但复利的力量正在悄然显现。更重要的是,系统的表现极其稳定——没有暴涨暴跌,回撤控制得非常好,收益曲线平滑向上。
这已经不是运气,而是系统有效性的证明了。
林晨靠在椅背上,端起已经凉透的茶喝了一口。书房窗外,鹏城湾的夜景璀璨,远处春笋大厦的灯光在夜空中勾勒出优美的线条。这套老旧小区的两居室书房,是他这半年来的主战场:在这里自学AI,在这里写出“智投一号”的第一行代码,在这里度过无数个调试参数的深夜。
现在,是时候做出下一个决定了。
他打开一个Excel表格,里面记录着详细的资金规划。目前家庭存款还剩22万左右,这是失业后省吃俭用保下来的“安全垫”。每月房贷1万2,家庭开销控制在8千以内,加上投资系统每月平均5千左右的盈利,每月还需要消耗存款1.5万。
“安全垫可以留15万”。林晨在表格里输入数字,“足够覆盖一年半的基本生活开支。多出来的7万,加上现在账户里的15万……”
他的手指在计算器上敲击:7 + 15 = 22万。
但林晨停顿了一下。保守一点,不要一次性把安全垫压得太薄。他删掉了7万,改成了5万。
5万 + 15万 = 20万。
“就20万吧”。他轻声自语。
这个数字有它的象征意义——是初始本金的两倍多,意味着他对这套系统的信心翻倍。但又没有盲目放大到超出承受能力的程度,保留了足够的安全边际。
林晨没有立刻操作转账。他先打开了“启明智投一号”的后台管理界面,调出了过去六个月所有的交易记录和风控日志。一页页翻看,像是在检阅一支已经经历过小规模实战考验的部队。
系统在A股市场主要采用多因子轮动策略,结合了估值、动量、质量、情绪等十几个因子,每周调仓一次。在期货市场则采用趋势跟踪和均值回归的混合策略,不同品种分配不同的权重。外汇和黄金部分更偏向于宏观对冲,仓位一直很轻。
“策略本身没有问题”,林晨想,“但资金量翻倍后,冲击成本会增加,流动性限制也会更明显”。
所谓冲击成本,就是大额买卖时,因为你的交易行为本身影响了市场价格而导致的额外成本。10万资金买一些小盘股可能不明显,20万就要更谨慎了。
他点开策略参数配置页面,开始调整:
单只股票最大持仓比例从8%下调到5%——分散风险。
最小流通市值门槛从30亿提高到50亿——规避流动性太差的股票。
日内最大开仓手数限制增加,但单次下单量拆分更细——减少市场冲击。
止损线从-8%收紧到-6%——资金量大了,绝对亏损额会更大,必须更严格。
此外,他还增加了一个新的风控模块:相关性监控。系统会实时计算持仓品种之间的相关性系数,如果发现多个持仓同时朝不利方向移动(即相关性突然升高),会自动降低总仓位。
“不能追求暴利”,林晨一边调整参数一边提醒自己,“要的是稳健的复利增长。年化30%就足够了,如果能持续五年,20万就能变成……”
他在草稿纸上快速计算:20万 * (1.3)^5 ≈ 74万。
五年近四倍。而这还只是这20万的增值,不包括他每月的工资结余继续投入,也不包括可能的薪资上涨。
但林晨随即摇了摇头,把草稿纸揉成一团。“不能这样算,太乐观了。市场有周期,策略会失效,黑天鹅随时可能来”。
他删掉了刚才计算的内容,重新写下一行字:目标:年化15-25%,严格控制回撤在-10%以内。
这才是理性的态度。把预期降低,把风控做足,剩下的交给时间和概率。
调整完所有参数,林晨又花了半小时进行历史回测。他将资金规模模拟设置为20万,回测周期拉长到过去三年——这期间包含了牛市、熊市和震荡市。
回测结果让他稍稍安心:年化收益率21.7%,最大回撤-9.2%,夏普比率1.8。收益率比之前10万规模时略有下降(因为流动性限制更严),但回撤控制得更好,曲线更加平滑。
“可以了”。
晚上十一点,林晨登录手机银行,从储蓄账户向证券账户转账5万元。加上原有的15万,总资金达到20万整。
转账成功的提示弹出来时,他心中没有激动,只有一种沉甸甸的责任感。这20万,是他家庭安全垫之外能动用的绝大部分流动资金,也是对他这半年多来自学成果、编码能力、投资理念的一次集中检验。
关掉交易软件,林晨没有立刻离开书房。他打开了一个新的文档,标题是《资金规模扩大后的观察要点》。
流动性影响:观察实际交易时的滑点和冲击成本,与回测数据对比。
策略容量:当前策略在20万规模下是否出现衰减迹象?何时需要考虑开发新策略或增加新市场?
心理影响:资金翻倍后,面对同样比例的波动,实际盈亏金额也翻倍,能否保持情绪稳定?
时间分配:目前每日花在投资系统上的时间约1小时,是否需要增加?与主业如何平衡?
写到这里,林晨停顿了一下,在第四条后面加了一行备注:主业优先。投资是副业,是财富增值工具,不是职业。t厂的工作才是长期基本盘。
这是他的清醒认知。投资系统再成功,也只是“锦上添花”,不能本末倒置。他的核心竞争力依然是AI算法能力,是在t厂这样的一线平台解决实际问题的经验。
保存文档,关掉电脑。
书房的灯光熄灭,鹏城湾的夜色透过窗户洒进来。林晨站在窗前,看着远处依然车流不息的滨海大道,心中涌起一种奇特的平静。
半年前,他在这里焦虑失业,为房贷发愁,拼命自学试图抓住救命稻草。现在,他有一份体面的工作,有一套开始稳定盈利的投资系统,家庭财务压力大大缓解。
但这远远不够。
20万资金,即使年化30%,一年也就赚6万。在鹏城,这只是一份普通白领的年终奖。要想真正实现财富自由,要想在鹏城湾买下那套看中的大平层,资金规模还需要再上一个、甚至几个数量级。
“一步一步来”。他对自己说,“先证明20万规模下系统依然有效,再考虑下一步”。
回到卧室,苏婉已经睡了,床头的小夜灯散发着温暖的光。林晨轻手轻脚躺下,看着妻子安静的睡颜,心中涌起一股暖流。这半年来,是她默默承担了更多家庭琐事,支持他熬过最难的转型期。
明天是周六,他答应带乐乐去海边公园骑自行车。然后下午,可以花点时间研究一下最近很火的“小市值因子”和“北向资金流向”数据,看看能否融入到现有的多因子模型里……
就在他迷迷糊糊快要睡着时,手机屏幕突然亮了一下。
是邮件提醒。
林晨眯着眼睛点开,睡意瞬间消散大半。
发件人:Eliza chen (猎头) 主题:Re: 关于AI Lab岗位的咨询 内容:林先生您好,感谢您的详细回复。我已将您的简历和情况同步给t厂AILab和A厂达摩院的招聘负责人。t厂这边反馈很快,他们对您的量化AI实战背景很感兴趣。下周一方便安排一个30分钟的电话沟通吗?主要是技术负责人想初步了解您对大模型在金融领域应用的一些想法。时间您定,我这边协调。
林晨盯着屏幕,心跳微微加速。
终于……要来了吗?
第109章 黑天鹅事件
晨光透过窗帘缝隙,在书桌一角投下狭长的光斑。林晨坐在电脑前,屏幕上并列着三个终端窗口:左边是投资系统的实时监控面板,中间是pycharm里正在优化的GNN数据预处理代码,右边则是财经新闻聚合页面。
时间是上午九点三五分,A股刚开盘五分钟。
一切看起来都很正常。系统持仓的七只股票,四只微涨,两只平盘,一只小幅回调0.3%。资金利用率控制在65%,预留了充足的现金应对波动——这是上次将本金扩大到20万后,林晨重新调整的风控策略。
他抿了口已经凉掉的咖啡,注意力回到代码上。昨晚研究到凌晨两点,终于弄明白了如何将上市公司供应链关系、高管关联网络这些非结构化数据,转换成图神经网络能处理的邻接矩阵和节点特征。这玩意儿比传统的时序数据分析复杂得多,但理论上能捕捉到市场里那些“看不见的连接”。
“如果真能建模出行业传染效应…”林晨喃喃自语,手指在键盘上敲下一行注释。
就在这时,监控面板上某个指标突然跳红。
林晨视线倏地移过去——是整个市场的波动率指数(VIx)在急速拉升。原本平缓的曲线像被一只无形的手猛地向上提起,五分钟内涨了15%。
他心头一紧。
几乎同时,新闻聚合页面开始刷出密集推送: 【突发:美联储鹰派官员意外表态,暗示可能提前加息至6%以上】 【美债收益率直线飙升,两年期突破5.2%】 【亚太股市应声下挫,日经225指数开盘跌2.1%】
林晨后背渗出冷汗。他太清楚这些信号意味着什么:全球流动性恐慌。在金融市场上,这种由央行政策突然转向引发的连锁反应,被称为“黑天鹅事件”——罕见、冲击力极大、用常规模型难以预测。
他本能地看向自己的持仓。
刚刚还微涨的四只股票,此刻全部翻绿。其中两只科技股跌幅迅速扩大至3%,另外两只消费股也跌了1.5%。平盘的那只开始下跌,原本回调0.3%的那只,现在已经跌了2.7%。
账户总浮动盈亏的数字开始跳动:-800…-1200…-2100…
林晨的手指悬在键盘上方,呼吸不自觉地屏住了。脑子里闪过两个念头:第一,这不是个股问题,是系统性风险,任何选股策略在这种环境下都会失效;第二,他上周刚把本金翻倍到20万,仓位比之前重。
“冷静”。他对自己说,声音有些干涩,“系统有止损机制”。
是的,每一笔买入订单下达时,系统都会自动设置动态止损线。个股跌幅超过8%,或者账户单日亏损超过总资金的5%,都会触发强制平仓。这些规则是他用历史回测数据反复优化过的,理论上能在极端情况下保住大部分本金。
但理论归理论,实战中从没真正触发过。
屏幕上,跌幅继续扩大。
科技股跌到了5%,消费股跌到了4%。账户浮动亏损突破5000元。林晨能听见自己心跳的声音,在安静的房间里格外清晰。他失业在家,这20万里有之前工作攒下的积蓄,有裁员补偿,每一分钱都承载着家庭未来的可能性。
九点三十七分,第一只止损单被触发。
系统日志窗口弹出红色提示:【000001.SZ 触发止损,单价下跌8.2%,已全部平仓,亏损3120元】
林晨看着那条记录,胃部一阵紧缩。3120元,相当于鹏城普通白领大半个月的房租。但诡异的是,在真实的痛感之外,他竟然还有一丝如释重负——规则生效了,系统在执行预设的纪律,没有因为恐慌而瘫痪。
这让他勉强维持住了镇定。
市场继续崩塌。恐慌情绪像瘟疫一样传染,从科技板块蔓延到消费、医药、甚至部分防御性的公用事业股。新闻里开始出现“股灾”“踩踏”这样的字眼。林晨的投资系统像一台精密的机器,冷静地执行着止损程序:
九点四十二分,第二只股票止损,亏损1850元。 九点五十一分,第三只、第四只接连止损,合计亏损4200元。 十点零五分,最后三只持仓全部触及止损线,系统清仓。
所有交易在三十五分钟内完成。
林晨瘫坐在椅子上,后背完全被冷汗浸湿。他盯着监控面板最上方的汇总数据:
【当前账户总资产:194,320元】 【今日亏损:-5,680元】 【单日收益率:-2.84%】
亏损5680元。没有触及账户总资金5%(即1万元)的极端止损线,但已经是他实盘以来最大的单日回撤。
房间里安静得可怕。窗外传来远处街道模糊的车流声,更衬得这份寂静有些压抑。林晨缓缓吐出一口气,伸手去拿咖啡杯,才发现手指在微微发抖。
他强迫自己站起来,走到窗边。楼下小区的绿植在春日阳光下郁郁葱葱,几个老人带着孩子在草坪上玩耍,世界依然按照自己的节奏运转,仿佛刚才那场金融风暴只是电脑屏幕里的一场幻梦。
但账户里减少的5680元是真实的。
林晨在窗前站了五分钟,让心跳慢慢平复。然后他回到电脑前,做了一件至关重要的事:复盘。
他没有沉浸在亏损的情绪里,而是调出了系统从开盘到清仓的全部日志数据、每一笔止损订单的执行价格、市场当时的买卖盘深度、以及自己设定的止损算法实际触发时的偏差值。
一行行代码,一串串数字,逐渐拼凑出完整的画面。
首先,止损机制确实起了作用。如果任由持仓下跌,以收盘时的市场跌幅估算,亏损可能扩大到1.5万到2万元。那5680元,某种意义上是一笔“保险费”,买来了避免更大灾难的可能。
其次,系统执行得比人果断。林晨自问,如果今天是他手动操作,看到第一只股票跌8%时,会不会心存侥幸:“再等等,也许能反弹”?而系统没有情绪,触及红线就平仓,纪律性满分。
但问题也暴露得很明显。
他点开波动率模型的代码文件,眉头越皱越紧。这个模型是基于过去一年的历史波动率数据训练的,它假设市场的波动有一定的连续性和可预测性。但在黑天鹅事件里,波动是断裂的、跳跃的,从平静到恐慌几乎没有任何过渡。
“模型没有见过这种极端情况”。林晨低声说,“训练数据里最大的单日波动率也只有今天的一半”。
这意味着,模型对风险的预估严重不足。它根据历史数据认为“这种跌幅概率极低”,所以没有提前降低仓位或采取更保守的策略。等到暴跌真正发生时,虽然止损机制兜了底,但已经是在挨了一记重拳之后。
林晨调出模型预测值与实际值的对比图。从九点三十开始,两条线就分道扬镳,预测线还平缓地躺着,实际线已经垂直向上飙升。
“得重新思考波动率的建模方式”。他打开一个新的笔记文档,快速敲下几个关键词:【极端值理论】【厚尾分布】【市场微观结构冲击传导】。这些都是金融工程里处理黑天鹅风险的高级方法,他之前只是粗略看过,现在成了必须啃下来的硬骨头。
时间不知不觉到了中午。苏婉发来微信,问他午饭想吃什么。林晨才意识到自己从早上到现在水米未进。他回复了一句“随便,你定”,注意力又回到屏幕上。
他做了一件很“程序员”的事:写了一个简单的脚本,模拟如果今天没有止损机制,持仓到收盘会亏多少。结果跑出来:-18,700元。
看着那个数字,林晨忽然笑了,一种带着苦涩和后怕的笑。
5680对。用不到三分之一的损失,避免了毁灭性的回撤。这笔账,怎么算都是止损赢了。
心态在这一刻发生了微妙的转变。最初的恐慌和肉疼,逐渐被一种更复杂的情绪取代:庆幸规则有效,敬畏市场无常,以及强烈的、想要改进系统的冲动。
他保存了今天所有的数据,单独建了一个名为“黑天鹅”的文件夹。这些数据将成为未来模型训练最珍贵的负样本——那些教科书里不会教、但真实市场血淋淋的教训。
下午两点,市场略有反弹,但依旧收跌。林晨没有重新进场,系统状态显示为【全现金观望】。这是风控规则的另一条:单日触发大量止损后,系统自动进入24小时冷却期,禁止开新仓,防止情绪化操作。
他关掉交易软件,打开学习资料,开始研究“极端值理论”。窗外的阳光渐渐西斜,在书桌上移动。偶尔有鸟雀掠过窗台,留下几声清脆的啼鸣。
傍晚六点,苏婉下班回家,拎着在楼下菜市场买的菜。她看到林晨坐在电脑前专注的背影,轻轻放下东西,走过来把手搭在他肩上。
“听说了,今天股市大跌”。她声音温和,“你那边…还好吗”?
林晨转过身,握住她的手:“亏了五千多。但系统止损了,避免了亏更多”。
苏婉看着他,没有问“那怎么办”,也没有说“别玩了”,只是点了点头:“规则有用就好。先吃饭吧”。
很简单的两句话,却让林晨心里一暖。她知道他在做什么,理解这件事的风险,也信任他的判断。这种支持,比任何安慰都更有力量。
饭桌上,林晨简单讲了今天市场的突发情况和系统的应对。乐乐眨着眼睛问:“爸爸,黑天鹅是什么颜色的天鹅呀”?童言无忌冲淡了紧绷的气氛,一家人都笑了。
晚饭后,林晨回到书房,没有继续看代码,而是打开了一个空白文档。他开始撰写今天事件的完整复盘报告,从市场信号出现,到系统响应,到数据偏差分析,再到后续优化方向。
写到“优化方向”这部分时,他停顿了很久。
最后他敲下几行字:
波动率模型必须重构,引入极端事件建模。
止损机制可优化:在系统性风险初期,能否更早识别并采取更主动的减仓?
考虑加入宏观因子实时监控模块(央行言论、国际债市、汇率异动等)。
本次亏损5680元,视为必要的系统压力测试成本。接受它,改进它。
点击保存时,窗外已是万家灯火。鹏城湾方向的天空被城市的霓虹映成暗红色,无数扇窗户里亮着光,每一盏灯下大概都有各自的故事与挣扎。
林晨靠在椅背上,看着自己复盘报告的标题:《黑天鹅事件:系统的第一次大考》。
考卷批改完了,分数不算好看,但及格了。更重要的是,他知道错在哪里,以及下次怎么考得更好。
就在这时,邮箱提示音响起。
他点开,是猎头Eliza chen的跟进邮件,语气比上次更急切:“林先生,t厂那个AI岗位的招聘窗口可能很快会收紧,如果您还有意向,建议本周内给个明确答复。薪资范围我可以再帮您争取…”
林晨看着邮件,又看了看屏幕上那份复盘报告。
市场用一次暴跌告诉他:没有什么系统是完美的,风险永远存在。
而职业选择,是另一场需要评估风险与收益的决策。
他回复框里打了几个字,又删掉。最终只写了一句:“谢谢提醒,我会认真考虑,明天给您答复”。
关掉邮箱,他最后看了一眼账户余额:194,320元。比昨天少了5680元,但比最坏的可能多了近1万3。
夜更深了。林晨关上电脑,走出书房。客厅里,苏婉在陪乐乐读绘本,暖黄的灯光洒在他们身上。
他忽然觉得,今天这只“黑天鹅”,或许来得正是时候。
第110章 危机管理
鹏城的晨光透过窗帘缝隙,洒在林晨的书桌上。
他比往常早起了半小时,眼睛还有些干涩——昨晚复盘到凌晨两点,睡了不到六个小时。但大脑异常清醒,那种经历市场风暴后的冷静,反而让思维更加敏锐。
电脑屏幕上,交易日志被重新打开。昨天那惊心动魄的半小时,被拆解成一条条冰冷的记录:
09:32:15 - 沪深300期货IF2306合约,价格跌破预设动态支撑线,触发预警。
09:33:08 - 系统检测到五分钟内波动率超过历史95%分位数,启动紧急评估。
09:37:22 - 第一笔止损单执行,亏损3120元。
09:42:05 - 第二笔止损单执行,亏损1850元。
09:51:05 -第三笔、第四笔止损单在15秒间隔内连续触发...
10:05:37 - 所有暴露在风险中的仓位完成平仓,总亏损5680元。
林晨的目光停留在最后一条记录上。
五千六百八十元。
这是他实盘以来最大单日亏损,占账户总资产的2.92%。如果放在一个月前,这个数字足以让他失眠整夜——那时他还在为每个月一万二的房贷发愁,五千块相当于半个月的还款额。
但现在,他盯着这个数字,心里涌起的不是恐慌,而是一种近乎冷酷的分析欲。
“止损机制生效了”。他低声自语,手指在键盘上敲击,调出另一个模拟面板。
这是他在事件发生后立即编写的“假设推演模块”——如果系统没有预设止损,或者止损阈值设置得更宽松,会发生什么?
数据开始滚动:
情景一:无止损机制
持仓将承受市场持续下跌至当日最低点
理论最大亏损:18,700元(占总资产9.6%)
需要后续盈利21.8%才能回本
情景二:止损阈值放宽至-8%
亏损将扩大至9,240元
回本所需盈利:10.2%
情景三:实际执行情况(止损阈值-3%~-5%)
实际亏损:5,680元
回本所需盈利:5.9%
林晨向后靠在椅背上,长长呼出一口气。
冰冷的数字背后,是一个残酷的数学事实:亏损的修复成本,远高于亏损本身。亏损10%,需要盈利11.1%才能回本;亏损50%,需要盈利100%才能回本。这是投资世界里最无情的几何级数。
他的止损机制,在昨天那个混乱的半小时里,硬生生把潜在的最大亏损从9.6%压到了2.92%。这意味着,系统只需要比原来少赚5.9%的利润,就能回到事件前的资产水平。
“值了”。林晨吐出两个字。
但这还不够。
他切换回主界面,开始检查系统的“伤情报告”。除了已经明确的波动率模型失效问题,还有几个隐藏的弱点在压力测试中暴露:
第一,止损触发后的仓位再平衡机制有延迟。系统在平仓后,本应自动将释放的资金分配到其他未触发的策略中,但实际延迟了17分钟——这期间市场已经反弹了1.2%,错过了最佳补仓时机。
第二,跨市场风险传染监控不足。昨天的事件是典型的“全球市场共振下跌”,美股期货、A股、港股、大宗商品几乎同步下挫。但系统对各市场间的相关性监控只停留在日线级别,对分钟级的传染效应反应迟钝。
第三,策略多样性不足。林晨目前实盘的七个策略中,有四个都基于类似的动量因子,导致在趋势逆转时集体失效。虽然通过资产类别(股票、期货、黄金)做了分散,但策略逻辑层面的分散不够。
“防守,需要多层防守”。林晨在笔记本上写下这几个字。
他想起大学时看过的一部战争纪录片,里面提到现代防空系统是“多层拦截体系”:远程预警雷达、中程防空导弹、近防炮,最后还有装甲硬扛。任何一层被突破,还有下一层顶上。
投资系统的风控,何尝不是如此?
第一层:事前预警。这需要更好的波动率模型,不仅要能预测“正常波动”,还要能识别“异常波动”的早期信号。林晨在昨天复盘中已经意识到,传统GARch模型在极端事件面前就像用体温计预测地震——完全不对路。
第二层:事中止损。这是昨天验证有效的一层,但可以优化。固定百分比止损太僵化,应该加入动态止损——在市场波动加剧时自动收紧止损线,在波动平缓时适当放宽,让止损更“智能”。
第三层:事后恢复。止损不是终点,而是风险控制的中间环节。系统需要在止损后快速评估市场状态,判断是“真危机”还是“假摔”,然后决定是立即补仓、观望,还是进一步减仓。
第四层:战略冗余。这是林晨刚刚意识到的——不能把所有鸡蛋放在同一个“策略逻辑”的篮子里。他需要开发一些与现有策略相关性低的“防守型策略”,比如市场中性策略、套利策略,在趋势策略失效时提供缓冲。
思路清晰后,林晨感到一种久违的兴奋。
这就像编程时遇到一个棘手的bug,你绞尽脑汁寻找根源,最终发现不是某一行代码错了,而是整个架构有缺陷。而重构架构的机会,往往意味着系统能力的一次跃升。
他打开python,新建了一个名为“risk_management_v2”的文件夹。
“先从波动率模型开始”。他自言自语。
传统的金融时间序列分析已经不够用了。林晨决定引入机器学习方法——用LStm(长短期记忆网络)来建模波动率的非线性特征。这种神经网络特别擅长处理时间序列数据,能够捕捉市场情绪、流动性变化等难以量化的因素。
他调出过去三年的分钟级交易数据,包括价格、成交量、买卖盘口深度、甚至新闻情感指数(通过爬取财经新闻并做情感分析得到)。这些都将作为特征输入模型。
“但样本不够”。林晨皱起眉头。
极端事件之所以叫“黑天鹅”,就是因为罕见。过去三年里,类似昨天那种级别的全球同步暴跌,只发生过四次。用四次事件来训练模型,无异于让小学生做高考题。
他想到了数据增强。
在图像识别领域,研究者常常通过旋转、裁剪、加噪声等方式“创造”更多的训练样本。在时间序列上能不能做类似的事情?比如,取一段正常的市场波动数据,人为注入“冲击”——模拟突然的成交量暴增、价格跳空、买卖盘失衡,然后让模型学习识别这种“异常模式”。
“可以试试”。林晨开始编写数据生成脚本。
这个过程中,他不断回想起昨天市场暴跌时的感受——那种心脏骤停般的紧张,手指发凉地盯着屏幕,看着数字一跳一跳地往下掉。作为人类交易员,那种生理反应本身就是一种“预警信号”:肾上腺素飙升,注意力高度集中,本能地想“做点什么”。
能不能让AI也具备某种“警觉状态”?
林晨停下敲代码的手,思考这个有些哲学意味的问题。AI没有情绪,但可以通过监控自身的“不确定度”来模拟警觉。当模型对市场的预测置信度突然下降时,当不同策略给出的信号严重矛盾时,当历史相似模式匹配度低于某个阈值时——系统应该自动进入“黄色预警”甚至“红色预警”状态,触发更保守的交易规则。
他给这个功能起了个名字:“系统自感知风险模式”。
时间不知不觉到了中午。
苏婉轻轻推开书房门,端着一碗汤面进来:“先吃饭吧。乐乐上午问我,爸爸是不是又在和电脑打架”。
林晨这才意识到已经坐了四个多小时。他接过面碗,热腾腾的番茄鸡蛋面,上面还撒了葱花——苏婉知道他熬夜后胃口不好,特意做得清淡。
“不是打架,是在给系统穿盔甲”。他笑了笑,吃了一大口面,胃里暖和起来。
“昨天亏的钱...要紧吗”?苏婉坐在床边,语气平静,但眼神里有关切。
林晨放下筷子,认真地说:“亏了五千六。但如果不亏这五千六,可能会亏一万八。系统的止损功能起作用了,这是好事”。
他顿了顿,补充道:“而且,这次亏损暴露了系统的问题,让我知道该怎么改进。从这个角度看,五千六买了一次宝贵的压力测试,值”。
苏婉点点头,她不懂技术细节,但听得懂丈夫话里的逻辑和信心。这就够了。
“对了”,她想起什么,“早上物业来通知,下个月要收第二季度的物业费了,两千四”。
林晨心算了一下。房贷一万二,物业费两千四,生活费三千,乐乐幼儿园费用四千...一个月固定支出将近两万。他的存款还有不到二十万,按这个消耗速度,只能撑十个月。
但投资账户里还有十九万多。如果系统优化后能恢复盈利,哪怕月化收益只有3%,一个月也有近六千块,能覆盖一部分开销。
“知道了,我记着”。他说。
苏婉离开后,林晨快速吃完面,回到电脑前。
职业选择的压力依然悬在头顶——猎头Eliza的邮件还在收件箱里躺着,t厂的面试机会就像一道诱人但危险的门。去,意味着稳定的高薪、职业履历的光环、技术视野的拓展;不去,意味着继续这种充满不确定性的自由探索,以及投资系统可能带来的指数级回报。
“再给我两周”。林晨对着空荡荡的房间说。
两周时间,他要完成风险管理系统的基础重构,让系统具备应对下一次“黑天鹅”的能力。到那时,他才能心无旁骛地决定——是走进大厂的门,还是继续走这条自己趟出来的路。
窗外,鹏城的天空又聚集起乌云,远处传来隐隐的雷声。
又一场雨要来了。
林晨看了一眼天气预报,下午有雷阵雨,降水概率80%。他忽然想到什么,打开浏览器,搜索“雷暴天气对金融市场的影响”。
一篇学术论文跳出来:研究者统计发现,在纽约证券交易所所在地遭遇恶劣天气时,交易员的情绪会受到影响,导致市场波动率轻微上升,尤其是那些需要人工高频判断的交易...
“连天气都是因子”。林晨喃喃道。
他新建了一个文档,标题是《待整合的风险因子清单》,然后在第一行写下:
宏观经济事件(央行政策、地缘政治)
跨市场传染效应
流动性骤变
极端天气与自然灾害
市场结构变化(如交易规则修改)
投资者情绪极端化
技术故障与网络攻击
...
清单越写越长,仿佛在列举这个世界所有的不确定性。
而林晨要做的,是用代码和算法,在这片不确定的海洋中,建造一艘能够抵御风暴的船。
船已经漏水过一次。 现在,他知道该补哪里了。
第111章 对冲策略
鹏城的雨季来得毫无征兆。
窗外雨声淅沥,林晨坐在书房里,盯着屏幕上跳动的K线图。距离上次系统回撤已经过去一周,账户净值缓慢爬升到20.3万,但波动率依然让他皱眉——单日最大回撤仍然有2.1%,这种过山车般的体验,对心脏实在不够友好。
“还在看盘”?苏婉端着杯热牛奶走进来,放在书桌一角,“乐乐睡了,今天幼儿园老师说他午睡时还在念叨‘爸爸的代码不会骗人’”。
林晨嘴角微扬,接过牛奶喝了一口:“这小子……对了,下个月物业费我转给你了,记得查收”。
“看到了”。苏婉在他身后的懒人沙发上坐下,拿起一本教案,“你最近睡得比之前晚,系统不是已经稳定了吗”?
“稳定,但不够优雅”。林晨调出过去三个月的净值曲线,放大局部波动,“你看这里,3月15号,市场突发利空,我们持仓的几只科技股集体跳水,系统虽然触发了止损,但当天净值还是跌了1.8%”。
苏婉凑过来看了看:“可第二天不就涨回来了吗”?
“问题就在这里”。林晨切换到一个专业指标面板,“夏普比率,衡量每承担一单位风险能获得多少超额收益。我们系统目前是1.2,在量化策略里算及格,但不够优秀。真正顶级的私募产品,夏普能做到1.5以上”。
他顿了顿,手指在键盘上敲击,调出一篇论文:“我这几天在研究期权对冲。简单说,就是花一小部分成本,给投资组合买个‘保险’”。
“保险”?苏婉放下教案,来了兴趣。
“对。比如我们持有10万块的某只股票,担心它短期会跌,就可以花几千块钱买入对应的看跌期权”。林晨打开期权交易软件的模拟界面,“如果股票真跌了,期权会升值,抵消股票亏损;如果股票涨了,我们只是损失那几千块期权费,但股票的盈利照拿”。
苏婉思考了几秒:“听起来像车险,每年交保费,不出事故钱就白花了,但出了事能兜底”。
“就是这个逻辑”。林晨赞许地点头,“不过期权比车险复杂得多,有到期时间、行权价、波动率这些变量。我需要写个算法,动态计算什么时候该买保险、买多少、买什么期限的”。
他点开一个新建的python文件,屏幕上出现密密麻麻的代码框架。过去一周,他已经啃完了三本期权定价的经典教材,black-Scholes模型、希腊字母(delta、Gamma、theta…)这些概念从陌生到熟悉。
“最难的是波动率曲面建模”。林晨指着屏幕上的一堆公式,“同一只股票,不同到期日、不同行权价的期权,隐含波动率都不一样,形成一个三维曲面。我需要用机器学习方法拟合这个曲面,才能准确估算期权价格”。
苏婉虽然听不懂技术细节,但能感受到丈夫眼神里的专注。那种光芒,和半年前失业在家时的迷茫截然不同。
“需要我帮忙吗”?她轻声问。
林晨想了想:“还真有。你帮我看看这段说明文字通不通顺——我打算在系统里加个‘对冲仪表盘’,用可视化方式展示当前的对冲状态”。
苏婉接过鼠标,滚动着林晨写的界面说明文档。作为语文老师,她对文字表达有种天然的敏感:“‘delta敞口’这个词太专业了,普通用户看不懂。可以改成‘方向风险暴露度’,再加个通俗解释:正数表示怕跌,负数表示怕涨,零表示涨跌都不怕”。
“这个好”。林晨快速修改,“还有呢”?
“这里,‘theta衰减’可以叫‘时间损耗’,更直观。对了,你可以在每个专业术语旁边加个问号图标,鼠标悬停时弹出通俗比喻——就像我给小学生讲古诗时用的方法”。
夫妻俩一个负责技术逻辑,一个负责用户表达,配合默契。窗外的雨声渐渐小了,书房里只剩下键盘敲击声和偶尔的讨论。
凌晨两点,林晨完成了对冲引擎的第一个可运行版本。他深吸一口气,在模拟环境中启动回测。
屏幕上,两条曲线开始并行绘制。蓝色是原始策略的净值曲线,红色是加入期权对冲后的新版曲线。前三个月的数据快速滚动——
“波动率降下来了”。林晨盯着屏幕右下角的统计指标,“最大回撤从8.7%降到5.2%,夏普比率从1.2提升到1.43……年化波动率降低了三分之一”。
苏婉已经有些困倦,但看到丈夫脸上的兴奋,还是打起精神:“效果这么明显”?
“比预期还好”。林晨放大今年2月份市场剧烈震荡的那段时期,“你看,原始策略那几天净值上蹿下跳,像心电图;对冲后的曲线平滑多了,虽然涨得慢一点,但稳稳向上”。
他调出交易记录明细:“对冲成本平均占本金的0.8%每月,也就是说,我们每年要花大约10%的收益来买保险。但换来的,是睡眠质量的大幅提升——不用再半夜惊醒看美股了”。
“值得”。苏婉肯定地说,“有些钱就该让别人赚。对了,你打算实盘用吗”?
林晨没有立即回答。他关掉模拟环境,打开实盘账户界面。账户总资产203,150元,其中18万是股票和EtF持仓,剩余2万多现金。如果启用对冲,每月需要支付大约1600元的期权费。
“先用5万块做个小规模实验吧”。他新建了一个实验子账户,“我设置成渐进式启用:市场波动率低的时候少对冲,波动率高的时候多对冲。这样既能控制成本,又能在关键时刻提供保护”。
设置完参数,林晨看了眼时间——凌晨三点十分。他保存所有代码,关闭电脑。
“睡吧”。苏婉已经靠在沙发上快睡着了。
林晨扶起妻子,两人轻手轻脚回到卧室。乐乐在儿童床上睡得正香,怀里还抱着那个印着python代码图案的抱枕。
躺下后,林晨却一时睡不着。他闭着眼,脑海里还在回放那些公式和曲线。期权对冲不只是个技术工具,它代表了一种思维转变:从追求收益最大化,转向追求风险调整后的收益最优化。
这就像人生,他想。年轻时总想搏一把大的,到了三十五岁,才明白“不输”有时候比“赢”更重要。房贷要还,孩子要养,父母渐老——这些现实的责任,让冒险的代价变得具体而沉重。
但纯粹的防守又不够。如果只是为了不输,把钱存银行就好了,何必研究这些复杂的模型?真正的平衡,是在控制住下行风险的前提下,依然保持向上的弹性。
就像他给系统写的那个对冲算法:市场平静时,只保留基础保护,让策略自由奔跑;市场动荡时,自动加大保险力度,锁住利润,等待风暴过去。
窗外的雨彻底停了,远处传来凌晨环卫车作业的微弱声响。鹏城这座不夜城,总有无数人在深夜里忙碌——码农赶着上线,交易员盯着全球市场,外卖骑手穿梭在湿漉漉的街道。
林晨轻轻翻了个身,手碰到苏婉温暖的手臂。妻子在睡梦中呢喃了一句什么,听不清,但语气安稳。
他忽然想起陈博士在面试时说的那句话:“所有智能,最终都要服务于具体的人”。
是的,这些代码、模型、曲线,最终服务的不过是这样平凡的夜晚:家人安睡,房贷有着落,明天醒来时,对生活仍有掌控感。
而他要做的,就是让这种掌控感,再牢固一点。
第112章 多账户管理
鹏城初夏的午后,阳光透过百叶窗在书桌上投下斑驳的光影。林晨盯着屏幕上密密麻麻的代码,眉头微皱。
A股账户的对冲实验已经运行了一周,效果比预期更好——在最近三天市场小幅回调的情况下,对冲组合不仅守住了利润,还实现了0.8%的正收益。这个结果让林晨既欣慰又警惕。欣慰的是策略有效,警惕的是单一市场的局限性。
“鸡蛋不能放在一个篮子里”。他轻声自语,想起了巴菲特那句老话。
但真正让他下定决心的,是昨晚复盘时发现的一个细节:A股市场在节假日休市期间,港股和美股仍在交易。这意味着他的AI系统有近三分之一的时间处于“闲置”状态——这对于追求效率的量化系统来说,简直是资源浪费。
林晨打开浏览器,开始研究港股开户流程。与A股不同,港股通需要50万资产门槛,他暂时达不到。但通过香港券商直接开户,门槛要低得多。他对比了几家主流券商——富途、华盛、耀才,最终选择了富途,因为它的ApI接口文档最完善,对量化交易支持相对友好。
开户流程比想象中繁琐。身份认证、地址证明、风险测评、视频见证……林晨花了整整一个下午才完成所有步骤。当最后一步“提交审核”的按钮按下时,他靠在椅背上长舒一口气。
“搞定一个”。他看了眼时间,下午四点二十分。
这时苏婉推门进来,手里端着切好的水果:“忙一下午了,休息会儿”。
林晨接过果盘,叉起一块西瓜:“刚开了港股账户”。
“港股”?苏婉在他旁边的椅子上坐下,“就是那些腾讯、美团那些公司上市的地方”?
“对。港股有很多A股没有的优质公司,而且交易规则更灵活,t+0,没有涨跌停限制”。林晨解释道,“更重要的是,港股和A股的交易时间有重叠但也有差异,可以形成时间上的互补”。
苏婉若有所思:“那是不是还要研究美股”?
“聪明”。林晨笑了,“美股才是全球最大的资本市场,苹果、微软、谷歌、亚马逊……这些科技巨头都在那里。而且美股交易时段正好是我们的晚上,这样我的系统就可以实现‘全天候作战’了”。
他说着打开一个文档,上面是他草拟的多市场布局方案:
1. 时间覆盖
A股:09:30-11:30,13:00-15:00(北京时间)
港股:09:30-12:00,13:00-16:00(与A股高度重叠但延长1小时)
美股:21:30-04:00(北京时间,次日凌晨)
2. 资金分配(初期)
A股:12万(主战场,策略最成熟)
港股:5万(试验场,测试跨市场适应性)
美股:3万(探索区,学习规则和策略调整)
3. 风险分散
三个市场相关性分析
汇率风险对冲方案
跨市场资金调度机制
苏婉看完方案,指了指“汇率风险”那一项:“这个怎么解决?港币和美元兑人民币都在波动”。
“问得好”。林晨调出另一个文件,“我准备用两种方式:一是自然对冲,比如港股账户赚了港币,如果人民币升值,我就暂时不换回人民币,等汇率合适再说;二是如果资金量大了,可以考虑用外汇远期或者期权做套期保值”。
他顿了顿:“不过现阶段资金量小,汇率波动的影响有限。更重要的是先打通技术链路”。
接下来的三天,林晨进入了高强度工作状态。
港股账户审核通过后,他立即开始对接富途的ApI。与A股券商ApI相比,富途的接口设计更现代化,支持webSocket实时行情,但文档全是英文,有些细节需要反复测试。
“Futuopend的订单类型有六种……”林晨一边阅读文档一边在本地环境调试,“限价单、增强限价单、特别限价单……这个‘竞价限价单’是什么鬼”?
他打开港股交易规则仔细研究,才发现港股的开盘前时段和收盘竞价时段与A股完全不同。特别是收盘竞价时段,允许在16:00-16:10之间输入买卖盘,最终以最大成交量原则确定收盘价——这个机制对量化策略的影响很大。
“每个市场都有自己的脾气啊”。林晨感慨道。
他调整了策略模块,为港股专门增加了“收盘竞价处理逻辑”,避免在最后十分钟产生意外交易。
港股系统调试到一半,美股的研究也必须开始了。美股开户更麻烦,需要选择支持国际客户的券商。林晨对比了盈透证券(IbKR)、德美利证券(td Ameritrade)和嘉信理财(charles Schwab),最终选择了盈透,因为它在量化交易领域的口碑最好,ApI功能最强大。
但盈透的开户流程让林晨差点崩溃——w-8bEN税表、身份公证、资金来源证明……光是准备材料就花了整整两天。期间他还需要和美国客服邮件沟通,时差让他不得不熬夜到凌晨。
“你这两天黑眼圈都出来了”。苏婉有些心疼,“不用这么赶吧”?
林晨揉了揉太阳穴:“美股账户开通后,还要申请ApI权限,又要几个工作日。我想尽快把三个市场都打通,这样系统才能真正开始‘学习’不同市场的特性”。
他指着屏幕上的时间轴:“你看,如果一切顺利,下周我的系统就可以这样运行:白天交易A股和港股,晚上交易美股,深夜到凌晨进行数据分析和模型训练,第二天早上生成新的交易信号——形成一个完整的闭环”。
苏婉想象了一下那个画面:“那岂不是24小时连轴转”?
“系统是24小时运转,但我不用”。林晨笑道,“这就是自动化的意义。我只需要每天花一两个小时复盘,调整参数,其他的交给AI”。
话虽如此,但多账户管理带来的技术挑战远超预期。
首先是数据源问题。A股数据可以用tuShare免费获取,港股数据需要购买,美股数据更贵——实时行情一年要几千美元。林晨研究了一圈,最终找到了折中方案:用免费的雅虎财经ApI获取延迟15分钟的数据用于回测,实盘交易时直接用券商提供的实时行情。
其次是策略适配问题。他在A股验证有效的动量策略,在港股可能表现平平;A股常用的技术指标,在美股市场可能需要调整参数。林晨不得不为每个市场建立独立的特征工程模块,让系统自动学习最适合该市场的因子组合。
最棘手的是资金管理和风险控制。三个账户,三种货币,如何动态分配资金?如何设置整体的最大回撤控制?如何避免一个市场的亏损影响到其他账户?
林晨设计了一个“中央风控大脑”——一个独立的python程序,实时监控三个账户的总资产、单日盈亏、持仓集中度等指标。当任何一项指标触及阈值时,系统会自动降低仓位或暂停交易。
“这个风控模块的逻辑要反复测试”。他对苏婉说,“宁可少赚,不能大亏”。
周五晚上,美股账户终于审核通过。林晨立即申请了ApI权限,然后开始熬夜调试。盈透的twS ApI是基于Java的,他需要用ib_insync这个python库进行封装。文档复杂,示例代码有限,林晨不得不一边查Stack overflow上的问答,一边自己摸索。
凌晨两点,当第一个测试订单在美股模拟账户中成交时,林晨忍不住挥了挥拳头。
“成功了”!
苏婉已经睡了,他压低声音,但脸上的兴奋藏不住。他迅速写了一个简单的脚本,让系统同时连接三个券商账户,获取实时持仓和资金数据。
屏幕上,三个窗口并排显示:
A股账户(人民币)
总资产:124,587.32
当日盈亏:+1,234.56
持仓:3只股票
港股账户(港币)
总资产:58,432.10(约合人民币52,589.89)
当日盈亏:+320.45
持仓:2只股票
美股账户(美元)
总资产:4,567.89(约合人民币32,975.21)
当日盈亏:+23.45
持仓:1只股票
汇总(人民币)
总资产:约210,152.42
当日总盈亏:+1,578.46
夏普比率(年化):2.31
最大回撤:-3.24%
林晨盯着这些数字,心中涌起一种奇妙的成就感。八个多月前,他还在为再次失业焦虑,账户里只有5万块启动资金。现在,他不仅开发出了稳定的AI交易系统,还将战场扩展到了三个市场。
但这只是开始。
他打开回测报告,仔细分析三个市场的表现差异。A股波动大,但机会也多;港股估值低,但流动性差;美股趋势性强,但需要适应不同的交易规则。如何让同一个AI核心,在三片不同的土壤中都开花结果?
林晨新建了一个文档,标题是《多市场自适应策略框架》。他打算设计一个元学习模块,让系统能够自动识别当前市场的特征(波动率、流动性、趋势性等),然后动态调整策略参数,甚至切换不同的策略类型。
这个想法很宏大,实现起来需要大量的数据和测试。但他有时间——失业后的这几个月,他最大的收获就是学会了“长期主义”。不急于一时,但每一步都要扎实。
窗外天色渐亮,鹏城开始苏醒。林晨保存好所有代码和文档,关掉电脑。他走到阳台,深吸一口清晨的空气。
远处,鹏城湾的海平面泛起金色的光。那里有他梦想中的大平层,但现在看来,那不只是个居住的地方,更是一个象征——象征着通过技术和智慧,普通人也能在这个城市站稳脚跟,甚至创造奇迹。
手机震动了一下,是富途的推送:“您申请的ApI交易权限已获批”。
林晨笑了笑,回屋准备早餐。今天周六,他答应带乐乐去海边玩。投资很重要,但生活本身更重要——这是苏婉经常提醒他的。
煎蛋的香气飘满厨房时,他突然想到一个问题:三个市场,三种货币,如果以后资金量大了,换汇成本会很高。有没有可能……
一个模糊的想法在脑中浮现:开发一个智能换汇系统,根据汇率预测自动调度资金?
他摇摇头,把这个念头暂时压下去。先把手头的事情做好,一步一个脚印。
但种子已经埋下。
第113章 T厂的招聘
鹏城的秋天来得晚,十月底的午后依然带着夏末的余温。林晨坐在书房里,屏幕上同时开着三个终端窗口:左边是港股实时行情,中间是美股盘前数据,右边则是他刚写完的一篇技术博客草稿——关于多市场量化系统中时间序列对齐的工程实践。
投资系统运行半年多,累计盈利已经超过四万。这个数字不算惊人,但胜在稳定。更重要的是,这套系统像一台精密的机器,在A股、港股、美股三个市场间自动运转,几乎不需要他手动干预。每天开盘前检查一遍风控指标,收盘后看看汇总报表,剩下的时间他可以完全投入到技术学习和项目开发中。
这种“被动收入”带来的从容感,是半年前那个被裁员后焦虑失眠的林晨无法想象的。
手机震动了一下,是张伟发来的微信:“老林,t厂AI部门最近在招人,岗位要求我发你了,看看有没有兴趣”。
林晨点开链接,跳转到t厂招聘官网。页面设计简洁大气,深蓝色背景上“AI Lab”几个字母格外醒目。他滚动鼠标,仔细阅读岗位描述:
高级AI算法工程师(量化方向)
负责金融量化交易模型的研发与优化
要求精通python、pytorch/tensorFlow,有扎实的机器学习理论基础
有量化交易系统开发经验者优先
熟悉A股、港股、美股至少一个市场的交易规则
具备大规模数据处理和分布式系统经验
岗位要求一栏列了十几条,从算法到工程,从理论到实践,几乎覆盖了AI量化领域的所有技能点。最后一行写着:“本岗位竞争激烈,需通过五轮技术面试及一轮总监面”。
林晨深吸一口气。
t厂——国内互联网的顶级殿堂,AI领域的前沿阵地。如果能进去,不仅意味着职业生涯的彻底翻身,更意味着能接触到最顶尖的技术、数据和人才。但竞争有多激烈,他心里清楚。去年t厂AI部门的校招录取率不到1%,社招只会更残酷。
他盯着屏幕看了足足三分钟,然后打开了自己的简历文档。
这份简历已经迭代了十几个版本。从最初简单罗列工作经历,到现在重点突出技术项目和开源贡献,每一处修改都记录着他这半年来的成长轨迹。最新版本里,最醒目的位置是三个板块:
核心项目:多市场智能投资系统
自主研发的量化交易系统,覆盖A股、港股、美股
采用LStm+Attention的时序预测模型,年化收益率18.7%(回测数据)
构建了完整的工程链路:数据采集→特征工程→模型训练→实时推理→自动交易
实现了跨市场风控和资金调度模块
开源贡献
pytorch-quant:一个轻量级量化交易框架,Github Star 327
贡献了tensorFlow Extended(tFx)的两个bug修复
在medium和知乎专栏发表技术文章12篇,累计阅读量超50万
技术栈
机器学习:精通传统mL算法,熟悉cNN/RNN/transformer等深度学习模型
工程能力:熟悉docker/K8s部署,有AwS/Aliyun云服务经验
量化金融:熟悉技术指标、因子挖掘、组合优化等量化方法论
林晨逐字逐句地检查,调整了几个表述不够精准的地方,然后把简历导出为pdF。文件名特意用了“林晨_AI量化_10年经验_项目突出.pdf”这样的格式——这是他从一篇面试攻略里学到的技巧,方便hR快速抓取关键信息。
接下来是寻找内推渠道。
林晨打开脉脉,这个职场社交App他注册了半年,但一直没怎么用。他在搜索框输入“t厂 AI”,跳出来几百个相关用户。他按照“AI Lab”“量化”“算法”等标签筛选,最终锁定了三个可能的目标:一个在t厂AI部门工作三年的算法工程师,一个是量化组的tech Lead,还有一个是负责招聘的hRbp。
该联系谁?
林晨想了想,决定先联系那位算法工程师。理由很简单:技术人之间更容易沟通,而且对方如果认可他的技术能力,内推的意愿会更强。他点开对方的主页,看到简介里写着:“t厂AI Lab量化组,专注于高频交易模型。喜欢爬山和打羽毛球”。
有共同爱好,是个不错的切入点。
林晨斟酌了十分钟,写下一段私信:
“王工您好,我是林晨,一名有10年开发经验的工程师。最近半年专注于AI量化领域,自主研发了一套多市场投资系统,并在Github上开源了相关框架。看到您在t厂AI量化组工作,非常敬佩。我注意到贵部门正在招聘高级AI算法工程师(量化方向),我的技术栈和项目经验与岗位要求高度匹配,不知能否请您帮忙看看简历,如果合适的话希望能获得一个内推机会?冒昧打扰,非常感谢”!
他附上了Github主页链接和简历pdF,点击发送。
等待回复的时间格外漫长。
林晨强迫自己把注意力转回投资系统。港股下午四点收盘,美股晚上九点半开盘,中间有五个半小时的空档期。他打开系统监控面板,检查今日的交易记录:A股做了两笔网格交易,盈利八百多;港股的一只EtF触发了止盈条件,获利一千二;美股盘前暂时没有信号。
资金汇总栏显示,三个账户总资产21.7万,其中本金18万,盈利3.7万。加上之前累计的盈利,整体收益率确实超过了20%。这个成绩放在私募基金里不算顶尖,但作为一个完全自主研发、从零起步的系统,已经足够证明他的技术实力。
手机又震了一下。
林晨迅速抓起来,是脉脉的消息提醒。他点开,心跳不由得加快。
那位王工回复了:“Github看了,项目不错。pytorch-quant的代码结构很清晰,文档也写得详细。你那个多市场系统的架构图能发我看看吗”?
有戏!
林晨立刻从电脑里找到系统架构图的Visio文件,转换成pNG格式发过去,同时补充了一段文字说明:
“这是系统的整体架构。数据层通过多个ApI接口采集行情和基本面数据;特征工程层做了标准化和时序对齐;模型层目前主要用LStm+Attention,正在尝试transformer;交易层实现了A股、港股、美股的自动下单;风控层有实时监控和熔断机制。所有模块都容器化了,用K8s调度”。
五分钟后,对方回复:“做得挺扎实。特别是跨市场风控那块,很多创业公司都没考虑这么细。简历我看了,项目经验确实符合我们组的需求。不过t厂的面试难度你应该听说过,五轮技术面,每轮都要写代码,还有系统设计和算法推导”。
“我明白”。林晨打字,“这半年我一直在刷Leetcode,也系统复习了机器学习理论。如果能有面试机会,我会全力以赴”。
“行,我给你内推。你把邮箱发我,我走内部系统提交。不过有几点要提前说清楚:第一,内推只是保证简历能被看到,不保证通过筛选;第二,如果进入面试流程,我会是你的内推人,但面试官是随机的,我影响不了结果;第三,t厂的薪资结构是base+年终奖+股票,总包可能达不到你之前期望的120万,但成长空间很大”。
“明白,非常感谢”!林晨立刻回复。
“不客气。技术人互相帮助应该的。你的Github Star数比我刚进t厂时还多,保持这个势头”。王工最后发了个加油的表情,“内推提交后,hR会在1-3个工作日内联系你。祝好运”。
对话结束。
林晨靠在椅背上,长长地呼出一口气。书房窗外,夕阳正缓缓沉入深圳湾的地平线,海面上泛起金色的波光。远处腾讯滨海大厦的玻璃幕墙反射着晚霞,那栋楼里,有中国最顶尖的AI团队。
他站起身,走到阳台。秋风吹在脸上,带着微凉。
半年了。从被裁员那天的茫然失措,到自学AI的挑灯夜战,再到投资系统从无到有。这一路走来,每一个深夜的代码,每一次失败的调试,每一篇啃完的论文,都像一块块砖石,铺成了通往今天的路。
现在,门开了一条缝。
他能推开吗?
手机又响了,这次是苏婉打来的:“老公,晚上想吃什么?乐乐说想吃你做的红烧排骨”。
“好,我这就去买菜”。林晨的声音里带着笑意,“对了,有个好消息。t厂的内推,拿到了”。
电话那头沉默了两秒,然后传来苏婉轻柔却坚定的声音:“我就知道你可以。不管结果怎么样,你都已经很棒了”。
挂断电话,林晨看着远处渐渐亮起的城市灯火。鹏城的夜晚总是来得很快,华灯初上时,整座城市像换上了另一副面孔——忙碌、璀璨、充满无限可能。
他回到书房,打开Leetcode。距离美股开盘还有三个小时,足够他刷五道中等难度的算法题。
屏幕的光映在他脸上,那双眼睛里,有紧张,有期待,但更多的是沉静。
代码可以骗人,但逻辑不会。
而人,更不该辜负那些深夜里的坚持。
第114章 内推机会
鹏城的午后,阳光透过书房的百叶窗,在地板上投下斑驳的光影。林晨坐在电脑前,屏幕上是脉脉的聊天界面,光标在输入框里闪烁。
距离上次和王工联系已经过去三天。
这三天里,林晨把Leetcode上的高频题目又刷了一遍,重新梳理了transformer、bERt、Gpt系列模型的底层原理,还特意研究了t厂最近开源的几个AI框架。但他心里清楚,技术准备永远没有“足够”的时候,真正让他悬着心的,是那封内推邮件到底有没有被hR看到。
“叮——”
手机突然震动。
林晨几乎是条件反射地抓起来,屏幕上显示一条微信消息,来自张伟:“老林,在吗?有个事跟你说”。
他快速回复:“在,张哥你说”。
张伟直接拨了语音过来,声音里带着笑意:“我刚跟t厂一个朋友吃饭,聊到你那事儿了。你猜怎么着”?
林晨心跳快了一拍:“怎么”?
“你那个Github项目,在他们内部小圈子里传开了”。张伟说,“就你那个多市场智能投资系统的架构图,有人截图发到他们技术群里,讨论了一轮。评价还不错,说设计思路清晰,特别是跨市场风险对冲那部分,考虑得挺周全”。
林晨握着手机,手心微微出汗:“真的”?
“我骗你干嘛”。张伟笑道,“我那朋友说,现在大厂招AI量化的人,最看重的就是有没有实盘经验。你那个系统虽然资金量不大,但跑了半年,回测数据和实盘数据能对上,这就是最好的证明。比那些只会纸上谈兵的强多了”。
“那内推……”
“应该快了”。张伟说,“我朋友说,他们组最近确实在招人,hc(招聘名额)有两个,但竞争激烈,光内推的简历就堆了上百份。不过你的简历有亮点,王工又是直接推给hR的,优先级会高一些”。
挂断语音,林晨靠在椅背上,长长吐了口气。
窗外的鹏城湾在阳光下泛着粼粼波光,远处平安金融中心的塔尖直插云霄。这座城市永远在高速运转,机会像地铁一样一趟接一趟,但能不能挤上车,得看你的位置和时机。
他打开邮箱,刷新。
没有新邮件。
又打开脉脉,找到和王工的聊天记录。最后一条消息还是三天前,王工说:“简历已推,等hR联系吧,估计一周内会有消息”。
林晨盯着那句话看了几秒,关掉窗口。
焦虑没有用。
他起身走到客厅,从冰箱里拿了瓶冰水,一口气喝了半瓶。冰凉的感觉顺着喉咙滑下去,让躁动的心绪稍微平复了些。
茶几上摊着乐乐昨晚画的画——一家三口手牵手,背景是彩虹和太阳。五岁孩子的笔触稚嫩,但色彩鲜艳,充满生命力。林晨拿起画仔细看了看,嘴角不自觉扬起。
“爸爸,你看我画得好吗”?乐乐不知什么时候从卧室跑出来,光着脚丫,仰着小脸问。
“画得特别好”。林晨蹲下身,摸摸儿子的头,“尤其是这个太阳,画得真暖和”。
“妈妈说我画的是我们家的太阳”。乐乐认真地说,“妈妈说,爸爸就是家里的太阳”。
林晨心里一暖,把儿子抱起来:“那妈妈呢”?
“妈妈是月亮”!乐乐搂着他的脖子,“晚上陪我睡觉,讲故事”。
“那乐乐是什么”?
“我是小星星”!乐乐咯咯笑起来,“一闪一闪亮晶晶”!
苏婉从厨房走出来,手里端着切好的水果,看到父子俩闹成一团,眉眼弯弯:“别闹了,来吃点水果。林晨,你简历那边有消息了吗”?
“还没”。林晨放下乐乐,接过果盘,“张伟刚打电话,说我的项目在他们内部传开了,评价还行”。
“那就好”。苏婉在他身边坐下,递给他一块苹果,“别太着急,该来的总会来。你这半年这么拼,技术底子打扎实了,机会肯定能抓住”。
林晨咬了口苹果,清甜的汁水在嘴里化开。他看着妻子平静的侧脸,心里那点焦躁渐渐沉淀下来。
是啊,急什么?
这半年,他每天学习十个小时以上,写了几万行代码,读了上百篇论文,开源项目Star数突破两千,技术博客关注者破十万,投资系统稳定盈利四万多——这些实实在在的积累,不会因为一封邮件的早晚而改变价值。
“对了”,苏婉忽然想起什么,“你哥昨天打电话,说小浩在厨师学校表现不错,老师夸他有天赋。他想问问你,等小浩学出来,下一步该怎么规划”。
林晨放下苹果,认真想了想:“小浩才学了三个月,基本功得打牢。等他把刀工、火候、调味这些基础都掌握扎实了,我再跟他聊聊。餐饮这个行业,光会做菜不够,还得懂运营、懂成本、懂客户”。
“你哥说,小浩现在特别用功,每天练到晚上十点才回宿舍”。苏婉感慨,“这孩子以前在流水线上混日子,现在像变了个人似的”。
“人有了目标,自然就有动力”。林晨说,“等我这边的机会定下来,我就开始规划餐饮的事。鹏城科技园那边白领多,快餐需求大,是个好切入点”。
正说着,书房的电脑突然传来“叮咚”一声——是新邮件的提示音。
林晨身体一僵。
苏婉也听到了,推了推他:“快去看看吧”。
林晨几乎是跑回书房的。
他坐到电脑前,屏住呼吸,点开邮箱。
发件人:talent Acquisition team, t pany 主题:Regarding Your Application for AI quantitative developer position
邮件正文是英文,措辞标准而克制:
dear mr. Lin,
thank you for your interest in the AI quantitative developer position at t pany. we have received your referral and would like to invite you to participate in our interview process.
the first round will be a technical phone screening, scheduled for this Friday at 2:00 pm. the interview will last approximately 60 minutes and will focus on data structures, algorithms, and machine learning fundamentals. A calendar invitation will be sent separately.
please confirm your availability at your earliest convenience.
best regards, hR team t pany
林晨把邮件反复看了三遍。
确认。
邀请。
周五下午两点,技术电话面试。
他靠在椅背上,闭上眼睛,让这个消息在脑海里慢慢消化。心脏在胸腔里有力地跳动,一下,又一下。
半年了。
从再次被裁员的那天起,到自学AI的无数个深夜,到投资系统第一次盈利的激动,到Github项目被越来越多人关注,再到今天——这封邮件像一扇门,终于在他面前打开了一条缝。
门后是什么,他不知道。
但他知道,自己已经做好了推门进去的准备。
林晨睁开眼睛,回复邮件:“confirmed. thank you for the opportunity.”
点击发送。
邮件飞向网络另一端的同时,他打开手机,给张伟发了条消息:“张哥,收到面试邀请了,周五技术电面”。
张伟秒回:“牛逼!好好准备,第一轮一般是基础算法题,别掉以轻心。面完跟我说说情况”。
“明白”。
林晨放下手机,重新打开Leetcode。距离周五还有两天,他需要把动态规划、图论、字符串处理这些高频考点再过一遍,还有机器学习的基础概念——梯度下降、反向传播、损失函数、过拟合与欠拟合……
窗外的天色渐渐暗下来,鹏城的灯火次第亮起。
书房里,键盘敲击声清脆而规律,屏幕上的代码一行行滚动。林晨完全沉浸进去,那些曾经让他头疼的算法题,如今在脑海里清晰得像地图上的路径。
时间悄然流逝。
晚上九点,苏婉轻轻推开书房门,端了杯热牛奶进来:“休息会儿吧”。
林晨接过牛奶,温度透过杯壁传到掌心:“谢谢”。
“紧张吗”?苏婉问。
“有点”。林晨诚实地说,“但更多的是期待。就像准备了很久的考试,终于要进考场了”。
“你会考好的”。苏婉在他额头上轻轻吻了一下,“我相信你”。
林晨握住她的手,没说话。
有些信任,不需要言语。
夜深了,鹏城湾的夜景璀璨如星河。林晨站在阳台上,看着远处t厂总部大楼的灯光——那栋建筑里,有中国最顶尖的AI团队,有他向往已久的技术氛围,也有未知的挑战和机遇。
周五。
他默默念着这个日期。
然后转身回屋,继续坐回电脑前。
代码可以骗人,但逻辑不会。
而人,更不能辜负那些深夜里的坚持。
第115章 等待通知
周五下午两点,林晨准时坐在书桌前,手机调成静音模式放在手边,笔记本电脑屏幕上开着几个技术文档页面。窗外是鹏城炎热的午后,阳光透过玻璃窗洒在桌面上,空调发出轻微的嗡鸣声。
他深吸一口气,看了眼时间——两点零一分。
电话没有响。
两点零五分,手机屏幕依然安静。
林晨皱了皱眉,打开邮箱刷新,确认那封面试邀请邮件上确实写着“周五下午2:00-3:00,技术电话面试”。他又检查了手机信号,满格。
两点十分。
一种熟悉的焦虑感开始从胃部升起。他想起之前面试那些web3公司时,也有过hR临时改时间甚至直接放鸽子的经历。但t厂这种级别的公司,按理说流程应该很规范才对。
两点十五分,林晨忍不住给张伟发了条微信:“张哥,t厂那边面试时间会临时调整吗”?
张伟很快回复:“一般不会,除非面试官有紧急会议。你还没接到电话”?
“嗯,约的两点,现在十五分了”。
“别急,我帮你问问内推的同事”。
等待回复的这几分钟格外漫长。林晨起身在书房里踱步,目光扫过墙上贴着的学习计划表——从去年再次失业到现在,整整八个月,每天雷打不动的六小时学习时间,python、机器学习、深度学习、量化交易……那些熬到深夜的代码调试,那些反复推敲的模型优化,那些在无数个失眠夜里思考的职业路径。
如果连面试机会都没有,这一切又算什么?
两点二十分,手机震动。
林晨几乎是扑过去拿起手机,但屏幕上显示的是一串陌生号码,归属地鹏城。他迅速接通:“喂,您好”。
“请问是林晨先生吗”?电话那头传来一个年轻女性的声音,语速很快但清晰。
“是的,我是”。
“我是t厂人力资源部的李婷。很抱歉通知您,原定今天下午的技术面试需要调整时间”。
林晨的心沉了一下:“调整到什么时间”?
“具体时间还需要和面试官协调,大概在下周内。我会再邮件通知您”。对方的语气很职业,但听不出太多情绪。
“我能问一下调整的原因吗”?
“面试官临时有紧急会议安排”。标准的官方回答。
挂断电话后,林晨盯着手机屏幕看了几秒,然后缓缓坐回椅子上。书房里很安静,只有空调的嗡鸣声和窗外偶尔传来的汽车驶过的声音。
他打开投资系统的监控界面。过去一周,系统在A股和期货市场都有小幅盈利,累计收益率又增加了0.8%。这半年来,这个他亲手打造的智能投资系统已经为他赚了四万多元,虽然不算多,但至少证明了他的技术能力可以变现。
可这不够。
他需要一份工作,一份能让他重新站在行业前沿的工作,一份能匹配他这八个月来拼命学习所积累的技术能力的工作。t厂是他目前能接触到的最好机会——不只是薪资,更是平台、资源、视野。
手机又震了一下,是张伟的消息:“问到了,面试官陈博士今天下午确实被临时拉去开一个紧急项目会。不是针对你个人的,别多想”。
林晨回复:“谢谢张哥。hR说会重新安排时间”。
“那就好。陈博士是t厂AI部门的技术大牛,能让他面试说明你的简历已经过了初筛。耐心等等,这个机会值得等”。
放下手机,林晨走到窗边。楼下小区花园里有几个老人在下棋,远处鹏城湾的海面在阳光下泛着粼粼波光。这座城市永远这么忙碌,这么充满机会,也这么容易让人感到渺小。
他想起去年刚失业时的恐慌,想起那些投出去石沉大海的简历,想起面试时对方听到他35岁年龄时微妙的表情变化。也想起这八个月来,从零开始啃那些艰深的数学公式和算法原理,一点点搭建起自己的知识体系。
“爸爸”!
书房门被推开,乐乐探进小脑袋:“妈妈让我问你,晚上想吃什么”?
林晨转过身,看到儿子圆嘟嘟的脸,心情稍微轻松了些:“乐乐想吃什么”?
“我想吃披萨”!乐乐眼睛一亮。
“好,那就吃披萨”。林晨走过去揉了揉儿子的头发,“作业写完了吗”?
“写完了!今天老师还表扬我数学题全做对了”。乐乐得意地说。
“真棒”。林晨蹲下身,看着儿子清澈的眼睛。这孩子才五岁,还不知道爸爸正在经历职业生涯中最关键的一次等待,不知道这个家每个月的房贷、生活费、教育支出都压在一个暂时没有收入的人肩上。
但也许不知道也好。
晚饭时,苏婉察觉到林晨有些心不在焉:“面试不顺利”?
“改期了,说面试官临时有会”。林晨切着披萨,尽量让语气轻松,“hR说下周再安排”。
苏婉点点头,没有多问,只是给他倒了杯水:“那就等等。反正也不急这一两天”。
“嗯”。林晨接过水杯,心里涌起一阵暖意。这八个月来,苏婉从来没有给过他压力,没有问过“什么时候能找到工作”,没有抱怨过家庭开支的紧张。她只是安静地做好自己的工作,照顾好这个家,在他学习到深夜时端来一杯热牛奶。
这种无声的支持,比任何鼓励的话语都更有力量。
周末两天,林晨没有放松。他重新梳理了机器学习的重要概念——从线性回归到神经网络,从梯度下降到反向传播,从过拟合到正则化。又把Leetcode上标注的常考题目刷了一遍,重点复习动态规划和图论算法。
周日下午,他给堂哥林枫打了个电话。
“晨晨,怎么样?面试过了吗”?林枫接起电话就问。
“还没面呢,改期了”。林晨说,“浩子最近怎么样”?
“好得很!上周他们学校搞了个刀工比赛,这小子拿了第二名”。林枫语气里满是骄傲,“老师说他特别有天赋,切土豆丝能切得跟头发丝一样细”。
林晨笑了:“那就好。你跟他说,好好学,等我这边的机会定下来,咱们就着手规划餐饮的事”。
“真的”?林枫声音提高了几分,“晨晨,你真打算投钱开店”?
“嗯。我研究过了,科技园那边的白领餐饮市场还有空间,做品质好、性价比高的自选快餐,应该有机会”。林晨说这话时,脑海里已经浮现出初步的商业模型——选址、客单价、翻台率、成本结构、供应链管理……
这八个月他不仅学了AI,也看了不少商业和餐饮管理的书。失业让他有危机感,但也给了他时间思考和规划更多可能性。
“太好了”!林枫兴奋地说,“我这边建筑工地的项目下个月就结束了,正好有时间。浩子再有两个月也就毕业了,时间刚好能接上”。
挂断电话后,林晨打开电脑,新建了一个文档,标题写上“餐饮创业初步规划”。他开始罗列要点:
选址:科技园核心区或地铁口,面积80-120平
模式:自选快餐+线上订餐
定位:干净、健康、性价比
投资预算:30-50万(含半年运营资金)
团队:林枫负责运营和供应链,林浩负责后厨,自己负责财务和整体规划
写着写着,他忽然意识到,自己其实已经在为“如果t厂面试失败”做准备了。
不是悲观,而是理性。
周一一整天,邮箱安静如常。
周二上午,林晨照例检查投资系统运行情况时,手机响了。又是一个鹏城归属地的陌生号码。
他深吸一口气,接通:“喂,您好”。
“林晨先生吗?我是t厂hR李婷”。还是那个年轻女性的声音,“面试时间协调好了,这周四上午十点,依然是技术电话面试。面试官是陈博士。稍后我会把具体的面试链接发到您邮箱”。
“好的,谢谢”。
“另外,陈博士的面试通常会比较深入,建议您重点准备机器学习基础理论和实际项目经验”。对方补充了一句,语气比上次稍微温和了些。
“明白了,非常感谢”。
挂断电话后不到五分钟,邮箱提示音响起。林晨点开,是一封正式的面试通知邮件,附有一个视频会议链接和面试注意事项。
他盯着屏幕上的“陈博士”三个字,心跳微微加速。
张伟之前说过,陈博士是t厂AI部门的技术负责人,业内大牛,面试风格以严格着称。能让他亲自做技术面试,说明这个岗位的级别不低。
但同时,这也意味着面试难度会很大。
林晨打开浏览器,搜索“陈博士 t厂”。跳出来的信息不多,只有几篇技术博客和他在某个AI峰会上的演讲视频。他点开视频,一个四十多岁、戴着眼镜、表情严肃的男人出现在屏幕上,正在讲“AI模型的物理成本与效率优化”。
视频看了十分钟,林晨就意识到这位陈博士的技术深度远超他之前接触过的任何面试官。那些关于模型压缩、推理加速、硬件协同的讨论,涉及到底层架构和工程实现的细节,不是普通应用层开发者会深入思考的问题。
他暂停视频,打开笔记本,开始记录关键点。
这一准备,就到了深夜。
周三,林晨给自己做了最后一次模拟面试。他让苏婉扮演面试官,随机提问机器学习相关的问题,从基础的“解释一下过拟合和欠拟合”到更深入的“transformer模型相比RNN的优势在哪里”“如何解决梯度消失问题”。
苏婉虽然不懂技术,但照着林晨准备好的问题清单念,倒也像模像样。
“如果让你设计一个推荐系统,你会考虑哪些因素”?苏婉念道。
林晨思考了几秒:“首先要明确业务目标,是提升点击率、转化率还是用户停留时长。然后考虑数据维度,用户特征、物品特征、上下文特征。模型选择上,协同过滤、矩阵分解、深度学习模型各有适用场景。最后还要考虑线上服务的实时性和可扩展性……”
他讲了五分钟,苏婉认真听着,虽然听不懂,但能从丈夫流畅的表达和自信的语气中感受到他的准备充分。
“我觉得你可以的”。模拟面试结束后,苏婉说。
林晨笑了笑,没说话。
他知道,真正的考验在明天。
周四早上九点,林晨提前一小时坐在书桌前。他检查了网络连接、耳机麦克风、摄像头,把简历和项目资料打印出来放在手边,倒了一杯温水。
九点五十,他点开邮件里的视频会议链接,进入虚拟等候室。
屏幕显示“面试官尚未入会”。
十点整。
十点零一分。
十点零二分。
林晨盯着屏幕,呼吸平稳。有了上次的经验,这次他淡定多了。
十点零三分,屏幕一闪,一个视频窗口弹出。
画面里出现了一个男人,正是林晨在照片里见过的陈博士。他看起来比照片里更瘦一些,戴着黑框眼镜,穿着简单的灰色t恤,背景是堆满书的书架。
“林晨”?对方开口,声音有些沙哑。
“陈博士您好,我是林晨”。
“抱歉,刚才接了个国际电话”。陈博士推了推眼镜,没有寒暄,直接进入正题,“我们开始吧。首先,请用五分钟介绍一下你最近做的一个AI项目”。
林晨深吸一口气。
机会来了。
第116章 T厂笔试
上午十点整,林晨准时坐在书桌前,笔记本电脑屏幕上已经打开了t厂在线笔试系统的登录界面。
他深吸一口气,输入账号密码。
系统提示:“本次笔试时间为180分钟,包含算法题4道,机器学习理论题3道,编程实践题1道。请确保网络稳定,全程开启摄像头监控。中途退出将自动提交试卷”。
林晨点击“开始考试”按钮。
倒计时三小时开始跳动。
第一道算法题就让他眉头微皱——这是一道动态规划与图论结合的题目,描述复杂,数据规模达到10^5级别。题目要求设计一个算法,在给定有向无环图中找到所有从起点到终点的路径中,满足特定权重约束的最优解集合。
“这难度……”林晨喃喃自语。
他想起张伟之前提醒过:“t厂的算法笔试向来以‘劝退’着称,很多题目都是Acm竞赛级别的改编题,目的就是筛选掉那些只会刷Leetcode简单题的人”。
林晨没有慌张。过去三个月,他除了学习AI,每天雷打不动刷两个小时算法题,从基础的数组、链表,到复杂的动态规划、图论、字符串匹配,累计刷了超过五百道题。更重要的是,他养成了先分析问题本质再动手的习惯。
他拿起草稿纸,开始画图分析。
“这题的核心是状态压缩和记忆化搜索”,林晨在纸上快速推导,“每个节点需要记录到达该节点时的权重状态,但直接记录所有可能权重会超时……需要压缩状态空间”。
十分钟后,他理清了思路,开始在代码编辑器中敲击键盘。
def find_optimal_paths(graph, start, end, weight_limit): # 状态压缩:将权重离散化为有限个区间 # 记忆化搜索:dp[node][state] 存储到达该节点、处于该权重状态时的最优解 # 使用优先队列进行bFS优化 ...
二十分钟,第一题通过所有测试用例。
林晨松了口气,但不敢松懈,立即进入第二题。
第二题是机器学习理论题,考察对transformer架构的理解。题目要求详细解释自注意力机制的计算过程,并推导其时间复杂度。接着是扩展问题:如果要在移动端部署transformer模型,有哪些优化策略?请从模型压缩、量化、蒸馏等角度分别阐述。
这题正中林晨下怀。他最近刚深入研究过大模型部署优化,为了自己的投资系统能在低配服务器上运行,他尝试过多种模型压缩技术。
他手指在键盘上飞舞:
“自注意力机制的核心是q、K、V三个矩阵的计算。给定输入序列x∈R^(nxd),首先通过线性变换得到q=xw_q, K=xw_K, V=xw_V,其中w_q、w_K、w_V∈R^(dxd_k)……”
“时间复杂度分析:qKt的计算复杂度为o(n2·d_k),softmax为o(n2),与V相乘为o(n2·d_v),总复杂度为o(n^2·d)。当序列长度n很大时,这是主要瓶颈”。
“移动端优化策略:1. 模型剪枝,移除冗余权重;2. 量化,将Fp32权重转换为INt8甚至INt4;3. 知识蒸馏,用大模型训练小模型;4. 注意力稀疏化,只计算局部注意力;5. 算子融合,减少内存访问开销……”
林晨写得详细而专业,不仅回答了问题,还补充了实际工程中可能遇到的坑,比如量化后的精度损失如何补偿,蒸馏时如何设计损失函数等。
第三题又是算法题,这次是字符串处理与数论结合。题目给出一个由小写字母组成的字符串S,要求找出所有满足特定性质的子串,性质是:子串中每个字符出现的次数都是某个质数的幂次。
“质数的幂次……”林晨陷入思考。
他先尝试暴力解法,但字符串长度上限是105,o(n2)的算法肯定超时。必须找到更优的解法。
时间一分一秒过去。林晨看了眼倒计时,还剩两小时十分钟。他强迫自己冷静下来,重新读题。
“每个字符出现次数是质数的幂次……那可能的次数只有:2,3,4(22),5,7,8(23),9(32),11,13,16(24)……”
“等等,这其实是个状态压缩问题”!林晨突然灵光一闪,“26个小写字母,每个字母的出现次数只有有限种可能状态。我可以把子串的特征压缩成一个状态向量,然后用哈希表记录每个状态最早出现的位置……”
思路一旦打开,代码就水到渠成。林晨用了四十分钟完成了这道题,通过了所有测试用例。
接下来的机器学习题考察贝叶斯理论和概率图模型,林晨凭借扎实的数学基础顺利解答。然后是编程实践题,要求实现一个简单的神经网络训练框架,包括前向传播、反向传播、优化器更新等核心组件。
这对林晨来说几乎是送分题——他的投资系统里就有一个自己写的轻量级深度学习框架。他熟练地定义了Layer类、Loss类、optimizer类,实现了SGd和Adam优化器,还特意加了梯度裁剪和权重衰减等实用功能。
倒计时还剩三十分钟时,林晨完成了所有题目。
他仔细检查了一遍每道题的答案,修正了几处笔误,然后点击“提交”。
屏幕显示:“试卷已提交,正在评分,结果将在3个工作日内通过邮件通知”。
林晨靠在椅背上,长长地呼出一口气。
三个小时的高度集中,让他感到有些疲惫,但更多的是如释重负。他对自己今天的表现基本满意——算法题全部解出,机器学习题答得全面,编程实践题完成度很高。
当然,他也清楚t厂的评分标准可能极其严苛。有些题目他虽然写出了解法,但时间复杂度可能不是最优的;有些理论题的答案可能不够深入。但无论如何,他已经尽力了。
书房门被轻轻推开,苏婉端着一杯温水走进来。
“考完了”?她轻声问。
“嗯,刚提交”。林晨接过水杯,喝了一大口。
“感觉怎么样”?
“题目很难,但大部分都做出来了”。林晨揉了揉太阳穴,“最后那道算法题花了四十分钟,差点没时间检查”。
苏婉在他身边坐下,温柔地按摩他的肩膀:“你已经很厉害了。这三个月的努力,我都看在眼里”。
林晨握住她的手:“不管结果如何,至少我证明了自己还能学,还能跟得上最前沿的技术”。
“你从来都没落后过”。苏婉认真地说,“只是需要时间转型而已”。
这时,林晨的手机震动了一下。他拿起来一看,是投资系统的每日报告推送:
【今日收益:+8,427元】 【累计收益:+186,532元】 【当前总资产:486,532元】
林晨把手机递给苏婉看。
苏婉眼睛一亮:“又涨了”?
“嗯,最近市场行情不错,系统抓住了几波趋势”。林晨说,“按照这个速度,下个月资产就能突破五十万了”。
“那……”苏婉犹豫了一下,“如果t厂没通过,咱们是不是也不用太担心了”?
林晨想了想,摇摇头:“不一样。投资系统是‘外快’,不稳定,而且规模有限。t厂的工作是‘主业’,能提供稳定的现金流、技术平台和行业资源。更重要的是——”
他顿了顿:“我需要证明自己还能在顶级公司立足。这不仅是为了钱,也是为了那口气”。
苏婉理解地点点头。她知道,对丈夫来说,这次求职已经超越了单纯找工作的意义,这是一场中年码农的自我救赎。
“对了”,林晨转换话题,“我昨晚把餐饮创业的初步规划发给了林枫,他刚回消息说很感兴趣,等他下个月项目结束,可以来鹏城详谈”。
“那浩子那边呢”?
“浩子还有两个月毕业,时间刚好衔接”。林晨说,“如果t厂面试通过,我就边工作边规划餐饮;如果没过,我就全职投入餐饮创业。总之,路不会断”。
苏婉笑了:“你现在越来越像战略家了,永远有plan b、plan c”。
“被生活逼出来的”。林晨也笑了,“不过说真的,这次准备t厂笔试,我发现自己对技术的热情又回来了。那种解决难题的成就感,比单纯赚钱更让人满足”。
“那就好”。苏婉站起身,“中午想吃什么?我给你做点好吃的,补补脑”。
“简单点就行”。林晨说,“我下午还要复盘一下笔试题目,有几道题的解法可能还能优化”。
“好,那我去做饭。你休息会儿”。
苏婉离开书房后,林晨重新打开电脑,调出刚才的解题思路记录。他开始逐一复盘,思考每道题是否有更优的解法,机器学习题的答案是否遗漏了重要细节。
这种对技术的极致追求,已经刻进了他的骨子里。无论这次笔试结果如何,这段全力以赴的准备过程,已经让他完成了从传统码农到AI工程师的蜕变。
而蜕变之后,无论飞向哪个方向,天空都会更加广阔。
第117章 笔试通过
手机震动的时候,林晨正在厨房煮面。
他瞥了一眼屏幕,是个鹏城本地的陌生号码。心里咯噔一下,手上动作却没停——这几个月接到的猎头和hR电话太多,已经练就了条件反射般的平静。
“喂,您好”。他关小火,声音平稳。
“请问是林晨先生吗?我是t厂招聘部的hR,姓王”。电话那头是个干练的女声。
林晨的心跳瞬间加速,但语气依然克制:“是的,我是。王老师您好”。
“恭喜您通过了我们AI算法工程师岗位的笔试”。hR的声音带着职业化的笑意,“您的笔试成绩很不错,尤其是编程实践题和机器学习理论部分,评分都很高”。
一股热流从胸口涌上来。林晨深吸一口气:“谢谢。请问接下来……”
我们想邀请您参加下一轮面试。hR语速很快,考虑到您的情况——我是说,您目前不在职,时间应该比较灵活——我们想尽快安排。后天上午十点,您方便来我们科兴科学园总部面试吗?
后天?林晨脑子飞快运转。科兴科学园在南山,从他住的龙华过去要一个多小时地铁。他仔细算了算时间:”方便的。请问面试形式是”?
“技术共三面”。hR说,“这一轮是我们AI部门的资深专家亲自面,会问得很深。建议您好好准备一下,带上简历和过往项目材料。具体会议室信息我稍后发您邮箱”。
挂了电话,林晨站在原地愣了几秒。锅里水已经沸腾,面条在翻滚。他关掉煤气,突然没了胃口。
回到书房,打开电脑。邮箱里果然已经躺着一封来自t厂招聘系统的邮件,标题是“面试邀请函”。点开,格式化的邮件正文里嵌着他的姓名、岗位、面试时间地点,还有一行加粗的提示:“请携带个人简历及能证明技术能力的材料”。
林晨盯着屏幕,手指在桌面上轻轻敲击。
通过了。真的通过了。
这几个月投出去的简历少说也有上百份,面试了十几家公司,有聊得不错的,有当场就感觉没戏的,也有因为薪资谈崩的。但t厂不一样——这是国内互联网的顶级殿堂,AI领域更是走在最前沿。能进笔试已经是筛选后的结果,能通过笔试进入面试……
他打开浏览器,在搜索框里输入“t厂 技术三面 面经”。
页面跳出几十条结果。他一条条点开,越看眉头皱得越紧。
“三面是总监面,问的都是底层原理,我被问到transformer的数学推导全程手推……”
“准备了半个月,结果问的全是论文里的细节,卒”。
“面了快两小时,从梯度消失问到分布式训练,最后还让现场设计一个推荐系统架构”。
“过了三面,但感觉被扒了一层皮。建议把李沐的《动手学深度学习》整本书吃透”。
林晨打开自己的笔记软件,新建一个文档,标题写上“t厂三面备战清单”。然后开始一条条整理:
深度学习基础:反向传播推导、各种优化器原理、正则化方法对比、激活函数优缺点。
transformer架构:注意力机制数学公式、位置编码、多头注意力的实现细节。
项目深挖:智能投资系统的每个模块——数据预处理、特征工程、模型选择、训练策略、风控逻辑。
系统设计:大规模推荐系统、广告系统、搜索排序系统的架构设计。
论文阅读:最近三个月顶会(NeurIpS、IcmL、cVpR)的相关论文,至少精读五篇。
清单越列越长。林晨看了眼时间,晚上八点半。距离后天上午的面试还有将近两天时间。
他起身冲了杯浓茶,回到电脑前。先打开arxiv,搜索“quantitative trading deep learning”,筛选出最近半年的论文。下载了七篇,快速浏览摘要和结论,把其中三篇看起来最有价值的放进“精读”文件夹。
然后打开pytorch官方文档,重新复习张量操作、自动求导、模型保存加载这些基础但容易在紧张时出错的内容。
十点钟,苏婉带着乐乐从兴趣班回来。
“爸爸”!乐乐扑过来,“我今天学了编程,做了一个会动的小猫”!
林晨抱起儿子,亲了亲他的脸蛋:“真棒。让爸爸看看”?
乐乐兴奋地打开平板,展示他用Scratch做的小动画。小猫在屏幕上走来走去,碰到边缘还会转身。
“逻辑很清晰”。林晨认真评价,“你用了条件判断和循环,这是编程的核心思想”。
苏婉走过来,看了眼林晨电脑屏幕上密密麻麻的笔记:“有消息了”?
“嗯。笔试过了,后天上午面试”。林晨尽量让语气轻松”,技术三面,总监亲自面”。
苏婉眼睛一亮,随即又露出担忧:”这么急?后天就面”?
“hR说因为我时间灵活,尽快安排”。林晨苦笑,“也好,早死早超生”。
“别这么说”。苏婉轻轻拍他肩膀,“你准备了这么久,肯定没问题。需要我做什么”?
“帮我模拟面试吧”。林晨想了想,“你当面试官,问我一些常见的行为问题。比如‘为什么离开上一家公司’、‘职业规划’、‘遇到过的最大挑战’这些”。
“好”。苏婉点头,“你先继续准备技术部分,十一点我们开始”。
乐乐很懂事地自己去洗澡睡觉了。十一点整,苏婉拿着林晨打印好的简历,坐到了他对面。
书房里只开了一盏台灯。气氛莫名有些正式。
“林晨先生,请先做个自我介绍”。苏婉进入角色很快,语气平和但带着距离感。
林晨清了清嗓子:“面试官您好,我叫林晨,有十年软件开发经验,其中最近一年专注于深度学习领域。我主导开发过一个智能投资系统,融合了时间序列预测、强化学习和风险控制模块,实现了稳定的超额收益。在此之前……”
他流畅地讲了三分钟,把技术栈、项目亮点、学习能力都涵盖进去。苏婉认真听着,偶尔在纸上记录。
“为什么离开上一家公司”?她问。
“公司业务调整,整个部门被裁撤”。林晨如实回答,“这促使我思考自己的职业方向,决定转型到AI领域,这是未来十年的技术核心”。
“为什么选择t厂”?
“因为t厂在AI基础设施和应用落地方面都走在行业最前沿”。林晨说这话时很真诚,“我希望能在最好的平台上,参与解决真正有挑战性的问题,而不仅仅是做业务需求开发”。
“你提到智能投资系统。如果让你把这个系统扩展到千万用户规模,你会怎么设计架构”?
林晨眼睛一亮——这虽然是行为面,但已经涉及到系统设计。他拿起白板笔,在旁边的白板上边画边讲:
“首先数据层,需要分布式存储,按用户分库分表;计算层要用到流处理框架,实时处理行情数据;模型服务要容器化部署,支持弹性伸缩;风控模块必须独立,有熔断机制……”
他讲了七八分钟,从技术栈选型讲到监控报警。苏婉虽然听不懂细节,但能看出他的思路清晰,考虑周全。
“很好”。她点点头,看了眼清单上的下一个问题,“你觉得自己最大的缺点是什么”?
林晨顿了顿。这是个经典陷阱题。
“我有时候会过于追求技术方案的完美”。他选择了一个安全但真实的答案,“在之前的项目中,我可能会花额外的时间去优化一个已经可用的模块。现在我学会了平衡,在保证核心功能可靠的前提下,把优化工作放到迭代中”。
模拟面试进行了四十分钟。苏婉问了十几个问题,林晨的回答越来越流畅。最后苏婉放下纸笔,露出笑容:“我觉得你准备得很充分”。
“技术部分还没模拟呢”。林晨揉了揉太阳穴,“那些才是重头戏”。
“那你继续看吧,我不打扰你了”。苏婉起身,“需要夜宵吗”?
“不用,我喝点茶就行”。
苏婉离开后,书房重新安静下来。林晨打开那三篇论文,开始精读。
第一篇是关于用图神经网络做多因子选股的。他一边看一边在纸上推导公式,遇到不懂的地方就查资料。第二篇是强化学习在交易执行中的应用,他对比了自己系统中用的ppo算法和论文里的SAc算法,思考各自的优缺点。
第三篇……他看了眼标题,愣住了。
《论AI系统的物理成本:从算法优化到能源效率的范式转变》
作者是t厂AI实验室的陈博士——正是后天要面试他的技术总监。
林晨立刻坐直身体,从头开始仔细阅读。
论文的核心观点很犀利:当前AI研究过于关注算法精度和模型规模,却忽略了训练和推理过程中的巨大能源消耗。一个准确率提升0.5%的模型,可能需要十倍的计算资源,从全生命周期看,其“物理成本”可能远超收益。真正的AI系统设计应该把能源效率作为核心指标,追求在有限物理约束下的最优解。
文中举了几个例子:谷歌曾披露,训练一个大型语言模型的碳排放量相当于五辆汽车终身排放;某公司为了追求榜单排名,用数千张GpU训练一个月,实际业务场景中根本用不起这样的模型。
林晨看得入神。这观点和他这段时间的思考不谋而合——他在设计投资系统时,就刻意选择了轻量级模型,在保证效果的前提下把推理时间控制在毫秒级。不是因为硬件限制,而是他认为这才是工程化的正确思路。
他看了眼时间,凌晨一点半。
论文还有一半没看完,但他知道必须睡了。明天要保持清醒的头脑。
关掉电脑前,他最后检查了一遍要带的材料:打印好的简历、项目架构图、投资系统的部分代码片段、还有几篇精读论文的笔记。都装进文件袋。
躺到床上时,脑子里还在回旋着论文里的观点。物理成本……能源效率……范式转变……
迷迷糊糊中,他想起多年前刚入行时,带他的老工程师说过一句话:“真正的技术高手,不是能写出多复杂的代码,而是能用最简单的方案解决最复杂的问题”。
现在他好像有点懂了。
窗外传来深夜货车的轰鸣声。鹏城从不真正沉睡,就像这座城市里无数个像他一样在深夜里准备、焦虑、期待的人。
后天上午十点。科兴科学园。
他闭上眼睛,在心里把自我介绍又过了一遍。
第118章 专项准备
清晨六点半,鹏城的天刚蒙蒙亮。
林晨已经坐在书桌前,屏幕上是Leetcode的t厂高频150题列表。他昨晚只睡了不到六小时,但此刻精神异常亢奋——距离后天的技术面试,只剩下不到两天了。
“先从动态规划开始”。他自言自语,点开第一题“最长递增子序列”。
手指在键盘上敲击,思路在脑海中流转。这半年自学AI,他其实没怎么刷算法题,大部分时间都花在机器学习理论和实战项目上。但t厂的面试传统他很清楚:算法是基本功,过不了这一关,再好的项目经验也白搭。
第一题顺利解出,时间复杂度o(n2)。他皱了皱眉,切换到题解区,看到最优解是o(n log n)的贪心+二分法。
“得优化”。他重新打开编辑器。
这不是简单的刷题,而是重建算法思维的过程。他需要把那些被深度学习框架封装起来的底层逻辑重新激活——数组、链表、树、图、递归、分治、动态规划……这些计算机科学的基础构件,就像建筑的地基,决定了上层AI模型能建多高。
上午九点,苏婉轻轻推开书房门,端来一杯热牛奶和两个包子。
“先吃点东西”。她把早餐放在桌角,“乐乐已经送去幼儿园了”。
林晨这才从代码中抬起头,揉了揉发酸的眼睛:“谢谢老婆”。
“准备得怎么样”?苏婉看着他布满血丝的眼睛,有些心疼。
“算法题刷了二十道,正确率还行,但有些解法不够优雅”。林晨咬了口包子,“下午面试官肯定会追问优化思路,我得把每种解法的时间复杂度和空间复杂度都吃透”。
苏婉在他身边坐下:”你那个投资系统的代码,要不要再梳理一遍?之前你自己练习时,我觉得你讲技术架构讲得特别好”。
“对,这是重头戏”。林晨快速吃完早餐,打开另一个文件夹,“这是我用pytorch写的量化交易模型,融合了LStm时序预测和强化学习策略优化。面试时如果问到实战项目,我就拿这个举例”。
他点开代码文件,一行行解释给苏婉听——虽然妻子不是技术出身,但她的反馈能帮他判断讲解是否通俗易懂。
“你看这里,我用了注意力机制来捕捉市场中的异常波动信号”。林晨指着屏幕,“传统的技术指标比如mAcd、RSI,都是基于固定公式,但市场是动态的。我的模型会学习在不同市场环境下,哪些指标更有效”。
苏婉认真听着,偶尔提问:“那你怎么防止过拟合?万一模型只在历史数据上表现好呢”?
“问得好”!林晨眼睛一亮,“这正是我花心思最多的地方。我做了三件事:第一,数据增强,用随机噪声和时序切片来扩充训练集;第二,早停策略,监控验证集损失,一旦连续五个epoch不下降就停止训练;第三,集成学习,训练多个不同结构的模型,投票决定最终交易信号”。
他边说边调出模型训练日志,展示给苏婉看。那些曲线图、数据表、回测结果,都是这半年心血的结晶。
上午十点半,算法题刷到第四十道时,林晨的手机响了。
是张伟。
“晨哥,准备得咋样了”?电话那头传来熟悉的声音。
“正在拼命”。林晨活动了下僵硬的脖子”,后天上午面试,面试官是技术总监陈博士”。
“陈博士啊……”张伟语气严肃起来,“那可是t厂AI部门的定海神针。我打听过了,他面试有个特点:不喜欢炫技,喜欢问基础。你机器学习理论复习得怎么样”?
“正在看”。林晨切换到另一个窗口,上面是《pattern Recognition and machine Learning》的电子版,“贝叶斯估计、支持向量机、集成学习这些经典算法,还有深度学习里的反向传播、梯度消失、正则化……”
“不够”。张伟打断他,“陈博士可能会问得更深。比如,你能从信息论的角度解释dropout为什么能防止过拟合吗?或者,transformer里的位置编码,为什么用正弦余弦函数而不是可学习参数”?
林晨愣住了。
这些问题他确实没深入思考过。平时用pytorch搭模型,都是调现成的模块,底层原理虽然知道个大概,但真要上升到数学本质的层面……
“我明白了”。他深吸一口气,“还有四个小时,我重点补这些理论深度”。
挂断电话,林晨立刻调整复习策略。他不再盲目刷题,而是打开笔记本,开始系统梳理机器学习的关键概念。
偏差与方差的权衡——模型复杂度和泛化能力的关系,用公式推导最优解。
梯度下降的收敛性证明——从泰勒展开到学习率的选择,为什么Adam优化器比SGd更稳定。
卷积神经网络的平移不变性——从数学上解释为什么cNN适合图像识别。
注意力机制与人类认知的类比——为什么transformer在NLp任务上碾压RNN。
时间一分一秒流逝。书房里只有键盘敲击声和偶尔的翻书声。林晨完全进入了心流状态,那些抽象的理论在他脑海中逐渐具象化,变成可理解的逻辑链条。
中午十二点,苏婉做了简单的面条。林晨边吃边在餐桌上画系统架构图。
“如果面试官让我设计一个推荐系统,我要从这几个层面回答”。他用筷子在桌面上比划,“数据层:用户行为日志怎么收集和清洗;特征层:用户画像、物品属性、上下文特征怎么构建;模型层:协同过滤、矩阵分解、深度学习模型怎么选型和融合;服务层:怎么保证高并发下的实时推荐……”
苏婉看着他专注的样子,忍不住笑了:“你现在像个备战高考的学生”。
“比高考压力大”。林晨苦笑,“高考考砸了还能复读,这次面试要是没过,我不知道还有没有勇气继续找”。
“别说丧气话”。苏婉握住他的手,“你这半年的努力我看在眼里。从零开始学AI,还能做出能赚钱的投资系统,这已经证明你的能力了。面试只是让更多人看到你的价值”。
林晨点点头,心里暖了一下。
下午一点,他开始最后的模拟演练。
打开摄像头,对着屏幕自我介绍:“面试官好,我是林晨,有十年全栈开发经验,最近半年专注于AI和量化交易领域。我独立开发了一套智能投资系统,融合了深度学习和强化学习,在A股实盘运行半年,年化收益率达到……”
语速、语调、重点突出。他反复练习了三遍。
然后是技术问题的模拟回答。他假设了各种可能的问题:
“请解释反向传播算法的推导过程”。
“如果让你优化一个日均百亿请求的推荐系统,你会从哪些方面入手”?
“如何看待大模型时代的AI伦理问题”?
每个问题他都准备了不同深度的回答版本——浅层解释给非技术面试官听,深度剖析给技术专家听。
傍晚六点,林晨终于合上了电脑。
晚饭后,他继续复习。十点钟,乐乐已经睡了,苏婉端来一杯热牛奶。
“张伟刚才打电话来了”。苏婉说”,他说明天下午可以帮你安排一场模拟面试,就在t厂内部,找一个资深工程师帮你找找感觉”。
林晨一愣,随即感激地点点头:”太好了。麻烦他了”。
“他说时间定在明天下午两点,让你一点半到t厂”。
“好”。林晨看了眼时间”,我今晚再看一会儿,明天一早再过一遍重点”。
“别太晚”。苏婉轻轻拍了拍他的肩膀。
林晨继续看着屏幕上的笔记,那些公式、概念、架构图像一张张卡片,被他在脑海中反复梳理、分类、连接。
十一点半,他合上电脑,躺到床上。窗外,鹏城的夜色正浓,远处的高楼灯火通明。
明天是模拟面试,后天是正式面试。
他闭上眼睛,深吸一口气。
三天。从接到通知到正式面试,只有三天。这三天里,他要把自己这半年的所学、所思、所做,全部调动起来,在几个陌生人面前展示出来。
压力很大,但他知道,他已经准备好了。
至少,他比半年前那个被裁员时茫然无措的自己,准备好了太多。
第119章 模拟面试
下午两点十分,t厂总部大楼三十二层的小会议室里,空调发出轻微的嗡鸣。
林晨坐在长桌一侧,对面是一位戴着黑框眼镜、约莫四十岁上下的面试官——不是陈博士,而是另一位技术专家,姓王。这是张伟通过人脉紧急安排的“模拟面试”,就在t厂内部,环境、氛围、甚至面试官的风格都尽可能贴近真实。
“林晨你好,我是王工,目前在AI平台部负责模型推理优化”。王工的声音平稳,没什么情绪起伏,“张伟跟我打过招呼,说你想在正式面试前找找感觉。那我们就不客套了,直接开始”?
“好的,王工,麻烦您了”。林晨深吸一口气,双手在桌下悄悄握了握拳。掌心有点湿。
“第一个问题,请你设计一个推荐系统,用于短视频平台的‘猜你喜欢’模块”。王工推了推眼镜,“不需要写完整代码,重点讲架构思路、模型选型、特征工程,以及如何解决冷启动和探索-利用困境”。
林晨心里一松——这是经典题,他准备过。他清了清嗓子,开始回答:“架构上,我会采用多阶段排序漏斗。召回层用双塔模型处理用户和视频的embedding,粗排用简单的LR或Fm模型,精排用深度模型如deepFm或dIN,最后重排考虑多样性……”
他语速平稳,逻辑清晰,把特征工程里的用户画像、行为序列、上下文特征都捋了一遍。讲到冷启动时,他提到了用内容标签、协同过滤补全,以及新用户引导策略。探索-利用则提到了thompson Sampling和Ucb算法。
整个过程大约八分钟。王工一直低头在笔记本上记录,偶尔抬眼看看他。
“好”。王工停下笔,“第二个问题,你刚才提到了dIN模型。请你解释一下dIN中Attention机制的具体实现,以及它如何捕捉用户兴趣的动态变化”。
林晨心里咯噔一下。这个问题比刚才深了一层。他迅速回忆dIN的论文细节:“dIN的Attention核心是计算用户历史行为序列中每个item与候选item的相关性得分。具体实现上,会将用户行为序列的embedding和候选item的embedding拼接后通过一个前馈网络,输出权重……”
他尽量描述准确,但讲到“激活函数使用dice而非pReLU”时,卡了一下——这个细节他记得模糊。
王工没有打断,等他讲完才问:“dice激活函数相比pReLU的优势是什么”?
林晨额头微微冒汗:“主要是为了适应数据分布的动态变化,能更好地处理稀疏特征……具体公式我记不太清了”。
“没关系”。王工点点头,“第三个问题,假设现在线上A/b测试显示,新模型在点击率上提升了2%,但人均观看时长下降了5%。你怎么分析这个矛盾?可能的原因和后续迭代方向是什么”?
林晨愣住了。这不是纯技术题,而是业务场景下的综合判断。他快速思考:“可能的原因……一是模型过度优化点击,忽略了内容质量,用户点进去发现不好看就退了;二是特征设计有问题,比如过分强调标题党特征;三是排序权重需要调整,不能只看ctR,要加入时长、完播率等长期指标……”
他一边说,一边意识到自己的回答有些散乱,缺乏一个系统的分析框架。
王工听完,沉默了几秒,然后说:“我们休息五分钟。你可以喝点水,我也整理一下反馈”。
林晨道谢,起身去旁边的饮水机接了杯温水。手有点抖。他以为自己准备得足够充分,但刚才那几个问题,尤其是最后一个,让他感觉到了差距——不是技术知识的差距,而是思维框架和表达结构的差距。
五分钟后,两人重新坐下。
王工翻开笔记本,语气温和但直接:“林晨,你的技术基础很扎实,项目经验也丰富,这是优势。但我必须指出几个问题,供你参考”。
林晨坐直身体:“您说”。
“第一,表达的逻辑性可以更强”。王工说,“比如第一个问题,你讲架构时是按‘召回-粗排-精排-重排’的顺序,但讲到特征工程时又跳回了用户画像,听众容易跟不上。建议你采用‘总-分-总’结构:先一句话概括整体架构,然后分模块阐述,每个模块里再细分特征、模型、优化点,最后总结亮点和权衡”。
林晨连忙点头,在随身带的笔记本上记下。
“第二,深度有余,广度不足”。王工继续说,“你提到dIN时细节很到位,但当我追问dice激活函数,你卡壳了。面试官可能会觉得你在死记硬背论文,而不是真正理解技术演进的脉络。建议你准备一些关键技术的‘演变故事’,比如从Fm到deepFm到dIN到dIEN,每个阶段解决了什么问题,代价是什么”。
“第三,也是最关键的——缺乏产品和技术结合的思维”。王工看着林晨,“最后一个问题,你给出的分析点都是对的,但像散落的珠子,没有串起来。大厂面试,尤其是高级岗位,面试官希望看到你如何定义问题、拆解问题、寻找根因、设计验证实验、规划迭代路径。你需要一个框架,比如先归因(是模型问题、特征问题还是指标问题?),再设计实验验证(做特征ablation、调整loss权重),最后给出明确的后续动作”。
林晨听得后背发凉,但同时又涌起一股感激。这些问题,如果不是这次模拟面试暴露出来,他很可能在正式面试中踩坑。
“王工,非常感谢”。林晨诚恳地说,“这些点太关键了。我确实自己闭门造车久了,缺少这种结构化反馈”。
王工笑了笑:“不用客气。张伟说你很拼,技术底子也好,我才愿意花这个时间。另外,我猜你面试的岗位是陈博士那边的AI平台部”?
林晨点头。
“陈博士的风格……”王工沉吟了一下,“他不太问八股文。他喜欢追问‘为什么’——为什么用这个模型?为什么这个特征有效?背后的物理意义或者数据规律是什么?他有一篇论文讲AI的‘物理成本’,你看过吧”?
“看过,我很受启发”。林晨立刻说,“我觉得AI不应该只是数学游戏,最终要落到真实的计算成本、数据成本、甚至社会成本上”。
王工眼睛亮了一下:“这个角度很好。你可以在面试中适当展开,但要注意——不要空谈理念,要结合你的项目。比如你的量化交易系统,你是怎么权衡模型复杂度和交易延迟的?怎么处理数据获取的成本和合规风险的?这些具体案例比单纯讲理念更有说服力”。
林晨豁然开朗。他之前总想着要展示技术深度,却忽略了如何把深度和实际思考结合起来。
“最后一点”,王工看了看表,“你刚才说话的时候,语速有点快,而且喜欢用‘然后’、‘接下来’这类连接词,听起来会显得紧张。适当放慢语速,用‘第一、第二、第三’或者‘首先、其次、最后’来结构化表达,会显得更沉稳”。
“明白了”。林晨认真记下。
“那我们再来一轮”?王工问,“这次我模拟陈博士的风格,问几个‘为什么’”。
“好”!林晨精神一振。
接下来的四十分钟,王工抛出的问题果然风格大变:
“你说在量化系统里用了LStm预测股价走势。为什么是LStm而不是transformer?在金融时序数据上,你认为两者的本质区别是什么”?
“你提到了特征工程里加入了宏观经济指标。这些指标和股价的关联性,你是如何验证的?是统计相关性,还是因果推断?你怎么排除伪相关”?
“如果你的模型在回测中表现很好,但实盘突然持续亏损,你的第一反应是什么?排查步骤是什么?如果最终发现是市场结构变了,你如何让模型适应这种变化”?
每一个问题都像一把手术刀,剖开技术表象,直指底层的思考逻辑。林晨一开始答得有些磕绊,但逐渐找到了节奏——他不再急于给出答案,而是先重复问题确认理解,然后用“我的思考框架是……”开头,分点阐述,最后回到自己的项目实例。
结束时,已经下午三点半。
王工合上笔记本,露出笑容:“这次好多了。记住这个状态——不卑不亢,有框架有实例,既展现技术深度,又体现思考层次。陈博士喜欢和聪明人聊天,你只要让他觉得‘这个人有想法,而且能把想法落地’,就成功了一大半”。
林晨起身,郑重地向王工鞠了一躬:“王工,今天真的受益匪浅。不知道怎么感谢您”。
“不用客气。希望你能通过面试”。王工拍拍他肩膀,“对了,正式面试前,找个安静的地方,把刚才我指出的几个问题,用你自己的话总结成几条原则,默念几遍。临场紧张时,这些原则能帮你拉回节奏”。
离开t厂大楼,下午的阳光有些刺眼。林晨站在路边,没有立刻叫车。他打开手机备忘录,快速记下刚才的收获:
表达结构:总-分-总,分点清晰。
技术脉络:讲演变故事,不只是记细节。
产品思维:问题定义→拆解→验证→迭代。
陈博士风格:多问“为什么”,结合物理成本视角。
语速和连接词:放缓,用结构化词汇。
临场原则:先确认问题,再给框架,最后实例。
写完这些,他长长吐出一口气。心里那块悬着的石头,似乎落下了一半。模拟面试暴露了问题,但也给了他修正的路径。更重要的是,他不再把面试看作一场考试,而是一次与技术同行的深度交流。
手机震动了一下,是苏婉发来的微信:“怎么样?还顺利吗”?
林晨打字回复:“模拟面试刚结束,发现了一些问题,但很有收获。现在去找个咖啡馆,把思路再捋一遍。晚上回家吃饭”。
他收起手机,抬头望向t厂高耸的玻璃幕墙。明天上午十点,他将正式走进那里,面对陈博士。
这一次,他准备好了。
第120章 家人的鼓励
夜色渐深,鹏城科技园区的灯火依旧璀璨。林晨合上笔记本电脑,揉了揉有些发酸的眼睛。书桌上摊开的笔记本上,密密麻麻记录着今天模拟面试的要点和明天可能被问到的技术问题。
客厅里传来电视的轻微声响,是苏婉在陪乐乐看动画片。林晨看了眼时间,晚上九点半。他起身走出书房,客厅温暖的灯光让他紧绷了一天的神经稍稍放松。
“爸爸”!乐乐第一个发现他,从沙发上跳下来,光着脚丫跑过来抱住他的腿,“你学习完啦”?
林晨弯腰把儿子抱起来,五岁的乐乐已经有些沉了:“嗯,今天的学习任务完成了。乐乐在看什么”?
“《超级飞侠》”!乐乐眼睛亮晶晶的,“爸爸,你明天要去面试的那个公司,是不是也像超级飞侠一样厉害”?
林晨被儿子的比喻逗笑了:“嗯……差不多吧,t厂确实挺厉害的”。
苏婉关掉电视,走过来接过乐乐:“好了,该洗澡睡觉了,明天爸爸要早起”。她看向林晨,眼神里有关切,“准备得怎么样”?
“该看的都看了,该准备的都准备了”。林晨把乐乐放下来,“剩下的就看临场发挥了”。
苏婉牵着乐乐往浴室走,回头说:“你先去冲个澡放松一下,我给你热杯牛奶”。
二十分钟后,林晨洗完澡出来,客厅里只剩下苏婉一个人。茶几上放着一杯温热的牛奶,旁边还有一小碟切好的苹果。
“乐乐睡了”?林晨在沙发上坐下。
“刚睡着,睡前还念叨着要爸爸加油”。苏婉在他身边坐下,拿起遥控器把电视音量调到最低,“今天模拟面试顺利吗”?
林晨喝了口牛奶,把王工指出的问题和改进建议大致说了一遍。说到最后,他苦笑道:“以前总觉得技术过硬就行,现在才发现面试是门学问。表达的逻辑性、思考的深度、甚至说话的节奏,都有讲究”。
苏婉安静地听着,等他讲完才开口:“你记不记得我参加教师职称评审的时候”?
林晨想了想:“记得,你准备了三个月,教案改了十几遍”。
“对”。苏婉点点头,“我当时也紧张,怕讲不好,怕评委提问答不上来。后来我们教研组长跟我说了一句话——‘你不是去接受审判的,你是去分享你的教学理念和成果的’”。
她看着林晨:“我觉得面试也是一样的。你不是去接受考核的,你是去告诉对方,你能为他们创造什么价值。心态不一样,整个人的状态就会不一样”。
林晨若有所思。苏婉的话和王工的建议不谋而合——从“应试”转向“交流”。
“而且”,苏婉握住他的手,掌心温暖,“林晨,我相信你。这几个月你是怎么过来的,我最清楚。每天雷打不动六点起床学习,晚上经常熬到一两点。那些AI的书,那么厚,你一页一页啃下来。投资系统从无到有,现在每天都能稳定盈利……”
她的声音很轻,但每个字都很有力量:“所以明天,你就正常发挥。把你学到的东西、思考过的问题、做过的项目,清清楚楚地讲出来。这次一定行”。
林晨心里涌起一股暖流。这几个月,苏婉从来没有抱怨过他失业在家,没有催他随便找个工作先干着。她默默承担了更多家务,在他学习到深夜时悄悄给他热杯牛奶,在他因为某个技术难题烦躁时陪他下楼散步。
“谢谢你,苏婉”。林晨反握住她的手,“没有你的支持,我可能早就放弃了”。
“夫妻之间说什么谢”。苏婉笑了笑,“对了,爸妈下午打电话来了”。
林晨一愣:“他们怎么知道的”?
“我昨天跟他们说了你明天面试的事”。苏婉说,“妈本来想今天打给你,又怕影响你准备,就让我转达。她说让你别紧张,正常发挥就行。爸还说……”
她顿了顿,模仿着林父那种严肃又别扭的语气:“‘告诉林晨,咱们老林家没有孬种。该学的学了,该准备的准备了,就没什么好怕的。’”
林晨忍不住笑了。父亲一辈子在县里的机械厂工作,说话总是硬邦邦的,但这份笨拙的鼓励却让他鼻子有些发酸。
“妈还说了”,苏婉继续道,“不管结果怎么样,你都是他们的骄傲。这几个月你的变化他们都看在眼里,从刚开始的焦虑迷茫,到现在目标清晰、状态稳定,这比找到什么工作都重要”。
林晨沉默了几秒。父母在老家,平时联系不多,但每次通话都能感受到他们的牵挂。失业这件事,他一开始没敢告诉二老,怕他们担心。后来还是苏婉找了个合适的时机,用“职业转型期”这样更温和的说法告诉了他们。
没想到,父母不但没有给他压力,反而一直在默默关注着他的进展。
“我明天给他们回个电话”。林晨说。
“嗯,面试完再打吧,现在专心准备”。苏婉看了看时间,“不早了,早点休息,明天要精神饱满地去”。
两人收拾了茶几,关灯回卧室。乐乐已经睡熟了,小脸在夜灯下显得格外安宁。林晨站在床边看了会儿儿子,轻轻给他掖了掖被角。
躺下后,林晨却有些睡不着。脑子里像过电影一样回放着技术要点:transformer架构的注意力机制、bERt和Gpt的区别、模型蒸馏的具体实现、量化交易系统中风险控制模块的设计逻辑……
“睡不着”?苏婉在黑暗中轻声问。
“嗯,脑子里东西太多”。
“那就别想了,深呼吸,放松”。苏婉侧过身,手轻轻搭在他手臂上,“想想开心的事。比如……等面试过了,咱们带乐乐去海边玩?他念叨好久了”。
“好”。林晨闭上眼睛,尝试放空思绪。
鹏城的夜晚并不安静,远处隐约传来车辆驶过的声音,楼上邻居家还有电视的声响。但这些声音反而让林晨感到一种奇异的踏实——这就是生活,真实而琐碎的生活。
他想起这几个月走过的路:从被裁员那天的茫然无措,到自学AI时的磕磕绊绊,再到开发投资系统初见成效的喜悦,以及一次次面试失败后的调整和坚持。每一步都不容易,但每一步都让他变得更扎实。
明天要见的陈博士,是t厂AI部门的负责人,也是行业里公认的技术大牛。王工说,陈博士面试时最喜欢问“为什么”,喜欢追问到问题的物理本质。这恰恰是林晨这几个月训练出来的思维方式——不满足于表面的ApI调用,而要理解底层的数学原理和实现逻辑。
“代码可以骗人,但逻辑不会”。林晨在心里默念着自己常说的话。
不知过了多久,他终于沉沉睡去。
第二天早上六点,生物钟准时把林晨叫醒。他轻手轻脚地起床,洗漱,换上那套专门为面试准备的深蓝色西装——这还是三年前买的,幸好身材保持得不错,穿上还算合身。
厨房里,苏婉已经准备好了早餐:煎蛋、牛奶、全麦面包,还有一小碟水果。
“怎么起这么早”?林晨有些意外。
“陪你吃早餐”。苏婉把煎蛋装盘,“面试是十点对吧?你九点半到就行,别去太早,在楼下转转调整状态”。
林晨点点头,在餐桌前坐下。乐乐还在睡,家里很安静,只有煎蛋在锅里轻微的滋滋声。
“紧张吗”?苏婉把牛奶递给他。
“有点,但更多的是期待”。林晨咬了口面包,“就像准备了很久的考试,终于要上考场了”。
“那就好”。苏婉在他对面坐下,“记住,你不是去求一份工作,你是去展示你能做什么。t厂需要人才,你也需要平台,这是双向选择”。
七点半,林晨吃完早餐,最后检查了一遍要带的材料:简历、项目介绍打印稿、笔和笔记本。投资系统的手机端他也会带上——虽然大概率不会展示,但万一聊到相关话题,可以作为一个实际案例。
出门前,他推开卧室门看了一眼。乐乐还在睡,小嘴微微张着,睡得很香。
“爸爸加油”!——昨晚睡前,乐乐抱着他的脖子说的这句话,此刻又在他耳边响起。
八点整,林晨走出家门。早高峰的地铁站人潮涌动,他随着人流走进车厢,找了个角落站着。西装革履的上班族、背着书包的学生、拎着菜篮的老人……每个人都在奔赴自己的目的地。
林晨看着车窗上映出的自己——三十五岁,眼角已经有了细纹,但眼神比几个月前清澈了许多。那是一种经过沉淀后的坚定。
手机震动了一下,是苏婉发来的微信:“路上小心,到了说一声”。
紧接着,又一条:“不管结果如何,晚上咱们都出去吃顿好的。我请客”。
林晨笑了,回复:“好”。
地铁在隧道中疾驰,窗外的广告灯箱连成流动的光带。林晨深吸一口气,闭上眼睛,在脑海中最后过了一遍可能被问到的技术问题。
九点十分,地铁到达深大站。林晨走出车厢,随着人流上到地面。
鹏城的天空湛蓝如洗,t厂那座标志性的双子塔在阳光下熠熠生辉。大楼前的小广场上,已经有不少人在走动,有的行色匆匆,有的三三两两站着聊天。
林晨没有直接进大楼,而是按照苏婉的建议,在广场边的长椅上坐下。他从包里拿出水杯喝了口水,看着眼前这座象征着中国互联网巅峰的建筑。
三年前,他陪客户来过一次t厂,当时只是羡慕这里的工作环境。没想到三年后,他会以求职者的身份坐在这里。
手机又震动了。这次是母亲发来的语音消息。
林晨点开,母亲那带着家乡口音的普通话传出来:“晨晨啊,妈刚给你算了一卦,说是今天运势很好!你别紧张,正常发挥就行。晚上记得给妈打个电话啊”。
林晨忍不住笑了。母亲信这些,每次家里有大事都要算一卦。虽然他不信,但这份心意他懂。
他回复:“知道了妈,我会好好表现的”。
九点二十五分,林晨站起身,整理了一下西装,朝t厂大楼走去。
旋转门缓缓转动,冷气扑面而来。前台处已经有人在排队登记,林晨走过去,报上姓名和预约信息。
“林晨先生,面试在32楼AI平台部,这是临时访客卡,请收好”。前台小姐递过来一张卡片,笑容职业而礼貌。
林晨接过卡片,道了声谢,走向电梯间。
电梯门缓缓合上,镜面墙壁映出他的身影。林晨看着镜子里的自己,深吸一口气,然后缓缓吐出。
妻子说“这次一定行”。
儿子说“爸爸加油”。
父母说“你是我们的骄傲”。
所有的鼓励和期待,此刻都化作一股平静而坚定的力量。
电梯数字不断跳动:10、15、20、25……
32楼到了。
“叮”的一声,电梯门缓缓打开。
第121章 T厂技术一面
上午九点五十分,林晨坐在t厂大楼三十二层的一间小型会议室里。
会议室不大,约十平米,一张长方形会议桌,四把椅子,墙上挂着白板。窗户朝东,晨光透过百叶窗在地板上投下斑驳的光影。空气里有淡淡的消毒水味和咖啡香——典型的互联网公司气味。
林晨提前二十分钟到达。前台核对信息后,一位年轻的hR实习生将他领到这里,递上一瓶矿泉水,礼貌地说面试官马上就到。
他打开笔记本电脑,连接电源,再次检查网络。视频面试链接已经发到邮箱,但他被通知第一轮是现场面试。也好,面对面更能展现状态。
九点五十五分,门被推开。
进来的是个三十出头的男性,短发,戴黑框眼镜,穿着深灰色t恤,胸口印着t厂的logo。他手里拿着ipad和一支笔,步伐轻快。
“林晨是吧?我是王磊,AI平台部的算法工程师,今天由我来做技术一面”。他伸出手,笑容温和但透着专业感。
林晨起身握手:“王老师好,我是林晨”。
“坐坐,别客气”。王磊在对面坐下,打开ipad,“简历我看过了,十年跨境电商经验,最近半年自学AI,还做了个量化投资系统”?
“是的”。林晨点头,心里快速调整状态——苏婉说得对,不是接受考核,是展示价值。
“那我们直接开始吧”。王磊推了推眼镜,“先做两道算法题,可以吗”?
“没问题”。
王磊在ipad上操作几下,将屏幕转向林晨。是t厂内部的在线编程平台界面,题目已经加载。
第一题:寻找旋转排序数组中的最小值 II
题目描述:假设一个按升序排列的数组在某个未知点上进行了旋转(例如,数组 [0,1,2,4,5,6,7] 可能变成 [4,5,6,7,0,1,2])。数组中可能包含重复元素。请编写一个函数,找出其中最小的元素。
难度标签:hard。
林晨扫了一眼题目。这是二分查找的变种,经典难题。他曾在Leetcode上刷过类似的题,但包含重复元素会增加复杂度。
“可以用这个平台写,也可以在白板上写思路”。王磊说。
“我直接写代码吧”。林晨将笔记本电脑转向自己,打开编程界面。
手指落在键盘上时,他深吸一口气。这半年,他刷了超过三百道算法题,从Easy到hard,从数组到图论。失业的压力转化为刷题的动力,常常一天八小时坐在电脑前,直到眼睛发酸。
此刻,那些深夜的坚持开始兑现。
他先写下函数签名,然后快速分析:因为有重复元素,当 nums[mid] == nums[right] 时,无法判断最小值在左侧还是右侧,此时只能将右指针减一。时间复杂度最坏会退化到o(n),但平均仍是o(log n)。
指尖在键盘上飞舞:
def findmin(nums):
left, right = 0, len(nums) - 1
while left < right:
mid = left + (right - left) // 2
if nums[mid] > nums[right]:
left = mid + 1
elif nums[mid] < nums[right]:
right = mid
else: # nums[mid] == nums[right]
right -= 1
return nums[left]
写完,他检查了一遍边界条件,点击运行。
测试用例通过。
“Ac了”。王磊看着ipad上的反馈,点点头,“时间三分十二秒,很快。能解释一下为什么 nums[mid] == nums[right] 时要 right -= 1 吗”?
林晨转向白板,画了一个数组示意图:“比如 [3,3,1,3],初始时 left=0, right=3, mid=1。nums[1]=3, nums[3]=3,相等。此时我们无法判断最小值在左边还是右边,但可以确定的是,去掉最右边的元素不会丢掉最小值,因为 nums[right] 和 nums[mid] 相等,所以可以安全地将 right 减一”。
“正确”。王磊在ipad上做了记录,“下一题”。
第二题:接雨水 II
题目描述:给定一个 m x n 的矩阵,其中的值均为正整数,代表二维高度图。请计算这个形状可以接多少雨水。
难度标签:hard。
二维接雨水,比一维难得多。林晨记得这道题要用最小堆(优先队列)加bFS的思路。他从边界开始,将最低的柱子作为“水桶”的短板,向内推进。
思路清晰后,他再次开始编码。这次花了些时间,约八分钟。
import heapq
def trapRainwater(heightmap):
if not heightmap:
return 0
m, n = len(heightmap), len(heightmap[0])
if m < 3 or n < 3:
return 0
visited = [[False] * n for _ in range(m)]
heap = []
# 将边界加入堆
for i in range(m):
heapq.heappush(heap, (heightmap[i][0], i, 0))
heapq.heappush(heap, (heightmap[i][n-1], i, n-1))
visited[i][0] = visited[i][n-1] = true
for j in range(1, n-1):
heapq.heappush(heap, (heightmap[0][j], 0, j))
heapq.heappush(heap, (heightmap[m-1][j], m-1, j))
visited[0][j] = visited[m-1][j] = true
directions = [(0,1),(0,-1),(1,0),(-1,0)]
water = 0
while heap:
height, x, y = heapq.heappop(heap)
for dx, dy in directions:
nx, ny = x + dx, y + dy
if 0 <= nx < m and 0 <= ny < n and not visited[nx][ny]:
visited[nx][ny] = true
# 如果相邻格子比当前边界矮,可以接水
water += max(0, height - heightmap[nx][ny])
# 新边界的高度是 max(当前边界高度, 相邻格子高度)
heapq.heappush(heap, (max(height, heightmap[nx][ny]), nx, ny))
return water
运行,再次Ac。
王磊看着结果,沉默了几秒。然后他抬起头,笑容更明显了些:“两道hard题,全部一次Ac,而且时间控制得很好。林先生,你的算法功底比很多科班出身的候选人还要扎实”。
“谢谢”。林晨松了口气,但不敢放松——他知道,算法只是门槛,真正的重点在后面。
果然,王磊将ipad放到一边,身体前倾:“那我们聊聊项目吧。你简历上写的这个‘智能量化投资系统’,我挺感兴趣的。一个做了十年跨境电商的人,怎么想到做这个”?
林晨知道,展示价值的时刻到了。
他打开自己带来的笔记本电脑,调出系统的架构图:“其实逻辑是相通的。跨境电商要做库存预测、价格优化、用户行为分析,本质也是数据驱动决策。我失业后开始学AI,就想能不能把机器学习用在投资上”。
他切换到系统界面——这是他自己开发的web端,简洁的深色主题,左侧是菜单栏,中间是K线图和策略信号。
“系统分为几个模块”。林晨开始讲解,“数据层,我从多个数据源获取A股、基金、期货、外汇的实时和历史数据,用pySpark做清洗和预处理。特征工程部分,我提取了上百个技术指标,包括均线、mAcd、RSI、布林带,还有一些自己设计的因子”。
王磊认真听着,偶尔点头。
“模型层,我用了集成学习。基础模型包括LStm、GRU这些时序模型,还有xGboost和LightGbm。但不是简单堆叠,我设计了一个元学习器,动态评估每个子模型在不同市场状态下的表现,分配权重”。
“怎么评估市场状态”?王磊问。
“我用无监督学习做了聚类”。林晨切换到另一张图,“根据波动率、成交量、行业轮动速度等维度,把市场分为震荡市、单边上涨、单边下跌、高波动四种状态。每种状态下,不同策略的有效性差异很大”。
“有意思”。王磊眼睛亮了,“那风控呢”?
“三层风控”。林晨点开风控模块,“第一层,策略层面,每个策略都有最大回撤阈值,触发就暂停。第二层,账户层面,单日亏损超过2%或周亏损超过5%,全仓降杠杆。第三层,人工干预接口,我可以随时手动平仓”。
他顿了顿,补充道:“系统运行半年,累计收益率86%,最大回撤7.2%”。
王磊挑了挑眉:“实盘”?
“实盘”。林晨点头,“我用的是自己的钱。代码可以骗人,但账户净值不会”。
这句话让王磊笑了:“说得对。那你在开发过程中遇到的最大技术挑战是什么”?
林晨想了想:“数据一致性。金融市场数据来源多,格式不一,还有停牌、除权除息、合约换月这些特殊情况。我花了大量时间构建数据管道,确保输入模型的数据是干净、连续、可复现的。另外就是实盘交易时的延迟和滑点问题,我接入了券商ApI,但中小券商的接口稳定性一般,需要做重试和容错”。
两人就这样聊了四十多分钟。从模型细节到工程实现,从投资理念到技术选型。王磊问得很细,有时甚至会追问某个参数为什么设成0.3而不是0.25。林晨一一作答,有些地方他承认还在优化,但思路是清晰的。
十点五十分,王磊看了眼时间:“差不多了。我这边技术评估没问题,算法和项目都超出预期。接下来会有二面,应该是我们总监陈博士亲自面,他可能会问得更深,尤其是AI底层的一些东西”。
“谢谢王老师”。林晨起身。
“别客气”。王磊也站起来,再次握手,“说实话,你这个转型案例挺励志的。期待和你做同事”。
走出会议室时,林晨感觉脚步轻快了许多。
走廊里人来人往,年轻的程序员们端着咖啡匆匆走过,讨论着模型训练和线上问题。阳光透过落地窗洒进来,整个楼层明亮而充满活力。
他走到窗边,望向楼下。深南大道车流如织,远处腾讯大厦的玻璃幕墙反射着耀眼光芒。这座城市的脉搏,他曾经以为自己已经脱节,但现在,他又一次站在了核心地带的建筑里,用代码证明了自己的价值。
手机震动,是苏婉发来的微信:“面试怎么样”?
林晨打字回复:“一面过了,聊得很好。面试官说期待做同事”。
几乎秒回:“太好了!我就知道你可以!乐乐说晚上要吃大餐庆祝”!
看着屏幕上的字,林晨嘴角扬起。他想起昨晚苏婉说的话——你不是在求职,是在寻找能发挥价值的平台。
也许,t厂就是这个平台。
但下一关,是陈博士。
林晨听说过这位技术总监的名声:严谨、深刻、喜欢追问本质。他会问什么?会如何看待一个半路出家的AI工程师?
电梯下行时,林晨看着楼层数字跳动,心里那个问题逐渐清晰:
当一位追求算法极限的科学家,遇见一个用代码解决实际问题的工程师,会碰撞出怎样的火花?
他不知道答案。
但他已经准备好了。
第122章 深挖项目
屏幕那头的面试官——王磊口中的李工——看起来四十出头,戴着黑框眼镜,头发有些稀疏,但眼神锐利。他没有开摄像头,只有一个简单的t厂logo虚拟背景,声音透过耳机传来,清晰而沉稳。
“林晨,你好。王磊已经跟我简单沟通过,你的算法能力和项目经验给他留下了很深印象”。李工开门见山”,尤其是你那个量化投资系统,我看了他记录的要点,有几个地方想深入聊聊”。
林晨坐直身体,调整了一下麦克风位置:”李工您好,您请问”。
“先从最基础的开始”。李工的声音听不出情绪,“你说你的系统覆盖A股、基金、期货、期权、黄金、外汇多个市场。数据源怎么解决?不同市场的数据频率、格式、时区差异巨大,你的数据管道是怎么设计的”?
来了。林晨深吸一口气,这问题直指系统基建的核心。
“数据管道分三层”。他语速平稳,思路清晰,“最底层是数据采集层,针对不同市场用了不同的策略。A股和国内期货用tushare和聚宽ApI,配合自写的爬虫做补充和校验;外汇和黄金用mt5的接口,通过python的metatrader5库对接;期权数据比较复杂,用了上交所和深交所的官方数据接口,加上第三方数据商的补充”。
他顿了顿,看到屏幕上李工的头像没有动静,便继续道:“中间是数据清洗和标准化层。这里我写了一套统一的时序数据处理框架,把不同频率的数据(tick级、分钟级、日级)通过插值和重采样统一到分钟级基准上。时区问题统一转换为Utc时间戳,再根据交易时间映射到本地时间。格式差异通过定义统一的数据模型(open, high, Low, close, Volume等字段)来解决,每个数据源接入时都要实现一个适配器”。
“第三层是数据存储和更新层。原始数据存parquet格式,处理后的特征数据存Feather格式,方便快速读取。更新机制是增量+全量结合,实时数据通过消息队列触发处理,盘后做一次全量校验和修复”。
李工沉默了几秒,然后问:“数据质量怎么监控”?
“有三重监控”。林晨早已把这些问题在心里复盘过无数遍,“一是采集过程监控,记录每个ApI调用的成功率、延迟、数据完整性;二是数据本身监控,检查缺失值、异常值(比如价格跳变超过阈值)、逻辑错误(比如最高价低于最低价);三是业务层面监控,比如某个标的突然长时间没有交易数据,会触发告警。所有监控日志都接入ELK栈,有问题能快速定位”。
“嗯”。李工应了一声,听不出是满意还是不满意,“那特征工程。你说系统用了上百个特征,怎么避免过拟合?怎么处理特征之间的多重共线性”?
这个问题更深入了。林晨感觉手心微微出汗,但大脑却异常清醒。
“特征筛选是分阶段进行的”。他组织着语言,“首先在单因子测试阶段,我会计算每个特征与未来收益率的Ic(信息系数)、IR(信息比率),剔除统计意义不显着的特征。然后进入多因子组合测试,用LASSo、Ridge这类带正则化的线性模型做初步筛选,惩罚项系数通过交叉验证确定”。
“对于多重共线性,除了用VIF(方差膨胀因子)检测,更重要的是从业务逻辑上理解特征。比如动量类特征和反转类特征天然有对冲关系,我不会简单剔除其中一个,而是考虑构建复合特征,或者在不同市场状态下启用不同的特征集。另外,我用了滚动窗口的方式动态评估特征重要性,每隔一段时间重新筛选,避免特征失效导致模型退化”。
李工追问:“具体用了哪些模型?为什么选择这些模型?集成策略是什么”?
林晨知道这是关键展示环节。他调出事先准备好的几张架构图(当然只是口头描述),开始详细阐述。
“模型分三层。第一层是基础预测层,包括xGboost、LightGbm、随机森林这类树模型,主要捕捉非线性关系和特征交互;还有LStm、GRU这类时序模型,捕捉序列依赖;以及一些简单的线性模型作为基准。每个模型独立训练,预测标的未来N个时间单位的收益率方向或幅度”。
“第二层是元模型层。用第一层各个模型的预测结果作为输入特征,训练一个Stacking集成模型。这里我尝试过逻辑回归、简单神经网络和另一个xGboost作为元模型,最后发现xGboost效果最稳定。这一层的作用是学习不同基础模型在不同市场环境下的权重”。
“第三层是决策融合层。这里不完全是模型了,而是一套规则引擎。它会考虑当前市场状态(趋势市、震荡市、高波动市)、资产相关性、仓位限制、交易成本等因素,对元模型的输出进行最终调整,生成具体的交易信号:买、卖、持有、观望”。
李工突然插话:“回测怎么做的?有没有考虑幸存者偏差、前视偏差、交易成本”?
“回测框架是自己写的,基于向量化回测思想,但加入了逐笔模拟”。林晨回答得很快,“数据用了全市场历史数据,包括已经退市的股票,避免幸存者偏差。所有特征计算严格只用历史数据,绝不用未来信息,防止前视偏差。交易成本考虑了佣金、印花税、滑点——滑点模型是根据历史交易数据拟合的,不同标的、不同时间段滑点率不同”。
他补充道:“回测分样本内和样本外。样本内用于调参和模型选择,样本外用于最终验证。我还做了滚动窗口回测,把整个历史时期分成多个滚动窗口,每个窗口内部分训练集和测试集,评估模型在不同时期的稳定性。最终夏普比率在1.5到2.0之间,最大回撤控制在15%以内,年化收益在20%到35%区间——当然,这是历史回测数据,实盘运行半年,年化大约25%,最大回撤12%,基本符合预期”。
李工似乎点了点头(林晨从声音里听出了一丝微小的变化):“实盘和回测的差距怎么解释?怎么持续优化”?
“差距主要来自几方面”。林晨坦诚道,“一是市场结构变化,历史规律不一定持续;二是实盘交易的心理因素和执行力问题,虽然我尽量自动化,但有些风控规则需要人工确认;三是数据延迟和系统故障等实盘特有的问题。优化是持续的过程:每周我会做一次绩效归因,分析盈利和亏损交易的来源;每月做一次模型重校准,用最新数据微调参数;每季度做一次架构评审,考虑是否引入新特征、新模型”。
“另外”,林晨想起一个重要的点,“我建立了一个‘错误案例库’,记录每次实盘中出现预期外亏损的交易,分析原因,如果是模型问题就针对性修复,如果是市场突变就作为压力测试案例加入回测”。
长达二十多分钟的技术追问,林晨几乎没有任何卡顿。每一个问题,他都能迅速拆解,从设计思路到实现细节,从理论依据到实战反馈,条理清晰,数据翔实。这半年日夜钻研、实盘打磨积累下来的东西,此刻如泉水般自然涌出。
李工终于停顿了更长的时间。林晨能听到那头轻微的键盘敲击声,似乎是在记录什么。
“最后一个问题”。李工的声音依然平稳,但林晨隐约感觉,语气里多了一丝……兴趣?“你这个系统,从技术角度看,最核心的创新点或者最独特的价值在哪里?如果让你用一句话总结”。
林晨没有立刻回答。他闭上眼睛,半年来无数个深夜对着屏幕调试代码、分析图表、复盘交易的情景在脑中闪过。那些亏损时的焦虑,盈利时的谨慎,突破瓶颈时的兴奋,最终沉淀为一种笃定。
“最核心的价值在于”,他睁开眼,看着屏幕上那个代表李工的虚拟头像,“它不是一个黑箱魔法,而是一个可解释、可迭代、可适配的决策辅助系统。我不追求预测市场的圣杯,而是用工程化的方法,系统性地捕捉市场在某些特定状态下存在的、微弱的统计规律,并通过严格的风控让盈利概率略高于亏损概率,长期累积成优势。它是我理解市场、理解AI如何与复杂现实世界互动的一个实验场”。
说完,林晨屏住呼吸。
耳机里安静了足足五秒钟。
然后,李工的声音传来,似乎比之前快了一点:“明白了。今天的面试就到这里。后续hR会联系你”。
“谢谢李工”。林晨礼貌回应。
视频会议断开。
林晨靠在椅背上,长长地吐出一口气。后背的衬衫已经有些湿了。他回想刚才的每一个问题和回答,仔细复盘,确认没有重大疏漏。李工的问题确实刁钻,直指要害,但好在都是他亲身实践、反复思考过的东西。
他看了一眼时间,面试持续了四十五分钟。比一面还长。
手机震动了一下,是苏婉发来的微信:“怎么样?结束了吗”?
林晨回复:“刚结束,感觉……还行。李工问得很深,但我都答上来了”。
苏婉秒回:“那就好!晚上想吃什么?说好了要庆祝的”。
林晨想了想,打字:“简单点吧,有点累。买点熟食,再炒个青菜就行”。
“好。乐乐说想你了,今天特意画了幅画,等你回来看”。
看着屏幕上的字,林晨嘴角不自觉扬起。无论外面的世界如何风云变幻,家里总有一盏灯,一份简单的温暖在等着他。
他站起身,走到窗边。下午的阳光透过玻璃洒进来,落在客厅地板上,暖洋洋的。鹏城的天空难得湛蓝,远处腾讯滨海大厦的玻璃幕墙反射着耀眼的光芒。
这次面试,应该……有希望吧?
李工最后那句“后续hR会联系你”,是标准结束语,还是某种积极的暗示?他无法确定。但至少,他没有被问倒。他把自己这半年沉淀的东西,完整地、清晰地展示给了t厂AI部门的技术负责人。
这就够了。
剩下的,交给命运。
他转身走向厨房,准备烧壶水泡茶。等待水开的时候,他下意识地打开手机上的券商App,看了一眼实盘账户。
今日盈亏:+2,347.86元。
持仓市值:286,532.41元。
累计收益:+86,532.41元。
那串数字安静地躺在屏幕上,像是一种无声的证明。证明那些孤独学习的夜晚,那些反复调试的代码,那些面对市场波动时的坚守,都没有白费。
水壶发出嗡鸣,水开了。
林晨泡好茶,端着杯子回到客厅,在沙发上坐下。疲惫感渐渐涌上来,但心里却有一种奇异的踏实。
他知道,无论这次t厂的面试结果如何,他已经不再是半年前那个被裁员后茫然无措的中年码农了。
他有了自己的武器。
第123章 技术二面
会议室的空调发出低沉的嗡鸣,温度打得有些低。林晨坐在椅子上,后背微微挺直,双手自然地放在桌面上。上一轮技术面试刚结束不久,他被通知稍作休息后继续下一轮。这短暂的等待时间里,他快速回顾了机器学习的基础理论脉络,从贝叶斯定理到Vc维,从损失函数到正则化,像过电影一样在脑中梳理了一遍。 门被推开,一位看起来三十多岁、戴着黑框眼镜、穿着灰色polo衫的男士走了进来,手里拿着一个笔记本和一支笔。他冲林晨点了点头,表情平静,看不出太多情绪。 林晨是吧?我是这一轮的面试官,主要负责推荐算法方向。陈博士那边应该跟你聊得比较深入了,我们这边主要看看理论基础。面试官坐下,开门见山,不用紧张,我们就像技术讨论。好的,谢谢。林晨深吸一口气,将注意力完全集中。 第一个问题,比较宽泛。你怎么理解没有免费午餐定理(No Free Lunch theorem)在机器学习实践中的指导意义?面试官推了推眼镜,目光平静地看向林晨。 林晨略一沉吟,这个问题看视基础,实则考核对机器学习哲学层面的理解。他整理了一下思路,开口道:NFL定理告诉我们,不存在一个在所有可能问题上都表现最优的算法。这对实践的指导意义,我认为核心有两点:一是破除对算法的迷信,在选择模型时必须结合具体问题和数据特点,没有放之四海而皆准的模型;二是强调了特征工程和领域知识的重要性。既然算法本身没有绝对优势,那么对数据的理解、特征的构建,以及将领域知识融入模型,就成了提升性能的关键路径。在实践中,它提醒我们不要盲目追逐最复杂的模型,而要从问题本质出发,选择最适合的工具。 面试官在笔记本上记录了几笔,脸上依旧没什么表情。理解得不错。那么,基于这个认识,在你开发量化投资系统时,你是如何为不同的金融市场(比如A股趋势、期货高频、外汇套利)选择或设计不同的模型基石的?能具体举例吗? 问题开始切入实战,并与他之前的项目挂钩。林晨精神一振,这正是他反复思考和验证过的地方。是的,我严格遵循了具体问题具体分析的原则。比如对于A股的趋势跟踪,由于市场非有效性和散户情绪影响大,我更多采用基于注意力机制的时序网络(比如transformer的变种)来捕捉长期依赖和突然的情绪拐点,并结合一些技术指标作为辅助特征。而对于期货高频数据,市场更接近有效,噪声大、信号微弱,我则主要使用梯度提升树(如xGboost)和轻量级神经网络,重点放在超高频特征工程和延迟优化上,模型更看重鲁棒性和执行速度。至于外汇套利,核心是寻找货币对间的短期定价偏差,这更像一个经典的统计套利问题,我用了协整分析、卡尔曼滤波等传统时间序列方法为主,深度学习模型反而作为验证和增强信号的手段。 面试官点了点头,似乎比较满意这种结合场景的差异化思路。好,我们深入一下模型内部。请你推导一下标准全连接神经网络中,使用Sigmoid激活函数和均方误差损失函数时,单样本下的反向传播过程,写出关键步骤和梯度公式。可以边写边说。他指了指旁边的小白板。 真正的硬核考核来了。林晨起身走到白板前,拿起笔。手心微微出汗,但大脑却异常清晰。这是他闭关时不知道推导过多少遍的基础。 假设一个三层网络,输入层、隐藏层、输出层。设输入向量为x,隐藏层输出为a = σ(w?x + b?),其中σ是Sigmoid,输出层为? = w?a + b?(这里输出层我先用线性激活,方便推导mSE损失)。损失函数 L = 1/2 (y - ?)2。 他一边说,一边写下符号定义。 首先计算输出层梯度。?L/?? = -(y - ?)。因为? = w?a + b?,所以 ?L/?w? = (?L/??) · a?,?L/?b? = ?L/??。然后误差反向传播到隐藏层。δ? = (?L/?a) = w?? · (?L/??)。注意,这里a经过了Sigmoid激活,所以 ?a/?z = σ(z)(1-σ(z)) = a ⊙ (1 - a),其中z = w?x + b?。因此,隐藏层关于加权输入的梯度为:?L/?z = δ? ⊙ a ⊙ (1 - a)。最后,隐藏层参数梯度:?L/?w? = (?L/?z) · x?,?L/?b? = ?L/?z。 他笔走如飞,公式清晰地呈现在白板上。推导过程流畅,关键点——Sigmoid导数特性、链式法则的应用、矩阵维度的匹配——都准确无误。 面试官看着白板,追问了一句:如果隐藏层也用线性激活,推导会有什么不同?梯度消失问题在这种情况下还会那么突出吗? 林晨立刻回答:如果全部使用线性激活,多层网络等效于一个单层线性网络,失去了非线性表达能力。推导上,激活函数的导数项变为1,梯度公式中少了a ⊙ (1 - a)这一项。梯度消失问题源于如Sigmoid、tanh等饱和激活函数在绝对值较大输入时导数趋近于0,多层连乘导致梯度指数级衰减。如果全部是线性激活,虽然不存在因激活函数饱和导致的梯度消失,但网络失去了拟合复杂非线性函数的能力,且对于深层网络,参数矩阵连乘也可能导致梯度爆炸或消失,这需要通过权重初始化(如xavier)和归一化层(如batchNorm)来缓解。实际上,正是非线性激活函数让深层网络有了意义,也带来了梯度消失的挑战,才有了ReLU及其变种等解决方案。很好,理解到本质了。面试官终于露出了一丝极淡的、近似赞许的表情,那我们谈谈优化。SGd、momentum、RmSprop、Adam,这些优化算法的核心区别是什么?在训练你那个量化模型时,你如何选择?遇到过哪些典型的优化问题,比如陷入尖锐的局部极小值? 林晨回到座位,思考如何将理论与他实战中踩过的坑结合起来。核心区别在于更新权重时如何利用历史梯度信息。SGd只使用当前批次梯度,简单但震荡大,容易陷入尖锐的局部极小或鞍点。momentum引入了概念,类比物理学,让更新方向不仅考虑当前梯度,还累积之和之前梯度的惯性,有助于穿越狭长山谷或平坦区域。RmSprop则自适应调整每个参数的学习率,根据历史梯度平方的滑动平均来缩放当前梯度,对稀疏特征友好。Adam结合了momentum和RmSprop的优点,既有动量,又自适应学习率。在我的量化模型训练中,我通常用Adam作为默认起点,因为它调参相对友好,收敛快。但对于某些特定的、经过精心的特征工程后的子模型,我发现带动量的SGd(SGd with momentum)配合适当的学习率衰减策略,有时能收敛到更优、更稳的解,可能是Adam自适应学习率在某些情况下会过早地并降低了对后期细微梯度信号的敏感度。 他顿了顿,回想起一些调时的夜晚,遇到的优化问题,局部极小值确实有。尤其是在市场风格快速切换的时期,模型在训练集上损失下降,但验证集上表现停滞甚至倒退,这很可能就是陷入了对过去噪声过度拟合的局部最优,这个局部最优在样本外表现很差。我的应对策略主要是:第一,加强正则化,包括L2正则和dropout;第二,使用更平滑的激活函数如Swish替代ReLU,缓解死亡神经元问题;第三,最重要的,引入动态验证集和早停策略,一旦发现验证性能连续多个epoch不提升,就回滚到最佳状态,并考虑调整模型结构或特征。 面试官手指轻轻敲着笔记本,问出了最后一个问题:你刚才提到了市场风格切换。从机器学习角度看,你认为金融时间序列数据的非平稳性对模型最大的挑战是什么?你的系统如何应对这种概念漂移(concept drift)? 这个问题问到了量化交易最核心的痛点之一。林晨感到一丝兴奋,这是他有深体会的地方。最大的挑战是,基于历史数据训练的模型,其假设(数据分布恒定)在现实中被持续违背。过去有效的模式未来可能失效,甚至反向。模型容易过期,产生巨大回撤。我的系统采用多层应对机制。第一层是特征层面,尽量使用相对指标、分位数归一化后的特征,减少绝对值的依赖。第二层是模型层面,使用在线学习或定期重训练机制,比如用增量学习的逻辑回归作为一部分信号的补充,或者设置严格的模型寿命阈值,到期强制重训练。第三层,也是我认为最重要的一层,是决策融合与风控层面。我不会让单一模型完全自主决策。我的系统核心是一个动态权重分配器,它会实时评估各子模型近期表现、波动率、与市场的相关性等,自动降低持续失效模型的权重,同时通过严格的止损、仓位控制来隔离单一模型失效带来的风险。本质上,我把应对非平稳性的责任,从单纯依赖模型的泛化能力,部分转移到了系统级的动态管理和风控上。 面试官听完,沉默了片刻,然后合上了笔记本。理论基础很扎实,推导清晰,而且能联系实际项目思考,不错。他站起身,我这边没有其他问题了。陈博士很欣赏你,后续流程hR会跟你沟通。今天辛苦了。谢谢您!林晨也立刻起身,微微鞠躬。直到面试官离开会议室,他才缓缓舒了一口气,感觉大脑皮层还残留着高速运转后的微微灼热感。 这场二面,像一场没有硝烟的脑力拼搏。他走到窗边,俯瞰科学园区里错落的楼宇和穿梭的人流。鹏城的阳光炽烈,打在玻璃幕墙上,反射出耀眼的光芒。他突然想起自己这半年来无数个深夜,对着那些枯燥的公式、论文、代码一行行啃下来的日子。那些曾经觉得抽象的理论,如今在面试官的追问下,变成了他手中可以拆解、组合、应用的武器。
第124章 论文讨论
会议室里只剩下林晨一人。
窗外的科兴科学园依旧繁忙,玻璃幕墙反射着午后有些刺眼的阳光。他轻轻舒了口气,端起面前那杯已经凉透的矿泉水喝了一口。喉咙有些干涩——刚才近两个小时的密集问答,几乎耗尽了他在过去几个月里积攒的所有理论储备。
“没有免费午餐定理”作为开胃菜,全连接网络的反向传播推导是主餐,优化算法对比和应对概念漂移的系统策略则是餐后甜点。这场技术二面,面试官像一位技艺高超的厨师,将机器学习各个领域的知识点拆解、组合、烹饪,最后端到他面前,看他能否品尝出其中的火候与精髓。
林晨揉了揉太阳穴。疲惫感开始涌上来,但更多的是一种释放后的轻松。那些深夜对着屏幕推导公式、在草稿纸上画架构图、一遍遍调试代码的日子,那些曾经觉得抽象晦涩的概念,在刚才的问答中变得无比具体和鲜活。
他做到了。
会议室的门被轻轻推开。
进来的不是hR,也不是刚才那位表情严肃的算法专家,而是另一位约莫四十岁出头、戴着黑框眼镜、穿着灰色polo衫的男人。他手里拿着一台轻薄本,脚步很轻,脸上带着一种介于好奇和审视之间的表情。
“林晨是吧?”男人在林晨对面坐下,很自然地打开电脑,“我是王哲,也是AI平台部的。刚听老李说,你这轮面得不错。”
林晨立刻坐直身体:“王老师好。”
“不用紧张,技术面你已经通过了。”王哲推了推眼镜,目光落在屏幕上,“我这边更多是聊聊天,看看你对前沿方向的关注度和思考深度。毕竟我们部门做的不是应用层调参,而是底层架构和下一代模型的预研。”
林晨心中一动。底层架构,下一代模型——这和他自学的方向,以及内心深处对AI技术本质的探究欲望,恰好契合。
“最近有跟踪顶会的论文吗?”王哲问得很直接。
“有的。”林晨点头,“主要关注NeurIpS、IcmL和IcLR,也会看一些arxiv上预印的。”
“好。”王哲在电脑上点开一个pdF文件,将屏幕转向林晨,“这篇上个月挂在arxiv上的论文,关于用状态空间模型(SSm)替代transformer中Self-Attention的尝试,你看了吗?”
林晨看向屏幕。论文标题是《mamba: Linear-time Sequence modeling with Selective State Spaces》。他心跳快了一拍——这篇论文他不仅看了,还花了整整一个周末的时间,在自己的服务器上尝试复现了其中的核心模块。
“看了。”林晨组织了一下语言,“这篇工作很有意思。它提出的选择性状态空间模型,试图解决传统SSm在处理离散信息时参数与输入无关的问题。通过让SSm的参数成为输入的函数,实现了类似Attention的‘选择性’记忆能力。”
王哲眼中闪过一丝光亮:“继续说。”
“传统的transformer架构,Self-Attention的复杂度是序列长度的平方级,这限制了长序列的处理能力。而SSm理论上可以达到线性复杂度。”林晨语速平稳,思路清晰,“但问题在于,SSm的线性时不变假设在处理语言这种高度上下文相关的序列时显得僵硬。mamba通过这个‘选择性’机制,让模型能够根据当前输入动态调整状态转移,相当于在保持线性复杂度的同时,引入了非线性动态。”
“你觉得这个方法能替代Attention吗?”王哲追问。
林晨沉吟片刻:“短期来看,很难完全替代。Attention机制的可解释性、并行计算友好性,以及过去几年基于它构建的庞大生态,不是一种新架构能轻易撼动的。但mamba给出了一个非常有价值的探索方向——如何在保持高效计算的前提下,提升序列建模的能力。它可能在特定场景,比如超长序列处理、实时流数据建模上,有独特的优势。”
王哲点了点头,在电脑上做了个标记。他又切换了另一个页面:“那这篇呢?Google上个月发的RetNet,用循环结构实现transformer的等效表达,号称‘训练并行,推理循环’,号称是transformer的强力竞争者。”
这篇论文林晨同样熟悉。“RetNet的核心思想,是用一种带衰减的循环结构来替代Attention,实现训练时的高效并行和推理时的低内存占用。它本质上是在探索一种介于循环神经网络和transformer之间的架构。”
“你怎么看它的衰减机制?”王哲的问题开始深入细节。
“衰减因子γ的引入很巧妙。”林晨说,“它让模型能够权衡历史信息的重要性,距离当前越远的信息,衰减得越厉害。这符合人类处理信息的直觉,也缓解了传统RNN的长期依赖问题。但问题在于,这个γ是全局共享的超参数,还是可学习的参数?如果是全局的,可能无法适应不同层次、不同任务对历史信息的不同需求;如果是可学习的,又增加了优化难度。”
王哲身体微微前倾:“如果你来设计改进,你会从哪个方向入手?”
林晨没有立刻回答。他闭上眼睛,脑海里快速闪过论文中的公式、自己复现代码时遇到的数值稳定性问题、以及更早之前学习RNN和LStm时对门控机制的思考。
“或许可以尝试分层或分头的衰减机制。”林晨睁开眼睛,“类似transformer的多头注意力,不同头关注不同粒度的信息。那么不同头也可以有不同的衰减策略:有的头关注局部细节,衰减得快;有的头关注全局结构,衰减得慢。甚至可以让衰减因子γ本身成为一个由输入内容决定的动态参数,实现更精细的控制。”
王哲沉默了几秒钟,然后笑了:“你这个想法,和我们内部一个小型研讨会上有人提的方向很像。”
林晨松了口气,但不敢放松。
“论文就先聊到这里。”王哲关掉pdF,双手交叉放在桌上,“我们换个更大的话题。以你目前的观察和思考,你认为当前大模型发展面临的最大瓶颈是什么?不是算力,也不是数据量——这些是资源问题。我说的是根本性的、架构或理论上的瓶颈。”
这是一个开放式的问题,没有标准答案,却能彻底暴露一个人的思考深度和技术视野。
林晨深吸一口气。这个问题,他在无数个失眠的夜晚,看着自己那台跑着量化模型的服务器风扇转动时,也问过自己。
“我认为,当前基于transformer架构的大模型,面临的一个根本性瓶颈是‘理解’与‘生成’的割裂。”林晨缓缓说道,“模型通过海量文本训练,学会了统计层面的关联,能生成流畅、甚至看似合理的文本。但它是否真正‘理解’了文本背后的物理世界、因果关系、人类意图?恐怕没有。”
“比如呢?”
“比如,模型可以完美描述‘苹果从树上掉落’的过程,但它并不真正理解重力、质量、惯性这些物理概念。它只是从大量文本中学到了‘苹果’、‘掉落’、‘树’这些词汇的共现模式。”林晨说,“再比如,在数学推理上,模型可以复现解题步骤,但它并不真正理解每一步变换背后的数学原理。这种割裂,导致模型在面对需要深层理解、因果推断、物理常识的任务时,表现会不稳定,甚至出现荒谬的错误。”
王哲的表情变得严肃:“这是AGI(通用人工智能)研究中的经典难题。你觉得突破口在哪里?”
“可能需要引入多模态、具身交互、以及更结构化的世界知识。”林晨说,“让模型不仅仅是‘读文本’,还要能‘看图像’、‘听声音’、甚至通过模拟环境与世界进行交互,在互动中学习因果和物理规律。同时,或许需要一种新的架构,能够将符号逻辑、概率推理和神经表示更自然地融合起来。”
“这条路很长。”王哲感慨道。
“是的。”林晨点头,“但我觉得,与其一味追求模型参数量的增长,不如在架构创新、学习范式、以及如何让模型获得更‘实在’的世界知识上多下功夫。毕竟,参数再多,如果学习到的只是文本表面的统计规律,那也只是更精致的鹦鹉学舌。”
王哲盯着林晨看了好一会儿,然后忽然问:“你之前是做跨境电商的,后来才自学AI。为什么会对这些底层问题感兴趣?大多数转型的人,更关心如何用现成的框架解决业务问题。”
林晨想了想:“可能是因为我年纪不小了,经历过技术浪潮的起落。我知道只学工具和框架,很快会被淘汰。但理解原理,看清方向,才能走得更远。另外……”他顿了顿,“我自己做的那个量化投资系统,也让我深刻体会到,一个模型就算在历史数据上表现再好,如果它没有真正理解市场运行的底层逻辑和突变机制,那么在实盘中依然可能崩盘。这和AI模型缺乏‘真实理解’导致泛化能力不足,在某种程度上是相通的。”
“从金融到AI,这个类比有意思。”王哲点了点头,似乎终于满意了。他合上电脑,站起身,“今天聊得很愉快。你的技术基础很扎实,更重要的是,你有自己的思考,不是人云亦云。”
“谢谢王老师。”
“陈博士那边,我会把今天的交流情况反馈过去。”王哲走到门口,又回过头,“对了,你刚才提到‘物理世界’和‘因果’。陈博士最近一直在内部强调一个观点,他认为当前AI研究的最大误区,就是忽略了智能的‘物理成本’。如果你有机会和他聊,可以听听他的看法。这是一篇他推荐我们必读的论文,你可以先看看。”
王哲用手机给林晨发了一个pdF链接。
林晨连忙道谢。他看着王哲离开的背影,又低头看了看手机上刚刚收到的论文标题——《the physical Foundations of Intelligence: A putational perspective》。
物理成本?
这个词像一颗石子投入他平静的心湖,荡开一圈圈涟漪。他隐约感觉到,自己似乎触碰到了某种更本质、更坚硬的东西。
而接下来,他就要直面提出这个观点的陈博士本人了。
第125章 系统设计
南山科技园,t厂总部大楼。
林晨站在三号会议室门口,深吸了一口气。手机屏幕上显示着刚收到的邮件通知:“林晨先生,您的第三轮技术面试将于今日下午3点在3号会议室进行,面试官为陈博士,请准时参加。”
陈博士。
这个名字让林晨心头一紧。王哲在上一轮结束时特意提到的那位,强调“智能的物理成本”观点的技术大牛。他昨晚几乎通宵研读了王哲推荐的那篇论文——《智能的物理基础:一种计算视角》,里面那些关于能量消耗、信息熵与智能涌现之间关系的论述,像一把钥匙,打开了他对AI理解的另一扇门。
但今天的面试是系统设计,不是论文讨论。
林晨整理了一下衬衫领口,推门而入。
会议室不大,一张长桌,几把椅子。靠窗的位置坐着一位约莫五十岁左右的中年男人,头发微卷,戴着一副黑框眼镜,正低头看着面前的笔记本电脑。他穿着深灰色的polo衫,看起来朴素而干练。
“陈博士您好,我是林晨。”林晨走到桌前,礼貌地打招呼。
陈博士抬起头,镜片后的目光锐利而平静。“坐。”他指了指对面的椅子,声音不高,但带着一种不容置疑的沉稳。
林晨坐下,将带来的笔记本和笔放在桌上。
“王哲跟我提过你,说你论文看得不错,有自己的想法。”陈博士开门见山,“但在我这里,我们不聊论文。我们聊怎么把想法落地,变成能支撑亿级用户、每天处理pb级数据的系统。”
林晨点头:“明白。”
“好。”陈博士身体微微前倾,双手交叉放在桌上,“假设你现在要为一个全新的内容平台,比如短视频平台,设计一套大规模个性化推荐系统。平台刚上线,用户少,数据稀疏。你的目标是设计一套从零开始、可扩展、能持续迭代优化的全链路推荐架构。给你五分钟思考,然后开始讲。”
典型的系统设计题。林晨闭上眼睛,脑海里迅速构建起一个完整的框架。
五分钟很快过去。
“陈博士,我准备好了。”林晨睁开眼,眼神变得专注而锐利。
“开始吧。”
“我将整个推荐系统分为四个核心层次:数据层、召回层、排序层、部署与反馈层。”林晨拿起笔,在笔记本空白页上快速画了一个分层架构图。
“第一,数据层。这是地基。需要采集用户行为数据(点击、播放时长、点赞、评论、转发、关注)、内容元数据(视频标签、上传者信息、时长、清晰度)、上下文数据(时间、地理位置、设备、网络环境)。数据采集要兼顾实时流和离线批处理。刚上线时数据稀疏,需要设计冷启动策略,比如引入内容本身的标签体系,或利用少量种子用户的反馈进行快速学习。”
陈博士微微颔首,示意继续。
“第二,召回层。面对海量候选内容池(假设未来可能达到千万级别),需要用相对轻量级的方法快速筛选出几百到几千个可能与用户相关的候选集。我会设计多路召回通道。”林晨在“召回层”下方画出几条分支,“一路是基于协同过滤的召回,初期可用Item-cF,利用物品相似度;用户数据积累后升级到User-cF和矩阵分解。二路是基于内容的召回,利用视频标签、文本描述(通过NLp提取关键词)与用户历史偏好标签匹配。三路是热门、新品等非个性化召回,保证内容多样性。四路,针对新用户和新内容,设计专门的探索性召回策略,比如基于内容属性的相似度探索,或基于bandit算法进行探索与利用的平衡。”
“冷启动具体怎么解决?”陈博士插话问道,这是关键点。
“对于全新用户,首先利用注册时填写的粗略兴趣标签(如果平台有引导),结合热门、地域性内容进行初始推荐。同时,在用户首次产生少量行为后,迅速启动基于内容的召回和轻量级模型,快速建立初步画像。对于新内容,利用其标签、上传者历史表现(如果是老创作者)、内容质量预评估模型(如清晰度、标题吸引力等浅层特征),将其送入基于内容的召回通道,并适当提高其在探索通道中的曝光权重。”
陈博士点了点头,表情看不出波澜:“继续。”
“第三,排序层。这是系统的核心,决定了最终呈现给用户的顺序。召回层送来的几百个候选item,需要用更复杂的模型进行精准打分排序。”林晨在“排序层”画了一个大框,“初期可以采用特征工程+传统机器学习模型,比如Gbdt。特征包括用户画像特征(兴趣标签、活跃度、历史行为统计)、内容特征、交叉特征(用户-内容交互特征)、上下文特征。随着数据积累,逐步过渡到深度学习模型,比如wide & deep、deepFm,或者更复杂的多任务学习模型,同时优化点击率、播放时长、互动率等多个目标。”
“模型如何迭代?怎么评估效果?”陈博士追问。
“线上A/b测试是金标准。”林晨回答得很干脆,“将用户流量分割,一部分走基线模型(旧模型),一部分走新模型候选版本。对比核心指标:ctR(点击率)、观看时长、用户留存率、人均消费时长等。同时,必须关注多样性、新颖性等生态指标,防止信息茧房。离线评估方面,除了常规的AUc、LogLoss等,还需要设计更贴近业务的评估指标,比如考虑播放时长的加权ctR。模型迭代需要建立完整的pipeline:数据准备、特征抽取、模型训练、离线评估、线上小流量实验、全量发布。”
“如果线上效果不达标,甚至下跌,排查思路?”
“这是一个系统工程排查。”林晨思维清晰,“首先,检查数据:新模型训练和线上serving的数据分布是否一致?特征计算是否有bug?数据 pipeline 是否出现延迟或断裂?其次,检查模型:模型是否过拟合或欠拟合?超参数是否需要调整?新引入的特征是否有效?最后,检查线上环境:模型服务是否正常?延迟是否在可接受范围?流量分配是否正确?需要有一套完整的监控报警和日志追踪系统。”
陈博士的目光在林晨脸上停留了几秒,然后移向他的架构图:“第四层呢?”
“部署与反馈层。”林晨指向最上层,“模型训练完成后,需要部署到线上 serving。考虑到高并发和低延迟,可以采用tF Serving或其他专用服务框架。系统需要支持热更新、版本回滚。用户看到推荐结果并产生反馈后,这些实时行为数据通过消息队列(如Kafka)迅速回流到数据层,形成闭环。这里要特别强调实时特征的重要性,比如用户最近十分钟的点击序列,对下一个推荐的影响很大,需要构建低延迟的实时特征计算管道。”
“系统的可扩展性怎么保证?”
“微服务架构,模块化设计。”林晨回答,“数据采集、特征计算、召回服务、排序服务、模型训练平台,各自独立部署和扩展。存储方面,用户画像、物品画像用KV存储(如Redis)做缓存保证实时读取,海量日志用hdFS或数据湖。计算框架,批处理用Spark,流处理用Flink。云原生部署,利用容器化和K8s进行弹性伸缩。”
“成本控制?尤其是初期数据少的时候,搞这么大一套,划算吗?”陈博士抛出一个现实问题。
林晨沉吟了一下:“您提到成本,这让我想到您和王哲博士都提过的‘物理成本’概念。从零开始,确实不能一开始就追求完美的大系统。我的设计会遵循渐进式演进原则。初期,用最简单的规则+内容召回+逻辑回归排序快速上线,验证市场。数据积累到一定量(比如百万级用户行为),再引入协同过滤和Gbdt。当数据量和业务复杂度达到需要时,再逐步升级到深度学习架构和更复杂的工程体系。每一步升级,都需要明确的业务指标提升预期和成本收益评估。本质上,是用最小的工程‘物理成本’,去换取当前阶段最大的业务价值。”
当“物理成本”这个词从林晨口中自然说出时,陈博士一直没什么表情的脸上,第一次露出了些许变化。他的手指在桌面上轻轻敲击了两下。
“最后一个问题,”陈博士看着林晨,“如果让你负责这个系统的初期搭建,你需要一个多大的团队?第一个可用的版本,你计划用多长时间上线?”
林晨快速计算:“如果只包含最核心的流水线:基础数据采集和存储、基于标签的内容召回、逻辑回归排序模型、简单的A/b测试框架。一个精干的5-7人小团队(包括算法、后端、数据开发)足够。第一个可用版本,抛开前期需求梳理和方案设计,纯开发时间,我认为4-6周可以推出一个mVp(最小可行产品),开始积累第一批真实数据。”
会议室里安静下来。
陈博士靠在椅背上,目光再次扫过林晨画在纸上的架构图,那上面线条清晰,层次分明,关键模块和考虑因素都标注了出来。他又看了看林晨,这个三十五岁、有十年非AI相关经验、却能在几个月内自学到如此程度的求职者。
“你的系统设计,思路清晰,考虑全面,特别是对冷启动、成本演进和问题排查的思考,有实战的影子。”陈博士缓缓开口,语气平静,“这不像仅仅从书本或论文里学来的。你自己有相关实践?”
林晨心中一凛,知道关键问题来了。他坦诚道:“是的,陈博士。我失业期间,自己开发了一套量化交易系统。虽然领域不同,但同样面临数据稀疏起步、模型迭代、线上部署、风险控制、系统扩展等问题。很多设计思路和踩坑经验,是从那个项目里获得的。”
陈博士若有所思地点点头:“跨界经验,有时能提供独特的视角。你的量化系统,盈利吗?”
“目前还在实盘测试和优化阶段,但已经能够产生稳定的小额正收益,支撑我的日常生活开销。”林晨谨慎地回答,没有透露具体数字。
“很好。”陈博士合上了面前的笔记本电脑,“技术面试部分,到这里就结束了。”
林晨的心提了起来。结束了?没有直接说结果。
“你的技术基础、架构思维、解决问题的能力,符合我们团队对高级工程师的期望。”陈博士站起身,向林晨伸出手,“接下来,hR会和你沟通后续流程。期待有机会和你共事。”
林晨连忙起身,握住陈博士的手。那只手干燥而有力。
“谢谢陈博士。”林晨感觉自己的声音有点发紧,是紧张,也是如释重负。
陈博士松开手,走到会议室门口,又回头看了林晨一眼:“你提到的‘物理成本’的应用理解,很有意思。保持思考。”
说完,他拉开门离开了。
会议室里只剩下林晨一人。他缓缓坐回椅子上,看着纸上自己画的架构图,长长地呼出一口气。
三面,技术终面,过了。
接下来,就是谈薪和hR面了。距离那个120万的期望,似乎终于近了一步。而陈博士最后那句话,更像是一颗种子,埋在了他心里。不仅仅是系统的物理成本,智能本身,它的产生、运行、进化,是否也遵循着某种更根本的物理法则?
他收拾好东西,走出会议室。走廊明亮安静,窗外是南山科技园密集的写字楼群。阳光透过玻璃幕墙照射进来,在地板上投下清晰的光影。
一个念头忽然闪过:如果真能加入t厂,参与到真正大规模AI系统的构建中,自己的那个量化系统,或许能获得前所未有的提升。
他拿出手机,给苏婉发了条微信:“三面技术关刚结束,感觉还行。晚上回家吃饭。”
很快,苏婉回复了一个笑脸:“好,等你。乐乐说想爸爸了。”
林晨笑了笑,收起手机,走向电梯。脚步,比来时轻快了许多。
第126章 业务四面:另一扇门
三天后。
林晨再次推开了t厂总部大楼的玻璃门。
hR发来的面试通知言简意赅:您已通过技术三面,恭喜。下一轮为业务综合面,面试官为张副总裁,请于本周四上午十点准时到达前台。
张副总裁。林晨在网上搜过这个名字——张明远,t厂智能平台事业部分管副总裁,履历横跨产品、运营与技术,是那种能把商业直觉和工程逻辑都讲得头头是道的人。与陈博士那种纯粹的技术学者气质截然不同。
电梯直达三十八层。
接待他的行政把他领进一间视野极好的会议室,窗外是深圳湾开阔的海景,阳光把海面打碎成一片晃眼的金鳞。林晨在长桌旁坐下,接过一杯咖啡,只抿了一口便放在一旁。
他不想让任何东西干扰待会儿的思维清晰度。
门打开的声音。
进来的是一位四十出头的男人,西装外套随意搭在手臂上,衬衫袖子挽到肘部,步伐带着一种掌控全局的从容。他把外套搭在椅背上,大方地坐下,先朝林晨点了个头。
林晨是吧,我是张明远。他声音爽朗,带着点北方口音,陈博士那边我听说了,夸你在技术判断上有自己的思路框架。我这边问的不是技术,是商业,是落地。
他停顿了一下,目光直接落在林晨脸上。
你在外面漂了这几个月,自己搭了个量化系统,还跟一堆web3的项目接触过。张明远语气随意,像是在聊天,那我就想问你:以你这几个月的真实体会,你认为——AI真正能给一个企业创造价值的地方在哪?不是那种ppt里的答案。
问题抛来,干脆,带着一种考验真实性的压迫感。
林晨沉默了几秒。
他想起了那几个月接触过的形形色色的项目——web3的、元宇宙的、AI套壳的。那些故事讲得天花乱坠,却往往在一个问题上打转:这东西的成本,到底能不能被真实的商业逻辑支撑起来?
他想起自己的量化系统。为了追求更高的预测准确率,他曾经尝试过更复杂的模型,但很快撞上了现实的墙——本地算力不够,上云成本激增,而收益的边际提升却越来越小。他最终不得不回头,在模型复杂度、计算成本和预测精度三者之间寻找那个最优的平衡点。
那个过程,远比调出一个漂亮的评测指标更难,也更真实。
我觉得,AI能给企业真正创造价值的地方,林晨开口,语速平稳,最先进的模型,而是用刚刚够用的智能,解决一个过去无法规模化处理的具体问题
张明远微微扬了扬眉,没有打断。
我接触过不少打着AI旗号的项目,最终讲不通的,往往不是技术不够好,而是根本没有算清楚账——这个AI能力,它的物理运行成本,跟它能创造出来的商业价值之间,是否真的成正比?林晨继续,很多公司在做的事,说穿了是在用昂贵的算力,去解决一个本来就不是高频刚需的问题。钱花出去了,价值落不下来。
那你觉得什么样的场景,是真正值的?张明远追问,身体微微前倾。
重复性高、数据积累丰富、决策链路清晰、人力成本高的场景。林晨答得干脆,比如内容平台的推荐系统——每天亿级的请求,每一次推荐决策都在影响用户留存;再比如客服自动化、风控规则引擎、广告竞价策略。这些场景,AI替代或者增强的不是一个人,而是一套原来根本跑不起来的规模化决策流程。价值密度够高,物理成本才能被摊薄。
他顿了顿,补了一句:我自己的量化系统,其实就是这个逻辑的微型版本。不是为了追求最聪明的预测,而是在成本和精度之间找那个真正划算的平衡点。
张明远听完,靠回椅背,安静了几秒。他的眼神里有某种评估的意味,但不像陈博士那种深潭般的沉静,更像是一个猎手在确认猎物的成色。
好,那我再问你一个更现实的。他在桌上点了点手指,假设你加入t厂,负责推动某个AI能力在业务团队的落地。业务的人觉得这东西不靠谱,算法的人觉得业务不懂,两边都在等对方先动。你怎么破这个僵局?
这是一道考人的题。林晨知道,技术答案在这里一文不值。
找一个最小的、双方都觉得不要命的切入点,快速跑一个能看见结果的小实验。他说,AI能做什么这个指标,我们能在四周内帮你动一下吗。人都是被结果说服的,不是被方案书说服的。赢一次小的,才有资格谈大的。
张明远嘴角动了一下,算是一个认可的表情。
两人又谈了将近一个小时。问题涉及竞对分析、业务优先级判断、跨团队协作的摩擦处理,甚至还有一道关于如果预算被砍一半,你会砍哪里的刁钻问题。林晨没有回避,一一作答,有时候坦诚自己不确定,但说清楚了自己的判断依据和权衡逻辑。
最后,张明远站起来,把外套重新搭上手臂。
聊得不错。他说,语气轻描淡写,但林晨听得出来,那是一种真实的、非客套的评价,你的技术感和商业感都在,更难得的是你知道自己不知道什么。后面hR会联系你,薪酬那块,应该能给你一个满意的数字。
两人握手。
林晨走进电梯,等门缓缓合上。他才允许自己长长地呼出一口气。
手心微微潮湿,心跳还快着。
但这次,底气比任何一轮面试结束时都要足。
他拿出手机,没有立刻发微信,而是先站了一会儿,看着电梯镜面里自己的脸。
然后打字,发给苏婉:第四面结束了。感觉……这次是真的有戏了。
片刻后,苏婉回了一个字:
然后是:红烧排骨今天换成你最爱的糖醋里脊,庆祝。
林晨笑了出来。
走出大堂,深圳湾的风带着咸湿的气息扑面而来,阳光有点灼热,却让人心里踏实。
一个新的开始,好像真的来了。
第127章 展示投资系统:物理成本的觉醒
会议室里弥漫着一种微妙的安静。刚才那位干练的hRbp李女士,在详细介绍了t厂AI平台事业部高级算法工程师岗位的薪酬结构后,便礼貌地退了出去,将空间留给了即将进行“项目展示”的两人。
阳光透过t厂总部大楼高耸的玻璃幕墙,在光洁的会议桌面上投下一片明亮的光斑。林晨坐在陈启明博士对面,能清晰地看到这位技术总监眼镜片后专注而深邃的目光。技术三面时那种思想交锋的紧绷感似乎还未完全散去,但此刻的氛围,更多了几分务实与审视。
“林晨,”陈博士开口,声音平稳,“薪酬架构和职级,hR那边会给一个正式的方案。技术层面,我们已经谈得比较深入。不过,我很好奇你自己捣鼓的那个‘副业’——你简历和面试中提到的那套量化投资系统。方便的话,能让我看看吗?”
来了。林晨深吸一口气,这是他预想过的环节,也是他主动在简历中埋下的钩子。他点点头,从随身携带的背包里取出自己的笔记本电脑——一台用了四年的thinkpad,边角有些磨损,但键盘依旧干净。
“陈博士,请稍等。”他连接上会议室的wi-Fi和投影仪,屏幕很快亮起,投影在对面洁白的墙面上。
他没有急于打开复杂的代码界面,而是先调出了一个简洁的web仪表盘。界面设计谈不上精美,但功能分区清晰:左侧是资产总览和实时盈亏曲线,中间是分市场(A股、基金、期货、期权、黄金、外汇)的持仓和信号监控,右侧则是系统资源监控和日志滚动区域。
“这是我用业余时间开发的‘晨星量化系统’1.0版本,”林晨开始介绍,语气尽量平稳,“核心是一个多因子融合的预测模型,结合了LStm时序预测和基于transformer的跨市场信息抽取。数据源接入了多个公开市场和部分付费ApI,风控模块采用了动态回撤控制和波动率自适应仓位管理……”
他一边说,一边操作,展示了几个典型交易日的信号生成、执行记录和回测报告。曲线总体呈稳健上升趋势,近三个月的年化收益率(基于模拟和部分实盘)显示在一个令人印象深刻的数字上。
然而,陈博士的目光并未在收益率数字上过多停留。他的视线,像精准的手术刀,直接划向了屏幕右侧那块不起眼的区域——系统资源监控。
“停一下,”陈博士抬了抬手,身体微微前倾,“林晨,你右下角这个监控面板,cpU平均占用率2.3%,内存占用1.8G,GpU(他看了一眼林晨的笔记本型号)…用的是集成显卡,负载几乎为零。网络Io也极低。这是实时运行状态?”
“是的,陈博士。”林晨心中一动,隐约感觉到了对方关注点的不同寻常。“这是系统在非交易时段(当前是下午两点半,A股已收盘)的后台数据预处理和模型微调状态。即使在交易时段,峰值cpU占用通常也不会超过8%,内存稳定在2.5G以内。”
“交易信号生成和执行的延迟是多少?从市场数据触发到指令发出。”陈博士追问,手指无意识地在桌面上轻敲。
“A股市场,平均端到端延迟在45毫秒左右,期货和外汇更快一些,可以做到20毫秒内。这包括了数据接收、特征工程、模型推理、风控检查和指令组装发送的全链路。”林晨流畅地回答,这些数据他烂熟于心。
陈博士沉默了几秒,目光在资源监控面板和那根平滑上升的收益曲线之间来回移动。会议室里只剩下空调低沉的送风声。
“有意思。”陈博士终于再次开口,嘴角似乎有一丝极淡的、难以察觉的弧度,“绝大多数人,包括我们内部很多做量化策略研究的同事,给我看类似系统时,第一个强调的,甚至唯一强调的,就是收益率曲线,夏普比率,最大回撤。他们会滔滔不绝地讲模型结构如何新颖,因子如何独特。”
他顿了顿,看向林晨:“但你刚才的介绍,至少有一半篇幅在解释数据流、资源调度和延迟优化。现在,我更感兴趣的是,你为什么把这么多精力,花在这些‘非核心’的、看起来是‘脏活累活’的工程优化上?以你展示的模型复杂度和处理的数据量,按常理推断,资源占用不该这么低。”
问题直指核心。林晨感到一阵熟悉的紧张,但更多的是一种被理解的触动。他合上笔记本电脑,双手交握放在桌上,姿态坦诚。
“陈博士,原因其实很简单,”他笑了笑,那笑容里有些许无奈,但更多的是坦然,“因为我‘穷’。”
“穷?”陈博士挑眉,显然对这个答案有些意外。
“不是哭穷,是客观陈述。”林晨解释道,“失业后,我的启动资金非常有限。最初租用云服务器跑回测和实盘,每一分钱的花销我都得精打细算。AwS的GpU实例太贵,我只能用最基础的cpU实例,甚至尝试过用树莓派集群。这就逼着我必须从底层去抠资源。”
“我重新设计了整个数据管道,用cython重写了最耗时的特征计算部分;模型推理上,做了大量的量化、剪枝和蒸馏,在几乎不损失预测精度的前提下,把模型体积压缩了70%以上;自己写了一个轻量级的任务调度器,避免框架自带调度器的开销;连日志系统都从JSoN换成了更紧凑的messagepack格式……”
林晨的语速不自觉地加快,那些深夜对着账单和监控图表绞尽脑汁优化的日子,仿佛又浮现眼前。“我那时候就在想,算力不是免费的,电也不是免费的。每一个浮点运算,每一次内存读写,背后都是实实在在的物理成本和金钱成本。如果我的系统效率低下,跑出来的收益可能还覆盖不了服务器电费。这不是算法优劣的问题,这是生存问题。”
他抬起头,看向陈博士:“所以,您之前在面试时提到的‘物理成本’观点,我感触特别深。对我来说,那不是高屋建瓴的理论,而是每天必须面对的现实。我可能没有能力去改变芯片制程或降低发电成本,但我至少可以让我写的代码,在给定的物理约束下,跑得更有效率一点,更‘便宜’一点。”
陈博士静静地听着,镜片后的眼神越来越亮。等林晨说完,他缓缓靠向椅背,长长地呼出一口气。
“生存压力倒逼出的极致优化……‘穷’出来的视野。”他低声重复着,然后摇了摇头,不是否定,而是带着一种深刻的赞赏,“林晨,你知道吗?在大厂待久了,尤其是资源相对充裕的核心部门,很多人会慢慢失去对‘物理成本’的敏感。我们习惯了动辄调用成千上万的GpU卡,习惯了为提升零点几个百分点的模型精度投入海量算力,却很少去问:这值得吗?有没有更经济的方式?效率的边界在哪里?”
“你的这段经历,你的这种被迫形成的‘成本敏感’和‘效率洁癖’,非常珍贵。”陈博士的语气变得郑重,“它让你跳出了单纯追求模型指标(如准确率、收益率)的思维定式,迫使你从系统全局、从资源约束的角度去思考问题。这恰恰是很多算法工程师缺乏的,也是从‘工程师’迈向‘架构师’的关键一步。”
“我们t厂AI平台事业部,有一个核心使命,就是打造高效、稳定、易用的AI基础设施,降低全公司乃至行业使用AI的门槛和成本。这里面,‘成本’二字,不仅是商业成本,更是物理成本、能源成本、环境成本。我们需要像你这样,对‘物理成本’有切肤之痛、有深刻敬畏,并且知道如何在代码层面去践行这种敬畏的人。”
陈博士的目光落在林晨那台略显陈旧的笔记本电脑上,仿佛看到了它背后无数个精打细算的夜晚和极致优化的代码。
“你的这个‘晨星系统’,收益率本身或许可以证明你的模型能力,但它的资源占用和运行效率,更能证明你的工程素养和系统思维。”他总结道,语气里带着明确的肯定,“这让我对你入职后,不仅仅是完成算法任务,更能参与到底层框架优化、资源调度策略甚至软硬件协同设计这类更具挑战性的工作中,充满了期待。”
林晨的心跳有些加速。他知道,这不仅仅是展示了一个项目,更是通过这个项目,让自己的技术理念和工程哲学,与t厂一个核心部门的技术追求,产生了深刻的共鸣。
“谢谢陈博士的认可。”林晨诚恳地说,“如果有机会加入,我非常希望能在这方面贡献自己的一点经验。”
陈博士点了点头,看了一眼手表:“今天的交流就到这里吧。后续hR会正式联系你。我个人很期待你的加入。”他站起身,主动向林晨伸出手。
两手相握,坚实有力。
走出t厂那座充满科技感的大楼,鹏城午后炽热的阳光扑面而来。林晨站在南山科技园熙攘的人流中,回头望了一眼那高耸的玻璃建筑,心中一片澄明。
这一次,他展示的不仅仅是代码和收益,更是一种从生存困境中淬炼出的、对技术本质的深刻理解。物理成本的觉醒,或许将成为他未来技术道路上,一盏始终不会熄灭的指路明灯。
而陈博士最后那句“期待你的加入”,几乎已是明示。接下来,就是等待那个正式的、承载着未来起点的电话了。他拿出手机,想给苏婉发条信息,却看到屏幕亮起,一个熟悉的鹏城本地号码正在呼入。
第128章 商业化讨论:能源即是呼吸
林晨站在t厂科技大厦楼下,午后的阳光穿透鹏城常见的薄雾,在玻璃幕墙上折射出有些晃眼的光斑。他手里握着的手机还有些发烫——刚刚那通电话,确实是hR打来的。
“林先生,恭喜。经过综合评估,我们正式向您发出录用通知。岗位是AI平台部-机器学习系统组Leader,职级对标t10,薪酬包是每月52K,16薪,另有签字费和股票授予细节会在书面offer中列明。您看什么时候方便,我们安排后续的签约沟通?”
声音礼貌、专业,带着大厂hR特有的那种平稳语速。林晨当时听着,心里那根绷了许久的弦,终于“嗡”地一声,缓缓松弛下来,取而代之的是一种近乎虚脱的踏实感。他给出了肯定的答复,约了第二天详细沟通的时间。
挂掉电话后,他并没有立刻离开。陈博士在刚才演示结束时拍了拍他的肩膀说:“一会儿别急着走,楼下咖啡厅坐坐,随便聊聊。” 那语气不像面试官,倒像是个想继续某个有趣话题的朋友。
此刻,林晨推开咖啡厅厚重的玻璃门,冷气混合着咖啡豆的醇香扑面而来。陈博士已经坐在靠窗的一个半开放式卡座里,面前摆着一杯清水,正低头用平板电脑看着什么。看到林晨,他抬手示意了一下。
“陈博士。” 林晨走过去坐下。
“offer接到了?” 陈博士放下平板,直接问道,脸上带着了然的笑意。
“刚接到电话。” 林晨点点头,也没掩饰,“谢谢陈博士。”
“谢我干什么,是你自己挣来的。” 陈博士摆摆手,身体向后靠了靠,姿态比在会议室里松弛了许多,“尤其是你那个‘晨星系统’,给我印象很深。不是因为它多能赚钱——虽然那部分也很惊艳——而是它那种‘穷’出来的极致效率。这在我们这里,是稀缺品质。”
服务员过来,林晨点了杯美式。等待的间隙,陈博士话锋一转:“刚才演示,你提到了系统的运行成本极低,甚至可以部署在树莓派上。有没有想过,如果把这个系统,或者说这种对资源极度敏感的设计思路,放到一个更大、更复杂的商业化场景里?比如……我们t厂自己的某些AI服务平台?”
林晨精神一振。这已经超越了面试范畴,进入了真正的工作探讨。他谨慎地思考了几秒,回答道:“想过一些。核心思路是分层和动态调度。对于推理服务,可以根据请求的实时负载和模型复杂度,动态分配算力,甚至在不同精度(比如混合精度或更低比特量化)的模型版本间切换,用精度换速度和能耗。对于训练任务,则更需要从数据流水线、梯度同步策略、 checkpoint策略这些底层进行能耗优化。不过……” 他顿了顿,“这些都只是软件和算法层面的优化。真正的瓶颈,我觉得可能不在这里。”
“哦?” 陈博士身体微微前倾,露出了感兴趣的神色,“瓶颈在哪里?”
林晨的美式这时送了上来。他抿了一口,苦涩的液体让他思路更清晰了些。“在我自己折腾系统的这段时间,最大的感受是,无论算法怎么优化,模型怎么压缩,最终都要落到实实在在的硬件上跑。硬件要耗电,产生热量,需要散热。我那个小打小闹的系统,电费可以忽略不计。但如果规模放大一万倍,一百万倍呢?”
陈博士没有说话,只是看着他,示意他继续。
林晨深吸一口气,说出了那个在他心里盘旋已久,却从未与人深谈过的想法:“算法的天花板,可能不再是数学或者架构,而是……我们能为这些芯片提供多少、多便宜的电力。算力本质上是能量的一种转化形式。如果能源的成本和供给存在硬约束,那么AI的规模化、普惠化,就会遇到物理意义上的天花板。”
咖啡厅里流淌着轻柔的音乐,邻座有低低的交谈声。但林晨说完这段话,感觉周围似乎安静了一瞬。他看到陈博士的眼神变了,那里面不再是单纯的欣赏或考察,而是多了一种找到同类的、深邃的亮光。
陈博士沉默了片刻,拿起水杯喝了一口,然后缓缓开口,声音不大,却每个字都带着重量:“你知道,我们t厂在华北、华东、华南几个核心节点,自建和租用的数据中心总规模吗?”
林晨摇头。这是商业机密范畴了。
“具体数字我不能说。”陈博士用手指轻轻敲了敲桌面,“但我可以告诉你一个公开报道里能找到的、某一年份的估算数据:光是电费,就相当于一个中等偏上规模的县,全县一年的居民生活用电总量。这还只是电费,不包括服务器折旧、网络带宽、冷却系统、土地和建筑成本。”
一个县一年的居民用电总量?林晨即便有心理准备,也被这个类比背后代表的庞大能量消耗震了一下。他脑子里迅速换算着,那该是多少个零的电费账单?而这仅仅是t厂一家,全球还有多少科技巨头,多少正在疯狂扩张的AI公司?
“所以,你刚才说的,不是可能,是正在发生的事实。”陈博士的语气很平静,像是在陈述一个物理定律,“大模型训练一次,耗电量相当于几百个家庭一年的用电。每一次你手机上的语音助手回答你一个问题,每一次你看到的信息流推荐,背后都有实实在在的能量在燃烧。我们内部在做技术规划、成本核算时,‘能源成本’已经是一个和‘算法效率’、‘人力成本’并列,甚至优先级更高的核心指标。”
林晨感到喉咙有些发干。他之前那种“发现了一个重要角度”的隐约兴奋,此刻被一种更沉重、更宏大的现实感取代了。他意识到,自己无意中触碰到的,是这个行业最底层的、最硬的约束条件之一。
“这就是为什么,我那么看重你提到的‘物理成本’意识。”陈博士继续道,“在实验室里,在论文里,我们可以只关心准确率提升了几个点。但在真实的商业世界里,尤其是在我们这种规模的应用里,每一个百分点的能效提升,背后都是千万级、亿级成本的真金白银。你的那个系统,是在生存压力下,被迫将这种意识刻进了代码的每一行。这种本能,比任何纸上谈兵的理论都珍贵。”
林晨下意识地从随身背包里掏出了那个陪伴他度过无数自学夜晚的旧笔记本,翻到空白页,拿起笔。他需要记下此刻翻涌的思绪。
笔尖悬在纸上,他抬头看向陈博士:“所以,AI的未来,或者说下一代真正突破的方向,可能不完全是算法革新,而是……找到更高效的能量利用方式,甚至,找到全新的、更廉价的巨量能源来源?”
陈博士看着他记录的动作,赞许地点点头:“你可以这么理解。从微观的芯片设计(比如存算一体、类脑芯片),到宏观的数据中心选址(靠近水电站、风电基地),再到更长远的未来能源技术布局……这已经是一个横跨半导体、电力、基建、甚至基础科学的超级赛道。谁能在‘能量-算力’的转化效率上取得突破,谁就可能在下一个时代掌握主动权。”
林晨在笔记本上快速写下几行字: 【AI终极天花板?不是算法,是人类能提供的廉价能源总量。】 【算力 = 能量的特殊形式。】 【如果能源成本不降,AI永远无法真正普惠。】 【问题:能源供给的物理约束如何突破?】
写到最后一句,他停住了。这个问题太大了,大到他目前的知识框架完全无法容纳。这不再是调参优化,也不是设计个分布式训练框架,这涉及到人类文明最底层的能量获取方式。
“感到无力了?”陈博士似乎看出了他的思绪,笑了笑,“正常。我第一次系统地算完数据中心能耗总账时,也失眠了好几天。觉得自己在做的这一切,就像是在一个注定会漏水的池子里拼命舀水。但后来想通了,认识到问题所在,本身就是第一步。至少,我们知道了该朝哪个方向努力。”
他顿了顿,看着窗外科技园里穿梭的车辆和行人,意味深长地说:“而且,这个世界上,意识到这个问题,并已经开始行动的人,远比你想象的多。有些布局,可能已经默默进行了很多年。只是它们不在聚光灯下,不在普通工程师的日常视野里。”
林晨合上笔记本,将笔插回口袋。咖啡已经凉了,但他觉得头脑从未如此清醒和灼热。一次本以为只是技术展示和理念交流的面试,竟然将他引向了对整个行业乃至文明发展底层逻辑的思考。这种认知层次的跃迁,比拿到一份高薪offer更让他心潮澎湃。
“我明白了,陈博士。”林晨郑重地说,“谢谢您告诉我这些。这比任何技术指导都重要。”
陈博士站起身,拍了拍他的肩膀:“欢迎加入。接下来,我们先从把现有框架的能效提升5%做起。路要一步一步走。但心里得有那张更大的地图。” 他看了一眼林晨手里的笔记本,“保持这个习惯。有些种子,现在种下,也许很多年以后才会发芽。”
离开咖啡厅,重新走进鹏城午后有些潮湿的空气里,林晨感觉脚下的土地似乎都有些不同了。高楼大厦依旧,车流人海如常,但在他眼中,这座以科技和创新闻名的城市,其地下奔涌的电缆中流淌的电能,其天空飘过的云朵背后可能蕴含的风能、太阳能,忽然都具有了全新的、关乎未来的沉重意义。
能源即是呼吸。没有足够廉价而充沛的“呼吸”,再强大的智能“大脑”,也终将窒息。
他拿出手机,给苏婉发了条信息:“面试彻底结束,通过了。晚上回家细说。另外,我好像……看到了一个更本质的问题。”
苏婉很快回复:“太好了!等你回家。不管什么问题,一起面对。”
林晨收起手机,抬头望向南山的方向。家的轮廓在远处楼宇间隐约可见。他心中那份因为找到工作而生的安定感,此刻混合了一种更强烈的、想要去探索和挑战那个“本质问题”的冲动。他知道自己刚刚叩开了一扇门,门后的世界深邃而壮阔,充满了未知的挑战,也闪烁着前所未有的可能性。
而这一切,都始于那个被迫审视每一分钱电费的、失业的深夜。
第129章 HR再面:价值的重新定义
t厂总部的hR面,被安排在次日下午两点。
林晨提前半小时抵达科技园。
站在那栋熟悉的玻璃幕墙大厦下,他仰头看了一眼。阳光在建筑表面折射出冷冽的光泽,像一层理性的外壳,把一切情绪都隔绝在外。
和昨天与陈博士那种松弛、深入本质的交流不同,这里,是规则的世界。
是“价值被定价”的地方。
但这一次,他没有了以往那种紧绷感。
因为关键的数字,其实在昨天的电话沟通里,已经初步确认。
——t10,52K * 16。
这场hR面,与其说是谈判,不如说是一次正式的落地确认。
登记、拿卡、进入会议室。
流程依旧。
但他的心态已经完全不同。
两点整,门被推开。
“林先生你好,我是hRbp张薇,负责你后续的录用流程。”
标准、利落、职业。
“张老师好。”
简单寒暄后,双方落座。
张薇打开ipad,没有过多铺垫,直接进入正题:
“首先恭喜你通过所有技术面试,陈博士这边对你的评价非常高。昨天你们之间也已经有过初步沟通,对吗?”
“是的,有过比较深入的沟通。”
张薇点了点头,语气比常规流程更直接了一些:
“那我们今天主要是把一些关键条件确认清楚,包括职级、薪酬结构和入职时间。”
她停顿了一下,看向林晨:
“关于职级,我们这边拟定的是——t10。”
林晨点头。
没有惊讶,也没有刻意表现。
像是在确认一件早已心中有数的事情。
张薇继续说道:
“薪资方面,按照目前的评估结果,给到的是——52K月薪,16薪结构。”
她说这句话的时候,目光在观察林晨的反应。
这是hR的本能。
但她看到的,是一种极其平稳的接受。
没有压价时的紧绷,也没有高价时的惊喜。
更像是一种——
“这个数字,是合理的。”
林晨开口:
“这个方案,和我昨天和陈博士沟通的预期是一致的。”
一句话,把“谈判空间”直接收束。
这不是报价。
这是确认。
张薇微微一笑,语气明显放松了下来。
“那很好,这样我们双方的认知是对齐的。”
她在ipad上快速记录:
t10 52K * 16 标准期权包(待审批)
“期权部分,会根据职级和内部评估来分配,整体会匹配t10的中上水平。具体数字会在正式offer中体现。”
流程继续推进。
但气氛已经完全不同。
不再是试探与博弈。
而是效率极高的“确认会”。
就在这时,张薇的手机亮了一下。
她下意识看了一眼。
然后,神情出现了一瞬间极细微的变化。
不是惊讶。
更像是——再次确认。
她很快收起手机,重新看向林晨。
语气比刚才多了一层确定性。
“陈博士刚刚也同步了一下意见。”
她轻描淡写地补了一句:
“他说,你的能力模型,不是标准的算法工程师,更接近‘问题定义者’。”
她顿了顿,微微一笑:
“这个评价,在我们内部,其实是很高的。”
林晨没有说话。
但他心里很清楚这句话的分量。
“问题定义者”。
这意味着——
不是执行者。
而是制定规则的人。
张薇继续说道:
“所以在薪资和职级上,我们会按照这个定位来匹配。”
这句话,本质上是:正式背书已经完成。
后续流程推进得很快。
入职时间:可协商 背调流程:标准进行 offer审批:3-5个工作日
一切都在轨道上。
会议结束。
张薇站起身,伸出手:
“林先生,欢迎加入t厂。”
这一次,没有试探,没有保留。
只有明确的接纳。
走出会议室。
林晨站在走廊尽头,看着窗外的科技园。
阳光依旧明亮。
但他的感受,已经完全不同。
52K * 16。
这个数字本身,并不是最重要的。
重要的是——
这是一个对他“思维方式”的定价。
几个月前,他还在为“120万年薪是否合理”而反复碰壁。
而现在。
他不再用“经验”去换薪资。
而是用—— 认知维度
电梯缓缓下行。
金属门上映出他的影子。
比之前,更稳。
走出大厦。
阳光落在脸上,有些温热。
他拿出手机,点开和苏婉的聊天框。
停顿了一下。
还是没有发。
等正式offer吧。
这一次,他不急。
他沿着科技园的路慢慢往前走。
步伐从容。
不远处,咖啡店的香气飘出来。
他忽然笑了一下。
走了进去。
这一次,不是为了提神。
而是为了确认一件事:
他已经真正进入牌桌了。
第130章 焦急等待:黎明前的寂静
第七天。
林晨坐在书桌前,右手食指几乎形成了肌肉记忆——按下F5,浏览器刷新,邮箱页面重新加载。收件箱(0)。他瞥了一眼屏幕右下角的时间:下午三点十七分。距离hR张薇说的“3-5个工作日”已经过去整整七个自然日,五个工作日。
焦虑像藤蔓一样从胃部生长出来,缠绕着胸腔。
他强迫自己移开视线,点开浏览器另一个标签页:脉脉。这个职场社交软件最近成了他的“焦虑放大器”。搜索框输入“t厂”、“hc冻结”、“裁员”,敲下回车。
几条匿名帖子跳了出来:
【匿名】:“听说了吗?t厂AIGc部门可能优化,新财年预算收紧。”
【匿名】:“有朋友在t厂做hR,说最近offer审批流程变慢,特别是高级别岗位。”
【匿名】:“寒冬来了,大厂也在收缩。建议手头有offer的早点接,别等。”
林晨的心往下沉了沉。他关掉页面,深吸一口气,试图用理性分析安抚自己:面试流程都走完了,陈博士亲自发了支持消息,hR也承诺全力申请,应该只是流程问题。大公司的审批,尤其是需要“特批”的薪资包,走个一两周也正常。
道理都懂,但情绪不听道理。
这七天,他努力维持日常节奏:早上七点起床,陪乐乐吃早餐,送他去幼儿园;上午继续优化他的量化投资系统,增加了一个基于舆情分析的短期情绪因子模块;下午看论文,最近在啃一篇关于transformer模型稀疏化训练的顶会文章;晚上陪苏婉散步,在小区里绕圈,聊些家常。
但每隔一两个小时,那股想要查看邮箱的冲动就会涌上来,像轻微的毒瘾发作。手机稍有震动,心脏就跟着一紧,拿起来却发现只是新闻推送或微信群消息。
等待,尤其是这种可能决定未来数年甚至更久人生轨迹的等待,是一种缓慢的凌迟。希望和恐惧像两个角力的武士,在他脑子里日夜厮杀。
桌上的手机屏幕忽然亮起,不是邮件通知,是微信。
林晨几乎是扑过去抓起手机。是内推人,那位在t厂工作的前同事的朋友。
“林哥,刚跟hRbp那边侧面打听了一下。”消息言简意赅。
林晨手指有点发僵,打字:“怎么说?”
“流程还在走,没黄。但确实比普通offer慢点,因为你的薪资包需要往上特批,涉及好几个领导签字。张薇(就是面试你的hRbp)最近也在催。”
“好的,谢谢!太感谢了!”林晨连忙回复,心里稍微踏实了一点,但“需要往上特批”这几个字又让他悬了起来。特批,意味着不确定性。
“别客气。另外,听我朋友说(他跟你面试官陈博士一个组的),陈博士对你评价很高。原话是:‘这人脑子里装的不是代码,是物理定律和成本模型,稀缺。’所以,放心,技术这边你是稳稳的。现在就是走行政和薪酬流程。”
物理定律和成本模型。林晨想起面试时和陈博士那场关于“AI的物理成本”的头脑风暴,那种棋逢对手、思维碰撞的快感再次掠过心头。陈博士的认可,是这漫长等待中最坚实的定心丸。
“明白了,真的很感谢你一直帮忙关注。”林晨真诚地道谢。职场寒冬里,这种不带功利目的的帮助显得格外珍贵。
“没事,等你进来了,说不定以后还要跟你学习呢。对了,陈博士最近在忙一个挺重要的预研项目,可能跟你未来方向有关。耐心等,好事多磨。”
预研项目?林晨心里一动,但没多问。他知道分寸。
结束对话,林晨靠在椅背上,长长地呼出一口气。窗外的天色渐渐暗了下来,深圳的黄昏来得很快,远方的楼宇开始次第亮起灯火,像一片倒悬的星河。
他站起身,走到阳台。晚风带着一丝海腥味和城市特有的喧嚣气息拂面而来。楼下花园里,遛狗的老人、下班归来的情侣、追逐打闹的孩子,构成一幅平凡而充满生命力的市井图景。
就在几个月前,他也是那匆匆归家人群中的一员,心怀焦虑,前路迷茫。失业像一场突如其来的地震,把他经营十年的生活震得七零八落。然后是被web3公司以“薪资期望过高”拒绝的挫败,是闭门苦学AI的孤独,是深夜面对代码和金融数据的枯燥坚持。
不知不觉,他已经走了这么远。
从被动接受命运的裁员重击,到主动啃下AI和量化这块硬骨头;从在web3面试中执着于那个或许有些脱离现实的120万年薪执念,到在t厂面试中凭借扎实的思考和独特的视角赢得尊重;从仅仅为了谋生而求职,到开始隐约看到某个巨大浪潮的轮廓,并试图站上潮头。
陈博士说的“物理成本”,不仅仅是指GpU的耗电和散热。那是一种思维范式,是将技术的狂想拉回现实大地,用工程化的尺子去丈量每一个智能跃迁需要付出的真实代价。这种思维,或许正是当下AI从实验室炫技走向产业深耕所急需的。
他开发的量化系统,本质上也是一种“成本”与“收益”的模型,只不过衡量的对象是市场情绪、资金流向和风险概率。代码不会骗人,数据不会骗人,逻辑链必须严密。这和AI模型训练中追求泛化能力、防止过拟合的底层逻辑,何其相似。
林晨忽然意识到,自己过去几个月的痛苦转型,看似是被逼无奈下的左冲右突,实则不知不觉中,他的技能树和认知框架正在发生一种奇特的“融合”。传统软件工程的经验、新习得的AI算法能力、从零构建金融系统的实战,还有那份被生活磨砺出来的、对“成本”和“生存”的极致敏感——这些看似不相关的点,正在连成线,或许未来还能构成面。
他缺少的,正是一个像t厂这样的平台,一个能让他将这套融合后的“方法论”在更大尺度上验证、施展的舞台。那里有海量的数据、顶尖的同行、真实复杂的业务场景,以及像陈博士这样能够理解甚至激赏他思考维度的导师。
等待依然煎熬,但焦虑的底色悄悄发生了变化。不再仅仅是害怕失去一个“好工作”的恐慌,多了几分对即将踏入某个广阔战场的期待,以及一丝能否真正承载这份期待的自我审视。
手机又震了一下。林晨拿起来,是苏婉发来的消息:“晚上想吃什么?乐乐说想吃你做的红烧排骨。”
平凡至极的问候,却像一双温暖的手,将他从那些关于时代、浪潮、方法论的高远思绪中轻轻拉回地面。无论未来的舞台多么广阔,他首先是一个丈夫,一个父亲,一个需要为家人提供安稳生活的男人。t厂的offer,意味着更稳定的高收入,意味着乐乐可以上更好的学校,意味着苏婉不用再为房贷和开销暗自焦虑,意味着他有更多底气去支持老家的兄弟和侄儿。
“好,我回来时买排骨。”他回复道,嘴角不自觉地扬起。
夜色彻底笼罩了深圳湾,对岸香港的灯火也清晰起来。这座城市永远不缺梦想和等待的故事。无数个像他一样的“林晨”,在各自的格子间、出租屋、咖啡馆里,为了一份offer、一个项目、一次突破而焦灼、期盼、奋斗。
他的等待,只是这庞大交响曲中一个微不足道的音符。
但对他个人而言,这寂静的、充满不确定性的等待期,或许正是黎明前最黑暗也最接近光亮的时刻。他仿佛站在一扇厚重的大门前,已经听到了门后那个轰轰烈烈的新时代传来的隐约轰鸣。钥匙,可能就在下一封邮件里。
他回到书桌前,没有再刷新邮箱。而是打开了代码编辑器,调出量化系统的风险控制模块。既然等待无法避免,那就用具体的工作来填充时间。他决定重新校准几个风控阈值,基于最近一周的市场波动数据。
代码可以骗人,但逻辑不会。而人,更不能在等待中荒废了自己。
就在他沉浸入代码世界不久,手机屏幕再次亮起。这次,是邮箱客户端的推送通知。
发件人:张薇 (hRbp, t technology) 主题:关于您的职位申请后续事宜…
林晨的心脏,猛地停跳了一拍。
第131章 意外的插曲
他盯着屏幕看了半秒,才伸手解锁。
点开邮箱。
那一瞬间,他甚至能清晰地听见自己指尖触碰屏幕的声音。
邮件正文很正式,大意是:经过多轮面试评估,决定向林晨先生发放录用通知书(offer),岗位为AI平台部-高级算法工程师(Leader)。目前offer正在走最后的薪酬审批和系统生成流程,预计需要3-5个工作日。请耐心等待,正式offer文件生成后将第一时间发送至本邮箱。
“成了。”林晨吐出两个字,声音不大,却仿佛卸下了肩上的一部分重量。不是狂喜,而是一种“果然如此”的踏实感。内推人的消息和陈博士的评价,已经提前铺垫了这种预期。
他仔细又读了一遍邮件,重点落在“Leader”和“流程中”两个词上。职位定了,但正式文件没到手,薪资具体数字也还是个谜。按照面试时的沟通和行业惯例,52K的月基本工资应该没问题,年终奖月数(通常是16薪起)和签字费、股票等细节,就看这最后的审批了。
他截了个图,发给了苏婉。几乎同时,苏婉的电话就打了过来。
“老公!邮件我看到了!”苏婉的声音里满是欣喜,“流程中……那就是确定要你了,对吧?”
“嗯,基本定了。就等最后那纸文件了。”林晨走到阳台,鹏城初夏午后的阳光有些晃眼,楼下花园里几个老人在散步,一切看起来平静如常,但他知道,自己生活的轨道即将迎来一次关键的切换。
“太好了!我就知道你可以!”苏婉顿了顿,语气里透出关切,“那……大概还要等几天?这期间我们该做什么?”
“hR说3到5个工作日。我们正常生活就行,该干嘛干嘛。”林晨笑了笑,“不过,心态可以放松点了。至少,最不确定的阶段过去了。”
又聊了几句家常,苏婉叮嘱他注意休息,便挂了电话去准备下午的课。林晨回到书桌前,看着电脑屏幕上还在静静运行的量化系统监控界面。过去一周,系统在A股和商品期货上做了几笔小仓位试探,总体微盈,算是在复杂市况下稳住了阵脚。账户总资产缓慢爬升到了接近22万。这点收益远不能解决根本问题,但像是一针稳定剂,证明他这条路没有走偏,技术逻辑是成立的。
他刚打算继续优化一下系统的信号过滤模块,邮箱又“叮”了一声。
又是一封新邮件。
发件人显示是“智跃科技(ZhiYue AI)”,一家他大概两周前投递过简历的AI创业公司。当时海投策略,这家公司规模不大,号称专注“具身智能”与“边缘计算AI芯片算法优化”,方向听起来挺前沿,但林晨对其了解不深,面试感觉也一般,之后就没再关注。
邮件标题很直接:“录用通知书 - 林晨先生”。
林晨愣了一下,点开。
智跃科技的offer倒是来得干脆利落。职位是“高级算法工程师”,月薪30,000元,14薪,另有不确定的季度项目奖金。五险一金按实际工资缴纳。要求一周内答复是否接受,接受则需在两周内入职。
30K,14薪。算下来年包税前42万,加上可能的奖金,或许能摸到50万边。这比他之前面试那些web3公司给的薪资都要高一些,远远低于t厂可能给的52K月薪对应的年包(如果按16薪算是83.2万,但t厂通常有股票,总包会更高)。对于一家创业公司来说,这个开价不算低,甚至可以说很有诚意。
林晨靠在椅背上,手指无意识地敲着桌面。
意外。确实是个意外的插曲。
如果是在一个月前,甚至是在收到t厂面试通过消息之前,这样一份offer足以让他认真考虑,甚至可能欣然接受。毕竟,这能迅速结束失业状态,带来稳定的现金流,缓解家庭的经济压力和心理焦虑。30K的月薪,在鹏城除了顶尖大厂和少数风口公司,对大部分技术人来说已经是不错的水平。
但现在,情况不同了。
他面前摆着t厂的录用流程,那是一个更广阔的平台,更稳定的前景(相对而言),更高的职业天花板,以及很可能更优厚的总薪酬包。更重要的是,那里有陈博士,有他感兴趣的方向,有能将他的“融合方法论”付诸实践并可能产生更大影响的舞台。
然而,t厂的正式offer还没到手,hR只说“流程中”,需要3-5天。智跃科技的offer却要求一周内答复。
这就形成了一个微妙的时间差和选择困境。
接受智跃的offer?意味着放弃等待t厂,也放弃了一个可能更好的机会。而且创业公司风险未知,所谓的“具身智能”和“边缘计算”到底是真前沿还是炒概念,需要打问号。万一进去后发现技术栈不匹配、业务方向摇摆,或者资金链出问题,那又是一番折腾。
拒绝智跃的offer,继续等t厂?万一t厂流程出现意外(虽然概率小,但并非为零),或者最终的薪资待遇远低于预期,那他将面临两头落空的窘境。时间再拖下去,求职的黄金窗口可能关闭,家庭储蓄的消耗压力也会越来越大。
理性分析,等待t厂显然是预期收益更高的选择,但也伴随着更高的不确定性和机会成本。接受智跃则是更稳妥、即时变现的选择,但可能牺牲长远发展。
林晨打开一个空白文档,习惯性地开始列利弊分析表。左边是智跃科技,右边是t厂。薪资、平台、技术方向、团队、发展空间、稳定性、风险……一项项填进去。数字和文字在屏幕上排列,但最终决策似乎不能完全依赖这些冷冰冰的条目。
他想起面试t厂时,陈博士那双锐利又带着探究的眼睛,想起自己阐述“物理成本”观时内心的笃定。那种技术思想上的共鸣和期待,是智跃科技的offer里无法提供的。
他又想起苏婉每次算家庭账本时微蹙的眉头,想起乐乐说起同学爸爸又买了新乐高时那羡慕的眼神。现实的引力无处不在。
纠结。这种两难的选择,比单纯没有offer时的焦虑,似乎更磨人。它考验的不仅是判断力,还有耐心、定力,以及对自身价值和未来道路的信念。
林晨关掉文档,没有立刻做出决定。他给智跃科技的hR回了一封邮件,措辞礼貌而谨慎。大意是:非常感谢贵司的认可和提供的offer,我对这个机会非常重视。由于我个人近期同时在进行其他重要的职业评估,需要一点时间进行综合考量。恳请能否将答复截止日期适当延长几天?我会尽快给出明确答复。
他需要争取时间。一方面,等t厂的正式offer落地,进行最终对比。另一方面,他也想再深入了解一下智跃科技这家公司,看看是否有他忽略的价值。
发完邮件,他站起身,走到客厅倒了杯水。窗外,天色渐晚,城市的灯火次第亮起。鹏城的夜晚总是来得很快,忙碌和选择充斥在每个角落。
他拿起手机,看到苏婉发来的微信:“晚上想吃什么?庆祝一下,我们出去吃?”
林晨想了想,回复:“在家吃吧,简单点。事情……还有点小变化,晚上跟你细说。”
他需要和妻子好好商量一下。这不是他一个人的选择,而是关乎整个家庭未来的决定。苏婉的智慧和她的支持,一直是他最重要的依靠之一。
等待t厂最终结果的这几天,看来不会平静了。这个意外的插曲,像是一道突然出现的岔路,虽然大概率不会改变主航向,却足以让人心跳加速,反复审视手中的地图和内心的罗盘。
林晨喝掉杯中的水,冰凉的感觉顺着喉咙下去,让思绪清晰了一些。无论如何,有选择总比没选择好。而如何做出最优选择,正是他过去几个月不断学习、提升自己所要达成的目的。
他回到电脑前,再次打开了量化系统的代码。在等待和抉择的间隙,专注于具体的技术问题,能让他感到一种脚踏实地的安定感。系统的一个子模块关于波动率预测的算法还可以优化,他调出了相关数据和论文,沉浸进去。
时间在代码和文献中悄然流逝。直到晚上七点,苏婉带着乐乐回到家,屋里重新充满烟火气和孩子的笑声,林晨才从技术世界中暂时抽离。
饭桌上,三菜一汤,简单温馨。林晨看着妻儿,将今天收到两份“准offer”的情况,以及自己的分析和顾虑,原原本本地说了出来。
苏婉听完,没有立刻说话,给乐乐夹了块排骨,然后看向林晨,眼神平静而坚定:“老公,我相信你的判断。如果从长远看,t厂明显更好,那我们就不怕多等这几天。家里钱还够用,我的工资也稳定,压力没那么大。智跃那边……如果能拖就拖一下,实在不行,拒绝了也没什么可惜。你的技术,值得更好的平台。”
妻子的话,像一颗定心丸。林晨心中最后一丝因“可能错过安稳”而产生的动摇,也消散了。
“好。”他点点头,“那我就等t厂。智跃那边,我再尽量周旋一下。”
“爸爸,你要去很大的公司上班了吗?”乐乐眨着大眼睛问。
“嗯,爸爸在努力。”林晨摸了摸儿子的头,“等定下来了,带你去公司楼下看看。”
“好耶!”乐乐开心地挥了挥筷子。
夜深人静,乐乐睡了,苏婉在备课。林晨独自坐在书房,电脑屏幕的光映着他的脸。他再次检查了邮箱,智跃的hR尚未回复他请求延期的邮件。t厂那边也毫无动静。
他点开一个隐秘的文件夹,里面是他整理的关于t厂AI平台部近两年公开的技术论文、产品博客和一些行业分析报告。既然决定要等,就要做好最充分的准备。他不仅是在等待一纸offer,更是在为即将到来的新角色、新挑战做预习。
窗外,鹏城的夜空难得能看到几颗星星。林晨知道,最黑暗的等待阶段或许已经过去,但黎明前往往还有一段需要小心跋涉的路程。他关掉电脑,揉了揉发酸的眼睛。
明天,又是新的一天。他需要主动做点什么,不能只是被动等待。或许,可以试着通过内推人,再委婉地探听一下t厂那边的审批进度?
这个念头在他脑中闪过。在尊重流程和争取主动之间,需要把握好分寸。
他躺到床上,闭上眼。脑子里却像有两个小人在辩论,一个说“稳妥起见”,一个说“值得一赌”。最终,那个更相信技术、更相信长期价值、也更相信自己的小人,占据了上风。
“赌一把。”他在黑暗中无声地说。就赌t厂不会让他失望,赌自己这几个月破釜沉舟学来的东西,值那个更大的舞台。
做出这个内心决定后,反而轻松了不少。焦虑渐渐退去,取而代之的是一种清晰的、向前看的笃定。
他翻了个身,渐渐沉入睡眠。明天,他要开始行动了。
第132章 两难选择
窗外的晨光透过百叶窗,在书桌上投下斑驳的光影。林晨睁开眼的第一件事,不是起床,而是伸手摸向枕边的手机——屏幕亮起,没有未接来电,没有新邮件提醒。
距离t厂发送邮件流程已经过去四天。
距离智跃科技给出的答复期限,还剩三天。
他坐起身,靠在床头,深吸一口气。这种等待的滋味,比当初失业时更煎熬——失业是已知的绝望,等待却是未知的悬空。厨房传来煎蛋的“滋滋”声,苏婉已经起床做早饭了。乐乐还在睡,周末的早晨总是格外安静。
林晨打开笔记本电脑,登录自己的量化交易系统后台。界面简洁,几个关键指标在实时跳动:总资产223,278元,较初始资金20万元,累计盈利23,278元,收益率约11.64%,夏普比率1.2,最大回撤3.1%。
“还不错。”他低声自语。系统基于LStm(长短期记忆网络)构建的A股短线预测模型,在过去十个交易日里,成功捕捉到了三次小幅波动,虽然单次收益不高,但胜率达到了70%。更重要的是,这套系统的风控模块运行稳定,几次假信号都被及时止损。
这给了他一些底气——如果最坏的情况发生,t厂没通过,智跃科技的机会也错过,至少这套系统能带来每月几千块的额外收入。虽然远不足以覆盖房贷和家庭开销,但至少是个退路。
“吃饭了。”苏婉端着餐盘走进卧室,放在书桌一角。煎蛋、烤吐司、牛奶,简单却用心。她看了眼电脑屏幕上的曲线,轻声问:“又赚了?”
“昨晚的黄金期货策略抓到了一波小行情,赚了八百多。”林晨接过牛奶喝了一口,“不过这种收益不稳定,不能指望它养家。”
苏婉在他对面坐下,沉默了几秒:“智跃科技那边……你打算怎么回复?”
林晨放下杯子:“昨晚我给他们的hR发了邮件,问能不能延长答复期限到两周,理由是‘需要处理一些个人事务’。刚才起床前看了,还没回。”
“如果对方不同意呢?”
“那就只能二选一。”林晨看向窗外,深圳湾的方向隐约可见几栋高楼,“智跃科技的offer,月薪30K,14薪,总包42万。做的是具身智能和边缘计算芯片算法优化,技术方向很前沿,团队背景也不错,创始人是前大厂AI Lab负责人。”
“听起来很好啊。”苏婉说。
“是很好,但有两个问题。”林晨掰着手指,“第一,创业公司不稳定。融资情况、业务方向、甚至团队能撑多久,都是变数。第二,薪资天花板。就算我进去后表现突出,一两年内也很难突破50万。而t厂……”他顿了顿,“如果能拿到t10的Leader岗位,基础薪资可能就有52K以上,加上股票和年终奖,总包很可能超过100万。更重要的是平台——t厂的AI部门,是国内最顶尖的练兵场。”
苏婉听懂了:“所以你想等t厂。”
“但风险在于,”林晨苦笑,“t厂的offer还没落地。如果我现在拒绝了智跃科技,一周后t厂告诉我‘很遗憾’,那我就彻底两头空了。35岁,再次失业六个月,再想找同等薪资的工作……难。”
房间里安静下来。楼下传来早锻炼老人的收音机声,咿咿呀呀的粤剧唱腔飘上来。
“你心里其实已经有答案了,对吧?”苏婉忽然说。
林晨看向她。
“你刚才分析的时候,提到智跃科技用的是‘很好’,提到t厂时眼睛在发光。”苏婉笑了笑,“我不是技术专家,但我知道我老公——你从来不是那种只求安稳的人。当初你从跨境电商转行学AI,不也是赌了一把吗?”
“那次赌赢了,是因为我花了半年时间闭关学习。”林晨说,“但这次……时间不等人。”
“那就再赌一次。”苏婉握住他的手,“最坏的结果,无非是再失业几个月。家里存款还能撑,你的系统也在赚钱。我相信你的技术,值得更好的平台。”
林晨感觉喉咙有些发堵。他反握住妻子的手,那双手因为常年批改作业而有些粗糙,却异常温暖。
手机震动了一下。
两人同时看去——是邮件提醒。发件人:智跃科技hR。
林晨点开邮件,快速扫过内容,脸色微沉。
“怎么了?”苏婉问。
“对方回复了。”林晨把手机递给她,“说公司岗位紧急,最多只能延长三天,也就是总共十天时间。今天是第四天,所以……最晚下周二要给答复。”
苏婉看完邮件,眉头也皱起来:“下周二……t厂那边来得及吗?”
“正常流程是3-5个工作日,今天是第四天,按理说最晚下周一应该有结果。”林晨计算着,“但hR说的是‘通常情况’,万一审批卡在哪一环,拖到下周中甚至周末都有可能。”
“那你这几天要不要……主动问问?”苏婉试探道,“你不是有那个内推人张伟的联系方式吗?”
林晨摇头:“张伟已经帮我够多了。而且这种时候去催,反而显得急躁,可能影响印象分。大厂的流程有它的节奏,我能做的只有等。”
“那智跃科技这边呢?要答应吗?”
“再拖两天。”林晨做出决定,“我明天再给hR发封邮件,就说‘正在做最后的家庭安排,恳请再宽限两天,下周三前一定给明确答复’。姿态放低一点,但立场要坚定——我需要时间。”
苏婉点点头:“也好。那这两天你准备做什么?”
“两件事。”林晨关掉交易系统界面,打开另一个文档,“第一,继续优化我的投资系统。昨天我发现黄金期货模型的过拟合问题还没完全解决,趁这两天有空,重新调一下参数。第二……”他顿了顿,“准备t厂的入职材料。”
苏婉一愣:“入职材料?offer不是还没来吗?”
“提前准备。”林晨眼神坚定,“如果最终拿到了offer,我不想到时候手忙脚乱。背景调查需要的材料、体检安排、甚至工资卡等信息……我都先整理好。这叫——用行动向宇宙下订单。”
苏婉被他的说法逗笑了:“你还信这个?”
“代码可以骗人,但逻辑不会。”林晨也笑了,“准备充分,就是最好的逻辑。”
接下来的两天,林晨进入了另一种状态——不再是焦虑的等待,而是有目标的忙碌。他花了大半天时间重构黄金期货模型的特征工程部分,引入了几种新的技术指标作为输入特征,又调整了LStm网络的dropout率以防止过拟合。回测结果显示,夏普比率从1.2提升到了1.5,最大回撤降至2.7%。
与此同时,他把t厂可能需要的所有材料扫描归档:学历证书、离职证明、社保记录、项目履历……甚至翻出了十年前刚来深圳时租第一间房子的合同,虽然早已泛黄,但他还是仔细扫描保存。
周日晚上,林晨给智跃科技的hR发了第二封邮件,言辞恳切地请求延期至下周三。这一次,对方的回复更快,也更坚决:“林先生,我们理解您的个人情况,但岗位确实紧急。最晚下周二下午五点前,我们需要得到您的最终答复。否则视为自动放弃。”
倒计时:48小时。
周一一早,林晨照例查看邮箱——空空如也。t厂那边依然沉默。他强迫自己不去想这件事,转而投入对A股模型的一次大规模历史回测。数据从2018年加载到2023年,覆盖牛熊市多个周期,他要验证模型在不同市场环境下的稳健性。
回测运行需要时间。等待进度条的过程中,林晨起身走到阳台。午后的阳光有些刺眼,楼下小区的儿童游乐区传来孩子们的嬉笑声。他忽然想起乐乐五岁那年,自己答应带他去香港迪士尼,却因为项目上线连续加班两个月,最终没能成行。那时他以为,努力工作赚钱,以后总有机会补偿。
而现在,他失业了,时间反而多了。
手机在口袋里震动。林晨掏出来一看——是个深圳本地的固定电话。心跳莫名加快,他按下接听键:“喂,您好。”
“请问是林晨先生吗?”一个年轻女声传来。
“是我。”
“这里是t公司人力资源部。关于您面试的AI开发部门t10岗位,想跟您确认一下,您目前手头有其他公司的offer在流程中吗?”
林晨呼吸一滞:“有。有一家创业公司给了offer,要求明天下午五点前答复。”
“好的,我们了解了。”对方语气平稳,“您的录用审批已经进入最后环节,预计最晚明天中午前会有正式结果。方便的话,请您保持手机畅通。”
“明白,谢谢您。”
电话挂断。林晨握着手机,站在阳台上,足足愣了十秒钟。
然后他冲回书房,对着正在运行回测的电脑屏幕,无声地挥了挥拳头。
最晚明天中午前。
他看了眼时间:此刻是周一下午三点。距离智跃科技的最后期限,还有26个小时。距离t厂承诺的“最晚明天中午前”,最多还有21个小时。
时间差,五小时。
这五个小时,将决定他接下来至少三年的职业轨迹。
林晨深吸一口气,打开智跃科技的offer邮件,光标在“回复”按钮上悬停。他知道自己该做什么——但他要等到明天中午,等到那个确定的结果。
哪怕只有一线希望。
第133章 投资系统升级
周二清晨,鹏城南山区的阳光透过百叶窗,在书房的地板上切割出明暗相间的条纹。林晨坐在电脑前,左手边是半杯早已冷却的美式咖啡,右手边的屏幕上闪烁着复杂的代码。
距离t厂hR承诺的“最晚周二中午前出结果”,还有三个小时。
他没有干等。等待的焦虑反而转化成了专注的能量——与其盯着时钟一分一秒地煎熬,不如把这段时间变成技术打磨的宝贵窗口。
投资系统昨晚又完成了一轮交易。林晨打开账户管理后台,最新净值曲线平稳向上,过去一周的累计收益率达到了3.2%。对于一个全自动运行、风险严格控制的多市场量化策略来说,这个数字已经相当可观。
但林晨盯着仓位管理模块的日志,眉头微微皱起。
“问题出在仓位调整上。”他自言自语,手指在键盘上敲击着调出详细交易记录,“系统识别到了黄金期货的趋势突破信号,但加仓速度太保守了。”
日志显示,系统在确认趋势后的六个交易小时内,分三次将仓位从初始的5%提升到15%。而根据林晨手动回测的经验,在那种明确的多头行情中,完全可以在确认信号后的第一个小时就加到12%,第二个小时达到20%上限。
“还是太机械了。”林晨靠在椅背上,望着窗外腾讯大厦的玻璃幕墙,“固定的仓位调整规则,没法适应不同市场、不同波动率环境下的最优策略。”
这个发现让他既兴奋又紧迫。兴奋是因为找到了明确的优化方向,紧迫是因为他知道,如果现在不解决这个问题,等真正入职t厂开始高强度工作后,这个个人项目很可能会被搁置。
他点开手机,给张伟发了条微信:“老张,强化学习在量化仓位管理上有成熟案例吗?”
几分钟后,张伟的电话直接打了过来。
“你小子还真是不闲着啊。”张伟的声音带着晨起的沙哑,“等offer的当口还在折腾系统?”
“总比干等强。”林晨笑了笑,“你了解这块吗?”
“略知一二。华尔街那边几年前就开始用dRL(深度强化学习)做动态仓位管理了,不过大部分是高频策略。你想做的是中低频吧?”
“对,日级别到小时级别的调仓。”
“那可以试试dqN(深度q网络)或者ppo(近端策略优化)。”张伟显然对这个话题很感兴趣,“关键是要设计好状态空间、动作空间和奖励函数。状态得包括市场数据、技术指标、账户信息;动作就是加减仓的幅度;奖励函数嘛……夏普比率?最大回撤控制?”
“我正在想这个。”林晨快速记录着,“如果只用夏普比率,系统可能会过度追求低波动而错失大行情。”
“那就复合指标。夏普比率占60%,年化收益占30%,最大回撤占10%——权重你自己调。对了,训练数据要足够长,至少覆盖两轮牛熊周期。”
挂断电话后,林晨的思路清晰了许多。他重新打开pytorch,新建了一个名为“rl_portfolio_manager”的文件夹。
上午九点半,A股开盘。林晨将系统切换到观察模式,自己则开始搭建强化学习框架。
第一步是定义状态空间。他整合了二十多个维度的数据:标的资产的当前价格、20日移动平均线、布林带宽度、RSI强弱指标、成交量变化率……还包括账户层面的信息,如当前仓位比例、浮动盈亏、可用资金等。
“状态向量长度……87维。”林晨敲下确认键,“够用了。”
动作空间相对简单:从空仓到满仓,按5%的步长划分,共21个离散动作。奖励函数则按照张伟的建议,采用复合指标,但林晨调整了权重——他更看重收益风险比,所以将夏普比率的权重提高到70%。
架构搭好,接下来是训练数据。林晨调取了系统过去两年的历史回测数据,涵盖A股、商品期货、黄金EtF和外汇市场,总计超过五十万条分钟级别的K线记录。
“开始训练。”
他按下回车键,屏幕上的命令行窗口开始滚动数字。GpU占用率瞬间飙升到98%,风扇发出轻微的嗡鸣声。
等待训练结果的时间变得异常缓慢。林晨起身续了杯咖啡,站在窗前俯瞰南山科技园的车流。早高峰已过,深南大道上的车辆依然川流不息,每一辆车里都载着一个正在奔赴各自战场的人。
他想起一个月前,自己还是那车流中的一员,每天赶着地铁去跨境电商公司上班,担心着35岁的职场天花板。而现在,他站在这里,等待着一个可能改变职业生涯的offer,同时亲手搭建着一个可能改变财务命运的系统。
“代码可以骗人,但逻辑不会。”林晨低声重复着自己的口头禅,“人更不能。”
十点整,手机震动。是苏婉发来的消息:“乐乐安全送到幼儿园了。你那边有消息吗?”
“还没有,说中午前。”林晨回复,“我在优化系统,进展不错。”
“那就好。中午想吃什么?我回来时顺便买。”
“简单点就行。你下午还有课吧?”
“嗯,两节作文课。孩子们要写《我的梦想》,挺期待的。”
林晨看着这句话,嘴角不自觉地上扬。苏婉总是这样,在那些看似平凡的教学日常里,找到属于自己的光亮。而他现在要做的,就是守护这份光亮。
他回到电脑前,训练已完成第一轮迭代。初步结果显示,在测试集上,强化学习模型管理的仓位调整策略,比原有固定规则策略的年化收益率提高了1.8个百分点,夏普比率从1.52提升到1.67。
“有戏。”林晨眼睛一亮。
但他没有急于部署到实盘。量化交易最忌讳的就是过度拟合——在历史数据上表现优异,不代表在未来市场也有效。
林晨启动了交叉验证:将数据分成五份,用四份训练,一份测试,轮流五次。同时加入了随机市场噪声和滑点模拟,让模型在更接近真实交易的环境下学习。
时间来到十一点。距离t厂承诺的最后期限,还有一个小时。
林晨强迫自己不去看时钟,专注于手头的工作。他调整了神经网络的层数和节点数,加入了dropout层防止过拟合,还尝试了不同的优化器——Adam、RmSprop、SGd。
十一点半,第五轮交叉验证的结果出炉。
平均年化收益提升:2.1%。 夏普比率提升:从1.52到1.71。 最大回撤改善:从-8.3%降低到-7.1%。
更重要的是,模型在不同市场行情下表现出良好的适应性:在趋势明显的单边市中会快速加仓,在震荡市中会降低仓位并高抛低吸,在行情反转时会及时止损。
“可以实盘试运行了。”林晨做了决定。
他没有全仓切换,而是采用渐进式部署:将新模型作为“建议模块”,与原系统的固定规则并行运行。新模型给出仓位调整建议,如果与原规则偏差不超过10%,则采纳;如果偏差过大,则触发人工审核——目前由林晨自己审核。
部署代码,重启系统。十一点五分。
林晨看着监控面板,新模型开始接收实时市场数据,并输出了第一个仓位建议:在黄金期货上,建议将仓位从当前的12%提升到18%。
原系统的规则建议是15%。
偏差3个百分点,在阈值内。系统自动采纳了新模型的建议。
几乎在同一时刻,黄金价格突破了一个小时级别的阻力位,开始放量上涨。
林晨屏住呼吸,盯着分时图。接下来的十五分钟里,金价上涨了0.8%。按照18%的仓位计算,这波行情带来的浮盈已经超过了原策略的预期。
“漂亮。”他忍不住赞叹。
这不是运气,而是模型从历史数据中学到的规律:当黄金价格在特定技术形态下突破关键位置,且成交量配合放大时,后续延续趋势的概率高达73%。
第134章 收益新高
过去一周,他几乎把全部精力都投入到优化后的投资系统上。新的强化学习仓位管理模型已经运行了五个完整的交易日,表现平稳得超出预期。
电脑屏幕亮起,交易软件自动登录。他先看了一眼A股集合竞价的情况,然后点开了账户总览页面。
数字跳出来的瞬间,林晨愣住了。
他眨了眨眼,身体下意识地前倾,几乎要贴到屏幕上。
账户总资产:273,568.42元。
他记得很清楚,初始本金是20万整。也就是说……
林晨飞快地心算了一下,手指微微颤抖地点开收益统计页面。
【累计收益率:36.78%】 【累计收益:73,568.42元】
七万三千五百六十八块四毛二。
这个数字像一道电流,从眼睛直击心脏,然后迅速蔓延到四肢百骸。他深吸一口气,靠在椅背上,闭上眼睛。
七万多。
十个月时间,从二十万到二十七万多,净赚七万多。
他失业前在跨境电商公司的年薪是税前四十万左右,扣除五险一金和个税,到手大概三十万出头。平均到每个月,税后收入两万五左右。这七万多的收益,已经超过了他之前工作大半年的工资收入。
而这还只是开始。
系统还在运行,模型还在学习,资金还在增长。
林晨睁开眼睛,重新看向屏幕。阳光从窗外斜射进来,在显示器边缘镀上一层金边。他打开系统日志,仔细检查过去一周的每一笔交易记录。
黄金期货的那笔突破行情捕捉得很完美,在关键阻力位突破时加仓,持仓三天后在技术性回调前平仓,单笔收益率就达到了8.2%。A股方面,系统选中的几只中小盘成长股也走出了不错的趋势,虽然单只涨幅不算夸张,但组合起来形成了稳定的向上曲线。
最让他满意的是风险控制。新加入的强化学习模块在波动率突然放大时,会自动降低仓位并切换到防御性更强的策略。上周四市场出现短暂恐慌性下跌时,系统及时将部分股票仓位切换到黄金和国债逆回购,整体回撤被控制在1.2%以内。
“这才叫量化。”林晨低声自语,嘴角不由自主地上扬。
他打开python环境,调出最新的模型训练数据。夏普比率稳定在2.1以上,最大回撤低于5%,年化收益率(基于十个月数据推算)已经超过45%。当然,他知道实盘时间还短,这些数据需要更长时间的验证。但至少,方向是对的。
手机震动了一下。是苏婉发来的消息:“今天hR那边有消息吗?”
林晨回复:“还没,应该就这两天。不过有另一个好消息。”
他截了张账户总览的图,发了过去。
几秒钟后,苏婉直接打来了电话。她的声音里透着难以置信:“老公,这……这是真的?七万多?”
“真的。”林晨的声音很平静,但握着手机的手微微用力,“系统升级后表现不错,上周行情也配合。”
“这已经超过你以前好几个月工资了。”苏婉顿了顿,“你……你现在感觉怎么样?”
林晨望向窗外。科技园的高楼在晨光中矗立,玻璃幕墙反射着金色的阳光。他想起十个月前被裁员那天,也是这样一个早晨,他拖着行李箱走出公司大楼,觉得整个天空都是灰的。
“感觉……”他缓缓开口,“感觉像是爬了很久的山,终于到了一个能喘口气的平台。能看到下面的路了,也能看到上面的峰顶了。”
电话那头沉默了片刻。然后苏婉轻声说:“我就知道你可以的。”
这句话很简单,但林晨觉得眼眶有些发热。这十个月来,苏婉从未质疑过他的选择,哪怕最困难的时候——存款一天天减少,面试一次次失败,老家亲戚的闲言碎语——她都坚定地站在他这边。
“晚上想吃什么?”苏婉换了个话题,“庆祝一下?”
“你做主。”林晨笑道,“不过我下午可能得去一趟证券公司。”
“要加钱进去?”
“不完全是。”林晨解释道,“我想去开通几个新权限,比如融资融券、期权账户。系统现在运行稳定,可以考虑更复杂的策略了。不过初期只会用很少的资金试水。”
“你专业,你决定。”苏婉说,“对了,妈昨天打电话,问你是不是还在找工作。我说你在做自己的项目,已经赚钱了。她好像不太信。”
林晨苦笑。老家的父母那一代人,很难理解“写代码就能赚钱”这种事。在他们看来,要么上班领工资,要么做生意开店,其他的都是不务正业。
“等过年回去,我好好跟他们解释。”他说。
挂断电话后,林晨重新坐回电脑前。他没有沉浸在喜悦中太久,而是开始规划下一步。
首先,需要给系统增加更多的资产类别。目前主要集中在A股、黄金期货和少量基金,可以逐步扩展到商品期货、外汇、甚至数字货币——当然,后者风险极高,必须严格控制仓位。
其次,模型的持续优化不能停。强化学习模块需要更多的训练数据,可以考虑接入更多维度的市场数据,比如新闻情绪分析、宏观指标变化等。
第三,风控必须进一步加强。收益越高,风险意识越要强。他计划写一个独立的监控程序,7x24小时监控系统运行状态,一旦出现异常波动或逻辑错误,立即暂停交易并报警。
他新建了一个markdown文档,标题是“投资系统2.0路线图”,开始一条条列出来。
写到一半时,手机又响了。
这次是个深圳本地的座机号码。
林晨的心跳漏了一拍。他看了眼时间:上午十点十七分。
按下接听键的瞬间,他下意识地挺直了背。
“您好,请问是林晨先生吗?”一个年轻女性的声音传来,语气专业而礼貌。
“是我。”
“林先生您好,我是t公司人力资源部的李琳。关于您应聘AI开发部门Leader职位的录用审批流程,现在有结果了。请问您现在方便通话吗?”
窗外的阳光似乎在这一刻变得更加明亮。林晨深吸一口气:“方便,您请说。”
第135章 创业公司催促
手机震动起来时,林晨正对着电脑屏幕,反复检查t厂hR昨天发来的那封邮件。邮件内容很简单,只说录用审批流程已走完,薪资包具体数字需要电话沟通确认。他等这个电话等了快二十个小时,从昨天下午到现在,每隔几分钟就不自觉地瞥一眼屏幕右下角的时间。
来电显示却是一个陌生的鹏城本地号码,不是t厂hR的座机。
林晨深吸一口气,接通:“喂,您好。”
“林先生您好,我是智创未来的hR Lisa。”一个语速偏快、带着职业化热情的女声传来,“关于我们上周发给您的offer,想跟您再沟通一下进度。您这边考虑得怎么样了?”
智创未来,就是那家做AI+金融的创业公司,给了30K月薪、0.5%期权(分四年归属)的那个offer。距离他们发offer已经过去五天,按行业惯例,确实到了该给回复的时候。
林晨的心脏微微收紧。他稳了稳声音:“Lisa你好,非常感谢智创未来的认可。offer我认真看了,团队方向我也很感兴趣。只是……我这边还有另外一个机会在走最后的流程,可能需要再等一两天才能给贵司最终答复。不知道能否再宽限几天?”
电话那头沉默了两秒。林晨能想象对方在皱眉头。
“林先生,我们这边岗位是急招,业务线等不了太久。”Lisa的语气稍微降温,但依然维持着专业,“而且坦白说,我们给的package在创业公司里已经非常有竞争力了。30K base,加上期权,如果公司下一轮融资顺利,未来的想象空间是很大的。您说的另一个机会,方便透露是哪家吗?大概什么级别的package?”
林晨犹豫了一下。直接说t厂有点像是抬价,但不给点信息对方可能不会松口。“是一家大厂的AI部门,还在走最后的薪资审批。”他含糊道,“具体哪家,在对方正式发offer前我不太方便说,抱歉。”
“理解。”Lisa的声音听不出情绪,“大厂有大厂的好处,稳定,平台大。但我们创业公司也有独特的优势,比如成长快、决策链短、有机会成为核心骨干。更重要的是,我们做的是AI量化交易这个垂直赛道,跟您自己研究的兴趣点高度吻合。来了就能直接上手核心模型,这种机会在大厂未必有。”
她说得没错。这也是林晨当初投简历并认真面试的原因。智创未来的技术总监跟他聊模型架构和因子挖掘时,双方确实很有共鸣。
“我明白,这也是我非常看重贵司机会的原因。”林晨诚恳地说,“只是这个选择对我职业生涯下一步很关键,我需要一点时间综合评估。最晚后天,后天下午五点前,我一定给贵司明确答复,可以吗?”
电话里传来轻微的敲击键盘声,可能是在记录或查看日历。
“林先生,我希望您能理解我们的难处。”Lisa叹了口气,语气软了一些,但带着明确的压力,“这样吧,我再跟业务部门争取一下,最晚到明天中午。明天中午12点前,请您务必给我们一个准信。如果到时候您还不能确定,我们可能就需要考虑其他候选人了。毕竟这个岗位我们面了不下二十个人,也有几位很不错的备选。”
明天中午。林晨心里快速盘算。t厂hR说今天会电话沟通薪资,如果今天能谈妥,明天上午应该就能收到正式offer邮件。时间上……勉强来得及,但非常紧。
“好,明天中午12点前,我一定回复。”林晨给出了承诺。
“期待您的好消息。”Lisa说完,便干脆利落地挂了电话。
放下手机,林晨感到一阵烦躁。他起身走到窗边,推开窗户。四月的鹏城,空气已经有些闷热,混杂着楼下绿化带植物的气息和远处街道隐约的车流声。
他需要t厂那个offer。不仅仅是因为32Kx16薪的总包比智创未来高出一截(智创未来只有13薪),更重要的是平台、资源、以及陈博士那样的导师。在t厂做上几年,接触超大规模的数据和算力,参与前沿项目,对他技术视野的提升是创业公司无法比拟的。
但创业公司的诱惑也真实存在——直接负责核心模型,快速验证自己的想法,还有那0.5%的期权。万一这家公司成了呢?虽然这个“万一”的概率可能不到百分之五。
“代码可以骗人,但逻辑不会,人更不能。”他低声重复了一遍自己的口头禅。现在需要的是逻辑判断。
他走回书桌,打开一个空白文档,开始列对比项:
【t厂(假设offer如预期)】
薪资:52Kx16 = 83.2万/年(税前)
平台:国内顶尖,资源丰富,品牌背书强
技术:接触最前沿项目,数据、算力规模巨大
导师:陈博士级别的高手,学习成长环境佳
稳定性:高,抗风险能力强
缺点:可能螺丝钉化,核心业务参与深度未知,晋升周期相对长
【智创未来】
薪资:30Kx13 = 39万/年 + 期权(估值不确定,目前画饼成分大)
平台:A轮创业公司,风险高,资源有限
技术:直接负责核心模型,验证想法快
导师:技术总监水平不错,但高度有限
稳定性:低,创业九死一生
缺点:风险极高,可能一年后公司就没了,期权变废纸
列完,答案几乎不言自明。对于35岁、有家庭、刚刚从失业危机中爬出来的他来说,t厂是更稳健、更长远的选择。智创未来的“高潜在回报”背后,是与之不匹配的巨大风险。他现在有投资系统托底,不需要去赌那个小概率事件。
更何况,t厂的面试经历,尤其是和陈博士的对话,让他对那个环境产生了真正的向往。那是一种技术人遇到知己和引领者的感觉。
理清了思路,焦虑感稍减,但等待的焦灼感更强烈了。t厂的电话怎么还不来?难道审批出了变故?还是薪资包没有达到预期,hR在斟酌怎么谈?
他强迫自己把注意力转回电脑。投资系统的监控界面一切正常,自选组合今天微涨0.8%,稳稳跑赢大盘。累计收益数字停在73,568.42元,像一颗定心丸。
“至少,饿不死了。”他自言自语,嘴角露出一丝苦笑。几个月前,他绝对想不到,自己会靠着几行代码在金融市场里赚到比工资还多的钱,更想不到这会成为他职业选择的底气。
时间一分一秒过去。窗外天色渐渐暗淡,晚高峰的车流声隐约传来。苏婉发微信说晚上学校开教研会,晚点回来,让他自己先吃。
林晨煮了碗面条,心不在焉地吃完。手机一直安静地躺在手边。
直到晚上七点半,那个期待已久的、标注着“t厂hR”的座机号码,终于再次在屏幕上亮起。
林晨几乎秒接:“喂,您好!”
“林先生晚上好,抱歉这么晚打扰。”还是昨天那位hR女士的声音,带着歉意,“白天一直在跟薪酬部门对齐数据,让您久等了。”
“没关系,您请讲。”林晨的心提了起来。
“首先恭喜您,您的录用审批已经全部通过。”hR先给了颗定心丸,“接下来我跟您沟通一下具体的薪资包。根据您的面试评级和薪酬体系,我们为您核定的月薪是52,500元。”
52,500!比预想的52K还多了500!林晨精神一振。
“年终奖部分是4-6个月,根据绩效评定。我们通常按平均值5个月来估算总包。此外,有签字费3万元,在入职第一个月随工资发放。股票期权方面,因为您入职的层级,暂时没有配备。其他福利包括全额五险一金、补充商业保险、年度体检、餐补交通补等,这些在offer邮件里会有详细说明。”
hR语速平稳地报着数字:“这样算下来,年度总包大约是x(12+5)+ = 922,500元,也就是92万多一点。您看这个package,能接受吗?”
92万多!远超之前任何一次面试的预期,甚至比他失业前翻了一番还多!
林晨压下心头的激动,尽量让声音保持平稳:“数字我清楚了,非常感谢。这个package我可以接受。”
“好的。那接下来我会在系统里发起offer流程,预计明天上午十点左右,正式的offer邮件会发送到您的邮箱。请您注意查收,并按照邮件指引在规定时间内(通常是三个工作日)完成确认。”hR的流程非常清晰,“后续入职体检、入职信息收集等事宜,也会有同事跟进联系您。预祝您入职顺利!”
“谢谢!”
通话结束。林晨握着手机,在渐渐暗下来的书房里站了很久。一种混杂着巨大 relief(解脱)、兴奋和些许不真实的情绪,在胸腔里弥漫开来。
他做到了。从被裁员的那天起,到自学AI的无数个深夜,到一次次面试被拒或薪资谈崩,再到与陈博士那场烧脑又酣畅淋漓的技术对谈……这条路,他咬着牙走了过来。
明天上午十点。他看了一眼时间。只要顺利收到offer邮件,他就可以在中午12点前,礼貌而坚定地拒绝智创未来。
然后,人生将翻开全新的一章。
他忽然很想立刻告诉苏婉。拿出手机,又停住了。还是等她回家,当面分享这个好消息吧。他想象着妻子听到消息时,脸上一定会绽放出如释重负又充满骄傲的笑容。
就在这时,手机又震了一下。是张伟发来的微信:“哥们儿,t厂那边有信儿了吗?需要我再去催催陈博士不?”
林晨笑了,飞快打字:“刚接到hR电话,offer定了,总包92万多。明天上午发正式邮件。”
张伟几乎秒回:“牛逼!!!(破音) 我就知道你能行!晚上必须庆祝一下,烧烤走起?我请客!”
“今晚婉婉开会,改天,改天一定好好请你。”林晨回复,“这次真的多亏了你。”
“嗨,自家兄弟不说这个。等你入职了,咱就是友军了,以后合作机会多着呢!”张伟发来一个咧嘴笑的表情。
结束和张伟的对话,林晨感到一种久违的踏实感。他关掉电脑上的求职网站和招聘App,那些曾经带来无数焦虑的红色未读提醒,终于可以彻底清空了。
他走到客厅,打开电视,随意调到一个新闻频道。主播正在播报着某地科技创新的新闻。他看着,却觉得那些声音和画面离自己很远。
属于他的战场,即将转移。而这一次,他不再是那个忐忑不安、被动等待选择的求职者。
等待offer邮件落袋的这一个夜晚,依然会有些漫长。但林晨知道,这一次,等待的尽头是确凿无疑的光明。
他只需要,耐心地,再等十几个小时。
第136章 T厂的电话
午后的阳光透过窗户,斜斜地打在书桌上。林晨盯着电脑屏幕上的量化系统监控界面,那串代表当日浮盈的数字正以极其缓慢的速度跳动——+1,235.68元。系统运行平稳,但他此刻的心思完全不在这里。
手机就放在键盘旁边,屏幕暗着。
距离昨天t厂hR说的“上午十点前发正式offer邮件”,已经过去了四个半小时。现在是下午两点三十七分。
林晨端起桌上已经凉透的半杯水,喝了一口。喉咙有些干涩。他强迫自己把视线移回电脑,点开一个关于transformer模型最新改进的论文预印本,试图用技术细节填充这段焦灼的等待时间。但看了两段,那些数学符号和公式就像漂浮在水面的油渍,怎么也进不去脑子。
“嘀嗒。”
手机屏幕突然亮起,一个鹏城本地的固定电话号码跃入眼帘。
林晨的心跳瞬间漏了一拍。他几乎是条件反射般地抓起手机,指尖有些发凉。深吸一口气,滑动接听。
“喂,您好。”
“林晨先生吗?您好,我是t厂人力资源部的李静。”电话那头传来一个干练而温和的女声,“抱歉让您久等了,我们这边走内部审批流程多花了一点时间。”
“没关系,李小姐您好。”林晨尽量让自己的声音听起来平稳。
“首先恭喜您,您的面试评估结果非常优秀,尤其是技术终面环节,陈博士给了很高的评价。”李静的声音带着职业化的笑意,“经过综合评定,我们决定为您提供以下录用条件,我跟您同步一下,您听一听。”
......
“综合福利方面,”李静继续介绍,“公司提供最高标准的五险一金和补充商业保险,年度体检,餐补,交通补贴,以及每年15天的带薪年假。园区内的健身房、理疗室、各类社团活动您都可以享受。具体的福利手册,会在offer邮件里附上。”
林晨听着,感觉胸腔里有一股温热的东西在慢慢膨胀。几个月来的焦虑、自我怀疑、无数次面试后的疲惫,在这一刻,似乎被这个清晰而优厚的数字缓缓熨平。
“林先生,您对这个录用条件有什么疑问吗?”李静问道。
“没有疑问,条件很清晰。”林晨的声音比刚才更稳了一些,“感谢公司的认可。”
“那好的。正式的录用通知书,我们已经通过邮件发送到您简历上留的邮箱。邮件里会有详细的入职指引,包括需要您准备的入职材料清单,以及线上入职系统登录方式。您需要在收到邮件后的三个工作日内,登录系统确认接受offer。之后,我们会启动信息收集流程,并安排入职体检。预计最快可以在两周内办理入职,您看时间上可以吗?”
“可以的,我随时可以入职。”
“太好了。那先这样,后续有任何问题,您可以随时通过邮件或这个电话联系我。再次欢迎您加入t厂。”
“谢谢,辛苦了。”
电话挂断。
林晨慢慢放下手机,手臂有些发僵。他靠在椅背上,目光没有焦点地落在天花板上。书房里很安静,只有电脑主机风扇发出的轻微嗡鸣。
成了。
真的成了。
不是那些充满不确定性的创业公司,不是需要拼命解释自己价值的web3小团队,是t厂,是AI开发的核心部门,是p8高级算法工程师,是带团队的Leader,是年薪五十多万。
他闭上眼睛,深深吸了一口气,又缓缓吐出。几个月前,他被裁员后坐在这个房间里,看着银行卡里不断减少的存款,听着父母电话里小心翼翼的询问,那种无处着力的恐慌感,此刻仿佛被一道坚实的闸门隔在了记忆的另一端。
他睁开眼,看向电脑屏幕上依然在静静运行的量化交易系统。那个他为了自救而开发的“副业”,那个已经为他赚了七万多块钱的工具。现在,它不再是唯一的救命稻草,而是变成了他职业能力和财务安全的双重证明。
他重新坐直身体,打开了邮箱页面,刷新了几次。还没有新邮件。他知道,正式的邮件很快就会来。那种白纸黑字、盖着公司电子章的录用通知书,将是他职业生涯一个新的、坚实的起点。
接下来要做什么?确认offer,准备材料,体检,背调……然后就是入职,面对新的团队,新的项目,新的挑战。陈博士面试时提到的那些关于AI框架底层优化、关于“物理成本”的讨论,言犹在耳。那才是他真正想投入的战场。
窗外的阳光移动了一些,照亮了书架上一排排技术书籍的书脊。从《python编程从入门到实践》到《深度学习》,从《统计学习方法》到最新的《扩散模型原理与应用》,这些书见证了他这几个月近乎疯狂的投入。而今天这个电话,像是对那段埋头苦读时光的一次正式加冕。
林晨站起身,走到窗边。楼下小区花园里有老人在散步,有小孩在嬉闹。平凡的生活景象,此刻在他眼里却显得格外生动。他不再是那个被隔绝在职场之外的旁观者,他重新拿到了入场券,而且是一张位置相当不错的VIp座席。
手机震动了一下。邮箱客户端提示:您有一封新邮件。
发件人:talent Acquisition team, t technology。 主题:录用通知书 - 林晨。
来了。
林晨点开邮件,快速浏览着那些格式严谨的条款、数字、福利列表。最后,他的目光落在那个需要他点击的“接受录用”的蓝色按钮上。
他没有立刻点下去。而是拿起手机,对着电脑屏幕上的offer邮件,拍了一张照片。
然后,他才移动鼠标,光标悬停在那个蓝色按钮上,轻轻一点。
页面跳转,显示“您的确认已提交,感谢您加入t厂大家庭”。
一股实实在在的、沉甸甸的踏实感,终于彻底落了下来。焦虑的等待结束了,新的征程,就在眼前。
他关掉邮箱页面,看了一眼时间,下午三点十分。苏婉还要两个多小时才下班。但他已经有点等不及了。
林晨关掉量化系统的监控界面,保存好所有代码。然后他关掉电脑,拿起手机和钥匙,决定现在就出门。
去菜市场买点好菜,晚上做几个苏婉爱吃的。然后,在饭桌上,把这个好消息,亲口告诉她。
走到门口,他回头看了一眼这间陪伴他度过失业低谷的书房。阳光正好,满室明亮。
他轻轻带上门,脚步轻快地走向电梯。
第137章 激动的时刻
林晨把菜随手放在桌上,连袋子都没来得及整理,人却已经站在原地不动了。
安静。
整个书房安静得有些过分。
下一秒,他忽然笑了。
不是那种克制的笑,而是压了太久、终于溢出来的那种——嘴角一点点扬起,连眼神都亮了起来。
他深吸一口气,又缓缓吐出,像是在确认什么。手指不自觉地攥紧,又松开,再攥紧。
成了。
真的成了。
窗外的阳光透过百叶窗斜斜地打进来,在地板上切出一条条明暗分明的光影,像是整个世界都在为这一刻让路。
他低头看向手机。
屏幕是暗的,但那封邮件里的每一个字,他都记得清清楚楚。
录用。
确认。
入职时间。
没有任何回旋的余地。
林晨忽然低声笑了一下,声音不大,却带着压不住的锋芒。
——这一次,是真的翻过去了。
不是那些web3公司含糊其辞的“再考虑考虑”,不是猎头转述的“薪资期望偏高”,而是t厂——国内互联网金字塔尖的公司——正式发来的录用通知。t10职级,五十二K月薪,十六薪,还有签字费和期权。更重要的是,那个“Leader”的title。
这意味着什么?意味着他这半年多的闭关苦学没有白费,意味着他三十五岁转行AI这条路走对了,意味着那些深夜对着屏幕调试代码、反复推演模型参数的日子,终于结出了果实。
林晨深吸一口气,点开微信,找到置顶的那个名字——苏婉。
电话拨出去的时候,他的心跳得有些快。现在是下午三点多,苏婉应该刚上完一节课,在办公室休息。
“喂?老公?”苏婉的声音从听筒里传来,背景音里隐约有学生的嬉笑声和走廊里的脚步声,“怎么这个点打电话?出什么事了吗?”
她的语气里带着一丝不易察觉的紧张。这半年多来,林晨失业在家,每次主动打电话多半是有重要的事——要么是面试通知,要么是投资系统出了状况,很少有纯粹的闲聊。
林晨清了清嗓子,努力让自己的声音听起来平稳:“没什么事,就是想跟你说说话。”
“真的?”苏婉显然不信,“你声音有点不对劲。是不是……面试结果出来了?”
林晨忍不住笑了出来:“嗯。”
“怎么样?”苏婉的声音立刻绷紧了,“t厂那边……有消息了?”
“刚收到邮件。”林晨顿了顿,一字一句地说,“录用了。t10,高级算法工程师,带团队。月薪五十二K,十六薪,签字费三万,还有期权。”
电话那头沉默了两秒钟。
然后,林晨听到了吸气的声音,很轻,但很清晰。
“……多少?”苏婉的声音有些发颤,“你再说一遍?”
“月薪五十二K,乘以十六,加上签字费和期权,年包超过八十万。”林晨重复道,这次说得更慢,每个字都咬得很清楚,“职级是t10,带Leader title,已正式发offer,准备体检等入职流程。”
“天啊……”苏婉喃喃道,随即声音里带上了哭腔,“老公……真的吗?我不是在做梦吧?”
“不是梦。”林晨眼眶也有些发热,“真的成了。”
电话那头传来压抑的抽泣声,断断续续的。林晨能想象出苏婉此刻的样子——一定是捂着嘴,不想让办公室同事听到,但眼泪怎么也止不住。
这一年多,她承受的压力不比他小。
房贷每个月准时扣款,儿子的学费、兴趣班费用,家里的日常开销……她一个小学老师的工资,撑起这个家的大部分支出。她从来没抱怨过,甚至在他最焦虑、自我怀疑的时候,还会反过来安慰他:“没事,慢慢来,我相信你。”
但林晨知道,她夜里翻来覆去睡不着的时候,肯定偷偷算过账。知道她为了省点钱,已经很久没买新衣服了。知道她偶尔看到朋友圈里其他家庭出去旅游的照片,眼神里那一闪而过的羡慕。
“太好了……真的太好了……”苏婉终于平复了一些,声音里带着浓重的鼻音,“我就知道你能行!我就知道!”
“谢谢你,老婆。”林晨低声说,“没有你撑着这个家,我撑不到今天。”
“说什么傻话。”苏婉吸了吸鼻子,“你每天学得那么拼命,我都看在眼里。现在好了,一切都值了。”
两人在电话里沉默了片刻,那种巨大的、如释重负的喜悦,像温暖的潮水一样漫过心头。
“对了,”苏婉忽然想起什么,“薪资……比我们之前预期的还高啊。你不是说t厂的t10,正常范围是三十五到五十K吗?”
“hR说,是陈博士特别提的。”林晨说,“他说我的技术视野和那个‘物理成本’的观点,值得这个价。”
“陈博士……”苏婉轻声重复,“就是面试时问你那个特别难的问题的面试官?”
“对,他是AI Lab的总监。”林晨语气里带着敬意,“他问的问题,确实让我重新思考了很多东西。能遇到这样的前辈,是我的运气。”
“是你自己的实力。”苏婉纠正道,“老公,你值得。”
林晨笑了笑,心里暖洋洋的。
“对了,”苏婉又说,“那……你之前说的那个投资系统,还要继续做吗?现在有了正式工作,会不会没时间了?”
“要做。”林晨毫不犹豫,“系统现在已经稳定运行了,每天只需要花一两个小时看看数据、微调参数就行。而且……”他顿了顿,“这个系统不只是赚钱工具,更是我的技术试验场。在t厂工作,接触到的数据和算力资源更多,说不定能把它做得更好。”
“你心里有数就行。”苏婉说,“反正现在有了这份工作,咱们的经济压力就小多了。系统赚的钱,就当是额外保障。”
“嗯。”林晨看了看电脑屏幕上还在滚动的行情数据,“今天系统又赚了八百多。虽然不多,但胜在稳定。”
“已经很好了。”苏婉的声音彻底轻松下来,“那……晚上庆祝一下?我早点下班,去买点菜?”
“我已经买好菜了。”林晨说。
“你做的我都爱吃。”苏婉笑着说,“不过……要有条鱼?年年有余,讨个好彩头。”
“好,那就清蒸鲈鱼,再炒两个你爱吃的菜。”林晨心里已经有了菜单。
“嗯。”苏婉的声音温柔下来,“那我等你回家。”
挂断电话后,林晨又在书房里坐了一会儿。
他打开邮箱,再次确认了那封来自t厂hR的邮件。白底黑字的offer letter,条款清晰,盖着公司的电子章。他把邮件转发给苏婉,然后关掉电脑。
起身走到窗边,推开窗户。下午的风带着些许暖意,吹在脸上很舒服。楼下的小区花园里,几个老人正带着孩子玩耍,远处深南大道上的车流汇成一条闪烁的光带。
半年前,他站在这里,看着同样的风景,心里只有迷茫和焦虑。
现在,世界还是那个世界,但他的心境已经完全不一样了。
林晨换上一件干净的t恤,拿起钥匙和手机,出门下楼再次去超市采购一些酒水和老婆今晚想吃的菜。
超市在小区对面,过个马路就到。他推着购物车,在生鲜区仔细挑选了一条活蹦乱跳的鲈鱼,又买了新鲜的芦笋、蘑菇和一块上好的牛腩。经过酒水区时,他犹豫了一下,还是拿了一瓶红酒——不贵,但包装精致,适合庆祝。
排队结账的时候,前面一对年轻情侣在讨论晚上吃什么外卖。女生抱怨说工作太累,不想做饭。男生搂着她的肩,说点个贵点的,犒劳一下。
林晨看着他们,忽然想起很多年前,他和苏婉刚结婚的时候。那时两人工资都不高,租着房子,但每个周末都会一起去买菜做饭。苏婉负责洗菜切菜,他负责掌勺。小小的出租屋里飘着饭菜香,那就是他们最初的幸福。
后来工作越来越忙,他经常加班,这种简单的仪式感就渐渐少了。再后来,有了乐乐,生活重心转移,做饭更多是为了填饱肚子,而不是享受过程。
失业这一年来,他重新捡起了锅铲。一开始是无奈,为了省钱。后来慢慢变成了一种调节——代码调不通的时候,去厨房切切菜、炒个菜,反而能让脑子清醒过来。
现在想想,这或许也是某种馈赠。
拎着沉甸甸的购物袋回到家,林晨系上围裙,开始在厨房忙碌。洗鱼、腌制、切配菜、炖牛腩……动作熟练而从容。
下午五点半,门口传来钥匙转动的声音。
“我回来啦!”苏婉推门进来,手里还拎着一个蛋糕盒子。
林晨从厨房探出头:“还买了蛋糕?”
“庆祝嘛。”苏婉放下包,换好拖鞋走过来,脸上是藏不住的笑意,“经过蛋糕店,看到这个‘心想事成’的款式,就买了。”
她走到林晨身边,轻轻抱住他的腰,把脸贴在他背上。
“老公,”她轻声说,“我真为你高兴。”
林晨放下锅铲,转过身,也抱住她。
两人就这样在厨房里静静相拥了片刻。抽油烟机还在嗡嗡作响,锅里的汤咕嘟咕嘟冒着泡,空气里弥漫着食物的香气。
“好啦,再抱下去菜要糊了。”苏婉先松开手,擦了擦眼角,“我来帮你。”
“不用,马上就好。”林晨转身继续翻炒,“你去摆碗筷吧,乐乐呢?”
“妈去接了,说晚上带他在那边吃,让我们俩好好庆祝。”苏婉笑着说,“妈也知道了,高兴得不得了,在电话里一直念叨‘我就说我儿子有出息’。”
林晨也笑了。母亲这半年虽然没说什么,但每次打电话时那种欲言又止的担心,他都能感觉到。现在总算可以让她安心了。
六点整,四菜一汤上桌。清蒸鲈鱼、芦笋炒蘑菇、红烧牛腩、蒜蓉菜心,还有一锅玉米排骨汤。蛋糕摆在中间,上面写着“心想事成”四个红字。
林晨打开红酒,给两人各倒了半杯。
“来,”他举起酒杯,“敬新的开始。”
苏婉也举起杯,和他轻轻一碰:“敬你的坚持,敬我们的未来。”
玻璃杯碰撞出清脆的响声。两人相视而笑,一饮而尽。
吃饭的时候,苏婉问了很多入职的细节——团队规模、工作内容、上班地点、福利待遇。林晨一一解答,说到“公司有免费三餐、健身房、年度体检”时,苏婉眼睛都亮了。
“那以后你中午就不用带饭了,省事。”她说,“健身房也好,你总坐着写代码,得多运动。”
“嗯,我会注意。”林晨夹了块鱼放到她碗里,“对了,约定下周一就能入职。”
林晨说,“这次不一样。我有经验了,知道怎么平衡工作和生活。而且……”他顿了顿,“现在有了这份工作打底,心态会从容很多。不像以前,总怕被淘汰,只能拼命加班。”
苏婉看着他,眼神温柔:“你变了,老公。”
“变好了还是变坏了?”
“变稳了。”她认真地说,“比以前更……笃定。不是那种绷着的紧张,是真的心里有底气的稳。”
林晨想了想,承认道:“大概是知道自己要什么了吧。以前写业务代码,总觉得是在给别人打工,随时可能被替换。现在做AI,虽然也是打工,但技术是自己的,能力是自己的。就算哪天t厂不要我了,我还能去其他地方,或者自己做点东西。”
“这就是底气。”苏婉举起酒杯,“为你找到自己的路,干杯。”
两人又碰了一杯。
饭后,苏婉坚持要洗碗,让林晨去休息。林晨拗不过她,便坐到沙发上,打开手机看了看投资系统的今日报告。
今日收益:+824.37元。总资产:237,652.41元。
从二十万起步,最近不到三个月,赚了快4万块。虽然跟那些动辄翻几十倍的传说没法比,但这种稳定的、可复利的增长,才是他想要的。
系统现在已经覆盖了A股、港股、基金和商品期货四个市场,每天自动交易十几笔,胜率维持在68%左右。最重要的是,风控模块运行良好,最大回撤始终控制在5%以内。
林晨盘算着,等入职后有了稳定收入,可以适当加大投入。不过这事急不来,得一步步验证系统的长期稳定性。
“看什么呢?”苏婉洗好碗走过来,挨着他坐下。
“投资系统的数据。”林晨把手机屏幕转向她,“今天又赚了八百多。”
苏婉凑近看了看,惊讶道:“这么多?那一个月不就是两万多?”
“理论上是。”林晨说,“但市场有波动,不可能每天都赚。不过按过去三个月的平均数据,月收益在一万五到两万之间是没问题的。”
“那加上你的工资……”苏婉快速心算,“我们一年就能……”
“提前还一部分房贷。”林晨接过话,“剩下的继续滚雪球。等系统再稳定一段时间,可以考虑加杠杆,或者拓展到其他市场。”
苏婉靠在他肩上,轻声说:“感觉像做梦一样。半年前,我们还为下个月的房贷发愁。”
“都过去了。”林晨搂住她的肩,“以后会越来越好的。”
“嗯。”苏婉闭上眼睛,“老公,谢谢你这么努力。”
“应该谢谢你。”林晨说,“没有你在后面撑着,我早就垮了。”
窗外,夜幕降临,万家灯火次第亮起。
这个城市里,每天都有无数人在奋斗,在挣扎,在希望和失望之间摇摆。有人成功了,有人失败了,有人还在路上。
林晨知道,自己属于幸运的那一批——在三十五岁的年纪,抓住了时代的风口,完成了艰难的转型。但这份幸运背后,是无数个日夜的埋头苦学,是一次次面试失败的积累,是咬着牙不放弃的坚持。
而现在,新的征程才刚刚开始。
t厂的工作、投资系统的优化、未来可能的创业机会……每一条路都充满挑战,但也充满可能性。
“对了,”苏婉忽然想起什么,“你入职之后,是不是要经常加班?t厂好像以加班狠出名。”
“看团队吧。”林晨说,“陈博士的团队,应该更看重产出而不是工时。而且我现在有经验了,知道怎么高效工作,不会像年轻时那样盲目熬夜。”
“那就好。”苏婉抬起头,看着他,“身体最重要。我可不想你钱赚到了,身体垮了。”
“放心。”林晨笑着亲了亲她的额头,“为了你和乐乐,我也会保重自己的。”
苏婉也笑了,凑过来在他唇上轻轻一吻。
“庆祝还没结束呢。”她眨眨眼,“蛋糕还没吃。”
“对哦。”林晨站起身,“我去切。”
蛋糕很甜,奶油入口即化。两人分着吃了一小块,剩下的放进冰箱,留给明天回家的乐乐。
收拾完餐桌,林晨拉着苏婉坐到阳台的躺椅上。夜空澄澈,能看到几颗星星。
“下周我去入职,”林晨握着她的手,“你也要照顾好自己。别太累,该花的钱就花,别省着。”
“知道啦。”苏婉靠在他肩上,“你现在可是我们家赚得最多的人了,说话都硬气了。”
“不是硬气,”林晨认真地说,“是责任。以前让你承担了太多,以后该我来了。”
苏婉没说话,只是握紧了他的手。
夜风吹过,带着初夏的暖意。远处,鹏城湾的灯光倒映在海面上,粼粼闪烁,像撒了一地的碎钻。
这个城市依然忙碌,依然残酷,依然每天上演着成败起落。
但至少在今夜,在这个小小的阳台上,有一对夫妻,正握着彼此的手,看着同一片星空,心里装着同一个未来。
而他们的故事,才刚刚翻开新的一页。
第138章 拒绝创业公司
上午十点,鹏城的阳光透过阳台玻璃,在客厅地板上投下明亮的光斑。
林晨坐在电脑前,屏幕上开着投资系统的监控界面。自研的多因子模型正在平稳运行,过去一周的收益率稳定在3.2%。这个数字不算惊艳,但胜在稳定——对于用二十万块本金起步、实盘刚满半年多的新系统来说,已经远超他的预期。
手机震动起来。
是个深圳本地的陌生号码。林晨看了眼来电显示,心里大概有了猜测。他深吸一口气,拿起手机走到阳台才接通。
“喂,您好。”
“林先生您好,我是锐创科技的hR王小姐。”电话那头传来年轻女性干练的声音,“之前跟您沟通的算法工程师岗位,您考虑得怎么样了?我们这边流程比较快,希望尽快得到您的答复。”
锐创科技,一家专注AI医疗影像的初创公司。林晨一周前面试过,技术面顺利通过,hR面时对方给出了28Kx15薪的offer,加上期权——换算成年薪大约42万,远低于他120万的预期,但比起之前那些web3公司已经好了太多。
如果是一个月前接到这个电话,林晨可能会毫不犹豫地答应。
但现在……
“王小姐,非常感谢锐创给我的机会。”林晨斟酌着措辞,目光投向远处南山方向t厂总部大楼的轮廓,“面试过程中,我能感受到团队的技术热情和业务前景。不过……”
他顿了顿,决定坦诚:“我已经接受了另一家公司的offer,很抱歉无法入职锐创了。”
电话那头沉默了一瞬。
“这样啊……”王小姐的声音里带着一丝意外,但很快恢复了职业化的礼貌,“明白了,恭喜您。方便问一下是去了哪家公司吗?”
“t厂。”林晨没有隐瞒。
“那确实是个好平台。”王小姐语气中多了几分了然,“祝您在t厂发展顺利,有机会再合作。”
“谢谢您,也祝锐创发展越来越好。”
挂断电话后,林晨在阳台站了一会儿。
初夏的风带着些许燥热,楼下小区花园里有老人推着婴儿车散步,几个孩子追着跑来跑去。这种平凡的生活场景,在失业那几个月里曾让他感到刺痛——别人的安稳映照着自己的狼狈。
但现在不同了。
投资系统每天带来的收益虽然不多,但足以覆盖房贷和日常开销。更重要的是,t厂的录用通知书已经到手,入职时间定在下周一。
他走回客厅时,苏婉正从卧室出来。她今天上午没课,穿着居家服,头发松松地扎在脑后。
“谁的电话?”她问。
“锐创的hR,之前面试过的那家。”林晨把手机放在茶几上,在沙发坐下,“我正式拒绝了。”
苏婉在他旁边坐下,递过一杯温水:“你怎么想?”
“没什么好纠结的。”林晨接过水杯,语气很平静,“锐创的offer虽然不错,但平台、资源、未来发展空间,都和t厂不在一个量级。而且……”
他看向妻子:“如果去了锐创,万一公司发展不顺,再过几年我可能又面临同样的困境。但进了t厂,只要我自己不松懈,履历和经验会成为一辈子的底气。”
苏婉点点头,伸手握住他的手:“那就对了。”
简单的几个字,却让林晨心里一暖。
这一年来,这个女人陪他熬过了最焦虑的时期。在他通宵学习python时,她会默默煮好夜宵放在书房门口;在他面试失败回家沉默时,她会找些轻松的话题转移他的注意力;在他开发投资系统连续调试崩溃时,她会说“没关系,就当交学费”。
现在,当他站在选择的关口,她依然选择相信他的判断。
“入职材料都准备好了吗?”苏婉问。
“差不多了,离职证明、学历证书、体检报告……明天再去打印几份复印件。”林晨想了想,“银行卡也得去办一张t厂指定银行的。”
“那我明天陪你去。”苏婉说,“顺便去商场看看,入职总要买两件像样的衬衫。”
林晨笑了:“又不是没穿过正装。”
“那不一样。”苏婉认真地说,“以前是去面试,现在是正式上班。精气神不同,衣服也得配得上。”
窗外阳光正好,远处t厂大厦的玻璃幕墙在光线下折射出耀眼的反光。
林晨拿出手机,打开t厂hR发来的入职指引邮件,又看了一遍。下周一,他就要走进那栋大楼,成为其中的一员。
他想起半年前的那个下午——再次被裁员后,他坐地铁回家,经过科技园站时看到t厂大厦的轮廓在夕阳下沉默矗立。那时他觉得,那栋楼里的人生和自己隔着无法跨越的距离。
而现在,距离归零。
他保存好入职指引,关掉手机。
明天要去银行、办材料、买衬衫……有很多事要做。但此刻,他只想好好享受这个阳光明媚的上午。
这半年来的紧绷、焦虑、不确定,终于在这一刻找到了出口。
他知道,进入t厂不是终点,而是新的起点。那里有更强大的技术平台,更优秀的同事,更复杂的业务场景,以及更激烈的竞争。
但没关系。
他已经准备好了。
第139章 家人的喜悦
晚上七点半,鹏城华灯初上。
林晨站在阳台上,看着楼下花园里孩子们追逐嬉闹的身影,长长地舒了一口气。手机屏幕还亮着,hR发来的正式录用通知书邮件页面静静地显示着——t厂AI算法部,高级算法工程师(Leader),52Kx16薪,签字费3万,入职时间下周一。
他看了三遍,确认每一个字都没错。
厨房里传来苏婉轻快的哼歌声,是那首老掉牙的《甜蜜蜜》。乐乐趴在茶几上画画,蜡笔在纸上沙沙作响,画的是“爸爸去上班”——一个火柴人走进一栋高楼,楼顶还画了个歪歪扭扭的太阳。
“爸爸!”乐乐抬头喊,“妈妈说要吃披萨!”
“好,点你最爱吃的海鲜披萨。”林晨走回客厅,打开外卖软件。手指在屏幕上滑动时,他感觉有些恍惚——这一年来,每次点外卖都要反复比较价格,现在却能毫不犹豫地选择那家最贵的意式餐厅,还加了一份芝士焗龙虾。
“今天咱们奢侈一回。”苏婉从厨房端出刚拌好的蔬菜沙拉,脸上是藏不住的笑意,“乐乐,去洗手,准备吃饭了。”
“可是披萨还没到呀。”乐乐嘴上说着,还是乖乖跑去洗手间。
林晨下单支付,看着银行卡余额——虽然这半年花销不小,但投资系统持续盈利,加上之前剩余的积蓄,还有近二十万。更重要的是,从下个月开始,稳定的高薪收入将重新流入这个家庭。
他走到苏婉身边,从背后轻轻抱住她。
苏婉身体微微一僵,随即放松下来,靠在他怀里。“怎么啦?”
“谢谢你。”林晨把下巴搁在她肩头,“这半年……辛苦你了。”
“说什么呢。”苏婉转过身,眼睛有些湿润,“是你辛苦了。每天关在书房里学那些我看不懂的东西,面试失败回来还要强打精神……我都看在眼里。”
两人静静相拥了几分钟,直到门铃响起。
“披萨到啦!”乐乐欢呼着冲向门口。
外卖员送来两个大纸盒,海鲜披萨的香气瞬间弥漫整个客厅。林晨还额外点了烤鸡翅、薯条和可乐——完全是乐乐梦想中的晚餐配置。
餐桌被布置得格外隆重。苏婉甚至翻出了结婚纪念日时才用的烛台,点上两支香薰蜡烛。暖黄色的光晕中,一家三口围坐在一起。
“来,咱们干个杯。”林晨举起可乐罐,“庆祝爸爸找到新工作!”
“干杯!”乐乐兴奋地举起他的小杯子,里面是橙汁。
苏婉也举杯,目光温柔地看着丈夫:“恭喜你,林晨。”
三只杯子碰在一起,发出清脆的响声。
乐乐迫不及待地抓起一块披萨,芝士拉出长长的丝。“爸爸,新公司是不是特别厉害?”
“嗯,是国内最厉害的互联网公司之一。”林晨帮儿子擦掉嘴角的番茄酱,“爸爸以后就在那里上班了。”
“那爸爸是不是超级厉害?”乐乐眼睛亮晶晶的。
林晨和苏婉对视一眼,都笑了。
“爸爸不是超级厉害。”林晨揉了揉儿子的头发,“爸爸只是比别人更坚持了一点。”
“可是妈妈说你面试的时候把那些考官都说服了。”乐乐显然已经从妈妈那里听说了些片段,“妈妈说他们本来不想要年纪大的,但是爸爸太厉害了,他们就要了。”
苏婉脸一红:“我哪有这么说……”
“妈妈就是这么说的!”乐乐坚持道,“昨天你跟外婆打电话的时候说的,我听见了!”
林晨看向妻子,心里涌起一股暖流。原来在他不知道的时候,苏婉一直在家人面前维护他、夸赞他。
“好了好了,快吃吧,披萨要凉了。”苏婉岔开话题,但眼里的笑意藏不住。
这顿饭吃了将近一个小时。乐乐吃了两块披萨、三个鸡翅,小肚子圆滚滚的。林晨和苏婉慢慢吃着,聊着这半年的点点滴滴。
“记得你刚失业那会儿,整夜整夜睡不着。”苏婉轻声说,“有天凌晨三点我醒来,看见你站在阳台上抽烟——你戒烟都五年了。”
林晨点点头:“那时候确实慌。三十五岁,房贷,孩子,父母年纪也大了……感觉天要塌了。”
“但你撑过来了。”苏婉握住他的手,“而且比原来站得更高。”
“是因为有你在。”林晨反握住她的手,“记得我学tensorFlow那阵子,怎么都搞不懂反向传播算法,差点把电脑砸了。是你跟我说,慢慢来,一天搞不懂就两天,两天搞不懂就一周。”
“那是因为我知道你一定能行。”苏婉微笑,“你从小到大都是这样,越是难的事情,越要啃下来。”
乐乐吃饱了,抱着他的画本过来:“爸爸,你看我画的新画。”
画上是三个人——高大的爸爸,温柔的妈妈,还有小小的自己。三个人手拉手站在一栋闪闪发光的大楼前,天空画满了星星。
“这是咱们家吗?”林晨问。
“嗯!”乐乐用力点头,“这是咱们的新家!爸爸赚好多好多钱,咱们住大房子!”
童言无忌,却戳中了林晨心里最柔软的地方。他抱起儿子,亲了亲他的脸蛋:“好,爸爸努力,让咱们住上大房子。”
收拾完餐桌已经九点多了。乐乐被哄去睡觉后,客厅里只剩下林晨和苏婉。
两人并肩坐在沙发上,谁也没开电视。窗外是鹏城的夜景,远处京基一百大厦的灯光在夜空中勾勒出流畅的线条。
“下周一就入职了。”林晨轻声说,“有点紧张。”
“紧张什么?”苏婉靠在他肩上,“你连陈博士那么难缠的面试官都能搞定,还怕日常工作?”
“那不一样。面试是短时间集中展示,工作是长期相处。”林晨顿了顿,“而且t厂那种地方,牛人太多了。我这个年纪进去,如果不能快速证明价值,处境会很尴尬。”
苏婉坐直身体,认真地看着他:“林晨,你记住——你不是靠运气进去的。你是实打实通过了四轮技术面试,是被陈博士亲自点头要的人。他们看中的是你的技术深度和那个……那个什么成本观?”
“物理成本观。”林晨笑了。
“对,就是那个。这说明你的思维方式有价值。”苏婉语气坚定,“所以不要妄自菲薄。你比半年前强了太多太多,这不仅是技术上的,更是心态上的。”
林晨沉默片刻,点点头:“你说得对。”
他起身走到书房,打开电脑。投资系统的后台界面跳出来——过去24小时,A股组合收益率1.2%,期货策略盈利0.8%,外汇套利赚了0.3%。总资产已经从最初的5万增长到了8.7万。
“你看。”林晨招手让苏婉过来,“系统还在稳定赚钱。”
苏婉看着屏幕上跳动的数字和曲线,虽然看不懂那些技术指标,但能看懂最后那个收益总额。“三个月,差不多赚了四万?”
“嗯,年化收益率已经超过100%了。”林晨说,“不过这种高收益不可持续,市场会有波动。但我对系统的风控机制有信心,至少能保证长期正收益。”
“这已经很好很好了。”苏婉轻声说,“就算没有t厂的工作,咱们靠这个系统也能活下去。”
“但那不够。”林晨关闭页面,“我要的不仅是活下去,是让咱们家过得好,让你和乐乐不用为钱发愁,让爸妈晚年有保障,还有……”
他顿了顿:“还有帮帮林枫他们。”
提到大哥一家,苏婉眼神柔和下来:“林枫上次打电话来,说林浩在工厂干得不开心。这孩子才十九岁,天天在流水线上重复同一个动作,人都麻木了。”
“我知道。”林晨说,“上次不是跟林枫商量好了嘛,林浩已经辞了工厂的活,去培训学校学厨师了。”
“对,上个月林枫说已经报名了。”苏婉笑了笑,“那孩子从小嘴馋,爱琢磨吃的,说不定还真适合干这行。”
“等我在t厂站稳脚跟,平时多盯着点,帮他留意下有没有好的馆子能跟师傅。”林晨靠在床头,“学门手艺比在工厂耗着强多了,将来走到哪儿都有口饭吃。”
苏婉点点头:“林枫一家在老家不容易,你能拉一把是一把。”
“一家人,应该的。”林晨看了看时间,已经十点半了,“睡吧,明天还有一堆事要准备——体检、办银行卡、准备入职材料。”
洗漱躺下后,林晨却一时睡不着。
黑暗中,他睁着眼睛看天花板。这半年的画面在脑海中闪回——被hR通知裁员时的错愕,投出上百份简历石沉大海的焦虑,自学时看不懂论文的烦躁,面试失败后坐在地铁站发呆的茫然……
然后画面转到陈博士的办公室,那个头发花白的老教授问他:“你认为AI的本质是什么?”
他回答:“是物理成本的最优解。”
那一刻,他看见陈博士眼睛亮了。
手机震动了一下。林晨拿起来看,是张伟发来的微信:“听说你拿到t厂offer了?牛逼啊兄弟!改天必须请客!”
林晨笑着回复:“一定。多谢你之前的内推和建议。”
“客气啥。对了,t厂AI部门现在主攻大模型,你进去后肯定要接触这块。有什么需要帮忙的随时说,我虽然搞web3,但大厂里还有几个朋友。”
“好,多谢。”
放下手机,林晨感觉心里踏实了许多。这条路走对了。技术、人脉、平台——他正在一点点重建自己的职业体系。
苏婉翻了个身,迷迷糊糊地问:“还不睡?”
“就睡。”林晨侧过身,轻轻抱住妻子,“婉婉,咱们的好日子要来了。”
“嗯……”苏婉往他怀里靠了靠,“我一直都相信。”
深夜的鹏城渐渐安静下来。远处偶尔传来车辆驶过的声音,更衬得夜色深沉。在这个均价八万一平的小区里,这个九十平米的家终于驱散了笼罩半年的阴霾。
林晨闭上眼睛,脑海里已经开始规划未来——t厂的工作要怎么做才能快速立足,投资系统需要增加哪些新策略,林枫那边什么时候联系合适……
每一步都清晰可见。
而此刻,他允许自己先享受这份久违的、纯粹的喜悦。
第140章 报喜父母
窗外的鹏城湾夜色渐浓,科技园的写字楼群依旧灯火通明。林晨站在阳台上,晚风带着初夏的微热拂过脸颊,手机屏幕亮着,显示着老家湖南那个熟悉的区号。
他深吸一口气,按下了拨号键。
电话响了七八声才被接起,听筒里传来母亲有些喘的声音:“喂?晨晨啊,这么晚打电话,是不是有什么事?”背景音里隐约有电视节目的声响,应该是父母刚看完晚间新闻。
“妈,爸在旁边吗?”林晨的声音里带着笑意。
“在呢在呢,你爸就在沙发上坐着。”母亲的声音立刻警觉起来,“怎么了?是不是工作的事……”
“让爸也听着,我有个好消息要告诉你们。”
电话那头传来窸窸窣窣的声音,接着父亲略显沙哑的嗓音响起:“晨晨,什么事?”
林晨清了清嗓子,尽量让语气平静,但嘴角已经抑制不住地上扬:“爸,妈,我拿到t厂的offer了。就是国内最大的那家互联网公司,他们的人工智能部门,职位是高级算法工程师。”
电话那头沉默了足足三秒钟。
“t……t厂?”母亲的声音陡然拔高,“就是那个上过新闻,特别难进的t厂?”
“对,就是那个。”
“我的天……”母亲的声音开始发颤,“你等等,你等等,让我缓一缓。老头子,你听见没有?儿子进t厂了!”
父亲的声音还算镇定,但语速明显快了不少:“什么时候的事?面试都通过了?待遇怎么样?”
“今天下午正式收到的邮件。面试前前后后折腾了一个多月,总共五轮,最后一轮是大老板亲自面的。”林晨顿了顿,说出了那个数字,“月薪五万二,十六薪,还有股票期权。”
电话那头传来母亲倒吸凉气的声音。
“多……多少?”父亲的声音也绷紧了。
“五万二一个月,一年发十六个月工资。算下来年薪八十多万,加上期权可能更高。”林晨一字一句地说,“而且这是在鹏城,t厂的薪资水平在行业里是顶尖的。”
“八十多万……一年……”母亲喃喃重复着,声音里带着难以置信的哽咽,“晨晨,你……你再说一遍,妈是不是听错了?”
林晨的眼眶忽然有些发热。他能想象出此刻千里之外,湖南那个小县城的老旧家属楼里,父母坐在褪色的布艺沙发上,对着那台用了十年的老式手机,脸上会是怎样的表情。
“没听错,妈。”他的声音柔和下来,“是真的。我下周一就去办入职手续。”
“好……好……真好……”母亲的话已经有些语无伦次了,“我就知道……我就知道我儿子行!这半年你天天关在屋里学那些什么AI,妈虽然不懂,但看你那个认真劲儿,就知道肯定能成!”
父亲接过电话,声音比平时洪亮了许多:“晨晨,你听爸说。t厂是大平台,机会难得,但压力肯定也大。去了以后要脚踏实地,把技术搞扎实,跟同事处好关系。咱们家没什么背景,一切都要靠你自己,知道吗?”
“我知道,爸。”
“待遇是很好,但千万别骄傲。”父亲的声音严肃起来,“这年头变化快,今天好不代表明天也好。你要记住,这工作是你这半年没日没夜学出来的,要继续保持这个学习劲儿。”
“嗯,我明白。”
母亲又把电话抢了过去:“别听你爸老说这些!晨晨,妈为你高兴!真的……这半年妈和你爸晚上都睡不好,看着你被裁员,看着你天天投简历没消息,看着你头发一把把地掉……”她的声音哽咽了,“现在好了,现在好了……妈明天就去菜市场,买条大鱼,咱们家也庆祝庆祝!”
林晨鼻子一酸。这半年,他每次打电话回家都尽量语气轻松,但父母怎么可能察觉不到他的压力?那些故作轻松的通话背后,是母亲辗转反侧的夜晚,是父亲在阳台上一根接一根抽烟的沉默。
“妈,对不起,让你们担心了。”
“傻孩子,说什么对不起!”母亲的声音带着哭腔,却又在笑,“爸妈担心你是应该的。现在好了,我儿子进t厂了,看以后谁还敢说三十五岁就没人要了!咱们老林家,也出了个进大厂的人才!”
父亲在旁边插话:“跟你姐和你哥说了没有?”
“还没呢,第一个就给你们打的电话。等会儿再跟大哥和大姐说。”
“应该的,应该的。”父亲的声音里满是欣慰,“晨晨啊,你记住,这个工作不光是赚钱的事。你这半年憋着一股劲儿,从跨境电商转到人工智能,从失业到进t厂,这是你自己拼出来的路。以后不管遇到什么困难,想想这半年你是怎么过来的,就没什么过不去的坎。”
“爸,我记住了。”
母亲又抢过话头:“对了,待遇的事……先别跟亲戚们说太细。就说是进了t厂,待遇不错就行。咱们自己心里高兴就好,知道吗?”
林晨笑了:“妈,我又不是小孩子了。”
“在妈眼里你永远都是孩子。”母亲的声音温柔下来,“晨晨,婉婉和乐乐都高兴坏了吧?”
“嗯,晚上我们点了披萨庆祝。乐乐特别开心,说爸爸以后可以去他学校开家长会了——之前我失业那段时间,他都不让我去,怕同学问他爸爸是做什么的。”
电话那头沉默了片刻。
母亲的声音再次响起时,带着心疼:“这孩子……懂事得让人心疼。晨晨,现在好了,一切都好了。你好好干,等年底放假,带婉婉和乐乐回老家住几天。妈给你们做好吃的,红烧肉、腊鱼、糍粑……把你这半年瘦掉的肉都补回来!”
“好,一定回来。”
又聊了二十多分钟,父母把入职要准备什么、租房要不要换、通勤方不方便问了个遍,这才依依不舍地挂断电话。
林晨放下手机,站在阳台上久久未动。
远处,t厂总部大楼的Logo在夜空中亮着醒目的光。就在那座大楼里,他将拥有一个工位,一台电脑,和一个全新的开始。半年前再次被裁员时那种天塌地陷的感觉,此刻想来竟然有些遥远——不是痛苦消失了,而是这段路走下来,他已经不再是当初那个迷茫焦虑的中年码农。
手机震动了一下,是母亲发来的微信:“儿子,妈和你爸高兴得睡不着了。你爸刚才偷偷抹眼泪呢,我看见了。他是为你骄傲。好好干,但也别太累。爱你的妈妈。”
林晨看着这条信息,眼眶终于湿了。
他打字回复:“妈,我会的。你们也注意身体,等我稳定下来,接你们来鹏城住段时间。”
回完信息,他打开通讯录,找到了大哥林枫的号码。
电话很快接通,大哥粗犷的声音传来:“晨晨?这么晚打电话,有事?”
“哥,跟你说个事。”林晨的声音里带着笑意,“我找到工作了,t厂,做人工智能。”
“t厂?!”大哥的声音瞬间炸开,“我靠!真的假的?!就是那个……那个特别牛逼的t厂?!”
“真的,下周一入职。”
“牛逼啊兄弟!”大哥兴奋得声音都变了调,“我就知道你能行!这半年你天天学那些我看都看不懂的东西,果然没白学!待遇怎么样?t厂给钱应该大方吧?”
林晨报了个大概数字。
电话那头传来大哥倒吸凉气的声音,接着是重重拍大腿的声响:“可以啊!这下彻底翻身了!弟妹和乐乐高兴坏了吧?等等,我得告诉你嫂子……老婆!老婆!快来!晨晨进t厂了!”
听着电话那头大哥兴奋的嚷嚷声,林晨笑着摇摇头。等那边的骚动稍微平息,他才开口:“哥,小浩最近怎么样?”
“那小子?”大哥的语气里带着几分欣慰,“上个月听了你的建议,已经从电子厂辞职,去培训学校学厨师了。刚开始还不太适应,最近倒越学越来劲了,天天在家琢磨炒菜,把我们老两口当试菜的。”
林晨笑了:“那就好,学门手艺比在工厂耗着强。”
“可不是嘛。”大哥感慨道,“你给他指这条路算是走对了。这孩子从小就嘴馋爱琢磨吃的,现在总算找到了个正经方向。”
林晨望向夜空,脑海中浮现出侄儿林浩那张憨厚而认真的脸。
“哥,让他好好学,”他说,“等我在t厂稳定下来,帮他留意下鹏城这边好的馆子,到时候找个靠谱的师傅带着,将来走到哪儿都有口饭吃。”
“有你这话我就放心了。”大哥的声音里满是笑意,“你自己也注意身体,别光顾着工作。”
第141章 同学群的回应
鹏城的早晨,雨后的空气带着一丝清爽。林晨坐在书房里,窗外是小区里早起遛狗的老人和赶着上班的年轻人。他刚结束一个多小时的python代码练习,揉了揉有些发涩的眼睛,顺手拿起了桌上的手机。
微信图标右上角显示着红色的“99+”。他皱了皱眉,点开一看,是那个沉寂许久的大学同学群。
群名还叫“计科0801永不散”,但上一次热闹讨论,似乎还是半年前某个同学结婚发红包的时候。此刻,消息正以惊人的速度刷新着。
林晨往上翻了翻,找到了引爆点。
上午8点47分,一个备注为“王磊-帝都”的账号发了一条消息:
【喜报】经过六年努力,今日正式晋升为A厂云事业部总监,年薪+期权首次突破百万。感谢母校培养,感谢各位同学当年的帮助。特别感谢老婆一直以来的支持![抱拳][抱拳]
下面附了一张照片:办公室落地窗前,一个穿着浅蓝色衬衫、戴着无框眼镜的中年男人意气风发地站着,背景是帝都cbd的楼群。照片拍得很有专业水准,光线、构图都透着一种“成功人士”的精致感。
这条消息像一颗投入平静湖面的石子。
“我靠!磊总牛逼!!!”第一个回复的是当年班里的活跃分子赵阳,后面跟着三个啤酒表情。
“百万年薪!磊哥这是走上人生巅峰了啊![强][强]”这是留校读研后现在老家省城一所二本院校当讲师的李雯。
“恭喜王总!A厂云事业部,那可是核心中的核心!下次去帝都必须请客!”说话的是在魔都一家外企做项目经理的孙浩。
“@王磊-帝都 厉害了我的哥!还记得当年一起在宿舍打cS吗?现在你都总监了,我还在苦逼地写业务代码[捂脸]”这是同样在鹏城,但在一家中小型互联网公司做开发的老同学周斌。
“王磊同学一直是咱们班的标杆!踏实、努力、有规划!恭喜恭喜!”连当年不怎么说话的学习委员都冒泡了。
“百万年薪……我算了算,得是我现在工资的五倍[裂开]”有人半开玩笑地哀嚎。
“磊哥,还缺拎包的小弟吗?求带飞!”这是混得不太如意,在群里偶尔抱怨工作的同学。
“@王磊-帝都 嫂子是不是就是当年外语系那个系花?郎才女貌,事业家庭双丰收,人生赢家模板啊!”
祝福、羡慕、调侃、自嘲……消息一条接一条,表情包满天飞。群里许久未曾有过的热闹,几乎所有人的注意力都被这则“喜报”吸引了过去。有人开始@其他据说也混得不错的同学,问近况,比成就,气氛微妙地朝着“成功人士展示会”的方向滑去。
林晨默默地看着。他的手指悬在屏幕上方,那个小小的输入框空空如也。
王磊。他当然记得。大学时不算特别熟,但一起做过课程设计。印象中是个目标明确、执行力很强的人,成绩中上,但很早就开始实习,毕业就去了当时如日中天的一家通信设备商,后来跳槽去了互联网。这些年断断续续在群里看到过他的动态,买房,结婚,生子,跳槽,每一步都踩得很稳。如今,三十五岁,大厂总监,年薪百万——这几乎是他们这个专业、这个年龄段的许多人心目中的“标准成功路径”了。
而自己呢?
林晨下意识地扫了一眼书房。书桌上摊开着《深度学习实战》和《python金融大数据分析》,旁边笔记本屏幕上还停留着未完成的pytorch模型训练代码。墙角堆着一些打印出来的面试资料和算法笔记。空气里还残留着昨晚泡面的味道。
三十五岁,即将入职t厂高级算法工程师。虽然要从头开始,但那扇曾经遥不可及的门,他已经拿到了钥匙。从失业到t厂,这条跌跌撞撞的路,终究是走过来了。
同学群里,又有人发了一张截图,是王磊朋友圈的更多细节:豪华的办公室、团队合影、还有一张疑似在某个高端场所庆祝的照片。下面的评论更是清一色的“仰望”、“楷模”。
周斌又@了林晨一次:“@林晨-鹏城 晨哥,最近咋样?好久没你消息了。咱们在鹏城的几个啥时候聚聚?”
林晨的手指动了动。这一次,他没有犹豫,直接打字:“刚拿到t厂的offer,下周一入职。回头安顿好了约你们吃饭。”
发送。
消息发出去后,群里短暂地安静了两秒。
“卧槽!t厂!晨哥牛逼啊!!!”周斌第一个回复,后面跟着一串惊叹号。
“林晨去t厂了?哪个部门?AI吗?”学习委员也冒了出来。
“恭喜恭喜!t厂算法岗,这可是真大佬!”
“牛啊林晨,深藏不露!什么时候面试的?”
林晨看着屏幕上快速刷新的消息,嘴角微微翘起。他没有一一回复那些问题,只是在群里又补了一句:“运气好,赶上最后一班车。先不说了,准备入职材料,回头聊。”
退出群聊,他把手机放在桌上。
刚才那种微妙的、被比较压着的感觉消散了大半。不是因为他现在能和王磊比肩——人家是总监,百万年薪,自己只是高级工程师,薪资也差着一截。但他清楚地知道,从半年前再次被裁员、自学AI、一次次面试被拒,到今天拿到t厂的offer,这条路他走得比任何人都清楚有多难。
王磊的成功是真实的,可敬的。但那是一条他未曾选择的路。他现在走的,是另一条——更陡峭,更不确定,但终究走通了的路。
他重新将目光投向电脑屏幕。pytorch的代码编辑器里,一个关于卷积神经网络用于图像识别的训练脚本正停在某个报错的地方。错误信息显示维度不匹配。
如果是以前,在这种心情起伏的时候,他可能会烦躁地合上电脑。但现在,他只是移动鼠标,点开错误行,开始仔细检查代码。
一行,又一行。查找文档,比对示例,调整参数……
半个小时后,那个红色的报错消失了。训练脚本开始运行,进度条缓缓前进。
林晨靠在椅背上,长长地吐出一口气。心情彻底平静下来,那些对比、焦虑、不甘,都被眼前这具体而微的“问题解决”冲散了。
他再次拿起手机,这次不是打开微信,而是点开了股票软件。自选股列表里,几只他最近在研究其量价关系的股票正泛着红绿绿的光。他的眼神变得专注起来,手指在屏幕上滑动,调出K线图和技术指标。
那个在心底慢慢成形的想法——用技术构建投资系统——正在从模糊变得清晰。
同学群的喧嚣,已被他暂时隔绝在另一个世界。在这个世界里,只有数据、逻辑、以及一个三十五岁男人在AI时代重新找到方向的、沉默而坚韧的努力。
第142章 入职材料准备
早上八点半,林晨刚完成一组简单的拉伸,准备开始今天的代码练习,手机邮箱的提示音就响了起来。
他心头一跳,快步走到书桌前拿起手机。发件人是t厂hR部门,主题是:“【t公司入职指引】材料准备及体检须知”。
手指划过屏幕,一封格式严谨、内容详尽的邮件展开。
“尊敬的林晨先生:欢迎您即将加入t公司AI平台事业群-机器学习平台部。为确保您顺利入职,请仔细阅读以下指引……”
林晨逐字逐句地读着,呼吸不自觉地放缓。邮件正文之后,附着一个pdF附件,列出了详细的入职准备清单。
他点开pdF,目光首先落在几个关键信息上:
职位:高级算法工程师
部门:AI平台事业群-机器学习平台部-模型优化组
工作地点:鹏城南山区,t科技园总部
入职日期:下周一
试用期:三个月
邮件还详细列出了需要准备的各项材料:身份证、学历学位证书(及学信网验证)、近期一寸照片、指定医院的入职体检报告、上一家公司的离职证明、银行卡信息等。
事情一下子具体而琐碎起来。林晨喜欢这种具体,这意味着一只脚已经踏进了新世界的大门。
他先预约了距离最近的鹏城市人民医院的入职体检,时间定在明天上午。然后开始翻箱倒柜,找出压在箱底的毕业证和学位证原件,拍照,又登录学信网申请了电子验证备案表。离职证明是当初办完手续就开好的,一直收在文件夹里。照片……好像没有最新的了,下午得去照相馆拍一版正式的。
正盘算着,书房门被轻轻推开,苏婉端着切好的水果进来。她今天上午没课,在家备课。
“怎么了?看你忙进忙出的。”苏婉把果盘放在桌角。
“t厂的入职指引邮件到了,得准备一堆材料。”林晨把手机屏幕转向她,“体检、证件、离职证明……体检,然后交材料。”
苏婉接过手机仔细看了看,脸上露出如释重负的笑容:“终于等到这一天了。需要我陪你一起去吗?”
“不用,我自己去就行。你在家备课吧。”林晨咬了口苹果,清甜多汁。
下午,林晨去了照相馆,拍了一版精神的一寸照。回来的路上,他特意绕到科技园附近转了转。t厂那几栋标志性的玻璃幕墙大楼在阳光下熠熠生辉,楼下绿意盎然的园区里,穿着各式文化衫的年轻人步履匆匆,或聚在一起讨论着什么。一种蓬勃的、充满技术荷尔蒙的气息扑面而来。
他停下脚步,远远望着。几天后,他就会成为他们中的一员。不再是那个被裁员后迷茫焦虑的中年码农,而是t厂AI部门的高级算法工程师。角色转变,天地已然不同。
接下来的几天,林晨按部就班地完成各项准备。体检很顺利,除了轻度脂肪肝,其他指标一切正常。他登录t厂的入职系统,在线填写了详细的个人信息——紧急联系人、学历履历、工作经历、家庭成员,每一项都仔细核对,确认无误后提交。
系统提示“信息已提交,hR审核中”时,他又收到一封自动邮件,要求上传各类入职材料的电子版。林晨把提前扫描好的身份证、毕业证、学位证、离职证明、体检报告、一寸照片一一上传,每传一份,系统就会打上一个绿色的对勾。最后只剩下银行卡信息——他专门去t厂指定的银行办了新卡,把卡号也填了进去。
页面显示“材料上传完成,共9项,待审核”。
等待审核的同时,林晨也没闲着。他开始系统性地梳理自己过去几个月自学的AI知识体系,特别是深度学习模型优化、分布式训练框架这些与应聘岗位强相关的内容。他把学习笔记、项目代码都重新整理归类,备份到云端和移动硬盘。他甚至还抽空看了几篇t厂AI实验室近期发表的顶会论文,尝试理解他们的技术思路和前沿方向。
他知道,进入t厂只是开始。那里的竞争只会更激烈,技术迭代更快。保持持续学习和深入思考的习惯,是他未来安身立命的根本。
林晨已经把所有能提前准备的材料都备齐了。文件袋里整整齐齐地装着身份证复印件、学历学位证书原件及复印件、学信网验证报告、离职证明、一寸照片、体检报告回执……就可以全部提交。
入职前最后一个周末晚上,林晨和苏婉带着乐乐去商场吃了一顿不错的晚餐。席间,乐乐好奇地问:“爸爸,你以后要去那个有很多聪明人的大楼上班了吗?”
“是啊。”林晨摸摸儿子的头。
“那爸爸以后会更厉害吗?”
“爸爸会努力变得更厉害,然后教乐乐更多好玩的东西,好不好?”
“好!”乐乐开心地挥舞着小勺子。
饭后,一家人沿着商场外的步行道慢慢走回家。鹏城的夜空难得能看到几颗星星,晚风带着初夏的暖意。林晨牵着苏婉的手,看着身边蹦蹦跳跳的儿子,感到一种久违的、平静的满足。
事业的新起点就在眼前,家庭的温暖支撑在侧。过去的低谷已然翻篇,未来的画卷正徐徐展开。
周日下午,所有材料收集齐了。林晨第一时间登录系统,把所有准备好的材料一一上传提交。页面显示“材料已提交,待审核”时,他靠在椅背上,长长地呼出一口气。
所有前期流程全部绿灯。
他关上电脑,走到窗边。远处,科技园方向依旧灯火通明,那是无数代码和梦想在深夜燃烧的痕迹。
一周的准备与等待,终于走到了终点。明天,他将以全新的身份,踏入那个光与电交织的世界。
真正的考验,也才刚刚开始。
第143章 知识储备
拿到t厂正式offer后的第一天,林晨就开始了紧锣密鼓的准备。
体检、办银行卡、拍证件照、上传材料、填写入职信息……行政事务一件接一件,但他没有让这些琐事占据全部时间。相反,他把每件事都安排得紧凑高效——上午跑医院体检,下午回来就打开电脑学习;中午等体检报告的空档,他坐在医院走廊里翻看t厂技术博客;拍完证件照等出片的间隙,他在照相馆旁边的咖啡厅里读了两篇论文。
他清楚地知道,拿到offer只是拿到了入场券,真正要在t厂这样的顶级技术公司立足,尤其是以35岁的“高龄”作为高级算法工程师加入,必须展现出远超预期的价值。
“不能有任何侥幸心理。”林晨对自己说。
体检结束后的那天下午,他就开始了系统的知识储备。第一件事,就是深入研究t厂公开的技术栈和工程实践。
t厂作为国内互联网巨头,其技术体系庞大而复杂,但好在有相当一部分最佳实践和工具链已经通过开源项目、技术博客和内部人员对外分享的论文公之于众。林晨的目标很明确:在入职前,尽可能熟悉这些工具和范式,缩短入职后的适应期。
他首先从Github上找到了t厂开源的几个核心项目。一个是他们自研的深度学习训练框架“昆仑”,另一个是高性能模型推理引擎“星矢”。这两个项目在业内颇有声誉,但林晨之前更多是从用户角度了解,现在需要从开发者角度深入。
“昆仑框架的分布式训练设计思路很独特,”林晨一边阅读源码注释,一边在笔记本上记录,“它没有完全依赖pytorch或tensorFlow的原有分布式接口,而是在底层通信和任务调度上做了大量优化,特别是针对他们自研的AI芯片……”
代码量很大,但林晨强迫自己静下心来,从核心架构文档看起,然后追踪关键类的实现。他打开pycharm,将项目克隆到本地,尝试编译运行其中的示例。过程中遇到了几个环境配置问题,他一一搜索解决,这个过程让他对t厂的开发环境要求有了初步感知。
材料上传完等待审核的那两天,林晨更是把全部精力投入到了技术储备中。他甚至连午休都取消了,吃完饭就坐到电脑前,一看就是几个小时。苏婉有时候进来送水果,看到他专注的样子,也不忍心打扰,只是悄悄把果盘放下就退出去。
除了框架本身,林晨还重点关注了t厂在模型压缩、量化、蒸馏等方面的实践。他在arxiv上找到了几篇t厂研究院发表的论文,一篇关于“动态结构化剪枝”的方法让他眼前一亮。
“这种方法可以在推理阶段根据输入数据动态决定网络中哪些部分需要被激活,哪些可以跳过,”林晨仔细研读着论文中的公式和实验数据,“相比静态剪枝,能在保持精度的同时获得更大的加速比……这个思路可以借鉴到我的投资系统中。”
他说的投资系统,指的是那套正在稳定运行的智能投资系统。虽然主要策略是量化交易,但模型推理速度直接影响着策略执行的及时性。林晨立刻在本地复现了论文中的核心算法,用自己系统中一个较小的时序预测模型做测试,推理速度确实提升了约18%。
这个发现让林晨有些兴奋。他意识到,在t厂这样的工业级场景中,对性能的极致追求催生了许多学术界未必会重点关注但极具实用价值的技术。这些技术反过来又能反哺他自己的项目。
收集材料这几天,林晨的作息回到了备考状态。早上七点起床,简单早餐后开始学习。上午通常阅读论文和技术文档,下午动手实践,晚上则整理笔记、查漏补缺。有时候一抬头,窗外天已经黑了,他才意识到自己又坐了一整个下午。
苏婉看他这么拼,既心疼又欣慰,只是默默把饭菜做得更营养,晚上给他热一杯牛奶。
“别太累着了,身体要紧。”苏婉把牛奶放在他手边。
林晨从屏幕上移开视线,揉了揉发酸的眼睛:“放心,我心里有数。就是觉得……机会来之不易,得多准备点。而且这些材料提交完还得等审核,闲着也是闲着,不如多学点。”
“我知道。”苏婉轻轻按了按他的肩膀,“乐乐今天还说,爸爸又要去大公司打怪升级了。”
林晨笑了:“这小子……”
家庭的支持让他心里温暖,也让他更有动力。他知道自己不仅仅是为了自己,也是为了这个家在奋斗。
学习过程中,林晨也遇到了不少困惑。有些内部工具的设计理念与业界主流做法差异较大,他需要反复揣摩背后的设计考量。有些论文中的实验细节描述不够充分,复现起来困难重重。
有一次,他在尝试理解t厂自研的一种“混合精度训练流水线”时卡住了。文档描述比较简略,网上相关资料也很少。林晨没有硬钻牛角尖,而是换了个思路——他在Github上找到了几个疑似t厂员工的个人账号,通过他们提交的issue和pR记录,侧面了解这些工具在实际项目中是如何被使用的。
这种“曲线救国”的方法很费时间,但往往能发现官方文档中不会提及的实际痛点和解决方案。林晨在一个开源项目的讨论区里,甚至看到有t厂员工抱怨某个ApI的设计反人类,下面跟了一串“+1”的评论。这让他会心一笑——原来大厂的工程师也会吐槽自家工具。
除了技术细节,林晨也开始有意识地了解t厂AI部门的组织架构和业务方向。通过领英、脉脉等平台,他搜索了未来可能加入的团队信息,了解团队主要负责的产品线、技术栈和近期公开的技术分享。
他注意到,自己即将加入的“AI平台部”下设多个方向,其中“大模型训练与推理优化”组似乎是最核心的团队之一,也是技术挑战最大的。陈博士在面试时提到过这个组,但具体会分配到哪个方向,还要看入职后的安排。
“大模型……”林晨喃喃自语。他知道这是当前AI领域最炙手可热的方向,也是算力消耗最大、技术壁垒最高的领域。如果真能进入这个组,意味着将接触到国内最前沿的模型训练实践,但同时也意味着巨大的压力和挑战。
入职前这一周的时间,在密集的学习和行政准备中过得飞快。体检报告出来了,银行卡办好了,材料审核通过了,证件照也拍好了——所有流程一路绿灯。而林晨的笔记本上,也密密麻麻记录了近百页的技术要点、源码分析、问题记录和思考。
他建了一个本地知识库,用markdown文档分类整理了学到的所有内容:从t厂的cI/cd流程规范,到内部机器学习平台的架构设计;从常用数据集的预处理流程,到模型上线的A/b测试框架。
这些知识有些已经掌握,有些还只是初步了解,但至少让林晨对即将进入的环境有了相对清晰的认知地图。他知道哪里可能是陷阱,哪里是捷径,哪些工具需要优先掌握。
所有材料都已提交完毕,系统显示“审核通过”。林晨稍微放慢了节奏,开始回顾整理自己的项目代码,特别是那套智能投资系统。他优化了几个模块的代码结构,更新了文档,确保即使自己未来工作忙碌,这套系统也能稳定运行,持续产生收益。
系统后台显示,过去一个月,投资组合的整体收益率维持在3.2%左右,波动率控制得不错。虽然绝对收益额还不算很高,但稳定的正收益已经让林晨的财务状况逐渐改善。他算了一下,按照这个趋势,加上t厂即将到账的薪资,年底前应该能缓解大部分经济压力。
这让他心里更踏实了。经济上的缓冲垫,让他可以更专注于技术本身,而不是为生计焦虑。
最后一天晚上,林晨合上电脑,走到阳台上。夜幕下的鹏城灯火璀璨,远处南山科技园的方向,t厂总部大楼的LoGo在夜空中隐约可见。
他深吸一口气。焦虑感已经基本消散,取而代之的是一种跃跃欲试的期待。他想起陈博士面试时说的那句话:“我们需要的不是已经知道所有答案的人,而是有能力在未知中寻找路径的人。”
这两周的疯狂学习,就是他为自己准备的“寻路工具”。
手机震动了一下,是hR发来的最终确认邮件,附带了明天的入职报到指引:时间、地点、需要携带的材料,以及一句简短的欢迎。
林晨回复确认,然后给苏婉发了条消息:“明天我早点出门,怕路上堵。”
很快收到回复:“好,早餐给你准备好。加油。”
简单的几个字,却让林晨心里涌起一股暖流。他抬头望着夜空,忽然想起多年前刚来鹏城时,也是这样站在出租屋的阳台上,对未来既迷茫又充满憧憬。
十几年过去了,他经历了高峰和低谷,如今又一次站在新的起点。
这一次,他准备好了。
回到书房,林晨最后检查了一遍明天要带的材料:身份证、学历证书、离职证明、体检报告……所有文件整齐地装在文件夹里。他的目光落在书桌角落那本厚厚的笔记上,那是他过去几个月自学AI的全部心血,也包括这两周针对t厂的专项学习。
他犹豫了一下,最终没有把笔记放进包里。那些知识已经在他脑子里了,更重要的是,他明白真正的挑战不在于记住了多少,而在于能否在真实的、复杂的工业场景中灵活运用。
关灯前,林晨最后看了一眼电脑屏幕。浏览器还开着几个标签页,其中一个是他今天下午刚发现的——t厂内部一个尚未完全开源但已有部分技术细节流出的项目,代号“星图”。据零星信息推测,这可能是一个面向超大规模模型训练的任务调度与资源管理系统。
文档极少,只有几篇相关的技术分享ppt截图流传在外。但仅仅是那些碎片信息,已经让林晨嗅到了其中蕴含的巨大技术深度和挑战性。
“星图……”他默念着这个名字,心里隐隐有种预感。
这或许就是他入职后,将要面对的第一个真正硬核的挑战。
第144章 购置装备
清晨的阳光透过窗帘缝隙,洒在林晨的书桌上。他刚完成今日的量化系统数据复核——账户总资产已悄然突破二十五万元关口,月化收益率稳定在3.2%左右。合上用了五年的旧款联想笔记本,那磨损的键盘和偶尔卡顿的风扇声,此刻显得格外刺耳。
“该换装备了。”林晨喃喃自语。
下周就要正式入职t厂,进入那个以技术硬件豪华着称的“土豪”公司。他环顾自己这间兼作书房的小卧室:一张旧书桌,一把工学椅是去年咬牙买的,除此之外再无长物。过去几个月,靠着这台老笔记本和家里的台式机,他啃完了无数论文,搭建了量化系统,通过了t厂严苛的面试。但现在,这套装备显然不够看了。
苏婉端着温水走进来,见他盯着笔记本出神,轻声问:“在想什么?”
“我在想,得置办点行头了。”林晨接过水杯,语气里带着一种久违的轻松,“去t厂上班,总不能还抱着这台老爷机。而且……我想以最好的状态开始。”
“应该的。”苏婉在他身边坐下,手指轻轻拂过他衬衫领口,“这衬衫也穿三年了吧?领子都磨薄了。还有你那几件西装,都是刚工作时买的,款式早过时了。”
林晨握住她的手:“这些年,委屈你了。”
“说什么呢。”苏婉嗔怪地看他一眼,“现在不是好起来了吗?t厂的offer,投资账户也在赚钱。该花的钱得花,尤其是吃饭的家伙。”
两人商量起采购清单。林晨打开记事本,一项项列出来:
第一,笔记本电脑。这是程序员的生产力核心。t厂虽然会配发工作机,但自己需要一台性能足够强的个人设备,用于学习研究、跑些小模型,以及维护自己的量化系统。目标明确:苹果macbook pro 16寸,m2 pro芯片,32Gb内存,1tb固态硬盘。官网价两万四。
第二,外设。一块好的显示器能极大提升效率。林晨看中了戴尔U2723qx,27寸4K,色彩准,适合长时间看代码。价格三千左右。键盘必须换机械键盘,他早就心仪hhKb的静电容键盘,虽然要两千多,但打字手感是投资。
第三,正装。至少需要两套合身的西装,几件质感好的衬衫,还有皮鞋。这一块林晨不太懂,预算先留一万。
粗略一算,总预算接近四万。
“四万块……”林晨看着这个数字,还是有点肉疼。虽然投资账户有八万多,但那是他一点一滴赚来的,也是家庭重要的安全垫。
苏婉看出他的犹豫:“别想太多。这是投资,投资在你身上,投资在你的新起点上。而且——”她笑了笑,“你忘了?t厂第一个月工资,下个月底就能发。我们现在的存款,撑过这一个月完全没问题。”
这话让林晨踏实下来。是啊,他已经不是那个失业后每天计算存款还能撑多久的焦虑中年了。他有offer,有现金流预期,还有持续盈利的副业系统。
“那就今天去办!”林晨一拍桌子,那股雷厉风行的劲儿又回来了。
第一站,华强北。
周末的华强北人头攒动。林晨没有去那些喧嚣的档口,而是直奔苹果官方店。店内冷气十足,玻璃展台上各种设备泛着精致的金属光泽。他找到macbook pro的展区,手指抚过深空灰色的机身,点开一个终端窗口,随手敲了几行python代码测试响应速度。
流畅得令人心醉。
“先生,需要帮您介绍吗?”一位年轻店员走过来。
“这款16寸m2 pro,32+1t,有现货吗?”林晨直截了当。
店员眼睛一亮:“有的!您稍等,我去仓库取。”
等待的间隙,林晨站在店里,看着周围选购产品的年轻人。有大学生模样的情侣在纠结ipad型号,有穿着格子衫的程序员在测试mac mini,还有一位头发花白的老先生,正仔细询问iphone的辅助功能。这个场景让他有些恍惚——几个月前,他还是个失业者,经过这里时连多看两眼都觉得奢侈。而现在,他可以坦然地为价值两万多的生产力工具买单。
“先生,您的机器。”店员抱着一个白色盒子回来,动作小心翼翼。
开箱,验机,激活。林晨用自己的Apple Id登录,看着崭新的系统界面,手指在触控板上滑动——丝滑,跟手,那种精准的反馈让他这个老程序员忍不住嘴角上扬。他当场下载了python环境、VS code和几个常用的开发工具,安装速度飞快。
“性能怎么样?”苏婉在旁边问。
“起飞的感觉。”林晨眼睛发亮,“编译速度至少是我那台老笔记本的五倍。而且这屏幕……”他点开一张高清星空图,“色彩和亮度,写代码看论文绝对享受。”
付完款,提着沉甸甸的盒子走出苹果店,林晨感觉脚步都轻快了几分。接下来是显示器和键盘。他在一家专卖店买了戴尔那款4K显示器,又辗转找到一家高端外设店,试了hhKb键盘。
“这款是静电容轴,手感很特别。”店主是个戴眼镜的年轻人,显然也是技术爱好者,“键程短,触发快,而且超级安静。很多日本和美国的程序员都用这个。”
林晨坐下试打了几个段落。指尖传来的反馈确实独特——不是机械轴那种明确的“咔嗒”感,而是一种柔和又果断的触发,仿佛手指在云朵上轻轻一按,字符就跳上了屏幕。长时间打字应该不容易累。
“就它了。”
两样外设又花了五千多。林晨提着大包小包,和苏婉在商场找了家茶餐厅坐下休息。下午茶时间,店里飘着菠萝油和奶茶的香气。
“还剩正装。”林晨喝了口冻柠茶,“这个我真不在行。以前我买的都是衬衣,穿起来总感觉哪里不对。”
苏婉笑道:“我有个同事的先生在一家定制店做过,据说不错。就在万象城那边,要不下午去看看?”
万象城三楼,一家名为“绅度”的定制店。店面不大,但装修雅致,深色木料和暖黄灯光营造出安静的氛围。一位四十多岁、穿着马甲的老师傅接待了他们。
“先生是第一次做定制?”老师傅姓陈,说话带着温和的广府口音。
“对。我马上要去t厂上班,想做得体面一些。”林晨说。
陈师傅拿出软尺:“那我先给您量体。定制西装,合身是第一位的。”
接下来的半小时,林晨像个木偶一样被陈师傅摆布。胸围、腰围、肩宽、臂长、背长……二十多个尺寸被仔细记录。陈师傅一边量一边讲解:“您的肩膀比较平,适合英式一点的剪裁。腰线这里可以收一点,显精神。袖长要刚好到手腕骨这里……”
量完尺寸,开始选面料。厚重的样本册一本本搬出来,羊毛、羊绒、混纺……从深灰、藏青到浅灰、条纹,看得林晨眼花缭乱。
“日常上班的话,建议一套深灰色,一套藏青色。”陈师傅给出专业意见,“深灰色稳重,适合正式场合;藏青色年轻些,平时穿也不会太严肃。面料选中等克重的全羊毛,鹏城天气热,太厚了受不了。”
林晨选了陈师傅推荐的两款。接着是衬衫,做了四件:两件白,一件浅蓝,一件淡粉。领型选了标准领和温莎领各半。
“衬衫领子很重要,是西装的门面。”陈师傅说,“您脖子长度适中,这两种领型都合适。”
全部选完,算下来两套西装加四件衬衫,总价九千八。陈师傅承诺两周后第一次试衣,三周内完工。
“值得。”走出定制店,林晨对苏婉说,“以前总觉得定制西装是有钱人的玩意儿,今天体验下来才发现,其实就是把钱花在细节和合身上。而且陈师傅很专业,不是那种只会推销的销售。”
苏婉挽住他的胳膊:“人靠衣装嘛。你本来身材就不差,穿上合身的西装,肯定精神。”
采购完成,两人坐地铁回家。晚高峰的地铁拥挤依旧,林晨小心护着新买的电脑和显示器,在人群中寻找落脚点。身边挤满了刚下班的年轻人,有的戴着耳机刷手机,有的疲惫地靠着栏杆打盹。林晨看着他们,想起自己过去十年也是这样,日复一日挤地铁上下班,为房贷、为生计奔波。
但现在不一样了。
他手里提着的,不只是几件商品,而是一个新的起点,一份对未来的投资,一种重新掌控生活的底气。
回到家,林晨迫不及待地开始组装新装备。书房的书桌被清理出来,戴尔显示器架好,通过一根type-c线连接macbook pro——一线通,同时供电和传输视频信号。hhKb键盘接上,鼠标还是用旧的罗技G304,够用。
开机,点亮。
4K显示器上,macoS的桌面清晰得纤毫毕现。林晨调整了分辨率和缩放,打开VS code,新建一个python文件。指尖在hhKb键盘上跳跃,清脆又安静的敲击声在房间里回荡。他写了一个简单的爬虫脚本,又开了几个终端窗口同时运行,系统流畅得没有一丝卡顿。
“这才是写代码该有的感觉。”林晨长舒一口气。
苏婉端了水果进来,看到焕然一新的工作区,也笑了:“这才配得上你t厂高级算法工程师的身份嘛。”
“还不够。”林晨打开浏览器,登录t厂内部的学习平台(他已有预入职账号权限),点开之前标记的“星图”项目相关资料,“硬件只是基础。真正要面对的挑战,在这里。”
屏幕上,关于“星图”项目的碎片信息依然晦涩难懂。但此刻,坐在全新的装备前,林晨心中没有焦虑,只有跃跃欲试的兴奋。
他准备好了。
第1章 突如其来的裁员
上午十点,林晨刚冲好一杯速溶咖啡,还没来得及喝上一口,工位上的座机就响了。
“林晨,麻烦来一下3号会议室。”hR部门王经理的声音透过听筒传来,平静得听不出任何情绪。
林晨心里咯噔一下。3号会议室,那是公司专门用来做“一对一沟通”的小房间。他放下咖啡杯,目光扫过屏幕上还没写完的代码,一种不祥的预感悄然升起。
走进会议室,空调开得很足,冷气直往脖子里钻。王经理和一位面生的hR专员已经坐在里面,桌上摆着一份文件。王经理推了推眼镜,露出一个职业化的笑容:“林晨,坐。”
“王经理,什么事这么急?”林晨拉开椅子坐下,尽量让语气显得轻松。
王经理没有绕弯子,开门见山:“公司近期业务调整,对部分岗位进行优化。很遗憾,你所在的跨境电商平台后端开发组,需要缩减人员规模。经过评估,你的岗位在本次优化名单内。”
尽管有预感,但“优化”两个字像一记重锤,狠狠砸在林晨胸口。他感到一阵短暂的耳鸣,会议室里空调的嗡嗡声似乎瞬间被放大了。
“优化……是裁员的意思,对吧?”林晨听到自己的声音有些干涩。
“公司会按照劳动法规定,给予N+1的补偿。”旁边的hR专员接过话头,将桌上的文件推了过来,“这是具体的协议,你可以看看。今天签完字,交接完工作,补偿金会在下个发薪日到账。”
林晨没有立刻去看那份协议。他在鹏城这家跨境电商公司干了整整十年。从二十五岁到三十五岁,最好的十年都扔在这里了。他参与搭建了公司最早期的订单系统,经历过无数次“双十一”、“黑五”的技术攻坚,为了一个线上bug熬过无数个通宵。去年绩效评估还是b+,怎么突然就成了“需要优化”的部分?
“为什么是我?”林晨抬起头,盯着王经理,“我们组老张比我大两岁,小陈技术明显不如我。要优化,按什么标准?”
王经理的笑容淡了些:“林晨,这是公司层面的战略决策,综合考虑了多方面因素,不仅仅是技术能力。你也知道,现在大环境不好,公司业务收缩……”
“多方面因素?”林晨打断他,一股火气直冲脑门,“是不是因为我的薪资在组里算高的?裁掉我一个,能省下两个应届生的钱?”
会议室里的空气凝固了几秒。hR专员轻咳一声:“林晨,请你冷静。公司非常感谢你过去十年的贡献,这次的补偿方案也是很有诚意的。你继续待在这里,对大家都没有好处。”
“好处?”林晨几乎要冷笑出来,但他忍住了。三十五岁,他不是二十出头冲动的小年轻了。撕破脸皮除了让自己更难堪,没有任何意义。他深吸一口气,强迫自己冷静下来。
“我需要时间考虑。”他说。
“今天下班前,我们需要一个答复。”王经理的语气不容置疑,“这是公司决定。希望你理解。”
理解?林晨只觉得荒谬。他默默拿起那份协议,目光扫过那些冰冷的条款。补偿金数额算得清清楚楚,比他预想的略好一点,但远远无法覆盖他此刻心里巨大的空洞。协议末尾,签名的位置空着,像一张等待吞噬他十年职业生涯的嘴。
“我明白了。”林晨放下协议,站起身,“我现在回去收拾东西。”
走出会议室,走廊里明亮的灯光显得有些刺眼。回到开发区的工位,几个相邻的同事抬头看了他一眼,眼神里有关切,有探究,更多的是闪避。在这个行业,被hR单独叫走,然后回来收拾东西,意味着什么,大家心知肚明。没人上前询问,一种微妙的沉默在空气中弥漫开来。
林晨默默地收拾着个人物品,一个用了多年的保温杯,几本技术书籍——《python高级编程》、《深入理解Java虚拟机》,书页已经有些卷边。抽屉里还有没吃完的半盒润喉糖,一副备用眼镜,几张以前团队的合影。照片上,年轻几岁的他笑得没心没肺,和同事们勾肩搭背。
他收拾的动作很慢,仿佛在拖延时间。电脑屏幕上,还是那个未完成的订单查询接口优化代码。他下意识地移动鼠标,想保存一下,却突然停住了。保存了又有什么用呢?这行代码,这个项目,从下一秒开始,都与他无关了。
最终,所有私人物品装进了一个不大的纸箱。他把工牌从脖子上取下来,塑料卡片还带着体温。蓝色的挂绳,印着公司的Logo,十年前刚入职领到它时的兴奋感,早已模糊不清。
他没有和任何人道别,抱着纸箱,走向电梯。电梯门合上的瞬间,他透过缝隙最后看了一眼工作十年的地方,格子间依然忙碌,键盘敲击声隐约传来。一切如常,只是少了一个叫林晨的码农。
走出气派的写字楼大门,鹏城初夏上午的阳光毫无遮挡地泼洒下来,晃得他有些睁不开眼。正值工作日,科技园附近行人匆匆,穿着各色文化衫的年轻人与他擦肩而过,谈论着需求、迭代、上线。他抱着纸箱站在路边,一时竟不知该往哪里去。
回家?怎么跟苏婉说?直接告诉她“我被裁了”?他几乎能想象妻子听到消息后,那张温婉的脸上会出现的错愕和担忧。房贷怎么办?下个月儿子上幼儿园的学费怎么办?这些现实的问题像潮水一样涌来,让他感到一阵窒息。
他掏出手机,屏幕上未读的工作群消息还在跳动。他手指悬在屏幕上方片刻,然后点击进去,退出了所有与公司相关的微信群。动作很轻,却有种斩断一切的决绝。
地铁站里人潮汹涌。林晨抱着纸箱,挤在拥挤的人流中,显得格格不入。周围的人大多空着手,或者只拿着手机和咖啡,只有他,抱着一个装满“过去”的纸箱。
车厢里空气闷热,混杂着汗味和香水味。林晨靠在门边的角落,纸箱搁在脚边。地铁行驶到路面,车窗外的城市景观飞驰而过,高楼大厦的玻璃幕墙反射着刺眼的光。这座城市永远年轻,充满机会,但此刻对他而言,却显得格外冰冷和陌生。
十年。他从一个满怀憧憬的毕业生,变成如今疲惫的中年人。技术更新了一代又一代,他从Java写到Go,从单体架构做到微服务,以为自己一直在奔跑,不敢停下。可到头来,一纸协议,就能轻易抹掉所有。
“优化……”他咀嚼着这个词,嘴角泛起一丝苦涩。不是能力不行,只是性价比不高了。三十五岁,薪资要求高,家庭牵绊多,加班拼不过年轻人,学习新技术的速度或许也慢了半拍。在资本眼中,他成了一项可以削减的成本。
正想着,手机震动了一下,是妻子苏婉发来的微信:“晚上想吃什么?我下班去买菜。”
简单的问候,却让林晨鼻子猛地一酸。他盯着屏幕,手指悬在键盘上,打了几个字又删掉。最后只回了一句:“随便,你定吧。”
他关掉屏幕,将额头抵在冰凉的玻璃上。窗外的光线在他脸上明明灭灭。恐慌感后知后觉地蔓延开来,像冰冷的藤蔓缠绕住心脏。三十五岁,失业。下一步该怎么走?重新找工作?这个年纪的程序员,在招聘市场上还有多少竞争力?转行?又能做什么?
纸箱里的那本《python高级编程》露出一个角。他最近确实在看一些AI和机器学习的相关资料,隐隐觉得那是未来的方向,但总想着“等工作不忙了再系统学”。现在,“不忙”以最残酷的方式到来了。
地铁到站,机械的女声报着站名。林晨抱起纸箱,随着人流涌出车厢。回家的路还要走十几分钟,穿过热闹的城中村街道,两边是各色小吃摊和便利店,生活气息扑面而来,但却丝毫没有缓解他内心的冰冷。
他走到自家租住的旧小区楼下,抬头看了看位于六楼的那个窗户。灯还没亮,苏婉还没回来。儿子应该还在幼儿园。
他在楼下站了许久,才深吸一口气,抱着那个沉甸甸的纸箱,艰难的一步一步爬上楼梯。
钥匙插进锁孔,转动。
门开了。
屋里一片安静。
属于他的“后裁员时代”,就在这片寂静中,正式拉开了序幕。
第2章 艰难的告白
“爸爸回来啦!”一个清脆稚嫩的声音伴随着“哒哒哒”的脚步声冲过来。五岁的乐乐像颗小炮弹一样撞进林晨怀里,仰着圆乎乎的小脸,眼睛亮晶晶的。 林晨几乎是本能地蹲下,用空着的那只手搂住儿子,脸上挤出一个练习了一路的、自认为最自然的笑容:“哎,宝贝,今天在幼儿园开心吗?” “开心!我画了一只大恐龙,老师夸我画得好!”乐乐叽叽喳喳,注意力很快被纸箱吸引,“爸爸,这是什么呀?是给我的新玩具吗?” “不是玩具,是爸爸工作用的东西。”林晨语气尽量平稳,心里却是一揪。他抱着纸箱站起身,看向从厨房探出头的妻子苏婉。 苏婉系着围裙,手里还拿着锅铲,温柔的脸上带着笑意:“今天怎么这么早?还不到六点呢。正好,糖醋排骨快好了,洗洗手准备吃饭。”她没太在意那个纸箱,只当是老公又带了些工作资料回来——这在过去十年是常事。 “嗯,今天……事情结束得早。”林晨含糊地应了一声,抱着纸箱快步走进书房,轻轻关上门。他把箱子放在了书桌上,盯着它看了几秒,仿佛那是什么不祥之物,心想就先放这吧,不藏了。然后深吸一口气,转身走出书房,脸上重新挂上笑容。 晚饭是寻常的三菜一汤:糖醋排骨、蒜蓉西兰花、西红柿炒蛋,还有一锅紫菜蛋花汤。都是家常味道,却是林晨漂泊鹏城十年里,最能抚慰他的东西。苏婉在一所小学当语文老师,工作也不轻松,但总是把家里打理得井井有条,饭菜可口。 “今天公司怎么样?那个跨境电商平台的支付模块优化完了吗?”苏婉给乐乐夹了一块排骨,随口问道。 林晨夹菜的筷子几不可察地顿了一下。“差不多了。”他扒了一口饭,咀嚼得有些费力,“可能……后续有些调整。” 苏婉敏锐地捕捉到了他语气里那一丝不自然。她放下筷子,仔细看了看林晨的脸。虽然他在努力微笑,但眼底的疲惫和一种更深层的晦暗,没能完全藏住。夫妻多年,有些东西瞒不过。 “林晨,”她的声音轻柔但坚定,“是不是出什么事了?” 乐乐抬头看看妈妈,又看看爸爸,似乎感觉到气氛微妙,乖乖地吃着饭不说话。 林晨知道瞒不住了,也没打算一直瞒着。他放下碗筷,双手在膝盖上无意识地搓了搓,喉结滚动了一下。餐厅顶灯的光线有些刺眼。 “我……”他开口,声音有些干涩,“我被裁员了。” 短短几个字,说出来的瞬间,林晨感觉心里那块巨石仿佛松动了一丝,但随即更沉重的现实感压了上来。他不敢看苏婉的眼睛,目光落在桌上的糖醋排骨上,那酱红色此刻显得有些刺目。 餐厅里安静了几秒。只有乐乐咀嚼食物的细微声响。 苏婉愣住了。她预感到丈夫可能遇到了工作上的麻烦,或许是项目不顺,或许是和领导有了矛盾,但“裁员”这个词,依然超出了她的预料。她的脸色微微发白,握着筷子的手指收紧了些。 “裁员?”她重复了一遍,似乎在消化这个词的含义,“为什么?你不是……一直是骨干吗?上个月绩效还是A……” “公司业务调整,整个部门优化。年龄、薪资……都是因素。”林晨苦笑了一下,把hR那套说辞概括着说了出来,语气里带着自嘲,“35岁,年薪六十多万,性价比不高了。今天上午谈的话,让今天给答复,我看没有回旋的余地了,我索性把东西都拿回来了,就装在刚拿进书房的那个纸箱里。” 又是一阵沉默。这次沉默的时间更长。 乐乐似乎终于意识到发生了什么,小声问:“爸爸,裁员是什么意思?你不用去上班了吗?” 林晨摸了摸儿子的头,声音低沉:“嗯,爸爸暂时……不用去那个公司上班了。” 苏婉缓过神来。她没有质问,没有抱怨,甚至没有惊讶,只是静静地看着林晨,看着这个相伴十余年、此刻肩膀微微垮下的男人。她看到了他努力掩饰的沉重、挫败,以及眼底深处那不易察觉的失落。 “先吃饭。”苏婉说,甚至比以往更柔和了些,“排骨凉了就不好吃了。乐乐,多吃点青菜。” 她拿起筷子,给林晨夹了一块最大的排骨,放到他碗里:“不管发生什么事,饭总要好好吃。身体不能垮。” 这一句平常的话,却像一股暖流,猝不及防地冲垮了林晨心里强行筑起的堤坝。鼻尖猛地一酸,他赶紧低下头,用力眨了眨眼,把那股涩意逼了回去。“嗯。”他闷声应道,夹起那块排骨塞进嘴里。味道依旧,但他却尝出了更多滋味。 这顿饭的后半段,气氛有些沉闷,但苏婉时不时给父子俩夹菜,轻声询问乐乐幼儿园的趣事,勉强维持着餐桌上的常态。乐乐毕竟还小,很快又被动画片话题吸引,叽叽喳喳起来。 饭后,苏婉利落地收拾碗筷,催促林晨先去给乐乐洗澡讲故事。等她把厨房收拾干净,哄睡了乐乐,时间已经指向晚上九点半。 她轻轻推开书房的门。林晨正坐在书桌前,台灯亮着,面前摆放着一个笔记本和计算器,手指正在计算器上快速点按,眉头紧锁。纸箱被挪放到屋角,被书柜挡住,但自然刺眼。 听到开门声,林晨抬起头。 苏婉走进来,反手关上门,拖了把椅子坐到林晨旁边。
第3章 盘点家底
林晨和苏婉坐一起,中间摊开着一堆东西:三张银行卡、两个存折、一叠房贷还款单、几份保险合同、还有苏婉从书房拿出来的一个硬壳笔记本——那是他们家的“家庭账本”。
乐乐已经在卧室睡着了,孩子均匀的呼吸声隐约可闻,那是这个焦虑夜晚里唯一的安宁。
“开始吧。”苏婉的声音很平静,她推了推鼻梁上的眼镜——那是她批改作业时才戴的。灯光下,她的侧脸线条显得格外清晰,没有化妆,但有种教师特有的书卷气和坚韧。
林晨点点头,拿起那张他今天下午刚从银行打印出来的流水单。纸张很薄,上面的数字却沉甸甸的。
“我这张工行卡,”他清了清嗓子,声音有些干涩,“活期加定期,一共是十八万七千四百三十二块五毛。”
苏婉翻开账本,用黑色签字笔工整地记下:“工行:187,432.5”。她的字很好看,板书练出来的,横平竖直。
“我这张建行卡,”林晨拿起另一张,“主要是以前项目奖金的结余,还有去年年终奖没花完的部分。九万六千八百。”
“建行:96,800。”笔尖划过纸面,沙沙作响。
“还有这张招行的,绑着支付宝和微信,平时零用。”林晨顿了顿,“里面剩的不多了,两万一千五。”
“招行:21,500。”苏婉写完,抬起头,“我的工资卡上个月发完工资后,扣了乐乐幼儿园的学费和上个月的房贷,还剩八千四百块。我平时家教收的现金,存在那个红色的存折里,有三万二。”
林晨心里快速心算了一下:“加起来……三十四万六仟一佰三十二块五毛。”
“三十四万。”苏婉重复了一遍这个数字,笔尖在纸上点了点,“这是我们俩工作十年,除去买房、装修、生孩子、养孩子之后,剩下的全部现金。”
空气沉默了几秒。这个数字说大不大,说小不小。在鹏城,它不够付一套郊区小户型首付的零头,但又是很多家庭攒不出来的数目。
“房贷。”林晨拿起那叠还款单,最上面一张是上个月的,“南山科技园边上那个盘,八十九平,贷款三百二十万,三十年,等额本息。每月一万两千零六十七块。”
“一万二。”苏婉在账本上新建一栏,“固定支出:房贷12,067/月。”
“物业费每平米三块五,一个月三百一十一块五。”
“车位管理费一百五。”
“水电燃气,夏天开空调的话,平均每月六百左右。”
“宽带手机费,我的两百,你的一百五,乐乐电话手表三十,一共三百八。”
“乐乐幼儿园,普惠性的,每月三千二。”
“买菜吃饭……”林晨说到这里停住了,看向苏婉。
苏婉接上话:“我大概算过。我学校有食堂,午饭免费。你以前公司有餐补,午饭也基本不花钱。主要是早晚两餐和周末。我们不算吃得奢侈,但乐乐正在长身体,肉蛋奶不能省。加上水果零食,一个月至少三千。”
她一边说一边写:“生活费估算:3,000/月。”
林晨补充:“还有你的交通费,地铁一个月两百。我以前开车,油费加停车,一个月一千五。现在……”他苦笑了一下,“车可以先不开了。保险和保养每年还得大几千,平摊到每月算五百吧。”
“车相关:500/月。”苏婉写下,然后抬头,“你的社保呢?失业了,社保要自己交。”
林晨心里一沉。他差点忘了这个。鹏城的社保缴费基数高,如果按最低档自己全额交,每月光养老和医疗就要两千多。
“先按两千五算吧。”他声音低了些,“社保:2,500/月。”
苏婉全部记下,然后开始汇总:“固定支出:房贷12,067,物业311.5,车位150,水电600,通讯380,幼儿园3,200,生活费3,000,车500,社保2,500。合计……每月固定支出两万两千七百零八块五毛。”
22,708.5元。
这个数字跳出来时,林晨感觉喉咙发紧。他以前月薪税前四万,税后到手三万出头,还了房贷,剩下的覆盖这些开支绰绰有余,甚至还能存下一些。苏婉每月一万二的工资,基本就是她的零花和家庭备用金。
现在,他那份收入没了。
“你的工资,”林晨看向苏婉,“税后到手一万二左右,对吧?”
苏婉点头:“上个月实发11,847。绩效好的月份能到一万三。”
“就算一万二。”林晨拿过苏婉手里的笔,在账本空白处快速列式,“我们每月固定支出两万二,你的收入一万二,缺口正好是一万。”
他笔尖顿了顿:“也就是说,如果我们保持现在的生活水平不变,我没有任何收入,那么每个月,我们需要从存款里拿出一万块来补这个窟窿。”
三十四万存款,除以每月一万。
三十四个月。
两年半多。
“但实际上不能这么算。”苏婉的声音依然冷静,她指着账本上的条目,“生活费三千,我们可以压缩。你以前开车,现在不开了,油费和公司停车费省了。社保……如果真的困难,可以暂时按灵活就业最低档交,能省一些。还有,我的工资,可以想办法增加。”
林晨看向妻子:“增加?”
“我教语文,带毕业班。很多家长想找好的语文老师给孩子补课。”苏婉说,“以前因为要顾家,给你和乐乐做饭,我只接了两个周末的学生,每月大概多两千收入。如果多接一些,周末排满,晚上再接一两个线上辅导,每月多赚三四千是有可能的。”
林晨心里一阵酸涩。他知道苏婉一直很受欢迎,很多家长托关系想请她补课,但她总说“老师的主要精力应该放在课堂上”,不愿意多接。现在……
“还有,”苏婉继续说,“乐乐幼儿园三千二,已经是普惠园里不错的了。如果……如果真的到那一步,可以转去更便宜的。不过这是最后的选择,孩子适应一个环境不容易。”
林晨深吸一口气,重新拿起笔:“那我们重新算。假设:生活费压缩到两千五;车只保留保险和基本保养,每月三百;社保按最低档,每月一千八;你的收入增加三千,到一万五。”
他快速计算:“这样固定支出变成……两万零五百左右。你的收入一万五,缺口五千五。”
三十四万除以五千五。
约等于六十一个月。
五年。
“但这是理想状态。”林晨放下笔,揉了揉太阳穴,“生活中总有意外开销。乐乐生病,家里电器坏了,人情往来……而且,我们不能真的坐吃山空五年。我必须尽快找到工作。”
苏婉伸出手,覆盖在他放在书桌的手上。她的手很凉,但掌心柔软。
“所以我们的目标不是五年,”她轻声说,“而是用这笔存款,为你争取一个……缓冲期。一个不用慌不择路、可以好好思考下一步的缓冲期。”
林晨反握住她的手:“你觉得这个缓冲期应该多长?”
苏婉想了想:“至少一年。一年内,你可以不急于接受一个随便的工作,可以好好看方向,甚至可以……学点新东西。你不是总说技术更新快,自己有些跟不上了吗?”
林晨心里一动。他确实有这个念头,尤其在失业后的这几天,那种“被时代抛下”的恐惧越来越清晰。
“一年……”他喃喃道,“如果按每月缺口五千五算,一年是六万六。三十四万减去六万六,还剩二十七万四。也就是说,哪怕我一年没收入,我们还能剩下二十多万的底子。”
这个数字让他稍微松了口气。二十多万,在鹏城不算什么,但对于一个失业家庭来说,那是一根救命稻草,是还能翻身的本钱。
“而且,”苏婉补充,“我不会只增加三千收入。我会尽力。你也不是完全没收入,可以接点零活,对吧?你那些做外包的朋友。”
林晨点头。他有几个前同事在做独立开发,接一些中小企业的项目。以前他看不上那种零碎活儿,但现在……每一分钱都重要。
“我明天就联系。”他说,“还有,从明天开始,家里所有非必要开支全部暂停。我的健身卡不续了,周末出去吃饭取消,乐乐的新玩具……也先不买了。”
说到乐乐,两人都沉默了一下。孩子才五岁,不该承受大人世界的压力。
“我会跟乐乐解释,”苏婉说,“用他能懂的方式。爸爸要换一个工作,需要时间学习新的本领,就像他学画画一样。这段时间,我们家要一起努力,节约一点。”
林晨看着妻子,灯光下她的眼睛很亮,没有抱怨,没有恐惧,只有一种沉静的担当。他突然想起十年前他们刚结婚时,租住在西丽的小单间里,两人也是这样挤在书桌前算账,算每个月能存多少钱,算多久才能攒够首付。
那时候不觉得苦,因为年轻,因为相信未来。
现在呢?三十五岁,失业,房贷,孩子……压力大了十倍不止。但奇怪的是,当两个人这样面对面,把最残酷的数字摊开在灯光下,一项项计算、规划时,那种灭顶的恐慌反而褪去了一些。
恐惧来源于未知。而当未知变成一张清晰的财务报表,它就变成了一个可以拆解、可以应对的问题。
“好。”林晨说,“那就按这个计划。第一步,缩减开支到每月两万以内。第二步,你增加收入,我接零活,尽量减少存款消耗速度。第三步,也是最重要的——我用这段时间,找准下一个方向。”
他顿了顿,声音坚定起来:“我不能只是找一份和以前类似的工作。跨境电商的技术栈已经老了,就算找到,也随时可能再被淘汰。我得看未来,看什么方向是未来五年、十年都需要人的。”
苏婉看着他:“你有想法了吗?”
林晨沉默了片刻。他想起白天刷招聘网站时看到的那些岗位:AI算法工程师、机器学习专家、大模型开发……薪资高得吓人,要求也高得吓人。他一个做了十年传统web开发的人,连那些岗位描述里的术语都认不全。
“也许……”他缓缓说,“是该学点真正的新东西了。”
夜更深了。窗外传来远处地铁末班车驶过的隐约轰鸣。鹏城就是这样,哪怕到了深夜,依然有地方在运转,在忙碌。
书桌上的账本合上了。那些数字暂时被关在了纸页里,但已经刻在了两人心里。
三十四万。六十一个月。一万二的房贷。五千五的月度缺口。
这些数字像一个个坐标,标定了他们此刻在人生地图上的位置——一个危险的悬崖边缘。但坐标清晰了,至少知道该往哪个方向走,才能离开悬崖。
睡觉前,林晨站在阳台上抽了根烟——他戒了很久,今晚破例。楼下小区的路灯昏黄,几个晚归的年轻人说笑着走进单元门,大概是科技园哪家公司的程序员,刚加完班。
曾几何时,他也是其中一员。背着双肩包,刷着门禁卡,想着明天要写的代码和要赶的进度。那时候觉得累,觉得卷,现在回想起来,那种“被需要”的感觉,其实是一种奢侈。
烟头在夜色中明灭。林晨吐出最后一口烟,把烟蒂按灭在阳台花盆边——那里原本种着苏婉喜欢的茉莉,去年枯死了,一直没换新的。
他回到书房,看到苏婉已经收拾好书桌,正拿着抹布擦拭桌面。她的背影在灯光下显得有些单薄,但动作一丝不苟。
“睡吧。”苏婉回头看他,“明天我第一节有课,得早起。你也别熬太晚,找工作……不急于这一个晚上。”
林晨点点头。两人洗漱,上床。乐乐在中间睡得正香,小脸在睡眠灯下泛着柔光。
林晨闭上眼睛,但大脑异常清醒。那些数字在脑海里盘旋:三十四万、一万二、五千五……然后是一些模糊的念头:python、tensorFlow、机器学习……还有招聘网站上那些他看不懂的职位描述。
一年缓冲期。
他能学会吗?
一个三十五岁、做了十年传统开发的人,能追上那些二十多岁就在研究AI的年轻人吗?
不知道。
但账本上的数字告诉他:你必须试试。
黑暗中,他轻轻握住苏婉的手。她已经快睡着了,手指动了动,回握住他。
没有言语。但掌心传来的温度和力量,比任何承诺都真实。
第4章 求职启动
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第5章 第一次面试
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第6章 年龄的歧视
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第7章 报喜不报忧
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第8章 无意的刺激
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第9章 连续被拒
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第10章 深夜的思考
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第11章 猎头的橄榄枝
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第12章 线上技术测评
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第13章 一面:技术经理
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第14章 等待的焦虑
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第15章 深夜的对话
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第16章 二面:技术总监
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第17章 希望破灭
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第18章 儿子的安慰
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第19章 同学的炫耀
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第20章 降低期望
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第21章 外包公司面试
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第22章 技术面:项目经理
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第23章 薪资谈崩
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第24章 网约车司机的故事
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第25章 妻子的压力
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第26章 又一次面试
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第27章 背景调查
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第28章 儿子的再次安慰
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第29章 纠结的抉择
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第30章 拒绝offer
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第31章 老同事的消息
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第32章 研究Web3
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第33章 加密货币的世界
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第34章 张伟的引荐
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第35章 恶补区块链
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第36章 Web3公司一面
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第37章 二面:联合创始人
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第38章 薪资谈判
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第39章 调查行业风险
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第40章 张伟的建议
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第41章 家庭会议
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第42章 入职准备
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第43章 入职第一天
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第44章 技术栈的挑战
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第45章 代码审查
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第46章 年轻同事的质疑
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第47章 加班的困境
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第48章 技术债务
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第49章 薪资延迟
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第50章 行业震荡
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第51章 项目暂停
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第52章 寻找退路
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第53章 被裁的预兆
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第54章 第二次裁员
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第55章 反思与顿悟
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第56章 AI的启发
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第57章 制定学习计划
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第58章 购买课程
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第59章 数学的挑战
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第60章 第一个模型
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第61章 深度学习框架
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第62章 计算资源的限制
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第63章 Kaggle初体验
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第64章 NLP的兴趣
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第65章 计算机视觉
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第66章 投资的想法
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第67章 获取金融数据
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第68章 第一个策略
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第69章 风险管理
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第70章 小额实盘
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第71章 优化策略
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第72章 机器学习优化
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第73章 情绪指标
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第74章 回测框架
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第75章 第一个月总结
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第76章 扩展品种
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第77章 多策略组合
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第78章 妻子的支持
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第79章 技术架构升级
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第80章 数据库设计
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第81章 监控告警
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第82章 错过乐乐表演
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第83章 家庭的理解
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第84章 收益突破
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第85章 学习强化学习
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第86章 过拟合的教训
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第87章 加入验证集
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第88章 学习期权
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第89章 组合优化
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第90章 第三个月
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第91章 准备面试
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第92章 简历优化
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第93章 父母的担忧
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第94章 第一个AI岗面试邀请
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第95章 笔试
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第96章 技术一面
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第97章 算法面
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第98章 系统设计面
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第99章 HR面
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第100章 曙光初现
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第101章 调整心态
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第102章 深度学习进阶
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第103章 论文阅读
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第104章 技术博客
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第105章 开源项目
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第106章 社区互动
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第107章 收益稳定
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第108章 扩大资金
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第109章 黑天鹅事件
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第110章 危机管理
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第111章 对冲策略
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第112章 多账户管理
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第113章 T厂的招聘
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第114章 内推机会
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第115章 等待通知
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第116章 T厂笔试
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第117章 笔试通过
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第118章 专项准备
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第119章 模拟面试
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第120章 家人的鼓励
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第121章 T厂技术一面
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第122章 深挖项目
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第123章 技术二面
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第124章 论文讨论
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第125章 系统设计
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第126章 业务四面:另一扇门
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第127章 展示投资系统:物理成本的觉醒
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第128章 商业化讨论:能源即是呼吸
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第129章 HR再面:价值的重新定义
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第130章 焦急等待:黎明前的寂静
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第131章 意外的插曲
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第132章 两难选择
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第133章 投资系统升级
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第134章 收益新高
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第135章 创业公司催促
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第136章 T厂的电话
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第137章 激动的时刻
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第138章 拒绝创业公司
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第139章 家人的喜悦
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第140章 报喜父母
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第141章 同学群的回应
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第142章 入职材料准备
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第143章 知识储备
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第144章 购置装备
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第145章 告别自由时光
傍晚六点,鹏城的天空染上了一层温柔的橙红色。
林晨站在重新布置过的书房窗前,目光穿过玻璃,落在远处科技园那片灯火渐起的写字楼群上。明天,那里将有一盏灯为他而亮——t厂总部大楼17层,AI算法研发部。
他转过身,环顾这个陪伴他度过整整九个月“自由职业生涯”的空间。崭新的macbook pro安静地躺在定制胡桃木书桌上,旁边是那台4K显示器,屏幕上还停留着pytorch框架的代码界面。hhKb键盘的键帽在夕阳余晖下泛着温润的光泽。
一切都准备好了。
但真正让他感到安心的,不是这些新装备,而是这九个月里在自己身上发生的变化。
他走到书桌前坐下,打开证券账户。屏幕上跳出的数字让他嘴角微微上扬——总资产:25,467.35元。距离他投入那二十万元启动资金,已经过去了6个多月。这套被他自己戏称为“阿尔法狗青春版”的量化交易系统,以稳定到近乎枯燥的节奏,为他带来了超过23%的回报。
更重要的是,它现在每天自动运行,像一台不知疲倦的印钞机——虽然印的是小面额钞票。但林晨清楚这套系统的潜力,随着数据的积累和模型的迭代,它的盈利能力会呈指数级增长。
“代码可以骗人,但逻辑不会。”他轻声重复着自己的口头禅。
九个月前,他绝对说不出这样的话。
那时的林晨是什么状态?他闭上眼睛,记忆如潮水般涌来。
失业第一周:整夜整夜失眠,不敢告诉老家父母,每天装作出门上班,实际上在宝安图书馆一坐就是一整天。翻看招聘网站时手指会发抖,看到“35岁以上勿投”的字样就像被针扎。
第一个月:开始疯狂投简历,面试了几家web3公司,技术关都过了,最后全卡在薪资上。他坚持要120万年包——不是贪婪,而是那笔房贷、孩子的教育费、父母的赡养费,像三座大山压着他。对方hR用“市场行情”“年龄因素”委婉拒绝时,他坐在科技园咖啡馆的角落里,看着窗外行色匆匆的年轻人,第一次真切感受到什么叫“中年危机”。
第三个月:存款以肉眼可见的速度减少。苏婉把家里的开支压缩到极致,却从没抱怨过一句。某个深夜,她在客厅等他回家,桌上放着一碗热汤面:“林晨,我知道你压力大。但咱们家没那么脆弱。你想学什么就去学,我信你。”
就是从那天起,他决定不再盲目求职,而是沉下心来学点真东西。
第四到六个月:每天雷打不动学习十小时。从python基础补起,到机器学习经典算法,再到深度学习框架。买了三块白板贴在墙上,写满又擦掉,擦掉再写满。头发大把大把掉,但眼睛里重新有了光。
第七个月:偶然接触量化交易概念,突发奇想能否用AI做投资。用两周时间搭出第一个简陋模型,回测数据惨不忍睹。但他没放弃,一遍遍调整特征工程,优化损失函数。
第八个月:系统第一次实现单日正收益。他盯着屏幕上那个绿色的0.37%,愣了好久,然后跑到楼下小超市买了瓶最便宜的红酒,一个人喝到微醺。
第九个月初:系统稳定性达到可实盘标准。他咬牙转了五万元进证券账户,点击“启动”按钮时手心全是汗。第一个星期,账户像过山车一样起伏,他每天醒来第一件事就是抓手机看盈亏。直到第三周,曲线开始稳稳向上。
现在:系统已稳定盈利运行超过三个月,不仅完全覆盖了家庭开支,还让存款数字重新开始增长。更重要的是,他凭借这段时间积累的技术深度,征服了t厂的面试官,拿到了曾经不敢想象的offer。
林晨睁开眼,长长吐出一口气。
这九个月像一场漫长而孤独的马拉松。没有同事,没有老板,没有KpI,只有自己和代码、数据、算法之间的对话。他学会了与不确定性共处,学会了在无人监督时保持自律,学会了在一次次失败后重新爬起来。
“自由职业者”——很多人向往这个词,觉得它代表着时间自由、地点自由。但林晨现在深刻理解,真正的自由背后,是极致的自律和承担全部风险的压力。
他起身走到书架前,那里整齐排列着这九个月的学习成果:十七本写满笔记的技术书籍,三个厚厚的笔记本,还有一块移动硬盘,里面存储着超过500Gb的学习资料、代码和实验数据。
手指拂过书脊,像是抚摸一段凝固的时间。
最让他骄傲的不是学会了多少技术,而是重建了对自己能力的信心。35岁被裁员,曾经让他怀疑自己是否已经被时代抛弃。但现在他明白了——抛弃你的从来不是时代,而是停止学习的自己。
手机震动了一下,是苏婉发来的消息:“晚上想吃什么?庆祝你‘失业生涯’的最后一天。”
林晨笑了,回复:“你做主。对了,明天我开车去公司,早上送完乐乐再走。”
“好。西装记得熨一下,我挂在你衣柜左边了。”
他看着消息,心里涌起暖流。这九个月,苏婉是他最坚实的后盾。没有她的支持,他可能早就扛不住压力随便找份工作将就了。
窗外的天色完全暗了下来,科技园的灯光连成一片璀璨星河。林晨重新坐回电脑前,打开t厂内部学习平台。账号已经激活,他可以提前查阅一些非涉密资料。
一个名为“星图(Starmap)”的项目文档引起了他的注意。点开后,里面是大量晦涩的术语和复杂的架构图——多模态融合、自监督预训练、万亿参数稀疏激活模型……这显然是个重量级项目。
林晨的血液微微发热。这就是他想要的东西:前沿的、有挑战性的、能推动技术边界的工作。在跨境电商公司做了十年增删改查,他太渴望接触真正硬核的技术了。
但同时,一丝隐约的忧虑也浮上心头。
t厂不是小公司,那里汇聚着全国最顶尖的人才。自己这九个月的闭关修炼,真的够用吗?陈博士面试时对他的“物理成本”观点表示赞赏,但那更多是理念层面的契合。真正进入项目组,面对具体的工程难题、复杂的团队协作、严格的交付压力,自己能跟上节奏吗?
他关掉文档,摇了摇头。
“想那么多没用。”他对自己说,“代码不会骗人,逻辑不会骗人。我掌握的东西是实实在在的。”
这九个月最大的收获之一,就是学会了用事实和数据对抗焦虑。系统稳定盈利是事实,t厂的offer letter是事实,书架上的学习成果是事实。至于那些想象中的困难——遇到了再说。
他最后检查了一遍明天要带的物品:入职通知书、身份证、银行卡、学历证书复印件、一支笔。然后打开衣柜,那套定制西装笔挺地挂着,旁边是熨烫平整的白衬衫。
手指抚过西装的纹理,林晨忽然想起九个月前那个穿着皱巴巴polo衫、在咖啡馆里面试失败的自己。
时间真的能改变一个人。
不,更准确地说,是努力能改变一个人。
晚上八点,苏婉端出四菜一汤:清蒸鲈鱼、蒜蓉西兰花、西红柿炒蛋、红烧排骨,还有一锅莲藕排骨汤。都是家常菜,但摆盘精致,显然是花了心思。
“这么丰盛?”林晨帮忙摆碗筷。
“纪念日嘛。”苏婉笑着解下围裙,“纪念你‘无业游民’生活的最后一天。”
乐乐从房间跑出来,爬上椅子:“爸爸明天要去新公司了吗?”
“对啊。”
“那爸爸以后是不是不能下午来接我了?”
林晨摸摸儿子的头:“可能不能每天下午接了,但周末爸爸一定陪你。而且爸爸的新公司很棒,爸爸在那里可以学到特别厉害的技术。”
“像钢铁侠那样厉害吗?”乐乐眼睛发亮。
“比钢铁侠还厉害。”林晨认真地说,“爸爸要去做人工智能,让电脑像人一样思考。”
乐乐似懂非懂地点点头,然后夹了块排骨放进嘴里:“那爸爸加油!”
简单的对话,却让林晨心里涌起一股力量。这就是他要守护的东西——这个家,这份温暖,这种被需要的感觉。
晚饭后,一家三口坐在沙发上看了一部动画电影。九点半,乐乐准时上床睡觉。林晨和苏婉在阳台上站了一会儿,看着城市的夜景。
“紧张吗?”苏婉轻声问。
“有点。”林晨老实承认,“但更多的是期待。就像……准备了很久的运动员终于要上赛场了。”
“你会做得很好的。”苏婉握住他的手,“这九个月,我亲眼看着你怎么一点点把自己重新拼起来。现在的你,比失业前强大了太多。”
林晨没有说话,只是紧紧回握。
他知道妻子说得对。这九个月的自学生涯,不仅让他掌握了新技术,更重塑了他的心智模式。他不再恐惧变化,不再依赖平台,不再把安全感寄托在一份工作上。
真正的安全感,来自于无论身处何种环境都能创造价值的能力。
晚上十一点,林晨最后一次检查了投资系统的运行状态。所有策略正常,风控参数稳定,今日收益率0.28%。他设置好定时关机,合上笔记本电脑。
书房里只留下一盏小夜灯。他站在门口,最后看了一眼这个空间。
九个月,273天,6552个小时。
在这里,他经历过绝望和自我怀疑,也体验过突破和狂喜;熬过无数个通宵,也见过许多次凌晨四点的鹏城;写过几十万行代码,读过上千篇论文,调试过数不清的bug。
明天开始,这里将恢复成普通的家庭书房。而他,将重新踏入职场,但不再是那个战战兢兢、害怕失去工作的中年人。
他是林晨,35岁,t厂高级算法工程师,拥有一套稳定盈利的量化交易系统,有一个支持他的家庭,和一颗经过淬炼后更加坚韧的心。
关上门的那一刻,他在心里轻声说:
“再见,自由时光。谢谢你让我重生。”
而前方,新的征程正在晨光中等待。
第146章 投资系统托管
晨光透过百叶窗,在书房的木地板上切割出整齐的光带。
林晨坐在电脑前,屏幕上同时开着三个窗口:左侧是t厂内部系统的入职指引页面,中间是量化交易系统的监控面板,右侧是刚打开的日历应用。距离正式入职还有几天时间。
他的目光落在中间那个窗口上。
“智投一号”系统已经稳定盈利运行了九十七天。总资产从最初投入的二十万元,增长到了昨天的329,869.41元。平均日收益率0.38%,最大回撤控制在3.2%以内——对于一个全自动运行的量化系统来说,这个成绩已经相当出色。
但问题也随之而来。
过去三个月,林晨每天至少有六个小时泡在这套系统上。开盘前检查数据源,盘中监控异常波动,收盘后分析当日交易记录,深夜还要进行模型微调。这种全天候的投入,在即将开始的t厂工作中显然不可能持续。
“得找个保姆。”林晨自言自语道。
他点开系统日志,开始仔细梳理过去一周的运行情况。屏幕上滚动着密密麻麻的时间戳和事件记录:
【04:55】数据更新完成,A股、期货、外汇市场数据已同步
【09:15】A股开盘,持仓监测正常
【11:30】检测到异常波动,触发风控规则第7条,暂停交易15分钟
【14:45】黄金期货仓位调整,执行策略编号ct-03
【23:00】日终结算完成,今日收益率+0.41%
林晨的手指在键盘上敲击着,调出了风控模块的配置页面。这套系统最核心的防御机制,由他亲手编写了七层防护:
第一层,市场异常检测——当某个品种波动率突然放大三倍以上时,自动暂停交易。
第二层,账户风险控制——单日亏损达到总资产的2%时,强制降低仓位。
第三层,策略失效预警——某个策略连续三天跑输基准,自动标记为待审查。
第四层,网络连接监控——如果数据源中断超过五分钟,所有持仓自动进入保护模式。
第五层,硬件故障预案——服务器宕机时,备用云实例会在三十秒内接管。
第六层,人工干预接口——林晨可以通过手机App随时查看状态并下达指令。
第七层,核按钮——在极端情况下,一键清仓所有头寸。
“还不够。”林晨皱起眉头。
他新建了一个文档,开始列出需要补充的自动化功能清单:
自动报告生成——系统每天收盘后自动生成pdF格式的日报,通过邮件发送到指定地址。报告要包含当日盈亏、交易明细、策略表现、风险指标等关键数据。
多级告警机制——设置不同级别的告警阈值:普通提醒(微信通知)、重要警告(电话提醒)、紧急警报(连续电话轰炸直到接听)。
节假日自动调整——国内长假、国际市场休市期间,系统应该自动调整策略参数,避免在流动性不足的市场中过度交易。
模型自动迭代——每周日凌晨三点,系统自动启动模型训练流程,用最新数据重新训练预测模型,并与旧模型进行A/b测试,优胜劣汰。
资金自动调度——当账户余额超过某个阈值时,自动将部分利润转入银行理财账户;当需要追加保证金时,也能从备用金账户自动调拨。
这个清单越来越长。
林晨靠在椅背上,看着窗外鹏城湾的晨景。远处t厂总部大楼的玻璃幕墙反射着朝阳的光芒,那将是他三天后要去报到的地方。而眼前这套系统,则是他过去九个月心血的结晶,也是家庭财务安全的第二支柱。
“既要,又要。”他苦笑了一下。
这大概就是中年人的常态——永远在多个责任之间寻找平衡。工作、家庭、副业,每一样都不能放松。但换个角度想,能够有选择、有底气地去“平衡”,本身已经是种幸运。
林晨重新坐直身体,开始编写代码。
他先处理最简单的部分——自动报告。用python的ReportLab库生成pdF,再结合Smtp协议实现邮件发送。这个功能两小时就完成了。
然后是告警系统。他接入了腾讯云的短信服务和语音呼叫ApI,设置了三级触发条件:
一级告警(当日亏损超1%):微信通知 + 短信提醒
二级告警(策略连续失效):三次电话提醒,间隔十分钟
三级告警(系统异常或网络中断):连续电话呼叫,直到人工确认
“希望永远不要触发三级。”林晨调试完这段代码时想道。
最复杂的是模型自动迭代模块。他设计了一个完整的流水线:数据清洗→特征工程→模型训练→回测验证→生产部署。整个过程需要八到十个小时,必须放在周末的凌晨进行。
为了防止迭代过程中出现bug导致生产环境崩溃,林晨采用了蓝绿部署策略——新模型在备用服务器上训练和验证,只有通过了所有测试,才会在周一开盘前悄无声息地替换掉旧模型。
“就像给飞机换引擎,必须在天上完成。”他想起某位工程师的名言。
时间一分一秒过去。
中午时分,苏婉轻轻推开门,端着一碗面条进来:“先吃饭吧,从早上坐到现在了。”
林晨这才意识到已经过了四个小时。他接过碗,是熟悉的西红柿鸡蛋面,热气腾腾。
“在弄你那个交易系统?”苏婉瞥了一眼屏幕上密密麻麻的代码。
“嗯,得让它能自己照顾自己。”林晨挑起一筷子面条,“我马上要去上班了,不能像以前那样全天盯着。”
“能行吗?”苏婉的语气里有关切,但更多的是信任——这几个月她已经见识过丈夫在技术上的能力。
“理论上可以。”林晨喝了口汤,“但我还是会每天检查。早上起床看一眼,午休时间再看一眼,晚上睡觉前再确认一遍。就像……”
“就像养了个电子宠物?”苏婉笑了。
“比宠物重要多了。”林晨认真地说,“这是我们家的‘印钞机二号’。”
“那一号是什么?”
“当然是我去t厂上班啊。”林晨也笑了,“双引擎驱动,更稳。”
午后,林晨完成了所有代码的编写和测试。他启动了模拟运行——系统将在虚拟环境中模拟未来七天的交易,检验所有新功能的稳定性。
等待结果的时间里,他打开手机日历,开始梳理未来的时间节奏。回顾这个周末,虽然大部分时间都扑在了系统的自动化改造上,但节奏还算从容。周六上午进行了深度检查,确认各项指标正常;下午陪着苏婉和乐乐去了一趟超市,算是入职前的放松。今天上午又对模型迭代流程做了最后的验证,新模型的表现符合预期。到了下午,刚好把自动化托管的所有功能全部跑通。晚上一家人还简单庆祝了一下——也算是为明天入职前画上了一个轻松的句号。
模拟运行的结果在傍晚时分出来了。
报告显示,在过去七天的虚拟交易中,系统运行正常,所有自动化功能都按预期工作。新模型迭代流程成功执行了一次,新模型在回测中的夏普比率比旧模型提升了0.15——虽然幅度不大,但方向是好的。
最重要的是,风控系统触发了两次一级告警,都及时发出了通知,并按照预设规则采取了降低仓位的措施,成功避免了更大的亏损。
“可以了。”林晨长舒一口气。
他站起身,走到窗前。夕阳正在落下,鹏城湾的水面泛着金色的波光。三天后,他将走进那座玻璃幕墙大楼,开始职业生涯的新篇章。而身后这套安静运行的量化系统,将继续在数字世界里为他创造价值。
这是最好的时代——技术让人能够同时存在于多个世界,扮演多重角色。
也是最考验人的时代——如何在纷繁的可能性中保持专注,在诸多的责任间找到平衡。
林晨关掉电脑,走出书房。客厅里传来乐乐和苏婉的笑声,晚饭的香气已经从厨房飘出来。这个平凡而真实的瞬间提醒他:所有的技术、所有的系统、所有的规划,最终都是为了守护这样的生活。
手机震动了一下。
他掏出来看,是“智投一号”系统发来的第一条自动化日报邮件预览:
【今日小结】运行正常,无异常告警。当前总资产:330,004.73元。
林晨嘴角浮起微笑。
系统已经准备好了。
他也准备好了。
第147章 心态调整
拿到t厂offer后的这几天,林晨坐在书房里,盯着电脑屏幕发呆。
投资系统的监控面板开着,一切正常。但他脑子里想的不是代码,不是交易,而是一个更根本的问题:我能适应吗?
过去这一年,他彻底习惯了自由职业者的节奏。什么时候工作、什么时候休息,全凭自己决定。灵感来了可以连续编码七八个小时,累了就下楼散步,状态不好时可以一整天不碰代码。没有人催他交日报,没有例会,没有KpI,没有任何形式主义的会议。
这种自由,是职场给不了的。
但现在,他要把这份自由交出去了。
林晨拿出一张白纸,开始梳理自己的心态。他写下两个词:失去的,得到的。
失去的:时间自主权、随时陪家人的可能、拒绝不感兴趣的事情的自由。
得到的:稳定的现金流、行业最前沿的信息流、团队协作的碰撞感、更大的平台和资源。
写完之后,他盯着这张纸看了很久。
坦白说,失去的那些东西,在过去这一年里,他已经当作理所当然。每天下午去幼儿园接乐乐,陪他在小区里玩;苏婉偶尔加班时,他可以灵活调整安排,去菜市场买菜做饭;状态不好的时候,他可以一整天不碰代码,窝在沙发上看技术文档。
这些自由,即将成为过去。
但林晨也清楚,自由是有代价的。过去这一年,他的技术视野很大程度上局限在自己能接触到的开源项目和论文里。没有团队可以碰撞,没有mentor可以请教,没有海量数据可以练手。在AI这个日新月异的领域,闭门造车半年就可能被甩在后面。
“我需要那个平台。”他对自己说。
但心态的调整,不是一句“我需要”就能完成的。
林晨想起了一年前被裁员时的自己。那时候,他每天活在恐惧里,害怕找不到工作,害怕还不上房贷,害怕让家人失望。那种恐惧让他变得敏感、焦虑、患得患失。即使在面试中,他也常常因为紧张而发挥失常。
但这次不一样。
他低头看了一眼手机上的投资系统——总资产33万,今天又是正收益。这套系统在过去三个月里稳定盈利运行,每个月都能带来一万多的被动收入。虽然不算多,但足够覆盖家里的基本开销。
这就是底气。
不是银行卡上的数字给了他底气,而是那种“就算搞砸了也没关系”的安全感。在t厂,他可以放心地去学、去试、去犯错,不用每天提心吊胆地担心被裁员。因为他知道,哪怕最坏的情况发生,家里的日子照样能过,投资系统照样在赚钱。
而且,他不只是有底气,还有技术。
量化交易系统的开发经历,让他对数据、模型、算法有了远超普通开发者的理解。从数据处理到特征工程,从模型训练到部署上线,整个链路他都亲手走过一遍。这些能力,在AI开发部同样适用。
更重要的是,他有项目。
“智投一号”不是课堂作业,不是开源项目,而是一个真金白银在市场上运行了三个月的实盘系统。它经历过波动,踩过坑,也交出过漂亮的成绩单。这种从零到一、从理论到落地的完整经验,是很多大厂工程师都不具备的。
底气、技术、项目——这三个东西加在一起,让这次入职和以前完全不同。
林晨在白纸的底部写下了一句话:
“不是去讨生活的,是去学习和做更大的事的。”
心态一变,整个世界都变了。
傍晚,苏婉带着乐乐从幼儿园回来,看到林晨坐在书房里发呆,桌上摊着那张写满字的纸。
“在想什么?”她问。
“在想入职后怎么办。”林晨把纸递给她,“你看看。”
苏婉接过来,仔细看了一遍,然后笑了:“这次心态确实不一样了。”
“哪里不一样?”
“以前你换工作,总是很紧张,怕这个怕那个。”苏婉把纸还给他,“但这次,你在想怎么学、怎么做大事。这种状态,我以前没见过。”
林晨愣了一下,然后也笑了:“可能是因为我知道,就算搞砸了,也有你在,有系统在。”
“所以放心了?”
“放心了。”
晚上,林晨把那张纸贴在了书房的墙上。
每天早上一睁眼就能看到那几个字:不是去讨生活的,是去学习和做更大的事的。
他需要这个提醒。因为从下周一开始,他就要从自由职业者变回打工人了。打卡、开会、写周报、对齐、复盘——这些他曾经深恶痛绝的东西,会重新填满他的生活。
但他知道,这次真的不一样。
他有底气。投资系统每个月稳定的收益,是他的安全垫,也是他的心理支撑。不管t厂的工作顺不顺利,他都不用像以前那样慌。
他有技术。过去一年打磨出来的能力,不会因为换了工作环境就消失。那些代码、模型、系统架构,都是实打实的积累。
他有项目。“智投一号”是一个活着的、在赚钱的项目。这个项目证明了他的能力,也给了他一个退路——一个可以随时回去全身心投入的退路。
带着这三样东西去t厂,和以前带着简历去面试,完全是两码事。
睡前,林晨在手机备忘录里又加了一句话:
“前三个月,把自己当成学徒。不是证明自己有多强,而是看看自己能学多少。不争不抢,不急不躁。心态稳了,一切就稳了。”
他关掉手机,闭上眼睛。
窗外,鹏城的夜空星光稀疏。这座城市从不睡觉。
第148章 最后的休息
夜深了,鹏城的灯火在窗外明明灭灭。
林晨躺在床上,却没有丝毫睡意。他睁着眼,看着天花板,脑海里像放电影一样,把这一整天的画面又过了一遍。
林晨在入职t厂前的最后一天。
早晨醒来的时候,他没有像往常一样立刻翻身起床查看手机,而是闭着眼,静静感受着那份久违的松弛感。没有需要紧急修复的代码,没有需要准备的面试资料,也没有需要盯盘的交易信号。投资系统在过去一周里稳定运行,账户净值稳稳地停在33万上方——这给了他前所未有的底气,即使t厂的薪水要下个月才发,家庭财务也毫无压力。
“爸爸!”卧室门被轻轻推开一条缝,乐乐探进小脑袋,眼睛亮晶晶的,“妈妈说今天不用叫你早起,但我还是想看看你醒了没。”
他睁开眼,看着儿子可爱的模样,心里涌起一股暖流。“醒了,”他坐起身,伸了个懒腰,“今天爸爸什么都不干,就陪你和妈妈,好不好?”
“好!”乐乐欢呼一声,蹦跳着跑出去。
餐厅里,苏婉已经准备好了简单的早餐:白粥、煎蛋,还有一小碟萝卜干。她系着围裙,笑容温婉:“真难得,林晨工程师肯给自己放一天假。”
“最后一天自由身,得好好享受。”他坐下,喝了一口温热的粥,胃里顿时舒服起来,“今天天气不错,带你们去海边走走?”
这个提议得到了全家一致通过。
他们去了背仔角海滩。人不算多,沙质细腻,海水清澈。乐乐一踏上沙滩就撒了欢,提着桶和铲子直奔海浪边缘,开始他伟大的“城堡工程”。他和苏婉找了处树荫铺开野餐垫坐下。海风拂面,涛声阵阵,远处海天一色,几艘货轮缓缓驶过地平线。他深深吸了口气,感觉几个月来紧绷的神经在这一刻彻底松弛下来。
“真快啊,”苏婉靠在他肩头,轻声说,“感觉你失业就在昨天,一转眼,明天就要去t厂报到了。”
“是啊,”他揽住妻子的肩膀,“再次失业这几个月像过了几年。不过还好,总算走过来了。”
“后悔吗?”苏婉问,“如果当初没被裁,也许还在原来的公司,安安稳稳的。”
他想了想,摇摇头:“不后悔。虽然过程煎熬,但学到了真东西。现在这样挺好,凭本事吃饭,心里踏实。”
他说着,目光投向远处正撅着屁股挖沙子的乐乐:“而且,能给乐乐一个更稳定的成长环境,比什么都强。”
苏婉握紧了他的手,没有说话。
中午,一家人在树荫下简单吃了些带来的面包和水果。乐乐吃完又迫不及待地投入他的工程,这次他试图挖一条“护城河”引海水进来,忙得不亦乐乎。
下午,阳光最烈的时候过去,海风变得凉爽。他陪着乐乐堆完了城堡,又带他沿着海岸线捡贝壳。乐乐每捡到一个特别的,都要跑过来献宝似的给他看。
最后,他请一位路过的游客帮忙,拍下了一张全家福。
照片里,三人站在沙滩上,背后是蔚蓝的大海和天空。他搂着苏婉,乐乐站在中间,一手拉着爸爸,一手拉着妈妈,笑得眼睛弯成了月牙。海风吹乱了他们的头发,阳光在脸上镀了一层金色的光晕。
“这张拍得真好。”苏婉看着照片,眼里有光。
夕阳西下时,他们收拾东西准备返程。乐乐玩得尽兴,也有些累了,趴在他背上,小脑袋靠着他肩膀,很快睡着了。他背着儿子,一手提着东西,苏婉在旁边轻轻扶着乐乐的背,一家三口慢慢走向公交站。
回程的地铁上,他看着窗外飞速后退的风景,鹏城的灯火渐次亮起。
明天,他将以一个新的身份,重新融入这座城市的脉搏。
晚上回到家,乐乐洗完澡早早睡了。他和苏婉一起收拾明天入职要带的东西:身份证、毕业证复印件、银行卡复印件、入职通知邮件打印件……他检查得很仔细,把这些材料整齐地放进新买的公文包。
“紧张吗?”苏婉问。
“有点,”他诚实地说,“但更多的是期待。”
“我相信你。”苏婉走过来,帮他整理了一下衬衫领子,“你准备了这么久,积累了这么多。你会做得很好。”
他握住她的手:“谢谢你,老婆。这几个月,辛苦你了。”
“一家人,不说这个。”苏婉笑了,“快去洗澡休息吧,明天要精神饱满地去报到。”
临睡前,他最后看了一眼手机。投资系统的每日报告已经生成,今日收益+0.41%,风控指标全部正常,无异常交易。他设定好明天早上七点的闹钟,然后,罕见地提前关闭了手机。
此刻,他就这样躺在黑暗中,把这一天又重新过了一遍。
身旁是苏婉均匀的呼吸声,隔壁房间传来乐乐偶尔翻身的小动静。窗外是鹏城永不熄灭的城市之光,隐隐传来车流的声音。那些焦虑和不确定感已经消散,取而代之的是一种平静的笃定。
他知道前路必有挑战——大厂节奏快、压力大,陈博士也提醒过。但他不再是那个被裁员时茫然无措的中年码农了。他有了安身立命的技术,有了托底的家庭,有了经过低谷淬炼后更加坚韧的内心。
他翻了个身,闭上眼睛。
明天,开始新的篇章。
这是风暴来临前最后的宁静,也是蓄力已久后的起跳瞬间。
他准备好了。
第149章 入职前夜
凌晨两点三十七分。
林晨在黑暗中睁开眼睛,盯着天花板模糊的轮廓。不是惊醒,也不是被吵醒,就是自然而然地醒了,然后大脑像被按下了启动键,瞬间清醒得如同刚喝下一整杯浓缩咖啡。
他尝试重新入睡,闭上眼,默数呼吸。但思绪像脱缰的野马,在寂静的深夜里狂奔。
明天。
不,严格来说,是今天。再过几个小时,他就要踏入t厂位于科技园南区那座着名的“双子塔”办公楼,以高级算法工程师的身份,开始全新的职业生涯。
他轻轻侧身,借着窗外透进的微弱城市光晕,看向身旁熟睡的苏婉。她呼吸均匀,面容宁静。几个月前,也是在这样的深夜里,他曾因失业的焦虑和未来的迷茫而辗转难眠,是苏婉温柔而坚定的声音将他拉回现实。如今,压力源变了,但失眠却如出一辙。
他悄无声息地起身,赤脚踩在微凉的地板上,像猫一样溜出卧室,轻轻带上房门。
客厅里一片昏暗。他走到窗前,拉开一点窗帘。鹏城的夜从未真正沉睡,远处科技园方向依旧灯火通明,那是无数和他一样的“码农”还在奋战,或是服务器在不知疲倦地运转。更远处,南山区的轮廓在夜色中起伏,这座城市的脉搏,仿佛在黑暗中也能听见。
他走到书房,没有开大灯,只按亮了书桌上的台灯。柔和的光晕照亮了桌面:整齐叠放的入职材料、昨天在海边拍的那张全家福打印件——乐乐笑得没心没肺,苏婉眉眼温柔,他自己则是一副卸下重担后的松弛模样。
兴奋吗?当然。
五十二K的月薪,十六薪的待遇,加上签字费和可能的项目奖金,年包稳稳超过八十万,甚至摸到九十万的门槛。这不仅仅是一个数字,它意味着房贷压力骤减,意味着家庭生活质量的实质性提升,意味着他林晨在三十五岁这年,非但没有被淘汰,反而完成了一次关键的职场跃迁。这感觉,有点像在漫长的隧道里摸索前行,终于看到了出口的光,而且那光比想象中更亮。
但忧虑呢?同样真实。
他打开笔记本电脑,屏幕亮起,自动登录。投资系统的监控界面安静地显示着最新的资产总值:33.4万。从二十万起步,几个月时间,这个他自己捣鼓出来的“副业”已经悄然成长为一个不容小觑的数字。它代表着另一种可能:技术直接变现的可能,不依赖任何平台、只依赖自己认知和代码的可能。
而t厂的工作,是另一条路。平台、资源、规范的流程、顶尖的同事(也可能有复杂的办公室政治)、明确的晋升通道,同时也意味着约束、KpI、会议、以及可能与自己兴趣不完全吻合的业务方向。
“我能适应吗?”他低声问自己。
不是技术层面。经过陈博士那场堪称“灵魂拷问”的技术三面,他对自己的算法功底和工程能力有了新的信心。那几个月的闭关修炼,啃下的论文、调试过的模型、亲手构建的投资系统,都是实实在在的积累。t厂的面试官们,包括陈博士,已经认可了他的技术水位。
他担心的是“节奏”。大厂的快,是出了名的。项目迭代快,需求变化快,技术更新快。自己这几个月虽然是高强度自学,但毕竟是单打独斗,自由安排。一旦进入那个庞大的协作机器,成为其中一个齿轮,能否跟上那种被预设好的、高速运转的节奏?自己三十五岁的“高龄”,在那些可能比自己小十岁、精力充沛、习惯了“996”甚至“007”的年轻同事中间,会不会显得“迟缓”?
还有人际关系。技术团队里的氛围如何?直系上级是否好相处?跨部门协作会不会扯皮?这些在面试中无法完全窥探的软环境,往往才是决定一个人工作体验的关键。在上一家公司待了十年,他几乎成了“老油条”,熟悉所有的明规则和潜规则。而现在,一切归零,他是新人,需要重新学习一套新的生存法则。
他点开了t厂内部知识库的预览入口(hR提前给了一些权限),浏览着即将加入的AI平台部门的一些公开技术文档和项目简介。那些架构图、术语、项目代号,既熟悉又陌生。熟悉的是底层的技术逻辑,陌生的是t厂特有的技术栈封装和业务场景应用。
看着看着,他忽然笑了。
担心这担心那,不正是说明自己在乎吗?正是因为看重这个机会,才会患得患失。如果只是一个随便混口饭吃的地方,又何须失眠?
他想起了陈博士在最后一面时说的话:“林晨,我看重你的,不只是你目前掌握的技术点,更是你那种从物理成本角度思考AI问题的框架,和你这几个月展现出的、可怕的自驱学习能力。t厂能给你平台和资源,把你这些特质放大。至于年龄……在真正的问题面前,年龄从来不是核心变量。”
平台和资源。是的,这才是关键。自己的投资系统,目前更多是基于公开数据和相对简单的策略。如果能接触到t厂内部更高质量的数据(在合规前提下)、更强大的算力集群、以及与顶尖同行碰撞交流的机会,这个系统能进化到什么程度?自己在AI领域的认知边界,又能拓展到哪里?
这不仅仅是一份工作,这是一个新的、更高阶的“练功房”。
他关掉文档,打开自己的代码编辑器。投资系统的核心代码库静静躺在那里。他最近在尝试引入更复杂的注意力机制来改进时序预测模块,但遇到了一些梯度不稳定问题。深夜的头脑格外清晰,他盯着那段代码,手指在键盘上悬停片刻,忽然有了一个新的想法——或许可以借鉴自然语言处理中某种层归一化的变体来试试。
他没有立刻动手修改,而是新建了一个文档,快速记录下这个灵感。明天,不,今天就要入职了,首要任务是熟悉新环境、站稳脚跟。副业的探索,需要更谨慎地安排时间,但绝不能停止。这是他的“第二曲线”,是他的底气,也是他保持技术敏感度和商业嗅觉的秘密花园。
窗外,天空的墨色开始变淡,边缘泛起一丝极细微的灰蓝。凌晨四点了。
林晨伸了个懒腰,关节发出轻微的脆响。他走到客厅,从冰箱里拿出一瓶水,喝了几口。冰凉的水滑过喉咙,让他彻底清醒。
他重新坐回书桌前,最后检查了一遍入职材料:身份证、学历学位证书、离职证明、银行卡复印件……一切齐全。工牌明天才会现场制作领取。他想象着自己别着t厂工牌,穿过那栋玻璃幕墙大厦闸机时的样子。那会是一种什么样的感觉?
或许没有想象中那么激动澎湃,更多的是一种沉甸甸的踏实感。就像长途跋涉的旅人,终于找到了一座坚固的桥,可以更安心、更有力地走向对岸。桥的对岸有什么?挑战、压力、成长、机遇,或许还有新的迷茫,但至少,他不再是那个悬在半空、无所凭依的失业者。
他拿起那张全家福,看了很久。照片上的自己,眼神里有光。那是希望的光。
“好了,”他对自己说,“该来的总会来。兵来将挡,水来土掩。代码可以骗人,但逻辑不会,人更不能。”
这是他的口头禅,也是他行事的底层逻辑。在t厂,同样适用。用扎实的技术逻辑说话,用靠谱的人品处世。剩下的,交给时间和努力。
他关上台灯,书房重新陷入昏暗。但东方的天际,那抹灰蓝已经逐渐扩散,开始晕染上极淡的橙粉色。鹏城的又一个清晨,正在到来。
林晨没有回卧室,他怕吵醒苏婉。他在客厅的沙发上躺下,拉过一条薄毯盖在身上。
闭着眼,不再强迫自己入睡。只是让思绪慢慢沉淀,让呼吸逐渐平稳。
他知道,再过一两个小时,闹钟会响起。他会起床,穿上那套为此特意购买的、不算昂贵但足够得体的休闲西装(t厂文化不要求正装,但他觉得第一天应该正式些),和妻儿一起吃早餐。然后,他会背上电脑包,走出家门,汇入早高峰的人流,走向那座“双子塔”,走向他职业生涯的下一个章节。
等待他的,将是一个全新的世界。
而此刻,在黎明前最安静的这段时光里,他心中那些翻腾的兴奋与忧虑,渐渐融合成一种更为复杂的情绪——那是一种清晰的期待,混杂着适当的敬畏,以及一种“我已做好准备”的笃定。
夜色渐褪,晨光将至。
第150章 新的开始
早晨六点半,手机闹钟还没响,林晨就自己睁开了眼睛。
窗帘缝隙里透进鹏城初夏的晨光,在卧室地板上切出一道明亮的线。他静静躺了几秒钟,感受着胸腔里那股平静而有力的心跳——没有前几个月再次失业时的慌乱,也没有面试前的紧张,只有一种清晰的、沉甸甸的期待。
今天,是他入职t厂的日子。
轻手轻脚地起身,洗漱间的水流声都比平时轻快。林晨站在镜子前,仔细刮着胡须。下巴的线条比半年前清晰了些——那些熬夜学习、焦虑失眠的日子,终究还是留下了痕迹。但镜子里那双眼睛,却比以往任何时候都明亮。
他换上了半个月前特意购置的“战袍”:一件浅蓝色牛津纺衬衫,质地挺括但不刻板;深灰色休闲西裤剪裁合身;脚上是那双穿过几次但保养得很好的棕色皮鞋。不是程序员标配的格子衫牛仔裤,也不是金融人士的整套西装,而是介于两者之间——既体现技术人的务实,又透出对新环境的尊重。
“爸爸好帅!”
卧室门口探进一个小脑袋。乐乐穿着睡衣,揉着惺忪的睡眼,却已经咧开嘴笑了。
林晨转过身,蹲下来揉了揉儿子的头发:“今天怎么醒这么早?”
“因为今天是爸爸去大公司上班的第一天呀。”乐乐跑过来抱住他的脖子,“妈妈说了,今天要早早起来给爸爸做‘入职大餐’!”
厨房里传来煎蛋的香味和锅铲碰撞的轻响。林晨牵着乐乐的手走到餐厅,苏婉正把两片煎得金黄的吐司摆进盘子,旁边是嫩滑的炒蛋和几片培根。餐桌中央,一小瓶插着白色百合的花瓶静静立着——那是昨天苏婉特意去花市买的。
“这么隆重?”林晨笑着拉开椅子。
“当然要隆重。”苏婉解下围裙,在他对面坐下,眼睛亮晶晶地看着他,“林晨,你知道今天是什么日子吗?”
“入职日啊。”
“不只是入职日。”苏婉轻轻摇头,“是你在家再次闭关一百八十三天后,重新走向社会的第一天;是你从跨境电商码农转型为AI算法工程师的‘毕业典礼’;是我们家这艘小船,在风雨飘摇将近一年后,终于驶入新航道的起航日。”
她说这些话时,声音很轻,却每个字都落进林晨心里。
乐乐似懂非懂,但也跟着说:“爸爸最厉害了!”
林晨拿起筷子,夹起一片培根放进嘴里。咸香在舌尖化开,混合着炒蛋的嫩滑和吐司的麦香。这顿早餐的味道,他会记住很久。
“其实昨晚我失眠了。”他忽然说。
苏婉看着他:“紧张?”
“不是紧张。”林晨想了想,“是……有点像高考前夜。你知道自己准备好了,试卷上的题大部分都会做,但还是忍不住想,考场里会是什么样子?监考老师严不严?旁边的同学会不会影响你?”
“那你现在想明白了?”
“想明白了。”林晨喝了口牛奶,“考场就是职场,试卷就是项目,监考老师就是老板和同事。而我——”他顿了顿,“我不是去考试的,我是去解题的。带着我这几个月学到的所有东西,去解那些真正有价值的问题。”
苏婉笑了,那笑容里有欣慰,有骄傲,还有一种“我早知道你会这样”的了然。
七点二十分,林晨检查了一遍背包:笔记本电脑、充电器、入职通知书打印件、身份证复印件、几张一寸照片——都是hR邮件里要求带的。最后,他犹豫了一下,还是把那个黑色封皮的笔记本塞了进去。那是他自学AI期间记的笔记,里面不仅有技术要点,还有那些灵光一闪的想法,包括昨晚关于用NLp技术优化投资系统的草图。
“走吧,我送你去电梯。”苏婉拿起钥匙。
“我也要送!”乐乐急忙从椅子上跳下来。
“爸爸,t厂的大楼是不是特别高?”乐乐仰头问。
“嗯,听说有四十多层。”
“比我们学校还高吗?”
“高多了。”
“那爸爸以后就在那么高的地方写代码吗?”
林晨笑了:“对,在很高的地方,写很厉害的代码。”
晨风扑面而来,带着小区里榕树和桂花的混合气息。鹏城的早晨总是忙碌的,上班族们拎着早餐匆匆走向地铁站,送孩子的电动车在门口排起小队,保安大叔在岗亭里喝着茶看早间新闻。
林晨站在单元门口,深吸了一口气。
“就送到这儿吧。”他转身对妻儿说。
苏婉点点头,上前帮他理了理衬衫的领子。她的动作很轻,手指拂过他锁骨的位置,那里曾经因为长期伏案工作而有些僵硬,这几个月被她按揉过很多次。
“晚上想吃什么?”她问。
“你做什么我都吃。”
“那不行,今天得吃点好的。”苏婉想了想,“我买条鲈鱼清蒸,再炖个排骨汤。乐乐,晚上我们给爸爸庆祝,好不好?”
“好!”乐乐用力点头,然后突然想起什么,从睡衣口袋里掏出一张折得皱巴巴的画,“爸爸,这个给你。”
林晨展开画纸。上面用蜡笔画着三个人:高高的爸爸穿着西装(虽然画得像根蓝色火柴棍),妈妈穿着裙子,中间的小人手拉着手。天空有大阳(画成了橙色圆圈),旁边歪歪扭扭写着几个字:“爸爸上班加油”。
他把画小心折好,放进衬衫胸前的口袋,轻轻拍了拍:“这是爸爸今天最好的护身符。”
原准备开车上班的林晨,考虑到早高峰堵车怕迟到最后决定坐地铁上班。
七点四十分,林晨走进科技园站。
早高峰的地铁站像一台精密运转的机器。人流从各个入口汇入,在安检机前短暂拥挤,又迅速分流到不同站台。林晨跟着人群走下扶梯,11号线站台上已经站满了人。他找了个靠墙的位置,看着对面广告灯箱上滚动的画面——某手机品牌的新品发布会、某个AI教育平台的广告、还有t厂自己的云服务宣传片。
“下一站,南山,开右侧门。”
熟悉的报站声。林晨握紧了背包带子。
六个月前,他也是这样每天挤地铁上班,但心境完全不同。那时是麻木的重复,是“又要去面对那些破事”的疲惫;而现在,是“我要去一个新世界”的跃跃欲试。
地铁到站。他随着人流涌出车厢,走上扶梯。
南山站出口直接连通t厂所在的写字楼群。走出地铁站的那一刻,眼前的景象让林晨脚步微顿。
十几栋玻璃幕墙大厦在晨光中矗立,反射着淡金色的光。穿行其间的人们步履匆匆,大多背着双肩包,手里端着咖啡。空气里有咖啡香、打印机油墨味,还有那种只有高强度技术公司聚集区才有的特殊气息——一种混合了代码、创意和轻微焦虑的味道。
他按照hR邮件里的指引,走向南塔。
t厂总部大楼比他想象中更低调。没有夸张的造型,就是一栋线条简洁的深灰色玻璃建筑,但占地极广。主入口处,一个简约的银色Logo嵌在墙上,旁边是旋转门和安检闸机。
林晨走到前台。穿着浅灰色制服的前台姑娘抬起头,露出职业微笑:“您好,请问有什么可以帮您?”
“我是今天入职的新员工,林晨。”他递上身份证和入职通知书。
前台姑娘在电脑上核对信息,很快递给他一张临时门禁卡和一份资料袋:“林先生您好,请从这边闸机刷卡进入。入职办理在五楼人力资源部,出电梯右转就能看到指示牌。资料袋里有今天的流程表和地图。”
“谢谢。”
“祝您入职愉快。”
刷开门禁,走进大堂的瞬间,林晨有种奇特的感受。
脚下是光可鉴人的大理石地面,头顶是三层挑高的空间,阳光透过玻璃穹顶洒下来。大堂一侧是休息区,几张设计感十足的沙发上坐着几个正在讨论的人,白板上写满了数学公式。另一侧是展示区,陈列着t厂的各种产品和技术成果:从最早的即时通讯软件,到后来的游戏、支付、云服务,再到最近几年重点布局的AI大模型和自动驾驶。
他放慢脚步,看着那些展品。
其中一块屏幕上,正循环播放着一段视频:AI模型如何通过分析医学影像辅助诊断,如何生成逼真的虚拟人,如何用几秒钟完成过去需要数天的手绘动画……视频最后出现一行字:“用科技创造美好”。
林晨站在那里,看了整整两遍。
这不是口号。至少,在陈博士那样的技术人那里,这不是口号。这是他们每天在实验室、在电脑前试图实现的东西——用一行行代码,一个个算法,去解决真实世界的问题,去提升哪怕一点点效率,去创造一点点新的可能。
而他,今天就要成为这其中的一员。
电梯到达五楼。门开,右转,果然看到了“新员工入职接待处”的指示牌。一个开放式大厅里,已经坐了二十几个人,大多是年轻人,也有几个看起来三十出头的。有人低头看手机,有人在轻声交谈,空气中弥漫着淡淡的紧张和期待。
林晨找了个靠窗的位置坐下,从资料袋里取出流程表。
上午:入职手续办理、签订合同、领取办公用品。 中午:新人欢迎午餐(部门负责人出席)。 下午:工位安排、环境熟悉、第一周工作安排沟通。 晚上:可选参加新人聚餐。
很标准的流程。但他的目光落在“部门负责人出席”那几个字上时,心跳还是快了一拍。
陈博士会来吗?
正想着,手机震动了一下。是苏婉发来的微信:“到了吗?一切顺利吗?”
林晨打字回复:“到了,在办入职。一切顺利。”
他想了想,又加了一句:“这里很大,很专业,是我想要的环境。”
发送成功后,他收起手机,看向窗外。
从这个角度,能看到科技园里其他几栋大楼的楼顶,更远处是鹏城湾模糊的海岸线。晨光正好,整个城市正在醒来。
林晨把手伸进衬衫口袋,摸了摸乐乐画的那张皱巴巴的画。
然后,他挺直脊背,等待叫到自己的名字。
新的开始,就在此刻。
第151章 T厂大楼
上午九点十五分,入职手续办理完毕。
hR小姐姐效率极高,笑容标准,动作麻利。林晨领到了一个印有t厂Logo的灰色帆布包,里面装着笔记本电脑(一台顶配的macbook pro)、工卡套、门禁指南、企业文化手册,还有几样印着公司slogan的文创小玩意儿。他捏着那张崭新的工卡,塑料壳还带着点凉意。卡片上印着他的照片——是前几天按要求线上提交的,穿着衬衫,表情比想象中沉稳些——以及姓名、工号,职位一栏清晰地写着:高级算法工程师。
他把工卡小心地装进卡套,挂上脖子。这个简单的动作,却让他心头涌起一股奇异的踏实感。不是当初拿到跨境电商公司offer时那种单纯的兴奋,而是一种混合了证明、归属和重新出发的复杂情绪。失业那段日子,脖子上空荡荡的感觉,仿佛还在昨天。
“林工,你的mentor(导师)和团队同事已经在等你了。我带你过去。” hR小姐姐引着他走向电梯间。
“好的,谢谢。”
电梯平稳上行,目标楼层:22层。透过观光电梯的玻璃幕墙,t厂科技园区的全貌渐次展开。几栋造型现代、线条利落的主楼错落有致,中间环绕着大片的绿地和人工湖,甚至能看到环湖的慢跑道和零星几个晨跑结束正往回走的员工。阳光洒在玻璃幕墙上,反射出耀眼的金光,远处深圳湾的海面隐约可见。这里不像一个办公场所,更像一个精心规划的科技小镇。
“环境真好。”林晨忍不住赞叹。
“是啊,公司在这方面投入很大,希望给员工创造更好的工作和生活平衡条件。”hR小姐姐熟练地介绍,“健身房、游泳池、各种球场、图书馆、甚至还有睡眠舱,都在各栋楼的附属区域。以后你慢慢探索。”
电梯“叮”一声到达22层。门开,一片开阔明亮的办公区映入眼帘。不同于传统格子间的压抑,这里是开放的loft风格,挑高充足,光线透过巨大的落地窗倾泻而入。办公桌是浅木色的长条桌,可灵活组合,不少桌上摆着多屏显示器。空气中弥漫着咖啡香和轻微的键盘敲击声,但并不嘈杂。一些区域用绿植或矮书架做了软性隔断,形成了相对独立的小组讨论空间。最显眼的是靠窗的一整面白板墙,上面写满了复杂的数学公式、系统架构图和潦草的讨论笔记。
林晨深吸了一口气。这就是他未来要战斗的地方。
hR小姐姐将他引到一个靠窗的工位旁,那里已经站着几个人。为首的一位,正是面试时给他留下深刻印象的陈博士。陈博士今天穿着一件深蓝色的polo衫,依旧是那副黑框眼镜,表情比面试时温和许多,正和旁边一个穿着灰色t恤、头发有些自然卷的年轻人说着什么。
“陈博,您的新同事林晨到了。”hR小姐姐说道。
陈博士转过身,目光落在林晨身上,点了点头,露出一个浅浅的笑容:“来了。路上还顺利吧?”
“顺利,陈博士。”林晨连忙回应。
“以后就是同事了,叫陈博就行,或者老陈,大家都这么叫。”陈博士摆摆手,然后侧身介绍旁边的人,“这是王皓,我们组的tech Lead(技术牵头人),也是你接下来的直接mentor。皓子,这是林晨。”
王皓看起来三十出头,身材偏瘦,眼睛很亮,他主动伸出手,笑容爽朗:“欢迎欢迎!面试的时候我就看过你的资料和代码,那个关于Attention机制在时序数据里权重重构的想法挺有意思。以后一起搞事情!”
林晨和他握了握手,能感受到对方手上的力道和热情。“皓哥好,以后请多指教。”
陈博士又简单介绍了另外两位围过来的同事,一位是负责数据管道的老赵,一位是刚入职半年的算法工程师小李。大家都很随和,简单寒暄了几句。
“你的工位就在这里。”王皓指着靠窗的那个位置,“视野不错,累了可以看看外面。电脑已经装好了基础环境,内网权限、代码库权限这些都开好了。今天上午不安排具体任务,你先熟悉一下环境,把开发环境配好,看看我们的wiki和过往的项目文档。下午我带你去参加一个组会,了解一下我们目前在做的项目。”
“好的,明白。”
陈博士补充道:“林晨,面试时我就说过,我们看中的是你解决问题的思路和自驱力。t厂平台很大,资源很多,但节奏也快,压力不小。希望你能尽快融入,把你在‘外面’练就的那套本事,用在我们需要解决的真实、大规模的问题上。有任何问题,随时找王皓或者找我。”
“我会的,陈博。”林晨郑重回答。
陈博士又交代了几句,便匆匆离开了,似乎还有其他会议。王皓拍了拍林晨的肩膀:“别紧张,陈博就是看起来严肃,人很好。你先收拾,我就在斜对面,有事随时喊我。”
同事们也各自回到了工位。林晨坐在属于自己的椅子上,调整了一下高度,将新电脑从帆布包里拿出来,接上电源和桌面上预留的扩展坞。开机,屏幕上出现t厂定制的登录界面。输入工号和初始密码,成功进入系统。
他环顾四周。左手边隔着一条过道,老赵正对着三块屏幕,上面流动着数据监控日志;右前方的小李戴着降噪耳机,眉头微蹙地盯着代码。阳光照在桌面上,暖洋洋的。一种久违的、属于高效协作环境的“场”慢慢将他包裹。这与他在家独自面对屏幕钻研时的孤独感截然不同,这里充满了目标的牵引和同频的振动。
他忽然想起一件事。从随身背包里拿出手机,解开锁屏。
是该记录一下这个时刻。
他站起身,走到落地窗前。窗外是科技园区的中央绿地和远处如积木般堆叠的楼群,更远处,深圳湾大桥像一道细线横亘在碧海蓝天之间。他举起手机,将脖子上的工卡小心地托到胸前,让t厂的Logo和“高级算法工程师”的字样清晰可见,背景是窗外充满未来感的园区景色。
调整角度,找好光线。
咔嚓。
照片定格。画面里的他,眼神平静,嘴角带着一丝不易察觉的、笃定的微笑。背景辽阔,前景清晰。这张照片,比他预想的还要好。
他坐回工位,点开微信朋友圈。手指在屏幕上停顿了片刻。配什么文字呢?炫耀?太浅。感慨?似乎又有些矫情。
最后,他简单地输入:
“新坐标,新征程。保持敬畏,保持好奇。dAY 1 @t厂”
然后,勾选了那张照片,点击发送。
几乎在发送成功的同时,手机就震动起来。点赞和评论提示开始涌入。
前同事张伟秒评:“牛逼!终于进去了!晚上约饭!” 苏婉发了一个拥抱的表情:“老公加油!晚上再给你做大餐庆祝!” 老家的同学:“卧槽,t厂!鹏城湾一号走起!” 甚至还有之前面试过的一家web3公司hR:“恭喜林先生!看来我们庙太小了[笑哭]” ……
一条条祝福和惊叹划过屏幕。林晨看着,心里暖流涌动,但并没有太多波澜。他知道,朋友圈的点赞只是瞬间的烟花,真正的挑战和旅程,从此刻,在这张工位上,才真正开始。他不再是那个需要向外界证明“我还能行”的失业者,而是需要在这里,用代码和逻辑,真正证明自己价值的一员。
他放下手机,深吸一口气,点开了电脑桌面上那个名为“Internal wiki”的图标。页面加载出来,密密麻麻的文档链接按照部门、项目、技术栈分类排列。他找到了自己所在的“AILab-大模型优化与应用组”目录,点了进去。
目录展开,项目名称映入眼帘:《超大规模预训练模型推理端成本优化》、《基于强化学习的个性化推荐系统重排策略》、《多模态理解在内容安全中的应用》……每一个标题背后,似乎都对应着海量的数据、复杂的算法和实实在在的业务价值。
他的目光在其中一份名为《模型稀疏化与量化在广告点击率预估模型上的实践与收益》的文档上停留了片刻。这正是他自学期末深入研究过的方向之一。他点开文档,快速浏览起来。
文档写得非常详细,从问题背景、业界方案对比、自家技术选型与改进、Ab测试实验设计、线上效果收益,到遇到的坑和后续优化方向,一应俱全。数据翔实,图表专业,思考深入。林晨看得很快,但越看,神情越是专注。
这才是他想要的东西。不是纸上谈兵的理论,而是真刀真枪在亿级用户、千亿参数规模上搏杀出来的经验与智慧。家里的投资系统虽然让他验证了技术可行性并获得了收益,但那个系统的数据量和复杂度,与t厂面对的场景相比,如同小溪之于江海。
他感到一种熟悉的、面对未知技术领域的兴奋感开始滋生,混合着些许压力。他知道,自己那套野路子练出来的功夫,在这里需要经过更严苛的标准化、工程化和规模化考验。
正当他沉浸在一篇关于分布式训练集群资源调度的技术报告时,内部通讯软件弹出了一条消息。
是王皓:“林晨,看文档呢?感觉怎么样?对了,陈博刚跟我说,明天有一个新的项目启动会,可能跟大模型在金融风控领域的初步探索有关,他觉得你之前有量化背景,可能感兴趣。具体资料我晚点发你。你先熟悉着,下午组会别忘了,两点,3号会议室。”
金融风控?大模型? 林晨精神一振,手指在键盘上敲下回复:“收到,皓哥。文档很有收获,正在看。期待下午的会和明天的项目。”
他放下按在键盘上的手,目光再次投向窗外。t厂大楼玻璃幕墙反射着正午越发炽烈的阳光,一片辉煌。
新的战场,已经清晰可见。而他的武器,早已打磨锋利。
第152章 第一个任务
下午两点,3号会议室。
林晨提前五分钟到达,手里拿着新发的笔记本,上面已经记了几页关于内部文档的阅读笔记。会议室不大,一面白墙,一面落地玻璃,透过玻璃能看到外面的工位区。长条桌上摆着几台显示器,接口线垂下来,等着人来连接。
王皓已经在了,正往白板上写东西。他抬头看见林晨,招招手:“来得正好,帮我看看这个公式有没有写错。”
白板上是一串关于LoRA微调的矩阵分解表达式。林晨扫了一眼,指着其中一项:“这里维度不对,r应该小于等于这个秩,你写成了等于。”
“眼尖。”王皓笑着改了,“陈博总说我推导不严谨。坐吧,等人到齐。”
林晨选了靠窗的位置坐下。阳光从百叶窗缝隙透进来,在桌面上切出一道道细长的光带。他把笔记本打开,翻到空白页,笔放在旁边。这个动作让他想起大学时上课前的准备,但心境完全不同——那时是听讲,现在是参与。
陆续有人进来。老赵端着保温杯,冲林晨点点头;小李手里拿着一袋没吃完的饼干,嘴里嘟囔着“下午茶时间正好开会,反人类”;还有两个林晨没见过的人,一个留着短发的女生和一个戴棒球帽的男生。
“这是林晨,今天刚入职。”王皓简单介绍,“这是许悦,负责模型评估;这是周浩,做推理引擎优化的。大家认识一下。”
许悦冲林晨笑了笑,周浩抬了抬帽檐算是打招呼。没有太多寒暄,气氛务实。
陈博士最后一个进来,手里拿着一个平板,直接坐到会议桌主位。“开始吧。”他看了王皓一眼。
王皓站到白板前,拿起马克笔。“先同步一下上周进展,再说下周计划。老赵,从你开始。”
老赵清了清嗓子:“数据管道那边,用户行为序列的长度从512扩到了1024,存储压力增加了40%,读写延迟也有上升。我上周做了分区优化和冷热分离,延迟降回来了,但存储还在继续涨。这周需要评估进一步压缩的方案。”
“具体压缩方向?”陈博士问。
“量化或者过滤低信息密度的行为。比如用户快速滑动那种,停留时间低于300毫秒的,占比超过30%但贡献的信息增益很小。”
“可以。做个Ab,看对下游模型效果的影响。”陈博士在平板上记了一笔。
许悦接着汇报评估平台的事,周浩讲推理引擎的kernel优化进度。林晨快速记录,这些术语他大多熟悉,但t厂内部的工具链和命名规范需要时间消化。他发现每个人的汇报都极简,没有ppt,没有废话,数据说话,问题导向。
轮到王皓时,他在白板上画了一个框图。“大模型在金融风控的探索项目,陈博上周提过。我今天把初步框架定一下。”
林晨立刻坐直了身体。这正是他感兴趣的方向。
“背景很简单,”王皓边说边写,“现在风控主要靠规则加传统机器学习模型,对复杂模式的识别能力有限。大模型有推理和上下文理解能力,但成本高、延迟大,直接用在线上不现实。我们想探索一个混合架构——用小模型做初筛,大模型只处理疑难样本和需要解释性的case。”
他在框图上标出几个模块:“数据层、小模型推理层、大模型决策层、解释层。林晨,”他突然点名,“你之前做过量化交易,应该对时序数据和异常检测不陌生。你来说说,金融风控最核心的难点在哪?”
会议室安静了两秒。林晨没想到这么快就被提问,但脑子已经在转。他组织了一下语言:“如果是传统风控,难点在特征工程——金融数据的信噪比很低,有效信号容易被噪声淹没。但如果是大模型介入,我觉得难点变成了可解释性和稳定性。模型给出一个拒绝放贷的决定,银行需要知道为什么;而且市场环境变化快,模型不能频繁剧烈波动。”
陈博士微微点头。王皓接着说:“说到点子上了。所以这个项目不只是堆模型,还要设计解释机制和监测体系。林晨,你对这部分有兴趣吗?”
“有。”林晨没有犹豫。
“好,那你先负责调研目前业界在金融大模型可解释性方面的方案,特别是针对结构化数据和时序数据的。下周这个时候,给一个调研报告。”王皓看着他,“有问题吗?”
“没有。”林晨在笔记本上写下:可解释性调研,结构化+时序,下周二。
这是他在t厂的第一个任务。没有“熟悉环境一周”的缓冲,没有新手保护期。上来就是真问题、真需求、真截止时间。
他喜欢这种节奏。
会议继续。陈博士又问了几个技术细节,调整了项目的优先级和资源分配。全程高效,没有一句多余的话。最后他总结:“这个金融风控项目是AI Lab和金融科技部的联合项目,对方业务压力大,我们不要拖后腿。皓子盯紧进度,许悦提前准备评估指标,林晨下周输出调研后尽快进入开发。”
“明白。”众人应声。
散会后,林晨回到工位。他打开电脑,开始搜索内部关于可解释性研究的文档和代码。wiki里有一个“xAI”的专题页,列了十多篇论文和对应的内部实现。他逐篇点开,边看边做笔记。
王皓从旁边经过,丢给他一罐咖啡。“慢慢看,别着急。第一周主要是信息输入。”
“谢谢皓哥。”林晨接过咖啡,拉开拉环,喝了一口。微苦,带着凉意。
他看着屏幕上密密麻麻的文档,又看看窗外的园区景色。下午的阳光已经西斜,在楼群间拉出长长的影子。新电脑的键盘手感很好,敲击声清脆。他新建了一个文档,标题打上:《大模型可解释性在金融风控中的技术调研——初步框架》。
光标在标题下方闪烁。他开始写第一行字:
“1. 背景与目标:本项目旨在探索大语言模型在金融风控场景下的可解释性方案,重点解决结构化时序数据的特征归因和决策逻辑可视化问题……”
键盘声融入周围此起彼伏的敲击声中,成为22层办公区背景音的一部分。
他想起了早上发的那条朋友圈——“新坐标,新征程”。现在看来,征程的第一步,就是把这个调研报告写好。不是为别人,是为自己在这个新世界里站稳脚跟。
手机震了一下。他瞥了一眼,是苏婉发来的消息:“第一天感觉怎么样?晚饭想吃什么?”
他简短回复:“很好。什么都行,你做的就好。”
锁屏,继续写。
工卡贴在胸前,微凉。电脑包里的旧笔记本安静地躺着,像一个完成了使命的老朋友。窗外,深圳湾的海面开始泛起晚霞的橙色。
这是他在t厂的第一天。不是结束,是开始。
第153章 团队成员
开完会后,陈博士亲自领着林晨,穿过一片开阔的公共休息区。阳光透过巨大的落地窗洒进来,咖啡机飘散着香气,几个员工正靠在懒人沙发上低声讨论着什么,白板上画满了潦草的公式。这里的氛围和之前林晨待过的任何一家公司都不同——松弛中透着一种高度专注的张力。
“这边。”陈博士脚步轻快,走向一片用半高玻璃隔断划分的办公区域。区域门口挂着一个简洁的金属牌,上面刻着“AIGc-推理优化组”。
林晨的心跳不由自主地加快了。他知道,门后面就是他未来要并肩作战的同事们。三十五岁,空降的高级职称,顶着陈博士“特招”的光环……这些念头在他脑海里盘旋,让他手心微微出汗。他下意识地整理了一下身上崭新的t厂文化衫——深蓝色,左胸绣着小小的公司Logo,料子挺括,比他想象中要体面得多。
陈博士似乎察觉到了他的紧张,在推门前,侧头低声说了一句:“都是做技术的人,实在点就好。我们组氛围不错。”
玻璃门被推开。
映入眼帘的是一个开放式的办公空间,大约二十多个工位呈“回”字形排列,中间是几张可移动的白板和讨论桌。几乎每个工位都配着至少两台大尺寸显示器,有的甚至三台,屏幕上滚动着代码、论文、训练损失曲线和三维数据可视化图表。空气中弥漫着一种特有的“技术宅”气息——混合了电子设备散热、速溶咖啡以及一点点……可能是某位同事忘了扔掉的香蕉皮的味道?
最先注意到他们的是一个坐在靠近门口位置的年轻男生,看起来二十七八岁,戴着黑框眼镜,正对着屏幕皱眉。他余光瞥见陈博士,立刻转了过来,随即看到了后面的林晨,眼睛一亮。
“陈博回来啦!”他声音清亮,这一嗓子,让区域内大部分人都抬起了头。
紧接着,不知是谁先带头,一阵不算特别热烈但足够真诚的掌声响了起来。啪啪啪……大约二十多人,有的从工位后站起身,有的坐着转过身,脸上都带着好奇和友善的笑容,目光齐刷刷地落在林晨身上。
林晨感觉脸颊有点发烫。这场面比他预想的更正式,也更温暖。他看到了各种面孔:年轻的,沉稳的,戴着降噪耳机沉浸在自己世界的,还有一位头发花白、气质像教授的中年人。这就是t厂AI部门最核心的团队之一。
陈博士走到区域中间,拍了拍手,掌声渐息。“大家停一下手头的事,几分钟。介绍一下,这位是林晨,我们组新加入的高级算法工程师,今天正式入职。”
所有的目光再次聚焦。林晨能清晰地感觉到那些目光里的审视:好奇、评估、或许也有一丝对于“空降兵”本能的观望。他深吸一口气,向前迈了一小步。
“大家好,我是林晨。”他的声音起初有点干,清了清嗓子才稳住,“很高兴能加入咱们推理优化组。我之前……主要在传统行业和跨境电商领域做技术,最近两年自学转向AI和深度学习。在模型压缩、推理加速方面有一些个人实践,但跟咱们t厂的前沿项目比,肯定还有很多要学习的地方。”
他顿了顿,目光扫过那些注视着他的眼睛,努力让自己显得诚恳而不卑怯。“我算是大龄转行,能有机会来这里,特别感谢陈博士的认可。希望以后能跟大家多学习,尽快熟悉项目,贡献自己的一份力。谢谢。”
没有华丽的辞藻,没有过度标榜,甚至坦承了自己的“非典型”背景。这番自我介绍说完,林晨心里反而踏实了一些。代码可以骗人,但逻辑不会,人更不能。这是他信奉的准则,用在人际开场白上,似乎也合适。
掌声再次响起,这次似乎多了几分认同感。
“欢迎林工!”那个最先开口的眼镜男生笑着喊道,“以后多指教啊!”
“欢迎欢迎!” “晨哥好!” 其他同事也纷纷出声,气氛一下子活络起来。
陈博士脸上露出满意的神色,指了指刚才说话的眼镜男:“这是杨帆,我们都叫他小杨,组里的活络分子,也是你的mentor(导师)之一,前期熟悉环境、代码库、流程,都可以找他。”
小杨立刻笑嘻嘻地凑近些:“晨哥别客气,有事儿随时戳我。我工位就在你旁边。”他指了指靠窗的一个空工位,上面已经放好了干净的显示器、键盘鼠标,看来是提前准备好的。
陈博士又简单介绍了几位核心成员:那位气质像教授的中年人是赵工,组里的定海神针,专精底层算子优化和硬件协同;一位短发干练的女工程师叫李薇(和hR同名不同人),负责模型量化与部署管线;还有几位负责不同子方向的骨干。林晨努力记忆着每一张脸和对应的名字、方向。
介绍完毕,陈博士对大家说:“林晨刚来,大家多关照。小杨,你先带他熟悉一下环境,拉他进所有必要的群组,权限都开好了。下午我们再碰一下他初步的工作安排。”
“好嘞!”小杨爽快应下。
陈博士又对林晨点点头:“你先安顿,适应一下。中午可以和组里同事一起吃个饭。下午两点,来我办公室一趟,我们聊聊。”说完,他便转身离开了,步履依旧匆忙。
组长一走,气氛更加轻松。几个附近的同事围了过来。
“晨哥,你这文化衫领得挺合身啊。”小杨打趣道。
“林工,听说你是陈博亲自面试特招的,厉害啊。”一个看起来三十出头的同事说道,语气里带着探究。
林晨忙摆手:“没有没有,就是运气好,跟陈博士聊得比较投缘。”
“能跟陈博聊投缘就是本事。”那位赵工推了推眼镜,声音平和,“他眼光挑得很。欢迎你,以后多交流。”
“谢谢赵工。”林晨恭敬地回应。
小杨开始热情地给林晨介绍办公区:零食柜在哪里(“公司补贴,随便拿,但薯片消耗太快经常要补货”),哪个会议室最难约,茶水间哪种咖啡豆最提神(“但喝了小心晚上睡不着”),打印扫描设备怎么用,内部技术文档库和知识库的入口……事无巨细。
林晨一边听,一边走到自己的工位前。工位很宽敞,升降桌,人体工学椅,和他之前那个拥挤的跨境电商工位天壤之别。他放下领到的新笔记本电脑包,插上电源,开机。屏幕亮起,显示着t厂定制的Linux系统界面,干净而专业。
“公司内网、代码仓库、协作平台、邮件,都用你工卡号登录就行。”小杨俯身帮他操作了几下,“喏,这几个是必加的内部群,我先拉你进去。这个是咱们组的工作群,这个是部门大群,这个是技术分享群……哦,还有个‘南山科技园美食探索群’,这个最重要!”
林晨被他逗笑了,紧张感消散大半。他依次登录,看着屏幕上一个个跳出来的界面和聊天窗口,一种奇异的真实感终于落地——他真的成了这里的一员。
陆续又有其他同事过来简单打招呼,交换了内部通讯软件的好友。林晨发现,这个团队虽然年轻化,但并没有他预想中顶级大厂可能有的那种傲慢或疏离感。或许是因为陈博士的带队风格,或许是因为技术人相对纯粹的特性,大家表现得直接而务实。
中午,小杨果然吆喝着组里七八个人一起去食堂。t厂的食堂占据了整整两层,菜系丰富得令人咋舌。林晨跟着队伍,端着餐盘,看着琳琅满目的窗口,恍惚间有种回到大学食堂的感觉,只不过这里的环境、菜品质量和就餐的员工气质,都透着一股精英范儿。
吃饭时,大家的话题自然围绕着技术、项目、行业动态展开。林晨大多时候在听,偶尔被问到才谨慎地回答几句。他听到他们在讨论某个开源大语言模型最新版本的推理瓶颈,在争论某种新型注意力机制的实际收益,在抱怨某个实验因为集群调度问题又延迟了……
这些话题,有些他熟悉,有些则触及了他知识的边界。他默默记下那些陌生的术语和项目代号,心里清楚,这就是他未来需要持续学习和深耕的领域。压力感再次浮现,但这一次,混合着强烈的兴奋和求知欲。
下午一点五十,林晨提前了一点,根据内部地图的指引,来到陈博士办公室门外。门虚掩着,他轻轻敲了敲。
“请进。”里面传来陈博士的声音。
林晨推门进去。办公室不大,布置简洁,除了书桌、书架和一张小会议桌,最显眼的就是墙上的一块大屏幕,上面正显示着复杂的系统监控图表。陈博士正站在屏幕前凝神看着,手里端着一杯浓茶。
“陈博士。”林晨打招呼。
陈博士转过身,示意他在会议桌旁坐下。“怎么样?上午还适应吗?”
“挺好的,同事们都很热情,小杨帮了很多忙。”林晨如实说。
“嗯,小杨性子活,技术底子也不错,你跟他多交流有好处。”陈博士坐到了对面,双手交叉放在桌上,目光变得专注起来,“叫你来,是想跟你初步沟通一下你接下来的工作重点。”
林晨立刻挺直了背脊,进入倾听状态。
“我们组,全称是‘AIGc内容生成-推理优化组’,顾名思义,核心目标就是让各种生成式AI模型,在实际部署和应用时,跑得更快、更省资源、更稳定。”陈博士语速平缓,但每个字都带着分量,“你现在看到的火爆的大语言模型、文生图模型,参数动辄千亿、万亿,对算力和内存的要求是天文数字。如何让它们在有限的成本下,服务于亿万用户,这就是我们要解决的‘最后一公里’问题。”
林晨点头,这正是他感兴趣且自学的方向。
“你面试时提到的关于‘物理成本’的思考,以及你在模型剪枝、量化上的实践,和我们组的部分方向是契合的。”陈博士看着他,“所以,我打算让你先参与到我们一个核心项目里来——‘轻舟’大语言模型推理框架的迭代开发。这个项目涉及模型编译优化、动态批处理、显存精细化管理、异构计算调度等多个层面。你先从熟悉代码框架和现有优化策略开始,赵工会给你一些具体的分析任务。”
“好的,陈博士。”林晨心中一定,有明确的方向就好。
“t厂的技术栈深,项目复杂度高,刚开始可能会有点吃力。”陈博士语气缓和了些,“不要怕,有问题随时问。我看了你的背景,自学能力很强,这是最重要的素质。这里不缺聪明人,但缺能沉下心把问题钻透的人。”
“我明白,我会尽快跟上。”林晨郑重承诺。
陈博士点了点头,似乎还想说什么,但桌上的内部通讯软件响起了提示音。他瞥了一眼,对林晨说:“那就先这样。具体任务赵工和小杨会跟你对接。去吧,好好干。”
“谢谢陈博士。”林晨起身,离开了办公室。
走回工位的路上,他感到一种久违的、充满挑战的充实感。新的战场已经铺开,代码、算法、系统、团队协作……一切都刚刚开始。他坐到自己的工位前,打开电脑,点开小杨刚刚发过来的“轻舟”项目文档库链接。
屏幕上,密密麻麻的技术文档、架构图、代码目录呈现出来。深不见底,但也浩瀚如星海。
就在这时,他的私人手机震动了一下。他拿起来一看,是哥哥林枫发来的微信消息,只有一张图片。
点开图片,是侄儿林浩穿着白色厨师服,站在某个看起来像是培训学校厨房操作台前的照片。小伙子系着围裙,戴着厨师帽,手里拿着一把锃亮的中式菜刀,对着镜头笑得有点腼腆,但眼神亮晶晶的。照片背景里,还有好几个同样打扮的年轻人在忙碌。
图片下面,林枫跟了一句话:“浩浩今天在学校的照片,说谢谢小叔。”
林晨看着照片里侄儿那充满希望的笑容,再抬头看看自己眼前闪烁着代码的屏幕,嘴角不由自主地弯了起来。鹏城初夏的阳光透过玻璃窗,暖暖地照在他的办公桌上。一条是技术攀登的险峰,一条是人间烟火的踏实之路,在这个午后,仿佛产生了某种奇妙的共鸣。
他给林枫回复了一个竖起大拇指的表情,然后放下手机,将目光重新投向眼前的“星海”。
旅程,开始了。
第154章 中午食堂
上午的时间在熟悉代码库和项目文档中过得飞快。林晨揉了揉有些发涩的眼睛,看了眼电脑右下角的时间:11点58分。几乎就在秒针跳向12点的瞬间,工位区里响起了一阵轻微的骚动——椅子滑动声、关显示器声、低声的交谈和笑声。
“林哥,走,吃饭去!”坐在斜对面的小杨已经站了起来,脸上带着年轻人特有的、对食物毫不掩饰的期待,“带你见识见识咱们t厂的‘能量补给站’。”
林晨笑着关掉IdE,起身跟上。走廊里已经有不少人流向同一个方向,气氛轻松。穿过两条明亮的走廊,再下一层自动扶梯,一个开阔的、挑高至少两层楼的巨大空间豁然出现在眼前。
即使早有心理准备,林晨还是被眼前的景象震了一下。
这哪里是食堂,分明是一个超大型、设计现代的美食广场。明亮的自然光从巨大的玻璃幕墙倾泻而入,绿植点缀其间,桌椅摆放疏朗,毫无拥挤感。最引人注目的是环绕中央就餐区的一圈明档窗口,每个窗口上方都有清晰的电子菜名牌和诱人的食物实景图,空气中弥漫着各种食物香气复合而成的、令人食欲大动的味道。
“粤式烧腊、潮汕卤水、湘菜小炒、川味冒菜、西北面点、西式简餐、轻食沙拉、日式定食、东南亚风味……”小杨如数家珍地指着各个窗口,“每天轮换,基本一个月不重样。那边还有水果区、饮料区、甜品站,全部免费,随便拿,只要别浪费就行。”
“免费?”林晨虽然知道大厂福利好,但如此规模的自助餐式免费食堂,还是超出了他之前的想象。这背后是实实在在的巨额成本。
“对,免费的午餐和晚餐。”旁边传来一个沉稳的声音,是组里一位资深工程师赵工,他也走了过来,“公司算过账,让员工吃好、节省通勤外出时间、提升下午工作效率,这钱花得值。而且,”他笑了笑,“这也是一种筛选和吸引。能安心在这里钻研技术的,多半也是喜欢这种纯粹环境的人。”
林晨深以为然。他跟着人流,先取了一个质感很好的大餐盘。第一个窗口是粤式烧腊,油亮发光的烧鹅、蜜汁叉烧、白切鸡整齐排列,师傅刀工利落。他要了一份烧鹅拼油鸡,浇上些许酸梅酱和姜蓉。
第二个窗口是湘菜小炒,火爆的气息扑面而来。小炒黄牛肉、剁椒鱼头、农家一碗香……色泽红亮,锅气十足。他添了一勺小炒肉。
经过汤品区,有老火靓汤和简单的例汤。他选了一盅看起来炖得清澈的茶树菇炖鸡汤。最后在蔬菜窗口夹了一筷子清炒菜心,在水果区拿了几片西瓜和一把蓝莓,又顺手接了杯冰镇的柠檬水。
餐盘满满当当,色彩丰富,营养均衡。他端着盘子,跟着小杨和赵工在靠窗的位置坐下。阳光透过玻璃洒在桌上,温暖而不刺眼。
“怎么样,林哥,这伙食比之前公司如何?”小杨扒了一口自己的麻辣香锅饭,含糊地问道。
“天壤之别。”林晨切下一块烧鹅皮,放入口中。皮脆肉嫩,汁水丰盈,酸梅酱恰到好处地解了腻。“我以前那公司,午餐补贴二十块,还得自己找地方解决,要么外卖,要么楼下快餐店,吃得那叫一个敷衍。”他想起过去十年那些匆匆解决、只为果腹的午餐时光,心中感慨。
“慢慢就习惯了。”赵工吃相斯文,他点的是西餐区的烤三文鱼配藜麦沙拉,“不过也别光顾着吃。食堂也是个好地方,经常能碰到其他部门的技术大牛,有时候吃着饭聊几句,就能碰撞出点火花,或者解决一个卡了好几天的问题。”
正说着,一个戴着黑框眼镜、身材微胖的工程师端着盘子凑了过来,“老赵,小杨,这位是……新来的林晨林工吧?早上听我们组人提了一句。”来人很自来熟地坐下。
“对,这是林晨,陈博士亲自招进来的,搞推理优化的大牛。”小杨介绍道,“林哥,这是隔壁AIGc-图像生成组的王工,人送外号‘显存杀手’,专攻大模型显存优化。”
“不敢当不敢当,就是跟显存较劲。”王工摆摆手,随即看向林晨,眼睛发亮,“林工,听说你之前自己搞过量化投资的AI系统?对底层算子和内存访问模式优化肯定有心得吧?我们最近在弄一个超分辨率模型的部署,显存占用老是爆,有没有什么思路……”
林晨没想到吃饭还能遇到技术交流,而且对方显然做足了功课。他放下筷子,略一思索,结合自己开发投资系统时遇到的类似问题以及这两天看“轻舟”项目文档的体会,提出了几个方向:“可以考虑一下激活值重计算,用时间换空间;或者对你们模型中那个占用最大的注意力模块做更细粒度的分块加载;另外,检查一下cUdA kernel的启动配置和共享内存使用,有时候默认配置不是最优……”
王工听得连连点头,甚至拿出手机备忘录记了几下。“有道理!回头我试试。谢了林工!改天再细聊!”他风风火火地吃完剩下的饭,打了个招呼就先走了。
“看吧,”赵工笑道,“这就是t厂食堂的日常。技术氛围是浸在骨子里的,连吃饭都带着点‘算力’的味道。”
林晨也笑了,这种纯粹围绕技术展开的交流,让他感到舒适和充实。他继续享用午餐,烧鹅的香脆、小炒肉的鲜辣、鸡汤的醇厚、菜心的清甜在口中交织,是实实在在的满足感。他看着窗外园区内修剪整齐的草坪和步履匆匆却神情专注的同事们,再对比自己失业在家那段时间的焦虑和迷茫,一种强烈的安定感和“来对了地方”的确认感油然而生。
这里不仅有顶尖的技术挑战和资源,还有一种鼓励钻研、高效务实的文化,以及这些看似微不足道、却实实在在提升幸福感的细节福利。它们共同构成了一种强大的吸引力,也无形中提高了员工对公司的认同感和忠诚度。
午餐快结束时,小杨忽然压低声音说:“对了林哥,有个‘潜规则’告诉你。食堂晚上八点后,有时候会有‘神秘加餐’,比如小龙虾、烤串、海鲜粥之类的,算是给加班同学的福利。味道不错,你有空晚上留下可以试试。”
林晨点点头,心里想的却是另一件事。如此完善的后勤保障,让技术人员可以心无旁骛地投入工作,这种系统性的支持,本身就是一种强大的生产力。这和他为自己设计的智能投资系统,在理念上似乎有相通之处——消除不必要的干扰和损耗,让核心能力(无论是人的脑力还是算法的算力)发挥到极致。
吃完最后一片西瓜,他将餐盘放到指定的回收传送带上。看着干净得几乎不用再清洗的盘子和分类细致的垃圾桶,他又想起了昨天林浩发来的那张穿着洁白厨师服的照片。
技术高峰的攀登,需要这样高效洁净的“燃料补给站”。 而人间烟火的经营,何尝不是另一种形式的、滋养身心的“食堂”?
一个模糊的念头在他脑海中闪过:如果……能把这种系统性、标准化、同时又兼顾品质和体验的运营思路,用到餐饮上呢?尤其是快餐领域。
他摇摇头,暂时把这个想法压了下去。眼下最重要的,是先把“轻舟”项目搞明白,在t厂站稳脚跟。
不过,周末或许可以给林浩打个电话,除了问问学厨进展,或许也能聊聊自己今天在食堂的这些观察和感受。那条充满烟火气的道路,或许也需要注入一些“硅谷”式的效率思维。
第155章 导师陈博士
入职t厂的第三天下午,林晨刚结束一个小组技术方案评审会,回到工位,正打算整理会议纪要。t厂内部系统的即时通讯软件“叮咚”响了一声,不是常见的同事消息提示音,而是更高权限的专属铃声。
他点开一看,是部门助理发来的:“林工,陈博士现在有空,想过来和你聊聊,方便吗?”
陈博士。林晨心头一跳。这位在终面时给他留下深刻印象,林晨提出“物理成本”AI观,直接决定录用他并给予高级职称和Leader岗位的部门总监。
“方便,随时欢迎。”林晨迅速回复,下意识地整理了一下桌面上散落的笔记本和打印出来的项目文档。心跳微微加速,不是紧张,更像是和重量级人物深入探讨的郑重和期待。
几分钟后,一个穿着浅灰色polo衫、深色休闲裤,戴着黑框眼镜,气质儒雅随和的中年男人,步履轻快地走了过来。他没有一般高管的排场或刻意营造的距离感,就像一位路过的资深同事。
“林晨,没打扰你吧?”陈博士停在林晨工位旁,笑容温和,声音清晰平和。
“没有没有,陈博士您好!”林晨立刻站起身,伸出手。两人的手握在一起,陈博士的手干燥有力。
“坐,坐下聊。”陈博士很自然地拉过旁边一张空闲的工学椅坐下,目光扫过林晨的桌面,看到那本摊开的、写满技术笔记和架构草图的笔记本,眼中闪过一丝不易察觉的赞许。“怎么样,入职这几天,还适应吗?‘轻舟’项目组的同事都熟悉了吧?”
“适应,同事们都很专业,氛围很好。”林晨实话实说,“昨天中午在食堂还跟小杨、赵工他们讨论了一个显存优化的问题,收获很大。”
“那就好。t厂技术氛围是还可以,但关键是自己要能沉进去,也要能跳出来看。”陈博士点点头,语气随意得像在聊家常,“你的入职材料我看了,包括面试时的技术评估报告。三十五岁,从传统电商转AI,靠自学能到这一步,不容易。尤其是你对AI训练‘物理成本’的理解,和我们在实际业务中遇到的瓶颈痛点,契合度很高。”
林晨没想到陈博士会直接提到这个,心里一暖,认真道:“谢谢陈博士。其实也是被逼出来的,失业那段时间,没有退路,只能拼命学。后来自己做量化系统,调参训练,看着电费账单和云服务扣款短信,才对‘算力即成本,数据即燃料’这句话有了切肤之痛。”
“切肤之痛……这个词用得好。”陈博士推了推眼镜,身体微微前倾,显出浓厚的交流兴趣,“很多刚入行的年轻人,甚至一些工作几年的,容易沉浸在算法精度、模型效果的虚荣指标里,却忽略了支撑这些指标背后需要燃烧的真实资源——电力、硬件折旧、时间、人力。我们部门现在推进的几个核心项目,无论是大模型蒸馏,还是多模态理解,首要约束条件都不是‘能不能做’,而是‘以什么样的物理成本代价去做’。你的背景和思考方式,在这个问题上天然有优势。”
这是极高的评价和定位。林晨感到肩上的担子清晰了一些,同时也涌起一股被真正理解的激动。“我会努力把这份‘优势’落实到具体工作里。”
“嗯。找你聊聊,一是深入认识一下,二是给你交个底。”陈博士的语气认真了几分,“‘轻舟’项目,目标是打造下一代高效能、低部署成本的轻量化大模型,是公司AI战略下沉到具体业务场景的关键一步。让你以高级算法工程师和Leader的身份进来,是希望你能在模型结构设计、训练策略优化,特别是成本-效果平衡这个核心难题上,承担起关键角色。压力不会小,项目周期紧,技术挑战也大。”
“我明白。”林晨目光坚定,“有挑战才有价值。我会尽快吃透项目背景和现有代码,跟上节奏。”
“技术上的事,我相对放心。面试时能跟老赵(赵工)在反向传播和梯度优化上掰扯那么清楚的人不多。”陈博士笑了笑,话锋一转,“我更想提醒你的是另一件事。t厂平台大,资源多,机会也多,但相应的,内部协同复杂,方向也可能快速调整。作为新晋的Leader,除了技术攻坚,还需要学习如何高效获取信息、协调资源、在跨部门沟通中清晰表达技术价值。这方面,多跟你的直属主管王经理沟通,也可以随时来找我。别怕问,别怕‘麻烦’人,快速融入和建立有效的工作网络,本身也是一种重要能力。”
这番话说到了林晨心坎里。他之前十年在中小公司,更多是单打独斗或小团队协作,大厂这种复杂协同环境确实是新课题。“谢谢陈博士提醒,这方面我确实需要多学习。”
“慢慢来。你有扎实的技术底子和解决问题的韧性,这是基础。其他的,可以在实战中积累。”陈博士站起身,拍了拍林晨的肩膀,这个动作带着长辈对晚辈的鼓励,“我看好你。三十五岁,在AI这个领域,不算年轻,但也绝不是没有机会。相反,你之前积累的工程经验、对业务落地的理解,加上转型期爆发的学习能力,可能比很多一路顺风顺水的年轻人,更有后劲。好好干,t厂不会亏待真正能创造价值的人。”
“我一定全力以赴,不辜负您的信任。”林晨也站起来,郑重地说道。这一刻,几个月来的焦虑、挫败、自我怀疑,仿佛都被眼前这位导师平和而有力的话语驱散了。他感受到的不仅仅是一份工作机会,更是一种技术道路上的认可和指引。
“好。周末好好休息,下周开始,可就要忙起来了。”陈博士笑了笑,准备离开,又像是想起什么,回头补充了一句,“对了,你那个自学的量化投资系统,思路挺有意思。以后有空,也可以聊聊。技术本身是相通的,金融市场的博弈和AI模型的优化,底层都是数学和概率。”
林晨心中一震,没想到陈博士连这个都注意到了。他连忙点头:“好的,随时向您请教。”
看着陈博士离去的背影,林晨缓缓坐回工位,心情久久不能平静。窗外,南山科技园高楼林立,夕阳给玻璃幕墙镀上一层金辉。他打开自己的投资系统监控界面,今日收益曲线平稳向上。再点开t厂内部的工作平台,“轻舟”项目的相关文档库权限已经对他完全开放。
一种前所未有的踏实感和昂扬的斗志在他心中交织。失业以来的漂泊感彻底消失,他清晰地感觉到,自己不仅重新站上了职业的起跑线,而且这条跑道,宽阔坚实,指向他曾经仰望的远方。陈博士的认可和期待,像一剂强心针,也像一份沉甸甸的责任书。他打开新的文档,开始撰写自己关于“轻舟”项目初期技术切入点的思考。
他知道,新的征途,已经正式开始了。而这一次,他背后有强大的平台,眼前有明确的方向,身边,还有睿智的引路人。
第156章 熟悉代码
午饭后,林晨回到工位。阳光透过t厂科技园那标志性的玻璃幕墙,在宽敞的办公区投下明亮的光斑。他深吸一口气,点开了上午陈博士提到的工作交接文档,里面清晰地列出了他需要熟悉的核心代码库权限和项目wiki入口。
“轻舟项目——短视频信息流推荐系统V3.5”。项目名称简洁,但林晨知道,这背后是支撑着数亿用户每日刷到的、数以百亿计视频推送的庞然大物。
他先花了一个小时,按照文档指引,在本地开发机上拉取代码、配置环境、安装依赖。t厂内部的开发工具链相当成熟,但也自成体系,和他过去在跨境电商公司用的那套以及自己在家折腾的开源工具有不少差异。光是搞明白内部镜像仓库的地址、理解那套基于Kubernetes的本地调试环境部署流程,就让他额头上微微见汗。不过,这种“磕绊”反而激起了他的好胜心。代码可以骗人,但逻辑不会。工具再复杂,遵循的逻辑链条总是清晰的。他像解一道复杂的数学题,一步步拆解,遇到不懂的内部缩写或术语,就立刻在内部通讯软件上搜索相关群组、查看历史聊天记录,或者直接点进项目wiki寻找术语表。
下午两点半,环境终于跑通。他打开IdE,正式面对那个名为“qzhou-remender-core”的代码仓库。
“嚯。”林晨忍不住轻轻啧了一声。
仓库大小显示超过50G,主干分支的提交历史密密麻麻,拉不到底。这不仅仅是“代码量大”,这简直是一个自成一体的数字生态系统。他定了定神,没有一头扎进具体的类文件里,而是先打开了项目架构图文档。
文档是活的,可以交互展开。最顶层是业务入口和流量调度层,接着是粗排、精排、重排等多个串联与并联的模型服务层,再往下是特征工程、样本处理、在线学习与模型更新管道,最底层连接着浩如烟海的数据仓库和实时数据流。每一层又包含数个甚至数十个微服务,服务之间通过内部消息队列和Rpc框架通信。架构图上,不同颜色的线条和数据流箭头交织成一张极其复杂的网。
“这才是工业级的推荐系统……”林晨心里默念,既感到压力,又涌起一股强烈的兴奋。这和他自己写的、主要跑在单机或简单集群上的量化交易系统,在复杂度和规模上完全是两个维度。这里考虑的不仅仅是算法效果,更要考虑高并发、低延迟、海量数据吞吐、服务稳定性、Ab实验分流、成本控制……每一个环节都充满了工程挑战。
他决定采用“自上而下,由外及内”的策略。先搞清楚数据是怎么流动的,请求从用户手机发出,经过网关、负载均衡,进入推荐服务后,是如何被一步步处理的。他找到入口服务的主要逻辑代码,顺着调用链,像侦探追踪线索一样,在IdE里利用“查找引用”和“跳转到定义”功能,一步步深入。
时间在专注中飞快流逝。办公室里的键盘敲击声、偶尔响起的电话铃声、同事间低声的讨论,都成了模糊的背景音。林晨完全沉浸在了代码的世界里。他看到了精心设计的抽象接口,看到了为了性能极致优化而显得有些“奇技淫巧”的底层c++扩展模块,也看到了一些因为历史包袱或紧急需求而留下的、注释里写着“todo: Refactor”(待重构)的“补丁”代码。
有些设计让他眼前一亮,忍不住拍案叫绝。比如,特征计算服务里用一种巧妙的分层缓存机制,极大地减少了重复计算和跨网络的数据获取,这显然是为了应对“物理成本”中的计算和网络开销。这不正是陈博士和自己都看重的东西吗?
有些地方则让他皱起眉头。某个精排模型的服务,代码逻辑有些臃肿,几个看似关联不大的功能模块耦合在一起,注释却语焉不详。他记下了这个文件路径和大概行数。
中途起来倒了杯水,站在窗边活动了一下有些僵硬的脖颈。窗外,科技园里其他大楼的玻璃外墙反射着夕阳的金辉,楼下绿地上有零星的人在散步。鹏城的春天,傍晚的风已经带上了暖意。他想起自己失业在家埋头自学的那段日子,也是这样一个又一个独自面对屏幕的下午。只不过,那时面对的是未知和焦虑,而现在,面对的是同样庞大但方向明确的挑战,背后还有一份沉甸甸的责任和期待。
回到座位,他继续深入。开始关注具体的模型部分。团队目前主推的模型是一个深度融合了用户长短期兴趣、多模态(视频、音频、文本)内容理解、以及复杂用户行为序列建模的庞大神经网络。模型代码主要用pytorch写成,但其中也混合了自定义的cUdA内核和一些内部研发的高效算子库。林晨仔细阅读模型的定义文件、训练脚本和在线服务的加载推理部分。
他发现,这个模型虽然效果强劲,但参数量巨大,单次推理的计算开销非常可观。在架构文档里,他也看到了关于“模型蒸馏”、“动态裁剪”、“分级响应”等用于降低服务成本的子项目规划,但似乎推进速度不一,有些还停留在实验阶段。
“成本-效果平衡……”林晨咀嚼着陈博士上午提到的这个词。现在,他眼前不再是抽象的概念,而是一行行具体的代码、一个个真实的服务指标、一份份实验报告。他能感觉到,自己将要切入的,正是这个庞大系统最敏感、也最关键的“效能神经”。
不知不觉,窗外的天色已经完全暗了下来。办公区亮起了柔和的灯光,不少同事已经下班离开,但仍有相当一部分人还在埋头工作,t厂的“加班文化”名不虚传,但看起来更多是出于项目本身的紧迫感和技术人的自驱力。
林晨揉了揉发干的眼睛,看了一眼电脑右下角的时间:晚上八点二十。他差不多看了六个小时的代码。虽然还远谈不上精通,但对于“轻舟”推荐系统的整体架构、核心数据流、关键服务模块以及当前面临的主要挑战(尤其是性能与成本方面),已经有了一个相对清晰的宏观认知和不少值得深究的微观疑点。
他保存好所有打开的文档和代码标签页,整理了一下下午记录的笔记——电子笔记里分门别类地记下了架构亮点、代码疑问、可能的优化点以及与他自己知识体系的关联思考(比如某个缓存策略能否借鉴到他的投资系统数据获取层)。
关机,起身。腰背有些酸涩,但大脑却因为高强度摄入和处理信息而处于一种奇特的亢奋状态,并不觉得疲惫。
走出办公楼,晚风拂面,带着科技园特有的、混合了绿化植被和远处食堂隐约香气的味道。地铁站里依旧人流如织,许多和他一样刚下班的“码农”们,脸上带着相似的、略显疲惫但眼神依然清亮的神情。
坐在回家的地铁上,林晨靠着车厢壁,闭上眼睛。脑海中,不再是离散的代码片段,而是开始自动组合、连接,逐渐形成一幅动态运转的系统图景。哪里是瓶颈,哪里存在冗余,哪些设计精妙绝伦,哪些地方又暗藏技术债务……种种思绪翻涌。
他知道,这只是开始。明天,他将要参加第一次正式的团队周会,将会见到他需要带领的几位组员,也将更具体地承接来自“轻舟”项目组的任务。
挑战巨大,但路径,似乎已在眼前铺开,虽然崎岖,却清晰可辨。他握了握口袋里的手机,那里有苏婉发来的问候信息,也有他投资系统后台自动推送的今日收益简报——一个令人安心的正数。
现实与理想,家庭与事业,当下的挑战与未来的可能,在这一刻,仿佛在这飞驰的地铁车厢里,达成了某种微妙的平衡。林晨嘴角微微上扬,那是一种属于攀登者的、踏实而充满期待的弧度。
第157章 月度总结
时间过得飞快,转眼林晨入职t厂已满一个月。
周五下午,阳光透过t厂园区现代感十足的玻璃幕墙,洒在办公区过道上。林晨整理了一下衬衫领口,深吸一口气,走向陈博士办公室所在的“致远楼”。今天是月度一对一回顾的日子。
过去这四周,林晨感觉自己像一块被投入高速运转机器的海绵,疯狂吸收着一切。白天,他沉浸在“轻舟”项目的代码海洋里,从最初的宏观架构梳理,到深入几个核心服务模块的细节,再到参与两次线上故障应急和一次小的需求迭代评审。晚上回家,除了陪乐乐和苏婉,他大部分时间依然用在复盘白天遇到的问题,查阅内部技术文档,甚至悄悄用自己的投资系统跑一些数据实验,验证某些算法思路。这种高强度的输入输出循环,让他既疲惫又充实。
敲开陈博士办公室的门,一股淡淡的茶香飘来。陈博士的办公室简洁而富有科技感,一整面墙的电子白板还留着上次技术讨论的痕迹,另一面则是顶到天花板的书柜,塞满了计算机科学、数学、物理甚至哲学方面的书籍。
“来了,坐。”陈博士从电脑前抬起头,指了指对面的椅子,顺手给他倒了杯刚泡好的普洱,“感觉怎么样?这一个月。”
林晨接过茶杯,道了声谢,略作沉吟后回答:“很充实,也有挑战。‘轻舟’的复杂度比我预想的还要高,但脉络也逐渐清晰了。特别是您上次提到的成本问题,我在看代码时特别留意了,确实有几个地方存在优化空间。”
“哦?说说看。”陈博士身体微微前倾,表现出兴趣。
林晨打开随身携带的笔记本——不是电脑,是纸质的那种,上面密密麻麻记录着他这一个月的心得、疑问和草图。“主要集中在三个方面。第一,特征工程的实时计算流水线,有些特征明显过度计算,历史数据复用率可以提升;第二,精排模型的几个子模型,推理时的内存占用有重叠,可以考虑共享内存或更轻量的模型蒸馏方案;第三,也是我觉得最值得立刻动手的,日志和监控数据的采集与落盘策略,目前太‘粗放’,很多中间状态数据被全量保存,不仅存储成本高,后期分析时噪音也大。”
他一边说,一边在笔记本上指指点点,虽然陈博士未必看得清细节,但那份认真和条理清晰可见。
陈博士听完,脸上露出满意的笑容,端起茶杯喝了一口。“不错。上手速度比我想象的快。不止是看代码,已经开始思考优化了,而且切入点很实际,不是夸夸其谈。”他顿了顿,“你提交的那几处代码注释优化和那个关于缓存key构造的小建议,我也看到了。虽然改动不大,但思路是对的,能减少线上不必要的序列化开销。”
得到直接领导的肯定,林晨心里一暖,但并未得意,只是点点头:“都是些小打小闹,还需要继续熟悉。”
“不,细节决定成败,尤其是在我们这种体量的系统里。”陈博士摆摆手,神情变得认真了些,“这一个月,我也观察了你和团队其他同事的协作。几个技术讨论会上,你提问不多,但每次提问都切中要害,不是泛泛而谈。张工(另一位资深架构师)私下跟我提过,说你帮他理清了一个困扰他两天的数据流歧义问题。”
林晨有些意外,他确实和那位张工交流过几次,没想到对方会专门反馈。这让他意识到,在t厂这样的地方,专业能力上的互相认可,往往比表面的人际关系更重要。
“谢谢张工认可。”林晨诚恳地说。
“这是你应得的。”陈博士话锋一转,“不过,我今天找你,不只是为了表扬你。月度总结,既要看成绩,也要看不足和下一步方向。你觉得,这一个月下来,自己最大的挑战是什么?或者说,最需要加强的地方?”
这个问题让林晨思考了几秒钟。他回想起这一个月,从最初的兴奋,到面对庞杂代码时的短暂茫然,再到逐步找到节奏。“最大的挑战……可能是对‘全链路’的理解还不够‘丝滑’。”他选择了一个技术人常用的比喻,“我现在就像熟悉了一条主干道和几个重要的岔路口,但岔路里面的小巷子,以及这些道路在不同流量、不同数据特征下的具体表现,心里还没形成那种‘肌肉记忆’。遇到一些跨模块的复杂问题时,反应速度还不够快。”
陈博士赞许地点点头:“很清醒的自我认知。‘肌肉记忆’这个词用得好。这需要时间和大量实践,急不来。但我建议你,除了低头看代码,也要抬头看业务。下周开始,可以多参加一些产品需求评审,了解我们优化的模型,最终是为了满足什么样的用户场景和商业目标。技术最终要服务于价值创造。”
“明白。”林晨记下了这个建议。他知道,这是从“技术实现者”向“技术决策者”过渡的重要一步。
“另外,”陈博士手指轻轻敲了敲桌面,“关于你提到的成本优化点,特别是日志和监控数据这块,我建议你可以牵头成立一个虚拟的‘精益数据小组’,拉上数据平台组和SRE(站点可靠性工程)组的同学,先做一个可行性分析和方案预研。不用太大压力,就当是个热身。你需要开始锻炼自己跨团队推动事情的能力。这是Leader岗位很重要的一部分,光自己技术好不够。”
这个提议让林晨精神一振。这不仅仅是一个任务,更是一个信号,表明陈博士开始赋予他更多的责任和信任。“好的,陈博。我回去就着手准备,下周初出个初步计划给您过目。”
“嗯。放手去做,有问题随时找我。”陈博士的语气温和但充满力量,“林晨,我看好你,不是因为你在面试时说的那些‘物理成本’的大道理——虽然那很重要——更是因为你身上有一种沉得下心、钻得进去的劲儿。t厂不缺聪明人,但缺既有想法又能脚踏实地把想法落地的人。保持住。”
走出陈博士的办公室,鹏城傍晚的风带着一丝凉爽。林晨没有立刻回工位,而是在园区里慢慢踱步。夕阳给楼宇镀上一层金边,远处鹏城湾的海面泛着粼粼波光。
回顾这一个月,从最初踏入园区时的忐忑与憧憬,到如今初步获得认可并承担起更具挑战性的任务,他仿佛走过了一段浓缩的旅程。失业时的焦虑彷徨,自学时的孤独坚持,面试时的反复挫败……那些灰暗的片段,此刻都化为了脚下坚实的台阶。
他想起苏婉昨晚睡前说的话:“老公,我感觉你最近虽然累,但眼神里有光了。”当时他只是笑笑,现在细细品味,确实如此。这种“光”,或许就是找回方向、被需要、被认可后,内心重新燃起的笃定。
手机震动了一下,是自选快餐店的三人小群。林枫发了一张照片,是今天店里午餐时段的火爆场景,队伍都快排到门外了。林浩跟着发了个龇牙笑的表情,说今天试做的新菜式“豆豉蒸排骨”卖光了。林晨看着照片里熙熙攘攘的顾客和兄弟侄儿忙碌的身影,嘴角不自觉地上扬。他的世界,正在两条并行的轨道上稳步向前:一条是深扎在AI浪潮之巅的技术攀登,另一条是充满烟火气的家族创业。
他回复了一句:“辛苦大哥和浩浩!势头很好,保持住。我这边也一切顺利,刚和陈博聊完,给了我新任务。”
很快,苏婉也在家庭群里发来了乐乐今天在幼儿园得了“小小科学家”奖状的照片。小家伙手里拿着一个用纸杯和橡皮筋做的“火箭”,笑得见牙不见眼。
站在t厂开阔的园区里,林晨忽然有种奇妙的感受。三十五岁的人生,在经历了一场突如其来的风暴后,并没有沉没,反而驶入了一片更广阔、也更有趣的海域。这里有技术的深奥,有商业的博弈,有家庭的温暖,也有自我价值的实现。这一切的起点,都源于那个被裁员后,咬牙坐在电脑前,从一行行python代码重新开始的深夜。
他抬头望向开始闪烁起星星的夜空,深深吸了一口气。一个月,只是一个开始。陈博士说的“更大的责任”,兄弟和侄儿那边日渐红火的生意,还有自己那个在夜间默默运行、不断学习和进化的智能投资系统……前路还长,挑战更多。
但他已经不再恐惧。因为这一次,他手中握着的,不再是随时可能被抽走的“打工人生存指南”,而是由自己亲手锻造的、名为“能力”与“选择”的桨。
回到工位,林晨打开电脑,没有立刻开始工作,而是先点开了自己投资系统的监控面板。过去一个月,系统在A股和期货市场进行了数十次自动交易,胜率保持在68%左右,虽然单次收益率不高,但累积下来,账户总资产已经从初始的5万,悄然增长到了接近7万。更重要的是,系统根据市场变化自动调整了几次策略参数,表现出了良好的自适应能力。
他满意地关掉面板,新建了一个文档,标题写上:“‘轻舟’项目日志与监控数据成本优化预研方案(草案)”。
新的战斗,已经在眼前展开。而这一次,他充满了期待。
第158章 第一次发薪
手机震动的时候,林晨刚结束上午的一个代码评审会。
他习惯性地划开屏幕,一条来自银行的短信跃入眼帘:
“【xx银行】您尾号8877的账户于09:25入账工资人民币40,800元,当前余额……”
后面还有具体的五险一金扣除明细和税后数字,但林晨的目光就钉在了那个“40,800”上。
手指悬在屏幕上方,足足停顿了五六秒。
然后,一股滚烫的热流猛地从心底涌上来,直冲头顶,耳根都有些发烫。他下意识地握紧了手机,指节微微泛白。
不是五万,不是十万,不是他曾经幻想过的一百二十万。但这个数字,此刻却重如千钧。
它意味着,从今天起,每个月十号(如果遇到周末就提前),这个数字会像潮汐一样准时抵达他的账户。它意味着,持续了半年多的、只有出账没有进账的焦虑循环,被正式打破了。它意味着,他在鹏城,在这个三十五岁的年纪,重新拥有了一个叫做“稳定收入”的东西。
“林哥,走啊,吃饭去。”旁边工位的同事小刘拍了拍他肩膀。
林晨猛地回过神,深吸一口气,尽量让声音听起来平稳:“哦,好,马上。”
他关掉短信界面,锁屏,把手机揣进兜里。起身的时候,感觉脚步都比平时轻快了几分。
去食堂的路上,他脑子里已经开始飞快地盘算。
第一件事,还房贷。
下午一点半,午休刚结束,林晨就点开了手机银行App。找到那个每月自动扣款的房贷还款计划,手动操作,将本月应还的元转了过去。看着转账成功的提示,他长长地吁出一口气,仿佛卸下了肩头最沉的那块石头。
过去几个月,每次还房贷用的都是存款,看着数字一点点减少,心里那根弦就越绷越紧。现在,终于可以用新赚来的钱去覆盖这个最大的固定支出了。那种感觉,就像在茫茫大海上漂流许久,终于踩到了一块坚实的陆地。
剩下的钱呢?
他靠在椅背上,目光扫过开放式办公区。午后的阳光透过巨大的落地窗洒进来,工位上的人们或专注敲代码,或低声讨论。这个环境,这份工作,给了他这份底气。
晚上六点半,林晨准时下班——这在t厂并不常见,但他今天特意高效完成了任务。走出那座灯火通明的玻璃大厦,晚风拂面,带着鹏城湾特有的、微咸的海水气息。他没有像往常一样直奔地铁站,而是拿出手机,给苏婉打了个电话。
“喂,老婆,下班了吗?”
“刚出校门,正准备去接乐乐。你呢?”苏婉的声音带着一丝疲惫,但很温和。
“我发工资了。”林晨说,嘴角不自觉地上扬。
电话那头安静了一瞬,随即响起苏婉明显轻快起来的声音:“真的?到账了?”
“嗯,下午还了房贷。”林晨边走边说,语气里透着一种扎实的愉悦,“晚上别做饭了,我们出去吃。叫上乐乐,去科技园那家新开的椰子鸡,听说不错。”
“出去吃呀?”苏婉犹豫了一下,“贵不贵?要不……”
“不贵。”林晨打断她,声音坚定,“就今天,庆祝一下。我请客。”
苏婉听出了他语气里的坚持和那点小小的得意,笑了:“好,听你的。那我和乐乐直接过去?”
“对,你们打车去,我地铁过去,差不多时间。”
挂了电话,林晨迈步走向地铁站。11号线的车厢里依旧拥挤,但他今天感觉没那么闷了。看着窗外飞速掠过的城市夜景,那些璀璨的灯光仿佛都带上了一层暖意。
椰子鸡火锅店里香气弥漫,清甜的椰青汤底翻滚着,嫩黄的鸡肉让人食欲大开。乐乐坐在儿童餐椅上,眼睛亮晶晶地盯着锅里,小手不安分地挥舞着。
“爸爸,肉肉好了吗?”
“马上,再等一下下。”林晨用漏勺轻轻搅动,夹起一块鸡腿肉,仔细吹了吹,放到乐乐的小碗里。“小心烫。”
苏婉看着父子俩的互动,眼里带着笑意。她给林晨舀了一碗汤:“你也喝点,最近加班多,补补。”
一家三口围坐着,热气氤氲,普通的食物因为心情而变得格外美味。林晨看着妻子和儿子满足的吃相,心里那种充实的幸福感满得快要溢出来。这简单的、安稳的一餐,比他过去半年吃过的任何一顿大餐都来得珍贵。
“对了,”吃到一半,林晨放下筷子,从随身带的背包里拿出一个不大不小的纸袋,推到苏婉面前,“给你。”
苏婉一愣:“这是什么?”
“打开看看。”
苏婉疑惑地拆开纸袋,里面是一个深蓝色的硬质礼盒。打开盒子,一款设计简约大方的米白色单肩包静静地躺在丝绒衬布上。皮质细腻,线条利落。
“这……你什么时候买的?”苏婉惊讶地抬起头。
“下午趁休息的时候,在楼下商场逛了逛。”林晨有点不好意思地摸了摸鼻子,“你那个包背了好几年了,拉链都不太好用了。这个……不算特别贵,但看着挺适合你上班背的。”
苏婉拿起包,指尖拂过光滑的皮面,眼圈微微有些发红。她不是物质的人,但这个礼物背后代表的意义,她懂。这不仅仅是包,是丈夫在重新站稳后,第一时间想到她的心意,是共渡难关后的一份犒赏。
“谢谢。”她轻声说,声音有些哽咽,随即又笑了,“乱花钱。”
“应该的。”林晨也笑了,转头又变魔术似的从背包侧袋掏出一个小盒子,“乐乐,看爸爸给你带了什么?”
乐乐的注意力立刻从鸡肉上转移过来:“是什么是什么?”
盒子里是一套精致的工程车组合玩具,挖掘机、吊车、水泥搅拌车,一应俱全,还能联动。
“哇!大车车!”乐乐欢呼起来,小手一把抓住挖掘机,爱不释手。
“喜欢吗?” “喜欢!谢谢爸爸!”乐乐凑过来,在林晨脸上“吧唧”亲了一口,留下一点油渍。林晨哈哈笑着,抽纸巾擦脸,心里甜丝丝的。
看着儿子兴奋地摆弄玩具,妻子小心地把新包放回盒子,脸上带着温柔的笑意,林晨觉得,这大概就是奋斗的意义了。让家人过得稍微好一点,脸上笑容多一点,肩膀上的压力,就值了。
晚饭后,一家三口没有立刻回家。林晨牵着乐乐,苏婉挽着他的手臂,在科技园附近灯火通明的商业街上慢慢散步。晚风凉爽,霓虹闪烁,周末夜晚的街头充满了悠闲的气息。
他们路过甜品店,给乐乐买了一个小小的冰淇淋;在书店橱窗外驻足,看了一会儿新书的陈列;最后走进一家大型超市,补充了一些日常用品。推着购物车,挑选着水果蔬菜,讨论着明天早餐吃什么……这些最平凡琐碎的家庭生活场景,此刻却让林晨感到无比踏实和珍贵。
回到家,乐乐玩累了,很快洗漱睡下。苏婉把新包拿出来,在衣柜前比划着搭配明天的衣服。林晨则坐在书房电脑前,习惯性地查看了一下智能投资系统的夜间运行报告。
系统运行平稳,A股和期货子策略今天都有小幅盈利,总资产又悄悄往上爬了一小格。工资收入是稳定器,而这个系统,则是潜在的加速器。两者结合,让他对未来的财务前景有了更清晰的信心。
苏婉收拾完,端了杯温水走进书房,放在他手边。“还在看你的‘宝贝系统’?”
“嗯,看一眼,放心。”林晨拉过她的手,让她坐在旁边的椅子上,“今天开心吗?”
“开心。”苏婉靠在他肩上,轻声说,“特别开心。不是因为你买了东西,是觉得……咱们家好像终于又回到正轨了,你心里那块大石头,我能感觉它落地了。”
林晨搂住她的肩膀,下巴轻轻蹭了蹭她的头发。“是啊,落地了。虽然以后肯定还有别的石头,但至少这座山,翻过来了。”
“接下来有什么打算?”苏婉问,“t厂的工作,还有你那个投资系统,还有……你上次说想帮林浩的事?”
“一步一步来。”林晨看着电脑屏幕上滚动的数据流,眼神沉静而坚定,“t厂的工作先扎稳,把陈博士给的那个成本优化项目做好。投资系统继续迭代,等资金再厚实一点,可以考虑更多元化的配置。至于小浩……”
“我想找个时间,好好跟他,还有大哥,通个视频电话。有些想法,得跟他们聊聊了。”
窗外的鹏城夜景璀璨如星河,而屋内,灯火温暖。第一次发薪的日子,就在这种混合着巨大喜悦、深沉慰藉和对未来隐隐期盼的复杂情绪中,缓缓落下帷幕。新的循环开始了,而这一次,脚步愈发扎实。
第159章 技术氛围
鹏城的清晨,科技园区的空气里都仿佛飘着代码的味道。
林晨背着苏婉送他的新背包,穿过t厂那栋标志性的玻璃幕墙大楼入口闸机。昨天发薪日的轻松与喜悦还残留在嘴角,但当他踏入电梯,看到身旁几个年轻同事正用流利的英语讨论着昨晚arxiv上新挂出的论文时,那种熟悉的、略带紧绷的专注感又回到了身上。
“moE架构的稀疏化激活效率,在千亿参数规模下,成本曲线是否还能保持线性?”
“未必,通信开销和专家负载不均衡问题在超大规模下会被放大,看谷歌那篇最新的路由算法改进……”
电梯平稳上行,林晨默默听着,几个专业术语他能听懂,但对方讨论的深度和反应速度,让他心里微微一动。这两个看起来也就二十七八岁的男生,穿着简单的t恤牛仔裤,眼神里却有种对技术前沿近乎本能的敏锐。
他的工位在AI平台部的一个开放区域。入职一个月,基本的权限、代码库、内部工具都已熟悉,负责的第一个模块——一个推荐系统特征工程的性能优化任务——也正在稳步推进。带他的导师,也是他所在的算法小组组长,是一位三十出头、话不多但句句切中要害的资深专家,姓王。
上午十点,小组周会。
王组长站在白板前,简要同步了部门近期重点后,开始过每个人的任务进展。轮到林晨时,他清晰汇报了自己对现有特征预处理流水线的分析,指出了两处可能存在冗余计算和I/o瓶颈的地方,并给出了初步的优化方案,涉及对几个常用算子进行GpU kernel融合的可能。
王组长听完,点了点头:“思路对,但kernel融合要考虑通用性和后续维护成本。t厂内部有现成的优化库和性能分析工具链,你先把profile数据打详细,特别是memory bound和pute bound的占比。另外,”他转向组里一个戴眼镜、有些书卷气的男生,“徐峰,你之前做过类似场景的算子优化,把内部最佳实践文档链接发给林晨,再抽空跟他过一下关键点。”
“好的,王哥。”叫徐峰的男生应道,随即在内部聊天软件上给林晨发来了几个链接和文档。
林晨道谢,瞥了一眼徐峰的桌面显示器,屏幕上开着一个复杂的函数调用关系图,旁边是密密麻麻的笔记。他记得入职介绍时,徐峰好像是清华本硕。
会议继续。下一个汇报的是个短发、看起来很干练的女生,她在做一个多模态模型的小规模实验,需要协调数据标注资源和计算集群配额。她语速很快,逻辑清晰,提出的资源申请理由充分,对可能遇到的数据偏差问题也准备了预案。王组长问了几个细节问题,她都对答如流。
“可以,需求我帮你提上去。标注质量这块,你直接跟标注平台组的李工对齐,他是cmU回来的,对这块标准抠得细,你注意沟通方式。”王组长说。
“明白,我下午就约他时间。”女生利落地记下。
散会后,林晨去茶水间冲咖啡,恰好碰到刚才会上那个短发女生也在。
“嗨,新来的林工?”女生主动打招呼,笑容爽朗,“我叫赵蕊,刚才会上见过。做多模态的。”
“林晨。我刚来,在做特征工程优化。”林晨接过话头,顺便问道,“听王组说,你要对接标注平台的李工,cmU回来的大牛?”
“是啊,”赵蕊一边给她的便携咖啡杯加冰块,一边说,“咱们部门,还有隔壁几个关联组,海归挺多的。李工是cmU机器人方向的phd,隔壁组还有个斯坦福cS的,做强化学习贼猛。国内的基本就是清北华五,还有中科院那几个强所。”她语气平常,就像在说今天天气不错,“压力山大吧?我刚来的时候也这样,感觉自己像个混进来的。”
林晨笑了笑,坦诚道:“确实,感觉大家背景都金光闪闪,脑子转得也快。”
“习惯就好。”赵蕊眨眨眼,“t厂就这氛围,牛人多,但好处是你有问题随时能找到人问,资料也全。自己肯学,成长飞快。我看你刚才会上提的点挺实在的,不像纯学院派,有实战经验?”
“以前在电商公司干过挺久,抠过不少性能。”林晨说。
“那挺好,咱们这既需要顶天的理论视野,也需要能落地的工程能力。互补。”赵蕊冲他举了举咖啡杯,“回头有空交流,我先去怼数据了。”
回到工位,林晨点开徐峰发来的文档。里面不仅有优化方案,还有详细的性能测试对比、不同硬件平台上的差异分析,甚至附上了几次相关技术分享的内部视频链接。文档结构清晰,论据扎实,显然是经过反复打磨的成果。
他深吸一口气,开始仔细阅读。中午吃饭,他和同组几个同事一起去了食堂。饭桌上,话题自然而然地围绕着最近的技术热点、某个开源框架的版本更新、还有对国内某大厂刚发布的AI芯片的优劣分析。大家讨论时引用的论文、数据信手拈来,偶尔有不同观点,争论也集中在技术逻辑本身,氛围热烈但纯粹。
林晨大部分时间在听,偶尔插话问一两个问题,都能得到耐心细致的解答。他注意到,这些同事,无论背景如何,都有一个共同点:对技术本身抱有强烈的兴趣和好奇心,解决问题为导向,效率极高。
下午,他按照文档指导,跑通了性能分析工具,生成了自己模块的详细profile报告。看着报告中清晰指出的瓶颈点,他结合徐峰文档里的思路,开始着手修改代码。
过程中遇到一个关于cUdA流并发调度的问题,他一时没找到最优解。犹豫了一下,他还是在内部技术论坛上发了帖,详细描述了问题场景、已尝试的方案和目前的性能数据。
不到二十分钟,就有了回复。不仅有来自本部门同事的建议,还有一个来自底层计算框架团队的工程师,给出了更深入的底层调度参数调整方案,并附上了一个相关的内部工具使用小技巧。
林晨按照建议尝试,果然有效。他郑重地回帖感谢,并更新了解决状态。对方只是简单回了个“”。
下班时间到了,不少人还在工位前忙碌,或者三三两两聚在一起讨论问题。林晨收拾好东西,没有立刻离开。他站在落地窗前,望着窗外科技园璀璨的灯火和更远处深圳湾模糊的轮廓。
压力吗?确实有。这里汇聚了国内最顶尖的一批技术人才,他们年轻、背景耀眼、思维敏捷,而且极其努力。自己三十五岁,非顶尖院校出身,靠着失业后破釜沉舟的自学挤进来,就像赵蕊说的,初期有种“混进来”的感觉。
但是,除了压力,他心中更强烈的,是一种被点燃的斗志和前所未有的学习渴望。
这里就像一座技术的富矿,到处都是值得挖掘的宝藏。优秀的同事不是威胁,而是最好的学习对象和合作者;完善的内部资源、开放的技术氛围,为他这样的“后来者”提供了惊人的加速通道。他不再需要像之前自学时那样,在茫茫互联网上搜寻零散的、质量参差不齐的资料,苦苦摸索方向。
他的优势是什么?是十年业务开发磨练出的工程落地能力、对真实业务场景和数据复杂度的理解,是那段独自开发量化系统过程中培养出的全栈思维和解决实际问题的韧性,还有……他那套正在稳定运行、不断迭代的智能投资系统。那是他独有的、经过实战检验的“技术后院”。
“代码可以骗人,但逻辑不会,人更不能。”他想起自己常说的话。在这里,逻辑和实力是通用的硬通货。背景光环只是入场券,持续输出价值才是立足之本。
他拿出手机,给苏婉发了条消息:“晚上要晚点回,部门有些资料想多看看。不用等我吃饭。”
然后,他回到工位,重新打开电脑,点开了今天会议上听到但不太熟悉的一篇论文链接,又调出了内部知识库中关于大模型训练最新优化的系列课程列表。
窗外,夜色渐浓,科技园的灯光却愈发密集明亮,如同永不熄灭的星辰。林晨屏幕上的代码和文档,也正散发着专注而冷静的光。他知道,自己正身处一个能让人飞速成长,同时也异常残酷的竞技场。而他的涅盘之路,在这里,才刚刚开始加速。
第160章 一个新任务
周三下午三点,t厂南山科技园总部大楼里,阳光透过巨大的落地窗洒在开放式工区的绿植上。林晨刚结束一个关于多任务学习模型的技术分享会,正往自己工位走,脑子里还在消化刚才听到的“动态权重调整”算法细节。
入职一个多月,他已经基本摸清了部门的工作节奏和协作方式。上午通常是处理紧急线上问题、参加站会,下午则更多是技术讨论、代码开发和方案设计。这种高强度、高密度的信息输入,让他有种重回校园冲刺期的感觉,只是这次“考试”的分数,直接关系着他在这个顶尖平台的去留。
“林晨,来一下。”
陈博士的声音从身后传来。林晨转过身,看到导师正站在他办公室门口招手。陈博士今天穿了件深灰色的poLo衫,眼镜后的目光一如既往地锐利。
“陈博。”林晨快步走过去。
“进来坐。”陈博士回到自己办公桌后,示意林晨在对面的椅子上坐下。他的办公桌很整洁,除了两台显示器、键盘鼠标外,就只有几本厚厚的技术书籍和一个印着“NeurIpS 2022”的马克杯。
林晨坐下,心里略微绷紧。他知道,入职后的“蜜月期”——主要是熟悉环境和代码——差不多该结束了。
“这一个多月感觉怎么样?”陈博士端起杯子喝了口水,语气平和。
“收获很大。”林晨实话实说,“代码库的规模、架构的复杂度,还有同事们讨论问题的深度,都比我之前接触的要高一个量级。正在努力跟上。”
陈博士点点头:“适应需要一个过程。你之前做量化系统的经验,尤其是对性能和数据一致性的敏感度,在我们这里是有用武之地的。”他顿了顿,手指在键盘上敲了几下,调出一个内部任务管理系统页面,将显示器转向林晨。
“今天找你,是给你安排第一个实际参与的需求。不大,算是个热身。”
林晨身体微微前倾,目光聚焦在屏幕上。
任务标题很简单:【推荐引擎-热门内容混合策略响应时间优化】。
“这是我们主推荐流的一个小模块。”陈博士解释道,“负责在给用户推荐个性化内容的同时,混合一定比例的热门、高热度内容,平衡‘探索’与‘利用’。功能本身没问题,但最近监控发现,这个模块在流量高峰期的平均响应时间有波动,偶尔会达到50毫秒的预警线。”
他调出一张监控图表,指着上面几个小尖峰:“我们的SLA(服务水平协议)要求这个模块的p99响应时间控制在30毫秒以内。现在平均是18毫秒,但高峰期的p99已经摸到28毫秒了,趋势不太好看。产品那边虽然没提,但我们得在问题暴露前解决掉。”
林晨迅速扫过任务描述和相关代码库链接。模块是用python写的,依赖一些内部的特征计算服务和缓存。他注意到任务优先级标的是“p1-重要”,但并非“p0-紧急”,这确实像是一个给新人练手又确有价值的小优化。
“你的任务是,分析这个模块的性能瓶颈,提出并实施优化方案,目标是将p99响应时间稳定在25毫秒以下,最好能压到20毫秒。”陈博士看着林晨,“有什么问题吗?”
林晨没有立刻回答。他快速在脑子里过了一遍可能的方向:算法逻辑?数据存取?序列化/反序列化?外部依赖调用?python本身的GIL(全局解释器锁)在特定场景下也可能成为瓶颈。
“我需要先熟悉代码,跑一下性能剖析(profiling),定位到具体瓶颈点。”林晨谨慎地说,“初步看,可能是特征获取的批次处理不够高效,或者某些计算可以预处理。我可能需要访问相关的监控日志和性能跟踪(trace)数据。”
“权限已经给你开了。”陈博士似乎对他的回答很满意,“代码库、日志系统、性能监控平台,你都可以看。我们内部有封装好的性能剖析工具,文档在内部wiki上搜‘profiling Guide’。另外,这个模块的原始开发者王工,就在我们组,你有任何历史设计上的疑问可以直接问他。他今天请假,明天在。”
“明白。”林晨点头,“有没有时间要求?”
“一周内给出分析报告和优化方案,如果方案合理,再给一周时间实施和测试。两周后,我希望看到这个模块的p99响应时间曲线变得平稳且下降。”陈博士推了推眼镜,“这是你独立负责的第一个任务,我不要求你做出惊世骇俗的优化,但要求你做事的方法要扎实。每一步分析都要有数据支撑,任何改动都要有充分的测试,包括功能正确性测试和性能回归测试。上线要有回滚方案。”
“好的,陈博。”林晨郑重应下。他听出了导师的潜台词:这个任务既是考验他解决实际工程问题的能力,也是考察他工作的严谨性和规范性。在大厂,后者的重要性甚至不亚于前者。
“去吧。有问题随时找我或者问组里同事。”陈博士说完,已经将注意力转回自己的屏幕上,开始回复一封邮件。
林晨回到工位,没有立刻开始看代码。他先花十分钟,在内部wiki上找到了性能剖析工具的文档,快速浏览了使用方法和最佳实践。然后,他创建了一个新的工作目录,将任务相关的代码库克隆到本地。
下午四点,科技园里依然一片繁忙。键盘敲击声、低声的技术讨论、偶尔响起的电话铃声,构成了一种独特的白噪音。林晨戴上降噪耳机,调出了一张白纸和笔——他习惯在深入代码前,先画一画模块的架构和数据流图。
根据文档和代码中的注释,他很快理清了“热门内容混合策略”模块的工作流程:
接收上游传来的用户Id、场景Id和一批候选内容Id。
并行调用多个服务:获取用户的实时兴趣特征、获取候选内容的基础特征和热度特征、从缓存中读取一些预计算的统计量。
执行混合策略算法:根据用户兴趣与内容匹配度、内容热度、多样性因子等,计算出一个混合打分,并对候选列表进行重排序和比例控制。
返回重排序后的内容Id列表。
整个流程看起来清晰,逻辑也不复杂。问题可能出在细节里。
林晨打开性能剖析工具,配置好要监控的服务端点,然后在测试环境触发了几轮模拟请求。工具很快生成了详细的火焰图(Flame Graph)和函数调用耗时统计。
果然,瓶颈点并非在核心算法逻辑本身。火焰图上,最宽的几个“火苗”集中在两个地方:一是“批量获取内容特征”的函数调用,二是某个JSoN序列化/反序列化的库函数。
他放大查看具体数据。批量获取特征时,尽管是并行调用,但每个请求内部似乎有一些重复的校验和日志记录逻辑,加在一起开销不小。而JSoN处理,则是因为某一处中间数据传递时,频繁地在字典和字符串之间转换。
林晨在纸上记下这两个发现,继续深挖。他查看了该模块近一周的生产环境日志,筛选出响应时间超过40毫秒的请求,分析其trace记录。发现这些慢请求往往伴随着外部特征服务偶尔的高延迟(虽然仍在SLA内),而模块当前的超时和重试机制设置得比较保守,导致会等满某个服务的超时时间,从而拉长了整体耗时。
窗外天色渐暗,工区的灯自动亮起。林晨浑然不觉,他已经完全沉浸在这个具体的问题里。这种聚焦于一个明确目标、用数据和工具层层剖析的感觉,让他找回了当年自己优化那个量化交易系统核心引擎时的状态。只不过,这一次的“战场”更大,工具更专业,影响的是数亿用户每一次刷新信息流时的体验。
他列出了初步的优化思路:
特征获取优化:重构批量调用逻辑,合并重复的校验步骤;考虑对部分相对稳定的特征进行本地缓存,减少远程调用。
序列化优化:评估能否使用更高效的序列化协议(如messagepack)替换部分JSoN;检查并消除不必要的中间格式转换。
超时与降级优化:调整对外部依赖的超时时间,设置更合理的重试策略;设计降级逻辑,当某个非关键特征服务响应慢时,使用默认值或上次缓存值,保证主流程不阻塞。
算法微调:检查混合策略中某些实时计算的因子,评估是否可以用提前计算好的近似值替代,牺牲极小精度换取速度。
每一条思路后面,他都备注了需要进一步验证的点和可能的风险。比如本地缓存带来的数据一致性问题,更换序列化协议对上下游兼容性的影响,降级逻辑可能对推荐效果产生的细微偏差等等。
当他终于从屏幕上抬起头时,发现工区已经空了一半。看了眼时间,晚上七点四十。
肚子适时地叫了一声。林晨保存好所有文档和分析记录,关闭电脑。他打算明天一早就找王工沟通历史设计考量,然后完善方案,尽快开始动手验证和实现。
走出大楼,南山区的晚风带着一丝凉爽。街道上车流如织,远处腾讯滨海大厦的灯光璀璨夺目。林晨深吸一口气,心情有些微的振奋。这第一个任务像是一把钥匙,正在帮他打开真正融入t厂技术世界的大门。他不再只是一个旁观的学习者,开始成为一个问题的解决者,价值的创造者。
就在他走向地铁站时,手机震动起来。是大哥林枫打来的。
林晨放慢脚步,听着电话那头大哥略带急切的声音。技术世界里的性能毫秒之争暂时被按下,家族里另一条充满烟火气的道路,也在徐徐展开。他忽然觉得,自己仿佛站在两个世界的交界处,两边都需要他倾注智慧和心力。
“哥,你别急,慢慢说。我刚下班,有时间。”他对着手机说道,声音在鹏城的夜色里显得沉稳而清晰。
第161章 代码规范
鹏城科技园,t厂大楼。
林晨盯着屏幕上刚刚提交的代码合并请求,状态栏显示着一个刺眼的红色标识:“审查未通过”。旁边密密麻麻的评论,像一群小虫子,爬满了右侧的评论区。
他花了整整两天时间,全身心投入到那个“热门内容混合策略”的优化任务中。基于前期的火焰图分析和trace日志定位,他锁定了三个主要瓶颈点:特征批量获取的冗余循环、JSoN序列化开销,以及对外部用户画像服务调用的超时设置过于保守导致的排队累积。
解决问题的过程甚至比他预想的要顺利一些。
他重构了特征获取逻辑,将多个串行请求合并为批量查询,利用缓存减少重复计算;用更高效的二进制序列化协议部分替代了JSoN,在保证可读性的关键路径外提升了效率;最棘手的外部依赖超时问题,他设计了一个动态超时机制,根据服务近期的响应时间历史分位数(p95、p99)动态调整超时阈值,并配套设置了清晰的降级逻辑——当外部服务不可用或超时时,系统能自动切换至基于用户近期行为的热门内容池,虽然个性化程度下降,但保证了服务的基本可用性和响应速度。
一番操作下来,本地测试环境模拟生产流量压测,p99响应时间从波动的28毫秒稳稳降到了22毫秒左右,甚至优于陈博士要求的25毫秒。核心算法逻辑他自认为清晰高效,一些小的技巧运用还让他有点暗自得意。
于是,今天上午,他信心满满地完成了本地最终测试,整理了修改说明,郑重地点下了“提交合并请求”按钮。按照流程,这需要至少一位同事(通常是模块的原开发者或团队资深成员)进行代码审查(code Review),通过后才能合并到主分支。
他本以为审查更多是走个形式,或者针对算法逻辑进行一些探讨。毕竟,结果摆在那里,性能提升是实打实的。
然而,现实给了他当头一棒。
审查者Id显示是“wang_Engineer”,应该就是陈博士提到的原模块开发者王工。评论第一条就直截了当:“不符合团队代码规范,请先阅读并遵循《t厂AI平台部python开发规范V3.2》。”
下面跟着一连串具体的指摘:
“第45行,函数命名请使用下划线分隔的小写字母(snake_case),fetchUserFeaturesbatch 不符合规范,应改为 fetch_user_features_batch。”
“第78-105行,这个动态超时计算函数缺少文档字符串(docstring)。请补充函数功能说明、参数含义、返回值说明,以及可能抛出的异常。”
“第112行,魔术数字(magic number)0.7。这个权重系数含义不明,请定义为有意义的常量,并在注释中说明其来源或设定依据。”
“第156行,try…except 块过于宽泛,捕获了所有 Exception。请明确指定可能抛出的异常类型(如 timeoutError, connectionError),避免隐藏潜在的程序错误。”
“缺少单元测试(Unit test)。本次修改涉及核心逻辑变更,必须补充对应的测试用例,至少覆盖正常流程、外部服务超时、外部服务返回异常、缓存失效等场景。测试覆盖率需达到85%以上。”
“代码中部分注释为中文,请统一改为英文注释,这是部门规范要求。”
林晨一条条看下来,最初的那点得意和期待,像被戳破的气球一样迅速干瘪下去,取而代之的是一种混合着尴尬、不服和恍然的复杂情绪。他下意识地想反驳:逻辑是对的,性能提升了,这不就够了吗?这些命名、注释、测试……是不是有点吹毛求疵?
但多年的职业素养让他压下了这丝浮躁。他重新审视那些评论,尤其是关于“魔术数字”和“异常捕获过于宽泛”这两条,设身处地想,如果半年后自己或者其他同事来维护这段代码,看到那个神秘的“0.7”和一个包罗万象的 except Exception,确实会一头雾水,甚至可能埋下隐患。
这就是大厂和小公司、个人项目与团队协作的区别吗?他想起自己以前在跨境电商公司,以及后来独自开发量化交易系统的时候,更多追求的是功能的实现和结果的正确,代码风格相对随意,注释也是想写就写,测试更是常常事后补漏,甚至干脆依赖“人肉测试”。
而在t厂,在这样一个用户量以亿计、代码由数百上千人协作维护的系统里,规范性、可读性、可维护性、可测试性,被提到了和功能性、性能同等甚至更优先的位置。代码不仅是给机器执行的指令,更是给未来(包括自己)的维护者阅读的文档。
他深吸一口气,点开了内部知识库,找到那份《t厂AI平台部python开发规范V3.2》,足足有五十多页。他快速浏览了目录和重点章节,又找到了团队共享的单元测试框架指南和代码审查checklist。
“从头学起吧。”林晨揉了揉眉心,低声自语。他没有先去争辩,而是新建了一个本地分支,基于审查意见开始逐一修改。
改命名规则是最简单的,但需要仔细检查不要遗漏。补充文档字符串让他稍微停顿了一下,需要用简洁准确的英文描述清楚函数意图。他把 0.7 定义为 FALLbAcK_wEIGht_FoR_REcENt_hot,并在注释中写明:“当外部画像服务降级时,近期热门内容池的初始混合权重,基于A/b测试历史数据得出。”
修改异常捕获范围时,他仔细推敲了可能发生的异常类型,并确保降级逻辑能在这些异常发生时正确触发。
最花时间的是写单元测试。他之前不是没写过测试,但如此系统性地为每一个关键路径、每一种边界条件和异常场景编写测试用例,还是第一次。他搭建测试环境,模拟外部服务响应、超时、返回异常数据,验证降级逻辑是否正确执行,确保代码修改不会引入回归错误。这个过程繁琐,甚至有些枯燥,但当他看到一个个测试用例通过,尤其是模拟外部服务完全不可用时系统依然能返回降级后的热门内容列表,心里反而渐渐踏实起来。
不知不觉,窗外天色已暗。开放办公区里灯火通明,不少同事还在忙碌。林晨终于完成了所有修改和测试补充,本地运行了完整的测试套件,全部通过。他再次提交了代码更新,并在合并请求的评论区逐一回复了王工的每一条意见,说明了修改情况,并对之前的疏忽表示了感谢。
做完这一切,他靠在椅背上,长长地舒了一口气。身体有些疲惫,但精神上却有一种奇特的充实感。这不仅仅是一次代码修改,更像是一次思维模式的校准。他以前理解的“技术能力”,或许过于偏重算法和架构了。在大型工程化的协作体系中,遵守规范、编写清晰可维护的代码、构建可靠的测试屏障,同样是至关重要的“技术能力”,甚至是职业素养的体现。
“还在忙?”一个声音在旁边响起。林晨抬头,看到陈博士端着茶杯站在旁边,似乎刚开完会回来。
“陈博士。”林晨连忙坐直,“在改代码,上午提交的审查没通过,规范上有些问题,正在学习和修改。”
陈博士凑近看了看他的屏幕,扫过那些审查意见和回复,微微点头:“遇到王工了吧?他是咱们组里对代码质量要求最严格的几个之一,有时候新来的同学会不太适应。”
林晨苦笑一下:“确实……当头一棒。不过意见都很中肯,是我以前没太注意这方面。”
“很正常。”陈博士喝了口茶,语气平和,“个人英雄主义的代码,或许能解决一时的问题,但无法支撑一个持续演进、多人协作的大型系统。规范、文档、测试,这些看似繁琐的东西,是保证团队效率和技术债不失控的基石。你能这么快静下心来修改学习,态度很好。性能优化结果怎么样?”
“本地压测p99能到22毫秒左右,应该能达到要求。”林晨回答,“等这次代码审查通过,合并后可以安排上线验证。”
“嗯,不着急。把规范补好,测试写全,上线前做好灰度方案和回滚准备。”陈博士拍了拍他的肩膀,“规范不是束缚,是让好的想法能安全、高效落地的轨道。继续吧,有问题随时问。”
陈博士离开后,林晨看了看时间,已经晚上八点多。
林晨看着电脑屏幕上刚刚提交的代码请求,技术世界的严谨规范。
他顿了顿,想起今天这一番“代码规范”的洗礼,笑了笑:“就像写代码一样,光有想法不行,还得守规矩,下苦功。”
第162章 Code Review
周四上午十点,t厂AI平台部每周例行的code Review环节。
会议室的大屏上投射着林晨前两天修改完的代码,旁边还并排展示着另外两位同事的待审分支。围坐的六个人面前各摆着笔记本,桌上散落着咖啡罐和零食包装袋,气氛倒更像一场非正式的技术沙龙,而非严肃的审判庭。
先过林晨这版。王皓推了推眼镜,点开了合并请求。作为团队的直属主管,王皓每周四的code Review会议既是技术把关,也是团队学习的场合。
林晨坐在长桌末端,脊背挺直,手指不自觉地摩挲着笔帽。这是他第一次正式参加团队的code Review会议。之前只是被动地收到模块原开发者王工的审查意见,自己修改后重新提交。而现在,他要面对面地听同事们逐行审视他的代码,当场回应质疑。
这种感觉,和一个人埋头写代码、跑测试完全不同。更像是一场公开答辩,只不过台下坐着的不是考官,而是并肩作战的队友。
整体结构清晰了,老赵先开了口,手指在大屏上划过林晨重构后的批量特征获取逻辑,把串行调用改成批量查询这个思路是对的,缓存层的引入也合理。不过——
他放大了其中一段代码:这里,缓存失效策略用的是固定时间窗口,ttL设的多少?
默认的300秒。林晨回答。
300秒对于用户画像这种高频更新数据来说偏长了。老赵直截了当,画像特征更新频率大概是两到三分钟一次,你的缓存可能在特征已经变化了的情况下还在返回旧值。建议改成基于版本号的主动失效,或者至少把ttL压到120秒以内,配合一个灰度验证。
林晨点头,在笔记本上飞速记下。这个他确实没考虑到,当时只想着减少远程调用次数,对缓存一致性这一层想得粗了。
许悦接着指出了另一个问题:降级逻辑这里,你用最近行为热度池做兜底,逻辑本身没问题,但权重系数的硬编码方式容易维护出问题。你定义了常量,注释也写了来源,这个比第一次好多了——她笑了笑,不过我建议进一步把所有可配置参数抽到配置中心,这样上线后可以动态调整,不需要重新部署。
好建议。林晨认真点头。从写死到常量,再到外部配置中心,这是工程化思维逐层递进的过程。他在量化系统里也干过类似的事,只是到了t厂的规模,每一个配置项的改动都影响数亿用户,对灵活性和安全性的要求自然更高。
王皓翻到单元测试部分,扫了几眼,抬头看着林晨:测试覆盖率86%,比上次好。不过我注意到你的降级测试用例里,模拟外部服务超时的场景用的是固定延迟。实际线上环境,超时不是简单的到点断开,可能是先慢后断,也可能间歇性恢复。你的测试能不能覆盖这种不稳定的中间态?
林晨愣了一下。他确实没有考虑到这种情况。你说得对,我只模拟了干净利落的超时,没有考虑半死不活的模糊状态。我回去补一组混沌测试用例,模拟延迟波动和间歇性恢复。
用chaos mesh或者自己写个简单的故障注入脚本都行。王皓语气随意,但信息密度很高,我们内部有封装好的混沌工程工具包,wiki上搜chaos toolkit,里面有模板。
收到。林晨记下来。
整个Review持续了将近四十分钟。六个人一共提出了十一处修改建议和六条优化方向,涉及缓存策略、配置管理、测试覆盖、日志规范、监控埋点、灰度方案等方方面面。密度不可谓不大。
但林晨注意到了一个细节:没有人用你这里写错了这样不对之类的措辞。取而代之的是这里可以考虑……建议改成……你有没有想过……。甚至有人会在指出问题的同时,主动分享自己之前踩过的类似坑。
当老赵指出缓存ttL问题时,他补了一句:我上次做画像服务缓存的时候也踩过这个坑,300秒的缓存导致推荐结果延迟了将近五分钟才刷新,差点被产品追着打。
当许悦提到配置中心时,她说:我们组之前有个项目就是硬编码参数太多,后来每次调参都要重新部署,运维同事差点跟我们翻脸。
这些话不是在替林晨开脱,而是在说:这些坑我们都踩过,所以你现在注意到了,以后就不会再掉进去。
code Review结束的时候,王皓做了个简短总结:这版改进很大,架构和逻辑都没问题。刚才提的几点优化,这周内改完再提交一轮就行。还有谁有补充的?
没有人再举手。
散会之后,林晨没有立刻回工位,而是在会议室多坐了一会儿,把笔记从头到尾过了一遍。十一条修改建议,每一条背后都指向一个更深的工程问题:缓存一致性、配置动态化、混沌工程、监控完善……这些问题在一个人写的量化系统里或许可以忽略或简化,但在服务数亿用户的大厂系统里,每一个都可能演变成线上事故。
他合上笔记本,长出一口气。不是沮丧,而是一种被填满的感觉。就像肌肉在训练后那种酸胀的充实,意味着正在生长。
回到工位,他打开内部wiki,搜索老赵提到的chaos toolkit和许悦说的配置中心文档。一边看,一边开始逐条规划修改方案。
下午三点半,手机亮了一下,是组内的即时通讯群。许悦发了一张截图,是今天code Review的合照——王皓偷拍的,林晨正低着头认真记笔记,旁边老赵手里端着保温杯在说什么,画面抓得恰到好处。
配文是:欢迎新人首次code Review存活照。
群里顿时炸出一串表情包和恭喜苟活的调侃。林晨也忍不住笑了,回了一句:谢各位不杀之恩,这周改完再战。
老赵回了个竖大拇指的表情。
林晨放下手机,目光回到屏幕上。代码编辑器的光标一闪一闪,像在催促他开工。他调整了一下坐姿,手指落上键盘,开始了新一轮的修改。
窗外,南山科技园的玻璃幕墙在午后的阳光下熠熠生辉。会议室白板上的马克笔迹还没擦,上面是他和同事们讨论时画的架构草图,箭头交错,注释密布,像一张微缩的作战地图。
这是他在t厂参加的第一次code Review。被指出了十一个问题,但没有一次是人身攻击。每一个问题背后,都是一次成长的机会。他想起陈博士那句话——规范不是束缚,是让好的想法能安全、高效落地的轨道。
现在他真正理解了这句话的含义。code Review的本质,从来不是找茬,而是一种集体智慧的碰撞和传递。每一行代码被审视、被质疑、被优化,最终都会变得更好。而写这些代码的人,也是。
他开始敲下第一行修改后的代码。
第163章 技术成长
修改完code Review提出的十一条建议,已经是周三下午。
林晨把合并请求重新提交上去,靠在椅背上揉了揉发酸的眼睛。王工几分钟内就点了,附了一条评论:改进明显,chaos测试写得不错。继续加油。
短短一行字,比之前那一长串红色批注让他舒服多了。
他站起来去茶水间倒水,路过老赵工位时,老赵正对着三块显示器同时比划,嘴里念念有词,像在演一出一个人的技术辩论。林晨放慢脚步,隐约听到他在自言自语:不行,这个join太重了,得拆成两步……
老赵发现他在旁边,抬头看了他一眼:怎么了?
没事,路过。林晨犹豫了一下,还是问了出来,赵哥,你平时看代码,怎么做到那么快就能定位到瓶颈的?上次Review你一眼就看出我缓存ttL的问题。
老赵乐了,放下保温杯:哪有什么一眼,都是踩坑踩出来的。我进t厂之前在两家公司干过,每家都有过线上事故。那些事故复盘的时候,你被迫把每一行代码都像x光一样透视一遍,时间长了,看新代码自然就知道哪里容易出问题。
事故复盘。林晨默默记下这四个字。
老赵站起来伸了个懒腰,你在这个组,后面肯定也会遇到线上问题。到时候别慌,每一个线上问题都是最好的老师,比任何文档都管用。
林晨点点头,端着水杯回了工位。
他把这周学到的所有东西,在笔记里做了一个梳理。入职不到两周,他已经感受到了一种前所未有的信息密度。以前在跨境电商公司做后端,技术栈相对固定,业务逻辑是核心,系统规模有限,很多问题根本不会暴露。后来一个人做量化系统,虽然涉及机器学习和数据工程,但毕竟是一个人从头写到尾,架构、部署、监控都是最简版本,够用就行。
而在t厂,他每天都在接触新的东西。
周一,他花了一下午研究公司内部的配置中心——一个他以前闻所未闻的动态配置分发系统。原来大厂的服务不是靠改代码、重新部署来调整参数的,而是通过配置中心实时下发,服务端监听变更并热加载。这让他想到自己的量化系统,每次调参都要停掉策略进程,修改配置文件,再重启,浪费了宝贵的交易时间。如果引入类似的机制……
周二,他跟着王皓学习了一种分布式追踪的方案。以前他只是听说过opentelemetry,现在亲手在代码里接入,看到请求在不同微服务之间的完整链路图,从入口网关到特征服务、到模型推理、到结果组装,每一个节点的耗时、状态码、错误信息都清清楚楚,像给系统做了一次全身ct。
周三,他第一次接触了公司自研的大规模特征存储系统。这个系统支撑着数亿用户的实时特征查询,p99延迟控制在5毫秒以内。他花了一上午读文档,一上午写了个简单的测试客户端,下午就跑通了。看着屏幕上那些在几百毫秒内返回的、包含上百个特征的响应数据,他忍不住想起了自己那台跑量化系统的云服务器,每次拉取A股全量特征数据要三秒,还经常因为网络波动超时。
规模差距太大了。
这种差距不是让人沮丧的,而是让人兴奋的。就像一个在小池塘里游泳的人突然跳进了大海,虽然浪大水深,但施展的空间也大了无数倍。
周四,他花了大半天时间修改混沌测试用例。按照王皓的建议,他不再只模拟简单的超时场景,而是编写了网络延迟波动、间歇性断连、响应数据畸形等多种故障模式。写完跑了一遍,果然发现了两处降级逻辑在半死不活状态下的处理漏洞。修复、重测、通过。整个过程像一场精密的手术,而他既是外科医生,也是病理分析师。
周五,陈博士在走廊碰见他,问了一句:这周感觉怎么样?
信息量太大了,林晨实话实说,每天都在学新东西,有些还没来得及消化。
正常。陈博士的语气一如既往地平和,我刚来的时候也是这样,前三个月像海绵一样疯狂吸收,后面才会慢慢形成自己的判断力。别急,你现在走的路是对的。
林晨回到工位,打开自己的量化系统监控面板。这周系统自动运行,A股子策略收获了一个中等幅度的正收益,期货子策略有小幅回撤,整体净值曲线微微上扬。他快速扫了一眼持仓和信号,一切正常,不需要人工干预。
以前他每天至少花一个小时盯盘和检查系统。现在有了t厂的工作,他的时间和精力重心自然转移了,但系统依然稳定运转,这证明了他当初的设计思路是正确的——一个好的量化系统,不应该依赖人工盯盘。
关掉监控面板,他顺手打开了一个新的浏览器标签页,搜索起深度学习中一种叫做知识蒸馏的技术。这是陈博士在一次技术讨论中随口提到的概念,说大模型在推理时成本太高,可以通过蒸馏将知识迁移到小模型上,在保证效果的前提下大幅降低推理成本。
这不就是我要做的那个量化模型压缩的思路吗?林晨自言自语,眼睛亮了起来。
他又想到了自己量化系统中那个跑在云服务器上的深度学习模型。推理延迟一直是瓶颈,如果能用蒸馏技术把它压缩到十分之一大小,在同等算力下就能覆盖更多品种和更复杂的策略。
灵感像火花一样迸发。他飞快地在笔记本上画了一幅草图:大模型(教师模型)训练出策略信号,小模型(学生模型)学习大模型的输出分布,最终部署到线上做实时推理。知识从大向小流动,成本从小处节约。
这和t厂项目的核心思路殊途同归。
他停下笔,看着自己画的草图,突然有一种奇妙的感觉:他在t厂学到的技术,和他自己量化系统的痛点,正在以一种意料之外的方式交汇。两个看似独立的世界,底层的逻辑竟然是相通的。
这正是陈博士说的——技术本身是相通的。
下午五点半,林晨准时收工。走出t厂大楼的时候,鹏城的天际线被夕阳染成了橙红色。他戴上耳机,给苏婉发了一条消息:今天正常下班,晚饭一起做?
回复很快到了:好呀,乐乐说想吃西红柿炒蛋。
林晨笑了,大步走向地铁站。身后,科技园的灯火次第亮起,映照着无数像他一样正在成长和蜕变的人。
刚到地铁口,手机震了一下。不是组群消息,是陈博士的私信:下周找时间聊一下,关于知识蒸馏在轻舟项目中的应用方向。你之前可解释性调研里引用的hinton那篇蒸馏论文,我重新看了一遍,有些想法想跟你讨论。
林晨站在地铁口,看着这条消息,脚步顿住了。陈博士主动找他讨论技术方向——这意味着什么,他心里隐约有了判断,但又不敢确定。
他深吸一口气,回了三个字:好的,陈博。
走进地铁车厢,车门关闭的瞬间,他看到车窗玻璃上映出自己微微上扬的嘴角。
有些路,正在悄悄打开。
第164章 加班文化
晚上八点四十五分,t厂南山总部22层。
林晨提交完今天最后一个代码合并请求,活动了一下僵硬的肩膀,下意识地看了一眼四周。
开放工区里依然灯火通明。
老赵的工位上,三块屏幕的光映在他专注的脸上,保温杯里的茶早就凉了。许悦盘着腿,耳机线垂在肩膀一侧,手指在键盘上飞快敲击,眉头微蹙,显然在调试什么棘手的问题。远处有几个不认识的同事,端着笔记本坐在讨论区的沙发上,低声争论着什么,白板上画满了框图和箭头。
林晨站起来去茶水间接水,路过走廊时,透过会议室的玻璃墙,看到王皓正在和两个不认识的同事开视频会议,屏幕上显示着一个分布式架构图,各种标注和颜色块让画面看起来像一幅抽象画。
这就是t厂的加班文化。
不是强制要求,不是打卡统计,而是一种自发的、几乎无声的默认规则——如果你手上的事情还没做完,或者你想把它做得更好一点,你就会留下来。周围的人都在,灯都亮着,键盘声此起彼伏,你离开的念头自然就被压下去了。
林晨端着水回到工位,犹豫了几秒。今天的任务已经完成了,代码审查也通过了,明天上午的站会资料也准备好了。按理说可以走了。
但他的视线落在笔记本上一行还没来得及深入研究的技术笔记上——关于知识蒸馏在推荐系统中的应用,他只看了一半。
坐回去,再待一会儿吧。
他打开论文,逐字逐句地读起来。这篇文章来自Google Research,讲的是如何将大型推荐模型的推理成本降低一个数量级,同时保持效果损失在可接受范围内。核心思路和他在笔记本上画的草图高度相似:用大模型做教师,训练轻量化的学生模型上线服务。
读到一半,他开始在本子上画新的草图。t厂的推荐系统和他自己的量化系统,虽然业务场景不同,但都面临模型效果和推理成本之间的权衡这个根本性问题。大模型效果好但成本高,小模型成本低但效果打折。蒸馏,就是在两者之间找到甜点。
他越想越投入,不知不觉又过了一个小时。等他从论文里抬起头,九点四十了。
工区里依然有将近一半的工位亮着。老赵还在,换了个姿势,椅子往后仰着,双手枕在脑后,盯着天花板发呆——这通常是他在思考深层问题时的状态。许悦已经走了,工位上只留下一袋没吃完的坚果和一台合上的笔记本电脑。
林晨合上笔记本,开始收拾东西。今天到此为止。他给自己定过一条线——加班可以,但不能搞到太晚,保证第二天有足够的精力。这不是偷懒,这是对效率的尊重。他曾经在量化系统中验证过:连续高强度工作超过12小时后,决策质量会明显下降,出错概率大幅上升。这个规律适用于交易,也适用于写代码。
走出大楼的时候,夜风带着鹏城特有的温热和潮气扑面而来。科技园的夜色很美,远处腾讯滨海大厦的灯光像一艘停泊的太空船,近处各种写字楼的灯火星星点点,映照在路面的积水上,像一幅倒映的星河。
他走向地铁站,路过7-Eleven的时候进去买了一瓶矿泉水。收银台旁边的小电视正在播放本地新闻,画面切换到一段夜间加班的写字楼群航拍,主持人说:深圳,这座不夜城,灯火辉煌的背后是无数奋斗者的身影……
林晨付了钱,走出便利店。他想起自己以前在跨境电商公司加班的日子。那时候的加班更多是被动的——项目deadline催着走,老板在群里喊一声今晚冲刺一下,所有人就默认留下来。加完班打车回家,倒头就睡,第二天继续。那种疲惫带着一种被裹挟的无力感。
t厂不一样。这里没有人催你加班,没有人统计工时,甚至没有人关心你几点走。但大家就是不走。因为手上的事情还没做完,因为那个bug还没查清楚,因为想再跑一组实验看看效果——驱动你留下来的,是你自己。
这种自驱式的加班,和被动式的加班,体验完全不同。前者让你觉得在成长,后者让你觉得在消耗。
他在地铁上给苏婉发了条消息:刚下班,九点四十走的。
回复秒到:又加班。乐乐都睡了。
语气有点埋怨,但没有真的生气。林晨想了想,回了一句:明天争取六点半走。
你每次都说争取。苏婉回了一个翻白眼的表情,接着又发了一句,冰箱里有我做的红烧排骨,回来热一下吃。
林晨看着手机屏幕,嘴角微微上扬。埋怨归埋怨,排骨还是给留着的。这就是苏婉的方式——嘴上不饶人,行动上永远体贴。
到家的时候已经十点半。乐乐房间的灯关了,门缝里透出小夜灯微弱的暖光。苏婉在客厅看手机,听到门响,头也没抬:排骨在冰箱第二层,微波炉热两分钟。
我吃过了,在食堂吃的。林晨换了拖鞋走过去,在她旁边坐下,今天多看了一会儿论文,不是赶项目。
我知道。苏婉放下手机,侧过头看他,就是有点不习惯。以前你失业在家的时候,每天都能一起吃晚饭。现在你又上班了,饭桌上就我和乐乐两个人。
林晨伸手揽过她的肩膀:关键期,再过一阵子,等我完全上手了,就不会这么晚了。
苏婉靠在他肩上,轻声说:你每次说关键期,我就知道又要加班了。不过我也理解,刚进去嘛,总得多花点心思。只是别太拼了,身体要紧。
明天争取九点前到家。林晨说。
那你可别打脸。苏婉拍了他肩膀一下,站起来,去洗澡吧,明天还得早起。
林晨洗完澡回到卧室,苏婉已经睡着了。他轻手轻脚地躺下,盯着天花板出了一会儿神。
加班文化这件事,他看得很清楚。t厂不是血汗工厂,但高强度的节奏是客观存在的。他需要在融入团队守护家庭之间找到一个平衡点。白天高效工作,晚上适度加班,周末全心全意陪家人。这是他的策略,也是底线。
手机屏幕亮了一下,是老赵在组群里发了一条消息:今天那个join的优化搞定了,明天code review过一下。谁在?
十点四十了,老赵还在写代码。
林晨回了竖大拇指的表情,然后关掉手机,翻了个身。
窗外,鹏城的夜永远灯火不灭。而在这座不夜城里,无数个像他一样的人,正在用自己的方式,在理想和现实之间,划出一条条属于自己的线。
第165章 家庭平衡
周六上午十点,林晨难得在家。
阳光从客厅的落地窗涌进来,把米白色地砖晒得暖洋洋的。乐乐趴在地毯上拼一套乐高宇宙飞船,嘴里念念有词,小手把积木块一个个拼上去,偶尔因为拼不上而哼唧两声,又咬着嘴唇继续。
苏婉在厨房做 brunch,煎蛋的香气飘过来,混着咖啡的微苦。林晨坐在沙发上,本来在看手机上的技术文章,视线却不自觉地飘到乐乐身上。
这孩子长高了不少。上次认真看他拼乐高是什么时候?好像还是失业在家那阵子,有大把的时间陪他,甚至帮他一起拼过一辆遥控赛车。现在呢?入职一个多月,每天早上七点出门,晚上八九点才回来,乐乐经常已经睡了。周末本该是陪伴的时间,但他脑子里还想着下周要推进的优化任务。
想什么呢?苏婉端着两盘煎蛋吐司走出来,看到他发呆的样子,嘴角微翘。
看乐乐。林晨接过盘子,感觉好几天没跟他好好说话了。
不是感觉,是事实。苏婉坐下来,语气平静,但话里有话,这周他睡之前你回来过两次,其他几天都是我先哄他睡的。
林晨沉默了几秒。他知道苏婉不是在抱怨,她只是在陈述事实。但正因为是事实,才更让人不是滋味。
乐乐,过来吃饭。苏婉喊了一声。
等一下!我马上就拼好了!乐乐头也不抬,小手飞快地把最后几块积木扣上去,然后举起完工的飞船,一脸骄傲地跑过来,爸爸你看!宇宙飞船!
林晨伸手接过飞船,端详了一下:嗯,不错嘛,这个引擎部分是你自己想的?
对!书上说真正的飞船引擎都是圆形的,我就改了!乐乐得意地晃脑袋。
有创意。林晨揉了揉他的脑袋,先吃饭,吃完再给你讲个飞船的故事。
乐乐欢呼一声,扑向餐桌。苏婉看着父子俩,脸上的笑意柔和了几分。
吃完饭,乐乐拉着林晨要听飞船故事。林晨把他抱到沙发上,讲了一个关于小飞船飞到AI星球,学了很多新本领的故事。乐乐听得入迷,中途追问了十几个问题——AI是什么?飞船需要加油吗?AI星球有冰淇淋吗?——每个问题都让林晨忍俊不禁,尽可能用五岁孩子能理解的方式回答。
讲到一半,手机震了一下。是组群里的消息,老赵发了一个技术问题的讨论链接。林晨瞟了一眼,手指下意识想点开,又收了回来。
爸爸,你手机响了。乐乐眼尖。
没事,不重要的。林晨把手机翻了个面扣在沙发上,继续讲。
但他注意到苏婉从厨房探出头看了他一眼,没有说话,又缩了回去。
午饭后,乐乐午睡,苏婉在客厅看一本书。林晨坐在旁边,打开笔记本电脑,想趁这段安静的时间看一下老赵发的那个讨论帖。
你周末也看工作的事?苏婉的声音不大,但很清晰。
林晨手指停在键盘上,转头看她。苏婉没有看他,目光落在书页上,但明显一个字也没在往脑子里进。
就看一眼,群里讨论一个技术问题——
你每天在家的时间,除了睡觉,有多少是真的在看手机或电脑上的工作内容?苏婉合上书,终于看向他,语气不急不缓,但眼神里有一种积压了些日子的认真。
林晨张了张嘴,一时竟答不上来。他想说没多少,但心里清楚那不是事实。早上的技术文章,中午的组群消息,晚上的投资系统检查,周末的技术讨论……这些碎片加在一起,已经悄悄占据了他和家人相处的大量缝隙时间。
我知道现在是关键期,苏婉继续说,语气平下来,你刚进t厂,需要证明自己,需要融入团队,这些我都理解。但你有没有想过,乐乐才五岁,他现在正是最需要爸爸的时候。你之前失业在家那段时间,天天陪他,他多开心啊。现在你上班了,他反而见不到你了。
最后一句话像一根细细的针,不重,但扎得准。
林晨放下笔记本电脑,面对苏婉。他能感受到她话语里的分寸感——没有吵闹,没有歇斯底里,只是平平静静地把事实摆出来。而这恰恰说明,她不是在发脾气,是真的在思考这个问题。
你说得对。林晨说,这段时间我确实太投入工作了,没控制好边界。
我不是让你不投入。苏婉摇头,我是说,投入工作和陪伴家人不是矛盾的。你可以加班,但回到家就放下手机和电脑,好好陪陪乐乐。他需要的不是你人在身边但心不在,是真的跟你一起玩、一起说话。
林晨想了想:这样吧,工作日我保证不超过九点到家,到家之后手机设免打扰,直到乐乐睡着。周末至少有一天完全不碰工作,陪你们。
你说到做到。苏婉看着他,嘴角终于浮出一丝笑意。
说到做到。林晨重复道,语气比刚才多了一分郑重。
他想起自己面试t厂时对陈博士说的那句话——我希望在更大的平台上创造价值。创造价值没错,但价值的定义不应该只有工作这一项。一个能稳定运行的量化系统,一个在t厂发光发热的工程师,一个回家后会陪儿子拼乐高的爸爸——这三者并不冲突,关键是管理好注意力的分配。
就像缓存策略一样,重要的不是总容量有多大,而是热数据的命中率有多高。把有限的时间和注意力,投入到最需要你的地方。
晚上,哄乐乐睡着之后,林晨回到书房。他没有打开工作电脑,而是打开了自己的量化系统监控面板,快速检查了一遍今日的运行报告。一切正常,策略信号稳定,持仓没有异常。
然后他关掉电脑,走回卧室。苏婉还在看手机,见他进来,挪了挪身子给他腾出位置。
今天谢谢你。林晨躺下,轻声说。
谢什么?
提醒我别把平衡搞丢了。
苏婉关掉床头灯,黑暗中传来她轻柔的声音:我们家好不容易回到正轨,别因为忙就又偏了。
不会了。林晨握住她的手,掌心微热。
窗外鹏城的夜景依旧璀璨,屋内安静温暖。平衡从来不是一个一次性的决定,而是每天都要重新校准的刻度。他知道了,就会去做。
第166章 一个月的总结
差两个星期满二个月后的那个周三,林晨在工位上回顾这段时间的进展。
林晨早上到工位的时候,发现桌上多了一杯咖啡和一包坚果,上面贴了一张便利贴,写着满月快乐,正式员工。许悦的字迹,圆溜溜的。
他笑了笑,把便利贴撕下来夹进笔记本。环顾四周,工区里已经来了不少同事,各自沉浸在自己的屏幕前。一个月前,这些人对他来说还是名字和头像,现在他至少能叫出七八个人的全名,知道谁喜欢喝美式、谁代码写得快、谁开会总是迟到两分钟。
变化是悄悄发生的。
上一个月里,他完成了三件事。
第一件,是热门内容混合策略的性能优化。从定位瓶颈到修改代码、通过code Review、补充混沌测试用例,再到灰度上线。p99响应时间从28毫秒稳定降到18毫秒,比陈博士的预期还好。上线三天,监控曲线平稳,没有一例线上事故。
第二件,是可解释性调研报告。他花了将近两周时间,研读了二十多篇论文和内部技术文档,最终输出了一份四十多页的技术调研,涵盖了大模型在金融风控场景下的可解释性方案,包括特征归因方法、决策逻辑可视化、以及针对结构化时序数据的解释框架。王皓看完后说可以直接拿来做立项材料,这句话让他高兴了一整个下午。
第三件,也是最让他意外的——他参与了一次线上故障排查。
那是上周四凌晨两点,推荐服务的一个关键指标突然异常下跌。值班同事在群里发了一串告警截图,陈博士秒回:老赵、林晨,起来看一下。
林晨从床上翻身坐起来,打开笔记本电脑远程接入。十五分钟后,他通过分布式追踪系统定位到了问题根因:一个上游特征服务在凌晨两点发布了新版本,新版本中有一个配置项写错了,导致部分用户的实时特征查询返回空值,从而影响了下游推荐结果。
他通过配置中心紧急回滚了那个配置项,三分钟后指标恢复正常。整个故障持续时间不到二十分钟。
事后复盘会上,陈博士没有表扬谁,只是平静地说:故障恢复速度可以,但根因是变更流程不够完善。上线前缺少配置项的自动化校验,这个要补上。
林晨当时只觉得这是一次普通的故障处理。但后来老赵私下跟他说:凌晨两点爬起来二十分钟定位到根因并恢复,新人在第一个月能做到这个,陈博心里是有数的。
他这才意识到,在t厂这种地方,能力不需要自我标榜,事实验就是最好的证明。
一个月,三件事,从旁观者变成了参与者,从新人变成了可靠的后备力量。
下午站会的时候,直属主管王皓简单回顾了一下本周的几个任务进度,然后看向林晨:下周轻舟项目要正式启动第一阶段了,你的优化模块已经稳定上线,这个月接下来的重心会转到项目上。先把可解释性的方案细化,后续可能会让你带一个小模块。
带一个小模块——这句话的分量,林晨听得很清楚。在t厂,能带模块意味着从执行者向决策者迈出了第一步。他点了点头:好的,我先跟许悦对接一下评估平台的数据接口。
站会结束后,他回到工位,翻开笔记本,在最新的一页写下几个字:第一个月,站稳了。
然后他划了一条线,在下面写下一行:第二个月目标:1. 可解释性方案细化并落地;2. 知识蒸馏预研;3. 投资系统月度回顾。
前两项是工作,第三项是个人。他的量化系统已经全自动化运行了一个月,从入职前的密切盯盘到现在一周只看两次,过渡得比他预想的还要平稳。这说明系统设计是可靠的,但也意味着他需要开始思考下一阶段的迭代方向。
午休时间,他去了食堂。t厂的食堂确实名不虚传——中餐、西餐、东南亚菜、轻食沙拉,十几个档口排开,每样都能吃得不错。他端着餐盘找了个靠窗的位子坐下,对面是老赵。
满月了啊,老赵咬着鸡块,含糊地说,第一个月过得怎么样?
节奏快,信息密度高,但收获也大。林晨如实说,以前在小公司,一年碰到的问题可能还没t厂一个月多。
那是因为规模不一样。老赵擦了擦嘴,日活几个亿的产品,什么稀奇古怪的边界case都会冒出来。你现在看到的还只是冰山一角。
我现在就是冰山一角,已经够学了。林晨笑了笑。
对了,老赵压低声音,你那个凌晨两点定位根因的操作,陈博在管理层周会上提了。说新人上手快,线上响应能力不错。
林晨愣了一下:这……不是什么大不了的事吧?就是查了个trace。
在t厂,凌晨两点能二十分钟定位根因并恢复,就是能力。老赵认真地说,别小看自己。
林晨没有再谦虚。他知道,在这个平台上,谦虚不是美德,结果才是。
晚上回到家,苏婉和乐乐已经吃过了,给他在微波炉里留了一份饭菜。乐乐扑上来抱住他的腿:爸爸!今天幼儿园画了一幅画,画的是我们一家三口!
在哪里?给爸爸看看!
乐乐挣脱他,哒哒哒跑回房间,拿出一张A4纸。上面歪歪扭扭地画着三个小人——高的那个穿蓝色衣服,旁边矮一点的那个穿橙色衣服,最小的一个在中间举着手。画面下方有几个歪歪扭扭的字:我们一家——苏婉帮他写的,但乐乐坚持要自己描一遍,所以笔画歪歪扭扭,看着倒更添了几分童趣。
高的那个是爸爸,矮一点的是妈妈,中间的是乐乐自己。
林晨蹲下来,看着这幅画,心里涌起一种说不出的柔软。他伸手把乐乐抱起来,亲了亲他的额头:画得真好。爸爸最喜欢那件蓝色衣服了。
因为爸爸上班穿蓝色!乐乐大声说。
苏婉端着盘子从厨房出来,看到这一幕,嘴角弯了弯。
林晨放下乐乐,去热饭。坐在餐桌前,他一边吃一边跟苏婉聊今天的事:站会上的新任务,老赵告诉他的消息,食堂的菜不错。
苏婉听着,偶尔点点头,偶尔回应一句。她没有多说什么鼓励的话,但从她的眼神里,林晨读到了安心。
一个月前,她送他出门上班时,眼里还有一丝担忧。现在,那丝担忧淡了,取而代之的是一种踏实的信任。
饭后,林晨陪乐乐玩了一会儿积木——这是他答应苏婉的,回家后放下手机,全心全意陪孩子。乐乐在客厅地毯上摆了一座,林晨负责造城墙,两人配合默契。
等乐乐睡下后,林晨坐在书房,打开量化系统面板。这个月系统整体收益率4.2%,不算很高,但胜在稳定。A股策略贡献了主要收益,期货策略有少量回撤但整体正收益。
他更新了一下月度记录,关掉电脑,去卧室。
苏婉已经半靠在床头看手机。见他进来,说了一句:满月了,恭喜。
谢谢。林晨躺下来,看着天花板,感觉像是重新活了一次。
苏婉关了床头灯,黑暗里传来她的声音:那就好好活。
嗯,好好活。
第167章 第二次月度总结
入职两个月了,陈博士在内部系统上发了一条日程邀请:一对一,3号小会议室,半小时。
这是第二次月度一对一。第一次是一个月前,那时陈博士给了他三个方向:特征工程流水线优化、精排模型内存压缩、日志监控精细化。一个月过去了,三个方向都交出了不错的答卷。
林晨看了一眼时间,下午四点半。他简单整理了一下这两个月的工作记录,带上笔记本,提前五分钟到了3号小会议室。
陈博士已经在里面了,面前摆着平板和一杯绿茶,看到他进来,示意他坐下。
陈博士的语气一如既往地平和,但比上次多了一分期待。
林晨在他对面坐下,笔记本摊开在面前,上面用他自己的格式写满了这两个月的工作要点和数据。
两个月了,陈博士翻了翻平板上的记录,跟上个月比,感觉怎么样?
说实话,比第一个月踏实多了。林晨想了想,组织语言,第一个月主要是适应和吸收,这个月开始有产出感了。性能优化上线稳定,可解释性调研转化成了实际项目,线上故障排查也积累了实战经验。
嗯,你的上手速度我看到了。陈博士点头,热门内容模块的优化,从接手到上线,不到两周,p99从28毫秒压到18毫秒,超出了我的预期。可解释性调研报告也写得很扎实,王皓说可以直接拿来做立项材料。
林晨没有接话,等着他继续。
凌晨那次线上故障,你也跟进了。陈博士放下平板,看着他,二十分钟定位根因并回滚,新人能做到这个速度,不常见。
主要是分布式追踪系统的功劳,林晨如实说,如果没有那套工具,光靠日志排查,至少要翻三倍时间。
工具是外因,你的排查思路和对系统的理解是内因。陈博士纠正道,有些人工具在手上也找不到问题在哪。你那天凌晨从trace数据里快速定位到配置项异常,说明你对整个调用链路已经有了一个基本的理解框架,这是比工具更重要的东西。
林晨点头,把这句话默默记在笔记本上。
陈博士换了个姿势,手指轻轻敲了敲桌面:优点就不多说了,你的学习能力和执行力在线。说说你觉得还需要改进的地方。
林晨没有犹豫:工程规范性。这两个月被code Review打回过好几次,虽然改了,但说明我之前的编码习惯偏重能跑就行,对大规模协作环境下的规范意识还不够。另外,跨部门沟通方面还比较生疏,跟其他组的对接主要靠王皓带着,自己主动推动不够。
自我认知很准确。陈博士的表情没有太大变化,但语气里多了一分认可,规范意识这个事情,前面踩过坑了,后面会越来越顺。跨部门沟通是大厂里非常重要的能力,技术再强,如果只会闷头写代码,天花板会很低。你后面带模块的时候,天然就需要和其他组协作,这是个练手的机会。
明白。林晨点头。
陈博士拿起平板划了几下:接下来一个月的重点。轻舟项目第一阶段正式启动,你负责可解释性模块,带两个新人一起做。这意味着你不再只是执行者,而是要开始做技术决策和项目管理。工作方式要从接到任务埋头做转变为拆解任务、分配资源、推进节点、兜底质量
明白。林晨重复了一遍,但这次语气更重。
另外,我注意到你最近在关注知识蒸馏。陈博士突然说。
林晨微怔。他以为陈博士只关注他的正式工作产出,没想到连这种私下研究的技术方向都在关注范围内。
你在内部wiki上的浏览记录,我能看到一部分。陈博士似乎看出了他的疑问,平静地解释,不是监视,是导师的职责。你在可解释性调研里引用了hinton的蒸馏论文,又单独搜了好几篇蒸馏相关的文章,说明你在思考更深层的东西。这很好。
他顿了顿,继续说:轻舟项目的核心目标,你清楚——让大模型变小,让推理成本变低。可解释性是其中一个维度,蒸馏是另一个。如果你能把这两者结合起来思考,比如在蒸馏过程中保留可解释性,或者在可解释性框架下指导蒸馏策略的选择,那就不只是做模块了,是做架构。
林晨心中一震。他之前只是隐约感觉可解释性和蒸馏之间有联系,但还没有想透。陈博士这几句话,等于帮他点开了一扇门。
我回去认真想想这个方向。林晨说。
不急,慢慢想。陈博士看了看时间,今天就到这。下个月的月度总结,我希望能看到可解释性模块的设计方案和蒸馏方向的初步思路。
陈博士站起身,拍了拍他的肩膀:上手很快,继续努力。你的路子是对的,保持。
走出会议室,林晨深吸一口气。半小时的对话,信息量依然很大。他从上手很快四个字里感受到了认可,但更重要的是陈博士帮他指明的方向——可解释性与蒸馏的结合。
这不是简单的1+1,而是有可能产生质变的化学反应。
回到工位,他在笔记本新的一页上写下:
第二个月关键词:决策、管理、架构思考。
下面又画了一个思维导图的雏形:左边是可解释性,右边是,中间用一条粗线连起来,打了一个问号。
问号旁边,他写了一行小字:在蒸馏中保留什么?谁来决定?
这个问题的答案,他现在还不知道。但他知道,找答案的过程,就是成长的过程。
第168章 薪水到账
手机震动的时候,林晨正在跟许悦讨论评估平台的数据接口规范。
他下意识瞟了一眼屏幕,一条来自银行的短信静静地躺在通知栏里:
【xx银行】您尾号8877的账户于09:23入账工资人民币42,800元,当前余额……
四万零八百。
这是他入职t厂后第一个完整月份的工资。上个月入职不满整月,只发了半个月的薪水,虽然也够还房贷了,但毕竟不是完整数字。这一次,是实打实的一个月薪水——52K月薪,16薪结构,扣完五险一金和个税,到手四万二千八百。
林晨的手指顿在键盘上方,两秒钟没有动。然后他深吸一口气,把手机翻了个面扣在桌上,继续刚才的讨论。
许悦在白板上画了一个数据流向图,正指着其中一个箭头问他:你们的特征数据是走这个接口还是那个接口?他快速回答了,语调平稳,仿佛什么都没有发生。
但他的心跳比平时快了至少一拍。
讨论结束后,他没有回工位,而是走到茶水间接了一杯水,站在窗边慢慢喝完。鹏城科技园的玻璃幕墙在上午的阳光下泛着金属光泽,远处的鹏城湾像一块蓝灰色的绸缎铺展开来。
四万二千八百。加上上个月入职时发的半个多月工资和签字费,以及投资系统几个月来的收益……他快速在脑子里算了一下,家庭总资产已经悄悄突破了百万。
一百万。
从五万起步,到追加投入的二十万,再到如今突破百万——这条曲线走了将近一年,中间有过回撤、有过黑天鹅、有过彻夜难眠的时刻,但整体趋势向上。特别是入职t厂之后,有了稳定收入,不再需要从投资账户里提取生活资金,复利效应得以充分发挥。
他想起失业那段时间,每次还房贷都是从存款里往外抽的失血感。那个数字一天天减少,像沙漏里的沙子,怎么都拦不住。而现在,房贷变成了从收入里往外划的常规支出,投资账户也不再需要补贴生活,而是纯粹地在生长。
这种感觉,用一个词形容——踏实。
他回到工位,打开银行App,仔仔细细看了每一项扣除明细。五险一金的基数比他之前高了不少,公积金双边加起来有八千多,这笔钱将来可以用来还房贷或者提取出来。
第一步,确认本月房贷已经自动扣款完毕。他在备忘录上记下:下个月可以提前还一部分本金,减少月供压力。
第二步,打开投资系统的App,看了一眼本月收益。4.2%,系统自动运行,不需要他任何干预。工资是稳定器,投资系统是加速器,两台引擎同时运转的感觉,让他对财务前景有了更清晰的信心。
第三步——他停下来,想了想,打开淘宝,在购物车里翻出那个苏婉看了好几次但一直没买的通勤包。一千多块,不算贵,但足够表达心意。他点了购买。
然后给苏婉发了一条消息:今晚出去吃饭?我请客。
回复来得很快:怎么了?又发工资了?
你怎么知道?
你每次突然大方,不是发工资就是做了什么好事。
林晨笑出声来。这个女人,永远能看穿他。
就是想庆祝一下。
下午,他坐在工位上,开始整理投资系统的月度运行报告。这是他入职后第一次在周末之外的时间做系统回顾——以前他每天至少花一个小时盯盘和检查系统,现在有了稳定工作,时间重心转移了,但系统依然运转良好。
A股子策略本月收益1.2%,期货子策略收益0.3%,期权子策略0.8%,黄金子策略微亏0.1%。整体收益4.2%,最大回撤控制在3%以内,夏普比率2.5以上——放在任何一家量化私募里都算优秀。
但更让他高兴的不是收益率本身,而是系统的稳定性。他曾经最担心的是入职后没有时间盯盘,系统会不会出问题。事实证明,他当初设计的自动化框架是可靠的——风控模块自动运行,策略信号自动执行,异常告警自动推送。他只需要每周日做一次全面检查,平日里完全不用干预。
这让他确信了一件事:好的系统设计,不应该依赖人的持续关注。就像他在t厂学到的监控告警体系一样,系统应该自己能发现问题、处理问题,而不是等着人来看。
他关掉投资系统的面板,打开透明蒸馏项目的技术方案文档。光标在标题下闪烁,他开始写第一版方案的框架。
两件事并行推进:t厂的工作在前台,投资系统在后台。一个用技术创造价值,一个用系统管理财富。两条线交织在一起,但不会互相干扰,因为他设计的框架足够稳健。
下班后,他回到家,苏婉已经做好了晚饭。
不是椰子鸡——上次发工资时已经去过了。苏婉今天做了红烧排骨和清炒时蔬,乐乐的儿童碗里排骨肉被切成小块,摆得整整齐齐。
今天怎么这么丰盛?林晨换好拖鞋,走进厨房。
庆祝嘛。苏婉从身后拿出一个小盒子,推到他面前,给你的。
林晨拆开,里面是一支钢笔,深蓝色的笔身,银色的笔夹,简洁大方。
你一直说想用钢笔写笔记,苏婉微笑着说,上个月就想给你买,一直没找到合适的。
林晨看着那支笔,拧开笔帽,在餐巾纸上写了一个字。笔尖顺滑,出水均匀,手感极佳。
好写。他笑了。
乐乐在旁边举着筷子:我也要写!
你先用勺子把饭吃完。林晨和苏婉异口同声,然后对视一眼,都笑了。
饭桌上,乐乐叽叽喳喳地讲幼儿园的事,苏婉偶尔插两句,林晨一边听一边给乐乐夹菜。红烧排骨的酱香混着米饭的热气,弥漫在小小的餐厅里。
这种日常的、不需要去餐厅庆祝的、安安静静的晚餐,其实比任何大餐都让他满足。
吃完饭,乐乐去客厅玩积木。林晨帮苏婉收拾碗筷,在水池边轻声说:投资账户今天突破一百万了。
苏婉洗碗的手停了一下,转头看他:真的?
林晨点了点头,加上这个月工资,家庭总资产过了一百万。
苏婉沉默了两秒,然后继续洗碗,语气平静:那也别乱花。
放心。林晨笑了。
苏婉擦干手,走出厨房,在客厅喊了一声:乐乐,别把积木扔到沙发底下!
林晨站在水池边,看着窗外的鹏城夜景。万家灯火在远处闪烁,像一片微微摇晃的星河。
一百万。从失业时存款只剩三十万,到一年后家庭总资产突破百万。这个数字本身不意味着什么——鹏城的房价动辄几百万,一百万在这里也就是一套小房子的首付。但它标志着一条曲线的拐点:从下降到上升,从消耗到积累,从不确定到确定。
他擦干手,走进书房,在笔记本上用那支新钢笔写下一行字:
薪水到账日。家庭总资产突破百万。
笔迹流畅,墨水在纸上缓缓晕开。
第169章 奖励家人
周六中午,林晨一家三口开车去了海岸城。
苏婉坐在副驾驶,时不时看一眼放在后座的那个深蓝色礼盒——昨天到的快递,林晨说是给她买的包。苏婉嘴上说又乱花钱,但眼神里藏着期待。
乐乐坐在后排安全座椅上,脸贴着车窗,嘴里不停地念叨:去哪里呀?去哪里呀?
去给你买个大惊喜。林晨从后视镜里看了他一眼。
什么惊喜?乐乐眼睛亮了。
到了就知道了。
海岸城的地下车库很满,他们转了两圈才找到一个位置。乐乐一下车就像脱缰的小马,在前面跑起来,苏婉赶紧追上去拉住他的手。
慢点跑!撞到人怎么办?苏婉嗔道。
林晨提着礼盒跟在后面,看着妻子和儿子的背影,嘴角不自觉地上扬。失业那几个月,这样的场景对他来说是奢望——不是没有时间,而是没有心情。口袋里的钱在一天天减少,哪有心思逛街买东西?
现在不一样了。
他加快脚步,走到苏婉旁边,把礼盒递给她:拿着。
苏婉接过来,有点疑惑:这是什么?
你回家再拆。林晨故作神秘。
苏婉看了他一眼,嘴角一弯,没有追问。她心里大概已经猜到了。
第一站,童装店。
林晨带乐乐走进一家品牌童装店。乐乐一开始还有点拘谨,但很快被店里花花绿绿的衣服吸引了。林晨蹲下来,跟他平视:今天爸爸给你买新衣服,你自己挑,喜欢哪件选哪件。
乐乐的眼珠子在店里转了一圈,最终锁定了一件蓝色卫衣,胸前印着一只卡通恐龙,还有一条深色的运动裤。
就要这个!他指着恐龙卫衣,兴奋得蹦起来。
林晨把卫衣和运动裤拿起来,又顺手拿了两件基础款的t恤和一套运动睡衣,这些也一起。
苏婉站在旁边,看着父子俩,想说什么,又忍住了。她知道林晨在补偿——补偿那几个月里没能给孩子买新衣服的日子。那些日子乐乐穿着旧衣服去幼儿园,从来没抱怨过,但苏婉注意到他每次看到别的小朋友穿新衣服时,眼神会多停留两秒。
第二站,女装区。
你在这等一下,乐乐跟着你。林晨把乐乐交给苏婉,自己走进旁边一家服装店。
十分钟后他出来,手里多了一个袋子。
买了什么?苏婉问。
你回去就知道了。林晨笑得有点得意。
苏婉白了他一眼,但嘴角压不住笑意。
第三站,玩具店。
这是乐乐期待已久的地方。走进店里,他就像掉进了蜜罐的小熊,东摸摸西看看,每件玩具都想要。林晨蹲下来跟他说:今天只能选一件,你自己选最喜欢的。
乐乐纠结了整整十分钟。从遥控汽车看到乐高城堡,又从乐高城堡看到恐龙模型,最后他停在了一个科学实验套装前面。盒子上画着显微镜、试管和各种瓶瓶罐罐,写着小小科学家。
我要这个!乐乐指着实验套装,眼神坚定。
林晨有点意外。他以为乐乐会选乐高或者遥控汽车,没想到选了一个科学实验套装。
你确定?他问。
确定!乐乐用力点头,我要做实验!像爸爸一样在电脑上做实验!
苏婉在旁边笑出声来。林晨摸了摸乐乐的头,把实验套装拿下来:好,就这个。
结账的时候,乐乐抱着大盒子,脸上洋溢着满足的笑容。林晨看着他,心想这孩子虽然才五岁,但已经开始对科学和探索产生兴趣了。这比任何遥控汽车都让他欣慰。
逛完海岸城,他们去了一家苏婉一直想去但舍不得去的日料店。三文鱼刺身新鲜厚切,天妇罗酥脆金黄,拉面汤头浓郁,乐乐吃了一份儿童套餐,把小碗里每一粒米饭都扒干净。
好吃吗?林晨问。
好吃!乐乐用力点头,嘴角还沾着一粒米饭。
苏婉给乐乐擦了擦嘴,抬头看着林晨。午后的阳光从落地窗照进来,照在他脸上,他笑得很放松,是那种发自内心的、没有负担的笑。
她想,好久没见他笑得这么轻松了。
吃完午饭,他们又去逛了书店。林晨给乐乐买了一本儿童科普绘本,给自己挑了两本技术书——一本关于知识蒸馏,一本关于推荐系统实践。苏婉选了一本教育心理学的新书,还帮乐乐挑了一本涂色本。
你又买技术书。苏婉看着他的书,语气有点无奈又有点好笑。
这两本我盯了好久了,以前舍不得买。林晨翻了翻其中一本的目录,现在有了工资,该买的就得买。
苏婉没再说什么,把乐乐的绘本和自己的书一起放进了购物袋。
下午四点多,一家三口满载而归。乐乐在后座抱着他的科学实验套装,嘴里嘟囔着回家就做实验,很快就困得打起了瞌睡。
苏婉看着后视镜里睡着的乐乐,轻声对林晨说:今天花了多少?
不多。林晨含糊地回答。
你那个包就不少了。苏婉瞥了一眼后座的礼盒。
那个不一样,那是应该的。林晨认真地说,你那个旧包背了快三年了,拉链都坏了,早该换了。
苏婉沉默了几秒,然后说:其实旧包还能用。
能用手提也行,但你现在有了一个新的、好的、体面的包。林晨把话说完,停顿了一下,以前是我没能力给你买。现在有了,就想给你买。
车内安静了一会儿,只有引擎的低鸣和后座乐乐均匀的呼吸声。
谢谢你。苏婉轻声说。
不用谢。林晨看了她一眼,这个家是我和你一起撑的。以前是你在扛,现在轮到我了。
苏婉没有接话,只是伸出手,轻轻握住了他在方向盘上的手。掌心温暖,指节微凉。
回到家,乐乐醒来,迫不及待地拆开科学实验套装。盒子里有一个塑料显微镜、几个试管、滤纸、食用色素,还有一本简易实验手册。
爸爸!你教我做实验!乐乐拽着林晨的袖子。
好,先吃饭,吃完饭一起做。林晨看了看苏婉,苏婉笑着摇了摇头——父子俩,一个比一个急。
晚饭后,父子俩趴在客厅地毯上,按照手册做了第一个实验:用色素和水制作彩虹水柱。乐乐小心翼翼地把红色色素滴进试管,看着水变成鲜艳的红色,发出一声惊喜的。
为什么水会变颜色?乐乐问。
因为色素溶在水里了,就像糖溶在粥里一样,你看不见它了,但它还在。林晨耐心解释。
那糖去哪里了?乐乐歪着头。
糖变成了甜味,你看不见甜味,但你喝粥的时候能尝到,对吧?
乐乐恍然大悟,又滴了一滴蓝色色素进去,红色和蓝色混合,变成了紫色,哇!变色了!
苏婉坐在沙发上,手里拿着林晨送她的新包,没有拆开用,只是反复摸着光滑的皮面。她看着地毯上父子俩的背影,一个高大认真,一个小小专注,中间是一堆试管和五颜六色的水。
这就是她想要的生活。不是大富大贵,不是豪宅名车,而是一个完整的、温暖的、有笑声的家。
林晨抬起头,正好对上苏婉的目光。他笑了笑,继续教乐乐滴下一滴黄色色素。
紫色加黄色,变成了深绿色。
又变色了!乐乐欢呼。
窗外鹏城的夜色温柔,屋内灯光明亮。新的包、新的实验套装、新的书、新的开始。第一次发薪后的第一个周末,用最朴素的方式,给了这个家一个踏实的回答。
第170章 投资系统运行
周日上午,林晨照例检查投资系统。
这是他入职后的一个新习惯——不再是每天盯盘,而是每周固定在周日早上做一次全面检查。平日里系统全自动运行,他只需要关注异常告警,但周日的全面复盘,是对整个系统健康状况的一次体检。
书房里,晨光透过百叶窗投下细长的光影。林晨打开笔记本电脑,登录系统管理面板。深蓝色的界面亮起来,一排排数据和曲线像心跳监护仪一样跳动。
总资产:323,500元。
这个数字让他的目光停留了两秒。一百万出头。从最初的五万启动资金,到后来追加投入的二十万,加上这大半年来的持续复利——期间经历过回撤、黑天鹅和彻夜难眠的时刻,但整体趋势向上。特别是入职t厂之后,他有了稳定收入,不再需要从投资账户里提取生活资金,复利效应得以充分发挥。这条曲线走了将近一年,就像一棵树,虽然枝干偶尔被风吹歪,但根系越扎越深。
他开始逐项检查。
A股子策略:本周收益1.2%,跑赢沪深300指数0.4个百分点。策略信号清晰,持仓分布合理,没有触发任何风控阈值。他点开详细报告,发现本周做多了一支新能源板块的标的,是系统自动识别到板块资金流入信号后调仓的,目前浮盈3.7%。他快速看了一下基本面数据,确认信号逻辑没有问题,继续持有。
期货子策略:本周收益0.3%,小幅正收益。主要贡献来自螺纹钢的多头持仓,周五的尾盘拉升给了一波不错的利润。但系统风控模块在周三触发了一次减仓信号——原油期货波动率突然放大,系统自动将仓位从8%降到3%。林晨调出当时的日志,确认减仓逻辑执行正确。周五原油果然大跌,如果当时没有减仓,这一笔就要亏损近2%。
好险。他轻声说,但语气里没有惊恐,反而有一种工程师看到代码按预期运行时的满足感。这正是量化系统的价值——在人类情绪可能犹豫、恐慌或贪婪的地方,用冰冷的规则代替判断。
期权子策略:本周收益0.8%,主要来自于卖出虚值认沽期权的权利金收入。这部分策略风险可控,收益稳定,是为数不多能持续产生时间价值收入的策略。
黄金子策略:本周微亏0.1%。国际金价受美联储鹰派言论影响小幅回调,但系统判断中期趋势未变,维持了轻仓配置。这个策略的持仓周期通常以周为单位,不需要频繁调仓。
整体来看,系统运行状态良好,各子策略之间的相关性维持在较低水平,分散配置的效果明显。他翻看了一下风险指标,最大回撤控制在3%以内,夏普比率维持在2.5以上——这个数据放在任何一家量化私募里都算优秀。
但他没有放松。他知道,市场的平静往往是暴风雨前的假象。系统目前最大的风险敞口不是来自任何一个子策略,而是来自他自己的注意力分配。
入职前,他每天至少花两到三个小时盯盘、调参、分析数据。现在,他一周只花半小时全面检查一次。系统运行得很好,但这也意味着,如果出现任何他预设的监控逻辑之外的问题,他可能无法第一时间发现。
需要在系统层面加强异常检测。他在笔记本上写下这个想法。
不是增加人工盯盘时间,而是让系统自己变得更智能。具体来说,可以考虑引入一个自诊断模块——当某个子策略的运行数据偏离历史统计分布时,自动触发更详细的分析报告推送到手机,而不是仅仅依赖简单的阈值告警。
这跟他在t厂学到的理念不谋而合:监控系统不是为了告警而告警,而是要提供有价值的诊断信息。
他快速画了一个系统架构草图:数据层 → 策略层 → 执行层 → 监控层。在监控层里增加一个智能诊断子模块,利用历史运行数据训练一个轻量级的异常检测模型,实时评估各子策略的健康状态。当检测到异常时,不是简单报警,而是生成一份包含根因分析和建议操作的报告。
等等,他停笔想了一下,这跟我在t厂做的可解释性模块,思路是一样的。
可解释性不只是在推荐系统里有价值,在投资系统的风控和诊断里同样关键。如果系统能告诉你为什么这笔交易触发减仓为什么这个策略的收益偏离了预期,而不是仅仅弹出一个冰冷的数字,那运维效率会大幅提升。
技术是相通的。陈博士那句话再次在他脑海里回响。
他合上笔记本,靠在椅背上。窗外传来乐乐在客厅跟苏婉说话的声音:妈妈,我要用试管做彩虹!
等爸爸出来帮你,你别自己碰颜料。
林晨笑了笑,关上电脑,走出书房。
客厅里,乐乐正趴在地毯上翻那本实验手册,苏婉坐在沙发上看手机。看到林晨出来,苏婉抬头问了一句:查完了?
嗯,一切正常。林晨在她旁边坐下。
赚了还是亏了?苏婉问。她从不主动问投资的事,但每次他查完系统,都会问这一句。
这周赚了一点。林晨没有说具体数字。苏婉知道他在做投资,也大概知道资金规模,但细节他从来不主动说。这不是不信任,而是不想让数字的波动影响她的情绪。
那就好。苏婉点点头,没有追问。
乐乐抬头看到爸爸,立刻兴奋地喊:爸爸!我们一起做彩虹!
好,来了。林晨起身,走向地毯。
他在系统里构建了一个自动运行的量化引擎,在代码的世界里追求确定性和可控性。但在客厅这块地毯上,一个五岁的孩子正等着他,用几根试管和几瓶色素,制造不可预测的美丽。
两种创造,都是他人生的一部分。
他蹲下来,拧开红色色素的盖子,递给乐乐:这次你来。
乐乐小心地滴了一滴,试管里的水慢慢晕开,像一朵微小的花在绽放。
好漂亮!乐乐仰起脸,眼睛里映着那抹红色,亮晶晶的。
林晨看着儿子的侧脸,心想:这就够了。系统在运转,工作在推进,家人在身边。所有的努力,所有的坚持,不就是为了这一刻的安稳和喜悦吗?
苏婉从沙发上拍了一张照片——父子俩趴在地毯上做实验的背影。阳光从窗户洒进来,把他们的影子拉得很长。
她没有发朋友圈,只是存了下来,相册命名为我们的日子。
午后,乐乐午睡还没醒,林晨坐在书房又打开了投资系统面板。他想把智能诊断模块的架构草图再细化一下,却被屏幕右下角一个不起眼的红色标记吸引了注意力——
A股子策略今日持仓列表里,有一支标的的风险评分突然从跳到了。系统没有触发自动平仓,因为还没到止损线,但风险评分的突变本身就值得注意。
他点开详情,眉头微微皱起。这支标的是一家新能源龙头股,基本面没有明显恶化,但系统检测到主力资金连续三个交易日净流出,且融券余额在快速上升。
有人在做空?林晨低声自语,手指在键盘上停住。
这不像普通的回调,更像是一场有预谋的集中抛压。如果是这样,接下来几天可能会有更大的波动。
他看了看风险评分的趋势图,那条线像一根绷紧的弦,随时可能崩断。
系统没有自动操作,但它在等他做一个决定:是继续持有,还是提前止盈离场?
林晨看着屏幕上跳动的数字,书房里安静得只能听到自己的呼吸声。客厅那边传来乐乐翻身的声音。
他关掉面板,站起来,走到客厅门口看了一眼熟睡的儿子。
下午再做决定也不迟。但那个红色的风险标记,像一颗钉子,已经悄悄扎进了他原本平静的周末。
第171章 技术分享
周二下午两点,t厂AI平台部每周技术分享会。
会议室大屏幕上打着一行字:本期分享人:林晨 | 主题:机器学习在量化交易中的应用实践。
林晨站在投影幕前,手里握着遥控笔,看着面前坐着的二十多个同事,深吸一口气。这是他第一次在t厂做技术分享,也是入职以来第一次在这么多人面前正式讲话。
台下第一排,陈博士端着茶杯,微微点头示意他开始。老赵靠在椅背上,一副我来看看你有什么料的表情。许悦冲他比了个加油的手势。王皓坐在角落,笔记本电脑已经打开,大概准备边听边处理邮件。
大家好,今天我分享的主题是——机器学习在量化交易中的应用实践。
林晨点开第一页ppt。标题页很简洁,背景是他自己做的量化系统架构简图。
先说背景。他清了清嗓子,量化交易简单来说就是用数学模型和计算机程序来替代人工做交易决策。传统的量化系统主要依赖统计套利和因子模型,但随着机器学习技术的发展,越来越多的团队开始尝试把深度学习引入策略开发。我自己在过去一年里做了一个从零到一的量化系统,今天把过程中踩过的坑和学到的东西分享给大家。
他点开下一页,屏幕上出现了一张系统架构图。
整个系统分为四层:数据层、策略层、执行层和风控层。数据层负责从不同数据源获取行情和基本面数据;策略层是核心,包含多个子策略,每个子策略针对不同的品种和市场环境;执行层负责将策略信号转化为实际的买卖操作;风控层是最后一道防线,包括仓位控制、止损止盈和异常检测。
他停顿了一下,扫了一眼台下。大家的目光都集中在屏幕上,有人在笔记本上飞快地记录。
重点讲策略层。他切换到下一页,是一张深度学习模型的架构图,这是我用的核心模型,基于LStm的时序预测网络。输入是过去N个时间步的行情数据和特征指标,输出是未来K个时间步的价格走势预测。
为什么选LStm而不是transformer?老赵突然插嘴。
好问题。林晨心里暗赞一声,这说明老赵在认真听。
两个原因。他不慌不忙地回答,第一,在金融时序数据上,LStm对局部模式的捕捉依然很有效,训练成本比transformer低很多。第二,我的系统跑在单台云服务器上,算力有限,LStm的推理速度更快,延迟更低。在交易场景里,每毫秒都关系到成交价格。
老赵点了点头,没再追问。
林晨继续深入。他讲了特征工程的思路——如何从原始行情数据中提取有效特征,如何处理缺失值和异常值,如何用领域知识(而不是纯数据驱动)来选择因子。他讲了模型训练中的过拟合问题——量化策略最容易犯的错误就是用历史数据训练出一个完美曲线,然后上线就亏钱。他分享了自己应对过拟合的几个方法:滚动窗口验证、参数随机化、以及最关键的——在回测中引入交易成本和滑点。
很多人做回测的时候只看收益率曲线,他说,但真正重要的是风险调整后的收益。一个年化30%但最大回撤40%的策略,远不如一个年化15%但最大回撤5%的策略来得实用。因为后者你敢满仓运行,前者你只敢轻仓试探。
台下有人轻轻鼓掌,是几个年轻的算法工程师。
接下来他讲了风控模块的设计思路,重点介绍了动态仓位管理和自动止损机制。这一部分引起了更多人的兴趣——风控在量化交易中是生死线,但在很多技术分享中被忽视了。
风控的本质不是不亏钱林晨说,控制亏损在可承受范围内,让赚钱的策略有足够的空间发挥。这跟我们在t厂做系统设计很像——不是为了不出故障,而是在故障发生时能快速恢复,保证整体可用性。
这句话一出,他注意到陈博士微微扬了一下眉毛,嘴角浮现一丝不易察觉的笑意。
最后一部分,他讲了投资系统与AI大模型的潜在结合方向——如何用大模型做市场情绪分析,如何用知识蒸馏来降低推理成本,以及如何在风控层面引入可解释性,让系统不只是告诉你要卖,而是告诉你为什么应该卖。
这也是我目前在轻舟项目中负责的可解释性方向的一个重要灵感来源。他总结道,技术本身是相通的,不同领域的经验可以互相启发。量化交易里的风控思维,完全可以应用到推荐系统的稳定性和可靠性设计中。
分享结束后,掌声比他预想的更热烈。老赵站起来走到他旁边,拍了拍他的肩:可以啊,林晨,深藏不露。
过奖了。林晨笑着收起遥控笔。
许悦过来问了一个关于特征选择的具体问题,旁边两个他不认识的同事也凑过来交流。一个做数据工程的同事问他量化系统的数据管道是怎么搭建的,另一个做推理优化的同事对LStm推理延迟的优化方案很感兴趣。
林晨一一回答,他发现自己的状态很放松,甚至有些享受这种技术交流。以前在跨境电商公司,他能交流的对象很少,技术深度也不在一个层级。而在t厂,每个人都能听懂他在说什么,还能提出有挑战性的问题,这让他感到一种久违的智力碰撞的快感。
陈博士最后一个走过来,端着茶杯,表情平静但眼神中有一丝认可:不错。你把金融领域的经验和我们这边的技术结合起来了,这个视角很有价值。
谢谢陈博。林晨说。
我注意到你最后提到了知识蒸馏和可解释性的结合,陈博士压低声音,只有他们两个人能听到,这个方向,值得深入研究。如果你有初步想法,下周可以跟我单独聊一次。
林晨心中一动,郑重点头:好的,我准备一下。
技术分享会散场,但余波还在继续。下午组群里陆续有人发消息,讨论分享中的各种技术细节。有人在wiki上建了一个讨论帖,标题是关于量化交易风控与推荐系统稳定性的异同,下面已经有十几条回复了。
林晨看着这些讨论,忽然有一种奇妙的满足感。不是因为被认可,而是因为他独处在小房间里搭建的系统、一个人在黑暗中摸索出的经验,终于找到了一群能理解和共鸣的人。
下班的时候,老赵跟他一起走出大楼。深秋的鹏城,晚风已经开始有了凉意。
你那个风控模块,老赵说,思路还在分享会上,动态止损那个机制,具体怎么实现的?是固定比例止损还是基于波动率?
基于AtR的动态止损,林晨回答,波动率大的时候止损宽一点,波动率小的时候止损窄一点。
好思路。老赵想了想,我们推荐系统里有个类似的机制,是控制推荐结果的多样性。多样性太低,用户会看到重复内容;太高,又会降低点击率。我们用的也是基于波动率的方法,只不过波动率的定义不一样。
异曲同工。林晨笑了。
两人并肩走在科技园的林荫道上,秋风吹动路边的凤凰木。远处,鹏城湾的海面在夕阳下泛着金光。
技术在不同的领域流淌,但底层逻辑是相通的。这是林晨今天分享的最大收获——不是教会了别人什么,而是在教的过程中,自己看清了那些原本模糊的脉络。
第172章 内部影响
技术分享会之后的三天,林晨的工位比往常热闹了不少。
先是数据工程组的周浩找上门。他是个瘦高个,戴一副黑框眼镜,说话速度很快,像是脑子转得比嘴巴还快。周二中午,他端着餐盘在林晨对面坐下,开门见山:你上次分享的那个LStm时序模型,特征工程是怎么做的?我最近在做用户行为序列的建模,特征选择卡住了。
林晨放下筷子,想了想:金融时序和用户行为时序虽然领域不同,但特征工程的核心思路是相通的。你现在是卡在哪个环节?
信息增益太低。周浩皱眉,我喂了一百多个特征进去,模型的AUc只比基线高0.3%,感觉大部分特征都是噪声。
一百多个?林晨挑了挑眉,你做特征筛选了吗?
做了,用L1正则化筛过一轮,砍掉了一半,但剩下的五十多个还是太多。模型训练慢不说,线上推理延迟也受影响。
试试反向筛选。林晨用餐巾纸擦了擦嘴,从工位上拿过一张白纸,画了一个简单的流程图,不是从一百个里选最好的,而是从最重要的三五个开始,逐步加入候选特征,每加一个看验证集效果有没有显着提升。如果加了没提升甚至下降,就扔掉。
为什么不是从多的开始减?周浩问。
因为从多到少减,容易留下相关性高但边际贡献低的特征。从少到多加,每一步都是有效的。就像量化交易里选因子一样——少而精,远胜过多而杂。
周浩看着白纸上的流程图,眼睛亮了:这个思路好,我们之前的做法确实太粗暴了。我下午就试试。
还有一点,林晨补充,特征和特征之间的交互效应也要看。有时候单独看没用的特征,组合起来效果可能很好。金融里常见的是量价背离,价格涨但成交量缩,单独看哪一项都不明显,组合起来就是一个很强的反转信号。
周浩把白纸上的流程图拍了照,连连点头,端着餐盘走了。
第二个找来的是推理优化组的工程师李敏。她是个短发女生,说话利落,技术背景很强。周三下午,她路过林晨工位时停下脚步:林晨,你有空吗?想跟你聊聊LStm推理延迟优化的事。
现在就可以。林晨转过椅子面对她。
你上次分享说你单台服务器上跑LStm,推理延迟控制在毫秒级。我们推荐模型上线的时候,延迟是最大的瓶颈之一。你是怎么优化的?
林晨简短地解释了他做量化的思路:模型蒸馏、量化压缩、缓存中间结果。李敏边听边在笔记本上记,偶尔追问细节。
缓存中间结果这个,你们推荐系统里应该也在做吧?林晨问。
在做,但做得不够精细。李敏说,我们目前只缓存了最后一层的embedding,中间层的特征计算每次都重新跑。你的方案是把前几层也缓存了?
对,特别是输入序列不变的时候,前几层的输出是确定的,完全可以预计算缓存下来,只在线上跑后面几层。推理时间能减少60%以上。
李敏的眼睛明显亮了一下:这个思路可以借鉴。我们推荐模型的用户画像部分,大部分特征也是低频更新的,完全可以预计算缓存。
两人又聊了十多分钟,主要围绕如何在推荐系统场景下实现类似的推理优化。分开时,李敏说了一句让林晨印象深刻的话:你们做量化的人,思路确实不太一样。我们是资源堆上去跑不动就加机器,你们是资源不够就想办法压榨每一毫秒。
因为我们在交易市场里,毫秒就是钱。林晨笑了笑。
第三个、第四个、第五个……接下来几天,陆续有不同组的同事来找他,有的问技术细节,有的请教项目经验,有的纯粹是对量化交易感兴趣想来聊聊。林晨来者不拒,能帮的帮,能聊的聊。他发现,每跟一个人交流,他自己的思路也会被激发,那些原本模糊的想法在讨论中变得越来越清晰。
周五下午,组群里弹出一条消息,是王皓发的:
讨论帖量化交易风控与推荐系统稳定性的异同已经更新到第43条回复,感兴趣的同学可以继续讨论。另外,林晨分享的ppt和补充材料已经上传到内部知识库,搜索量化交易可以找到。
林晨点开一看,43条回复里,有技术讨论、有实际案例分析、有对风控设计的深入探讨,甚至还有人把自己组的系统架构贴出来做对比。这个由他的分享引发的讨论,已经从一场45分钟的演讲,变成了一个持续发酵的技术社区话题。
他关掉讨论帖,坐在工位上发了一会儿呆。
这种感觉很陌生。在跨境电商公司的时候,他是技术负责人,但没有人在意他的技术观点,因为公司里真正懂技术的人太少。后来一个人做量化系统,所有的思考都是独白,没有回响。现在,他说的每一句话都有人在听、在想、在回应。这种智力的共振,比任何物质奖励都让他感到充实。
手机震了一下。是陈博士发来的私信:下周二下午三点,我办公室,聊聊可解释性和蒸馏结合的事。
林晨回了一个,然后在笔记本上写下几个关键词:可解释性、蒸馏、轻舟项目、架构。
从执行者到模块负责人,再到可能参与架构设计。他隐约感觉到,一条更大的路正在前方展开。
他收拾工位准备下班,路过老赵工位时,老赵正在跟另一个同事讨论问题。看到林晨,老赵冲他竖了一下大拇指,没有打断讨论,只是用口型说了一句:影响力。
林晨笑着摆了摆手,走向电梯。
走出t厂大楼,鹏城的晚风带着海水的微咸。科技园的路灯已经亮起,照在行人匆匆的脚步上。他站在大楼门口深吸一口气,感受着晚风拂面的清凉。
影响力——这个词在他脑海里回荡。不是刻意追求的,而是在做对的事情、分享有价值的经验时,自然生长出来的。就像他的投资系统,不追求每一笔都赚大钱,但只要策略逻辑是对的,长期来看,收益曲线自然会向上。
影响力也是如此。做好每一件小事,自然会被看见。
他拿出手机,给苏婉发了一条消息:今天准时下班,六点半到家。
回复秒到:真的?太好了!乐乐说今天要跟你做火山爆发实验。
火山爆发?什么实验?
就是小苏打加白醋,你上次答应他的。
林晨想了想,好像是上周末乐乐看到实验手册上的火山爆发,他随口说了句下次爸爸教你做。又是——而这一次,终于变成了。
他加快脚步,走向地铁站。
第173章 核心项目
周二下午三点,林晨准时敲开陈博士办公室的门。
办公室不大,但整洁得几乎有点强迫症——书架上的技术书籍按高矮排列,白板上的笔记用不同颜色的马克笔严格分区,桌面上除了两台显示器、一个键盘和一个印着NeurIpS 2022的马克杯之外,没有任何多余的东西。
陈博士指了指对面的椅子,自己端起马克杯喝了一口茶。
林晨坐下,笔记本摊开在膝上。他花了一个周末整理可解释性与知识蒸馏结合的初步思路,写了三页笔记,画了两张架构草图,准备了一整套论证逻辑。
但陈博士没有直接让他开始讲。
先问你一个问题,陈博士放下杯子,看着他,你觉得轻舟项目目前最大的瓶颈是什么?
林晨想了想:推理成本?大模型的推理成本太高,限制了部署规模。
对,也不全对。陈博士站起来,走到白板前,拿起一支黑色马克笔,画了一个简单的坐标轴。横轴标着模型大小,纵轴标着。
大模型效果好,但成本高。小模型成本低,但效果打折。他在右上角画了一个点,在左下角画了一个点,我们现在的策略是蒸馏——用大模型的输出训练小模型。但蒸馏有一个根本性问题。
他在两个点之间画了一条虚线,然后在虚线上打了几个问号:蒸馏之后,模型变小的同时,可解释性也丢失了。大模型能告诉你为什么推荐这条内容,因为它的参数足够多、表示空间足够大,可以保留推理过程的痕迹。但小模型做不到——它只能告诉你结果,没法解释过程。
林晨的笔记本上,那张自己画的架构草图里的问号,突然被陈博士这段话照亮了。
你的意思是,他接上思路,如果我们能在蒸馏过程中,不只传递输出结果,还传递推理依据,小模型就能在变小的同时保持一定的可解释性?
这就是我想让你做的。陈博士转过身,看着他,可解释性不只是推荐系统的一个附属功能,它是蒸馏策略的核心约束条件。一个不能解释自己决策的小模型,在金融风控、医疗诊断这些高风险场景里是无法落地的。轻舟项目的落地场景里,有相当一部分需要可解释性。
他在白板上写下一行字:可解释性驱动的模型蒸馏。
这是我给你的新方向。陈博士的语气平静,但眼神里有一种不容置疑的确定,不是单纯做可解释性模块,也不是单纯做蒸馏优化,而是把两者结合起来——在蒸馏过程中保留可解释性,用可解释性来指导蒸馏策略的选择。
林晨的脑子飞速运转。这不是一个模块级别的工作了,这是一个架构级别的思路。如果做成了,轻舟项目的核心突破就不只是模型变小了,而是小模型依然可解释——这在整个行业里都是前沿问题。
陈博,他深吸一口气,这个方向如果做出来,影响不只是轻舟项目。
我知道。陈博士回到座位上,双手交叉放在桌上,所以才交给你。你在量化交易里对风控和可解释性的理解,加上这一个月在推荐系统上的积累,是目前最适合做这件事的人。
他没有说最适合之一,而是最适合。林晨听出了这句话的分量。
我会给你两个新人配合你,一个负责可解释性模块的工程实现,一个负责蒸馏实验的数据管道。你负责整体架构设计和技术路线。陈博士拿出平板,划了几下,项目代号透明蒸馏,在轻舟项目下作为独立子项目立项。周期三个月,第一个月出架构方案和技术路线,第二个月做原型验证,第三个月做A/b测试和效果评估。
三个月?林晨重复了一下。
有问题?
没问题。他回答得很快,但脑子已经在飞快地拆解任务了。三个月,架构设计+原型+测试,节奏紧,但不是不可能。
陈博士站起来,走到白板前,用红笔在可解释性驱动的模型蒸馏下面画了一个框,这是你的核心贡献点。做成了,你就不只是一个模块负责人,而是轻舟项目的架构贡献者。
他转过身,看着林晨:在t厂,架构贡献者意味着什么,你应该清楚。
林晨清楚。在t厂这种技术驱动的公司里,架构贡献者不只是一个title,而是意味着你在核心技术方向上有了话语权,你的技术判断可以影响产品走向,你的名字会出现在关键设计文档的作者栏里。
我需要一周时间做详细的技术方案。林晨说。
给你一周。下周二,我要看到方案初稿。
林晨站起来,把笔记收好。走到门口时,他回头看了一眼白板上的那行字——可解释性驱动的模型蒸馏。红笔画的框在灯光下微微反光,像一块等待被打磨的原石。
他知道,这不仅是一个项目,更是一个机会。一个从执行者变成设计者的机会,一个从跟随者变成引领者的机会,一个证明自己的技术判断力可以创造更大价值的机会。
走出办公室,他站在走廊上深吸一口气。开放工区的键盘声和低语声像海浪一样涌来。他回到工位,打开一个新文档,在标题栏写下:
项目代号:透明蒸馏 核心目标:可解释性驱动的模型蒸馏架构 负责人:林晨
光标在标题下方闪烁,像一扇刚打开的门。
他开始敲下第一行字:
1. 背景与动机
键盘声融入周围此起彼伏的敲击中。下午五点的阳光透过落地窗,在他后背上画出一道斜长的光影。
他知道自己面前摆着的是一条怎样的路——紧、难、但值得全力以赴。
第174章 组建小组
周三上午十点,3号会议室。
林晨第一次以项目负责人的身份坐到了主位上。面前的白板还是空的,马克笔整整齐齐地放在槽里。他手里捏着一张A4纸,上面是自己昨晚写的会议提纲——字迹有点潦草,但逻辑清晰。
门被推开,两个年轻人一前一后走了进来。
走在前面的是个高个子,皮肤偏黑,穿着t厂标准的灰格子衬衫和运动鞋,嘴角总挂着一丝不太自信的笑。他叫张明远,去年校招进来的,在推荐系统组做了一年多的特征工程,写代码快但架构经验不足。简历上写着华科本科、浙大硕士,专业方向是机器学习。
后面跟着的是个短发女生,戴一副金属细框眼镜,表情淡然,看起来话不多。她叫陆小溪,今年初从一家AI创业公司跳槽过来,在推理引擎组待了半年,负责模型部署和性能优化。技术功底扎实,但对推荐系统和可解释性方向了解不深。
坐吧。林晨指了指对面的椅子,咱们认识一下。我林晨,之前在轻舟项目组做可解释性方向,现在负责透明蒸馏这个子项目。
张明远坐下来,双手放在膝盖上,看着有点紧张:林工好,我看过你上次技术分享的ppt,讲得特别好。
叫我林晨就行,不用叫林工。林晨笑了笑,转向陆小溪,小溪对吧?你在推理引擎组的时候,优化过模型加载速度,那块做得不错。
陆小溪微微点头:嗯,我之前主要做模型部署和性能优化,蒸馏这块接触不多,可解释性就更少了。
没关系,这就是我们这个项目有意思的地方。林晨站起来,走到白板前,拿起一支蓝色马克笔。
他在白板上写下三个词,排成一行:可解释性 | 蒸馏 | 结合。
我先把项目背景说清楚。他在每个词下面画了一条横线,开始补充细节,轻舟项目的核心目标,是让大模型变小、变快、变便宜,同时尽量不损失效果。传统蒸馏只关注效果保真——学生模型的输出尽量接近教师模型。但陈博士提出了一个新要求:在蒸馏过程中,不能只传递输出,还要传递决策依据。换句话说,学生模型不仅要,还要解释为什么答对
他在下面画了一个大大的圈,里面写下四个字:透明蒸馏。
这就是我们的项目名——指的是模型决策过程透明可解释,指的是从大模型到小模型的知识迁移。两个目标合在一起,就是我们的核心任务。
张明远举手:那可解释性具体怎么定义?是特征归因那种,还是生成自然语言解释那种?
好问题。林晨在白板上画了两个分支,短期我们先做特征归因——就是Shapley值、注意力权重这些,让模型能指出哪些特征对这次决策贡献最大。远期目标是生成自然语言解释,但那需要更强大的模型支持,先不急。
陆小溪推了推眼镜:蒸馏部分呢?用哪种蒸馏方法?硬标签、软标签、还是特征蒸馏?
这是我们要在技术方案里确定的核心问题。林晨在白板上画了一个问号,我的初步想法是——如果只用传统的软标签蒸馏,学生模型学到的只是教师怎么输出,学不到教师为什么这样输出。我们需要设计一种蒸馏损失函数,让学生模型同时学习教师的输出分布和特征归因信息。
相当于在蒸馏损失里加了一个可解释性正则项?陆小溪反应很快。
对,可以这样理解。林晨点头,但具体怎么设计这个正则项,怎么在效果和可解释性之间找到平衡,需要实验验证。这也是我需要你们帮忙的地方——明远负责特征归因的实现和评测,小溪负责蒸馏实验的数据管道和模型部署。
他在白板上画了一个简单的分工图:
林晨(架构设计+技术路线) ├── 张明远(可解释性模块实现+评测) └── 陆小溪(蒸馏数据管道+模型部署)
时间线是这样的,他在白板右侧画了一条时间轴,第一个月出架构方案和技术路线,第二个月做原型验证,第三个月做A/b测试和效果评估。现在我们处于第一个月的开始阶段,本周的目标是把技术方案框架定下来。
张明远看着白板上的时间轴,微微皱眉:林晨……不好意思,林晨哥,三个月的周期是不是有点紧?既要设计新的蒸馏方法,又要加入可解释性,还要验证效果……
是紧。林晨没有回避这个问题,但不是不可能。关键是我们要分清主次——第一个月最重要的是定方向和出方案,不需要所有细节都想清楚。第二个月的原型验证,先跑通一个最小可行性版本,哪怕效果不好,也能知道问题在哪。第三个月迭代优化,用数据说话。
他停顿了一下,看着两个年轻人的表情。张明远有点紧张但充满干劲,陆小溪虽然话少但眼里透着认真。
我再补充一点,林晨放下马克笔,回到座位上,这个项目虽然是我负责架构和技术路线,但我们三个是一个团队。你们有任何想法、任何疑问、任何觉得方案不对的地方,都可以直接提出来。我最怕的不是做错,而是知道了不对还不说。在t厂,技术讨论没有对错之分,只有数据说话。
明白。张明远和陆小溪几乎同时点头。
会议结束的时候,已经快十一点了。林晨把白板上的内容拍照发到了项目群里,然后给两个人各自分配了本周的任务:明远去调研现有的可解释性方案,重点关注Shapley值和注意力机制在蒸馏场景下的适用性;小溪去梳理现有的蒸馏管道代码,评估改造的工作量。
散会后,林晨回到工位,看着笔记本上自己写的会议提纲,又看了看白板照片里的分工图。三个人的名字,三个人的职责,一个月的时间线。
他从一个人写代码、一个人跑策略、一个人盯系统,到现在要带两个新人一起做一个架构级的项目。角色在变,思维方式也要跟着变。
以前他只需要对自己负责,现在他要对三个人、对项目、对陈博士的信任负责。
他打开文档,在透明蒸馏项目计划书下面,新加了一行:
团队:林晨(架构)+ 张明远(可解释性)+ 陆小溪(数据管道) 原则:数据说话,问题不过夜,每周五回顾。
写完之后,他盯着这行字看了几秒。三个人,三个月,一个架构级的项目。
小团队,大挑战。
但挑战,不正是成长最快的土壤吗?
他起身去茶水间接水,路过老赵工位时,老赵抬头看了他一眼:怎么样?第一次带人,紧张不?
有点。林晨实话实说。
正常。我第一次带人的时候,紧张得方案写了两遍,第二遍才敢发出来。老赵笑了,不过别怕,带人和写代码不一样。写代码你控制每一个细节,带人你得学会放手。定好方向和标准,剩下的让他们自己跑,你只管兜底。
定方向、定标准、兜底。林晨默念了一遍。
对。你现在是小团队,这三件事够用了。等团队大了,再加一条——培养人。不过那是以后的事。
林晨点点头,端着水杯回了工位。
窗外的南山科技园在午后的阳光下熠熠生辉。他打开项目计划书,开始写第一版技术方案。
第一次带团队,第一次做架构设计,第一次把脑海中的想法变成白纸黑字让别人来执行。紧张吗?有一点。但更多的是一种前所未有的兴奋感。
他敲下键盘,第一个字落在屏幕上,像一粒种子埋进了土里。
第175章 模型调研
技术方案的第一步,永远是调研。
林晨把透明蒸馏项目的调研分为两条线:一条是可解释性方向,交给张明远;另一条是蒸馏方法方向,他自己来。陆小溪负责梳理现有数据管道,评估改造可行性,暂时不参与调研。
周四上午,林晨坐在工位上,面前摊着三篇打印出来的论文,笔记本上密密麻麻写满了标注。屏幕上还开着七八个标签页,全是最近两年顶会里关于模型蒸馏和可解释性的文章。
这不是他第一次做技术调研——入职第一周的可解释性调研他已经做过一轮了,那份四十多页的报告还在内部wiki上挂着。但那次的调研是广撒网式的,目的是了解全貌;这次的调研是精准打击式的,目的是找到在蒸馏过程中保留可解释性的具体技术路线。
他先梳理了现有的主流蒸馏方法。
硬标签蒸馏是最简单的——教师模型输出分类结果,学生模型直接学习这些标签。效果有保证,但可解释性几乎为零。学生模型学到的是教师的答案,而不是教师的推理过程。pASS。
软标签蒸馏是hinton在2015年提出的经典方法——教师模型输出概率分布(soft labels),学生模型学习这个分布。好处是信息量更大,坏处是依然只传递了结果层面的知识,没有传递中间层的推理逻辑。pASS。
特征蒸馏更进一步——不仅传递输出,还传递中间层的特征表示。学生模型不仅要学怎么答,还要学怎么想。这个方向更接近目标,但现有的特征蒸馏方法关注的是效果保真,而不是可解释性。也就是说,学生模型学到了中间层的特征分布,但它无法解释这些特征对最终决策的贡献度。有潜力,但不够。
关系蒸馏——教师模型中不同样本之间的关系也被传递给学生模型。比如两篇文章在教师的表示空间里是相似的,学生模型也应该保持这种相似性。这个方法天然带有一定的语义信息,对可解释性有帮助。可以考虑。
注意力蒸馏——将教师模型中的注意力图作为额外监督信号传递给学生。注意力图本身就是一种特征归因——它告诉你模型在哪些位置投入了更多的计算资源。这个方法和可解释性有直接关系,但它只适用于基于注意力机制的模型,对非transformer架构不适用。重点关注。
林晨在笔记本上画了一个对比表格,把每种方法的优点、缺点、和可解释性的关联度逐一标注。然后他在表格最右边加了一列,标题是可解释性改造潜力。
关系蒸馏和注意力蒸馏的改造潜力最高,但都不完全满足透明蒸馏的需求。他需要的不是在现有蒸馏方法上打补丁,而是设计一种新的蒸馏框架,让可解释性成为蒸馏过程的内生约束,而不是事后添加的附属功能。
他站起来,走到白板前(他们小组申请了一块固定白板,就在工区角落),开始画架构草图。
草图的核心是一个三角形的约束框架:
顶部顶点标注效果保真——学生模型的输出要尽量接近教师模型。 左下顶点标注模型压缩——学生模型的参数量和推理延迟要显着低于教师模型。 右下顶点标注可解释性保持——学生模型要能提供决策归因,解释为什么给出这个结果。
传统的蒸馏方法只优化顶部和左下之间的权衡(效果vs压缩),完全忽略了右下角的可解释性。透明蒸馏要做的是在三者之间找到帕累托最优的平衡点。
他在三角形中间画了一个圈,标注核心创新点:可解释性感知的蒸馏损失函数。
这个损失函数由三部分组成:
输出蒸馏损失(传统软标签蒸馏)——保证效果保真
特征蒸馏损失(中间层特征对齐)——保证表示学习
可解释性蒸馏损失(新增)——保证学生模型的归因结果与教师模型一致
第三部分是创新的核心。如何定义归因结果一致?如果教师模型对某次推荐决策的归因是用户兴趣占60%,内容热度占30%,多样性占10%,那么学生模型也应该给出类似的归因比例,而不能只学到输入输出映射而丢失归因信息。
林晨在白板上画了一个具体例子:
教师模型输出:推荐内容A,归因={用户兴趣:0.6,内容热度:0.3,多样性:0.1} 学生模型输出:推荐内容A,归因={用户兴趣:0.55,内容热度:0.35,多样性:0.1}
两个模型的推荐结果相同,归因比例近似但不完全一致。这个差距就是可解释性蒸馏损失——差距越小,学生模型对教师模型推理逻辑的还原度越高。
他在白板上写下关键公式的设计思路:
L_total = a * L_output + β * L_feature + γ * L_explain
其中a、β、γ是超参数,控制三个损失项的权重。通过调整这三个权重,可以在效果、压缩和可解释性之间找到不同的平衡点。
妙啊。他自言自语,退后一步看着白板上的草图。
这不是一个简单的技术优化,而是一个全新的蒸馏范式——从效果驱动的蒸馏可解释性感知的蒸馏。如果实验能验证这个框架的有效性,轻舟项目就能实现一个质变:不只是模型变小了,而是小模型依然透明。
他拿出手机,拍了白板上的草图,发给陈博士,附了一句:初步思路,欢迎拍砖。
五分钟后,陈博士的回复来了:方向对。重点考虑一下可解释性蒸馏损失的计算方式,Shapley值计算成本太高,线上不现实,要想一个近似方案。
林晨笑了。陈博士果然一针见血。Shapley值是特征归因的理论最优解,但计算复杂度是指数级的,不可能在线上实时计算。他需要一个高效的近似方案。
他回到工位,开始调研Shapley值的近似计算方法。KernelShAp、FastShAp、SamplingShAp……每个方法都有自己的权衡,有的速度快但精度低,有的精度高但计算量大。
他快速浏览了十来篇论文,最终锁定了两个方向:
方向一:注意力权重作为Shapley值的近似。在transformer架构中,注意力权重本身就是一种天然的特征归因信号。如果教师在蒸馏过程中同时传递注意力分布,学生就可以学到归因信息,而不需要额外的Shapley值计算。计算成本几乎为零。
方向二:FastShAp结合特征蒸馏。在离线阶段用教师模型预计算Shapley值,作为蒸馏标签的一部分。在线推理时,学生模型直接输出归因结果,不需要实时计算。计算成本为一次前向传播的额外开销。
方向一更优雅,但只适用于transformer架构;方向二更通用,但需要离线预计算。
为什么不两个都做?他在笔记本上写下这句话,然后在旁边画了一个分支:transformer架构用方向一,其他架构用方向二。统一接口,按模型类型自动选择。
他站起身,走到张明远的工位旁边。明远正在电脑前翻看一篇关于ShAp的论文,看到林晨过来,立刻切换到笔记界面。
明远,调研进展怎么样?
我整理了现有的可解释性方案,张明远把笔记屏幕转过来给林晨看,Shapley值、LImE、注意力权重这三种是目前最主流的。但我有个疑问——Shapley值计算太慢了,线上用不了,那我们做可解释性蒸馏的时候,怎么保证实时性?
林晨笑了——明远和他想到一起去了。
问得好。我刚跟陈博讨论过同样的问题。他把自己白板上的思路给张明远讲了一遍,我们走两条路线:注意力权重归因作为轻量方案,FastShAp作为通用方案。你先重点调研注意力权重在蒸馏场景下的可行性,尤其是多注意力头如何传递和聚合。
张明远认真记下来。
还有一点,林晨补充,不要只看推荐系统领域的论文。金融风控、医疗诊断这些对可解释性要求更高的领域,可能已经有成熟的方案了。我在量化系统里用过一些风险归因的方法,回头我整理一份资料给你。
收到。
林晨拍了拍他的肩膀,回到自己的工位。路过陆小溪工位时,她正在低头看代码,没有打扰。
坐回工位,他打开文档,在技术方案的第一版里写下了今天的调研成果。核心架构思路已经清晰了,剩下的是把细节填进去,然后交给陈博士审阅。
窗外,南山科技园的午后阳光从云层中透出来,照在白板的草图上。三角形框架、三条损失函数、两个近似方案——这些线条和符号,正在从一个模糊的想法变成一个可执行的方案。
他继续敲键盘,文档的字数从0到500、从500到1000,一点一点生长。调研还没结束,但方向已经定了。
方向定了,剩下的就是跑。
第176章 实验设计
周五下午三点,3号会议室。
白板上已经画满了架构图和公式,不同颜色的马克笔交织在一起,像一幅抽象画。林晨站在白板前,手里拿着红色马克笔,正在给损失函数的三个权重系数标注含义。
张明远和陆小溪坐在对面,各自面前摊着笔记本。这是透明蒸馏项目组的第二次正式会议,距离上次组会已经过了四天。
我把这几天调研的成果快速过一遍,林晨放下马克笔,走到投影幕前,然后我们讨论实验设计。
他点开ppt,第一页是架构总览图。三角形框架:效果保真、模型压缩、可解释性保持,中间是核心损失函数。
这部分大家上次都看过了,直接跳到更新。他翻到下一页,是三部分损失函数的详细设计。
输出蒸馏损失,用传统的KL散度就行,这块没有争议。特征蒸馏损失,我们用mSE对齐中间层表示,这也是成熟方案。关键在第三部分——可解释性蒸馏损失。
他切换到下一页,上面画着两个分支。
transformer架构走注意力权重归因路线,非transformer架构走FastShAp路线。两条路线统一在一个接口下,运行时按模型类型自动选择。
张明远举手:注意力权重归因那条线,多注意力头的情况下怎么处理?直接平均还是加权?
好问题。林晨切换到一张新幻灯片,上面是他画的注意力头聚合方案,我的初步想法是——不做平均,而是保留所有头的归因信息,让学生模型学习教师的头级归因分布。但这样信息量太大,可能需要先做头选择,挑选对归因贡献最大的几个头。
头选择的依据是什么?陆小溪推了推眼镜,第一次在会议上主动提问。
教师模型中每个头的注意力熵。林晨解释,熵越低的头,说明它越专注于某些特征,归因能力越强。我们只保留这些低熵头的信息,丢弃高熵头的噪声。
这本身就是一个实验点。陆小溪说,需要验证头选择策略的有效性。
没错。林晨点头,所以我设计的实验方案里,第一组实验就包含了这个验证。
他翻到实验设计页面,上面是一张实验矩阵表格。
实验分为三组,他指着表格,逐行解释。
第一组:基线对比实验。教师模型使用t厂现有的推荐大模型,学生模型分别用三种蒸馏方法训练——纯软标签蒸馏(baseline-A)、软标签+特征蒸馏(baseline-b)、以及我们的透明蒸馏(ours)。三个模型在相同数据集上评估效果指标(ctR、AUc)和可解释性指标(归因一致性、归因稳定性)。
第二组:消融实验。在透明蒸馏的框架下,分别去掉可解释性蒸馏损失和特征蒸馏损失,观察效果和可解释性的变化。这组实验的目的是验证每个损失项的贡献。
第三组:超参数搜索。a、β、γ三个权重系数,我们用网格搜索在验证集上找到帕累托前沿。这组实验的计算量最大,但也是最有价值的——它会告诉我们效果、压缩和可解释性之间的真实权衡曲线。
张明远看着表格,眉头微皱:三组实验加起来,训练量不小吧?
不小。林晨没有回避,教师模型本身就有几十亿参数,每个学生模型从零开始训练需要几个小时。三组实验加起来,我估算大概需要训练二十多个模型变体。
那计算资源怎么办?陆小溪问出了关键问题。
我昨天已经跟陈博确认过了,林晨切换到最后一页,上面写着一行字:GpU集群资源申请——透明蒸馏项目专用,8卡A100,为期两周。
陈博已经批了?张明远有些惊讶。
批了。林晨的语气平淡,但眼神里有一丝被信任的底气,这是项目的核心资源保障。8卡A100跑两周,足够我们完成所有实验。但时间紧,每一轮训练都要精确规划,不能浪费。
他回到白板前,拿起蓝色马克笔,画了一个时间线:
第一周:
day 1-2:数据准备和环境搭建(陆小溪负责)
day 3-4:baseline-A和baseline-b训练(陆小溪负责)
day 5-7:透明蒸馏初始版本训练(林晨负责)
第二周:
day 8-9:消融实验(张明远负责可解释性指标评估)
day 10-12:超参数搜索(三人协同)
day 13-14:结果分析和报告撰写(林晨负责)
时间线如上,林晨放下马克笔,有问题吗?
陆小溪看了一眼时间线:数据准备和特征工程我可以在周末提前开始,不用等到下周一。
林晨点头,你能提前开始更好。数据管道的搭建是整个实验的地基,越早完成越好。
张明远也提出了一个细节问题:可解释性指标的评估,我看你写了归因一致性归因稳定性,这两个指标具体怎么定义?
归因一致性指的是学生模型的归因结果与教师模型的归因结果之间的相似度,用余弦相似度或KL散度来衡量。归因稳定性指的是对同一条数据做微小的输入扰动,归因结果不应该剧烈变化,用敏感度分析来衡量。林晨解释道,具体定义我写在技术方案的附录里了,回头我发给你。
收到。
会议结束,三个人各自回到工位。林晨把会议纪要整理好发到项目群里,然后打开技术方案文档,开始补充实验设计的详细部分。
写到一半,他停下来,靠在椅背上盯着屏幕。
这是他第一次完整地设计一个实验方案——从框架到指标到时间线。以前做量化系统,实验都是自己一个人跑,想试什么直接改代码,跑一遍看结果,不行就换。但现在的实验不是一个人的事,是三个人的两周时间,是8卡A100的算力资源,是陈博士的信任和期待。
每一个决策都有成本,每一次训练都不能浪费。
他想起陈博士在月度总结时说的话——做事的方法要扎实。每一步分析都要有数据支撑,任何改动都要有充分的测试。
他又想起老赵说的——定方向、定标准、兜底。
定方向——可解释性驱动的蒸馏,方向已经定了。
定标准——实验指标、评估方法、时间线,标准正在建立。
兜底——如果实验结果不好,方案A行不通,有没有方案b?
他在文档里新加了一节:风险预案。
风险一:可解释性蒸馏损失导致效果下降。预案:降低γ权重,优先保证效果,可解释性作为锦上添花。
风险二:注意力头选择策略效果不佳。预案:退回全头传递方案,用降维方法压缩归因信息。
风险三:超参数搜索空间过大,两周内无法收敛。预案:缩小搜索范围,先做粗粒度搜索,找到大致区间后再做细粒度调优。
风险四:数据管道搭建延迟,影响训练时间线。预案:陆小溪周末提前开始,林晨同步准备备选数据集。
四个风险,四个预案。他没有把一切都想成乐观的,而是在最可能出问题的地方提前布好了防线。
写完预案,他长出一口气,把文档保存。屏幕上,实验方案的第一版已经初具规模,从框架到细节,从时间线到风险预案,像一棵树,从根到干到枝,一点点生长出来。
下午五点半,他合上笔记本电脑,看了看工区里还在忙碌的同事们。张明远在电脑前翻看论文,时不时在笔记本上画图。陆小溪已经打开了代码编辑器,正在搭建数据管道的框架。两个人都在按照计划推进,没有磨蹭。
透明蒸馏的引擎已经启动了。接下来两周,就是全力跑的时候。
他拿起手机,给苏婉发了条消息:今天准时下班,六点到家。
回复来得很快:真的?乐乐说要做火山爆发
林晨笑了。上周末答应的实验,乐乐记了一整周。
他收拾东西,走向电梯。走出大楼,鹏城的傍晚天空被夕阳染成了温暖的橙红色。远处的南山像一道剪影,海面上泛着金光。
两周后,实验结果会是什么样?可解释性蒸馏真的能work吗?如果不行,他能找到突破口吗?
这些问题暂时没有答案。但他知道,只有跑起来,才能看到终点。
按下电梯按钮的瞬间,他在心里默默说了一句:
开跑。
第177章 模型训练
周一早上八点四十分,林晨比平时早到了二十分钟。
他倒不是刻意早起——昨晚翻来覆去没怎么睡好,脑子里全是实验参数的排列组合。索性早点起来,到公司把环境最后检查一遍。
8卡A100的集群资源昨晚零点就位了,陆小溪在项目群里发了一条消息:数据管道就绪,训练数据已入仓,特征工程脚本通过完整性校验。后面跟了一个竖起大拇指的emoji。
林晨到工位的时候,张明远已经在了,正对着屏幕上的终端窗口一行行地检查环境配置。他抬头看到林晨,有点紧张地说:林晨哥,我刚把所有依赖包的版本过了一遍,跟技术方案里的要求完全一致。cUdA版本、pytorch版本、FlashAttention版本都对上了。
林晨放下背包,打开自己的笔记本电脑,先把baseline-A跑起来。
baseline-A是纯软标签蒸馏,是三组实验里最简单的一组,也是最重要的参照基准。如果baseline-A的效果都达不到预期,后面的一切都是空中楼阁。
他调出训练脚本,参数一行行地核对:batch size 256,学习率2e-4,warmup步数1000,总训练步数……每一个数字都是他在技术方案里反复推敲过的,不能有一丝马虎。
开始吧。他敲下回车键。
屏幕上跳出一行行日志:数据加载中……模型初始化中……GpU分配中……
然后,他看到了一行让他心跳加速的信息:
[INFo] distributed training: 8x A100-80Gb, dataparallel mode [INFo] total batch size: 2048 (256 per GpU) [INFo] Estimated training time: 3.2 hours
三个小时。
林晨盯着3.2 hours这行数字,愣了几秒。在自己以前的认知里,训练一个几十亿参数的模型,怎么也得跑个一两天。在量化系统里,他用的那台破笔记本跑一个回测就要十几分钟,训练一个小型LStm模型得大半天。而现在,8卡A100,三个小时就能完成一轮完整训练。
这就是大厂的算力。
他在心里默默算了一笔账:8张A100,每张80Gb显存,加起来640Gb的显存总量。放在两年前,这等于一个中型AI实验室的全部家当。而现在,这只是t厂给一个三人项目组分配的日常资源。
天壤之别。
明远,他转过头,你知不知道,这个训练量,如果放在我自己的笔记本上跑,得多久?
张明远想了想:几十亿参数的教师模型加学生模型……cpU跑的话,可能得一两周吧?
一两周都算快的。林晨摇头,如果用我那台旧笔记本,可能一个月都跑不完。而且显存根本不够,得用cpU训练,速度至少慢五十倍。
张明远咂了咂嘴:所以算力才是真正的门槛。
不是唯一的门槛,但确实是最硬的。林晨回过头看着屏幕上滚动的日志,没有算力,什么架构创新、什么技术突破,都是纸上谈兵。反过来,有了算力,你的想法才能被验证、被迭代、被打磨。
训练日志在屏幕上平稳地滚动着。Loss在下降,学习率在warmup阶段逐步攀升,GpU利用率稳定在95%以上。一切正常。
林晨站起身,走到白板前,拿起马克笔,在时间线上标注:baseline-A 训练中,预计12:00完成。
然后他转向张明远和陆小溪:趁训练跑着,我们把baseline-b的脚本也准备好。baseline-A跑完之后,不用等结果分析,直接启动baseline-b。
陆小溪从她的工位那边探过头来:数据集划分我已经做了三份,三个基线模型用不同的随机种子,确保对比公平。
好。还有一件事,林晨在白板上画了一个框,明远,可解释性指标的评估脚本写好了吗?
张明远从屏幕后抬起头:归因一致性的脚本写好了,用余弦相似度计算。归因稳定性还在写,预计今天下午能完成。
行。baseline-A的训练结果出来之后,你先用归因一致性跑一遍,看看纯软标签蒸馏的学生模型,可解释性衰减多少。这个数字很重要,它是我们后面所有改进的基准线。
张明远认真地点头。
十一点五十分,林晨的手机震了一下。他低头一看,是训练监控的推送通知——
[Job pleted] baseline_a_distill - Epoch 1/1 - Final Loss: 0.0312 - ctR AUc: 0.7923 - duration: 3h12min
三个小时十二分钟。一个完整的基线模型训练,从数据加载到参数收敛,总共只用了三个小时十二分钟。
如果在自己的笔记本上——他不敢想。
他走到集群监控面板前,看了一眼资源使用曲线。8张A100的利用率在训练期间一直稳定在93%-97%之间,没有出现显存溢出或通信瓶颈。集群的健康状态像一匹精力充沛的骏马,跑完全程连汗都没怎么出。
baseline-A结果出来了,他在项目群里发了消息,效果指标和可解释性指标,明远开始评估。baseline-b的脚本准备就绪,午饭后启动。
中午,三个人在楼下的湘菜馆吃了一顿工作餐。陆小溪点了一个辣椒炒肉,张明远要了份酸菜鱼,林晨叫了一份手撕包菜和一碗米饭。
上午的训练,有什么感觉?林晨夹起一块包菜问。
陆小溪言简意赅,我之前在创业公司的时候,申请两块V100都得排队,而且只能用碎片时间。现在8块A100随便跑,简直是另一个世界。
张明远也点头:我之前做毕业论文的时候,实验室的GpU是大家抢着用,每个人只能分到几个小时的时间窗口。现在这种资源量,做梦都不敢想。
林晨没接话。他想起了自己刚入行的时候——一个人、一台电脑、一套量化系统。没有GpU集群,没有团队配合,没有算力保障,所有的事情都靠自己摸索。那时候跑一个实验,从想法到结果,至少要一周。而现在,三个小时就够了。
这不是个人的进步,是平台的跃迁。
在t厂这种公司,个人的技术能力只是入场券,真正拉开差距的是资源、体系和协作方式。一个人再厉害,没有8卡A100也跑不出三个小时的奇迹。反过来,8卡A100配上一套成熟的训练框架和管道,哪怕是一个实习生,也能在几小时内完成一轮标准实验。
平台的威力,远超个人的想象。
下午一点半,baseline-b的训练启动了。这次是软标签+特征蒸馏的联合方案,参数配置跟baseline-A差不多,但多了一个中间层对齐的损失项。
林晨盯着屏幕上的启动日志,忽然想起了一件事。他打开自己的旧笔记本——那台陪伴他写量化系统的thinkpad,现在放在家里的书桌上,偶尔用来查查资料。他清楚地记得,在笔记本上跑一个简单的模型训练,风扇会像飞机引擎一样轰鸣,机身烫得能煎鸡蛋,跑完一个epoch要四十分钟。
而现在,他的手指在终端里输入一行命令,8张A100就像一支训练有素的军队,齐刷刷地开动起来,三个小时就能完成一个过去需要数周的任务。
他忽然理解了一件事——为什么创业者拼了命也要拿到大厂的资源。不是因为大厂的技术更强,而是因为大厂的杠杆更大。同样一个想法,在小公司可能要跑一个月才能验证,在大公司三天就够了。时间差就是竞争差,竞争差就是生存差。
下午五点,baseline-b训练完成。
结果比baseline-A好了不少——ctR AUc从0.7923提升到0.8041,提升了1.2个百分点。这印证了一个已知结论:特征蒸馏确实能带来效果提升,尤其是在中间层表示比较丰富的情况下。
但可解释性指标呢?张明远跑完评估,结果不出意料——baseline-b的归因一致性比baseline-A略有提升,但归因稳定性反而下降了。
有意思,林晨看着张明远发来的评估结果,自言自语,加了特征蒸馏之后,学生模型的中间层表示确实更接近教师了,但表示的稳定性反而变差了。这说明什么?
说明特征蒸馏在中间层引入了更多噪声,张明远站在林晨身后,学生模型虽然学到了教师的特征分布,但泛化能力没有同步提升,导致对输入扰动更敏感。
林晨在白板上画了一个箭头,从baseline-b指向baseline-A,这正好给了我们一个切入点——可解释性蒸馏损失的加入,能不能在弥补这个稳定性的同时,进一步提升效果?
他看向白板上的时间线,明天就要开始训练透明蒸馏的核心模型了。
今天收工。他看了看时间,五点一刻,明天八点准时到,启动ours版本的训练。
走出大楼的时候,鹏城的天空被夕阳染成了一片暖橙色。11号线的列车从远处驶来,车窗里映着晚霞的光。
他掏出手机给苏婉发了条消息:今晚六点到家。
回复秒到:乐乐今天在幼儿园画了一幅画,说是爸爸在电脑前打怪兽
林晨看着这条消息笑了。打怪兽——小家伙倒是没说错,只不过他打的怪兽不是游戏里的,而是模型里的噪声、不收敛、和可解释性的衰减。
但他有8卡A100这把利剑,有团队这面盾牌,有方向这盏明灯。
明天,就要打最关键的一仗了。
第178章 效果提升
周二晚上九点一刻,林晨才从公司出来。
这比跟苏婉约定的时间晚了十五分钟。他在工位上多待了一会儿,因为透明蒸馏核心模型的训练结果刚出来,他需要确认每一行数字。
故事要从早上说起。
八点整,三个人准时坐在了工区。林晨打开集群监控面板,8卡A100的状态灯亮着幽幽的蓝色,像八只沉默的眼睛,等待着指令。
ours版本训练,启动。他在终端里输入命令,手指在回车键上停了半秒,然后按下。
日志开始滚动。损失函数的三项——L_output、L_feature、L_explain——依次初始化,权重参数a=0.6、β=0.3、γ=0.1加载完成。这是第一轮实验的初始参数配置,γ的权重故意设得比较低,因为这是可解释性蒸馏损失的首次亮相,稳妥起见,不能让它喧宾夺主。
训练过程中,林晨每隔半小时刷新一次监控面板。Loss曲线在稳步下降,三项损失各司其职——L_output下降最快,说明输出蒸馏的效果保真没有问题;L_feature也在稳定收敛,中间层对齐在按预期进行;L_explain的下降幅度最小,但趋势稳定,没有出现震荡或发散。
一切正常。
下午一点,训练完成。
林晨从椅子上站起来,走到张明远工位旁边:结果出来了,开始评估。
张明远立刻打开评估脚本,把训练好的模型加载进来。归因一致性、归因稳定性、ctR AUc、NdcG……八个指标逐一跑过。
五分钟后,结果出来了。
林晨盯着屏幕上的数字,深吸了一口气。
指标对比(测试集): baseline-A baseline-b ours(a=0.6,β=0.3,γ=0.1) ctR AUc: 0.7923 0.8041 0.8067 NdcG@10: 0.3512 0.3634 0.3658 归因一致性(cos): 0.6841 0.7012 0.7823 归因稳定性(1-sens): 0.7234 0.6987 0.7856
归因一致性从0.7012提升到0.7823,涨了八个点。张明远的声音里有一丝难以置信,归因稳定性从0.6987提升到0.7856,涨了将近九个点。效果指标也有提升,ctR AUc从0.8041到0.8067,NdcG从0.3634到0.3658。
林晨没有立刻说话。他盯着最后一行数字——归因稳定性0.7856。baseline-b的这个指标是0.6987,比baseline-A的0.7234还低。但现在,加了可解释性蒸馏损失之后,这个指标不仅回来了,还大幅超越了两个基线。
可解释性蒸馏损失不仅没有拖累效果,反而同时提升了效果和可解释性。
林晨哥,陆小溪从自己工位那边走过来,看着屏幕上的数字,这个结果……比预期好。
确实比预期好。林晨的语气很平静,但他的心跳在加速。他知道这个结果的分量。
但作为项目负责人,他不能因为一组实验数据就急着下结论。
一组数据不够,他提醒自己,也提醒团队,我们用了随机种子42,需要换种子再跑两轮,确认结果的稳定性。另外,γ=0.1只是初始配置,消融实验和超参数搜索还没做。今天的成果是好的开始,但不是终点。
张明远和陆小溪同时点头。
下午,三个人开始轮换种子重新训练。8卡A100的资源被安排得满满当当——一台机器跑种子2024的实验,另一台同时开始消融实验的第一组配置。
林晨坐在工位上,打开了技术方案文档,在实验结果那一节写下了第一组数据。
写完之后,他靠在椅背上,盯着屏幕看了很久。
ctR AUc从0.8041提升到0.8067,看起来只涨了0.0026,连0.3个百分点都不到。但林晨太清楚这个数字意味着什么了——在推荐系统的线上环境里,ctR提升0.1个百分点就是显着提升,0.3个百分点已经是值得全量发布的水平了。
而1.5个百分点——如果把0.7923到0.8067的差距换算成实际业务指标——意味着什么?
他飞快地算了一笔账。t厂的推荐系统每天处理上亿次推荐请求,ctR每提升1个百分点,意味着数百万次额外的用户点击,意味着数以亿计的额外广告收入和内容消费。在推荐系统这个战场上,1.5个百分点不是一个小数字,而是一条可以写进季度财报的增量。
当然,这是测试集上的结果,线上效果还需要A/b测试来验证。但仅就离线结果而言,透明蒸馏的框架已经证明了自己的价值——它不仅没有拖累效果,反而让效果和可解释性同时提升。
这是一个让人振奋的信号。
但他没有急着兴奋。
傍晚六点,第二轮种子实验的结果出来了。结论一致:三个种子下,ours版本的ctR AUc平均提升1.5个百分点,归因一致性平均提升8.1个百分点,归因稳定性平均提升8.7个百分点。结果稳定,没有异常波动。
林晨把数据整理好,发到了项目群里。然后他给陈博士发了一条消息:陈博,第一轮实验结果出来了,方便的话明天上午碰一下?
陈博士的回复很快:发我数据,我今晚看。明天九点碰。
晚上七点半,林晨本来准备收工了,但消融实验的第一组结果刚出来——去掉可解释性蒸馏损失后,归因一致性和归因稳定性都显着下降,效果指标也回落到了baseline-b的水平。这进一步证明了L_explain的不可替代性。
他忍不住在文档里又多写了几行分析,然后才意识到已经快八点半了。
苏婉的消息进来:几点回来?
九点之前。他回复。
乐乐已经睡了。粥在锅里,回来自己热。
他盯着这条消息看了几秒,忽然有一种微妙的愧疚感。这几天高强度地推实验,回家的时间都比约定的晚了。苏婉没有抱怨,但她的每一条消息都像是一根细线,轻轻地拉着他——别忘了,这里还有人在等你。
九点零五分走出公司大门,比约定晚了五分钟。深南大道上的路灯亮着暖黄色的光,远处的腾讯大厦像一座发光的方碑矗立在夜色中。
他走在回家的路上,脑子里同时转着两件事:明天的消融实验怎么安排,以及回家后怎么跟苏婉解释这五分钟的迟到。
但他心里清楚,这两件事其实是一件事——怎么在追求卓越和守护家庭之间,找到那个帕累托最优的平衡点。
就像他的透明蒸馏模型一样——效果和可解释性,不是非此即彼的零和博弈,而是可以同时提升的。
生活,也应该是这样。
第179章 上线准备
周三上午九点,3号会议室。
陈博士比林晨先到,正坐在会议桌旁翻看打印出来的实验数据。几页A4纸上用红色笔标注了密密麻麻的批注,看得出他昨晚花了时间。
陈博士抬起头,表情看不太出喜怒,数据我看了,先说结论。
林晨坐下来,笔记本摊开。
离线结果不错,效果和可解释性同时提升,这个方向站得住。陈博士放下笔,但是——
他顿了一下,看着林晨。
离线结果不等于线上结果。你知道ctR在离线和线上之间的差异通常有多大吗?
林晨想了想:离线和线上的ctR差异,受特征偏移、数据分布变化、以及用户实时行为反馈的影响,通常会有10%到30%的衰减。
陈博士点头,你的离线ctR提升1.5个百分点,线上可能在这个范围上下浮动。即使考虑衰减,最终线上效果也应该在1到1.5个百分点之间。这个数字在推荐系统里已经很不错了,但前提是——线上表现真的跟离线一致。
他站起来,走到白板前,写下三个词:灰度、监控、回滚。
上线之前,你要回答我三个问题。他放下笔,看着林晨,第一,你的灰度方案是什么?从多少流量开始,怎么放量?第二,你的监控指标有哪些?出了问题怎么第一时间发现?第三,你的回滚预案是什么?如果线上指标崩溃,怎么在最短时间内切回旧模型?
三个问题,像三记闷锤,砸得林晨的脑子嗡了一下。
他昨晚一直在想实验数据,想消融实验的结果,想超参数搜索的策略——但他还没有认真想过上线的事。在他的潜意识里,模型训练完了、效果验证了,上线不就是部署一下的事吗?
但他马上意识到自己错了。上线,才是最关键的一步。
在量化系统里,他也走过同样的路——回测结果再漂亮,实盘第一天就可能出现滑点、延迟、市场风格切换等回测无法预见的问题。推荐系统也是一样,离线指标再好看,线上环境有无数的变量是实验室里模拟不了的。
第一,灰度方案。林晨迅速冷静下来,翻开笔记本开始记录,我的想法是——5%流量灰度三天,观察核心指标;如果指标正常,10%流量再跑三天;然后30%、50%、100%,每次间隔两到三天。整个灰度周期大约两周。
陈博士没有表态,继续问:灰度用户的选取策略呢?随机分流还是按用户特征分层?
我倾向随机分流,但需要排除新用户和高活跃用户两类特殊群体。林晨说,新用户的推荐策略跟老用户差异很大,灰度期间不应该把新用户纳入实验组。高活跃用户对推荐结果更敏感,如果灰度组里高活跃用户占比异常,可能会放大效果。
陈博士微微点头,示意他继续。
第二,监控指标。林晨在笔记本上画了一个分层图,核心指标三层:第一层是业务指标——ctR、cVR、人均消费时长、用户留存率;第二层是模型指标——AUc、NdcG、归因一致性和稳定性;第三层是系统指标——推理延迟、qpS、GpU利用率、错误率。
归因一致性和稳定性怎么在线上监控?陈博士追问。
这个问题让林晨停了几秒。归因指标在离线评估中很容易计算,但线上环境要求实时性,Shapley值计算代价太高——虽然他们用了注意力权重归因的近似方案,但在线上每个请求都做一次归因计算,还是会有额外延迟。
线上不做实时归因计算,林晨想了想,我们在灰度期间对采样日志做离线归因评估。每天凌晨跑一批采样数据,计算归因一致性和稳定性,作为监控的补充维度。实时监控只看业务指标和系统指标。
可以。陈博士终于说了一个肯定的字,采样比例呢?
千分之一。
够了。
第三,回滚预案。林晨翻到下一页笔记,两种回滚方案。方案A:模型热切换,新模型挂载失败时自动切回旧模型,切换时间不超过30秒。方案b:流量回切,灰度期间任何一轮指标异常,立刻将灰度流量切回旧模型,回切时间不超过5分钟。两种方案都需要跟工程侧配合,提前把旧模型的部署包和配置保留在线上。
陈博士没有立刻回应。他走到窗边,看了一眼窗外的南山科技园,然后转过身。
回滚方案A,你考虑了新模型挂载失败的情况,但没考虑新模型挂载成功但效果缓慢恶化的情况。有些问题不是崩溃式的,而是渐进式的——ctR缓慢下降,用户时长逐渐萎缩,等你发现的时候可能已经影响了一大批用户。
林晨愣了一下。他说得对。热切换只能处理灾难性的失败,对于渐进式恶化,需要更灵敏的监控机制。
所以,陈博士走回桌旁,你还需要加一个监控机制——业务指标的同比环比。每天的ctR、cVR、时长,跟灰度前的同一天、同一时段做对比。如果任何指标出现连续两天的同比环比下降超过0.5个百分点,自动触发告警,人工决定是否回滚。
林晨在笔记本上飞快地记下这些要点,内心涌起一股复杂的情绪。他不是没考虑过上线风险——在量化系统里,他对风险的敏感度极高。但推荐系统的上线风险有它自己的特殊性,他还没有完全摸透。
陈博士显然看出了他的心思。
你之前做量化,风控意识很好,但推荐系统的风控跟交易系统的风控逻辑不一样。陈博士的语气缓和了一些,交易系统的风控是止损——出了问题立刻砍仓,损失可控。推荐系统的风控是纠偏——出了问题不能一刀切,因为流量切换本身也有成本。你需要的是渐进式的灰度、细粒度的监控、和快速但不粗暴的回滚。
林晨点头。这些经验,不是技术方案里能写出来的,而是在一次次上线事故中积累的。
回去写一份完整的上线方案,陈博士最后说,包含灰度计划、监控面板、回滚预案、和异常处理流程。写完先给王皓看一遍,他更了解工程侧的情况。然后再发给我review。
从会议室出来,林晨没有直接回工位,而是在走廊上站了一会儿。窗外的阳光照进来,在地板上画出一道明暗分界线。
他想起了老赵说过的——定方向、定标准、兜底。
方向定了,可解释性蒸馏的方向已经验证。
标准——实验指标、评估方法、上线标准——也在一步步建立。
但兜底,他做得还不够。上线方案里的回滚预案、监控机制、异常处理流程,就是兜底的具体体现。陈博士用三个问题帮他看到了这一点。
他回到工位,打开文档,开始写上线方案。
标题:透明蒸馏模型灰度上线方案
他一口气写了两个多小时,从灰度计划写到监控面板配置,从回滚预案写到异常处理流程,从流量分配策略写到数据采样方案。每一个细节都反复推敲,每一个假设都标注了风险点。
写到回滚预案那一段时,他特意加了一个小节:渐进式恶化的识别与处理。这是陈博士提醒他的,他不会忘记。
中间,陆小溪来问了一次:林晨,模型部署的容器化方案我写了一版,你看什么时候review?
先放着,我上线方案写完了一起看。林晨头也没抬。
陆小溪看他写得投入,没再打扰。
张明远也过来问了一次:消融实验的第二组结果出来了,要不要现在看?
发群里,我一会儿看。林晨继续敲键盘。
下午四点,上线方案的第一版完成。林晨通读了一遍,然后在文档最后加了一行:
附录:上线检查清单
他列了十二项检查点,从模型导出格式到日志埋点方案,从A/b实验分流逻辑到灰度切流配置,每一项都标注了负责人和截止时间。
十二项,不多不少。像十二道关卡,每一道都必须通过,模型才能安全地上线。
他把文档发给了王皓,抄送了陈博士。然后长出一口气,靠在椅背上闭了一会儿眼。
上线,是模型从实验室走向真实世界的最后一道门。门这边是干净的实验数据、可控的环境、可重复的实验;门那边是真实的用户、不可预测的行为、和一旦出错就无法收回的影响。
他必须确保,推开这道门的时候,手里握着的是一整套严密的方案,而不是一团模糊的信心。
晚上八点,他准时收拾东西。不是因为上线方案写完了——其实还有细节需要打磨——而是因为他跟苏婉约好了不超过九点。
走出大楼,11号线刚好进站。他挤进车厢,看着窗外的隧道灯光一闪而过。
手机上,王皓的回复已经来了:方案整体oK,有两个工程细节我标注了ment,你明天看。灰度时间线我建议压缩到十天,两周太长了。
林晨想了想,回复:明天上午对齐。
然后他切到家庭群,发了一条:快到家了,今晚讲故事。
乐乐的语音秒回:爸爸!我要听奥特曼打怪兽的故事!
林晨笑了。在他眼里,灰度上线才是真正的打怪兽——那个怪兽的名字叫,而他的武器是十二道关卡和一整套方案。
第180章 成功上线
灰度发布定在周一上午十点。
这是林晨和王皓商量之后定下的时间点。理由很简单——周一是流量最低谷,即使出问题,影响面最小。等过了前三天的低流量灰度,周四开始的10%放量阶段正好赶上流量上升期,能更好地观察模型在高并发下的表现。
整个周末,林晨都在反复检查上线方案。十二项检查清单,他逐条过了一遍,又逐条过了一遍,像考试前反复默写公式的高中生。苏婉看他坐在书桌前对着电脑皱眉头,端了一杯热水放在旁边:放轻松,你已经准备得够充分了。
不是紧张,林晨抬头看着她,是谨慎。上线这种事,准备得再充分都不为过。
苏婉笑了笑没说话,去客厅陪乐乐搭积木了。
周一早上八点,林晨到公司的时候,张明远和陆小溪已经在了。三个人围在林晨工位旁边,像出征前的士兵做最后的检查。
模型包已经部署到预发环境,陆小溪看着她的屏幕,容器化方案跑了两轮预检,没有问题。流量切分逻辑已经配置好了,5%灰度组的用户标签已经生成。
归因指标的离线评估管道已经就绪,张明远接着说,每天凌晨两点跑批,早上出结果。
监控面板呢?林晨问。
陆小溪点开一个链接,监控大屏上密密麻麻排列着各种指标曲线——ctR、cVR、人均时长、留存率、推理延迟、qpS、错误率。每个指标旁边都标着阈值和告警线,任何指标越界就会触发企业微信告警。
王皓昨晚帮忙检查了一遍监控面板配置,陆小溪补充,他说工程侧没问题,随时可以开始。
林晨看了一眼时间,九点四十五分。
我去跟王皓确认最后一遍。他站起来,走向王皓的工位。
王皓正对着屏幕喝咖啡,看到林晨过来,放下杯子:准备好了?
准备好了。林晨把上线方案的最终版递过去,灰度5%流量,初始观察期三天。监控面板已经上线,告警阈值按陈博要求配置。回滚预案两个方案都就绪,旧模型包已保留在线上。
王皓接过方案扫了一眼,然后看着林晨:有个事情提前跟你说——灰度期间如果出问题,你来决定是否回滚。这是你第一次负责上线,但也是你第一次独立做决策。
林晨点头:明白。
不过,王皓的语气缓和了一些,如果你拿不准,随时找我或者陈博。上线决策不是一个人的事,尤其是在t厂,出了问题影响的是整个业务线。
收到。
九点五十五分,三个人回到工位。林晨坐下来,打开集群管理终端,手指放在键盘上。
灰度开始前,最后确认。他看了一眼旁边的张明远和陆小溪,两人都点了头。
十点整。
林晨在终端里输入命令,按下回车。
[INFo] Gradual rollout started: experiment_id=transparent_distill_v1
[INFo] traffic allocation: control=95%, experiment=5%
[INFo] model loaded: transparent_distill_student_v1.0
[INFo] Rollout status: ActIVE
灰度开始了。
他盯着监控面板,ctR曲线在正常波动,推理延迟稳定在12毫秒左右,qpS平稳,错误率为零。五分钟过去,十分钟过去,半个小时过去——所有指标都在预期范围内。
第一轮检查通过,陆小溪看着她的屏幕,5%灰度组的行为分布跟对照组没有显着差异。
林晨没有放松,继续观察。
上午十一点半,第一轮数据采样出来了。ctR比对照组提升了1.9个百分点——比离线测试的1.5个百分点还高,线上实际效果超出了离线预期。
张明远跑完归因指标评估,走到林晨旁边:归因一致性线上采样是0.7741,比离线的0.7823略有下降,但在合理范围内。归因稳定性线上采样是0.7802,同样符合预期。
林晨在心里默默计算——离线到线上的衰减率大约是1%到2%,跟陈博士预估的一致。一切正常。
中午,三个人在工位吃了外卖。林晨一边吃一边盯着监控面板,每隔几分钟刷新一次数据。
你不用一直盯着看,陆小溪说,告警系统会自动通知的。
我知道,林晨放下筷子,但第一天上线,不盯着我心里不踏实。
下午两点,灰度运行四个小时了。所有指标依然平稳,没有异常波动。林晨终于从监控面板前挪开视线,开始整理第一天的灰度报告。
报告里,他把每一项指标都详细记录了下来:业务指标的变化、模型指标的对比、系统指标的稳定性。然后在报告最后写了一行总结:
第一天灰度结论:所有指标正常,符合预期。建议按计划进入5%灰度的持续观察期。
他把报告发到了项目群和上线审批群里,然后给陈博士单独发了一份。
陈博士的回复只有一个字:
这个字,林晨读出了两层意思:一是确认他看了,二是暗示他不打算在中间干预——这是林晨的项目,林晨的决策,林晨的担子。
接下来的三天,5%灰度运行平稳。ctR持续领先对照组约1.8到2.0个百分点,归因指标稳定在预期范围内,系统指标没有异常。
周四,10%灰度启动。
流量翻了一倍,林晨的紧张感也翻了一倍。10%的流量意味着每天有上千万次推荐请求走新模型,任何一个小问题都会被放大。他特意在监控面板上加了一条——同比环比对比,任何指标连续两天下降超过0.5个百分点就告警。
三天过去了,10%灰度依然平稳。ctR优势维持在1.9个百分点左右,没有出现陈博士提醒的那种渐进式恶化。
第二周周一,30%灰度启动。
这一步是关键——30%流量意味着新模型开始影响相当比例的用户群体,任何问题都不再是小范围实验可以忽略的。但数据依然坚挺,没有出现任何异常。
周三,50%灰度。
周五,100%全量发布。
当终端上显示Rollout status: pLEtEd (100%)的时候,林晨盯着屏幕上的那行字看了好几秒。
全量了。
从5%到100%,用了整整两周。每一天他都在盯着数据,每一个异常波动他都追根溯源,每一次放量他都在心里过了一遍回滚预案。两周的灰度期,他没有睡过一个踏实觉,每天凌晨两点的归因评估报告他都会看一遍才安心。
而现在,模型全量上线了。所有指标符合预期,没有回滚,没有事故。
他转头看了一眼张明远和陆小溪。张明远正在给归因指标做最后一轮评估,陆小溪在确认全量发布后的系统日志。
全量了,林晨说,声音不大,但工位旁边的两个人都听到了。
张明远放下手里的笔,露出一个如释重负的笑:终于。
陆小溪摘下眼镜擦了擦,嘴角微微上扬:嗯,终于。
林晨靠在椅背上,看着天花板上的日光灯管发了几秒钟呆。然后他拿起手机,给苏婉发了一条消息:项目上线了,一切顺利。
回复来得很快:恭喜!今晚庆祝?
他想了想:好,回家吃饭。
然后他又给陈博士发了一条:陈博,透明蒸馏项目全量上线完成,所有指标符合预期。
这次陈博士的回复不是,而是三个字:做得好。
林晨看着这三个字,心里涌起一股热流。
在t厂,陈博士很少表扬人。能从他嘴里听到做得好三个字,比拿到任何奖状都重。
晚上回到家,苏婉做了一桌菜——可乐鸡翅、糖醋排骨、清炒西兰花、还有一个西红柿蛋汤。乐乐坐在餐桌旁,举着筷子喊:爸爸回来啦!妈妈说爸爸今天打败了大怪兽!
林晨把乐乐举起来转了一圈:打败了,爸爸打败了一个叫的怪兽。
上线怪兽长什么样?
长这样——林晨做了个龇牙咧嘴的表情,有5%那么小的时候很可爱,长到100%的时候就变得特别吓人。
乐乐咯咯笑。
苏婉在旁边摇头:跟五岁小孩说什么5%。
吃饭的时候,林晨难得喝了一杯啤酒。苏婉看着他,眼神里有一种安安静静的骄傲。
你这几天瘦了,她夹了一块排骨放到他碗里,多吃点。
灰度期间压力大,睡眠不太好。
以后每次上线都这样?
林晨想了想:第一次上线最紧张,以后会好一些。
那就好。苏婉笑了一下,没有多说。
晚上,乐乐睡着之后,林晨坐在书桌前,打开笔记本,写下了一段话:
透明蒸馏项目,从立项到全量上线,用了不到三个月。模型效果:ctR提升1.9个百分点(线上),归因一致性提升7.4个百分点,归因稳定性提升8.2个百分点。灰度发布:5%-10%-30%-50%-100%,总时长两周,无回滚,无事故。
他停笔,看着这几行字。
这是他在t厂的第一个核心项目。从调研到方案、从实验到上线,每一步都走得踏实。没有投机取巧,没有蒙混过关,每一步都有数据支撑,每一个决策都有方案兜底。
他用一种前所未有的方式证明了自己——不是靠一个人的孤军奋战,而是靠一个团队、一个平台、一套体系。
合上笔记本,窗外的鹏城夜色如墨。远处11号线的末班列车滑过天际,车窗里的灯光像一串流动的星星。
第一个核心项目,成功了。
但心里那个微小的声音告诉他——这只是开始。
第181章 团队认可
周四下午三点,AI平台部周会。
林晨提前五分钟到了大会议室,坐在靠墙的第三排。这个位置是他一贯的选择——不在最前面抢风头,也不在最后面划水,正好能看清投影幕,也能观察全场反应。
会议室里陆续坐满了人。张明远坐到了林晨旁边,手里攥着一个笔记本,明显有点紧张。陆小溪坐在前排靠走道的位置,表情一如既往的淡然,但她的笔记本已经翻开了,钢笔放在旁边——这在她是专注的准备状态。
今天周会,陈博要讲透明蒸馏的事。张明远小声说。
我知道。林晨的声音很平。其实他不知道陈博士会在周会上怎么讲——是简单通报一下项目进展,还是深入讨论技术细节,或者……
他没往那个方向多想。在t厂,事情做完了就是做完了,不需要额外的仪式感。
三点整,陈博士走进会议室,手里拿着平板。他扫了一眼全场,走到投影幕前,没开ppt,直接在白板上写了几个字:
透明蒸馏项目——阶段复盘
上周,透明蒸馏项目完成了全量上线,陈博士的语调一如既往的平稳,像在念一份天气预报,ctR线上提升1.9个百分点,归因一致性提升7.4个百分点,归因稳定性提升8.2个百分点。灰度期间无回滚,无事故,全量发布后系统指标平稳。
他说这些数字的时候,会议室里很安静。几十双眼睛盯着白板上的字,有些人开始在座位上低声交流。
1.9个百分点?坐在前排的推荐系统组的老周转过头来,看着旁边的人,这个提升幅度,在轻舟项目里算什么水平?
算很高的了,旁边的人低声回答,你想想,轻舟项目做蒸馏优化做了快半年,之前的最佳结果也才1.2个百分点。
陈博士没有理会底下的低语,继续说:我想借这个机会,讲讲这个项目为什么做得好。
他在白板上写了两行字:
靠谱、技术强
然后他转过身,看着全场:这两个词,是我对林晨这个项目负责人的评价。
林晨的心跳快了一拍。他没想到陈博士会这么直接。
靠谱,陈博士在下面画了一条横线,不是说他没犯过错——实验过程中消融实验的参数配置出过一次问题,他当天发现当天修正,没有拖到第二天。上线方案的灰度计划,初版是两周,王皓建议压缩到十天,他跟王皓对齐之后当天就改了方案。监控面板的告警阈值,他不是拍脑袋定的,是根据陈博的要求做了同比环比分析之后才定下来的。
他顿了顿:靠谱不是不犯错,而是犯了错能快速修正,出了问题能及时兜底。
会议室里有几个人在点头。
技术强,陈博士在技术强下面又画了一条横线,这个更直观。透明蒸馏的核心创新点——可解释性蒸馏损失函数,从架构设计到实验验证,每一步都有数据支撑。消融实验证明L_explain的不可替代性,超参数搜索找到了效果和可解释性之间的帕累托前沿,上线方案的十二项检查清单一项不缺。这不是靠运气做出来的项目,是靠技术判断力和执行力做出来的项目。
他说到这里,目光扫过全场,最后落在了林晨身上。
林晨,你站起来说两句。
林晨愣了一秒。他没准备发言——他以为陈博士只是在周会上通报一下项目进展,没想到会被点名。
但他还是站了起来。在几十双眼睛的注视下,他没有立刻说话,而是看了一眼旁边的张明远和陆小溪。
陈博说的靠谱和技术强,不是我一个人的,他的声音不高,但会议室很安静,每个字都听得清楚,这个项目三个人——我负责架构,张明远负责可解释性模块,陆小溪负责数据管道和模型部署。明远的归因一致性评估脚本,是整个消融实验的关键依赖;小溪的数据管道,保证了训练和灰度期间零故障。没有他们两个,这个项目不可能按时上线。
张明远在旁边低下了头,耳朵有点红。陆小溪推了推眼镜,嘴角动了一下。
另外,林晨继续说,上线方案的很多细节是陈博和王皓帮我补充的。灰度期间的同比环比监控机制,是陈博提出来的;灰度周期的压缩建议,是王皓提的。我负责架构和技术路线,但项目的成功是团队的结果。
他说完,坐了下来。会议室里安静了两秒,然后掌声响了起来。
不是那种礼貌性的鼓掌——林晨能听出来,有些人的掌声是真诚的,带着一种这小子确实做得不错的认可。
陈博士也在鼓掌。他的表情没怎么变,但眼神里有一种林晨没见过的东西——不是满意,不是欣慰,更像是一种确认。确认这个人确实靠得住,确认这个判断没有错。
掌声持续了大约十秒,然后陈博士轻轻抬手,会议室恢复了安静。
陈博士在白板上画了一个对号,透明蒸馏项目进入稳定运维阶段。林晨,你这边开始准备季度复盘报告,把项目的关键技术决策和实验结果整理成文档,作为轻舟项目的技术沉淀。
好的。
下一个议题——陈博士翻到下一页,周会继续。
林晨坐在自己的座位上,手里转着笔,脑子里却还在回放刚才的几秒钟。
陈博士说的时候,他没什么特别的感觉——靠谱是对做事方式的要求,他一直就是这么做的,从量化系统到透明蒸馏,方法在变,习惯没变。
当陈博士说技术强的时候,他心里有一瞬间的波澜。技术强——这三个字,从一个行业顶尖的技术总监嘴里说出来,分量不轻。他不是那种随便夸人的领导,每次表扬都有具体的事实和数据支撑。
他想起自己刚进t厂的时候——一个月前?不,更久了。他第一次走进这栋大楼,第一次在开放工区坐下来,第一次看轻舟项目的技术文档,第一次觉得推荐系统的水比量化交易还深。那时候他不确定自己能不能在这里站稳脚跟,不确定自己的技术判断力能不能在新领域里成立,不确定自己能做出什么样的东西。
现在,他做出了。
不是靠一个人的蛮力,而是靠一个团队、一个平台、一套体系。但核心的架构设计和技术路线,是他从零到一推出来的。那份技术方案上的每一个字,每一行公式,每一个实验设计,都带着他的判断力和思考深度。
周会结束,人群散去。张明远走在林晨旁边,脸上还带着刚才的兴奋。
林晨哥,刚才陈博说的那些,你配得上。张明远的语气很认真,架构设计、实验方案、上线计划……这些确实是你主导的。你不用太谦虚。
林晨笑了一下:我不是谦虚,是事实。你做的归因评估,确实是消融实验的关键依赖。没有你那套评估框架,我们没法证明L_explain的不可替代性。
张明远挠了挠头:那……谢谢林晨哥认可。
陆小溪从前面走过来,表情还是淡然的,但说话的时候语气比平时柔和了一点:项目做完了,接下来是不是可以稍微轻松一点?
轻松不了,林晨摇头,项目上线只是第一阶段,后面还有稳定运维、效果追踪、技术沉淀。而且——他顿了一下,陈博让我准备季度复盘报告,这个月底之前要交。
那也是好事,陆小溪说,说明项目被重视。
回到工位,林晨打开邮件,发现收件箱里多了十几封新邮件——都是周会之后同事们发来的祝贺。有些人他认识,有些人只是面熟,有些人名字都没见过。
他一封一封地回复,措辞都很简单:谢谢,项目能成功是团队的努力。
回复完最后一封邮件,他靠在椅背上,看着窗外渐暗的天空。
鹏城的黄昏来得很快,远处的南山轮廓在暮色中模糊了。11号线的列车在远处滑过,像一条发光的蜈蚣。
他拿起手机,给苏婉发了一条消息:今天周会上,陈博表扬了透明蒸馏项目。
苏婉的回复:我就说嘛,你靠谱。
林晨看着这条消息笑了。靠谱——苏婉也这么说。也许在这两个字的背后,不只是做事方式,而是一个人对另一个人最基本的信任。
乐乐发了一条语音消息:爸爸!妈妈说你打败了大怪兽,你是不是很厉害!
他录了一条回复:还行吧。不过爸爸不是一个人打败的,是跟两个同事一起打败的。
发完之后,他打开文档,开始写季度复盘报告的第一行。
键盘声融入了周围此起彼伏的敲击中。开放工区的灯光亮了起来,像一片安静的星海。
他坐在星海中间,感到一种久违的踏实感。不是那种做到了的兴奋,而是站稳了的安心。
在t厂站稳了。
下一步呢?
他没想好。但文档的光标在闪烁,催促着他继续写下去。
第182章 绩效考核
十一月中旬,鹏城的秋天迟迟不退,白天还有二十六七度,但早晚的凉意已经藏不住了。林晨每天骑共享单车从地铁站到公司,十分钟的路程,刚好把晨间的倦意吹散。
周一早上九点,他刚坐下打开电脑,企业微信就弹出一条消息。是hR系统发来的——
2024年q3季度绩效考核已启动,请于11月18日前完成自评。评估周期:7月1日-9月30日。请登录绩效系统填写。
林晨盯着这行字看了两秒。
来了。
上次陈博士让他准备季度复盘报告的时候,他就隐约感觉到了——复盘报告跟绩效考核脱不了干系。在t厂,季度复盘不是单纯的技术文档,而是绩效评估的重要依据。你做了什么、怎么做的、结果如何,全写在复盘报告里,到考核的时候就变成了自评的底稿。
他点进绩效系统,页面跳出来一个表单。q3季度自评,分四个模块:项目贡献、技术能力、团队协作、成长与规划。每个模块下面又有若干子项,要填具体的事实描述,不能只写空话。
项目贡献那一栏,林晨几乎没有犹豫。透明蒸馏项目,从调研到上线全周期,他写了两千多字。不是泛泛的总结,而是每个阶段的关键产出:技术方案的架构设计、可解释性蒸馏损失函数的推导、消融实验的参数设计、上线方案的十二项检查清单、灰度期间的监控机制。每一条后面都附了对应的文档链接和代码仓库地址。
写到技术能力的时候,他停了几秒。怎么写才能既客观又不过分?他想了想,把陈博士在周会上说的那两个词写进去了——靠谱、技术强。然后补了一句:陈博在AI平台部周会上公开评价,详见周会纪要。
团队协作那栏,他写了跟张明远、陆小溪的分工协作,也写了王皓和陈博士的指导。没有刻意突出自己,但每一个关键节点的决策者都写得很清楚。
最后一栏成长与规划,他写了一段简短的话:从量化交易转行到推荐系统领域,q3完成了领域知识迁移,下一个季度重点放在可解释性方向的深度拓展和团队技术影响力建设上。
写完自评,他从头到尾检查了一遍。措辞克制,数据详实,没有夸大,也没有谦虚过头。这是他在t厂学会的第一课——自评不是谦虚的地方,也不是吹牛的地方。你的自评要经得起校准会议上的质询,每一个数据都要有据可查。
提交之后,他长出了一口气。
接下来的几天,是主管评分阶段。
王皓约了林晨周四下午一对一沟通。地点是楼下的咖啡厅,t厂内部的,叫极客咖啡,拿铁十八块一杯,比外面的manner还贵一块钱。
林晨到的时候,王皓已经坐在角落的位置了,面前放着一杯美式,手里拿着平板——上面是绩效系统的页面。
王皓抬了抬下巴,示意对面。
林晨坐下来,没有点咖啡。一对一的时候喝什么都无所谓,重要的是谈话内容。
自评我看了,王皓开门见山,写得不错,数据扎实。但我有几个地方想跟你确认一下。
你说。
第一个,你写主导架构设计和技术路线,这个的边界在哪里?陈博在前期给过方向性的指导,这个你怎么看?
林晨想了一下:陈博给的是方向——可解释性蒸馏的可行性判断。但具体怎么实现、损失函数怎么设计、实验方案怎么跑,这些是我做的。指的是执行层面的主导,方向层面确实是陈博定的。
王皓点了点头:好。那你自评里技术能力那项打的是超出预期,我理解你的理由,但我想确认一下——你觉得自己超出预期的点在哪里?
两个点,林晨说,第一,我三个月前还在做量化交易,现在独立负责推荐系统的一个核心子项目,领域迁移的速度超出预期。第二,透明蒸馏的可解释性蒸馏损失函数,是原创性的工作,不是在已有方案上做微调。
王皓听完了,沉默了几秒。他在平板上写了几行字,然后抬起头:你说的这两点,我认同。但我需要提醒你——超出预期这个档位,在校准会议上会被challenge。不是说你不够格,而是新人拿超出预期,评审委员一定会问凭什么。
我理解。林晨说。
所以,王皓放下平板,我给你的评分是——项目贡献:超出预期。技术能力:符合预期偏上。团队协作:符合预期。综合——A-。
A-。
林晨的心跳微微加速了一拍,但脸上没什么变化。
A-在t厂的绩效体系里是什么概念?S是杰出,A是优秀,A-是良好偏上,b+是良好,b是合格,c是不合格。一个入职才三个多月的新人,能拿A-,已经是相当不错的成绩了。
你觉得这个评分怎么样?王皓问。
林晨想了想:客观来说,我觉得合理。我的贡献集中在项目上,团队协作和文化建设方面确实投入不够。A-的综合性是准确的。
王皓笑了一下:你倒是想得明白。有些人听到A-就开始跟我争,说凭什么不是A。
争也没用,林晨说,校准会议是看数据说话的。
王皓收起笑容,校准会议下周二开。各部门的主管和总监坐在一起,把所有人的绩效过一遍。陈博会替你说话,但你自评里的数据得经得起推敲。我看了你的自评,没什么问题。
林晨点头。他没有追问更多。
离开咖啡厅之前,王皓叫住了他:对了,陈博让我转告你一句话——A-已经很好了,新人能拿A-不容易。
林晨愣了一下。这是陈博士的原话。
新人能拿A-不容易——在t厂,新人通常第一个季度是b+到b的水平。因为新人有学习成本,对团队的贡献需要时间才能体现。能拿到A-,意味着你在入职的前三个月就做出了超出平均水平的贡献,而且这个贡献被数据验证了。
林晨走出极客咖啡,站在t厂大楼的一楼大堂里,看着玻璃幕墙外面科技园的车流。
A-。
他心里没有不甘,反而有一种踏实的满足感。这个成绩不是从天而降的,是他在三个月里一行一行代码、一个一个实验、一份一份文档攒出来的。每一个加班的晚上,每一次反复检查的上线方案,每一轮跟张明远和陆小溪的对齐,都变成了这个A-的基石。
他拿出手机,给苏婉发了一条消息:季度考核结果出来了,A-。
苏婉回得很快:厉害了!A-是什么水平?
新人里面算很好的了。
苏婉发了一个竖大拇指的表情,然后是一条语音:今晚加个菜?
林晨笑了,回了一个字。
回到工位上,他看到张明远正对着电脑屏幕发呆,脸色有点凝重。
怎么了?林晨走过去问。
我的绩效出来了,张明远抬头,语气有点低落,b+。
林晨拍了拍他的肩膀:b+也挺好的,你来了才一年多。
我知道,但总觉得跟你比差了一截。张明远小声说。
不一样的,林晨认真地看着他,你是支持角色,我是项目负责人,评分标准不一样。你做的归因评估框架,在整个部门都是最好的,这个不需要绩效等级来证明。
张明远点了点头,表情稍微松弛了一些。
下午五点,林晨收到一封邮件。是hR系统发来的绩效确认通知——
林晨,你的q3季度绩效等级为:A-(良好偏上)。请于11月22日前确认。
他点开确认页面,A-两个字在屏幕上安安静静地亮着。没有多余的解释,没有花哨的配色,就是两个字,加一个破折号。
他点了确认。
关掉页面之后,他靠在椅背上,看了一眼窗外。鹏城的天际线在夕阳下镀了一层金色,远处的深圳湾大桥像一条细细的丝线。下班的人流开始从写字楼里涌出来,科技园的路面上很快堵成了一条红白相间的长龙。
A-。不算惊艳,但足够扎实。
三个月前,他还坐在同一栋楼里,对着轻舟项目的技术文档一字一句地啃。三个月后,他用一个核心项目的成功上线,在这个体系里刻下了自己的名字。
这不是终点,甚至不是起点。这只是第一张成绩单。
他拿起手机,翻了一下日历。十一月底了。
再过几天,就是年终奖的通知。
第183章 年终奖消息
十一月底的鹏城,空气里终于有了一丝凉意。科技园的路边,紫荆花开得正盛,粉红色的花瓣铺了一地,踩上去软绵绵的。
林晨端着咖啡从茶水间回来,路过张明远的工位,看到他正在刷公司内网。
看什么呢?林晨随口问了一句。
你看这个。张明远把屏幕转过来,是公司内网的一则公告——《关于年度绩效考核与年终奖发放的通知》。
林晨凑近看了几眼。通知写得四平八稳,但关键信息很明确:年度绩效考核结果将于12月中旬公布,年终奖将在1月中旬随工资发放。绩效等级对应的年终奖月数范围:S级6-8个月,A级4-6个月,b级2-4个月,c级0-1个月,d级无年终奖。
你还看这个干什么?林晨笑了一下,老员工了,每年不都差不多?
今年不一样。张明远压低声音,听说公司整体业绩不错,年终奖池子比去年大了不少。而且今年AI平台部是重点部门,可能会倾斜。
林晨没接话,端着咖啡回到自己工位。他打开内网,仔细把通知又看了一遍。
入职三个多月。按常理说,新入职员工不满半年的,年终奖是按比例折算的。他8月入职,到年底才四个多月,就算绩效是A,可能也就拿一两个月的年终奖。
但他还是忍不住算了一笔账。如果按A-绩效对应4个月来算,折算后大概是1.3个月。1.3个月乘以52K,那就是六万出头。不算多,但也不少了——够乐乐上一年幼儿园的费用。
他在心里笑了一下。以前做量化的时候,看不上这种,现在居然开始用幼儿园学费来衡量了。但这不是小气,而是心态变了。有了稳定收入之后,每一笔钱都有了具体的去处,不再是账户上跳动的数字,而是生活的支点。
下午三点,王皓召集组内开会。会议主题是项目进度同步,但聊到尾声的时候,王皓主动提了一句年终奖的事。
你们应该都看到内网通知了,王皓靠在椅背上,语气随意,我就说一点——今年是我们AI平台部第一次作为独立部门参与年终考核,陈博已经在管理层会议上为我们部门争取过了。大家好好做手头的事,结果不会差。
许悦在旁边小声问了一句:王哥,新入职的同事有吗?她说这话的时候,眼神往林晨这边瞟了一下。
王皓看了林晨一眼,说:按比例折算,不满半年折算。具体比例要等hR最终确认,但不会完全没有。
林晨点了点头,表示知道了。他没有追问更多。
散会后,陆小溪走到他工位旁,递过来一杯酸奶:你看起来不怎么关心?
关心啊,林晨接过酸奶,插上吸管,但关心也没用,该多少是多少。现在最重要的是把透明蒸馏的线上效果跑稳了,其他的随缘。
你心态真好。陆小溪叹了口气,我刚工作两年,还没拿过年终奖呢。之前在创业公司,到年底连工资都差点发不出来。
那这次应该能有一笔了。林晨说,你来了大半年,至少能拿两三个月的。
陆小溪眼睛亮了一下,旋即又恢复平静:先不想了,跑实验要紧。
傍晚下班,林晨走出t厂大楼,夜色已经笼罩了科技园。他给苏婉发了条消息,问她晚饭想吃什么。
苏婉回了一条语音:随便,你决定。对了,今天乐乐幼儿园交了下一学期的学费通知,一万二。
一万二。林晨在脑子里快速算了一下——年终奖如果能有六万,交完学费还剩4万多。加上这个月的工资和投资收益,年底应该能稳稳当当过。
他没有回复这条消息,而是在心里默默盘算了一下投资系统的最新状况。总资产上周刚过110万,这个月市场行情不错,如果不出意外,到年底应该能再涨一些。
走到地铁站的时候,手机震动了一下。是部门大群的消息——有人转发了一篇公众号文章,标题是《大厂年终奖排行榜2024,谁在狂欢谁在过冬?》。评论区已经炸了,各种猜测和讨论刷屏。
林晨扫了一眼,没有参与讨论。他想起自己第一次拿年终奖的时候,还是十多年前在跨境电商公司,拿了两个月工资的年终奖,激动得请同事吃了一顿火锅。后来金额越来越大,反而没有那种纯粹的快乐了。
不是钱不重要了,而是期待值变了。以前觉得年终奖是额外的奖赏,现在觉得是自己应得的回报。以前一年到头就盼这一笔钱,现在年终奖只是收入的一部分,还有工资、还有投资收益。
但他知道,对大多数同事来说,年终奖还是很重要的。张明远刚买了房,每月房贷一万多,年终奖是他一年里最大的一笔可支配收入。许悦刚毕业不久,还欠着助学贷款。陆小溪从创业公司跳过来,可能连信用卡还没还清。
他的手机又震了一下。这次是陈博士发来的私聊消息,只有一句话:年终奖的事别多想,安心做项目。你今年的表现,我看在眼里。
林晨看着这条消息,沉默了几秒。
然后他回复了两个字:收到。
地铁到站了,他收起手机,走进车厢。车窗外,鹏城的夜色像一幅流动的画,万家灯火和霓虹交织在一起。他靠着扶手站着,心里很平静。
年终奖有多少,那是结果。过程是他这三个月做出来的——从入职第一天的小心翼翼,到独当一面负责可解释性方向,再到透明蒸馏项目的成功上线。每一步都是实打实的,不是靠运气,也不是靠关系。
他想起老赵曾经开玩笑说的那句话:在大厂,绩效是打出来的,年终奖是等出来的。你把活干好了,钱自然就来了。
钱自然就来了。说起来简单,但背后是无数个深夜和周末的付出。
地铁在隧道里穿行,灯光忽明忽暗。林晨闭上眼睛,嘴角微微上扬。
这个年底,应该不会差。
但他不知道的是,还有另一个跟钱有关的机会,正在悄悄靠近他。
第184章 技术委员会
周一早上,林晨的邮箱里多了一封未读邮件。
发件人是t厂技术委员会,标题是《关于2024年度内部技术论文征集的通知》。
他点开邮件,仔细阅读。t厂有一个内部技术委员会,每年年底会征集各业务部门的技术论文,评选出优秀论文,获奖者不仅能拿到奖金,还会在年度技术大会上做分享。今年特别增加了一个新规则:通过初审的论文作者,需要在公司内部做一次技术分享,面向全公司技术团队。
林晨的目光停在最后一行:优秀论文一等奖奖金5万元,二等奖3万元,三等奖1万元。此外,通过初审的论文作者可获2000元分享补贴。
五万。这个数字让他眨了一下眼。不是因为它多——相比投资系统的月收益,五万不算什么——而是因为它代表一种认可。在大厂,技术委员会的评价是硬通货,比绩效等级更有说服力。一篇获奖论文,意味着你的技术成果被整个公司的技术社区看见了。
他靠在椅背上,开始思考有没有什么值得投稿的内容。
投资系统?不行。那是他个人的项目,里面的交易策略和风控逻辑不适合在公司内部公开。虽然他之前做过一次技术分享,但那次讲的是通用方法论,没有涉及具体策略细节。
透明蒸馏项目?可以,但项目刚上线不久,数据还不够丰满,写论文还为时过早。
那还能写什么?
他在脑子里过了一遍自己过去几个月做的事情。入职初期的可解释性调研报告、透明蒸馏的技术方案、投资系统的架构设计……突然,一个念头闪过脑海。
他之前的量化投资系统,虽然策略细节不能公开,但系统的整体架构——尤其是AI驱动的多策略融合框架、动态风控体系、以及可解释性在金融决策中的应用——这些内容完全可以抽象成一个通用的技术论文,不需要暴露任何交易策略。
他打开电脑里的投资系统文档,翻出之前写的架构设计笔记。那份笔记已经有些陈旧了,是他在学习AI的早期写的,但核心思路一直没有变:数据层、策略层、执行层、风控层。如果把具体的交易策略替换成抽象的决策模块,把金融风控的逻辑提炼成通用的异常检测与自恢复框架,这不就是一篇很好的技术论文吗?
更重要的是,这份论文可以和他在t厂做的可解释性工作形成呼应——投资系统的风控诊断和推荐系统的归因解释,底层逻辑是相通的。技术是相通的,陈博士说过的话再次在他脑海里回响。
他越想越兴奋,打开一个空白文档,开始列大纲。
论文标题:《AI量化交易系统的工程实践:多策略融合、动态风控与可解释性决策》
大纲框架:
引言:AI在金融决策中的应用现状与挑战
系统架构:多策略融合的分层设计
动态风控:基于统计分布的异常检测与自恢复机制
可解释性决策:从黑箱到透明——让系统告诉你为什么
实验验证:回测结果与线上运行数据
结论与展望:可解释性在AI系统中的跨领域价值
写到第五部分的时候,他犹豫了一下。线上运行数据——这部分涉及投资收益,不能直接写出来。但他可以用归一化的方式呈现:收益率曲线、回撤曲线、夏普比率,这些指标在学术论文中很常见,不需要暴露具体金额。
他花了两个小时,把大纲写完,检查了两遍,然后给陈博士发了一封邮件:
陈博,技术委员会在征稿,我想投一篇关于AI量化系统的工程实践论文,核心思路是把投资系统的架构和可解释性设计抽象成通用的技术框架,不涉及具体策略。大纲附后,请过目。
邮件发出后不到十分钟,陈博士的回复就来了。
思路可以。但注意两点:一是不要暴露任何敏感的金融数据,二是在论文中要体现出和t厂业务的关联——纯讲量化系统,跟t厂有什么关系?建议加一节,讨论可解释性在推荐系统中的迁移价值。你正好做了轻舟项目的可解释性方向,这就是最好的桥梁。
林晨看着这条回复,心中一凛。陈博士果然站位更高——他光想着把投资系统的技术抽象出来,却忘了最重要的一点:在t厂投稿,论文必须和t厂的业务有关联性。纯粹讲量化系统,评审会问这跟我们的业务有什么关系?
他立刻修改了大纲,在第五部分和第六部分之间加了一节:跨领域迁移:从金融风控到推荐系统可解释性。这一节的内容恰好可以把他做轻舟项目的经验和投资系统的设计连接起来——动态风控和推荐系统的稳定性保障,可解释性归因在金融决策和推荐解释中的共性。
修改完大纲,他长出一口气。这份论文,不再只是我做了什么,而是我能为t厂带来什么。
他抬头看了看工区,张明远在工位上写代码,陆小溪在调实验参数,王皓在会议室里打电话。一切如常。
但林晨知道,从今天开始,他要同时做两件事:推进透明蒸馏的线上优化,以及准备这篇技术论文。时间很紧——投稿截止日期是12月20号,只有不到三周。
他在日历上标注了几个关键节点:12月5日前完成初稿,12月10日前完成修改,12月15日前提交陈博士审阅,12月20日正式投稿。
时间很紧,但并非不可能。毕竟,这篇论文的素材他已经在脑子里积累了很久,只是缺少一次把它们组织起来的契机。
现在,契机来了。
下午,他去茶水间倒水的时候,遇到了老赵。老赵看到他,咧嘴一笑:听说你要投技术委员会的稿?
消息传得这么快?林晨有些意外。
技术委员会每年就征这么一次稿,全公司都盯着呢。老赵压低声音,我跟你说,去年一等奖是个做基础设施的团队,他们的论文后来发在了SoSp上。今年竞争更激烈,你准备投什么方向?
AI系统架构和可解释性。林晨简短回答。
老赵挑了一下眉:有意思。可解释性这个方向今年很热,但做的人还不多,你有先发优势。好好写,搞不好能拿个奖。
林晨笑了笑,没再多说。但老赵最后那句话,让他心里多了一分期待。
不是对奖金的期待——五万块虽然不少,但对他来说不算什么。而是对被看见的期待。三个月前,他还是一个刚入职的新人,在会议室里小心翼翼地发言;三个月后,他要站在全公司技术社区的面前,讲自己的技术思考。
这种变化,让他有一种说不出的踏实感。
回到工位,他打开文档,在标题下面加了一行小字:
目标:通过初审,做一次分享。
然后他删掉了这行字,重新写了一行:
目标:让更多人看到技术的可能性。
第185章 内部分享
论文投稿后的第十天,林晨收到了技术委员会的邮件。
邮件很简短:您的论文《AI量化交易系统的工程实践:多策略融合、动态风控与可解释性决策》已通过初审。请于12月28日下午2:00,在总部b座大礼堂进行技术分享,时长45分钟,含提问环节。
通过初审了。
林晨看着这封邮件,心跳快了半拍。他做了充分的心理准备——通不过也无所谓,写论文本身就是一次梳理和提升——但真的看到通过初审这四个字的时候,他还是感到了一种不同于投资收益的兴奋。投资系统赚的是钱,论文通过赚的是认同。钱可以默默积累,认同却需要被看见。
他立刻给陈博士转发了邮件。陈博士的回复依然是简短的三个字:好好讲。
接下来的一周,林晨进入了高强度的准备模式。
白天推进透明蒸馏的线上优化,晚上回家写论文修改稿,周末还要准备分享的ppt。苏婉看他每天晚上都在书房对着电脑,忍不住问了一句:又在加班?
不是加班,是准备一个分享。林晨头也没抬,正在调整ppt里一个架构图的箭头方向。
什么分享?
公司技术委员会的,我投了一篇论文,通过了初审,要做一次分享。
苏婉走到他身后,看了一眼屏幕上密密麻麻的架构图和公式,轻轻拍了一下他的肩膀:加油。但是别熬太晚,乐乐昨天问你怎么不陪他做实验了。
林晨抬头,对上妻子的目光。苏婉的眼神温柔但认真,意思是我支持你,但别透支。
知道了,今晚十一点前收工。
准备分享的过程比写论文更磨人。论文是写给专业人士看的,可以用密集的信息量和严谨的逻辑;分享是讲给一百多号人听的,需要让每个人都能跟上节奏,还能在关键时刻记住你的核心观点。
他在ppt的第一页放了一张图:一个人的大脑和一台计算机并排站在一起,中间打了一个问号。标题是:当AI做决策时,你信任它吗?
这是一个开放性的问题,也是他整场分享的核心线索——AI系统的价值不只是做得快做得准,还在于做得明白。
ppt的结构他改了三版。第一版太技术化,满屏都是公式和架构图;第二版太故事化,像在讲创业经历而不是技术分享;第三版终于找到了平衡点——每页最多一个核心概念,配一个具体的案例,用大白话讲清楚是什么为什么,技术细节留给论文本身。
他还专门准备了一个现场演示:用投资系统的风控模块实时展示异常检测与自恢复的过程。当然,他用的是脱敏后的历史数据,不涉及任何真实交易。但数据的走势、异常点的标记、自动止损的触发——这些是真实的系统行为,不是ppt动画。
12月28日,下午两点。
总部b座大礼堂。林晨站在讲台侧面,看着台下陆陆续续坐满的座位。他数了一下,至少来了一百二十人。AI平台部的同事几乎全到了,还有不少其他部门的——基础设施部、数据平台部、搜索推荐部,甚至有几个他没见过的面孔。
张明远和陆小溪坐在第三排,冲他竖了个大拇指。许悦坐在第五排,手里拿着笔记本。老赵靠在最后一排的墙上,双手抱胸,一脸我来看看你行不行的表情。陈博士坐在第一排靠边的位置,面前放着一杯茶,表情平静。
王皓也在,坐在侧面,低着头看手机——大概率在处理什么紧急消息,但至少来了。
两点整,技术委员会的主持人上台,简短介绍了分享规则,然后报出主题:下面有请AI平台部的林晨,分享《AI量化交易系统实战:从黑箱到透明》——大家欢迎。
林晨深吸一口气,走上讲台。
聚光灯打下来,他面前是一百多双眼睛。ppt的第一页亮起来:当AI做决策时,你信任它吗?
大家好,我是AI平台部的林晨。今天我要讲的是一个关于信任的故事。
他停顿了一下,让这句话落地。
我之前自己做过一个量化交易系统。这个系统每天做上百笔交易决策,涉及A股、期货、期权和黄金。系统跑了一年多,年化收益还不错——具体多少我不方便说。台下传来一阵轻笑。
但我今天不是来吹牛的。我想讲的是另一个问题:当系统赚到钱的时候,你知道它为什么赚了吗?当系统亏钱的时候,你知道它为什么亏了吗?
他切换到下一页,上面是投资系统的一个风控告警截图——红色标记的风险评分突变,旁边是一段自动生成的诊断报告。
这是系统在某个周五下午自动触发的减仓信号。如果只看数字,它只是告诉你。但如果系统同时告诉你——卖出是因为检测到主力资金连续三天净流出,且融券余额快速上升——你是不是更有信心执行这个决策?
台下有人在点头。
这就是可解释性的价值。它不改变决策本身,但改变了人对决策的信任程度。在金融领域,信任意味着敢下注;在推荐系统里,信任意味着敢上线。
接下来他花了二十分钟讲系统架构、多策略融合、动态风控,每一个技术点都配了一个具体的案例。讲风控的时候,他用了基于AtR的动态止损作为例子,台下有几个做推荐系统稳定性的同事明显眼睛亮了——他们也有类似的动态阈值问题。
讲到最后,他切换到跨领域迁移的页面。
这是我目前在做的事情。屏幕上出现了轻舟项目的可解释性架构图,和投资系统的风控架构图并排放在一起,左边是推荐系统的可解释性模块,右边是金融风控的自诊断模块。它们看起来完全不同,但底层逻辑是一样的——都是让系统从告诉你结果告诉你为什么
技术是相通的。不同的领域,同样的追求:让AI不只是快,还要让人看得懂、信得过。
他看着台下,声音稍微提高了一点:我相信在座的每一位工程师,不管你做的是推荐、搜索、基础设施还是安全,你最终面对的都是同一个问题——用户愿不愿意信任你的系统。可解释性不是锦上添花,是信任的基石。
他停下话头,看了一眼时间。四十三分钟,还有两分钟留给提问。
我的分享就到这里。谢谢大家。
掌声比他预期的来得更早、更响。有人开始举手。
第一个提问的是数据平台部的一个工程师,问他风控模块的实时性怎么保证——延迟是多少毫秒。林晨如实回答:策略信号到执行指令,全链路延迟在200毫秒以内。但金融交易对延迟的要求比推荐系统低得多,推荐系统的实时性挑战更大。
第二个问题来自搜索推荐部的一位女生,她问可解释性蒸馏的损失函数怎么设计。这个问题直接指向透明蒸馏的核心创新,林晨心里暗喜,但回答得很克制:这个我正在做,核心思路是在蒸馏过程中同时传递归因信息,具体方案等论文正式发布后再详细分享。
第三个问题更出乎意料——一个做金融科技业务的同事问:你说的量化系统架构,如果用来做面向普通投资者的智能投顾产品,可行吗?
林晨愣了一下。这个问题他没想过——他的系统是给自己用的,从来没想过做产品。但他几乎是本能地回答:架构上是可行的。多策略融合和动态风控是通用能力,不需要改造就能适配不同场景。关键是合规和风险适配——零售产品的风控要求比个人投资严格得多。
提问环节超时了五分钟,主持人不得不宣布结束。但散场之后,还有七八个人围过来继续交流。
林晨站在大礼堂中央,被一群人包围着。有人要他的ppt,有人想约一对一交流,有人问他有没有考虑过开源系统架构。他一一回应,交换了联系方式,脑子飞速运转,努力记住每个人的名字和部门。
人渐渐散去。陈博士走过来,拍了拍他的肩膀:不错。尤其是跨领域迁移那一段,把两个系统放在一起讲,比单讲一个有说服力。
谢谢陈博。林晨说。
陈博士点了一下头,转身离开。老赵从后面走过来,难得正经地说了一句:林晨,你今天这分享,至少让三个部门的人记住你了。
林晨笑了笑,收起电脑。走出大礼堂的时候,他回头看了一眼那个讲台。聚光灯已经关了,椅子被工作人员一张张收起,场地在恢复安静。
四十五分钟。一百二十个人。一个关于信任的故事。
他不知道的是,今天这场分享,会给他带来一个完全意想不到的转折。
第186章 跨部门合作
分享会结束的第三天,林晨的企微上出现了一个陌生的头像。
发消息的人叫周琳,职位写着金融科技部·产品总监。消息很简短:林晨你好,看了你的技术分享,很有启发。方便的话,这周约个时间聊聊?
林晨看着这条消息,手指悬在屏幕上方。
金融科技部。他对这个部门有印象——t厂内部做金融相关业务的部门,主要做的是支付、保险和理财类的产品。之前在公司内网上看到过他们的技术博客,讲智能投顾和风险评估系统的架构设计。
他回复:可以,周五下午有空。
周琳很快回了消息:那周五下午三点,我们部门会议室见。我发定位给你。
周五下午两点四十五分,林晨走出电梯,来到了b座十二楼。
金融科技部的办公区和AI平台部完全不同。AI平台部是典型的工程师风格——工位密集、线缆横飞、白板上永远写着公式和架构图。金融科技部的办公区更像一个金融公司——会议室有玻璃隔断,墙上挂着产品海报和数据看板,茶水间里摆着咖啡机和零食柜。
前台把他领到一间名叫陆家嘴的会议室。名字很有意思——鹏城的互联网公司,用上海金融中心的街道给会议室命名,有一种微妙的行业自觉。
会议室里已经有三个人。
坐在主位的是周琳,三十出头,短发,穿着深蓝色的职业装,笑起来眼睛弯弯的,但目光很锐利。旁边坐着一个戴眼镜的男生,看起来二十五六岁,胸牌上写着刘畅·量化策略工程师。最外面坐着一个四十出头的男人,胸牌上写着赵磊·合规风控负责人。
林晨,坐。周琳站起来和他握手,力度适中,不软不硬,我看了你那天在大礼堂的分享,说实话,很久没在公司的技术分享上听到这么接地气的内容了。
过奖。林晨坐下,扫了一眼会议室里的白板,上面画着几个产品架构草图,有些地方被擦掉了,留下淡淡的笔迹。
先介绍一下,周琳指了指两位同事,刘畅是我们做量化策略的,赵磊是负责合规风控的。今天请他们一起来,是因为我们想聊的事情跟三方面都有关系。
她打开笔记本电脑,调出一页ppt。上面是一个产品概念图:一个手机界面,中间是一个简洁的仪表盘,左边显示资产配置,右边显示风险指标,底部有一行字——AI投顾助手,让每一步都有据可依。
这是我们现在在做的项目——小t智投周琳说,定位是面向大众投资者的智能投顾产品。不是给专业交易员的,是给普通用户的——月薪一万也想理财的那种。
她切到下一页,是系统架构图,但很多地方标着红色问号。
我们现在的系统架构,她指着那些红色问号,前端和产品层做得差不多了,但核心的智能决策引擎还差一口气。具体来说,我们缺两样东西:第一,一个能融合多种策略的决策框架——不是单一模型拍脑袋,而是多个策略综合判断。第二,一个能让用户信任的解释模块——不能只告诉用户建议你买这个,还得告诉他为什么建议你买这个
林晨听到这里,心跳加速了一拍。
多策略融合。可解释性。
这不就是他在分享会上讲的那两样东西吗?
你那天分享的内容,周琳看着他,多策略融合和动态风控是你在投资系统里做过的,可解释性是你现在在AI平台部做的方向。我们的需求,恰好就是这两块能力。
刘畅接过话头:目前我们自己的量化策略能力是有的,但策略之间是割裂的——A股策略、债券策略、商品策略各自跑各自的,没有融合。你说得多策略融合框架,我们之前也想过,但一直没有找到一个好的架构方案。
赵磊在旁边补充:合规方面也有要求。证监会去年出了新规,要求智能投顾产品必须向用户披露投资建议的依据和风险来源。说白了,就是不能当黑箱用。这个跟我们产品定位是冲突的——用户想要简单的建议,但监管要求我们解释清楚。可解释性不是锦上添花,是合规必需品。
林晨听完,沉默了几秒钟。
他的脑子在飞速运转。多策略融合,他在投资系统里确实做过,而且做得很好。可解释性,他正在轻舟项目里深入做。如果把这两个能力结合起来,适配到金融科技的场景里,这就是一个完整的智能投顾决策引擎。
但问题也很明显。
第一,他的投资系统是个人项目,虽然架构思路可以复用,但具体策略和代码不能直接拿过来用。需要重新设计和实现。
第二,跨部门合作意味着要占用他在AI平台部的工作时间。轻舟项目还在线上优化阶段,透明蒸馏的消融实验也在推进,他不可能放下手头的事全职投入。
第三,也是最关键的——他需要陈博士的同意。
我理解你们的需求,林晨开口了,语气比他的心跳要平稳,多策略融合和可解释性确实是智能投顾的核心能力。但我有几个问题。
你说。周琳做了个的手势。
第一,这个合作的范围是什么?是 consultancy 形式的——我给你们提供架构咨询和算法支持,还是 joint project——两个部门共同开发?
我们倾向于joint project,周琳说,核心算法由你负责,产品化和合规由我们负责。知识产权归公司所有。
第二,我的时间怎么分配?我在AI平台部还有本职工作。
这个我们需要和陈博协商,周琳很坦诚,理想情况是你每周投入两到三天在跨部门项目上,剩下时间回AI平台部。但具体怎么安排,我们听陈博的意见。
林晨点了点头。这个安排还算合理,但他知道陈博士的态度才是关键。
第三,他顿了一下,我需要回去跟我的导师商量。这件事不是我一个人能决定的。
周琳笑了:当然。我理解。你回去跟陈博聊,如果他有任何问题,可以直接联系我。
她从包里拿出一张名片递给林晨。名片很简洁,白底黑字,只有一个名字、一个职位和一个企微号。
林晨接过名片,扫了一眼。周琳,金融科技部,产品总监。
会议室门开了,刘畅站起来送他。走到门口的时候,刘畅压低声音说了一句:我们团队确实需要你的帮助。这个项目如果做成了,对公司的金融业务影响很大。
林晨点了点头,没有多说什么。
走出b座大门,鹏城十二月底的空气有些冷。科技园的路灯亮起来了,照出一片暖黄色的光。他站在路边,深吸了一口气。
跨部门合作。多策略融合。可解释性。智能投顾。
每一个词单独拿出来都让他兴奋,但合在一起,意味着更多的工作、更复杂的关系、更大的不确定性。
他掏出手机,给陈博士发了一条消息:陈博,方便的时候想跟您聊一件事。金融科技部找我谈合作,想让我参与他们的智能投顾项目。
回复来得很快,只有四个字:明天上午。
林晨收起手机,走向地铁站。夜色中,他的脚步比平时快了一些。
不是因为焦虑,而是因为期待。
第187章 陈博的支持
第二天上午十点,林晨走进陈博士的办公室。
陈博士的办公室不大,但收拾得井井有条。书架上摆满了技术书籍和论文集,桌上放着一台笔记本和一杯永不离手的茶。窗台上有一盆多肉植物,是陈博士女儿去年教师节送的,长得很好,圆润的叶片在晨光里泛着浅绿色。
陈博士指了指对面的椅子。
林晨坐下,把昨天和金融科技部沟通的情况从头到尾说了一遍。他讲得很详细——周琳是谁,小t智投是什么产品,他们缺什么,想要什么合作方式,提出了什么条件。
陈博士一直听着,没有打断。手里端着茶杯,偶尔喝一口,目光平静。
等林晨说完,办公室里安静了几秒钟。
你怎么看?陈博士问。
林晨想了一下,说:从技术角度看,这个合作的匹配度很高。多策略融合是我做过的,可解释性是我正在做的。两块能力结合起来,适配到金融场景里,技术上是可行的。
从个人角度呢?
我也想参与。林晨坦诚地说,这个项目能让我把投资系统的架构思路在更大的场景里验证,也能让可解释性的工作有一个落地的出口。不只是论文和实验,而是一个真正的产品。
陈博士放下茶杯,靠在椅背上。
我问你一个问题,他的语气很认真,你觉得参与这个项目,会不会影响你在轻舟项目上的投入?
这是林晨预料到的问题。他提前想好了回答。
会有影响,但可控。轻舟项目目前进入了线上优化和迭代阶段,核心框架已经跑通了,日常的维护和消融实验可以让明远和小溪推进,我负责方向把控和关键决策。这样腾出来的时间,可以投入到跨部门项目。
你确定明远和小溪能扛住?
明远的技术成长很快,消融实验的设计他完全可以独立完成。小溪虽然来得晚,但执行力很强,数据管道和实验环境搭建她已经在做了。林晨说得很具体,而且,我每周至少有三天时间还是在AI平台部。跨部门合作不是让我搬过去,是让我两边跑。
陈博士没有立刻回答,而是站起来走到窗前,看着窗外的南山科技园。冬天的鹏城依然满眼绿色,只是天色有些灰蒙蒙的。
林晨,陈博士的声音从窗边传来,你知道我为什么愿意给你那么多资源和支持吗?
林晨想了想,说:因为……我的方向和您的期望一致?
不完全是。陈博士转过身来,是因为你不是一个只顾自己一亩三分地的人。你做可解释性,不只是为了完成项目指标,而是在思考这个方向对整个行业有什么价值。你在分享会上把投资系统和推荐系统放在一起讲,说明你看得到技术在不同场景之间的流动性。
他走回桌前,重新坐下。
金融科技部找你合作,这是好事。说明你的技术影响力已经超出了AI平台部的范围,开始辐射到其他业务线。对一个入职不到半年的新人来说,这很难得。
林晨听到这里,心里稍微松了一口气,但紧接着又绷紧了——因为他知道要来了。
但是,陈博士果然加了这个词,有几个前提。
他伸出三根手指。
第一,轻舟项目是你在AI平台部的根基。不管跨部门合作多忙,轻舟项目的进度和质量不能下滑。这是底线。
我保证。
第二,跨部门合作的知识产权归公司所有,这一点你心里要有数。你在投资系统上的经验是你的个人能力,但如果在合作项目中产生了新的算法或架构,归属权在公司。你不会因为这个项目获得任何额外的股权或收益。
我理解。林晨点头。这一点他早就想过——在t厂做的任何项目,知识产权当然归公司。他的投资系统完全是个人的,和公司无关;但跨部门项目是公司内部的,产出的成果自然属于公司。
第三,陈博士收起两根手指,只留一根,你是一个人,不是一台机器。现在你手里有三件事——轻舟项目的线上优化、技术委员会的论文、跨部门的合作项目。论文还有两周就到截止日了,跨部门项目才刚开始。你告诉我,你扛得住吗?
林晨沉默了几秒钟。
他扪心自问。说实话,这三件事加在一起,工作量确实不小。但时间线是错开的——论文截止在两周内,写完就结束了;跨部门项目要等论文提交后才会正式开始;轻舟项目的优化已经在稳定推进,不需要他全天盯守。
扛得住。他说,论文两周内完成,之后专注轻舟和跨部门项目。时间上不冲突。
陈博士看了他五秒钟,像是在确认他说的是不是真心话。
然后他点了点头:那就去做吧。
林晨心里一块石头落了地。
不过,陈博士又加了一句,我有一个条件。
您说。
你在跨部门项目里的角色,不只是一个算法工程师。你代表的是AI平台部的技术能力。做出来的东西,不是金融科技部独享的,要让整个公司看到AI平台部的价值。明白吗?
林晨明白了。陈博士的意思是——这个合作不是简单的你帮他们做项目,而是一次部门间的技术展示。如果做得好,AI平台部在公司的影响力会更大,以后会有更多的跨部门合作机会。
明白。林晨郑重地点头。
那就去谈吧。陈博士端起茶杯,吹了吹茶面上的热气,有什么进展,随时告诉我。
走出陈博士办公室的时候,林晨感觉脚步轻了不少。不是因为这个合作本身——虽然项目确实让他兴奋——而是因为陈博士的态度。
他没有说,没有说等等看,甚至没有说先把手头的事做完再说。他说的是那就去做吧,然后加了一些条件。这些条件不是障碍,而是方向。
在职场里,领导的支持有很多种形式。给你资源是支持,给你时间是支持,帮你扫清障碍是支持。但最有力的一种支持,是告诉你去做吧,出了事有我。
陈博士今天说的,就是这种支持。
回到工位,林晨给周琳发了一条消息:陈博同意了,有几个前提条件,我整理一下发给你。
周琳的回复很快:太好了!我这边也跟总监汇报过了,全力支持。具体条件我们下次开会详聊。
林晨放下手机,看了看桌上摊开的技术文档和论文初稿。轻舟项目、技术论文、跨部门合作——三根线拧在一起,每一根都不能松。
他打开日历,把接下来一个月的时间线重新排了一遍:
12月30日前:完成论文终稿并提交。 1月第一周:轻舟项目消融实验结果分析。 1月第二周起:跨部门项目正式启动。
排完时间线,他在笔记本上写了一行字:
三线并进,不落一子。
然后他合上笔记本,开始改论文的第四版。
下午四点,手机响了。是苏婉的语音消息:乐乐今天幼儿园有元旦活动,老师说要家长准备一个才艺表演。你要不要参加?
林晨对着手机笑了一下,回复:参加。我表演什么呢?
苏婉回了一个语音:你不会忘了你小时候学过吉他的吧?唱首歌呗。
他看着屏幕,摇了摇头。三线并进已经够忙了,还要加一个才艺表演。但这是乐乐的元旦活动,不能缺席。
他又在日历上加了一行:12月31日,乐乐幼儿园元旦活动,才艺表演。
时间线更紧了,但每一天都被填得满满当当的,反而有一种奇怪的充实感。不是焦虑的忙,而是有方向的忙。
陈博士说得对——他不是一台机器。但他可以是一台精密的机器,每一秒都在做有价值的事。
窗外的阳光透过百叶窗,在他的键盘上投下整齐的光影。林晨低头,继续敲字。
第188章 跨部门项目启动
元旦假期后的第一个周一,上午十点,b座十二楼陆家嘴会议室。
林晨比约定时间早到了十分钟。推开门的时候,周琳已经在里面了,正对着笔记本电脑修改ppt。看到他进来,她合上电脑,站起来握手。
新年好,周琳笑着说,假期休息得怎么样?
还行,陪孩子参加了个元旦活动。林晨把电脑包放在桌上,取出笔记本电脑。
听说你吉他弹得不错?周琳的语气带着一点玩笑。
林晨愣了一下,旋即明白是许悦说出去的。他在乐乐幼儿园的元旦活动上唱了一首《童年》,没想到传到了同事耳朵里。
只是会弹几首,不算专业。他岔开话题,今天参会的都有谁?
我这边四人,周琳数着手指头,我负责产品方向,刘畅负责量化策略,赵磊负责合规风控,还有一个新面孔——王婷,我们的前端负责人,负责用户交互和可视化。你那边呢?
就我一个人。林晨说。
周琳微微一愣,随即理解了:陈博的意思是,先由你一个人对接,后续根据需要再加人?
对。先跑通核心架构,再考虑团队扩充。
陆陆续续,其他人到了。刘畅还是那副认真而略带拘谨的样子,进门后先打了一圈招呼,然后安静地坐在角落翻笔记。赵磊拿着一个厚厚的文件夹,看起来是合规相关的文档。王婷是个三十出头的女生,短发,穿格子衬衫,进门就问wiFi密码,然后连上投影开始调试。
人齐了,周琳开场。
好,今天是小t智投项目的第一次正式会议,她在白板上写下项目名称,目标是在三个月内完成核心决策引擎的搭建,六个月内上线灰度版本。今天主要确认三件事:项目范围、分工安排和里程碑节点。
她先回顾了产品定位:小t智投面向的是大众投资者,不是专业交易员。用户画像是月薪八千到两万的白领,可能有一点基金或股票经验,但没有时间和能力做深度研究。他们需要一个简单、可信赖的投资助手,告诉他们买什么买多少什么时候卖,最重要的是——为什么
她在白板上画了一个用户旅程图:注册 → 风险评测 → 方案推荐 → 持续跟踪 → 调仓提醒。每一步旁边都标着可解释性触点。
每一步都需要可解释性。她指了指那些标记,合规要求,也是用户体验的要求。用户只有理解了为什么,才会信任系统,才会真正执行建议。
接下来是技术架构讨论。
刘畅先介绍了现有的策略体系:我们目前有四个策略模块——资产配置策略、A股选股策略、债券配置策略和商品轮动策略。每个策略独立运行,输出各自的信号,然后在最上层做一个简单的加权平均。
简单加权?林晨插了一句。
对,就是按固定比例加权。刘畅有些不好意思,我们之前也想过动态融合,但一直没有找到好的方案。固定比例虽然粗糙,但至少稳定可控。
固定比例的问题在于,林晨直接说,不同市场环境下,不同策略的有效性是变化的。牛市里权益策略应该权重大,熊市里债券策略应该权重高。固定比例无法适应这种变化。
刘畅点头:我知道,所以才需要你。
林晨打开自己的笔记本电脑,投出一页架构图。这是他昨晚画的,基于投资系统的多策略融合框架,做了一些适配性改造。
我初步想了一个架构方案,他指着投影,核心是一个三层结构:信号层、融合层和决策层。
信号层接收各个策略模块的原始信号,包括方向、强度和置信度。注意,不只是买卖方向,还有每个策略对自身信号的置信度评估——如果市场波动太大,策略可以主动降低置信度,告诉融合层这个信号不太靠谱
赵磊在旁边插了一句:这个置信度评估,是否可以理解为策略对自己的判断做了解释?
可以这么理解。林晨说,置信度本身就是一种简化的可解释性。它告诉用户这个策略有多确定,而不是只给一个非黑即白的推荐。
赵磊在笔记本上记了一笔,这跟合规要求的披露依据和不确定性是对得上的。
林晨继续讲融合层:融合层是核心。我建议用一个注意力机制来做动态权重分配——不是固定比例,而是根据当前市场环境和各策略的历史表现,实时计算每个策略的融合权重。表现好的策略权重自动上升,表现差的自动下降。这就是多策略融合的关键。
注意力机制?刘畅皱了皱眉,用在策略融合上?这不是做推荐系统才用的吗?
思路是一样的。林晨说,推荐系统用注意力机制判断用户对不同内容的关注程度,策略融合用注意力机制判断不同策略在当前环境下的可靠性。底层逻辑是统一的——动态分配权重,让最相关的信号占据主导。
有意思。刘畅的表情从不以为然变成了认真思考。
最后是决策层:决策层做两件事。第一,把融合后的信号转化为具体的投资建议——买什么、买多少、什么时候卖。第二,为每一个建议生成可解释性报告——为什么推荐这个标的、依据了哪些策略、每个策略的贡献度是多少、风险来源是什么。
他在白板上画了一个示例:
推荐:中证500指数基金 配置比例:30% 策略依据:A股选股策略(贡献度45%)、资产配置策略(贡献度35%)、债券配置策略(贡献度20%) 风险提示:当前市场波动率较高,建议分批建仓
这就是最终用户看到的东西。林晨放下白板笔,不是一行冷冰冰的建议买入,而是一份完整的决策报告。用户能看懂,合规能通过,系统也有据可查。
会议室里安静了几秒钟。周琳看着白板上的示例,嘴角微微上扬。
这正是我们想要的。她说。
接下来是分工讨论。经过半小时的讨论,各方达成了初步分工:
林晨(AI平台部):负责核心算法——多策略融合框架和可解释性生成模块。 刘畅(金融科技部):负责策略模块的适配——现有四个策略需要改造输出格式,增加置信度评估。 王婷(金融科技部):负责前端交互和可视化——可解释性报告的展示形式、用户交互流程。 赵磊(金融科技部):负责合规审核——确保产品输出满足证监会的披露要求。 周琳(金融科技部):产品整体把控——需求管理、进度协调、上线节奏。
里程碑节点也定了下来:
1月底:完成核心算法设计文档
2月底:完成融合层和决策层的原型
3月底:端到端联调,内部测试
4月底:灰度上线
时间紧不紧?周琳问林晨。
算法层面,两个月出原型是可以的。林晨想了想,但我有一个要求——策略模块的改造必须同步推进,不能等算法做完了再回头改策略。融合层需要标准化的信号输入,如果策略端不配合改造,算法就没法跑。
没问题,刘畅说,策略改造我可以同时开始。你给我一个信号输出格式的规范,我按规范改。
林晨点头:好,我这周把信号格式规范写出来,发给你。
会议结束时,已经快十二点了。赵磊收起他那厚厚的合规文件夹,王婷在白板上拍了照片,刘畅还在笔记本上画着什么。周琳站起来,走到林晨面前。
林晨,有件事我想确认一下,她的语气变得正式,陈博那边,对你在项目里的定位是什么?是技术顾问,还是联合负责人?
林晨想了想陈博士说的话——你代表的是AI平台部的技术能力。
联合负责人。他说,算法层面由我主导决策,产品层面由你主导。但项目整体是两个部门共同负责。
周琳点了点头,伸出右手:那就合作愉快。
林晨握了握她的手。力度适中,不软不硬。
走出会议室,他看了一眼手机。苏婉发了一条消息:今天中午乐乐学校有家长开放日,你参加不了了吧?
他回复:参加不了,开跨部门的会了。晚上我接乐乐,带你和乐乐出去吃。
苏婉回了一个微笑的表情。
他收起手机,走进电梯。电梯从十二楼下到一楼,数字在屏幕上快速跳动。
12...11...10...
跨部门项目正式启动了。从今天开始,他不再只是AI平台部的一个算法工程师,而是两个部门之间的一座桥。
桥的两头,一边是AI技术的深度,一边是金融产品的广度。
而他自己,正站在桥的中央。
电梯到达一楼,门开了。鹏城一月的阳光照进来,明亮而温暖。他走出电梯,深吸了一口气。
接下来三个月,会是他入职以来最忙碌的一段时间。但忙碌本身不是问题,方向对了就行。
他掏出手机,在日历上标注了四个里程碑节点,然后给陈博士发了一条简短的消息:项目启动会完成。分工和里程碑已确认,进展随时同步。
陈博士的回复还是那么简短:收到。加油。
林晨笑了笑,走出大楼,迎着冬天的阳光。
第189章 工作强度
周一早上九点,林晨的日历已经排满了。
上午十点,透明蒸馏项目的周会;下午两点,跨部门金融项目的需求对齐会;晚上七点,还有一组消融实验的数据要分析。三个时间块像三座山一样挤在一天的日历里,中间几乎没有喘息的缝隙。
他端着咖啡走进3号会议室,张明远和陆小溪已经到了。白板上还留着上周的实验数据——消融实验的第二轮结果刚刚出炉,透明蒸馏框架在去掉特征蒸馏损失后,ctR下降了0.8%,归因一致性下降了15%。数据清晰地证明了两件事:特征蒸馏损失有用,可解释性蒸馏损失更有用。
明远,第二轮消融的数据你看了吗?林晨坐下来,打开笔记本。
看了,张明远推了推眼镜,可解释性蒸馏损失去掉之后,归因一致性下降15%,这个降幅比预期还大。说明我们的可解释性蒸馏确实在起作用。
好消息。林晨点头,但这还不够。我们需要在第三轮实验里证明,加上可解释性蒸馏不会显着影响ctR——也就是说,可解释性不是以牺牲效果为代价换来的。
二十分钟的周会,高效地过了一遍进度和下周计划。林晨在笔记本上划掉几个已完成的任务,又添上几个新的。会议结束时,他看了看手机,已经十点二十了,离下午的需求对齐会只有不到四个小时,中间还有一段代码要写。
回到工位,他一头扎进代码里。透明蒸馏框架的注意力头选择模块需要优化——上一轮实验里,低熵头的筛选阈值设得太低,导致保留了太多噪声头。他把阈值从0.3调到0.2,重新跑了一遍离线评估,归因一致性从72%提升到了78%。
他在实验记录本上写下这组数据,画了个圈标重点。
午饭是在工位上解决的。外卖盒打开的时候,他还在看跨部门金融项目的产品文档。这个项目就是小t智投——金融科技部主导的智能投顾产品,林晨负责核心算法和多策略融合框架的设计。
他一边吃一边在文档上做标注:产品需求第三条,投资建议的归因解释覆盖率不低于90%——他画了个圈,这是透明蒸馏的强项,完全对得上。第五条,策略融合响应时间不超过200ms——这个约束直接影响模型选择,深度模型的推理延迟必须控制在阈值以内。
下午两点的需求对齐会在金融部门那边的会议室,他走了十分钟才到。金融部门的同事坐在长桌对面,清一色西装革履,和他这边的t恤牛仔裤形成鲜明对比。
林工,我们这边的合规要求是,模型必须有可解释性输出——不能只给用户一个建议买入建议卖出的判断,还要告诉用户为什么。金融科技部的产品经理周琳说,三十出头,说话干脆利落。
可解释性?林晨心里一动,这不就是他正在做的透明蒸馏吗?
对。证监会对智能投顾产品有可解释性要求,用户有权知道投资建议的依据和风险来源。周琳翻开一份文件,这是最新的监管指引,第三条明确要求算法决策应当具备可解释性
林晨认真看了一遍指引,脑子里已经在飞快地对接——透明蒸馏框架的可解释性蒸馏损失,天然可以迁移到智能投顾场景。教师模型给出归因,学生模型保留归因,完美契合。
这个需求我们可以满足,林晨说,而且我的透明蒸馏项目刚好在做可解释性蒸馏,技术方案可以复用。
周经理眼睛一亮:真的?那进度可以快很多。
技术方案可以复用,但业务适配需要时间。信贷风控的特征空间和推荐系统完全不同,归因逻辑也不一样。林晨补充道,我需要两周时间做业务适配和效果验证。
可以。周琳在笔记本上记下来。
会议结束后,林晨走在回工区的路上,脑子里两个项目的思路在交织。透明蒸馏的实验数据,小t智投的业务需求,注意力头选择的阈值调整,可解释性输出的合规要求——两条线像dNA双螺旋一样缠绕在一起,看似独立,实则相通。
回到工位,他坐下来整理今天的会议纪要。写到一半,陈博士走过来。
林晨,小t智投那边怎么样?
刚开完需求对齐会,林晨站起来,有个好消息——金融部门要求模型必须具备可解释性输出,这跟透明蒸馏的技术路线完全契合,方案可以复用。
陈博士点头,但你要注意精力分配。两个项目并行,核心项目不能掉。
明白。林晨说,透明蒸馏是核心,小t智投是延伸。我不会本末倒置。
陈博士看了他一眼,没有多说,转身走了。
晚上八点,办公室里还有三分之一的人在。林晨盯着屏幕上两组实验数据的对比曲线,手指在键盘上飞快地敲着分析报告。消融实验的第三组数据今晚要出结果,他不想等到明天再看。
九点半,手机震动。苏婉发来一条消息:什么时候回来?乐乐已经睡了。
林晨看了一眼时间,回了一条:还有一会儿,不用等我。
十点,实验结果出来了。可解释性蒸馏损失保留的模型,ctR只比完全不加的版本低了0.3%,但归因一致性高了18%。这个trade-off非常划算——用0.3%的ctR换来18%的归因一致性提升,性价比极高。
他站起来,伸了个懒腰。办公室里只剩下零星几个人,灯光映在玻璃窗上,映出他疲惫但满足的脸。
走出t厂大楼,鹏城的夜风带着一丝凉意。他深吸一口气,感到一种奇特的充实——身体是疲惫的,但精神是饱满的。两个项目并行确实辛苦,但这种大脑被充分使用的感觉,让他想起了失业那段时间的空虚和焦虑。那时候是闲得发慌,现在是忙得踏实。
打车回家,路过海岸城,霓虹灯在夜色中闪烁。他靠在座椅上,闭了闭眼,脑子里还在回旋着白天的两个会议、三组实验、四条需求。
到家已经十点半。苏婉在客厅等他,茶几上放着一杯温热的牛奶。
又加班到这么晚?苏婉的语气不是责备,是心疼。
项目多,赶进度。林晨坐下来,拿起牛奶喝了一口。
那明天呢?
明天应该也差不多。
苏婉叹了口气,但没有多说什么。她理解他——从失业到现在,他比任何人都珍惜这份工作,也比任何人都拼命。
林晨喝完牛奶,走进书房,打开笔记本写了两行字:
透明蒸馏消融实验第三轮:ctR下降0.3%,归因一致性提升18%。 小t智投可解释性需求与透明蒸馏技术路线高度契合。
两行字,两个项目,一条线。他合上笔记本,走进卧室。乐乐的小小身躯蜷在被子里,呼吸均匀。
他在床边站了一会儿,然后轻手轻脚地上了床。
明天还有两场会,三组实验,五封邮件要回。但他并不觉得厌烦——恰恰相反,他乐在其中。
因为每一行代码、每一组数据、每一次深夜的加班,都在把他推向一个更清晰的方向。
第190章 半年总结
入职半年整。
林晨坐在3号会议室里,面前摊着一份打印出来的半年总结文档。他习惯性地把重要的东西打印出来看——纸上比屏幕上有质感,圈画标注也更方便。文档的右上角写着日期,距他第一次走进t厂大楼,整整六个月。
六个月。
他把文档翻回第一页,从头看起。
一、项目贡献
可解释性模块(轻舟项目):完成架构设计和工程实现,在线推理延迟控制在30ms以内,归因一致性从0提升到72%。这是他入职后的第一个项目,从零到一,从调研到落地,全程主导。
透明蒸馏项目(轻舟子项目):提出可解释性驱动的模型蒸馏框架,设计三部分损失函数(输出蒸馏损失、特征蒸馏损失、可解释性蒸馏损失),带领三人小组完成基线实验和消融实验。消融实验证明,可解释性蒸馏损失以0.3%的ctR代价换取了18%的归因一致性提升,性价比极高。
风控鹰项目(跨部门合作):负责算法设计,完成需求对齐和技术方案初稿。发现金融部门对可解释性的合规需求与透明蒸馏技术路线高度契合,提出方案复用策略,节省了至少两周的开发时间。
三项项目,从模块到架构到跨部门,从执行到设计到协调,技术深度和广度都在拓展。
二、技术成长
他在下面列了几个关键点:
大规模分布式训练:从单机训练到8卡A100集群,学会了分布式训练的资源调度和性能优化。
推荐系统工程化:从理论到落地,理解了线上系统的延迟约束、A/b测试的分流策略、监控告警的设计。
可解释性前沿:从零开始研究可解释性蒸馏,读了超过80篇论文,输出了两份调研报告,正在形成自己的技术观点。
项目管理和团队协作:从一个人干到带领三人小组,学会了任务拆解、进度把控和风险预案。
最后一条,是他之前最不擅长、也最不重视的。但透明蒸馏项目让他明白了一件事——技术好只是个人的事,带团队做成项目才是更大的事。
三、影响力
技术分享AI量化交易系统实战:听众超过100人,获得年度最佳技术分享提名。
技术委员会初审通过:投资系统的技术论文通过公司内部初审,等待终审。
跨部门合作:金融部门主动找上门,认可他在可解释性和量化模型方面的专业能力。
影响力这个东西,不是刻意追求来的,而是把事情做好之后自然生长出来的。就像一棵树,根扎得深了,枝叶自然繁茂。
林晨把文档翻到最后一页,上面只有一行字:
半年前,我是个刚入职的新人,什么都不懂,什么都要问。半年后,我带了自己的项目,有了自己的团队,有了自己的技术方向。
他拿起笔,在后面加了一行:
但我知道,这才刚开始。
写完半年总结,他靠在椅背上,望着窗外。鹏城科技园的午后阳光从云层里穿透出来,落在对面大楼的玻璃幕墙上,折射出一片金色的光。
他想起六个月前入职第一天——拿着工卡站在t厂大楼前拍照,手心都是汗。那时候他不知道自己能不能融入这个团队,不知道自己的技术能不能跟上,不知道那个可解释性模块的小需求能不能做好。
现在回头看,那些担心不是多余的。刚入职的前两个月,他确实很挣扎——代码规范不熟悉、内部工具不会用、团队节奏跟不上。但他没有被焦虑吞没,而是一点一点地学,一个一个地啃。就像他当初学AI时的状态一样——不看终点有多远,只看脚下这一步。
陈博士推门进来,看到他在发呆。
总结写完了?
写完了。林晨把打印版递过去。
陈博士接过来,站在窗边快速扫了一遍。他的阅读速度很快,不到三分钟就看完了六页纸。
写得不错。他把文档放在桌上,特别是项目贡献那一栏,数据支撑很扎实。消融实验0.3%对18%的trade-off,这个数据很有说服力。
谢谢陈博。林晨说。
但有一个问题。陈博士看着他,半年总结不只需要回顾过去,还需要展望未来。你的文档里,对未来的规划只有一句话——这才刚开始。太模糊了。
林晨想了想:您说得对。我对未来确实没有想得很清楚——两个项目并行,光是眼前的事就已经够忙了。
所以才更需要想清楚。陈博士坐下来,你现在做的事情,可解释性蒸馏、风控鹰,都是点上的突破。但如果你把这些点连成线,再从线看到面,你会发现一个更大的机会。
什么机会?林晨问。
AI的可解释性,不只是推荐系统或信贷风控的需求,它是整个AI行业向可信AI演进的必然方向。监管在推,用户在要,技术在成熟。你现在做的这些事,如果串起来,就是一条完整的技术路线——从方法到系统到应用。
陈博士站起来,走到白板前,画了三个圈,分别标注(透明蒸馏)、(风控鹰的工程化)、(信贷风控的可解释性审核)。三个圈的交集处,他画了一个星号。
这个交集,就是你的技术护城河。陈博士放下马克笔,别人懂蒸馏,不懂可解释性;别人懂可解释性,不懂蒸馏。你两者都懂,而且能打通。这就是你的差异化。
林晨看着白板上的三个圈,脑子里像被一道光照亮了。他之前只想着把手头的项目做好,没有跳出来看全局。但陈博士说的对——这三件事不是孤立的,而是一条完整的技术脉络。如果他能把这条脉络讲清楚、做扎实,那他不只是t厂的一个项目骨干,而是可解释AI这个方向上的技术专家。
我明白了。他说,半年总结里,我会加上对未来的规划。
不急,想清楚了再写。陈博士拍了一下他的肩膀,你做得很好。继续。
走出会议室,林晨回到工位,打开投资系统看了一眼。总资产:118万。这个月收益4.5%,和上个月差不多。系统依然在稳定运行,不需要他额外操心。
他关掉投资系统的面板,重新打开半年总结文档。在未来展望那一栏里,他敲下了第一行字:
短期(6-12个月):完成透明蒸馏项目的A/b测试和效果评估,推进风控鹰项目的落地。
中期(1-2年):形成可解释性+蒸馏的完整技术方案,争取在顶会上发表一篇有影响力的论文。
长期(3年以上):成为可解释AI方向的技术专家,在行业里有话语权。
三行字,三个阶段,从点到线到面。他看着屏幕上跳动的光标,感到一种久违的清晰感——不只是知道下一步做什么,而是看到了一整条路的方向。
下午五点,他合上笔记本,收拾东西。今天要准时下班——苏婉说过,半年总结写完那天要庆祝一下,乐乐说要做火山爆发的实验。
他走出t厂大楼,鹏城的傍晚依然明亮。南山科技园的路上,年轻人们三三两两地走着,有的在讨论技术问题,有的在打电话聊项目,有的只是安静地走路回家。
六个月。从新人到核心成员,从执行者到架构贡献者,从迷茫到清晰。这条路走了六个月,但真正的旅程,才刚刚开始。
手机响了,苏婉的消息:到家了吗?乐乐已经开始摆实验道具了!
林晨笑了笑,加快脚步。
第191章 投资账户新高
周日上午,林晨照例检查投资系统。
这是他从入职以来坚持的习惯——每周日早上花半小时做一次全面复盘,平日只看异常告警。系统运行了大半年,稳定性已经经过了充分验证,不需要每天盯盘,但周日的体检从不缺席。
书房里,晨光透过窗帘,在桌面上画出一道斜线。林晨打开笔记本电脑,登录系统管理面板。深蓝色的界面亮起来,数据像心跳监护仪一样跳动。
他扫了一眼总资产数字,手指悬在键盘上方,停了两秒。
1,302,800元。
一百三十万。
他的目光在那个数字上停留了比平时更长的时间。上个月还是118万,这个月一口气涨了12万多,涨幅超过了10%。这在系统运行历史上是第一次。
他没有急着庆祝,而是立刻去看各子策略的详细数据。
A股子策略:本月收益5.8%,大幅超出月均水平。他点开详细报告——系统在本月中旬捕捉到新能源板块的资金流入信号,自动将仓位从15%提升到25%,在板块拉升期间获取了超额收益。随后系统在月下旬检测到板块动量衰减,又自动减仓到10%,成功锁定了利润。
漂亮。他轻声说。这种板块轮动的捕捉,之前系统也做过,但这次的操作更加精准,进出时机几乎踩在了最佳点上。
期货子策略:本月收益2.1%,比往常高了不少。主要贡献来自螺纹钢和铁矿石的多头持仓——基建预期转暖,黑色系品种走出一波行情。系统在月初就捕捉到了信号,持仓两周,本周五已经在逐步减仓止盈。
期权子策略:本月收益1.5%,稳如磐石。卖出虚值认沽期权的策略在低波动环境下持续收取权利金,像一台稳定运转的印钞机。不过他注意到隐含波动率在月末有所上升,系统已经自动调整了期权的行权价和仓位。
黄金子策略:本月收益0.9%。国际金价受避险情绪推动持续走强,系统的轻仓配置吃到了一波上涨。虽然仓位只有5%,但涨幅足够覆盖手续费。
整体来看,四个子策略同时发力,这是少有的行情。他把各子策略的相关性矩阵拉出来看了一眼——相关系数依然维持在低水平,说明收益来源是分散的,不是单一因子的暴露。
他靠在椅背上,看着屏幕上那条一路向上的净值曲线。
从五万起步,到追加二十万,再到现在一百三十万。这条曲线走了将近十一个月,中间有过回撤、有过黑天鹅、有过彻夜难眠的时刻。但整体趋势向上,而且越来越陡——复利效应开始真正发挥作用了。
他打开笔记本,在投资日志上写下本月的总结:
本月总收益:+12.8万(+10.9%) 各子策略贡献:A股5.8%、期货2.1%、期权1.5%、黄金0.9%、现金0.6% 最大回撤:2.8%(月中新能源板块回调时触发) 夏普比率:3.2(本月) 备注:四策略共振行情,超出月均水平。需要关注是否为系统性机会还是短期波动。
写到这一行,他停了一下。10.9%的月收益确实令人惊喜,但作为量化系统的设计者,他知道异常高的收益往往意味着风险的累积。市场不可能每个月都这么好,需要思考的是:当行情转冷的时候,系统能不能守住这130万?
他调出了过去六个月的收益曲线,叠加了沪深300指数。一个有趣的现象出现了——系统的收益曲线和沪深300的相关性在近两个月有所上升,从之前的0.3上升到了0.5。这意味着系统的超额收益有一部分来自市场贝塔,而不是纯粹的阿尔法。
需要调整。他在笔记本上记下这条想法。
不是调整策略本身——策略逻辑没有问题。而是要在资产配置层面做一些微调,降低对市场贝塔的依赖。具体来说,可以考虑增加一些低相关性的品种,比如可转债或者海外EtF,让组合更加多元化。
但调整不急。今天只是复盘,不是做决策的时候。
他合上笔记本,走到客厅。乐乐正趴在地毯上画画,苏婉在厨房准备午饭。
查完了?苏婉探出头来。
林晨走到沙发边坐下,犹豫了一下,还是说了,这个月收益不错,总资产突破一百三十万了。
苏婉停下手里的活,看了他一眼:比上个月多了多少?
十二万多。
苏婉沉默了两秒,然后说:比你的工资还多。
林晨愣了一下。她说的没错——他的税后月薪是40,800元,而这个月投资系统的收益是12.8万,确实已经超过工资的三倍了。
他点点头,但这个月是特殊情况,市场行情好,四策略共振。平时没有这么高。
那平时呢?
平时月收益4-5%左右,五万上下。
苏婉想了想:五万加上你的工资,一个月近九万的收入。
这个数字说出来,两个人都沉默了一会儿。九万。半年前他们还在为房贷和日常开支精打细算,现在一个月的家庭收入已经接近九万了。
别想太多。林晨说,投资收益不稳定,这个月10%,下个月可能只有2%。不能拿异常值当常态。
苏婉点点头,回到厨房继续做饭。但她切菜的动作比平时轻快了一些。
午饭时,乐乐突然问了一个问题:爸爸,一百三十万是多少钱?
林晨差点被米饭呛到。他和苏婉从来不在乐乐面前讨论投资的事,但今天不小心说漏了嘴。
就是……很多很多钱。林晨含糊地回答。
有多少?乐乐不依不饶,比我的存钱罐多吗?
比你的存钱罐多很多很多。苏婉笑着解围。
乐乐似懂非懂地点点头,然后继续扒饭。
午饭后,林晨回到书房,重新打开投资系统的面板。他看着那个1,302,800的数字,心里并不像表面那样平静。
一百三十万。这个数字意味着什么?
意味着从五万到一百三十万,翻了26倍。意味着如果保持月均4-5%的收益,再过半年可能突破两百万。意味着投资系统的收益已经开始超过工资,家庭财务正在从工资驱动投资+工资双引擎。
但也意味着风险敞口更大了。一百三十万的4%回撤就是五万多,相当于一个月的工资瞬间蒸发。如果遇到黑天鹅级别的行情,10%的回撤就是十三万。
他需要重新审视系统的风险管理体系了。
一百多万的时候,心态和五十万的时候完全不同。五十万的时候,回撤两万还能接受;一百三十万的时候,回撤五万就会让人心跳加速。规模越大,每1%的波动对应的绝对金额就越大,心理压力也越大。
他在笔记本上写下一行字:
下一步:升级风险管理体系。
然后合上笔记本,走到窗边。鹏城的午后阳光热烈而明亮,远处的海面泛着银色的光。一百三十万只是路上的一个里程碑,不是终点。真正的挑战在于:怎么在规模变大的同时,保持系统的稳定性和自己的心理定力。
手机响了,是张明远发来的消息:林哥,周一的实验数据我整理好了,你看看?
林晨回了一个,然后把手机放下。
两个世界。一边是t厂的项目、实验、数据、会议;一边是投资系统的收益、回撤、风控、复利。两个世界都在运转,都在生长。而他是连接两个世界的那个人。
他拿起笔记本,翻到新的一页,在最上方写下:
资金到了一百三十万,是时候考虑更大的布局了。
笔尖在纸上停留了一秒,然后他继续写下去。
第192章 扩大投资
周三晚上,林晨坐在书房里,面前摊着一张A4纸,上面写满了数字。
这是他第三次修改资金配置方案。第一次写得太保守,第二次写得太激进,这次他试着找一个平衡点。
事情的起因很简单——上周日复盘时看到130万的数字,他在笔记本上写了一行下一步:升级风险管理体系。但真正让他坐下来做这件事的,是周二发生的一件小事。
周二中午,他在食堂吃饭时收到银行短信:工资到账40,800元。他习惯性地打开银行App,准备把一部分转去还房贷。然后他发现,活期账户里的余额已经超过了30万——这是过去几个月的工资加上投资收益的分红,扣掉日常开支和房贷后,一直在活期账户里躺着。
三十万。活期。年化收益不到2%。
他盯着这个数字看了十秒钟,然后做了一个决定:是时候重新规划资金配置了。
他在A4纸上画了一张表:
现有资产:
投资系统账户:1,302,800元
活期存款:约300,000元
其他(房贷已还、日常已扣):—
方案一:保守型
追加20万到投资账户,总额150万
活期保留10万作为家庭应急金
投资账户月均收益4-5%,月产出6-7.5万
方案二:进取型
追加25万到投资账户,总额155万
活期保留5万作为家庭应急金
投资账户月均收益4-5%,月产出6.2-7.75万
方案三:激进型
追加30万到投资账户,总额160万
活期保留0万
全部资金投入投资系统
他看了三秒钟就把方案三划掉了。零应急金,这不是投资,这是赌博。
方案一和方案二的差别在于活期保留多少。5万还是10万?
他想了想,在方案一后面写了一行注:房贷月供1.2万,家庭月开支约1.5万(含乐乐的幼儿园学费),合计2.7万。如果保留10万应急金,可以覆盖3.7个月的家庭开支;5万只能覆盖1.8个月。
保留10万。他在方案一后面打了个勾。
然后他停下来了,看着那个150万的数字。
一百五十万。半年前,他的家庭总资产刚过一百万的时候,他还觉得这个数字遥不可及。现在他要操作的数字是150万。每1%的波动就是1.5万,5%的回撤就是7.5万。
他深吸一口气,开始写资金配置的细节:
追加后投资账户总额:1,500,000元
配置方案:
A股子策略:30%(45万)——保持现有仓位,增加板块轮动的灵活度
期货子策略:20%(30万)——适度增加,捕捉趋势行情
期权子策略:15%(22.5万)——保持稳定,收取时间价值
黄金及避险策略:10%(15万)——增加配置,对冲尾部风险
海外EtF策略:5%(7.5万)——新增,降低与A股的相关性
可转债策略:10%(15万)——新增,下有底、上无顶的防守反击品种
现金储备:10%(15万)——作为极端行情下的子弹
写完配置方案,他在底部加了一行红字:
重要原则:绝不借钱投资。用自有资金、自有节奏、自有风控。
这条原则是他从之前那段失业经历里学到的最深刻的教训。那时候他借过钱、扛过杠杆、在悬崖边走过,最后靠止损活了下来。现在有了稳定收入,不需要借钱,也不应该借钱。用工资的结余逐步追加,用系统的复利稳步增长,这才是可持续的道路。
苏婉推门进来,看到他面前摊着纸和笔。
又在算账?她把一杯热水放在桌上。
嗯,在调整资金配置。林晨把A4纸递给她,你看一下。
苏婉接过去,认真看了一遍。她虽然不参与投资决策,但林晨每次做重大调整都会跟她沟通——这不是寻求批准,而是让她知道家里的钱在怎么运转。
一百五十万……她看到总额,顿了一下,你确定?
确定。林晨说,但不是一次性全投进去。我的计划是分三周追加,每周追加7万左右,这样可以平滑入场成本,避免一次性建仓的风险。
苏婉看了他一眼,目光里有担心,也有信任。你觉得可以就好。但有一条——
什么?
别影响乐乐的幼儿园学费和家庭日常开支。苏婉的语气很认真,投资是投资,生活是生活。
放心,我留了10万应急金,加上你的工资,足够覆盖半年的家庭开支。林晨说,而且我的工资每个月还在进账,投资收益也在持续产出。
苏婉点点头,没有再多问。她知道自己不是投资领域的专家,林晨在这件事上的判断力远超常人。她能做的,就是在旁边支持他,同时确保家庭的底线不被突破。
追加之后,投资系统的风控也要升级。林晨指着A4纸上的配置方案,资金规模大了,风险敞口也大了。原来的风控参数是针对100万以内设计的,现在需要重新校准。
你打算怎么改?
几个方面。林晨掰着手指头数,第一,调整止损线。原来单策略止损线是8%,现在要降到5%。资金大了,每1%的波动绝对金额更大,必须更严格地控制回撤。
第二,分散投资品种。原来只有A股、期货、期权、黄金四个策略,现在增加海外EtF和可转债,降低策略之间的相关性。
第三,控制单笔仓位。任何单一标的的持仓不超过总资产的3%,避免个股风险过度集中。
第四,引入动态风控——不是固定的止损线,而是根据市场波动率自动调整仓位和止损幅度。波动率低的时候,可以适当放大仓位;波动率高的时候,自动收缩仓位。
苏婉听着,虽然不完全理解每个术语,但她能听出林晨在认真思考风险控制,而不是一味追求收益。这让她放心了不少。
什么时候开始执行?她问。
下周一。林晨说,先追加第一批7万,然后根据市场情况逐步加仓。风控参数同步升级。
苏婉拿起桌上的水杯喝了一口,然后说了一句让林晨意外的话:那你这段时间会更忙吧?既要管两个项目,又要调系统。
林晨愣了一下。他确实没有考虑过时间分配的问题。调整投资系统的配置和风控参数,至少需要两到三个晚上的时间,加上后续的监控和微调,可能需要一周。而t厂那边,透明蒸馏项目和风控鹰项目都在关键时期,白天的时间几乎被占满了。
晚上做。他说,白天在公司干项目,晚上在家调系统。不会冲突。
苏婉看了他一眼,没有再说什么。但她心里清楚,这意味着林晨又要多加几个晚上的班——不是在公司,而是在家里。
她拿起水杯,走出书房。在门口停了一下,回头说:别太晚。
林晨看着她离去的背影,心里涌上一股复杂的情绪——感激、愧疚、还有一种说不清的温暖。这个女人从来不问他为什么要做这些,只在适当的时候提醒他别太累。这种信任和包容,比任何收益数字都更珍贵。
他重新看向A4纸上的配置方案。150万,六个策略,四条风控原则,三周分批入场。
这不是赌博,这是经过深思熟虑的资产配置。每一步都有计划,每一分钱都有去处,每一种风险都有预案。
他拿起手机,打开银行App,开始执行第一批资金划转。
七万。不多不少,刚刚好是第一步。
第193章 风险管理升级
周一晚上十点,乐乐已经睡了,苏婉在客厅看电视。林晨坐在书房里,面前是两台显示器——左边是投资系统的代码编辑器,右边是实时行情面板。
他正在写一段新的风控模块代码。
资金从130万追加到150万,这个数字听起来只是多了20万,但在量化系统的世界里,规模每上一个台阶,风险管理的复杂度就呈指数级增长。100万的时候,5%的回撤是5万,还能扛;150万的时候,5%的回撤是7.5万,心理压力已经不一样了。
他在代码编辑器里写下了新的风控模块名称:dynamicRiskmanager。
这个模块的设计思路来自他在t厂学到的监控告警体系。在t厂,监控系统不是等出了问题才报警,而是通过实时指标检测异常趋势,在问题发生之前就发出预警。他要把这个思路用到投资系统上。
dynamicRiskmanager的核心逻辑是三个层次:
第一层:单策略止损。
每个子策略都有独立的止损线。A股子策略止损线5%,期货子策略止损线7%,期权子策略止损线5%,可转债子策略止损线4%,海外EtF子策略止损线6%。任何一个子策略触及止损线,系统自动平仓该策略的所有持仓,将资金转回现金池。
这不是新东西——之前的系统就有单策略止损。但这次他把止损触发的响应时间从缩短到了。以前是每天收盘后检查一次,现在是盘中实时监控,一旦触及止损线,立刻执行平仓,不等到收盘。
日内止损和实时止损的区别,就是看你会不会因为犹豫而错过止损窗口。他在代码注释里写下了这句话。
第二层:组合风控。
这是新增的逻辑。之前的系统只有单策略止损,没有组合级别的风控。但150万的规模下,单策略止损不够——如果多个策略同时回撤,即使每个策略都在止损线以内,组合整体的回撤也可能超过预期。
他设计了一个组合回撤阈值:8%。如果总资产从最高点回撤超过8%,系统自动将所有策略的仓位减半。如果回撤超过12%,系统自动清仓止损。
8%的回撤对应150万的12万,12%的回撤对应18万。这两个数字写进代码,变成铁律,不给人性留任何商量余地。
第三层:动态仓位调整。
这是整个模块最复杂的部分。
他参考了t厂监控系统的异常趋势检测思路,设计了一个基于市场波动率的动态仓位调节器。具体逻辑是:
计算过去20个交易日的市场波动率(用沪深300指数的已实现波动率作为代理变量)。
如果波动率低于历史中位数(意味着市场平稳),仓位可以维持在目标仓位的100%。
如果波动率超过历史中位数但低于75分位数(意味着市场开始波动),仓位自动降至目标仓位的80%。
如果波动率超过75分位数(意味着市场剧烈波动),仓位自动降至目标仓位的60%。
如果波动率超过90分位数(意味着极端行情),仓位自动降至目标仓位的40%。
这样一来,市场平稳的时候系统可以满仓运行获取最大收益,市场动荡的时候系统自动收缩降低风险,不需要人来做判断。
他在代码里写好了波动率计算模块、仓位调节逻辑和回测框架,然后开始跑历史数据验证。
第一个验证:2015年6月的股灾。如果当时有动态仓位调整,系统会在6月15日左右检测到波动率急剧上升,自动将仓位从100%降到60%。到6月底进一步降到40%。最终的最大回撤从原来的35%控制在12%以内。
他在笔记本上记下结果。
第二个验证:2020年3月的新冠暴跌。波动率在3月上旬飙升,系统会在3月9日左右降到60%仓位,3月中旬进一步降到40%。最大回撤从22%控制在9%以内。
第三个验证:2023年10月的市场调整。波动率温和上升,系统只在10月下旬降到80%仓位,最大回撤从6%控制在4.5%。
三组历史回测都通过了。动态风控在极端行情下能显着降低回撤,在温和波动中只牺牲少量收益。这正是他想要的效果——不是完全回避风险,而是在风险来临时自动收缩,风险过去后自动恢复。
写完代码,他靠在椅背上,看着两台显示器上跳动的数据。左边的代码窗口里,dynamicRiskmanager的类结构清晰整洁,注释完善。右边的行情面板上,各子策略的仓位和收益像心电图一样起伏。
他突然意识到,他在做的事情,和t厂的工作本质上是一样的——都是在用系统化的方法管理不确定性。t厂的系统管理的是推荐系统的不确定性,投资系统管理的是市场的不确定性。方法不同,逻辑相同:用数据驱动决策,用规则替代情绪,用系统保障底线。
他关掉代码编辑器,打开投资系统的管理面板,把新的风控参数逐一配置进去。单策略止损线、组合回撤阈值、动态仓位调节的波动率分位数——每一个数字都经过历史回测验证,每一个参数都有据可查。
配置完成后,他点了一下模拟运行按钮。系统用过去一年的实盘数据模拟了新风控参数下的收益曲线,结果显示:
年化收益从58%降到52%(牺牲了6个百分点)
最大回撤从7.2%降到4.8%(降低了2.4个百分点)
夏普比率从2.8提升到3.5(风险调整后收益显着提升)
收益降了,但风险降得更多,风险收益比反而更好了。
这就是风险管理升级的意义。他自言自语,不是追求最高收益,而是追求最高的风险调整后收益。
他合上笔记本,看了一眼时间——凌晨十二点半。比他预期的时间晚了两个小时,但代码质量比他预期的更好。
走出书房,客厅的灯已经关了。苏婉留了一盏玄关灯给他,茶几上放着一杯已经凉了的水。他端起来喝了一口,水是凉的,但心里是暖的。
他走进卧室,苏婉已经睡着了,手机放在枕头旁边。他在床边站了一会儿,然后轻手轻脚地躺下。
明天还有很多事——透明蒸馏的A/b测试数据要分析,风控鹰项目的算法方案要评审,张明远的可解释性指标报告要看。但今天,风控模块升级这件大事,终于做完了。
他闭上眼睛,脑子里还在回旋着代码和数字,但身体已经开始放松。新的风控模块像一面盾牌,挡在150万的前面。不是消除风险——风险永远存在——而是把风险控制在可接受的范围内。
让系统替他守夜,他可以安心睡觉了。
第194章 牛市来临
周一早晨,林晨走进t厂大楼的时候,感觉到了一种不一样的氛围。
电梯间里,两个不认识的同事在低声讨论股票。你看了没有?创业板上周五又涨了三个点。我那只半导体基金,一个月涨了百分之二十……他们的声音压得很低,但那种压抑不住的兴奋像气泡一样往上冒。
林晨低头看了一眼手机。投资系统的晨间推送七点半就到了——A股子策略周五收盘时仓位已经从30%提升到了38%,期货子策略的多头仓位也在加码。他不用看具体数字就知道发生了什么:动态风控模块检测到市场波动率持续走低,落在历史中位数以下,系统按照预设逻辑,自动将各策略仓位提升至目标仓位的100%。
这就是他设计动态风控时埋下的那颗种子。波动率低,意味着市场平稳,也意味着风险较小——系统不是在赌涨跌,而是在波动率给出信号时,自动调整风险敞口的大小。熊市里收缩,牛市里扩张,一切由数据驱动,不需要人的情绪参与。
到了工位,张明远已经到了,正在对着屏幕写代码。看到林晨,他推了推眼镜说:林哥,你看了周末的新闻没?政策出了好多利好,降准降息的信号很明显。
看到了。林晨放下背包,不过利好出尽的时候才是最危险的时候。
张明远愣了一下,然后笑了:你永远这么谨慎。
不是谨慎,是系统。林晨打开电脑,我的系统比我自己更清楚什么时候该加仓、什么时候该减仓。
上午的团队例会上,讨论的重点虽然是透明蒸馏项目的A/b测试结果,但话题几次滑到了市场行情上。运营组的陈薇说她的基金账户终于回本了,金融科技部的赵磊说他在考虑把一部分存款转到股票账户,连一向不关心投资的刘工都在问现在开户还来得及吗。
林晨没有参与这些讨论。他坐在角落里,安静地听着,心里想的是另一件事——当办公室里所有人都开始讨论股票的时候,往往意味着市场情绪已经到了一个临界点。但他更相信系统的判断,而不是办公室里的闲聊。
午休时,他独自去食堂吃饭,手机上打开了投资系统的实时面板。
总资产:1,587,200元。
比上周日多了将近九万。这个数字让他的心跳微微加速了一下,但他很快压住了情绪。九万的增长,一部分来自系统在波动率低位时自动加仓的贡献——如果还是之前的固定仓位,涨幅至少要少三成。
他点开动态风控模块的日志,看到了一段清晰的加仓轨迹:
上周一,沪深300的20日已实现波动率降至历史25分位数以下,系统判定市场进入低波动平稳区间,A股子策略仓位从30%逐步提升至35%。
上周三,波动率进一步下降,期货子策略的多头仓位也从60%提升至75%。
上周五,期权子策略自动增加了卖出虚值认沽期权的数量——低波动环境下权利金虽然便宜,但被行权的概率也在降低,这是卖方策略的最佳窗口。
整个过程,他没有做任何手动操作。系统就像一台精密的自动档汽车,感知到路况变化后自动换挡,不需要驾驶员踩离合。
这才是系统化投资的真正价值。他在心里默默想道。如果凭人的判断,他可能在波动率下降时犹豫——是不是该等等?万一加仓之后又跌了呢?但系统不会犹豫,它只认数据。波动率低于中位数,仓位就上;波动率高于中位数,仓位就下。规则清晰,执行果断。
下午两点,林晨正在调试透明蒸馏项目的推理加速模块,手机突然震动了一下。是投资系统的盘中推送:
【系统通知】A股子策略检测到市场情绪指标快速上升,换手率偏离20日均值1.5个标准差。当前波动率仍处于低位区间,仓位维持100%目标。关注后续情绪指标变化。
他看了一眼,没有操作。系统已经替他做了判断——情绪在升温,但波动率还在低位,这是牛市初期的典型特征:信心在恢复,资金在进场,但市场还没有到疯狂的阶段。系统选择跟随趋势,而不是逆势减仓。
这正是动态风控设计的精髓。如果是固定止损的硬规则,在市场上涨时只能被动持有或者止盈,无法主动加仓。但动态风控的波动率分位数逻辑,让系统在低波动环境中自动扩大敞口,在高波动环境中自动收缩——它不是一面只会挡刀的盾牌,而是一面会根据战场形势改变防御角度的智能盾牌。
下班路上,林晨走过南山科技园的天桥。桥下是晚高峰的车流,桥上是步履匆匆的下班人群。他看到天桥旁边的证券公司营业部亮着灯,透过玻璃门能看到里面坐满了人——这在半年前是看不到的景象。那时候营业部门可罗雀,现在又排起了开户的队伍。
他加快脚步,没有停留。
晚上回到家,乐乐已经吃完饭在客厅玩积木。苏婉正在收拾厨房,听到门响,探出头来:回来了?今天怎么这么多人加班?
不是加班,是行情好,大家心情好。林晨换上拖鞋,走过去亲了一下乐乐的脑袋。
你公司的人也炒股?苏婉有些意外。
不是炒股,是……氛围。林晨想了想,就像天气突然转暖,所有人都感觉到了。
苏婉看了他一眼,没有追问。她知道林晨的投资系统一直在运行,也知道最近行情好,但她从不主动问具体数字。这是两人之间的默契——收益好的时候他会主动说,亏损的时候他自己消化。
吃过晚饭,乐乐洗完澡睡了。林晨走进书房,打开投资系统的周报生成器。
周报需要一分钟生成,他靠在椅背上等待。窗外,鹏城的夜景如常铺展,远处的灯火星星点点。但今晚的夜色中似乎多了一点什么——也许是证券公司营业部的灯光,也许是手机上不断弹出的财经推送,也许是空气中那种所有人都在谈论赚钱的微妙氛围。
系统周报弹出来了。
本周投资系统运行周报:
总资产:1,587,200元
本周收益:+5.8%(+87,200元)
月度收益(本月至今):+9.2%(+138,000元)
各子策略贡献:A股+4.1%、期货+1.8%、期权+0.9%、黄金+0.6%、可转债+0.7%、海外EtF+0.3%
动态风控状态:波动率低位,全部策略仓位维持100%目标
市场情绪指标:中性偏热(换手率偏离度1.5σ)
单月收益已经逼近15%了。按照这个速度,月底总资产可能突破175万——甚至更多。
他盯着屏幕上的数字,脑中浮现出一条抛物线。复利效应在牛市中会被放大:资金越多,收益的绝对值越大;收益越大,资金的基数越高;基数越高,下一期的收益又更大。这不是线性增长,而是指数增长。
但同时他也清楚,牛市中最大的风险不是亏钱,而是贪婪。当单月收益15%的时候,人很容易产生一种错觉——以为这种收益是常态,以为自己可以一直赢下去。然后加大投入、加杠杆、放宽止损线……等到行情反转的时候,一切都来不及了。
但我的系统不会贪婪。他低声说。动态风控模块的逻辑是死的——波动率上升,仓位就降;回撤超过8%,仓位就减半。不管市场多热闹,系统只会按照规则行事。
他合上笔记本,准备关灯。但手指停在了开关上方。
他重新打开系统面板,看了一眼月度收益的预测曲线。如果当前趋势持续,加上系统在低波动环境下维持满仓运行,月末的总资产大约会落在——
172万到180万之间。
离200万,只差一个加速。
他关掉台灯,走出书房。走廊里,乐乐的房间传来均匀的呼吸声,苏婉在客厅看书。一切如常,好像什么都没有发生。但林晨知道,有一台机器正在替他冲锋,有一面盾牌正在替他守夜,有一条曲线正在替他画出一个他从未想象过的数字。
那个数字,也许很快就会出现。
第195章 账户突破200万
周三晚上九点半,林晨在书房里做投资系统的周度检查。
这已经成了他的固定节奏——平日里系统全自动运行,他只看异常告警推送;周日做一次全面检查,周三再做一次中期复盘。不是不放心系统,而是一种习惯,就像老司机每隔一段时间瞟一眼仪表盘。
他打开管理面板,深蓝色的界面亮起来。数据流像心跳监护仪一样跳动,一排排数字和曲线映入眼帘。
总资产:2,001,387元。
他的手指停在触控板上方,两秒钟没有动。
两百万。
从最初的五万启动资金,到后来追加到二十万,再到如今突破两百万——这条曲线走了将近一年。期间经历过回撤、黑天鹅、彻夜难眠的时刻,但整体趋势像一棵根深蒂固的树,虽然枝干偶尔被风吹歪,却越扎越深,越长越高。
他盯着那个数字看了很久,不是激动,而是一种奇异的平静。
一百万的时候他激动过。那是第一次突破六位数的门槛,心里像有什么东西被点燃了,带着惊喜和不安。但两百万不同。两百万带来的不是惊喜,而是一种确认——确认这条路是对的,确认系统是可靠的,确认复利的力量是真实的。
他打开各子策略的详细报告。
A股子策略:本月收益6.8%,跑赢沪深300指数4.2个百分点。牛市行情下系统抓住了主线轮动,重仓的新能源和半导体板块都贡献了超额收益。但风险评分也上升了——系统检测到市场情绪过热,部分板块的估值已经偏离历史均值两个标准差。
期货子策略:本月收益2.1%。螺纹钢和铜的多头持仓贡献了主要利润,但原油期货的波动率仍然偏高,系统维持了减仓状态。
期权子策略:本月收益1.5%。卖出虚值认沽期权的策略在牛市中表现稳健,权利金收入稳定。但他注意到,随着市场上涨,隐含波动率在下降,这意味着未来的权利金收入可能会减少。
黄金子策略:本月收益0.8%。国际金价在美联储鸽派信号的推动下小幅上涨,系统维持了中等仓位配置。
整体来看,牛市行情给了系统强劲的顺风,各策略之间的相关性虽然有所上升——毕竟普涨行情下资产同向运动的概率增大——但分散配置的效果仍然明显。最大回撤控制在5%以内,夏普比率维持在2.0以上。
他合上笔记本,靠在椅背上。
两百万。五万起步,十倍收益,不到一年。
这个数字放在量化圈里算不上什么——大基金的规模动辄几十亿,一两个亿的收益都是小数目。但对林晨来说,这两百万的意义远超数字本身。它意味着一个从零开始构建的系统,经过市场的反复检验,证明了自己的有效性。它意味着失业期间那些不眠之夜的坚持,那些在乐乐睡着后偷偷打开电脑调试策略的夜晚,那些被拒绝后擦干眼泪继续学习的日子,都没有白费。
手机亮了一下,是投资系统的自动推送:
【系统通知】A股子策略风险评分上升至,建议关注市场过热信号。当前持仓盈利安全垫充足,暂无需操作。
他看了一眼,没有操作。系统说得很清楚——安全垫充足,暂无需操作。这就是自动化框架的价值:它不会因为市场上涨就贪婪加仓,也不会因为风险评分上升就恐慌清仓。它按照预设的逻辑运行,冷静、理性、不带情绪。
林晨想,如果把这两百万比作什么的话,它更像是一棵树的年轮。第一圈是五万到二十万,那是摸索和试错;第二圈是二十万到五十万,那是验证和修正;第三圈是五十万到一百万,那是信心和稳定;第四圈是一百万到两百万,那是加速和确认。
每一圈都不是轻松画上去的,中间有过回撤、有过止损、有过彻夜盯盘的焦虑。但正是这些弯路和挫折,让系统的根基越扎越深。
他站起来,走到窗边。
鹏城的夜景在窗外铺展开来。南山科技园的灯光星星点点,远处的鹏城湾在月光下泛着银色的光。万家灯火,每一盏灯后面都是一个家庭的故事。他曾经是这些故事里最焦虑的那一个——担心房贷、担心失业、担心未来。但现在,他站在窗边,内心是从未有过的踏实。
不是骄傲,不是膨胀,而是一种冷静的确认:路走对了,系统在跑,生活在上行。但市场永远在变,两百万不是终点,只是一个里程碑。
他回到书桌前,在笔记本上写下几行字:
牛市加速,账户突破200万。注意:1. 市场过热信号增强,风控不可松懈;2. 利润安全垫充足,暂不调仓;3. 下一步目标:稳健增长,控制回撤。
写完,他合上笔记本,关掉台灯。
走出书房时,客厅的灯还亮着。苏婉坐在沙发上看书,乐乐已经睡了。
查完了?苏婉抬头问。
怎么样?她合上书,看着他。
林晨在她旁边坐下,轻声说:突破两百万了。
苏婉的眼睛微微睁大,但很快恢复了平静。她沉默了两秒,然后说:那也别乱花。
和上次说一百万时一模一样的话。林晨笑了,他知道这是苏婉的方式——不夸张、不煽情,但那微微睁大的眼睛已经告诉了他一切。
放心。他说。
苏婉没有追问细节。她拿起书继续看,但翻页的速度明显比刚才慢了——心不在焉的那种慢。
林晨靠在沙发上,看着她翻书的手指,心里想:这个人从来不问我赚了多少、亏了多少,但每次出结果都会问一句怎么样。她不在乎数字的大小,她在乎的是这件事是否还安全、是否还在正轨上。
这是语文老师的理性,也是一个妻子的温柔。
明天我给你转点钱,林晨说,家里的生活费我多转一些。
不用,工资够用。苏婉翻了一页书。
工资还是工资,生活费归生活费。林晨顿了顿,两百万了,家里不用再省着花了。
苏婉合上书,看了他一眼:省着花和乱花之间,有很大一段空间。
林晨笑出声来。这就是苏婉——永远能在最恰当的时候,把你的热血浇成一碗温吞的白开水。但你喝下去,胃是暖的。
窗外,鹏城的夜色正深。两百万这个数字安静地躺在投资系统的数据库里,不炫耀、不张扬,像一颗种子在土壤下悄悄生长,等待下一个春天。
第196章 还清亲友债务
周六上午,林晨坐在书房里,打开手机银行App。
他看着转账页面,手指在屏幕上悬停了几秒。页面上有四个转账对象需要处理——大哥林枫,还有三个朋友:大学室友郑磊、前同事老周、还有创业时认识的朋友陈哥。
四笔借款,加起来三十万。
这是他失业后期追加投资时借的钱。那时候投资系统已经有了雏形,回测数据很漂亮,但手里能用的资金太少。他需要更多的本金让复利效应真正跑起来,但存款已经见了底,房贷还在每个月往外抽血。
是这四个人,在最困难的时候伸了手。
林枫是大哥,借了十五万,没有任何犹豫。他说的是:你是做技术的,我信你的判断。赔了就赔了,别往心里去。
郑磊借了五万,当时他自己在还房贷,日子也不宽裕,但还是转了账,只说了一句:兄弟,加油。
老周借了五万,他刚从上一家公司拿了笔补偿金,手头有点闲钱,打来电话说:你那系统我看过了,思路是对的。这钱你先用,不急还。
陈哥借了五万,他是做餐饮的,现金流本来就紧张,但还是凑了五万出来,末了还加了一句:赚钱了请我吃饭就行。
三十万,在去年冬天转进了林晨的投资账户。加上他自己的二十万,总资金五十万整。从那以后,复利效应开始真正发力——五十万到一百万用了三个月,一百万到两百万又用了两个月。牛市是加速器,但本金的基数才是地基。
而现在,地基上的楼已经盖起来了,是时候把借来的砖还回去了。
他先给林枫打电话。
电话响了两声就接了,林枫的声音一如既往地沉稳:晨子?周末打电话,什么事?
大哥,我给你转笔钱,你注意查收。
什么钱?
还你的十五万。林晨停顿了一下,外加两万利息。
电话那头沉默了三秒。然后林枫的声音里带了一丝笑意:你那投资系统做起来了?
嗯,最近行情不错。
赚了多少?林枫问得很直接。他们兄弟之间从来不说虚话。
账户突破两百万了。
又是一阵沉默。这次更长,大概有五秒。林枫在鹏城做建筑工程师,一年到手也就三十来万,省吃俭用攒了好几年才在鹏城偏远的地方买了个小两居。十五万对他来说不是小数目——那几乎是他半年的工资。
林枫说了一个字,声音有些发紧,那我就收了。利息不用——
利息必须收。林晨打断他,大哥,这十五万你借给我的时候,你自己也不宽裕。两万利息不算多,但这是我的心意。
林枫没有再推辞,只是说:那就行。你有出息了,哥高兴。
挂了电话,林晨打开银行App,输入林枫的账号,金额十七万,确认转账。
页面弹出转账成功的提示,他截图发了过去。
接下来是郑磊。他发了条微信:磊子,你方便接电话吗?
郑磊秒回:方便,打吧。
电话接通,郑磊的声音一如既往地大大咧咧:老林!怎么样?最近忙什么呢?
还你的钱。林晨直入主题,五万本金,加五千利息,我给你转过去。
郑磊愣了一下:啊?这么快就还了?你那系统——
做起来了。林晨简短地说。
牛啊!郑磊的语气明显兴奋起来,你那系统真的能赚钱?我还以为你当时是在赌——
不是赌,是量化。林晨笑了,五万五,转给你了。
转账,截图,发送。
郑磊回了一串感叹号,然后说:改天请我吃饭!
没问题。
第三个是老周。老周接电话的时候正在带儿子上兴趣班,背景里一群小孩在弹钢琴。
老周,你借我的五万,加五千利息,转给你了。
老周的反应比前两位更直接:你那系统跑出来了?赚了多少?
还行。林晨没有说具体数字,先把你的还了。
老周停顿了一下,当初我借你钱的时候,我老婆其实是反对的。她说你失业了还搞什么投资,肯定要赔。我跟她说我了解你,你不是乱来的人。
谢谢你信我。林晨说。
谢什么,朋友嘛。老周笑了一声,改天聚聚。
挂了电话,林晨看着手机屏幕,最后一个名字:陈哥。
他发了一条微信:陈哥,你的五万本金加五千利息,我转给你了。
陈哥的回复来得比较慢,过了大概五分钟才回:收到。我就说嘛,你那脑瓜子肯定能成事。当初那五万,我老婆也说我疯了,借钱给一个失业的人做投资。我说,人家是搞技术的,不是瞎搞。
林晨回了个笑脸,然后打字:你说赚钱了请你吃饭,我欠你一顿大餐。
那必须的!鹏城最好的日料店,你请!
成交。
四笔转账,三十三万五,在二十分钟内全部完成。
林晨放下手机,靠在椅背上,长长地呼出一口气。
还钱的感觉和赚钱不一样。赚钱是数字在跳动,是一种抽象的满足感;而还钱是真实的重量从肩上卸下来,是一种具体的轻松感。每一笔钱都有名字、有故事、有人在困难时刻伸出手的那一刻。
他想起借钱的那个冬天。那时他失业在家,存款见了底,房贷月月在扣,投资系统刚有雏形但缺少弹药。他纠结了好几天才开口——不是怕被拒绝,而是觉得丢人。三十五岁的男人,不但养不了家,还要找别人借钱去做一件看起来像赌博的事。
但他们四个人,没有一个人问他你确定吗。
他们只是把钱转了过来,然后说。
这份信任,比钱本身更重。
他站起来,走到窗边。鹏城的阳光正从云层中透出来,照在楼下的绿化带上,几个孩子在追逐打闹。
苏婉在厨房里做饭,乐乐在客厅看动画片。他走到厨房门口,轻声说:我把借的钱都还了。
苏婉正在切菜,刀停了一下,转过头来看他:都还了?
嗯。三十万本金,加三万五的利息,一共三十三万五。
苏婉的眉头微微一挑:利息给得挺大方。
不多。他们借钱给我的时候,没要利息,但那些钱在他们自己手里也能生钱。两万五的利息,还不到他们一年理财收益的一半。
苏婉没有再说什么,继续切菜。但林晨注意到,她切菜的动作比刚才轻快了一些。
今晚想吃什么?她问。
你做什么我吃什么。
那就做个红烧肉吧,庆祝一下。
林晨走回书房,在笔记本上写下一行字:
债务清零日。三十万本金+三万五利息,全部归还。
他看着这行字,心里想:从今天起,账户里的每一分钱,都是自己的了。
第197章 提前还贷
周一中午,林晨在工位上打开房贷App。
这是他一直在想但一直没做的事——提前还房贷。之前不是不想还,而是没有余力。失业那段时间,光是每月一万一的月供就压得他喘不过气,更别提提前还款了。后来入职t厂,有了稳定收入,但投资账户里的钱在复利效应下增长速度远超房贷利率,提前还款反而不划算——把钱留在投资账户里继续滚动,长期收益远高于省下的那点利息。
但现在情况不同了。账户突破两百万,还清了亲友债务,手里还有充足的资金。投资系统仍在运行,但他需要给自己留一条退路——万一市场出现极端情况,至少房子是安全的。
他点开贷款详情页:
贷款余额:187万元 贷款期限:剩余27年 月供:11,800元 利率:4.2%(去年LpR下调后调整)
一年下来光月供就要十四万多,其中利息占了将近一半。虽然投资系统的收益率远高于4.2%,但林晨算了一笔账:提前还六十万本金,月供可以降到五千左右,一年省下八万多的现金流。这笔钱不是投在系统里赚更多,而是换来一种确定性——无论市场怎么波动,月供的压力不会再压得他喘不过气。
他在备忘录上写了几行数字:
提前还款:60万 还款后贷款余额:127万 还款后月供:约5,000元(重新计算) 每月节省:约6,800元 每年节省:约81,600元
他对比了两种方案: 方案A:不提前还款,60万留在投资账户,按保守估计年化10%计算,一年收益6万。扣除房贷利息约2.5万,净收益3.5万。 方案b:提前还款60万,月供从1.18万降到5千,每月多出6,800元现金流。这部分钱可以每月定投进投资账户,一年约8万,按年化10%计算,复利效应同样可观。
两个方案在纯数学上差距不大,但方案b有一个方案A没有的东西——安全感。
月供从一万一千八降到五千,意味着即使他失业了,凭苏婉一个人的工资也足以覆盖月供。这意味着即使投资系统出了极端情况,房子不会断供。这意味着苏婉不需要再在每个月的还款日偷偷看银行余额。
他合上App,给苏婉发了条微信:我想提前还一部分房贷,你觉得呢?
苏婉的回复来得很快:还多少?
六十万。还完之后月供降到五千左右。
沉默了大约一分钟——这是苏婉在认真思考的标志。
然后她回了一句:你觉得划算吗?投资收益不是比房贷利率高吗?
算过两种方案,纯收益差距不大。但还了之后月供压力小很多,就算我失业了,你一个人的工资也能覆盖。
这次沉默更长了。两分钟后,苏婉回了一段话:那还吧。钱是赚不完的,但心安是实实在在的。
林晨看着屏幕,嘴角微微上扬。这就是苏婉——她永远能在理性分析和感性判断之间找到那个最恰当的点。
下午三点半,他提前2个小时下班。他给自己定的规矩:除非项目紧急加班,否则尽量九点前回家,最好六点半能到家。今天的提前还贷是重要但不紧急的事。
回家的路上,他去了趟银行。提前还贷需要先在App上申请,审核通过后到网点面签。他之前已经在线上提交了申请,今天正好收到审核通过的通知。
银行网点在南山科技园附近,离公司不远。他走进去,取号,等了十分钟。
柜员是个年轻的女孩,看了一眼他的申请材料,有些惊讶:先生,您确定要提前还六十万吗?您的贷款利率已经是4.2%了,在当前市场算是比较低的。很多客户选择不提前还,把钱拿去理财。
我算过了。林晨说,还一部分比较好。
柜员没有再劝,开始办理手续。签字、盖章、确认,整个过程花了大约四十分钟。最后一笔转账完成的时候,柜员递给他一张回执单:
提前还款金额:600,000元 还款后贷款余额:1,270,000元 还款后月供:5,060元 生效日期:下月1日
林晨看着这张回执单,手指轻轻摩挲着纸面上那些数字。
月供从一万一千八百降到五千零六十。从下个月开始,每个月的银行扣款短信,不再是压在胸口的一块石头。
他把回执单折好放进钱包,走出银行。
鹏城的傍晚,夕阳把天空染成了温暖的橙红色。远处的南山轮廓清晰,海面上泛着金光。他站在银行门口,深吸一口气,感觉胸腔里有什么东西松开了。
不是兴奋,不是如释重负,而是一种安静的踏实。像一根绷了很久的弦,终于松了一圈。
他拿出手机,拍了张回执单的照片,发给苏婉。没有配文字。
苏婉回了一个表情——不是笑脸,不是拥抱,而是一个竖起大拇指的。
然后她补了一句:今晚想吃什么?
随便。
那就做鱼吧。年年有余。
林晨笑出声来。语文老师的谐音梗,永远这么应景。
回到家,乐乐已经吃完晚饭在客厅拼积木。看到林晨进门,他跳起来扑过来:爸爸!你看我拼的!是宇宙飞船!
林晨蹲下来,看着那座歪歪扭扭的宇宙飞船——说是飞船,更像是一座彩色的小塔。但他还是认真地点了点头:很厉害,这是去哪里的飞船?
去火星的!乐乐大声说,我要带爸爸去火星!
好,等爸爸把地球上的事情处理完了,我们就去。
乐乐满意地点头,继续拼他的飞船。
苏婉在厨房里煎鱼,油锅里一声,香气弥漫开来。林晨走进去,站在她旁边看了一眼。
办好了?苏婉头也不回地问。
嗯。下个月开始,月供降到五千了。
苏婉翻了一下鱼,那我们每个月可以多存点钱了。
每个月多出六千多的现金流,可以定投一部分,剩的留作家庭储备金。
你定就好了。苏婉把煎好的鱼盛出来,鱼要趁热吃。
饭桌上,乐乐一边吃鱼一边讲幼儿园的事,苏婉偶尔插两句,林晨安静地听着。红烧鱼的酱香混着米饭的热气,弥漫在小小的餐厅里。
这就是提前还贷之后的第一顿饭。没有大餐,没有庆祝,只是日常的、安静的、踏实的。
但林晨知道,从今天起,这个家的地基又稳了一层。
吃完饭,他帮苏婉收拾碗筷,在水池边轻声说:下个月开始,每月的工资可以全部用来生活了,不用再挤出来还房贷。
苏婉擦了擦手,看着他:那乐乐的兴趣班,可以好好选选了。
嗯,明天我查查。
苏婉没有再说什么,转身去客厅喊乐乐洗漱。
林晨站在水池边,看着窗外的夜景。万家灯火在远处闪烁,每一盏灯背后都有一个还房贷的故事。从今天开始,他的故事轻了一些。
他拿起手机,打开备忘录,在提前还贷后面画了一个勾。
然后翻到下一页,标题写着:乐乐的教育规划。
这是下一个要解决的问题了。
第198章 改善生活
周六上午,林晨一家三口坐在客厅里吃早餐。
苏婉做的三明治和牛奶,乐乐面前是一碗加了蜂蜜的燕麦粥。阳光从窗户照进来,在餐桌上铺出一片暖黄色。
今天干什么?乐乐问,嘴边沾着燕麦。
今天出去看车。林晨说。
乐乐的眼睛亮了:买新车吗?
看看再说。
苏婉在旁边没说话,只是低头喝牛奶。林晨知道她在想什么——上周他提过换车的事,苏婉的第一反应是车还能开,没必要花这个钱。但那辆开了六年的白色飞度,空调已经不太行了,方向盘助力时好时坏,后排坐了乐乐的安全座椅之后几乎没有任何空间。苏婉每天开着它上下班,嘴上从不说什么,但林晨知道她每次从学校回来,都习惯性地揉肩膀——飞度的座椅对长时间驾驶不太友好。
吃完早餐,一家三口出了门。鹏城六月的天气已经很热了,热浪从柏油路上翻涌上来,乐乐在后座嚷嚷着要开空调。林晨按了一下空调按钮,出风口吹出来的风半冷半热,发出的噪音。
看,这就是换车的理由。他对苏婉说。
苏婉白了他一眼,但没反驳。
他们先去了南山一家丰田4S店,苏婉之前在网上看过一款汉兰达,觉得空间大、安全性好。但到了店里,她绕着车转了两圈,觉得太大了——我一个语文老师,开这么大的车,停在学校的车位上都费劲。
然后去了旁边的大众店,看了途观L。苏婉坐进去试了试,觉得内饰不太对口味。林晨在旁边看,没有催促,只是安静地等着。
第三站是比亚迪的展厅。这是林晨提议的——现在鹏城满大街都是新能源车,比亚迪的宋pLUS和唐都在他的候选名单里。
一进门,苏婉就被一辆白色宋pLUS吸引了。她走过去拉开车门,坐进驾驶座,调了调座椅和后视镜。
感觉怎么样?销售顾问热情地问。
苏婉没有回答,而是仔细地摸了摸方向盘,看了看中控屏,然后说:我能试驾吗?
试驾路线是从展厅出发,沿南海大道走一圈再回来。苏婉握着方向盘,平稳地驶出停车场。加速的时候电机安静地响应,没有飞度那种发动机的嘶吼声。她拐了两个弯,上了一段坡道,又试了试刹车。
方向盘轻多了。她说。
回到展厅,苏婉下车,站在车旁边看了好一会儿。林晨站在她身后,没有问喜欢吗这种话。他知道苏婉做决定需要时间,催她反而适得其反。
乐乐已经爬上了后排,在宽敞的座位上翻来滚去。爸爸!这里好大!我可以躺下!
林晨看了苏婉一眼。苏婉的嘴角有一个很小的弧度——她努力忍着,但还是露出来了。
就这个吧。苏婉说。
林晨看了看价格:宋pLUS dm-i,旗舰版,落地23.8万。他心里早有预算——25万以内,正好在这个范围。
那就定这个颜色?他问。
白色。苏婉说,耐脏。
林晨差点笑出声。这就是苏婉,连选车的理由都是而不是。
签合同、交定金、办理贷款手续——新能源车免购置税,加上旧车置换补贴,实际支付比预想的少了一些。销售顾问说提车大约需要两周,正好赶上月底。
从4S店出来,乐乐蹦蹦跳跳地走在前面,嘴里喊着新车新车新车!苏婉走在林晨旁边,突然说了一句:这才几个月,变化太大了。
林晨愣了一下:什么几个月?
从你失业到现在,也就一年多的时间。苏婉的声音很轻,从月供都快交不起,到提前还了六十万房贷,到现在买车。你说,变化大不大?
林晨想了想,说:变化确实大。但你知道吗,最难的不是现在花钱的时候,而是之前攒钱的时候。那段时间每个月数着日子过,生怕哪天出个意外就把存款耗完了。现在花这些钱,心里反而踏实。
踏实?苏婉偏头看他。
嗯。因为我知道这些钱是系统赚的,不是运气。系统还在跑,钱还在涨。所以花钱的时候不是在吃老本,而是在合理分配。
苏婉没有接话。她只是伸出手,挽住了林晨的手臂。动作很自然,像是做了无数次一样。
中午,他们去了海岸城的一家餐厅吃饭。乐乐点了他最爱的炸鸡块和薯条,苏婉点了一份意面和沙拉,林晨要了一份牛排。三个人围坐在窗边,阳光从落地窗照进来,乐乐的脸上沾着番茄酱,苏婉用纸巾给他擦。
下个月新车到了,我们去哪里玩?林晨问。
去海边!乐乐立刻举手。
苏婉想了想:那就去大梅沙吧,远一点的地方也好。新车正好跑跑高速。
好,下个月找个周末去。
下午,一家三口又去了超市采购。苏婉推着购物车,乐乐坐在前面的儿童座位上,林晨跟在旁边拿东西。他们买了乐乐爱喝的酸奶、苏婉喜欢吃的坚果、还有一些之前苏婉总说太贵了不买的水果——车厘子、阳光玫瑰、蓝莓。
这些以前你从来不买的。苏婉看着购物车里堆成小山的水果。
现在买得起了。林晨把一盒蓝莓放进去,以后别再省这些了。孩子长身体,你工作也辛苦,吃好点。
苏婉看了他一眼,没有说又乱花钱。这是她第一次没有说这句话。
结账的时候,乐乐趴在收银台上,看着屏幕上跳动的数字,奶声奶气地问:爸爸,多少钱?
不重要。林晨说,重要的是我们一家人在一起。
乐乐虽然不太明白这句话的意思,但还是用力点了点头:对!在一起!
苏婉在旁边笑出声来,那是发自内心的、轻松的笑。
回家的路上,夕阳把鹏城的天际线染成了一片金色。林晨开着那辆空调时好时坏的飞度,后座坐着乐乐和安全座椅,副驾驶坐着苏婉。车子虽然旧了,但此刻车厢里弥漫着一种从未有过的轻松感。
苏婉看着窗外的晚霞,突然说:上次你说要去海边度假,是真的吗?
当然是真的。林晨看了一眼后视镜,新车到了之后,我们开车去。在大梅沙找一家好点的酒店,住两晚,玩三天。
苏婉说了一个字,然后转头看着窗外,不再说话。
林晨知道,她不是不想说更多,而是有些感受,语言装不下。
到家后,乐乐在客厅玩他的积木飞船,苏婉去厨房收拾买回来的东西。林晨走进书房,打开投资系统看了一眼——今天是非交易日,数据没有变化,但系统后台有个更新提示,风控模块需要升级到最新版本。
他顺手更新了,然后在笔记本上写下一行:
新车:宋pLUS dm-i,落地23.8万。海边度假计划:下月,三天两晚。
写完,他看着这行字,心里想:改善生活不是铺张浪费,而是在有能力的范围内,给自己和家人更舒适的体验。飞度开了六年,空调坏了都不修,不是因为不想修,而是因为没余钱。现在有余了,修也好、换也好,都是为了让日子过得不那么紧巴。
他想起失业那段时间,苏婉每天开着飞度去学校,夏天空调不凉快,冬天暖风不暖和,她从来没抱怨过一句。不是她不想开新车,而是她知道那时候家里没有这个余裕。
现在有了。那就换。
就这么简单。
第199章 投资教育
新车的第二周,林晨和苏婉坐在客厅里,面前摊着一堆培训班的宣传册。
这些宣传册是苏婉从学校同事那里收集来的——作为语文老师,她对教育信息的敏感度比林晨高得多。她把宣传册按类别分成了三摞:英语、编程、艺术,每一摞上面都用便利贴标注了价格、课时、地点。
我大概看了一下,苏婉拿起英语那摞,鹏城好的英语启蒙班不少,但价格差距很大。最贵的是那个瑞思英语,一年三万八;性价比高的是学而思的英语启蒙,一年一万二。
她放下英语那摞,拿起编程那摞:编程启蒙的班不多,我找了几家。最专业的是那个童程童美,但一年要两万多;还有一个小码王,一年一万五,口碑也还行。
最后是艺术那摞:钢琴我之前就了解过,一对一的话,一节课三百到五百,看老师水平。如果上集体课,一节一百五左右。
林晨听她一条条列出来,心里默默算了一下:如果三样都报,一年大概四五万。放在一年前,这笔钱是绝不可能的——那时候房贷都快还不上了,哪里有余钱报班?但现在,投资账户还在运转,工资每月稳定到账,月供降到了五千,完全有能力给乐乐最好的教育。
你觉得乐乐最需要哪个?他问苏婉。
苏婉想了想:英语是基础,必须学。编程是未来趋势,他自己也感兴趣。钢琴嘛……我自己教不了,但音乐素养对一个人的长远发展很有好处。
那就都报。
苏婉抬头看他:你确定?一年四五万。
确定。林晨说,以前是不行,现在是有这个条件了。乐乐五岁了,正是启蒙的关键期,不能因为钱的问题错过。
苏婉没有反驳,但她提出了一个实际问题:三样都报,时间够吗?乐乐还要上幼儿园。
周末排两样,平时排一样。林晨已经在脑子里画了一个时间表,周六上午英语,下午编程;周三晚上钢琴。
周三晚上?苏婉皱了皱眉,那我要接他放学,再送去钢琴课……
我去接。林晨说,周三我尽量早点下班。
苏婉看了他一眼,眼神里有欣慰,也有一丝心疼。她知道林晨说是什么意思——t厂的工作强度不小,两个项目并行,能准时下班的日子不多。但他还是在时间表里给自己留了位置。
那先这样排。苏婉把时间表记在了手机备忘录里。
周六上午,他们带着乐乐去了学而思的英语启蒙班试听课。
教室不大,坐了七八个小朋友,都是四五岁的样子。外教是个年轻的加拿大人,发音标准,表情夸张,一上来就带着孩子们唱英文歌。
乐乐一开始有点拘谨,紧紧拉着林晨的手不肯松开。但当外教拿出一个毛绒恐龙玩偶,用夸张的声音说hello, dinosaur!的时候,乐乐的眼睛立刻亮了。
dinosaur!他跟着喊了一声。
外教笑着把恐龙玩偶递给他:whats your name?
m Lele!乐乐大声说。
接下来半小时,乐乐跟着外教学了六个动物单词,唱了两首英文歌,玩了一个单词配对游戏。他全程都在笑,举手回答问题的时候蹦得比谁都高。
试听课结束后,乐乐拉着林晨的手说:爸爸,我还要来!
林晨蹲下来,看着他,以后每周六上午都来,好不好?
乐乐用力点头。
苏婉站在旁边,嘴角微微上扬。她不需要多说,乐乐的反应就是最好的答案。
下午是编程启蒙的试听课。
这家机构在南山科技园附近,教室里摆着几台平板电脑和一堆可编程玩具。老师是个年轻的男生,穿着格子衫,看着就像个程序员——事实上他确实是,下班后来兼职教小朋友。
课程内容很简单:用拖拽式编程让一个小机器人走路、转弯、捡东西。没有代码,没有语法,只有如果……就……的逻辑。
乐乐坐在平板前面,小手指在屏幕上拖来拖去。他很快理解了前进三步,右转,前进两步的概念,让机器人成功走出了迷宫。
好厉害!老师竖起大拇指,这个小朋友逻辑感很好。
林晨站在教室后面,看着乐乐专注地操作平板,心里涌起一种奇妙的感受。他想起自己五岁的时候,还在泥地里玩弹珠。而乐乐五岁,已经在学编程了。
不是因为他比别的孩子聪明多少,而是因为他有一个刚好懂这些、又刚好有能力给他提供这些的爸爸。
试听课结束后,乐乐冲出教室,抱着林晨的腿说:爸爸!机器人听我的话了!我让它走它就走!我让它转弯它就转弯!
因为你会告诉它怎么做啊。林晨蹲下来,这就是编程——告诉电脑你想让它做什么。
我以后也要像爸爸一样写程序!乐乐的眼睛亮晶晶的。
林晨摸了摸他的头:好啊,但你得先学会很多很多知识才行。
我不怕!乐乐挺着小胸脯,我会学!
苏婉在旁边,看着父子俩的对话,眼里有一种说不清的神色——骄傲、感慨、还有一丝微微的酸涩。她想起林晨失业那段时间,乐乐问她爸爸为什么不上班的那个晚上。那时候她不知道怎么回答,只能说爸爸在学习。
现在,乐乐终于可以骄傲地说我要像爸爸一样写程序了。
回家的路上,乐乐在后座上睡着了,手里还攥着编程课发的小贴纸。
苏婉坐在副驾驶,看着窗外流动的城市灯光,突然说:你知道吗,我小时候也想学钢琴。
林晨偏头看了她一眼:然后呢?
然后我妈说家里供不起。苏婉的语气很平静,我们那个小镇,钢琴课一节二十块,我妈觉得太贵了。
所以你想让乐乐学钢琴?
不只是让乐乐学,苏婉转过头来看他,是让他在该学的年纪,不用因为钱的问题错过。
林晨沉默了几秒,然后说:不会错过了。
苏婉点了点头,没有再说话。
晚上,乐乐睡下之后,林晨坐在书房里,在笔记本上写下了三个班的报名计划:
学而思英语启蒙:一年12,800元 小码王编程启蒙:一年15,800元 钢琴一对一:一年约18,000元(按每周一节、每节350元计) 合计:约46,600元
他看着这个数字,没有犹豫,直接在下面写了一行:
一年的投入,一生的回报。值得。
然后他打开手机,给三家机构分别发了报名信息。
乐乐不知道这些数字意味着什么。他只知道今天学了很多新东西,认识了很多新单词,让机器人走出了迷宫,还交了新朋友。他不知道爸爸为了这笔钱,曾经焦虑过多少个夜晚,失眠过多少个小时,在投资系统面前坐过多少个凌晨。
但没关系。这些是大人该操心的事。对乐乐来说,他只需要知道:爸爸支持他学任何他想学的东西。
这就够了。
第200章 父母的惊喜
周日下午,林晨坐在书房里,手机银行App的转账页面打开又关上,关上又打开。
转账对象:林建国。
那是他父亲的名字。
金额他昨晚就想好了——十万。不多不少,是他仔细掂量过的数字。太多了,父母会慌,会追问到底出了什么事;太少了,又没有意义,他们照样舍不得给自己花一分钱。十万,刚好能让他们存起来觉得安心,又能偶尔取出来改善一下生活。
但他犹豫的不是金额,而是怎么开口。
给父母钱这件事,远比他想象的难。不是因为舍不得,而是因为他太清楚父母会是什么反应——先是震惊,然后是推辞,最后是小心翼翼地收下,但绝对舍不得花。他们会把钱存进银行,选最长的那种定期,然后逢人便不提这事,只是在夜深人静的时候翻出存折看两眼,心里踏实。
林晨拿起手机,先给苏婉发了条微信:我想给爸妈转十万,你觉得呢?
苏婉的回复很快:早该给了。你上个月就念叨这事。
我怕他们不收。
你就说是年终奖金,公司发的。他们不懂互联网公司的薪酬结构,不会追问。
这不太好吧?
有什么不好的?苏婉回了一长段,你去年拿的年终奖确实有四个月工资,算下来也差不多十万。你又不是编的,只是把时间线模糊了一下。
林晨看着这段话,笑了一下。语文老师的逻辑,永远无懈可击。
他深吸一口气,点开转账页面,输入父亲的账号,金额100,000元,备注栏写了一行字:爸,这是公司年终奖金,你别省着,该花就花。
确认,指纹验证,转账成功。
他截了个图,然后拨通了老家的电话。
电话响了五声才接。是母亲的声音,带着午睡刚醒的朦胧:晨子?怎么这个点打电话?
妈,我刚给你和爸转了笔钱,你看看收到没。
转钱?转什么钱?母亲的声音一下清醒了,你又乱花钱!我们不要你的钱——
妈,你先看看手机。
那边传来窸窸窣窣的声音,大概是母亲在找手机。过了大概半分钟,她的声音变了调:十……十万?晨子,你转了十万?
嗯。公司年终奖金,最近才发下来。
奖金?母亲的声音里满是难以置信,你那个公司……奖金这么多的?
t厂待遇还可以,妈,你别担心。林晨尽量让语气轻松,这钱你和我爸拿着,想买什么就买什么,别省。
电话那头沉默了几秒,然后母亲的声音低了下来:你那边够花吗?乐乐上学要不要钱?房贷——
房贷已经提前还了一大半了,月供才五千,很轻松。林晨说,乐乐的兴趣班也报了,都不缺钱。妈,这十万是给你们花的,不是让你们替我省的。
母亲没有回答,但他听到了一个细微的声音——吸鼻子的声音。
我没事。母亲的声音恢复正常了,但语速比刚才慢了许多,你爸在旁边,你跟他说两句。
电话那头传来父亲的声音。林建国是个话少的人,一辈子在县城自来水厂上班,退休前是个普通的技术工人。他接电话的方式永远是先沉默两秒,然后用最简短的话回应。
钱收到了吧?
收到了。
那是我的奖金,你和我妈别省着——
知道了。
爸,你们该体检就体检,该买什么就买什么。妈那个膝盖一直不好,你带她去大医院看看——
知道了。父亲重复了一遍,语气没有波动。
林晨想说的话很多,但父亲的知道了像一道闸门,把多余的寒暄都挡在了外面。他了解父亲——林建国一辈子不说我为你骄傲这种话,但知道了三个字从他嘴里说出来,已经是最大的认可。
那你们保重身体,我挂了。
嗯。你也……注意身体。
多出来的半句话,林晨几乎以为自己听错了。父亲从来不说注意身体——在他看来那是一种矫情。但今天他说了,虽然声音很轻,像是怕被人听见似的。
挂了电话,林晨坐在椅子上,盯着手机屏幕发了一会儿呆。
他想起去年冬天,失业第三个月的时候。那天也是周日下午,母亲打电话来,问他过年回不回老家。他说,但心里清楚那时候卡里只剩五万块,回老家的路费和压岁钱都是负担。
母亲在电话里问:工作还顺利吧?
他说:顺利。
母亲沉默了几秒,然后说:你爸最近老念叨你。说你好久没打电话了。
他后来才知道,那段时间父亲每天晚上都看鹏城的天气预报。不是为了看天气,是为了确认他所在的城市一切正常。有一次鹏城降温,父亲特意让母亲打电话叮嘱他多穿衣服,但又怕他担心,只说是你妈让我打的。
父母就是这样。他们不会问你缺不缺钱,不会问你过得好不好,因为怕问了让你为难。他们只会看天气预报,只会旁敲侧击,只会把牵挂藏在一通看似随意的电话里。
而那时候的他,连一通诚实的电话都给不了他们。
现在,他终于能给一点实质性的东西了。虽然十万块钱对于他们来说可能永远都只是存在银行里的一个数字,但至少,这个数字代表着——儿子没让他们失望。
晚上,林晨正陪乐乐读绘本,手机震了一下。是大哥林枫发来的微信。
妈刚给我打电话了,说你给家里转了十万。
你跟他们说是年终奖金?
嗯。妈刚才哭了。
晨子有出息了。然后又说你别告诉他我哭了
林晨看着屏幕,眼眶一热。他低头掩饰,假装在给乐乐翻页。
大哥,你帮我看着点,别让他们把钱全存死期了。让他们该花就花。
我知道。但你也了解咱爸妈,存起来是肯定的了。林枫回了一句,又补了一行,不过这次,妈说想换个洗衣机。家里那个用了十二年了,甩干的时候整个卫生间都在震。
那就换。让她挑个好的。
林晨放下手机,看着乐乐认真指着绘本上的恐龙念d-i-no-saur,嘴角浮起一丝笑意。
给父母的十万块,也许最终他们只会花掉一小部分——换一台洗衣机,做一次体检,添几件新衣服。剩下的九万多,会安静地躺在银行的定期账户里,像一颗定心丸,让他们在每一个夜晚入睡前,觉得日子是踏实的。
这就够了。
他们不需要花完这笔钱。他们只需要知道,儿子有能力给。
周一上班,林晨坐在工位上,打开邮箱。有一封来自技术委员会的邮件,标题写着:关于第二季度内部技术论文征集的通知。
他点开看了几眼,正准备关掉,目光落在最后一行:
本季度优秀论文将获得公司级展示机会,并与q3核心技术规划挂钩。
q3核心技术规划——那是陈博士在部门周会上提过一次的东西。据说公司正在筹建一个AI中台项目,规模远超现有的任何项目。如果投资系统的论文能搭上这班车——
他关掉邮件,手指在键盘上停了停。
十万块给父母的事,已经过去了。但有些事情,才刚刚开始。
第201章 同事的羡慕
周二中午,林晨端着餐盘走进食堂,一眼看到张磊在角落招手。
张磊是林晨同组的算法工程师,比他小五岁,去年校招进来的。人不错,技术也扎实,就是嘴巴闲不住,什么话题都能聊半小时。
晨哥,这边!张磊把椅子往旁边推了推。
林晨坐下,扒了一口酸菜鱼。t厂食堂的酸菜鱼是招牌,鱼片嫩滑,汤底酸爽,中午来晚了根本抢不到。
最近忙什么呢?张磊一边吃一边问,我看你上周code Review特别快,是不是心不在焉?
没有,项目节奏正常。
别装了。张磊压低声音,我听说你做投资赚了不少钱?
林晨筷子顿了一下。谁说的?
技术分享会上你讲的那个量化交易系统啊,你以为大家听完就忘了?张磊凑过来,晨哥,说实话,你那个系统到底赚了多少?
林晨放下筷子,看了他一眼。张磊的表情不是八卦,而是一种真实的羡慕——那种刚毕业两年、月薪两万出头、看着鹏城房价望洋兴叹的年轻人特有的羡慕。
具体数字不方便说。林晨斟酌着措辞,但系统跑了一年多,收益还行。
还行是多还行?张磊追问,能不能带着我做做?
不行。
张磊愣了一下,没想到他回答这么干脆。
不是不愿意带你,林晨解释,投资这事跟写代码不一样。代码写错了顶多重构,投资出错了是真金白银的亏损。而且我的系统是根据我自己的风险承受能力设计的,换一个人可能完全扛不住。
我也扛得住啊,我——
张磊,你上个月是不是刚交了房租押一付三?
张磊沉默了。他确实刚交了房租——南山一个小单间,月租四千五,押一付三直接干掉一万八。对他来说,那已经是手头能拿出来的大部分现金了。
投资最怕的不是赚不到钱,而是用亏不起的钱去投资。林晨说,等你手头有半年以上不用碰的闲钱,再来考虑这事。
张磊没再说话,低头扒饭。
林晨看着他,心里清楚自己这番话他未必听得进去。年轻人嘛,看到别人赚钱就想跟着冲,这跟当年他看到web3火就冲进去是一样的。只不过他吃过亏,知道有些弯路自己走过就够了,没必要拉着别人一起走。
下午两点,团队周会。
陈博士坐在会议桌最前面,面前摊着一台笔记本。他今天穿了一件深蓝色的polo衫,头发比上次见面时白了一些——做AI研究的,头发白得比同行快。
上周ctR模型上线后数据不错,点击率提升2.3%,陈博士看着屏幕上的数据看板,但要注意,灰度只覆盖了5%的流量,全量之后可能会有波动。林晨,你盯一下。
好的。
另外,陈博士抬头扫了一圈,金融部门那边反馈,他们想加快推进量化合作项目。林晨,你这边能抽出时间吗?
可以,我已经把ctR模型的监控自动化了,日常不需要太多人工介入。
行,那你跟金融部门的李总约个时间,把合作框架定下来。
散会后,林晨刚回到工位,手机就震了一下。微信消息,来自一个不常联系的号码——是之前技术分享会上加的一个同事,叫周明,在推荐算法组。
林晨哥,听说你做量化交易?能不能聊聊?我最近想学学。
林晨看着这条消息,手指在屏幕上停了几秒。
上周技术分享会后,类似的私信他已经收到了七八条。有同组的人,有跨部门的,甚至有一个行政的同事也来问。他理解大家的心情——t厂的年轻人虽然工资不低,但在鹏城这个城市,买房、结婚、养孩子,哪一项不是压在头上的大山?看到身边有人用技术赚到了钱,想跟着试试是人之常情。
但他不能答应。
不是小气,而是他太清楚投资的风险了。他的系统虽然运行稳定,但那是因为他花了无数个夜晚调参、优化、加风控,而且投入的都是他能承受亏损的钱。让别人跟着做,万一亏了,他负不起这个责任。
他打了几个字又删掉,最后回复了一条:投资有风险,建议先系统学习量化交易的基础知识,等有了自己的判断能力再入场。
周明回了个,但林晨知道他大概率不会去学——大部分人想要的不是,而是。
他把手机放下,打开IdE,开始看金融部门发来的合作需求文档。
窗外,南山的午后阳光正盛。楼下的科技园路上,外卖骑手穿梭在车流里。这座城市的每个人都在拼命往前跑,生怕慢一步就被甩下。但林晨知道,有些事急不来——尤其是跟钱有关的事。
他想起去年那个夏天,自己坐在出租屋里,看着投资账户里五万块钱变成四万七的那种感觉。那不是数字的亏损,而是信心的崩塌。如果那时候有人拉他一把,告诉他别怕,继续持有,他也许会听——但如果继续亏呢?
投资的世界没有确定答案。他能做的,只是守住自己的系统,不让别人替他承担风险。
晚上回家,乐乐已经睡了。苏婉坐在沙发上看手机,屏幕上是一个母婴公众号的文章。
今天又有同事问投资的事。林晨在她旁边坐下。
你怎么回的?
没答应。
苏婉抬头看了他一眼:为什么?你不是说系统很稳吗?
稳是对我来说稳。林晨说,我亏得起五万,不代表别人也亏得起。而且每个人的风险承受能力不同,我的策略不一定适合别人。
苏婉想了想,说:你做得对。钱的事,亲兄弟都要明算账,何况同事。
但如果你以后做教育,教别人方法论是可以的。苏婉翻了个身面对他,授人以鱼不如授人以渔。
林晨愣了一下。他没想到苏婉会把这事上升到教育的层面。但她说的有道理——他可以分享技术、分享思路、分享经验,唯独不能分享账户。
以后再说吧。他说,先把t厂的事做好。
苏婉没有追问,转回去继续看她的文章。
林晨靠在沙发上,看着天花板发了一会儿呆。他想起张磊中午的样子——那双眼睛里有一种他很熟悉的东西,因为两年前他自己在深圳湾万象城的橱窗前,看着那些标价五位数的西装时,眼神也是一样的。
那不叫羡慕,叫渴望。渴望改变,渴望突破,渴望在三十岁之前证明自己不是这座城市里随时可以被替换的那个人。
但他不能替张磊走这条路。就像当初没有人替他走过来一样。
他拿起手机,打开投资系统的监控面板。一切正常运行,持仓数据、风控指标、收益曲线,每一项都在预设范围内。
他关掉手机,轻声说了一句:管好自己就行。
苏婉没有听到,她已经靠在沙发扶手上睡着了,手机屏幕还亮着,上面是一篇《如何培养孩子的阅读习惯》。
林晨帮她关掉手机,拿了一条毯子搭在她身上。
窗外,鹏城的夜色如常。
第202章 账户风险
周五下午三点,林晨的手机连续震了三次。
第一条是投资系统的风控告警:【紧急】A股子策略触发止损线,沪深300指数单日跌幅-3.8%,当前持仓浮亏12.7%。
第二条是补充通知:【风控】期货子策略同步告警,螺纹钢主力合约跌破支撑位,多头持仓已自动减仓50%。
第三条是最关键的:【系统操作】已执行预设止损方案:A股组合减仓至30%仓位;期货多头全部平仓;期权保护性看跌持仓保留。
林晨盯着屏幕,深吸了一口气。
他没有慌。这不是因为他不在乎钱,而是因为这套风控逻辑是他亲手写的——每一个阈值、每一条规则、每一笔止损指令,都是他在无数个凌晨反复推演过的。系统执行的动作,就是他在最冷静的状态下会做出的决定。
他快速打开管理面板,查看详细数据。
A股组合:上午开盘时账户浮盈约15万,到下午两点已经变成浮亏25万。这意味着从浮盈到浮亏,一天之内波动了40万。
期货:螺纹钢早盘跌了2%,午后加速下跌,收盘跌幅3.5%。系统的自动减仓指令在跌幅2.2%时触发,锁定了大部分利润,剩下的50%仓位在止损线被触发后全部平仓。
期权:保护性看跌期权的价值在暴跌中急速上升,对冲了部分A股的损失。
他算了一下整体损失:账户总资产从210万跌到大约168万。回撤幅度大约20%。
20%。
一天之内,他亏了42万。
这个数字放在一年前,是他一年的工资。放在两年前,是他全部积蓄的一多半。但现在,他坐在t厂的工位上,看着这串数字,第一反应不是恐惧,而是一种冷静的确认——系统在正常工作。
止损机制启动了,仓位降到了安全范围,期权对冲生效了。如果他没有提前设置风控,按照原来的满仓状态,今天的亏损会超过60万。
林晨,你脸色不太好。旁边的同事方旭探头看了一眼。
没事,看个邮件。他关掉面板,表情恢复如常。
方旭没有多问。在t厂,每个人电脑屏幕上都有不想让人看到的东西。
下午五点半,系统发来收盘后的日报:
【日报】今日账户回撤-20.1%,已触发历史最大回撤记录。当前仓位:A股30%,期货0%,期权对冲头寸保留,现金占比约45%。风控建议:维持低仓位观察,等待市场企稳信号。
林晨把日报存了下来,然后打开一个空白文档,开始写复盘分析。
他先列了暴跌的原因:美国加息预期升温,全球市场联动下跌,A股恐慌性抛售。这不是个股层面的风险,而是系统性风险——所有人都跑不掉,区别只在于谁跑得快。
然后他评估了系统的表现:止损执行及时,没有迟疑;仓位控制到位,没有追跌;期权对冲有效,减少了约8万的损失。
最后他写了一条结论:系统经受住了极端行情的考验。风控逻辑正确,执行效率合格。唯一的改进点:A股子策略的止损线可以更精细,按板块设置差异化阈值,避免一刀切导致部分优质标的被误杀。
写完复盘,他靠在椅背上,看着屏幕上那行回撤-20.1%。
42万。
说不在乎是假的。那是真金白银,是他花了无数个夜晚积攒起来的数字。但他在乎的不是数字本身,而是系统是否有漏洞。如果系统是对的,数字会回来的;如果系统有漏洞,那数字的消失只是时间问题。
他检查了三遍,确认系统没有漏洞。
那就只剩下一件事:等。
市场下跌不一定是坏事。对他来说,下跌意味着更低的买入机会——只要他判断对了方向。而他的判断依据不是感觉,不是新闻,不是别人的观点,而是系统给出的信号。
下班的时候,他刻意没有查看投资系统。走出公司大门,鹏城傍晚的风带着一点凉意,吹在脸上很舒服。
回家的地铁上,他把手机调成了勿扰模式。
到家的时候,乐乐正在客厅画画。看到林晨进门,他举起画纸:爸爸!你看我画的!
那是一幅歪歪扭扭的画,上面有一个方盒子、两个小人、一个太阳。
这是什么?
这是我们的家!这是爸爸,这是妈妈,太阳照着我们!
林晨蹲下来,认真地看着那幅画。方盒子是家,两个小人是他和苏婉,太阳是温暖。
他突然觉得,42万没那么重要了。重要的是这个方盒子里有人等他回来,有灯光亮着,有五岁的儿子举着画纸冲他笑。
画得真好。他摸了摸乐乐的头。
晚上,苏婉在厨房炒菜。林晨走进去,站在她旁边,没有说话。
苏婉看了他一眼:怎么了?
今天市场跌了不少。
跌了多少?
回撤了20%。一天亏了四十多万。
苏婉手里的锅铲停了一秒,然后继续翻炒:系统还在运行?
在。止损都执行了,仓位已经降下来了。
那就行了。苏婉把菜盛出来,亏钱的时候只要系统没坏,就不算坏事。你之前不是说过吗?回撤是投资的一部分。
林晨看着她的背影,心里涌起一股暖意。苏婉不懂量化交易,不懂夏普比率,不懂最大回撤,但她懂一个最朴素的道理——只要方向没走错,慢一点不要紧。
吃饭吧。苏婉把碗筷摆好。
饭桌上,乐乐叽叽喳喳地讲幼儿园的事,苏婉偶尔回应两句,林晨安静地吃饭。没有人提到那42万。
吃完饭,他帮乐乐洗了澡,读了两个绘本,把他哄上床。乐乐抱着他的胳膊,困得眼睛都睁不开了,还在嘟囔:爸爸明天还给我讲故事……
关上乐乐的房门,林晨站在走廊里,深吸了一口气。
42万的亏损,说不想是骗人的。但他知道,这恰恰是考验心态的时候——能不能在最难受的时刻坚持策略,不被情绪裹挟,这才是一个投资者真正的分水岭。
他拿起手机,看了一眼投资系统。一切正常运行,低仓位观察,等待企稳信号。
他关掉手机,走进书房,打开电脑,开始处理明天要用的项目文档。
该做什么做什么。市场的事,交给系统。
第203章 坚守策略
周六上午,林晨坐在书房里,面前摊着笔记本,上面写满了数据。
这是暴跌后的第一个交易日结束后的完整复盘。昨天市场的恐慌情绪已经充分反映在盘面上,今天港股和美股期货都没有继续大幅下挫的迹象,但A股下周一的开盘依然存在不确定性。
他的手机一直在响——不是投资系统的告警,而是微信群。
张磊把他拉进了一个叫t厂搞钱小分队的群,里面七八个人,都是组里对投资感兴趣的同事。群从昨晚开始就热闹得像过年:
今天跌成这样,要不要加仓?我上午割了,亏了两万。太惨了,要不要跑啊?我听说有人加了杠杆,直接爆仓了……
林晨看了一眼,没有回。他在群里只说过一句话:冷静,别做冲动决定。
张磊私信他:晨哥,你今天亏了多少?
不方便说。
你减仓了吗?
系统自动减的。
张磊发了一个的表情:我是不是该跑了?我那点定投的基金,今天直接亏了15%。
定投就别管了,跌的时候才是积累筹码的时候。
真的吗?我有点怕。
怕就对了。怕说明你在乎,在乎说明你用的是闲钱而不是赌资。继续定投,别看。
张磊回了个,然后就没再问了。
林晨放下手机,重新看向笔记本上的数据。
账户当前总资产:约168万。其中现金约75万,占比45%。A股持仓约50万,占30%。期权对冲头寸约43万。
这个仓位配置是他能接受的最保守状态。现金占比近一半,足以应对任何极端情况。A股持仓虽然浮亏,但都是经过系统筛选的优质标的,基本面没有问题。期权头寸则是对冲保险,市场继续下跌它能赚钱,市场反弹它的亏损有限。
他现在的策略很清晰:不追加,不减仓,维持当前仓位观察。
这是最难的操作——什么也不做。
人的本能是:跌了就想跑,涨了就想追。但量化交易的核心逻辑恰恰相反:止损要快,止盈要稳,最难的是在回撤期间管住手。
他想起两个月前,系统回撤了15%的时候,他也是这样坐在书房里,盯着屏幕上的绿色数字,心里像有什么东西在挠。那时候他差点手动加仓——因为回撤后的机会太诱人了。但他最终没有动,因为他知道,系统之所以设置那些止损线,就是为了防止人脑在情绪波动时做出错误判断。
事实证明了系统的正确——那次回撤后两周,市场反弹,账户不仅收回了失地,还创了新高。
这一次呢?他不知道市场什么时候会企稳,也不知道反弹的力度有多大。但他知道一件事:系统比他冷静。
他在笔记本上写下几行字:
回撤复盘要点:
止损执行及时,无迟疑,系统表现合格
期权对冲生效,减少损失约8万
当前仓位安全,现金占比45%,足以应对进一步下跌
下一步:维持低仓位观察,等待市场企稳
改进:A股子策略增加板块差异化止损
改进:考虑加入波动率指标,动态调整仓位上限
写完,他合上笔记本。
客厅里传来乐乐的声音,他在跟苏婉玩拼图。苏婉的声音温柔而耐心:这一块应该放在哪里呢?你看看,颜色对不对?
林晨走出去,站在走廊尽头看了一会儿。
苏婉坐在地毯上,乐乐趴在她旁边,两个人面前是一幅海洋主题的拼图,拼了大半,还差天空的部分。乐乐举着一块蓝色的碎片,在拼图上比来比去,怎么也找不到对应的位置。
妈妈,这块放不下。
你翻过来试试?
乐乐把碎片翻了个面,果然找到了位置。他拍了一下手:放下了!
苏婉摸了摸他的头,抬头看到林晨站在走廊里。
复盘完了?她问。
结论?
系统没问题,等市场企稳就行。
苏婉点了点头,没有追问细节。她低头继续帮乐乐找拼图。
林晨在沙发对面坐下,拿起手机,打开投资系统的管理页面。他盯着那个168万的数字看了几秒,然后退出了App。
不是因为不敢看,而是因为不需要看。
接下来的几天,他要做的事情只有一件:正常生活,正常上班,正常陪家人。至于投资账户——系统在盯着,他不需要盯着。
他放下手机,走向地毯,在乐乐旁边坐下。
爸爸来帮忙!乐乐把一堆蓝色碎片推到他面前。
林晨拿起一块,看了两秒,找到了位置。
爸爸好厉害!乐乐鼓掌。
苏婉在旁边笑了一下,没有说话。
阳光从阳台照进来,落在拼图上,落在三个人身上。窗外是鹏城正常的周末,楼下的商铺照常营业,外卖骑手照常穿梭。没有人因为股市暴跌就不过周末了。
林晨想,这才是正确的心态。市场的事交给市场,系统的事交给系统,他的事是陪家人过好每一天。
周日晚上的复盘,市场没有继续恶化。港股企稳,美股反弹,A股下周开盘预计会有修复。系统的风控建议也从维持低仓位调成了可适度加仓至40%。
林晨看了一眼,没有动。
不急,他在笔记本上写道,先观察一两天,等趋势确认了再加。
这是系统给他的底气——不用抢跑,不怕踏空。因为他知道,真正的机会不是在暴跌的恐慌中抄底,而是在恐慌消退、趋势确立后进场。
拼图已经完成了大半,乐乐指着那片蓝色的天空说:爸爸,明天我们一起把它拼完好不好?
明天。明天又是新的一天,又是新的一个交易日。但不管市场怎么走,他和乐乐的拼图,总会拼完的。
第204章 反弹修复
周一上午九点半,A股开盘。
林晨坐在工位上,一边打开开发环境,一边用余光扫了一眼手机上的行情App——沪深300指数高开1.2%,创业板指高开1.8%。市场在经历上周的恐慌性暴跌后,迎来了修复性反弹。
他没有立刻打开投资系统的管理面板。这是他给自己定的规矩:工作时间不主动看盘。系统有异常会自动推送,没有推送就说明一切正常。
上午十一点,手机震了一下。他低头看了一眼——不是告警,是日报的午间速览:
【午间速览】A股组合当前浮盈+3.5%,期货空单盈利+1.2%,期权对冲头寸小幅亏损。总资产约172万。较上周五回升4万。
172万。比最低点的168万回升了4万,但距离210万的峰值还有38万的差距。
他把手机放回桌上,继续写代码。
中午吃饭的时候,张磊端着餐盘坐到他对面,第一句话就是:晨哥,今天涨了!
你加仓了吗?
没有。
为什么啊?今天涨这么多,不是抄底的好机会吗?
林晨夹了一块鱼肉,慢慢嚼完才回答:你觉得今天涨了就是底?万一明天又跌呢?
张磊的表情僵了一下:那……你的系统怎么办?就这么看着?
系统维持40%仓位,林晨说,等趋势确认了再加。
好吧。张磊低头扒饭,显然不太理解这种看着涨不加仓的策略。
下午三点收盘,系统发来收盘报告:
【收盘报告】A股组合日内涨幅+2.8%,期货空单平仓获利+2.1%,总资产约174万。较回撤低点回升6万,较峰值回撤约17%。
修复在进行。虽然距离峰值还有距离,但方向是对的。
周三,A股继续反弹,沪深300指数再涨1.5%。系统自动将A股仓位从30%提升到了40%,同时开始逐步回补部分优质标的。
总资产回升到180万。
周四,反弹延续,但力度减弱。系统判断反弹动能减弱,暂不加仓。
总资产181万。
周五,市场出现小幅回调,跌幅0.3%。系统判断回调属于正常波动,维持仓位不变。
总资产180万。
一周过去,账户从168万回到了180万。虽然距离峰值还有30万的差距,但修复的速度比预期要好。
林晨在笔记本上写了本周的总结:
市场反弹第一周:
账户从168万修复至180万
回撤幅度从-20%收窄至-14%
系统操作:低仓位抄底+趋势确认加仓,节奏控制良好
改进点:回撤后的仓位恢复速度可以更激进一些,但当前保守策略也合理
结论:情绪管理是关键,未在暴跌时恐慌清仓,未在反弹时追涨,系统执行了预设逻辑
他满意地合上笔记本。这一周最大的收获不是账户修复了多少,而是验证了一个信念——系统比人脑靠谱。
他想起张磊在群里发的那些话:要跑吗?该抄底吗?今天又跌了怎么办?这些情绪他都有过,但他选择了信任系统,而不是被情绪牵着走。
结果证明他是对的。如果上周暴跌时他手动清仓,今天反弹的利润就跟他没关系了。
晚上,苏婉在厨房做饭,林晨站在旁边帮她洗菜。
市场回来了?苏婉问。她不是特意关心投资,但她知道林晨上周心情不太好。
回来了一些,还没到之前的高点。
那你现在什么心情?
林晨想了想:平静。
苏婉看了他一眼:你上周也很平静。
上周的平静是装的,林晨笑了一下,这周是真平静。
苏婉没有追问。她把切好的番茄倒进锅里,一声,香气弥漫开来。
乐乐从客厅跑进来,手里拿着一辆小汽车:爸爸看!我的车跑得快!
跑得快是因为你推得用力,林晨蹲下来,但真正跑得快的车,不是靠推,是靠引擎。
引擎是什么?
就是车的心脏。它不停地转,车就不停地跑,不用别人推。
乐乐歪着头想了想:爸爸,你也有引擎吗?
林晨愣了一下,然后笑了:有啊。
那你的引擎是什么?
坚持。他说,还有你妈妈。
乐乐似懂非懂地点了点头,又跑出去玩了。
苏婉在灶台前没有回头,但锅铲翻炒的节奏慢了半拍——她听到了。
林晨回到书房,打开投资系统。行情数据在屏幕上跳动,红色和绿色交替出现。他看着那条从168万回升到180万的曲线,像一条蛇在冬眠后慢慢苏醒。
这条曲线还会继续上升,他确信。不是因为他盲目乐观,而是因为系统已经证明了它的有效性——在最极端的行情下,它保住了本金;在反弹中,它抓住了机会。
他关掉面板,打开明天的项目文档。
投资的事,交给系统。生活的事,交给自己。
第205章 年终奖
十二月的鹏城,依然温暖如春。
林晨坐在工位上,盯着邮箱里刚收到的邮件。主题写着一行字:关于年度年终奖发放的通知。
每年十二月,t厂都会发年终奖。具体金额取决于部门绩效、个人绩效和公司整体营收。作为AI部门的Leader,林晨知道自己的绩效不会低——ctR模型上线后效果显着,金融合作项目也推进顺利,半年考核绩效还不错。
但具体能拿多少,他心里没底。
t厂的薪酬结构是16薪,即12个月工资+4个月年终奖。但这4个月只是基准线,实际上浮动空间很大:绩效A+的能拿到6个月甚至8个月,绩效b的可能只有3个月,绩效c就更少了。
他打开薪资系统,看了一眼月薪:52,000元。如果按4个月基准线算,年终奖就是208,000元。如果拿到6个月,就是312,000元。
他关掉页面,没有多想。年终奖的事不是他能控制的,能做的就是把手头的项目做好。
下午三点,陈博士把他叫到了办公室。
陈博士的办公室不大,但收拾得很整洁。书架上摆满了论文合集和技术书籍,桌上一台macbook pro,旁边放着一杯永远喝不完的美式咖啡。
陈博士指了指对面的椅子。
林晨坐下,等着他开口。
年终奖的事,你应该收到邮件了。陈博士没有绕弯子。
嗯,收到了。
你今年的绩效我给了A+。陈博士看着他,全部门只有两个A+,你是其中一个。
林晨愣了一下。他以为自己能拿A,没想到是A+。
ctR模型上线后的数据不错,金融合作项目也推得很快,陈博士说,而且你带的小组,团队氛围好,没有人抱怨加班。这些我都看在眼里。
谢谢陈博。
不用谢,这是你应得的。陈博士喝了一口咖啡,不过有一点我想提醒你。
什么?
年终奖的钱,别全花掉。陈博士的语气平淡,但眼神认真,年轻人在t厂赚了钱,第一件事是投资自己——买书、上课、积累人脉。别的事可以慢慢来。
林晨想了一下,没有告诉他自己的投资账户已经突破了百万。他只是点了点头:记住了。
周五下午,年终奖到账了。
林晨打开银行App,看到一条推送:您的尾号8876账户于12月15日收到转账:312,000.00元。
六个月。
他盯着那个数字看了三秒。三十一万二,加上月工资五万二,这个月的收入超过三十六万。如果把年终奖算进去,年收入大约在八十三万左右——52Kx16薪加上各种补贴和奖金,刚好是入职时谈的那个数字。
他想起去年这个时候,自己还在失业的阴影里挣扎。那时候年终奖是什么?是不存在的概念,是别人朋友圈里的炫耀,是他想都不敢想的东西。
他截了个图,发给苏婉。
年终奖到了。
苏婉回了一个数字:多少?
六个月。
六个月?苏婉的消息来得很快,那不是有三十一万多?
那边沉默了大约半分钟。然后苏婉发了一长段话:太好了!我们一直想给乐乐换个好点的书桌,还有你也该买几件像样的冬装了,你那件羽绒服穿了三年了,袖口都磨毛了。另外——
等等,林晨打断她,先别急着花。
为什么?
我想把这笔钱的一部分投进投资账户。
苏婉的消息停了。过了一会儿她回:你确定?市场不是刚跌过吗?
跌过了才便宜。林晨说,我复盘过了,市场已经企稳,现在加仓是好时机。
加多少?
十万。剩下十多万留作家庭储备金。
苏婉回了一个字,然后又补了一句:冬装还是要买的,你那件羽绒服真的不行了。
知道了。
林晨放下手机,打开投资系统,做了一笔入金操作:十万元转入投资账户。
系统提示入金成功。当前账户总资产:约190万(含新增入金)。
他看着这个数字,在心里算了一下:从最初的五万到现在的近两百万,中间经历了回撤、黑天鹅、暴跌,但最终都回来了,而且变得更多。
这就是复利的力量。不是线性的增长,而是像滚雪球一样,越滚越大。
他关掉系统,开始整理下周的工作计划。
周一的部门例会上,陈博士宣布了一个消息:公司明年将在大模型方向加大投入,AI部门会新增一个十人的大模型小组。
这个小组的Leader,陈博士看了林晨一眼,我希望你来带。
林晨愣了一下。他现在的小组是ctR模型方向的,五个人。如果再加大模型小组,等于他要同时管理两个团队,十五个人。
陈博,我现在的项目还没收尾——
ctR模型已经全量上线了,日常维护不需要你太多精力,陈博士说,金融合作项目也进入常规推进了。你有足够的精力接新方向。
林晨想了一下。大模型——这是当前AI领域最火热的方向,也是未来几年的趋势。如果他能在t厂率先拿下这个方向,无论是技术能力还是职业发展,都会上一个台阶。
我接。他说。
陈博士点了点头:好。下周我给你安排几个候选人面试,你挑人。
走出会议室的时候,林晨的手机又震了一下。是投资系统的推送:
【系统通知】A股组合加仓完成,当前仓位45%。市场趋势信号:企稳确认。
他看了一眼,嘴角微微上扬。
市场在企稳,事业在上升,家庭在稳定。
这一年,从一月的年终奖只有零,到十二月的年终奖将近二十万。从焦虑迷茫到从容自信。从五万到两百万。
他在手机备忘录上写了一行字:
年终奖:312,000。十万入投资账户,剩余10多万留家庭储备金。
然后他翻到下一页,写下另一个标题:
大模型方向:新的挑战。
这一年要结束了,但新的一年,才刚刚开始。
第206章 规划未来
元旦假期第一天,林晨在书房里铺开了一张A3白纸。
这是他的习惯——每到年底或年初,他都会用一张大纸把接下来一年的规划写下来。不是因为喜欢做计划,而是因为害怕没有方向。
两年前那张纸上写的是学AI、做投资系统、找新工作。一年前写的是进t厂、稳住系统、提升技术。每一张纸都贴在书架侧面,像路标一样,提醒他自己从哪里来,要往哪里去。
今年的白纸,他准备写新的内容。
你在干嘛?苏婉端着两杯热可可走进来。
做年度规划。
苏婉把热可可放在他旁边,探头看了一眼白纸——上面只有2024四个数字。
就这?她笑了。
还没写呢。林晨拿起笔,在最上面写了一行大字:家庭财务。
投资账户当前190万左右,如果按保守估计年化30%算,到年底有望突破250万。工资年收入到手大约60万,扣除家庭开支和乐乐教育费用,一年能存30万左右。
他在纸上写下几行数字:
投资账户目标:250万(保守) 工资收入:60万/年 家庭开支:30万/年 新增存款:30万/年 总资产目标:280万(保守)
这个数字对吗?苏婉指着最后一行。
保守估计。如果市场行情好,投资收益会更高。但我习惯用保守的数字做计划,这样超出预期时是惊喜,没达到预期时也不至于失望。
苏婉点了点头。她已经习惯了林晨这种工程师式的思维方式——什么都算,什么都留余量。
林晨在家庭财务下面写了第二行:住房改善。
现在的房子89平,两房一厅,他说,乐乐在长大,兴趣班的东西越来越多,书房快放不下了。如果再要一个孩子——
谁说再要了?苏婉打断他。
我说如果,林晨笑了一下,不管要不要,现在的房子确实小了。你看看客厅,乐乐的玩具箱已经占了半个沙发的位置。
苏婉想了想,承认他说得对。89平对于三口人来说刚刚够用,但刚刚够用住得舒服之间差了一整个台阶。
你想换房?
不是换,是看。林晨说,先看看鹏城湾的大平层,了解一下行情,不一定要买。
鹏城湾?苏婉的眼睛微微睁大,那里很贵吧?
不便宜,林晨在纸上写了一行数字,180平的大平层,均价大概在10万左右,总价1800万左右。首付三成的话要540万。
苏婉看着那个数字,沉默了。
540万首付。放在一年前,这个数字是天文数字。但现在,投资账户加存款,已经接近200万了。距离首付,好像不是那么遥远。
但我不打算现在买,林晨说,首付还差一些,而且投资账户的钱不能全拿出来。我想等账户到600万以上再考虑,到时候拿出一部分做首付,剩下的留在账户里继续滚。
那要多久?
如果市场正常,半年左右。如果行情好,更快。
苏婉看着他笔下的数字,没有立刻回应。她走到窗边,看着窗外的鹏城夜景,安静了一会儿才说:你知道吗,去年这个时候,你还在跟我说房贷压力太大了,能不能把乐乐的兴趣班停一个
林晨的手停在纸上。他记得那句话。那时候投资账户刚到五十万,还了亲友的借款后所剩无几,月供一万多压得他喘不过气。
一年时间,苏婉转过身来看他,从还房贷到看大平层。你真的想过这种变化吗?
想过。林晨说,正因为想过,才觉得更应该稳一点。市场不是永远涨的,上个月回撤20%就是提醒。所以我的计划是保守的——用保守的数字、保守的节奏、保守的目标。
他在纸上继续写第三行:职业发展。
大模型方向是新的挑战,他说,如果做好了这个项目,在t厂的发展空间会更大。陈博士已经暗示过,如果大模型小组做出成绩,下一轮晋升会有我的位置。
晋升意味着什么?苏婉问。
薪资涨到60K左右,年包可能到90-100万。更重要的是职级,从高级工程师到资深专家,管理的团队更大,接触的技术更深。
那你更忙了。
会忙一些,但不会像刚入职那阵子那么乱。林晨说,我已经学会平衡了。
苏婉看了他一眼,没有评论。她知道在林晨的字典里是什么意思——工作日九点前到家,周末陪家人,晚上十二点前睡觉。这些他做到了大部分时间,但不是全部。
林晨在纸上写了最后一行:家庭。
乐乐明年要上小学了,学区房的事要提前考虑。还有你的——
我的什么?
你的事。林晨说,你去年评高级教师,今年应该出结果了。如果评上了,你的收入也会提升。
苏婉笑了笑:你这是在规划我的人生?
不是规划,是支持。林晨说,你支持了我两年,现在轮到我支持你了。
苏婉没有说话,但她走过来,在白纸的空白处写下了一行字:
2024年目标:一家人开开心心。
林晨看着那行字,愣了一下,然后笑了。
这个目标太抽象了,他说,怎么衡量?
不需要衡量,苏婉拿起她的热可可,开心就是开心,不用算。
林晨低头看了看自己那张写满数字的白纸,又看了看苏婉写的那行字。一边是具体的数字、目标、时间线;另一边是简单的一句话。
他把笔放下,在苏婉那行字下面又写了一行:
附注:上述所有目标的最终目的,都是为了这一行。
苏婉看了一眼,嘴角翘了起来。
走吧,她把空杯子拿起来,该做晚饭了。规划做完了,日子还得过。
林晨站起来,跟着她走出书房。经过乐乐的房间时,他听到里面传来含糊不清的英语朗读声——乐乐在听昨天新下载的英语绘本音频,虽然大部分单词他都听不懂,但那股认真的劲头让人忍俊不禁。
林晨在门口站了一会儿,轻轻关上门。
规划写在纸上,未来在每一天里。
第207章 看房
元旦后的第一个周末,林晨和苏婉去看房。
他们约了中介小陈,一个二十六七岁的年轻人,穿深色西装,戴黑框眼镜,说话节奏很快但条理清晰。他是苏婉的同事推荐的,据说在鹏城湾片区做了三年,对户型和价格很熟悉。
林先生,林太太,小陈在小区门口等他们,鹏城湾是南山的高端盘,2019年交房,物业管理在南山排前三。我带你们看的几套都是180平以上的大平层,朝向好,景观视野都不错。
林晨看了看小区的大门——花岗岩门柱,铁艺大门,门口的保安亭里坐着两个穿制服的保安。绿化带修剪得整整齐齐,草坪上有几个业主在遛狗。
苏婉轻轻碰了碰他的手臂:比我们那个小区好多了。
林晨没有说话,跟着小陈走进了小区。
第一套在12楼,188平,四房两厅两卫。
小陈打开门,林晨第一眼看到的是客厅——面积比他们现在整个家还大。落地窗从客厅延伸到阳台,阳光毫无遮拦地洒进来,把木地板照得发亮。
客厅面宽6米2,小陈介绍,层高3米1,比一般的住宅高20公分。南向看鹏城湾海景,天气好的时候能看到香港。
苏婉走到落地窗前,看了看外面的景色。下面是小区的园林泳池,远处是鹏城湾的海面,几艘白色的游艇停在水面上,像画一样。
视野不错。她说。
林晨在客厅里走了走,估算了一下面积。他习惯性地用步数丈量空间——这是做投资的人的职业病,什么都要量化。客厅加餐厅大约70平,够大。主卧大概30平,朝南,有独立的衣帽间和卫生间。
乐乐的房间呢?苏婉问。
这里,小陈推开一扇门,次卧,朝东,面积18平,可以做儿童房。对面还有一个房间,可以做书房。
林晨走进那间次卧,站在窗前往外看。东向没有海景,但能看到南山科技园的楼群。早上阳光会从这边照进来,乐乐应该会喜欢。
多少钱?他问。
业主报价2000万,小陈说,诚心买的话可以谈,大概1800多万左右能拿下。
1800万。首付三成是540万。林晨在心里算了一下,他目前的总资产大约200万出头,距离首付还差一半多万。而且他不能把所有钱都拿去买房,投资账户里至少要留一部分继续运行。
看看下一套。他说。
第二套在8楼,200平,四房两厅三卫。报价1900万。
这套的客厅比第一套更大,主卧有独立的阳台,三个卫生间意味着早上不用抢。但朝向偏西,下午会晒。
苏婉在主卧的阳台上站了一会儿,看了看下面的小区花园。朝西夏天会热,她说,空调费不会少。
林晨点了点头。这套虽然大,但朝向不如第一套。
第三套在15楼,182平,四房两厅两卫。报价1880万。
这套是急售,小陈解释,业主做生意急需资金周转,所以价格低。但装修一般,需要自己重新弄。
林晨走进去看了看。装修确实是十几年前的风格,老式吊灯、深色木门、大理石地面。但格局不错,南北通透,采光也很好。
1700万能谈吗?他问。
1700万应该可以。但装修至少要80万,加上税费和中介费,总成本在1800万左右。
林晨没有表态,但心里已经有了初步的判断。
看完三套房,小陈带他们去小区的会所坐了一会儿。会所里有健身房、游泳池、儿童乐园,还有一个阅读室。乐乐如果住在这里,可以每天在小区里玩。
林先生,你觉得怎么样?小陈递上一杯水。
户型都看到了,我再考虑考虑。林晨说。
小陈点了点头,没有催促。他做了三年中介,见过太多看房的人——有的一看就定,有的看了十几次还拿不定主意。林晨这种一看就很理性的人,反而最难做判断。
走出小区大门,苏婉挽着林晨的手臂,沉默地走了一段路。
你最喜欢哪套?她问。
第一套。188平,朝南,2000万左右。
我也喜欢那套,苏婉说,但1800万……首付就要500多万。
林晨没有接话。
他们沿着海边步道慢慢走。远处有人在放风筝,风筝在冬天的天空里摇摇晃晃,像一只努力飞向高处的小鸟。
你觉得我们真的需要换房吗?苏婉突然问。
林晨想了想:需要不需要,要看怎么定义。现在的房子够住,乐乐的房间、我们的卧室、书房,勉强都能放下。但如果乐乐上小学了,他需要更大的学习空间。如果以后家里来客人,现在连个像样的客房都没有。
这些我都知道,苏婉说,我问的不是需不需要,而是值不值得。200多万首付投进房子里,投资账户就少了一大笔钱。复利效应会打折扣。
那就等。林晨说,我的计划是最保守的——不借钱、不杠杆、不急。如果市场好,半年就能攒够首付;如果市场不好,就等一年、两年,反正我们现在的房子还能住。
苏婉没有说话,又走了一段路。
海风吹过来,带着一点咸味。远处鹏城湾的海面上,有几艘帆船在移动,白色的帆在阳光下一闪一闪的。
其实,苏婉停下脚步,我最喜欢的是第一套的阳台。那个阳台那么大,放两把躺椅,晚上我们可以坐在一起看海。
林晨看着她的侧脸。阳光照在她脸上,眼角有细细的笑纹。
那就第一套。他说。
不着急,苏婉拉了拉他的手臂,再等等。你说的,不急。
嗯,不急。
他们沿着海边继续走。远处有人在遛一只金毛,狗叼着飞盘跑回来,尾巴摇得像螺旋桨。乐乐一定会喜欢这里。
林晨拿出手机,在小陈发来的房源信息里,把第一套标了个星。
不是现在,但已经有了方向。
第208章 首付计算
工作日的晚上,林晨坐在书房里,面前是笔记本电脑、计算器和一杯已经凉了的茶。
他打开了一个Excel表格,标题写着鹏城湾大平层购房方案。
这不是他第一次做这个计算。过去一周,他已经算了不下十遍。但每次算完,他都会发现新的变量——税费、中介费、装修费、搬家成本、月供压力、投资账户的复利折损——每一个数字都像一块拼图,需要找到最合适的位置。
他先列出已知条件:
房源:鹏城湾188平大平层(12楼那套) 业主报价:2000万 预计成交价:1800万左右 首付比例:30% 贷款利率:3.85%(首套房贷利率) 贷款期限:30年
然后是首付的明细:
房屋总价:18,000,000元 首付金额:5,400,000元 贷款金额:12,600,000元 月供(等额本息):约59,060元
他盯着月供的数字看了几秒。五万九。他现在住的这套房子月供才一万出头,这一下翻了近六倍。虽然他有投资收益作为补充,但这个数字仍然让他心里一紧。
他继续算:
当前总资产:
投资账户:约1,900,000元
工资存款:约350,000元(年终奖+半年积蓄)
总计:约2,250,000元
如果要拿出540万做首付,还差315万。这根本不是努努力就能凑出来的数字。
差距太大了。
他在这个数字旁边重重画了一个圈。
315万的缺口。就算他把投资账户全部清空、工资存款全部掏光,也只能凑出225万。更何况他不会清空投资账户——那是下金蛋的鹅,杀了就什么都没有了。
他又算了一组数据:
家庭月收入:
林晨工资:52,000元
苏婉工资:12,000元
投资收益(保守估计,190万本金x年化30%/12):约47,500元
合计:约111,500元
家庭月支出:
房贷月供(现住房):约12,000元
日常生活费:8,000元
乐乐教育费用:4,000元
其他支出(交通、餐饮、医疗等):5,000元
合计:约29,000元
月结余:约82,500元
这个数字看起来很健康。但要攒够540万的首付,光靠月结余需要五年多。唯一的路径是让投资账户先滚大,滚到足够覆盖首付的规模。
他换了一个方案:
方案b:不买鹏城湾,等一年以上。
投资账户继续滚动,按年化30%计算
一年后投资账户约:190万x1.3 = 247万
两年后投资账户约:247万x1.3 ≈ 321万
两年后工资存款新增:约50万
总资产约:371万
此时仍不够540万首付,需继续等
方案b的优势是保留复利效应,劣势是时间——即便等两年,首付还是不够。按这个速度,大约需要三到四年才能攒够首付。
但方案b的另一个劣势是房价在涨。鹏城湾的均价过去一年涨了8%,如果继续涨,两年后同样的房子可能要2100万,首付就要630万。他在追一个会跑的目标。
他又算了一组:
方案c:买稍小的户型。
选择鹏城湾130-140平的户型,总价约1300万
首付:390万
月供:约42,600元
需要再攒约18个月
方案c的总价更低,但130平和188平的居住体验差了一个档次。既然都花到1300万了,不如再多等一年买188平的。
他关掉Excel,靠在椅背上。
三个方案都不完美。方案A(现在买188平)根本买不起;方案b(等两三年)时间太长、房价可能在涨;方案c(买小户型)不够理想。
他打开手机,给苏婉发了一条消息:算了十遍了,还是没有完美方案。
苏婉回了一句:哪有完美方案?生活就是做选择。
林晨看着这句话,想了想,又回了一条:你说得对。那我们选b——继续等。让投资账户再滚一两年。
要等多久?
看市场。如果行情好,一年半到两年。如果特别好,也许一年。最慢三年。林晨打字很快,首付需要540万左右,投资账户现在的本金190万还不够。但它每个月都在涨。给它时间。
苏婉回了一个字,然后补了一句:但到时候不要因为等了太久,就随便买。还是要挑合适的。
当然。
林晨放下手机,重新打开Excel,在方案b那一栏旁边写了一行备注:
目标:投资账户达到550-600万时出手买房。按保守年化30%计算,大约需要2-3年。具体时间视市场行情灵活调整。如果遇到大行情,时间可能缩短至一年半。
他保存了文件,关掉电脑。
书房的窗外,鹏城的夜景依然灯火通明。他站在窗前,看着远处鹏城湾的方向——那里有一套他看中的房子,188平,朝南,落地窗,海景。
现在还买不起。而且不是差一点,是差很多。
但他不急。投资账户每个月都在涨,他的工资每个月都在存。复利是时间的朋友,他只需要给时间一点时间。
他拿起手机,打开投资系统的监控面板。当前总资产约225万(投资账户190万+工资存款35万)。距离550万的首付目标还有325万。按保守估计,大约需要两年。
他把手机放在桌上,走出书房。
他把手机放在桌上,走出书房。
客厅里,乐乐趴在茶几上画画,画的是一栋大大的房子,前面有一棵树,树上有只鸟。房子的窗户是黄色的,像亮着灯。
乐乐,你画的是什么?
我们的新房子!乐乐头也不抬,妈妈说我们要搬新家,新家有大大的阳台,我可以在阳台上种花!
林晨看了一眼苏婉,她正坐在沙发上看书,假装没听到。
他走过去,在乐乐旁边蹲下来,指了指那幅画:这房子不错,有花园有树。
还有游泳池!乐乐在画的角落加了几笔,爸爸你看,这是我游泳的地方!
林晨看着那幅歪歪扭扭的画,心里突然很踏实。
首付的事,他会想办法。但新房子里会有什么,乐乐已经帮他画好了。
第209章 投资持续盈利
三月,鹏城最舒服的季节。
林晨坐在工位上,投资系统的午间推送准时到达:
【午间速览】A股组合持仓浮盈+4.2%,期货子策略盈利+1.8%,期权对冲小幅亏损。总资产约248万。
248万。
他看着这个数字,嘴角微微动了一下。距离上次暴跌后的168万低点,账户已经恢复了80万,并且还在往上走。
他打开管理面板,查看了各子策略的详细表现。
A股子策略:过去三个月收益稳步上升,抓住了AI概念和消费复苏两条主线。系统在暴跌后将仓位从30%逐步加回到65%,加仓节奏和判断与市场走势基本吻合。
期货子策略:螺纹钢和铜的多头持仓在反弹中贡献了大量利润。原油期货的波动率在下跌后有所回升,系统重新布局了部分头寸。
期权子策略:保护性看跌期权在暴跌中发挥了关键对冲作用,虽然反弹后这些期权亏损了,但整体对冲效果远超成本。
黄金子策略:国际金价在避险情绪推动下持续走高,系统持有的黄金多头仓位盈利稳定。
夏普比率:2.3。这个数字在量化圈里已经相当优秀了——意味着每承担一单位风险,能获得2.3单位的超额收益。
最大回撤:-20%。虽然这个数字看起来吓人,但考虑到当时的市场环境,能控制在20%以内已经很不容易了。而且账户已经完全修复,并且创了新高。
他在笔记本上写下本月的数据总结:
3月投资复盘:
账户从168万修复至248万
三个月修复幅度47.6%
系统表现:暴跌后自动降仓、企稳后自动加仓,节奏把握准确
改进点:可适当提高暴跌后的加仓速度,但需注意风险
下一步:维持当前仓位,关注市场情绪指标
他合上笔记本,把数据存档。
过去三个月,他经历了一次完整的投资周期:暴涨—暴跌—恐慌—企稳—反弹—新高。这个过程验证了系统的有效性,也锻炼了他的心态。他不再因为账户波动而焦虑,因为他知道系统会处理好一切。
手机震了一下,是苏婉的微信:晚上乐乐兴趣班五点结束,你能接吗?我有个家长会。
没问题。
对了,你那个投资账户,现在到多少了?
林晨想了想,回了一句:快到250万了。
那边沉默了大约十秒。然后苏婉回了一句:那你离首付更近了。
嗯。如果继续这个速度,半年内应该能到280万。
别太乐观,苏婉回了一个笑哭的表情,上次你也是这么说的,结果一个月亏了40万。
那次不是亏了,是回撤。回撤和亏损不一样。回撤是暂时的,系统已经修复了。
好好好,你最厉害。苏婉发了一个的表情,然后补了一句,晚上乐乐想吃糖醋排骨。
知道了。
下午五点,林晨准时从公司出发去接乐乐。兴趣班在南山的一个培训中心,开车大约二十分钟。
到了培训中心门口,乐乐背着一个蓝色的小书包冲出来,看到林晨就扑过来抱他的腿。
爸爸!今天我写了一个小程序!
什么程序?
就是让小猫走迷宫的那个!乐乐兴奋地比划,我让它往左拐,它就往左拐!老师说我是班上第一个做完的!
林晨蹲下来,看着乐乐亮晶晶的眼睛:真厉害。回家给爸爸演示一下好不好?
他把乐乐抱上车,系好安全带,开车回家。
路上,乐乐在后座唱歌,是兴趣班学的一首英文歌。调子跑得厉害,但每个单词都咬得很清楚。
林晨一边开车一边听,嘴角不自觉地上扬。
回到家,苏婉还没到。林晨在厨房做糖醋排骨——这是他为数不多会做的硬菜,酸甜口,乐乐最喜欢。
排骨在油锅里炸到金黄,然后调酱汁:醋、糖、酱油、料酒,比例是3:2:1:1。这个比例是他试了五六次才调出来的,每次乐乐都竖着大拇指说。
糖醋排骨出锅的时候,苏婉刚好到家。她换了鞋走进厨房,看了一眼锅:可以啊,大厨。
乐乐点的菜。
我知道。苏婉洗手,开始准备蔬菜沙拉。
饭桌上,乐乐一边吃排骨一边讲今天编程课的事:爸爸,那个小猫,我让它走到终点的时候,它会叫一声!
你怎么做到的?
老师教了一个指令,叫play sound!我把它放在终点那里了!
很聪明。林晨摸了摸乐乐的头,以后你还可以让小猫走到终点的时候说我赢了
好!明天我就改!
苏婉在旁边看着父子俩的对话,嘴角带着笑意。她没有参与编程的讨论——那是属于父子俩的语言,她只需要在旁边看着,就够了。
吃完饭,林晨收拾碗筷,苏婉陪乐乐做作业。做完作业,林晨走进书房,打开投资系统。
账户总资产:2,483,521元。
距离250万只差17万。按当前的增长速度,也许两周就能突破。
他关掉面板,没有多看。
250万是个里程碑,但不是终点。他的目标是280万——那是在买了鹏城湾的大平层之后,投资账户还能保留足够本金继续运行的水平。
他拿出手机,看了看苏婉发的朋友圈。是一张乐乐做编程作业的照片,配了一句话:今天的小程序员,明天的大工程师。
底下有十几个赞,还有几个同事的评论:乐乐好厉害!这么小就学编程了!林晨基因强大。
林晨笑了一下,点了个赞。
晚上十一点,乐乐已经睡了,苏婉也回卧室了。林晨坐在书房里,看着窗外鹏城的夜景,想了很多。
他想起两年前,自己坐在出租屋的书桌前,盯着投资账户里仅剩的五万块钱,心里想的是能不能撑过这个月。两年后,他坐在同一座城市的另一间房子里,投资账户里有两百五十万,正在考虑买鹏城湾的大平层。
人不能两次踏入同一条河流。但他站的地方,确实是同一条时间线——从焦虑到从容,从五万到两百五十万,从失业码农到t厂的Leader。
他拿起笔,在笔记本上写了一行字:
投资持续盈利不是终点,而是新起点的入场券。
然后翻到下一页,开始写明天的工作计划。
第210章 升职机会
周三下午,林晨正在工位上调试大模型微调的代码,陈博士的微信消息弹了出来:
来我办公室一趟。
没有多余的话。陈博士的消息从来都是这样——短、准、不带情绪。
林晨保存代码,起身走向陈博士的办公室。一路上他在脑子里过了最近的项目进度:ctR模型运行正常,金融合作项目稳步推进,大模型小组的组建也在按计划进行。他想不到有什么问题需要单独谈话。
推开办公室的门,陈博士正站在白板前写东西。白板上画着一个组织架构图,林晨扫了一眼,发现AI部门的架构变了——原来他所在的小组被归入了一个更大的AI应用中心,而中心下面分出了三个小组:推荐系统、金融科技、大模型。
陈博士放下笔,坐回椅子上。
林晨坐下,等着他开口。
公司做了组织调整,陈博士直入正题,AI部门升级为AI应用中心,下面三个小组,你是大模型小组的Leader。
这个我知道,之前您说过。
还有你不知道的,陈博士看着他,中心需要设一个总的负责人。我的意思是,你来做这个总Leader。
林晨愣了一下。他以为陈博士叫他来是谈项目的,没想到是升职。
总Leader?那推荐系统小组和金融科技小组——
都归你管。陈博士说,三个小组加起来二十多个人,你是他们的直属上级,向我汇报。
林晨沉默了几秒。这不是简单的加人,而是职级的变化。从管理五个人到管理二十多个人,从小组Leader到中心总Leader,这中间差的不只是人数,更是管理跨度、决策权限和责任范围。
为什么是我?他问。
因为你做得好。陈博士的语气很平淡,像是在说一件再正常不过的事情,ctR模型上线后效果超出预期,金融合作项目推进顺利,大模型小组虽然刚组建,但你的方向是对的。这些事情不是所有人都能同时做好。
他顿了顿,补充道:另外,你有一个别人没有的优势。
什么?
你做过投资系统。陈博士看着他,你不只是懂算法,你还懂怎么把算法变成钱。这一点,纯粹的算法工程师做不到。
林晨想了想,没有反驳。他的投资系统确实是别人没有的差异化优势——它不只是一个项目,而是他理解数据、理解风险、理解商业的证明。
薪资方面,陈博士拿起桌上的文件递给他,你看看这个。
林晨接过来一看,是一份职级调整方案:
职级:t3-2(资深专家) 薪资:65K x 16薪 管理范围:AI应用中心(3个小组,25人) 汇报对象:陈博士(AI部门总监) 年度绩效奖金:根据部门绩效浮动,预计6-10个月
他盯着65K x 16薪那行字。这意味着年薪保底104万,加上绩效奖金可能到130万以上。比他现在的52K x 16薪涨了25%。
你考虑一下,陈博士说,下周给我答复。
林晨把文件折好,放进口袋里。不用考虑了。
我接。
陈博士看了他一眼,嘴角微微动了一下——那是他笑的方式,几乎看不出来。我就知道你会接。
为什么不接?林晨站起来,更多的责任,更高的薪资,更宽的平台。这是我一直在等的机会。
那就好好干。陈博士站起来,拍了拍他的肩膀,下周一开始,你先跟三个小组的Leader做一次一对一,了解他们的情况。然后定一个季度的oKR。
好的。
走出陈博士的办公室,林晨没有立刻回工位。他走到茶水间,给自己倒了一杯咖啡,站在窗前看着楼下的科技园。
65K x 16薪。这个数字,两年前他做梦都不敢想。那时候他面试web3公司,28K都觉得是救命稻草;后来入职t厂,32K已经是意外之喜。现在,他的月薪即将突破六万五,年薪保底百万,而且还有绩效奖金和升职空间。
他想起自己三十五岁失业那年,坐在出租屋里,看着银行卡余额从三十万一点点往下掉。那时候他想,这辈子是不是就这样了?三十多岁,上有老下有小,被行业淘汰,连面试都过不了。
但他没有放弃。他学了AI,做了投资系统,进了t厂,升了职。每一步都不容易,每一步都是硬撑过来的。
现在,他站在t厂茶水间的窗前,手里端着一杯咖啡,看着楼下的车流和人潮。他不再是那个焦虑的中年人,而是一个即将管理二十五人团队的Leader,一个投资账户里有近两百五十万的投资人,一个有能力给家人更好生活的丈夫和父亲。
手机震了一下,是苏婉的消息:今晚想吃什么?
他回了一条:什么都行。对了,有件事要跟你说。
什么事?
我升职了。
那边沉默了大约十秒。然后苏婉回了一条:真的?!
嗯。薪资涨到65K,管理整个AI应用中心。
消息发出去后,苏婉没有立刻回复。过了一分钟,她发了一条语音。林晨点开,听到苏婉的声音带着一丝颤抖:林晨,你做到了。
他站在茶水间里,听着这条语音,反复听了三遍。
然后他回了一句:是我们做到了。
晚上回到家,乐乐已经睡了。苏婉坐在客厅等他,茶几上放着一瓶红酒——是他们结婚时没喝完的那瓶,一直舍不得开。
今天值得庆祝。苏婉倒了两杯。
林晨接过杯子,跟她轻轻碰了一下。以后还有很多值得庆祝的日子。
少喝点,苏婉抿了一口,明天乐乐还要上学。
就一杯。
他们坐在沙发上,喝着那瓶放了三年的红酒。红酒已经过了最佳饮用期,口感有些偏酸,但他们都不在意。
窗外,鹏城的夜色安静而璀璨。两年前他站在出租屋的窗前看同样的夜景,心里是焦虑和迷茫。现在他站在另一个窗户前,手里是一杯有些发酸的陈年红酒,身边是一个永远支持他的女人。
他想起一句话——不是名人说的,是他自己写的,写在那张年度规划白纸的角落里:
所有努力过的日子,都不会被辜负。
第211章 接受挑战
周一早上八点半,林晨比平时早到了半小时。
他坐在工位上,面前摊着一份手写的组织架构图。三个小组,二十五个人,三个Leader——推荐系统的老周,金融科技的小李,大模型的小陈。他需要在一个星期内完成和所有人的单独谈话,了解他们的工作状态、困难和期望。
他泡了一杯黑咖啡,打开笔记本,写下了今天的谈话提纲。
第一站:推荐系统小组,周浩。
周浩是个三十二岁的工程师,比林晨小三岁,在t厂待了四年。他技术扎实,话不多,是那种干活不用催的类型。但最近几个月,推荐系统的ctR提升遇到了瓶颈,周浩明显有些焦虑。
ctR的优化到极限了,周浩坐在林晨对面,语气平淡但有些无奈,目前模型的特征已经用了三百多个,再加特征对效果提升不大。我试了几个新的模型架构,效果都不如现有的deepFm。
你觉得瓶颈在哪?
数据。周浩说,我们有行为数据、画像数据、场景数据,但缺少实时数据。用户现在的兴趣是五分钟前的,但我们推的是昨天的。这个延迟太大了。
林晨想了想:实时特征的问题,我之前在投资系统里处理过。延迟数据和实时数据是两个世界。你有没有考虑过流式特征?
考虑过,但工程成本太高。周浩摇头,我们需要一个实时特征平台,光搭建就要两个月。
两个月可以。林晨说,你出个方案,我帮你协调资源。
周浩抬眼看了他一眼,像是有些意外。你确定?这个项目之前报过,被驳回了。
那是因为之前没有总Leader推。林晨说,现在有我了。
第二站:金融科技小组,李婷。
李婷是个二十八岁的女生,北大硕士毕业,入厂两年。她聪明、干练、说话快,是那种永远在赶进度的人。
金融合作项目的进度在预期内,李婷打开她的笔记本电脑,调出项目甘特图,模型部分完成了70%,数据接口完成了80%,前端完成了50%。最大的问题是合规——金融产品的审批流程太长了,我们还在等证监会的批文。
批文什么时候能下来?
最快两个月,最慢半年。李婷叹了口气,这是不可控的。
不可控的就先放着,把可控的做好。林晨说,模型和前端都加速推进,等批文下来直接上线。
李婷合上电脑,犹豫了一下,林晨——啊不,林总,我能问你一个问题吗?
叫我林晨就行。
你做投资系统的那些经验,能分享给我们吗?比如风控模型、回测框架什么的。我们现在的金融模型还比较初级,很多地方需要优化。
林晨想了一下:涉及核心策略的部分不能直接分享,但方法论可以。我下周五安排一次技术分享,讲讲量化交易中的风控设计和回测验证。
太好了!李婷的眼睛亮了。
第三站:大模型小组,陈铭。
陈铭是林晨自己招的人——准确地说,是陈博士推荐过来的。他之前在另一个大厂做大模型,有两年经验,技术视野开阔,但有些眼高手低。
大模型微调的进度还行,陈铭推了推眼镜,但算力不够。我们现在只有四张A100,训一个7b的模型要跑三天。如果要做13b甚至70b,根本跑不动。
算力的事我来协调。林晨说,你先把7b的微调做好,效果验证过了再申请更多算力。
陈铭顿了一下,林晨哥,有个想法不知道能不能说。
我觉得我们现在做的微调太保守了。应该直接从预训练开始,做我们自己的大模型。微调别人的模型,天花板太低了。
林晨没有立刻回答。陈铭说的有道理——微调确实有天花板,但从零开始预训练的代价是巨大的,需要数百张GpU和海量数据。在当前的资源条件下,这不现实。
你的想法我记下了,林晨说,但目前我们的资源只够做微调。先把微调做到极致,等资源到位了再考虑预训练。
陈铭看起来有些失望,但没有反驳。
三场谈话,三个不同的问题,三个不同的人。林晨在笔记本上写下了几个关键词:实时特征、合规批文、算力瓶颈、预训练方向。
这些问题他以前也遇到过——在投资系统的开发过程中,算力不够、数据延迟、合规风险,每一个都是拦路虎。但那时候他只有自己一个人,没有团队,没有资源,靠的是一个人的硬扛。
现在不同了。他有二十五个人,有t厂的算力支持,有陈博士的信任。他要做的不是一个人硬扛,而是把所有人的力量拧成一股绳。
他拿起笔,在笔记本上写下:
AI应用中心一季度oKR:
推荐系统:上线实时特征平台,ctR提升3%
金融科技:完成模型和前端开发,等待合规审批
大模型:7b微调模型上线,效果超越基线10%
团队:建立跨组协作机制,每双周一次技术分享
写完,他合上笔记本。
新的角色,新的挑战,新的开始。
下午六点,他准时收拾东西离开公司。走出大楼的时候,夕阳正好照在玻璃幕墙上,反射出一片温暖的金色。
他想起两年前那个夏天的傍晚,他拎着一个纸箱走出跨境电商公司的情景。那时候他以为自己走到了绝路,没想到两年后,他站在了更高的起点上。
手机响了,是苏婉的来电。
今晚吃什么?
你定。
那做可乐鸡翅吧,乐乐说想吃。
对了,升职的事你跟爸妈说了吗?
还没。
打个电话吧,他们知道了一定很高兴。
林晨想了想,拨通了老家的电话。电话响了三声,是父亲接的。
我跟您说个事,我升职了。
那边沉默了两秒。然后父亲说了一句:好好干。
和上次给父母转十万时一样的三个字。但林晨知道,这三个字里的分量,比一万个赞美都重。
他挂了电话,开车回家。
夕阳在他身后缓缓落下,把鹏城的天际线镀上了一层金色。
第212章 团队管理
升职后的第二周,林晨发现一个问题:他不会管理。
不是说他不会安排工作、不会开周会、不会写oKR——这些他都会。但管理二十五个人和管理五个人是两回事。五个人你可以每天跟每个人都聊一遍,知道他们在做什么、遇到什么困难、心情好不好。二十五个人你做不到。
周一下午的团队周会上,他站在会议室的白板前,看着下面二十多张脸,有些面孔他连名字都还没记住。
这周的进度汇报从推荐系统开始,他说,周浩,你先来。
周浩站起来,用最简短的语言汇报了实时特征平台的进展:架构设计完成,开始开发,预计两周出原型。
好。小李?
金融科技的李婷汇报了合规批文的最新进展:还在等,没有新消息。模型部分完成了80%,前端60%。
陈铭?
大模型的陈铭汇报了微调的进度:7b模型的微调在进行中,预计本周完成第一轮训练。
三个人汇报完,林晨点点头,刚想说散会,坐在后排的一个女生举了手。
林总,我是推荐系统的张悦,我想问一下,实时特征平台的数据源怎么解决?我们需要接入实时日志流,但日志团队的排期已经到下个月了。
林晨愣了一下。张悦——他记得这个名字,是周浩小组的前端工程师,入职一年。但她的这个问题,他一时答不上来。
这个我后续协调。他说。
张悦点了点头,坐下了。但林晨看到她脸上的表情——不是不满,而是某种果然如此的平淡。
散会后,林晨坐在会议室里,看着白板上的oKR,突然意识到一个问题:他写了目标,但没写路径。目标谁都会写——ctR提升3%模型超越基线10%——但怎么达到这些目标,谁来协调依赖关系,谁来解决资源冲突,他还没有想清楚。
他打开笔记本,在空白页上写下几个问题:
1. 我是不是在用管理五个人的方式管理二十五个人? 2. 团队成员之间的协作关系是什么? 3. 我每天应该花多少时间在管理上、多少时间在技术上? 4. 哪些决定我应该自己做,哪些应该授权给组Leader?
他盯着这四个问题,发现自己一个都答不上来。
晚上回家,苏婉正在给乐乐辅导作业。乐乐坐在餐桌前,面前是一本算术练习册,铅笔在纸上歪歪扭扭地写着3+5=8。
爸爸!乐乐看到林晨,立刻跳下来扑过去,今天老师表扬我了!
表扬你什么?
表扬我算术做得快!
真棒。林晨蹲下来摸了摸他的头,3加5等于几?
乐乐大声说,4加6等于10!9减3等于6!
林晨笑了一下,放开乐乐,走进厨房。苏婉正在切菜。
今天怎么了?她看了一眼他的表情,脸色不太好。
管理上遇到问题了。
什么问题?
林晨把今天的情况说了一遍——团队周会上答不上来问题,oKR写了目标但没写路径,二十五个人管理不过来。
苏婉放下菜刀,擦了擦手,想了想:你觉得问题出在哪?
我不知道怎么管这么多人。以前管五个人,我每天都能跟他们聊,了解每个人的状态。现在二十五个人,我连名字都记不全。
那你为什么要记住每个人的名字?苏婉问了一个反直觉的问题。
什么意思?
你是Leader,不是老师。老师才需要记住每个学生的名字、成绩、家庭情况。你只需要记住三件事:目标、路径、人。目标是你定的,路径是你选的,人——你只需要知道三个组Leader的状态,让Leader去管他们组的人。
林晨想了想:你的意思是,我不应该管到每一个人,而是应该管到Leader,让Leader管人?
对。你管三个人,每个人管八到十个人,这样你只需要做三件事:定方向、解难题、协调资源。具体的事让Leader去做。
可是张悦那个问题——实时特征的数据源——我不能不回应。
你可以回应,但不一定要自己解决。让周浩去跟日志团队协调,你只负责在背后推动——比如跟日志团队的Leader打个招呼,说这个项目优先级高。
林晨沉默了几秒。苏婉说的对。他一直在用管小组的方式管大团队,事无巨细都想自己搞定。但管理不是写代码——代码要一行一行写,管理要一层一层分。
语文老师也能教管理学?他笑了一下。
语文老师教的是逻辑,苏婉把菜扔进锅里,管理学最核心的逻辑就是分而治之。你又不是第一次用这个方法——你的投资系统不就是分策略、分品种、分层管理的吗?
林晨一愣。她说的没错。投资系统就是分层管理的:策略层决定买什么,执行层决定怎么买,风控层决定什么时候卖。他从来不会让策略层去管执行细节,也不会让风控层去操盘。
那他为什么不把同样的逻辑用在团队管理上?
第二天,他来到公司,做的第一件事就是修改oKR。
原来的写法是:推荐系统:上线实时特征平台,ctR提升3%。 改成:推荐系统(周浩负责):上线实时特征平台(我协调日志团队资源),ctR提升3%。
然后他给周浩发了一条消息:实时特征数据源的事,我来协调。你专注技术方案,有问题找我。
周浩回了一个。
他又给张悦单独发了一条:数据源的问题我已经在协调,预计两周内解决。你先做前端对接的部分,接口文档让周浩发给你。
张悦回了三个字:收到,谢谢。
林晨看着这六个字的回复,松了口气。他不确定张悦是不是真的满意了,但至少他给出了明确的答案和时间线。
接下来的几天,他把更多的时间花在管Leader而不是管所有人上。每天早上跟三个Leader开十五分钟的站会,了解进度和问题;每周一次全员周会,只做进度同步和方向传达;其他时间,他回到自己最擅长的事情上——写代码、调模型、看数据。
效果很快就显现了。周浩拿到了数据源的资源,实时特征平台的开发速度加快了。李婷不再为合规批文焦虑,而是把精力集中在模型优化上。陈铭虽然对只做微调还有想法,但至少在执行层面没有再拖延。
一周后,林晨在笔记本上写下:
管理心得:
Leader管方向,不管细节
分层管理,不要越级
协调资源是Leader最重要的职责之一
团队的信心来自于Leader给出的明确答案,而不是模糊的安慰
他合上笔记本,看了一眼时间。下午五点,该准备下班了。
走到门口的时候,张悦叫住了他:林总,数据源的事,周浩说已经协调好了,这周就能接入。谢谢您。
不客气。林晨点了点头,有问题随时找周浩或者我。
张悦笑了笑,转身走了。
林晨看着她的背影,心里想:也许管理没有他想的那么难。难的从来不是管人,而是学会放手。
第213章 技术与管理
三月中旬的一个周五晚上,林晨坐在书房里,面前是两块屏幕。
左边屏幕是投资系统的监控面板,绿红交替的数字显示着各子策略的运行状态。右边屏幕是代码编辑器,光标停在一行注释上。
他已经盯着这行注释看了十分钟。
问题是这样的:金融科技小组的李婷在做风控模型的时候,遇到了一个性能瓶颈。原始数据需要做特征工程,但特征计算的延迟太高,导致实时性不够。李婷试了几种优化方案,效果都不理想,最后找到了林晨。
林总,这个特征计算的延迟有200毫秒,但我们的要求是50毫秒以内。我试了缓存、预计算、异步加载,都不行。
林晨看了一眼代码,立刻意识到问题所在:特征计算用了一个嵌套的SqL查询,每次请求都要查两次数据库。这在离线场景下无所谓,但在实时场景下就是性能杀手。
他本能地想自己写一个优化方案——毕竟这是他最擅长的事情。投资系统的特征计算延迟只有15毫秒,他用的是自己设计的内存数据库加增量更新的架构,这个方案完全可以用在金融模型上。
但他刚要把方案写下来,又停住了。
如果把方案直接给李婷,她的问题解决了,但她不会学到东西。下次遇到类似的性能问题,她还是会来找他。
他想起苏婉那天的提醒:你是Leader,不是救火队员。
于是他换了一种方式。他在代码旁边加了一行注释:问题在SqL嵌套查询,每请求两次数据库访问。想想怎么把数据库访问减少到零次。
然后他把代码推回给李婷,附了一条消息:别急着优化SqL。先想想怎么让特征计算不需要访问数据库。提示:投资系统是怎么做的?
半小时后,李婷回了一条消息:内存缓存?把特征预加载到Redis里,每次请求直接从缓存读?
对了一半。林晨回道,缓存只是存储,你还需要增量更新。不然数据变了,缓存就是脏的。
又过了一小时,李婷发来了一段代码:林总你看这样行不行?特征预加载到内存,数据变更时通过消息队列增量更新。我估算了一下延迟,大概20毫秒。
林晨看了代码,点了点头。方案没有他投资系统的方案优雅,但核心思路是对的——零数据库访问,增量更新。性能从200毫秒降到20毫秒,远超目标。
可以。再考虑一下:如果某次增量更新失败怎么办?缓存和数据库不一致怎么办?
加一个校验机制?每隔一定时间对一次全量?
对。这个校验间隔你自己定,但要考虑最坏情况。
李婷回了一个的表情,然后又补了一句:谢谢林总,不直接给答案而是教方法,比那些直接改代码的Leader好多了。
林晨看着这条消息,微微一笑。
他没有告诉李婷的是,他差点就直接给答案了。差一点。如果是一个月前的他,一定会第一时间写出最优方案,然后让李婷照着做。那样更快、更高效、更不容易出错——但那样他就永远是一个人在战斗,而不是一个团队在成长。
他回到自己的代码上,继续写大模型微调的脚本。
但现在他发现另一个问题:写代码的时间变少了。
以前他每天能写四到五个小时的代码,现在能写两小时就不错了。剩下的时间全被管理事务占满了——周会、一对一谈话、资源协调、oKR跟进、跨部门沟通。他开始理解为什么很多技术Leader最终都变成了纯管理者——不是他们不想写代码,而是时间真的不够。
他在笔记本上写下:
时间分配问题:
管理:60%(会议、沟通、协调)
技术:30%(代码review、方案设计)
个人:10%(学习、思考)
理想状态应该是管理40%、技术40%、个人20%。怎么调整?
他想了想,在旁边加了几行:
解决方案:
周会从1小时压缩到30分钟,只说结论不说过程
一对一谈话从每周一次改为每两周一次
技术方案让Leader先出初稿,我只做review和决策
每天留2小时不被打扰的专注时间,只写代码
他把笔记本合上,看了一眼时间。晚上九点半。
今天他又加班了。虽然给自己定的规矩是九点前回家,但升职之后,这个规矩越来越难遵守。不是事情多到做不完,而是总有些问题需要在当天解决——团队的、项目的、跨部门的。
他给苏婉发了一条消息:可能晚一点回,你别等我了。
苏婉回了一句:乐乐的绘本今天你讲。
回到家的时候已经十点半了。乐乐已经睡了,苏婉在客厅看书等他。
绘本明天补上,林晨在她旁边坐下,最近加班多了。
我知道。苏婉合上书,升职就是这样,刚开始会忙一阵。
不只是忙,林晨想了想,是时间不够用。以前我每天能写五个小时的代码,现在两小时都挤不出来。管理的事情太多,技术的时间太少。
那你得学会分,苏婉说,管理的事情分给三个Leader,技术的事情分给团队。你自己只做最核心的部分——方向、架构、关键决策。
我知道,但很多时候我不放心。
不放心什么?怕他们做不好?
怕他们走弯路。
苏婉看了他一眼:走弯路也是学习。你当年不也走了很多弯路吗?那些弯路让你成了现在这个样子。
林晨沉默了。她说的对。投资系统的每一个参数,他不是一次调对的;ctR模型的每一次优化,他不是一遍做对的。他之所以会,是因为他犯过所有的错。
如果他不允许团队犯错,团队就永远学不会。
他说,我试试多放权。
不用试试,苏婉站起来,直接做。明天开始,每天最多加班到八点。超过八点你就回来,剩下的交给Leader们。
如果他们搞不定呢?
那就让他们搞不定一次。苏婉说,搞不定的才是他们真正要学的。
林晨看着她的背影走进卧室,心里想:有时候,语文老师比技术Leader更懂管理。
第二天,他在团队群里发了一条消息:
从今天起,我每天的9:00-11:00是专注时间,不接受会议邀请。有问题找对应的Leader,紧急事务直接找我。非紧急的事情,等我专注时间结束后统一回复。
消息发出去后,群里安静了几秒。然后周浩回了一个,李婷回了一个,陈铭回了一个大拇指。
林晨关掉群聊,打开代码编辑器。两个小时的专注时间,他要从最核心的架构设计开始写起。
管理的事,让团队去管。技术的事,他来把关。
第214章 项目成功
四月的一个周五,ctR模型V2.0全量上线。
这不是林晨第一次带项目上线了,但这次的感觉和之前不一样。之前他是项目的核心开发,一个人扛大旗;这次他是总Leader,看着三个团队协同作战,把一个从零开始的大项目推上了线。
上线前的最后一天,他几乎没有离开办公室。
凌晨两点,推荐系统小组完成了实时特征平台的最终测试。周浩发来消息:特征延迟从200毫秒降到18毫秒,qpS提升4倍,线上测试全部通过。
早上八点,金融科技小组完成了模型部署的最终检查。李婷发来消息:风控模型性能优化完成,特征计算延迟20毫秒,满足实时要求。批文还没下来,但技术层面已经ready了。
上午十点,大模型小组完成了7b微调模型的评估。陈铭发来消息:微调模型在垂直领域任务上超越基线12%,比原定目标10%高了两个点。可以上线了。
林晨看着三条消息,在团队群里发了一句:所有团队,最终确认:今天下午两点全量发布。各组做好灰度回滚预案,五点前如果数据异常立即回滚。
下午两点,他坐在工位上,打开监控面板。
ctR模型的灰度发布开始——系统先将5%的流量导向新模型,其余95%继续使用旧模型。林晨盯着实时数据看板,心率比平时快了十拍。
五分钟后,数据开始出来。ctR提升2.8%。
十分钟后,数据稳定。ctR提升3.1%。
三十分钟后,5%灰度运行平稳,各项指标正常。林晨下令:灰度扩大到20%。
又过了半小时,20%灰度的数据也出来了。ctR提升3.2%,用户停留时长增加1.5%,没有异常报错。
继续扩大,50%。
下午四点,50%灰度的数据确认一切正常。ctR提升稳定在3%以上,没有性能问题,没有异常请求。
全量发布。
下午四点三十分,新模型覆盖了100%的流量。林晨盯着监控面板,看着数据一条一条刷新。每一条都是正常的,每一条都在告诉同一件事:上线成功了。
他在团队群里发了一条消息:ctR模型V2.0全量上线成功。实时特征平台上线成功。大模型微调上线成功。感谢所有人。
群里瞬间刷屏:太棒了!辛苦了!今晚团建!
周浩回了两个字:稳了。李婷回了一个。陈铭发了一个fighting的表情。
晚上七点,陈博士在部门群里转发了上线通知,附了一句:林晨带的团队三个月完成了三个核心项目的上线,效率和效果都超出预期。这是AI应用中心成立以来最成功的一次项目交付。
十几个点赞和恭喜的消息刷过屏幕。林晨看了一眼,没有回复,而是关掉了手机。
他走到窗边,看着窗外鹏城的夜景。灯光星星点点,远处的鹏城湾在夜色中泛着微光。他想起两年前站在出租屋窗前看同样的夜景,心里是焦虑和迷茫。现在他站在t厂大楼的窗前,心里是从未有过的踏实。
不是骄傲——项目成功不是他一个人的功劳,是三个团队二十五个人共同努力的结果。但他知道,如果没有他当初决定把实时特征平台作为优先级最高的项目、没有他在李婷遇到瓶颈时用引导而不是直接给答案的方式、没有他在陈铭想跳过微调直接做预训练时按住节奏——这个项目可能不会这么顺利。
管理和技术一样,都需要做对的选择。有时候对的选择不是最快的,而是最稳的。
晚上八点,团队聚餐。
林晨选了公司附近的一家潮汕牛肉火锅——这是t厂程序员的经典选择,人均一百五,好吃不贵。二十五个人包了两个大桌,火锅的蒸汽模糊了所有人的脸。
周浩端着啤酒过来敬他:林总,实时特征平台的事,谢谢你帮我协调资源。没有数据源,这个项目根本做不了。
你技术方案过硬,我只是推了一把。
不,你不知道,周浩难得多说几句,之前的Leader报过三次资源申请,都被驳回了。你报了一次就过了。这说明你真的在为我们争取。
林晨笑了一下,没说什么。他确实为这事找了日志团队的Leader谈了一次,还跟陈博士汇报了优先级。这些事不需要说,但他知道团队感受到了。
李婷也过来敬酒:林总,那个特征计算的方案,你自己本来可以直接写出来的,对吧?
也许吧。
但你没有。你让我自己想。李婷认真地看着他,这种方式比直接给答案好太多了。我现在遇到性能问题,第一反应不是找你,而是自己想。
这就对了。林晨举起杯子,跟她碰了一下。
陈铭比较安静,坐到林晨旁边的时候只说了一句:7b模型的效果你看到了,12%的提升。
看到了。做得不错。
那预训练的事……
等算力到位了再说。林晨说,但你的想法我记着。
陈铭点了点头,回去继续吃火锅。
聚餐结束的时候已经九点半了。林晨没有喝酒,负责送几个喝了酒的同事打车。最后一个同事上车后,他站在路边,看了看手机上的投资系统。
总资产约258万。
从2万到50万,从50万到200万,从200万到250万,再从250万到258万。每一步都不是线性的增长,而是无数次回撤和修复后的螺旋上升。
他打开微信,给苏婉发了一条消息:聚餐结束了,回家。
苏婉回了一句:乐乐等你讲绘本。绘本今天一定得补上。
他又加了一条:项目上线成功了。
那边沉默了一会儿,然后回了一句:我知道你能做到。
林晨看着这条消息,站在鹏城的夜风中,嘴角微微上扬。
不是骄傲。是一种被相信的踏实。
他收起手机,走向停车场。路灯把他的影子拉得很长,像一株在风中站稳了的树。
第215章 投资账户200万
这个标题林晨犹豫了很久。
不是数字写错了——他的投资账户在年初就已经突破200万了。但那时候的200万包含了回撤后的修复,而且资金里有一部分是工资结余和年终奖的转入,不能完全算投资收益的功劳。
这次不同。
四月底的一个周五,林晨照例做投资系统的月度复盘。他打开管理面板,看到一个让他停下来看了好几秒的数字:
总资产:2,847,326元。
他揉了揉眼睛,以为自己看错了。又看了一遍:2,847,326元。
284万。
距离上次暴跌后的168万低点,账户已经修复了116万,并且创了新高。而从200万到284万,只用了大约四个月的时间——比他预估的还要快。
他打开各子策略的详细数据:
A股子策略:本月收益8.2%,跑赢沪深300指数5.6个百分点。AI板块持续走强,系统精准捕获了算力、模型、应用三层产业链的轮动节奏。
期货子策略:本月收益3.5%。系统在反弹中逐步回补了多头仓位,螺纹钢和铜的利润贡献最大。
期权子策略:本月收益1.2%。保护性看跌期权在平稳市中损耗了时间价值,但对冲作用依然不可或缺。
黄金子策略:本月收益2.8%。国际金价在避险情绪和美元走弱的双重推动下持续走高。
夏普比率:2.5。比年初的2.0又提升了0.5,意味着每承担一单位风险,获得的超额收益更多了。
最大回撤:-20%(历史最大值,已修复)。
他盯着这些数字,心里涌起一种奇异的感慨。
从5万到284万,将近57倍的收益。这个过程不是一条直线,而是一条不断回撤又不断新高的曲线。每一次回撤都让他怀疑过系统的有效性,每一次新高又验证了坚持的价值。
他打开笔记本,写下本月的总结:
4月投资复盘:
账户从250万增长至284万,月度收益13.6%
各子策略均盈利,A股贡献最大
夏普比率提升至2.5,风险调整后收益优秀
系统运行稳定,风控机制有效
下一步:维持当前仓位,关注市场过热信号
备注:账户持续增长中,距离鹏城湾大平层首付目标(540万)还需约7-8个月
他在最后一行字下面画了一个圈。
是的,首付的钱已经够了。
284万。距离鹏城湾188平的首付目标(540万),还差将近一半。但他不急——系统每跑一个月,差距就缩小一点。而且他的工资(65Kx16薪,月均约87K)每个月都有结余可以补充进去。
他拿起手机,给苏婉发了一条消息:账户284万了。
苏婉很快回了:那离首付还差多少?
还差一半多。首付要540万。
那还要等多久?
林晨想了想,打字回复:按现在的速度,大概还需要六到八个月。如果市场行情好,可能更快。
苏婉回了一个字:好。不急。
林晨放下手机,靠在椅背上。
他想起来第一次去看鹏城湾的那个下午,他和小陈中介站在12楼的那套房子里,落地窗外是鹏城湾的海景。苏婉站在阳台上说我最喜欢的是这个阳台。
那个阳台,还要再等一段时间。但他知道一定能等得到。
他没有给中介打电话。他坐在椅子上,看着屏幕上的数字,心里很平静。不是激动,不是狂喜,而是一种确定的期待——像是已经在路上了,每一步都离目标更近一点。
他知道前面的路还很长——首付还不够,买了房子还有月供,升了职还有更大的责任,投资账户还要继续跑。生活不会因为一个里程碑就停下来。
但这个里程碑已经在视野里了。不是雾里的远山,而是脚下的下一站。
他打开记账软件,在购房计划旁边更新了一行:
当前进度:投资账户284万,距离首付540万还需约256万。按保守月均收益8%计算,约需7-8个月。目标调整至:2024年底前出手。
写完,他合上笔记本,走出书房。
客厅里,乐乐趴在茶几上画画。苏婉坐在沙发上看手机,屏幕上是鹏城湾的楼盘信息。
在查房价?林晨走过去看了一眼。
在查物业费,苏婉指着一行数字,鹏城湾的物业费是4块5一平,188平就是846块一个月。比我们现在贵了一倍多。
846块不算多。
我不是嫌贵,苏婉抬头看他,我是想告诉你,大平层的日常开销不是只有月供。物业费、停车费、暖气费、维修基金……这些加起来一个月至少多出两千多块。你算过月供多少吗?
算过。林晨坐在她旁边,如果总价1800万,首付540万,贷款1260万,月供大概五万九。加上物业停车水电,总共大约六万三。工资加投资收益,应该能覆盖。
六万三……苏婉重复了一遍,压力不小。
对。但首付还没攒够,想这些还早。林晨笑了一下,等账户到了五百多万再说。
那装修呢?188平装修,按两千一平算,要37万。你预算了多少?
50万。到时候从投资收益里出。系统多跑几个月就有了。
苏婉看了他一眼:你真的算过。
算过很多遍了。林晨说,十遍以上。结论都一样:现在还不是时候。但时候会来的。
苏婉没有再追问。她知道林晨的性格——做决定之前一定会把所有变量算清楚,不打无准备之仗。他既然说还要等,就是还需要等。
那还去看房吗?她问。
先不去了。等账户到500万再看。看了买不起,心里更难受。
乐乐从茶几旁抬起头,插了一句:我也要去!
你去干嘛?苏婉问。
我要看我的新房间!乐乐理直气壮地说,妈妈说新房子有大阳台,我要在阳台上养一只小乌龟!
苏婉笑了:先看房子再说。
乐乐又低下头画画,嘴里嘟囔着,我要画一栋大房子……
林晨和苏婉对视一眼,都没有说话。
但他们的眼神里都写着同一件事:快了。
从五万到两百八十四万。从89平的小两房到目标188平的大平层。从焦虑失眠到此刻的从容等待。
这不是终点。但这条路已经走完了一半,剩下的路也看得见方向了。
第216章 再看大平层
周六下午两点,林晨一家三口站在鹏城湾小区门口。
中介小陈已经等在那里了,穿着和上次一样的深色西装,但表情比上次更热情——毕竟是回头客,他听说林晨要来看第二次,立刻推掉了其他预约。
林先生,林太太,好久不见!小陈迎上来,注意到乐乐,哟,小朋友也来了?
我要看我的新房间!乐乐仰着头说。
苏婉轻轻拍了他一下:还没定呢,先看看。
小陈带着他们走进小区。上次来是元旦刚过,现在是四月底,小区的园林更加郁郁葱葱。中央泳池的水在阳光下泛着蓝光,几个业主在池边晒太阳。草坪上有几个孩子在追逐嬉戏,笑声随风飘过来。
乐乐拉着林晨的手,眼睛四处看:爸爸,有游泳池!
看到了。
我可以在里面游泳吗?
买了房子就可以。
乐乐开心地蹦了一下,差点撞到路边的一个老人。林晨赶紧拉住他,对老人点头致歉。
他们进了12号楼的电梯,按了15楼——这次小陈推荐了一套15楼的房源,比上次看的那套楼层更高,视野更好。
电梯门打开,走廊安静明亮,脚下是厚实的地毯。小陈掏出钥匙,打开了1501室的门。
这套是业主急售,小陈介绍,188平,四房两厅两卫,南北通透。业主调去北京工作,所以急着出手。报价1780万,比同户型便宜了二十多万。这个价格在鹏城湾算是捡漏了。
林晨走进客厅,第一感觉是——大。
上次看的12楼那套也是188平,但15楼的视野完全不同。站在落地窗前,鹏城湾的全景尽收眼底——近处是小区的园林和泳池,中间是科技园的楼群,远处是海天一色的鹏城湾。阳光从南面涌进来,把整个客厅照得通透。
苏婉走到落地窗前,跟上次一样,第一个看的是阳台。
阳台比上次看的那套更宽,至少有八平米,放两张躺椅加一张小桌绰绰有余。阳台的栏杆是钢化玻璃,视线完全不受阻挡。
这个阳台……苏婉话说到一半,停住了。
林晨走到她旁边,顺着她的视线往外看。夕阳正在西斜,海面上铺着一层金色的光。远处有几艘帆船,白帆在金光中一闪一闪的。
跟上次看到的不一样,苏婉轻声说,上次是冬天,现在是春天。颜色更亮了。
他们继续看其他房间。主卧朝南,有独立的衣帽间和卫生间,面积比现在他们整个主卧加客厅还大。次卧朝东,适合做乐乐的房间。书房朝北,安静,适合林晨写代码。还有一间客房,可以给父母来住。
乐乐已经跑进了他选中的那间次卧,站在窗前往外看:爸爸!妈妈!我可以看到游泳池!
看到了。林晨走进去,站在乐乐旁边。窗户朝东,早上有阳光照进来,下午不会太热。房间面积大概16平,放一张书桌、一张床、一个衣柜还有很大空间。
这个房间你满意吗?苏婉问乐乐。
满意!我要在窗台上养一只小乌龟!
好,买了房子再说。
他们又看了厨房和两个卫生间。厨房是开放式的,有中岛台,苏婉站在那里比划了一下:这里可以放一个烤箱,这里放洗碗机。
你还会用烤箱?林晨故意问。
不会可以学。苏婉白了他一眼。
看完所有房间,他们回到客厅。小陈拿出户型图,在上面标了几个数字:这套比上次12楼那套便宜不少,而且楼层更好、视野更好。唯一的问题是业主急售,要求一个月内过户。
一个月没问题。林晨说。
那价格方面,1780万我觉得还能谈,小陈压低声音,业主急着出手,我估计1750万左右能拿下。
1750万。首付三成是525万。林晨在心里快速算了一下——他这几个月的投资账户加上工资存款总共约480万,距离525万的首付还差45万。加上税费和中介费,缺口大概在60万左右。
不过按投资账户每月8%左右的收益,再有两三个月就能凑够。月供按30年等额本息算,大约五万七。他现在月薪65K,加上投资收益,压力虽然比现在大不少,但能扛得住。
能约业主见面谈谈吗?林晨问。
可以。业主这周末就在深圳,明天就可以见面。但林先生您的资金——
再等我确认一下,林晨说,大概再过两三个月,首付就能凑够。到时候再约。
走出小区大门,乐乐在前面蹦蹦跳跳,嘴里唱着不知从哪学来的歌。苏婉挽着林晨的手臂,夕阳把她的脸映得暖洋洋的。
你觉得怎么样?林晨问。
比上次那套好。苏婉说,15楼的视野比12楼好太多了。而且这套在鹏城湾算便宜的。
业主急售,所以让利了。
急售的房子会不会有问题?
我让小陈查了,业主是因为工作调动才卖的,不是房屋本身的问题。而且房子是2019年交房的,质量没问题。首付525万,还差几十万,再等两三个月就行。
苏婉点了点头,没有再追问。她知道林晨一定已经把所有风险都排查过了。
那书房够大吗?她换了个话题。
够了。放下我的双显示器、书柜、还有一张小沙发,空间还宽裕。
那你的投资系统——
投资系统不需要书房,林晨说,它是跑在云服务器上的。书房只是我用来做复盘和规划的地方。
苏婉没有说话,走了几步,突然停下来说:你知道吗,我刚才在阳台上站了一会儿,脑子里一直在想一件事。
什么事?
我在想两年前的那个晚上,你坐在出租屋的阳台上抽烟。
林晨愣了一下。他记得那个晚上——失业后最难熬的时期,他独自坐在阳台上,看着鹏城的夜景,心里想的是房贷怎么办、工作怎么办、未来在哪里。
那时候我说,我们一定能撑过去,苏婉转过头来看他,但我心里其实没底。我只是不想让你看到我的害怕。
我知道。林晨说。
现在,苏婉看着远处鹏城湾的方向,我们离它只差最后一步了。
林晨没有说话。他握紧了她的手,像是在确认这一切都是真实的。
远处,夕阳正在海面上铺开最后一片金光。鹏城湾的潮水轻轻拍打着岸边的石头,发出有节奏的声响。
乐乐跑到前面,回头喊:爸爸妈妈快点!我要回家画大房子!
你还没决定什么时候买呢。苏婉笑着喊。
我要买!乐乐跑回来,拉着林晨的手,爸爸,我们就买这个大房子吧!好不好?
林晨蹲下来,看着乐乐亮晶晶的眼睛:快了。再过几个月,爸爸就把它买下来。
几个月是多久?
你数到一百的天数,那么多天。
乐乐掰着手指头数了数,放弃了:好多天啊!
不多,林晨站起来,最后看了一眼15楼那扇落地窗,值得等的东西,等多久都不算多。
第217章 签约购房
周日下午三点,林晨和苏婉坐在鹏城湾小区附近的咖啡厅里,对面是业主刘先生和他的太太。
刘先生四十出头,戴着一副金丝眼镜,说话带着北方口音。他在鹏城一家科技公司做高管,因为公司总部搬去北京,所以急着把房子卖掉。他太太在旁边安静地喝咖啡,偶尔补充几句。
房子你们都看过了,刘先生说,188平,15楼,南北通透,2019年交房的。装修保养得很好,基本上没有硬伤。价格嘛,1780万是挂牌价,我们诚心卖,1750万可以。
林晨和苏婉对视一眼。1750万,比上次看12楼那套便宜了50万。这段时间他的投资账户又涨了不少,加上工资存款,总资产大约560万,刚好够首付加税费。
1730万,林晨说,我今天可以交定金。
刘先生看了他一眼,嘴角微微动了一下。这个价格离1780万的挂牌价差了50万,但他确实急着出手——北京那边已经在催他搬家了。
1740万,刘先生说,不能再低了。我这套比同户型便宜,而且装修保养好,你不用重新装修,直接拎包入住。这个价格在鹏城湾你找不到第二套。
林晨想了一下,看了一眼苏婉。苏婉轻轻点了点头。
1740万,成交。林晨说。
接下来是走流程。小陈在旁边拿出了一叠文件——房屋买卖合同、产权证复印件、业主身份证明、房产评估报告。林晨逐页查看,确认了房屋面积、产权状态、是否存在抵押和纠纷等信息。
一切正常。
签合同的时候,林晨的手很稳。苏婉坐在他旁边,看着他一笔一划地签下自己的名字——林晨,两个字,工工整整,没有丝毫犹豫。
定金20万,当天转账。剩余首付在过户时支付。
走出咖啡厅的时候,苏婉深吸了一口气。
怎么了?林晨问。
没什么,她说,就是突然觉得……好快。从看房到签约,才两周。
好房子不等人。林晨说,718万买188平的鹏城湾大平层,业主急售让了十几万,这个价格放到市场上根本买不到。
我知道,苏婉挽着他的手臂,我只是觉得,好像做梦一样。两年前我们还在为月供发愁,现在已经在买大平层了。
不是做梦,林晨说,是这两年的努力变成了现实。
他们走到停车场,林晨打开车门,苏婉坐进副驾驶。
妈妈,我们买新房子了吗?乐乐从安全座椅上探出头。
买了。苏婉回头看了他一眼,你以后有自己的大房间了。
乐乐欢呼了一声,我要在窗台上养小乌龟!
知道了知道了。林晨发动车子,驶出停车场。
回家路上,林晨一边开车一边在心里算账:
房屋总价:1740万 首付(30%):5,220,000元 贷款金额:12,180,000元 贷款期限:30年 贷款利率:3.85%(首套房) 月供(等额本息):约57,100元
他拿出手机,打开备忘录,把数字记下来。然后又写了一行:
首付来源:
投资账户:490万
工资存款:32万
合计:522万
首付后剩余:
投资账户保留:50万(继续运行)
家庭储备金:约10万(需要从后续工资中补充)
月供:5万7 工资覆盖:月入约87K(65Kx16薪/12 + 苏婉工资) 投资收益补充:约1.2万/月(保守估计,50万本金)
结论:月供压力比现在大了不少,但工资加投资收益可以覆盖。家庭储备金需要尽快补充,半年内目标回到20万以上。
他看了一眼这些数字,心里很清楚:50万的投资账户虽然不如之前充裕,但按30%的年化收益率,一年后可以回到65万左右。加上工资收入,半年内就能把家庭储备金补充到安全水平。
五万七的月供,说不紧张是假的。但他经历过月供还不上的日子,也经历过一天亏42万的日子。眼下的压力,跟那时候比起来,根本不算什么。
回到家,乐乐已经迫不及待地开始画画了——他趴在茶几上,用彩笔画了一栋大房子,前面有一个游泳池,窗台上有一只小乌龟。
爸爸你看!他举起画给林晨看。
林晨蹲下来,认真地看着那幅画。房子是紫色的——乐乐最喜欢紫色——游泳池是蓝色的,小乌龟是绿色的。在房子的二楼,有两个小人站在阳台上,手拉着手。
这两个人是谁?林晨问。
是爸爸和妈妈!乐乐说,站在阳台上看海!
林晨看着画上那两个手拉手的小人,突然觉得鼻子有点酸。
画得好。他说,声音很轻。
苏婉从厨房走出来,看到林晨蹲在乐乐旁边看画,走过来也看了一眼。
这两个人站得好近。她说。
因为爸爸要拉着妈妈的手。乐乐认真地说,这样妈妈就不会掉下去了。
苏婉笑了一下,眼眶有些红。她蹲下来,在乐乐的额头上亲了一口:不会掉下去的。阳台有栏杆。
那天晚上,林晨在书房里整理了签约的文件,把复印件扫描存档,然后打开投资系统做了一笔操作:
出金490万到购房专用账户,投资账户保留50万继续运行。
系统提示:操作成功。当前投资账户余额:约50万。
50万。
从560万回到50万,像是从山顶一下子落到了山脚。但这次不同——490万换来了一个大平层的钥匙,换来了一个让全家住得更好的家。
他关掉面板,在笔记本上写了一行:
2024年,签约鹏城湾188平大平层。首付1740万x30%=522万。这是新生活的起点,不是终点。
然后他合上笔记本,关掉台灯。
窗外,鹏城的夜景依然灯火通明。但今晚的灯光看起来格外温暖。
第218章 父母的房子
签完鹏城湾的房子后,林晨心里一直惦记着一件事。
给父母买房。
这不是一时冲动。早在去年给父母转了十万块钱的时候,他就想过这个问题。老家的房子是二十年前的老房子,外墙斑驳,楼道狭窄,没有电梯,母亲膝盖不好,每天爬四楼很辛苦。他当时就想:等自己有能力了,一定要给父母换一套好房子。
现在有能力了。
五月初的一个周末,林晨给大哥林枫打了电话。
大哥,我想在老家给爸妈买套房。
电话那头沉默了两秒。你是认真的?
认真的。老家的房价不贵,100平左右的电梯房,大概60万左右。我出钱,你帮忙看看地段。
60万……你刚买了鹏城湾的房子,钱够吗?
林晨说,投资账户还在运行,每月工资也够。60万不是大数目。
林枫在电话那头叹了口气:行,我帮你看看。老家的电梯房不多,但有几个新盘还行。你有什么要求?
三个要求:一、有电梯,最好是一楼或二楼;二、离医院近,妈膝盖不好,万一有急事能快点到;三、小区环境好一点,有活动空间,爸喜欢散步。
离医院近,那就在县城中心看了。林枫说,我明天去看看,看完拍照片给你。
好。谢了,大哥。
挂了电话,林晨坐在书房里,想起了老家的那栋旧房子。
他是在那里长大的。四楼,没有电梯,楼梯间的灯时亮时灭。母亲每天拎着菜爬四楼,父亲退休后腿脚也不利索了。去年过年回去的时候,他看到母亲上楼走几步就停下来喘,心里很不是滋味。
他当时就想:什么时候能让父母住上有电梯的房子?
现在,这个什么时候变成了。
三天后,林枫发来了几张照片和一段视频。
看了三个盘,最合适的是城南的锦绣花园。100平,三房两厅,6楼有电梯,离县医院步行十分钟。小区有花园和健身器材,周围有超市和菜市场。总价58万,全款可以谈。
林晨看了照片:小区外观新净,楼道宽敞,电梯门是不锈钢的。100平的户型方正,三房两厅,主卧朝南,客厅有大阳台。
就这个。他回复林枫,你帮我去谈价格,55万能拿下就签。
你不过来看看?
不用。你看着就行,我相信你。
林枫在电话那头笑了一声:好,我帮你砍价。
一周后,林枫传来消息:谈下来了,54万全款,业主包过户费。
54万。在鹏城,这笔钱只够买一个车位。但在老家,这够给父母买一套体面的新房。
林晨当天就把钱转了过去。54万,从工资存款里出。鹏城湾的房子刚签完,投资账户只有50万在运行,但他的工资结余还够。
然后他给母亲打了个电话。
妈,大哥帮你看了一套房,在城南锦绣花园,有电梯的,六楼——
又花这个钱!母亲的声音立刻高了八度,你刚买了鹏城的房子,哪还有钱给我们买房!
妈,钱的事你别管。我在鹏城挣得多,这套房子不算什么。
不算什么?54万!你——
林晨打断她,你膝盖不好,爬四楼越来越吃力了。新房有电梯,一楼还有花园,爸可以散步。你想想,每天不用爬楼了,膝盖是不是舒服多了?
电话那头沉默了。他知道母亲在算账——不是算54万值不值,而是算儿子能不能负担得起。
你确定……你那边够用吗?母亲的声音低了下来。
够。妈,我投资账户里还有钱,工资也够用。你不用担心。
那……那就随你吧。母亲的语气还是不太情愿,但比刚才松了很多。
还有一件事,林晨说,房子先不告诉爸。等装修好了,直接带他去看。我想给他一个惊喜。
你爸那个脾气,知道了肯定说不要。
所以先不让他知道嘛。等他看到新房了,总不能说不要吧。
母亲在电话那头轻笑了一声:你从小就这样,做什么事都偷偷的。
不是偷偷的,是怕你们担心。
挂了电话,林晨在书房里坐了一会儿。
54万。在鹏城算不了什么,但在老家,这是一套让父母晚年舒舒服服住的房子。有电梯,不用爬楼;离医院近,生病了十分钟就能到;小区有花园,父亲可以每天去散步。
他想起小时候,父亲每天下班后都会带他去楼下的小花园玩。那时候父亲年轻力壮,一把就能把他举过头顶。现在父亲头发白了,膝盖也不好了,下楼散步都要扶着栏杆。
新房有电梯,下楼就是花园。父亲可以每天去散步,不用再爬四楼。
想到这里,林晨拿起手机,给林枫发了一条消息:大哥,装修的事也拜托你了。简单装修就行,地板用防滑的,卫生间装扶手,厨房台面低一点——妈个子不高,够不着高的台面。
知道了。林枫回了一句,然后又补了一条,弟,你做得够多了。
林晨看着这条消息,没有回复。
他做的不够多。他只是用钱买了一套房子,而父母给了他二十多年的养育。一套房子,远远还不清。
但至少,这是一个开始。
晚上,苏婉在厨房做饭,林晨走进去帮她洗菜。
给爸妈买房的事定了?苏婉问。
定了。54万全款,大哥在帮忙处理。
装修呢?
大哥帮忙盯,我提了几个要求——防滑地板、卫生间扶手、低厨房台面。
苏婉看了他一眼:你还想到低台面了?妈确实个子不高。
嗯。上次回去看她切菜,踩着小板子才够得着。
苏婉没有再说话,低下头继续切菜。过了一会儿,她轻声说了一句:你是个好儿子。
还不是,林晨说,好儿子不会让父母住了二十年老房子才给换新的。
那你现在不是在换吗?苏婉说,晚一点不等于不做。做了就是好。
林晨看着她,突然觉得这个女人有一种神奇的能力——永远能在最恰当的时候,说出最恰当的话。
晚饭桌上,乐乐吃着饭,突然问了一句:爸爸,爷爷奶奶什么时候来我们新家?
等新家装修好了就来。
那爷爷奶奶的新家呢?
林晨笑了:爷爷奶奶的新家也在装修。等装修好了,爸爸带你去看。
乐乐用力点了一下头,我要给爷爷奶奶画一幅画,挂在他们新家!
窗外,鹏城的夜色安静而温暖。林晨想,等老家的房子装修好了,他要亲自回去一趟,站在那套有电梯的新房里,告诉父母:
这是你们的家。从今以后,不用再爬楼了。
第219章 装修准备
六月初的一个周六,林晨带着苏婉和乐乐去了鹏城湾的新房。
房子还没过户,但业主刘先生已经把钥匙给了他们——他急着搬去北京,提前交接反而方便。林晨拿到钥匙的那一刻,在手里翻来覆去看了两遍,像是在确认这是真的。
推开门的那一刻,乐乐第一个冲了进去。
好大!他在空荡荡的客厅里跑了一圈,声音在未装修的空间里回荡,这是我的房间!那是爸爸的房间!那是——那是妈妈做瑜伽的房间!
谁说我要做瑜伽?苏婉笑着跟了进去。
林晨站在门口,看着空荡荡的房子,脑子里在丈量每一个空间。
客厅:6.2米面宽,可以放一组L型沙发加电视柜,还有足够的空间放一个书架。落地窗前的阳台够宽,可以放两把躺椅和一张小桌。
主卧:朝南,可以放一米八的大床加两个床头柜,衣帽间足够挂两个人的衣服。
次卧:朝东,乐乐的房间。可以放一米五的床加书桌和衣柜,窗台留给小乌龟。
书房:朝北,他的工作区。两张显示器、书柜、一张沙发床——偶尔加班到太晚可以在书房睡。
厨房:开放式,中岛台。苏婉已经说了要装烤箱和洗碗机。
他掏出手机,打开备忘录,开始记录:
装修需求:
整体风格:现代简约,暖色调,不要太冷
客厅:L型沙发+电视柜+书架,落地窗配电动窗帘
主卧:一米八床+床垫(要好一点的),衣帽间定制柜
乐乐房间:一米五床+书桌+衣柜,窗台预留乌龟缸位置
书房:双人工作台+书柜+沙发床,隔音要好
厨房:中岛台+烤箱+洗碗机+充足收纳
客房:留给父母来住,床要软一点
卫生间:干湿分离,主卫装浴缸(苏婉要的)
全屋:地暖(冬天舒服)、新风系统、智能家居
阳台:防腐木地板+户外家具+绿植区
他在每一条后面估算了费用,加起来大约50万。鹏城湾188平的装修,按中档偏上的标准,确实需要这个数。
苏婉在房间里走了一圈,走到阳台的时候停了下来。她站在那里,看着外面的鹏城湾,阳光洒在她身上。
想什么?林晨走过来。
在想阳台放什么植物。苏婉说,我想种一棵柠檬树,再种几盆多肉。
还有,厨房的中岛台我想用大理石的,白色的那种。
书房的沙发床要可以展开成一米五的,你加班太晚可以睡。
你说了算。
苏婉看了他一眼:你什么都不说,就行行行,好像装修跟你没关系一样。
你有想法就好,我负责出钱。林晨说。
那你至少提一个要求。
林晨想了想:书房的椅子要好的。我每天坐八小时以上,椅子不好腰疼。
就这个?
还有网络。全屋要装万兆有线网口,每个房间至少一个。
苏婉笑了:果然是程序员,装修第一件事是装网线。
网络是基础设施,林晨一本正经地说,比地暖重要。
乐乐从次卧跑出来,手里举着一片从墙上掉下来的小碎屑:爸爸!我房间可以刷成蓝色吗?
可以。
蓝色!像大海一样的蓝色!
他们在空房子里待了两个小时,测量了每个房间的尺寸,拍了几十张照片。苏婉在手机备忘录里写了一长串需求,林晨在备忘录里记了预算和工程进度。
回家的时候,乐乐在车上睡着了。苏婉坐在副驾驶,看着窗外流动的夜景。
预算多少?她突然问。
50万。
50万够吗?你列的那些东西——地暖、新风、智能家居、大理石中岛台——加起来可能超。
超就超,60万封顶。
你这人,苏婉摇了摇头,从什么时候开始花钱这么大方了?
从有钱的时候开始。林晨笑了一下,以前省是因为没有,现在花是因为有了。装修这事不能省,一套好装修住十年八年,平均下来一天才几十块钱。
你什么都要算。苏婉说。
因为我以前穷过,所以知道钱花在什么地方最值。林晨说,装修、教育、健康,这三样不能省。其他都可以省。
苏婉没有反驳。她知道林晨说的不是大道理,而是他真真切切经历过的事情。两年前他们连月供都快还不上了,现在能讨论装修预算,本身就是一种幸运。
到家后,林晨在书房里打开电脑,开始找装修公司。他列了三个候选,分别约了下周上门量房。
苏婉端着一杯热可可走进来:还在研究?
在做对比。林晨指着屏幕上的三家公司,A公司报价最低,但口碑一般;b公司是鹏城湾的指定合作商,价格贵但质量有保障;c公司是朋友推荐的,性价比不错。
你选哪个?
倾向于b。林晨说,鹏城湾的指定合作商,对小区的结构和管道最了解,施工过程也不会出问题。贵是贵了点,但省心。
那就b。苏婉说,装修这事,省心比省钱重要。
同意。
他们又讨论了半个小时的装修细节——地板用什么材质、灯具选什么风格、卫生间的瓷砖颜色。这些琐碎的小事,在空荡荡的毛坯房里听起来很遥远,但在即将成为的房间里,每一样都值得认真对待。
晚上十一点,乐乐已经睡了。林晨坐在书房里,打开投资系统。
账户总资产:约52万。
从560万到52万——买房首付、给父母买房、家庭开支,这些钱变成了两套房子和一个家。投资账户里的50万在继续运行,虽然规模小了很多,但系统还在跑,复利还在滚。
他在笔记本上写了一行:
装修预算:50-60万。装修周期:3-4个月。目标入住时间:10月。
然后翻到下一页,写下一行更大的字:
新生活,10月见。
第220章 一年的变化
六月底,入职t厂整整一年。
林晨站在办公室的窗前,看着楼下科技园的景象。一年前的这个时候,他刚拿到t厂的offer,每天还在紧张地准备入职材料。一年后,他是AI应用中心的总Leader,管着二十五个人,薪资比入职时翻了一倍多,投资账户虽然从560万回到了52万(买房花了大部分),但系统还在稳定运行,每月收益在缓慢回升。
他打开手机备忘录,翻到一年前写的那张年度规划:
家庭财务:投资账户目标550万(凑够首付)——达成,实际达到560万 住房改善:看鹏城湾大平层——达成,已签约1740万188平 职业发展:大模型方向——达成,升职为AI应用中心总Leader 薪资:65Kx16薪——达成 家庭:乐乐兴趣班——达成,英语+编程+钢琴
五项规划,全部达成。
他把备忘录翻到新的一页,写下2024年下半年的规划:
下半年目标:
装修完成,10月入住新居
投资账户从52万回升到100万(按保守估计需要6-8个月)
大模型项目上线,效果超出预期
乐乐幼升小,顺利过渡
父母新房装修完成,带他们去看
写完,他合上手机,走向会议室。
今天是他入职一周年的日子,没有庆祝活动——他不觉得一周年有什么值得庆祝的。比起一年前的焦虑和迷茫,现在的他只是更忙了,忙到没有时间停下来回味过去。
但苏婉记得。
晚上回到家,桌上摆着一桌比平时丰盛的菜。苏婉做了红烧排骨、清蒸鲈鱼、蒜蓉西兰花、还有一锅番茄蛋花汤——都是林晨爱吃的。
今天是什么日子?林晨问,虽然他已经猜到了。
你入职一周年。苏婉把筷子递给他,不用庆祝,就是多做两个菜。
乐乐从厨房跑出来,手里端着一碟切好的水果:爸爸!这是我给你准备的!
谢谢乐乐。林晨接过水果碟,放在桌上。
苏婉在他对面坐下,看着他:一年了。感觉怎么样?
林晨想了想:
对,快。他说,感觉刚入职还是昨天的事,但一看日历已经一年了。这一年发生了太多事——升职、买房、给爸妈买房、投资账户经历了暴涨暴跌又修复……每件事单独拿出来都够消化一阵子,但它们就这么挤在一年里发生了。
所以快。苏婉点了点头,那你觉得这一年最大的变化是什么?
林晨夹了一块排骨,慢慢嚼完才回答:最大的变化不是钱,也不是职位。
是什么?
是心态。他说,一年前我还在为月供焦虑,现在我不焦虑了。不是因为有了钱就不焦虑,而是因为我知道,即使遇到问题,我也能解决。投资系统回撤20%,我扛过来了;管理二十五个人,我从零学起;买几百万的房子,我算清楚了每一笔账。这些经历让我相信,无论遇到什么,我都能力应对。
苏婉看着他,嘴角带着笑意:你变了。
哪里变了?
以前你说话的时候,眼睛总是在看别的地方,好像不太敢跟人对视。现在你说话的时候,眼睛是直的,很稳。
林晨愣了一下,然后笑了:是吗?我自己没注意。
因为你自信了,苏婉说,自信的人不怕看别人的眼睛。
乐乐在旁边插嘴:爸爸的眼睛最亮了!像星星!
那是灯光折射的。林晨摸了摸他的头。
吃完饭,乐乐去看动画片了,苏婉在收拾碗筷。林晨站在阳台上,看着鹏城的夜景。
一年前的今天,他拿到t厂的offer,坐在出租屋的阳台上,看着同样的夜景,心里想的是能不能干满试用期。一年后的今天,他站在新家的阳台上——虽然还没装修好——想的是下一步做什么。
下一步做什么?
投资账户要从52万回到200万以上。大模型项目要做出成绩。乐乐要上小学了,学区的事要落实。父母的新房装修要盯。苏婉的高级教师评审要支持。
每一件事都需要时间和精力。但他不再焦虑了,因为他知道,这些都是他有能力解决的事情。
他拿起手机,打开投资系统。总资产约52万,各子策略运行正常,本月收益约3万。
52万。从5万开始,经历了暴涨、暴跌、修复、买房、重新开始。这个数字虽然不如高峰时的560万那么壮观,但它更真实——它是扣除了所有生活开支和投资后的净余额,是真正属于他、可以继续滚动的那部分。
他在笔记本上写下了入职一周年的总结:
入职t厂一周年:
职位:AI应用中心总Leader(从入职时的普通算法工程师到管理25人)
薪资:从52Kx16薪到65Kx16薪
投资账户:从200万到560万(高点)到买房后52万,系统仍在运行
住房:买了鹏城湾188平大平层,给父母买了老家的电梯房
家庭:乐乐兴趣班稳定运行,苏婉工作顺利
总结:这一年最大的收获不是数字,是确定感。确定自己的方向是对的,确定自己的能力够用,确定无论遇到什么问题都有办法解决。这种确定感,是两年前那个在出租屋里焦虑失眠的人最缺乏的东西。
他合上笔记本,走回客厅。
苏婉已经收拾完了,正在沙发上看手机。乐乐趴在地毯上画画,画的是一家三口站在一个大阳台上,阳光从天上照下来,旁边有一只小乌龟。
林晨走过去,在乐乐旁边坐下。
这是什么?
这是我们的新家!乐乐头也不抬,这个是阳台,这个是爸爸,这个是妈妈,这个是小乌龟——它叫乐乐二号!
为什么叫乐乐二号?
因为乐乐一号是我!
林晨笑了。他看着那幅画,看着画上那个站在阳台上手拉手的小人,突然觉得这一年的所有辛苦都值了。
不是因为钱,不是因为职位,不是因为大平层。
而是因为这一刻——一家人在一起,乐乐在画他的新家,苏婉在旁边安静地看手机,窗外的鹏城夜色温柔地亮着。
这是他一年前不敢想的生活。
现在,他正住在里面。
第221章 行业影响力
七月的一个周六下午,林晨的手机几乎被消息淹没。
起因是他在知乎上发的一篇文章。标题是《从被裁员到年入百万:一个35岁程序员的AI转型实录》。
这篇文章他写了整整两个晚上。不是炫耀,而是应了几个知乎私信的要求——总有人问他怎么转型的投资系统怎么做的35岁学AI还来得及吗。与其一个一个回,不如写一篇文章统一回答。
文章分了三个部分:一是转型的决策过程,从失业到选择学AI;二是学习路径,从python基础到深度学习框架;三是投资系统的技术架构,包括数据获取、特征工程、模型选择、回测框架和风控机制。
他特意避开了具体的收益率数字和策略细节——这些是核心机密,不能公开。但方法论、学习路线、踩过的坑,他毫无保留地写了出来。
文章发出去的时候是周五晚上十一点。他预估阅读量可能几千,顶多上万——他在知乎上只有不到一万关注者,平时发的技术文章阅读量也就两三千。
但周六早上醒来,他发现文章的阅读量已经突破了十万。
评论区也炸了。有人问他具体的学习资料,有人问他投资系统的框架选择,有人感慨35岁还能转行是真的吗,也有人质疑这不是软文吧。
到了下午,阅读量突破二十万,点赞过万,收藏数是点赞的三倍。知乎编辑把他推上了热搜榜,标题写着35岁程序员AI逆袭:从被裁到年入百万。
林晨看着这些数据,有一种不太真实的感觉。他写这篇文章的初衷只是回答几个问题,没想到引起了这么大的反响。
他翻了翻评论,发现大多数是正面的。有人写了一大段分享自己的转型经历,感谢他的文章给了信心;有人问他有没有做付费课程,想系统学习;还有几个猎头私信问他有没有意向跳槽。
但也有少数质疑的声音:年入百万是工资还是投资?投资收益不算稳定收入吧。35岁转型成功是幸存者偏差,大多数人失败了只是没人写文章。这种文章容易误导人,不是每个人都有做投资系统的能力。
林晨看了这些评论,没有回复。他知道自己文章里写的每一步都是真实的,但也知道成功确实有运气成分。如果市场没有给他那个暴涨的窗口期,如果t厂没有给他面试机会,如果陈博士没有看中他——任何一步走错,他可能就不是现在的结果。
但他选择把这些真实地写出来,让读者自己去判断。
下午三点,他的Github仓库也火了一把。
他之前把投资系统的一部分框架代码开源了——不是策略代码,而是数据获取、回测框架和风控模块的基础架构。这个仓库之前只有几百个star,文章发出去后,一天之内涨到了五千多。
他打开Github的notifications,发现issue列表里多了几十条。有人报bug,有人提feature request,有人问能不能加一个期货回测模块。
他花了一个下午整理issue,标记了几个重要的,打算后续处理。
晚上,苏婉在客厅喊他吃饭。他关掉电脑,走出书房。
你火了。苏婉看着手机,我们学校的同事都在转发你的文章。
是吗?
王老师还跟我说,你老公写的那篇文章太好了,让全校老师都看看。
别看了,林晨说,那篇文章写完了就完了,该干嘛还得干嘛。
你这人,苏婉笑着摇头,火了都不兴奋一下。
不是不兴奋,林晨坐下来,是兴奋过了。文章发出去的那一刻是兴奋的,现在只觉得该写代码了。
苏婉给他夹了一块鱼:那你写代码去。
先吃饭。
饭桌上,乐乐问了一个问题:爸爸,为什么你的手机一直在响?
因为爸爸写了一篇文章,很多人在看。
写的是什么?
写的是……怎么学习新东西。
就像我学编程那样吗?
对,就像你学编程那样。
乐乐想了想,说:那爸爸也可以写一篇怎么学画画!
林晨笑了:好,等你画得更好了,爸爸帮你写。
晚上回到书房,他打开电脑,发现知乎私信已经有一百多条了。他挑了几条重要的回复——有一个人问AI转型的学习路线,他详细回答了;有一个创业公司cEo想合作,他礼貌拒绝了;还有一个出版社的编辑,问他有没有意向出一本书。
出书?
他看着这条私信,想了想,没有立刻回复。
写文章是一回事,出书是另一回事。文章可以随性写,书需要系统性的框架和深度的内容。他现在的工作很忙,每天能用来写作的时间有限。
但这个念头一旦冒出来,就很难打消了。
他在备忘录上写了一行:出书?可以考虑。
然后关掉手机,继续写代码。
火了也好,没火也好。他的本职工作还是t厂的AI应用中心Leader,他的核心能力还是写代码和做投资。文章带来的关注度只是副产品,不是主业。
但有一点他没想到:这篇小小的知乎文章,正在悄悄改变他的行业影响力。从今天开始,他不再只是t厂的一个Leader,而是全网公认的35岁AI转型标杆。
第222章 受邀演讲
周一早上,林晨刚到公司,就收到一封邮件。
发件人是2024中国AI技术峰会的组委会,标题写着演讲邀请函。
他点开看了几眼,以为是群发邮件,正要删掉,发现正文里写着他的名字:
尊敬的林晨先生,您好!我们诚邀您出席2024中国AI技术峰会,并在AI与金融科技分论坛上发表30分钟演讲。您近期发表的《从被裁员到年入百万:一个35岁程序员的AI转型实录》在业内引起巨大反响,我们相信您的经验分享将为与会者带来宝贵启发……
他看了一下峰会的地点和时间:北京,八月中旬,为期两天。参会人员包括各大厂的技术负责人、知名投资机构的合伙人、以及几十家AI创业公司的cEo。
他犹豫了一下。这种公开演讲,他从来没有做过。知乎文章是文字,可以反复修改;演讲是现场,说出去的话收不回来。万一讲砸了,丢的可不只是自己的脸。
他给陈博士发了一条消息:陈博,有个AI技术峰会邀请我做演讲,您觉得我去不去?
陈博士的回复很快:去。t厂需要在外部有声音。我帮你跟hR申请出差。
林晨没想到陈博士这么干脆。他又问了一句:您觉得我讲什么?
讲你最擅长的。陈博士回道,你讲投资系统,没人比你更懂。
下午,林晨给峰会组委会回了邮件,确认出席。
接下来就是准备演讲内容。他花了三个晚上的时间,在书房里整理素材、写提纲、做ppt。
ppt的标题他改了五次,最终定为:《AI量化交易:从技术到实践》。
内容分四个部分:一是AI量化交易的技术架构,包括数据获取、特征工程、模型选择和回测框架;二是风控系统的设计,包括止损、仓位管理和对冲策略;三是实战经验分享,包括回撤应对、心态管理和策略迭代;四是AI在金融科技的未来趋势。
他特意避开了具体的收益率和策略参数——这些是核心机密,不能公开。但他把方法论、架构设计和踩过的坑都写得非常详细,足以让同行获得真正的启发。
ppt做到第三版的时候,苏婉走进书房看了几眼。
你这是要做报告?她问。
技术峰会的演讲。
苏婉看了一眼ppt,文字太多了。你这是写论文还是做演讲?
林晨愣了一下。他确实习惯了技术文档的写法——每个论点都有数据支撑,每个结论都有逻辑推导。但演讲不是论文,观众不想看满屏的文字和数字。
那我改改。他说。
改什么改,我帮你。苏婉拉了把椅子坐到他旁边,开始调整ppt的结构。
她的改动很简单但有效:每页只保留一个核心观点,用图表代替数据,用故事代替论述。比如讲回撤应对,她建议不要列一堆数据和策略,而是讲一个具体的故事——某天市场暴跌20%,我是怎么应对的。
你是语文老师,林晨看着改完的ppt,果然会讲故事。
演讲就是讲故事,苏婉说,技术只是故事的骨架,情感才是血肉。你讲回撤,不要只讲策略,要讲你那天晚上失眠、焦虑、怀疑自己的心情。观众想听的不是你赚了多少,而是你差点亏光的时候怎么扛过来的。
林晨想了想,觉得她说得对。他开始重新组织演讲的叙事结构:不再按照技术模块来分,而是按照时间线来讲——从失业到学AI,从开发投资系统到经历暴跌,从扛过回撤到重建信心。技术内容穿插在故事中,而不是单独成块。
改完的ppt,他练习了两遍。第一次讲了四十分钟,太长;第二次压缩到三十二分钟;第三次控制在二十八分钟,留两分钟给q&A。
苏婉坐在旁边听他练了第三遍,最后点评了一句:比第一次好多了。但你说话的时候别低头看屏幕,要看观众。
我低头是因为怕忘词。
忘词就忘词,讲你自己经历的事还能忘?苏婉说,你又不是背课文,你是在讲故事。讲故事要看对方的眼睛。
林晨点了点头,把这条记在笔记本上。
八月中旬,他飞去北京。
峰会会场在国贸附近的一家五星级酒店,他到的时候已经下午了。签到、领取参会证、进入主会场,到处都是西装革履的技术人和西装笔挺的投资人。
他穿着一件深蓝色衬衫,是苏婉帮他挑的。他本想穿t恤,被苏婉否决了:你是t厂的代表,穿太随便给公司丢脸。
演讲安排在第二天下午的分论坛。他到的时候,会场里坐了大约两百人。主持人介绍他的时候,念了一串头衔:t厂AI应用中心总Leader,量化交易系统架构师,知乎知名技术博主……
他走上台,深吸一口气,开始演讲。
前十分钟有点紧张,语速比平时快了。但讲到投资系统开发的那段故事时,他突然不紧张了——因为那是他亲身经历的,不需要背稿,只需要回忆。
他讲了那个在出租屋里调参数的深夜,讲了暴跌20%时的焦虑和冷静,讲了系统从5万到284万的螺旋上升,讲了买房后从零开始的决心。
讲到最后,他说了一段没有在ppt上的话:
很多人问我,35岁转型AI来得及吗?我的回答是:来得及,但不意味着容易。转型不是换个方向就自动成功,而是要付出比别人多十倍的努力。我用了两年的时间,经历了被裁员、学AI、做系统、找工作、入职、升职、买房……每一步都可能失败,每一步我都在咬牙。所以如果你问我转型的秘诀,我只能告诉你两件事:第一,永远不要放弃学习;第二,永远要有承受失败的勇气。
说完这段话,他看了一眼台下的观众。有人在鼓掌,有人在拍照,有人在低头记笔记。
q&A环节,有五个人提问。有人问风控架构,有人问特征工程,有人问回撤期间的心态管理。他一一回答,没有回避任何一个问题。
演讲结束后,有十几个人围上来加微信。他礼貌地交换了名片,但没有留太多联系方式——他今天的角色是t厂的代表,不是社交达人。
走出会场的时候,他看了一眼手机。苏婉发来一条消息:讲完了?
讲完了。
怎么样?
林晨想了想,回了一句:还行。比练的时候好。
苏婉回了一个竖大拇指的表情。
他收起手机,走向电梯。镜面里映出一个穿着深蓝色衬衫的男人,三十多岁,身材不算壮但挺拔,眼神稳定。
这不是两年前那个在出租屋里焦虑失眠的失业码农了。
这是一个在两百人面前讲过故事的t厂Leader,一个经历了暴跌和修复的投资人,一个买了大平层的中年男人。
变化发生在他自己都没注意的每一刻。
第223章 大会演讲的影响力
演讲结束后的一周,林晨的知乎关注者从一万涨到了十万。
不只是知乎。微博、cSdN、掘金、公众号,各大平台都在转载他的演讲视频。有人截了他在峰会上讲回撤应对的那段,配了字幕发到b站,播放量一天破了五十万。标题是35岁被裁程序员:暴跌20%那天我是怎么扛过来的。
评论区里,有人说这才是真实的投资,不是赚了就晒亏了就删,有人说回撤时能冷静持仓的人,要么是傻子要么是高手,还有人说这哥们的投资系统架构太牛了,开源那个回测框架我用了,真的好用。
林晨看着这些评论,心情复杂。他写文章和做演讲的初衷是分享经验,不是当网红。但互联网的逻辑就是这样——一旦内容被推上流量风口,你就不再是内容的控制者,而是被内容定义的人。
周三下午,他在公司茶水间倒咖啡的时候,碰到陈博士。
你的演讲视频我看了,陈博士端着杯子走过来,讲得不错。
谢谢陈博。
但有一点我想提醒你,陈博士看着他,知名度是双刃剑。你现在在行业里有了一定影响力,这对你和公司都是好事。但影响力也意味着,你说的每一句话都会被放大、被解读、被断章取义。
林晨点了点头:我知道。
知道就好。陈博士喝了一口咖啡,另外,我听说有好几家公司的hR在打听你的薪资。
林晨愣了一下:什么?
你演讲之后,猎头圈就炸了。你的名字、职位、大概的薪资范围,都在猎头的信息库里。有公司开出160万年包想挖你。
林晨没有接话。他知道在互联网行业,人才被猎头盯上是正常的事。但被盯上不代表要走——t厂给他的平台、团队和资源,不是多几十万年包能替代的。
陈博放心,他说,我没打算走。
我知道你不会走,陈博士放下杯子,但我要提醒你:这种事以后会越来越多。你的选择越多,就越要守住自己的节奏。
林晨想了一下,点头说:我明白。
回到工位后,他打开邮件,发现收件箱里多了几十条新消息。大部分是行业会议的邀请函、媒体采访请求、还有一些创业者想跟他的私信。他一一过目,只回复了两封:一封是36氪的采访邀请,他婉拒了;另一封是一个技术社区的活动邀请,他答应了。
其他全部删除。
下午五点,张磊敲了敲他的工位隔板。
晨哥,外面有个人找你。
说是Infoq的记者,想采访你。
林晨皱了皱眉。他没有接受采访的安排,这个记者是怎么进来的?
他走到公司前台,看到一个背着双肩包的年轻人站在那里,手里拿着录音笔和笔记本。
林晨先生?我是Infoq的记者张远,年轻人递上名片,我们在AI技术峰会上听了您的演讲,想做一个专访。已经跟你们公司的pR沟通过了,他们说可以采访,但要走公司流程。
林晨接过名片看了一眼。Infoq是国内知名的技术媒体,采访走公司流程也说得过去。他想了想,说:采访可以,但内容需要经过公司审核。
没问题。张远说。
采访在公司的小会议室里进行。张远问了大约二十个问题,从技术架构到职业规划,从投资系统到行业趋势。林晨回答得克制但坦诚——技术架构可以讲,具体策略不提;职业规划可以说,薪资数字不报。
采访结束时,张远问了一个他没有准备的问题:您觉得35岁程序员的困境,是行业问题还是个人问题?
林晨想了想:两者都有。行业对年龄的偏见是客观存在的,但个人选择也很重要。35岁被裁不可怕,可怕的是35岁还在做25岁能做的事。转型不是万能药,但不转型连选择的机会都没有。
张远记下这段话,收起录音笔,感谢了他的时间。
三天后,Infoq的文章发出来了。标题是《对话t厂AI负责人林晨:35岁被裁不是终点,而是涅盘的起点》。文章发了之后,转发量和讨论量比他预想的大得多。
微信群里,同事们纷纷转发,有人调侃林总火了,有人说你现在是行业网红了。林晨在群里回了一句,然后关掉了消息提醒。
他知道热度来得快,去得也快。真正重要的是他手里的事情——团队管理、项目推进、投资系统的运行。这些不会因为一篇文章或一次演讲就改变。
晚上回家,苏婉在客厅看手机。
你火了,她说,我朋友圈十条有八条在转你的采访。
是Infoq的记者找上门的,我没主动接受。
我知道。苏婉放下手机,但你得想清楚,这种影响力怎么用。是继续低调做技术,还是借势做更多事?
林晨想了一下:继续低调做技术。影响力只是副产品,不是目的。
那如果有人因为你的文章或演讲改变了人生呢?苏婉问,有个评论说看完你的文章,我决定学AI了。这种影响力,你不用也浪费了。
林晨沉默了。苏婉说的有道理。他写文章的初衷就是帮助那些和他一样处于困境中的中年程序员。如果文章只发一次就沉了,影响力是有限的。但如果能持续输出——不管是文章、演讲还是其他形式——影响力就会累积。
我再想想。他说。
那天晚上,他在笔记本上写了一行:
影响力是副产品,但副产品也可以有价值。关键是用什么方式、在什么时间、对什么人输出。
然后翻到下一页,写下了另一个标题:
第二本书?——考虑中。
他不确定自己会不会写第二本书,但他知道一件事:他正在从一个纯粹的程序员,变成一个有行业影响力的人。这个变化是好是坏,取决于他怎么用。
第224章 媒体采访
Infoq的采访发出去后的第三天,林晨的手机在一天之内接到了六个采访邀请。
36氪、虎嗅、极客公园、量子位、AI科技评论、还有一家财经杂志。有些是电话,有些是邮件,有些是通过知乎私信。无一例外,都想聊聊35岁程序员逆袭的故事。
林晨把六个邀请全部记在备忘录上,然后一个一个回复。
36氪:婉拒。理由是目前不方便接受财经类媒体采访。 虎嗅:婉拒。同上。 极客公园:接受了。纯技术媒体,符合他的定位。 量子位:接受了。AI垂直媒体,受众精准。 AI科技评论:接受了。同上。 财经杂志:婉拒。不想涉及投资收益的具体数字。
三个接受,三个婉拒。他给自己定了三条原则:一、只接受技术类媒体的采访;二、不涉及投资系统的具体策略和收益数字;三、不主动炒作个人故事,有人问就如实回答。
极客公园的采访安排在周三下午,通过视频进行。记者是个三十出头的女生,叫周彤,技术背景出身,问的问题很专业。
林晨老师,您的演讲在圈内引起了很大反响,尤其是回撤20%那段。周彤开门见山,很多读者好奇的是,您在那一刻是怎么保持冷静的?是性格使然,还是系统训练的结果?
林晨想了想:两者都有。我性格本身比较理性,遇到问题习惯先分析再行动。但更重要的是系统的训练——我在投资系统里预设了止损线和仓位管理规则,暴跌的时候系统自动执行,不需要我手动干预。说到底,冷静不是靠意志力,而是靠制度。
制度比意志力更可靠?
对。意志力是有限的资源,人在极端压力下很难保持理性。但制度是代码,代码不会恐慌。所以我的建议是:与其锻炼心态,不如建立规则。
周彤点了点头,在笔记本上记了几个关键词,然后问下一个问题:您的投资系统是开源的,回测框架部分在Github上已经有五千多star了。为什么选择开源?
因为我觉得知识应该是开放的,林晨说,我做投资系统的时候,走了很多弯路。如果当时有人分享过类似的框架,我可以少花一半的时间。现在我把它开源,就是希望后面的人能少走弯路。
但开源也意味着你的竞争者可以用同样的框架来跟你竞争,您不担心吗?
不担心。开源的是框架,不是策略。框架是工具,策略是灵魂。同样的回测框架,不同的人用,结果可能天差地别。
采访持续了四十分钟。周彤最后问了一个问题:您觉得AI行业未来三年最大的变化是什么?
林晨想了想:大模型会从实验室走向产业。现在大家都在谈论Gpt、LLamA这些大模型,但真正的挑战不是把模型做出来,而是把模型落地到具体场景中——金融、医疗、教育、制造。谁能率先解决落地问题,谁就是下一个时代的赢家。
采访结束后,周彤在微信上发了一条:谢谢林晨老师,您的回答比我想象的更有深度。文章大概下周发。
林晨回了一个,然后关掉视频。
三个采访都做完了。他坐在工位上,看着窗外的鹏城天际线,突然觉得有些不真实。一个月前他还是t厂的一个普通Leader,现在变成了行业意见领袖。这种身份的转变让他有些不适应——他还是那个每天写代码、调模型、做复盘的工程师,只是多了一些人在看他写了什么、说了什么。
手机又震了一下。是苏婉发来的消息:采访做完了?
做完了。
感觉怎么样?
还行。比想象中轻松。
那就好。晚上乐乐要你讲绘本,《小王子》那本。别忘了。
他放下手机,打开IdE,继续写大模型微调的代码。
不管外面怎么热闹,他的本职工作不会变。影响力是副产品,代码才是正餐。
第225章 意外的关注
采访文章发出去之后,林晨以为热度会慢慢降下来。
他错了。
极客公园的文章标题是《对话t厂林晨:用代码对抗人性,一个程序员的量化交易哲学》,发出去后阅读量迅速突破了五十万。量子位和AI科技评论的文章也各有十几万的阅读量。三篇文章加在一起,他在技术圈的名气从小范围传播变成了广泛知晓。
更让他始料未及的是评论区的两极分化。
支持者说:这才是真实的技术人,不做ppt造车,用真金白银验证系统。35岁转型成功不是鸡汤,是实打实的技术积累。开源回测框架用过了,好用,给作者点赞。
质疑者说:年入百万?投资收益不算稳定收入吧,回撤20%的时候你敢说年入百万?这就是幸存者偏差,一千个35岁转型的只有他一个成功,其他999个你看到了吗?炒作吧,t厂的Leader怎么会有时间做投资系统?是不是工作时间干私活?
最后这条评论让林晨皱了皱眉。
工作时间干私活?他的投资系统是在失业期间开发的,入职t厂后只是做日常维护和定期复盘,从来不占用工作时间。系统是全自动运行的,不需要他实时盯盘。这个质疑完全站不住脚。
但他没有去反驳。网上争论是赢不了的,越是回应越是被带节奏。他选择了沉默。
苏婉看到了那条评论,在微信上发了一段话:别理那些人。你的时间比他们的嘴贵。
林晨回了一个。
周五下午,他接到一个意想不到的电话。
林晨先生,我是华创资本的投资经理王磊。我们对您的投资系统很感兴趣,想跟您聊聊合作的可能性。
林晨的手在键盘上停了一下。投资机构——这不在他的计划之内。
谢谢您的关注,他说,但投资系统目前不打算商业化,也不考虑引入外部投资。
我们不要求控股,王磊说,哪怕只是技术合作或者顾问的形式——
抱歉,目前不方便。林晨的语气很礼貌但很坚定。
挂了电话,他在笔记本上写下:
拒绝投资机构合作邀约——华创资本。理由:1. 投资系统是个人项目,不涉及商业合作;2. 职业在t厂,不宜参与外部商业活动;3. 保持独立性比融资更重要。
这是他第一次明确拒绝资本。他不知道以后会不会后悔,但此刻他很清楚:一旦引入外部资本,投资系统就不再是他的了。资本会要求回报、要求增长、要求扩张——这些都是他在t厂的本职工作之外无法兼顾的。
晚上,他在书房里复盘今天的投资系统运行状况。账户总资产约56万,比上个月涨了4万。50万的本金在稳定运行,每月收益在5-8%之间。按照这个速度,年底前可以回到70-80万。
手机又震了。这次是张磊的微信:晨哥,外面有猎头在打听你的薪资,开出年薪180万想挖你。你知道吗?
林晨回了一句:知道。不走。
真不走?180万年薪啊!
t厂给我的不只是薪资,还有平台和团队。换一家公司,这些东西要重新建立。
好吧,你是真的稳。张磊发了一个佩服的表情。
林晨放下手机,继续看他的复盘报告。
热度会过去,猎头会消失,评论会沉寂。只有手里的代码和数据不会骗人。
他在笔记本上写了一行:影响力是把双刃剑,用好是助力,用不好是包袱。保持低调,做好本职。
第226章 商业合作
华创资本的电话不是最后一个。
接下来的两周,林晨又接到了三家投资机构的邀请。有做量化基金的,想做技术合作;有做金融科技的,想收购他的系统;还有一家pE基金,直接开出了顾问费50万/年的条件。
他一一婉拒了。
原因很简单:他在t厂有全职工作,投资系统是个人项目,两者之间不能有利益冲突。一旦跟外部资本合作,就不可避免地涉及知识产权、竞业限制、时间分配等复杂问题。他不想为了几十万的顾问费,给自己和公司埋下隐患。
但有一家公司的邀约让他多想了两天。
那是他在AI技术峰会上认识的一个创业者,叫赵磊,做的是AI投研平台——用大模型分析研报、新闻和公告,为投资者提供智能投研工具。赵磊的产品已经有了几万用户,但技术瓶颈很明显——他的大模型在金融领域的表现不够好,需要更专业的数据和更精细的微调。
林晨哥,赵磊在微信里说,我们不需要你的投资系统,我们需要的是你的方法论。你做量化交易的经验,对金融大模型的落地太有价值了。我们能不能聊聊?
林晨犹豫了。赵磊的项目跟他的投资系统没有直接竞争,也不涉及敏感数据。而且赵磊说的没错——他在金融AI领域的实战经验,确实可以帮助别人少走弯路。
但他还是没有答应。
我考虑考虑,他回复赵磊,目前不方便做任何形式的商业合作。
晚上,他和苏婉聊起了这件事。
为什么拒绝?苏婉问,顾问费50万,比你的年终奖还多。
不是钱的问题,林晨说,我在t厂有全职工作,投资系统是个人项目。如果跟外部资本合作,就不可避免地要投入时间和精力。我现在的精力已经分配得很紧了——团队管理、项目推进、投资系统维护、家庭……再加分就什么都做不好了。
那你考虑赵磊那个呢?
也考虑了。他的项目确实跟我的专业匹配,但合作的形式很难界定。如果是技术顾问,我需要定期开会、看代码、给建议,这些时间从哪里来?如果是股权合作,那就更复杂了——我在t厂有竞业限制,不能在外面的金融公司持股。
苏婉听完,说了一句让他愣住的话:你不是在考虑要不要合作,你是在考虑要不要创业。
林晨看着她,没有说话。
你拒绝所有合作邀约,不是因为没时间,苏婉说,而是因为你知道,一旦开始合作,你就会想做得更多。顾问做着做着就变成合伙人,合伙人做着做着就变成创始人。你怕的不是合作本身,是合作后面的那条路。
她说的没错。林晨确实想过创业——做AI量化平台,把投资系统商业化。但那是未来的事,不是现在。他现在在t厂的职业发展正处于上升期,升职加薪、团队扩张、项目推进,每一步都在正轨上。如果这时候离开,前面所有的积累都要归零。
现在不是创业的时机,他说,在t厂还有上升空间。
那就把所有的合作邀约都拒绝,苏婉说,不要留尾巴。犹豫比拒绝更消耗精力。
林晨想了一下,点了点头。
第二天,他给赵磊发了一条正式的消息:赵磊,感谢你的信任和邀请。经过认真考虑,我目前不方便参与任何形式的商业合作。如果以后有机会,我们再聊。祝你项目顺利。
然后他把微信里其他几个投资机构的人也一一婉拒了。
做完这些,他关掉手机,打开IdE,继续写代码。
代码不会问他要不要创业。代码只会等他写好,然后运行,然后返回结果。
这种确定性,是他在不确定性的人生里,最需要的东西。
第227章 评估机会
拒绝了所有商业合作之后,林晨反而花了更多时间在思考创业这件事上。
不是因为后悔,而是因为苏婉那句话——你不是在考虑要不要合作,你是在考虑要不要创业——让他开始认真审视这个之前只存在于脑海深处的念头。
他在书房里铺开一张A3白纸,跟年初做年度规划一样,写下两个选项:
选项A:留在t厂 优势:稳定薪资(65Kx16薪=104万/年),团队成熟,资源充足,职业发展有上升空间 劣势:管理事务多,写代码时间少,创意受限于公司方向,天花板明显
选项b:创业 优势:自由度高,可以做自己想做的事(AI量化平台),上限大 劣势:没有稳定收入,投资系统商业化需要大量时间和资金,风险极高
他盯着这两栏看了很久,发现一个问题:他列出的优势和劣势都是理性的分析,但他缺少一个关键信息——创业到底做什么、怎么做、需要多少资源。
于是他拿起笔,在选项b下面继续写:
创业方向:AI量化交易平台 核心产品:基于大模型的智能投研+量化交易系统 目标用户:个人投资者、小型私募 商业模式:SaaS订阅+策略分成 启动资金:至少200万(团队+服务器+市场推广) 预估收入:第一年0,第二年50-100万,第三年……
他写不下去了。因为他发现,创业的预估收入完全建立在假设之上。没有用户、没有数据、没有市场验证,任何预估都是空谈。
而且他忘了一个最现实的问题:他现在的投资账户只有56万,刚刚买了房子,月供5.7万,家庭开支每月3万左右。如果创业,他的工资收入归零,投资收益也不够覆盖家庭开支。
更别提乐乐马上要上小学了,学区房、学费、兴趣班——这些钱都是从哪里来的?
他把白纸翻过来,在背面写了一行大字:
现在不是创业的时机。
然后他又翻到正面,在选项A和选项b之间画了一条线,线上面写了一句:等条件成熟再考虑。条件:1. 投资账户回到200万以上;2. t厂职业发展遇到明确天花板;3. 创业方向经过市场验证。
三个条件,一个都没达到。
他把白纸折好,夹在笔记本里。
晚上吃饭的时候,苏婉看出他有心事。
还在想创业的事?
不纠结了,林晨说,算清楚了,现在不是时候。
怎么算的?
三个条件,一个都没达到。第一,投资账户只有56万,买房后需要至少回到200万才有安全垫;第二,t厂职业发展还在上升期,升职加薪通道畅通;第三,创业方向没有经过市场验证,不知道AI量化平台能不能赚到钱。
苏婉听完,说了一句:你比我想的更理性。
不理性不行,林晨说,创业不是冲动的事,是准备的事。等条件都满足了,创业是水到渠成;条件不满足硬创,是拿全家的未来去赌。
那就继续在t厂干?
继续干。林晨说,而且有件好事——陈博士跟我提过,大模型方向有进一步发展的空间,可能会成立一个独立的小团队。如果我能在这个方向做出成绩,职级和薪资还有上升空间。
苏婉点了点头,没有再追问。她知道林晨做了决定之后就不会犹豫,这是他最让人安心的品质之一。
晚上,林晨在笔记本上写下了最终的决策记录:
创业评估结论:暂不创业。理由:资金储备不足、职业发展未达天花板、创业方向未验证。下一步:1. 在t厂继续深耕大模型方向;2. 投资账户尽快回升;3. 保持开放心态,不排除未来创业可能性。
写完,他合上笔记本,关掉台灯。
窗外,鹏城的夜色依然灯火通明。有些人正在创业的路上拼杀,有些人正在大厂的工位上加班,有些人正在出租屋里焦虑地投简历。
而他,正在一个温暖的小家里,和一个支持他的女人,为一个还没到时机但终将到来的决定做着准备。
不急。该来的,总会来。
第228章 暂缓创业
创业的念头被暂时按下了,但林晨心里知道,这个种子已经种下了。
它不会消失,只是在等待合适的土壤。
九月初,鹏城的天气开始转凉。林晨坐在工位上,面前是陈博士发来的一封邮件,标题是关于大模型方向的内部调整。
邮件不长,但信息量很大:公司决定在大模型方向加大投入,AI应用中心的大模型小组将扩编,从原来的8人扩展到15人,预算增加50%,并且在q4季度启动一个名为的大模型专项项目。
林晨看完邮件,在心里算了一下:8人到15人,意味着他要招7个人,管理跨度进一步增大。预算增加50%,意味着他可以买更多的算力资源,做更大的模型。项目如果做成,他在t厂的位置会更稳——职级、薪资、影响力都会上一个台阶。
这比创业稳妥多了。
他打开笔记本,在创业评估的那一页旁边写了一行:
暂缓创业的另一个理由:t厂的大模型方向正在起飞,这是最好的平台和资源。创业需要从零开始,而在t厂我只需要做好手头的事。
下午的周会上,他向三个小组Leader宣布了这个消息。
大模型方向扩编,他说,陈博士给了我们7个headcount,我打算招3个算法工程师、2个数据工程师、1个产品经理和1个运营。大家有没有推荐的人选?
陈铭第一个举手:我之前在大厂的同事,有两个做微调的,技术很强。我可以帮联系。
好,简历发我。
周浩也说了:推荐系统这边可以调一个人过去支持大模型方向,特征工程的框架已经稳定了,人力有余。
好,我来协调。
李婷没有举荐人,但她提了一个问题:林总,扩编之后团队管理会不会更难?25个人和32个人,管理跨度不一样。
林晨点了点头:我已经在考虑这个问题了。我的想法是,大模型方向扩编后,你、周浩和陈铭各管一个小组,我管你们三个。管理层次清晰了,效率才能上去。
会后,他回到工位,打开招聘系统,开始看简历。
从25个人到32个人,管理的难度不是线性增加的,而是指数增加的。但他已经在管25个人的过程中学会了分层管理、授权和协调。再增加7个人,不是从零开始,而是在已有基础上扩展。
他想起苏婉说过的话:犹豫比拒绝更消耗精力。
创业他拒绝了,但在t厂继续深耕,他毫不犹豫。
晚上回家,他打开投资系统看了一眼。
账户总资产:约62万。
从50万到62万,用了大约五个月。虽然规模小了,但复利效应还在——系统的夏普比率稳定在2.3以上,每月收益在5-8%之间。
按照这个速度,年底前可以回到70-80万。如果市场行情好,也许更快。
他把数据记在笔记本上,合上。
创业的事先不想了。现在要做的事很明确:带好团队,做好项目,让投资账户继续滚。
至于未来——条件成熟的时候,他自然会知道。
第229章 专注技术
拒绝了所有外部邀约之后,林晨把全部精力投回了技术本身。
这是一种回归。过去两个月,他的注意力被演讲、采访、行业影响力分散了不少。虽然那些事情也重要,但他最擅长的、最该做的,还是写代码、调模型、做系统。
九月中旬的一个周六上午,他坐在书房里,面前是两块显示器。左边是投资系统的管理面板,右边是t厂大模型项目的代码仓库。
他在做两件事:一是投资系统的月度复盘,二是大模型微调的新方案设计。
投资系统的复盘很快。9月份各子策略表现稳定,总资产从62万增长到67万,月度收益8%。夏普比率2.4,最大回撤-3.2%(一次小的市场波动),风控机制正常触发。系统在健康运行,不需要大的调整。
他花更多时间在大模型项目上。
项目的目标是做一个金融领域的大模型微调方案,在t厂的基座模型上叠加金融语料和任务数据,让模型在金融场景下的表现超过通用模型。
陈铭做的7b微调模型已经有了不错的效果,在金融问答任务上超过基线12%。但12%的领先优势不够大——如果通用模型迭代升级,这个优势可能会被抹平。
林晨的思路是:不跟通用模型拼参数量,而是拼领域深度。金融领域有大量专业术语、逻辑链条和合规要求,这些是通用模型做不好的。如果能在微调数据上下功夫——用更高质量的金融数据、更精准的任务标注、更贴近实战的评测指标——就有可能做出一个在金融场景下真正有用的模型。
他在笔记本上写下方案框架:
金融大模型微调方案V2:
数据:收集10万条高质量金融问答数据(研报解读、市场分析、风险提示等)
标注:人工+AI混合标注,确保专业性和准确性
微调:LoRA+qLoRA混合方案,降低算力成本
评测:自建金融场景评测集,覆盖8个子任务
目标:金融场景下超越通用模型20%以上
他给陈铭发了消息,约了周一上午的讨论会。
周一上午十点,陈铭坐在他对面,看着这份方案框架,眼睛越看越亮。
数据质量是关键,陈铭指着第一条说,我们之前用的微调数据集有10万条,但质量参差不齐。如果能把数据清洗到5万条高质量数据,效果可能比10万条杂乱数据还好。
对,这就是我的思路。林晨说,与其拼数据量,不如拼数据质量。金融领域的容错率很低,一个错误的回答可能导致用户做出错误的投资决策。所以我们的模型不仅要,更要。
那标注成本呢?陈铭问,5万条数据全部人工标注,需要多少钱?
我算过,林晨打开一个表格,按每条数据标注成本5元计算,5万条需要25万。加上质检和项目管理费用,总预算大约40万。
40万?陈铭倒吸一口气,这比我们之前的标注预算多了四倍。
之前的数据是自动标注的,质量不行。林晨说,这次我们用混合标注:先让模型做初标注,然后人工审核和修正。这样可以把成本控制在25万以内,同时保证每条数据至少经过一次人工审核。
陈铭想了一下,点了点头:这个方案可行。但有个问题——标注需要金融专业人士来做,不是随便找几个数据标注员就行。我们上哪找这么多懂金融的人?
我已经想好了,林晨说,跟金融部门合作。他们有大量的研报和分析师,我们提供技术框架,他们提供专业内容。双赢。
这个方案他在心里想了一个周末。金融部门需要AI能力,他们需要金融数据,两边的需求完美互补。他甚至在脑子里拟好了合作框架:技术部门提供模型和工具,金融部门提供数据和标注,最终成果共享。
我来找金融部门谈。林晨说。
陈铭站起来,眼神里有一种久违的兴奋:林晨哥,这个方向比之前纯做微调有意思多了。
那就好好干。林晨拍了拍他的肩膀。
下午,他约了金融部门的负责人李总开了一个小时的会。李总是个四十多岁的中年人,说话干脆利落,对技术不太懂但很清楚业务需求。
你们需要什么?李总问。
高质量的金融数据,以及懂金融的人帮我们做数据标注。林晨说。
我们能得到什么?
一个在金融场景下超越通用模型20%以上的大模型,你们可以用来做智能投研、风险提示和客户服务。
李总想了两秒:数据我们可以提供,研报数据有几百万条。标注需要多少人手?
初期5万条,大约需要10个金融分析师兼职标注一个月。
10个人兼职一个月,这个我们可以安排。但模型做出来之后,产权怎么分?
合作框架下,模型产权归t厂,金融部门有优先使用权。林晨说,具体细节可以让法务去谈。
李总点了点头:可以。但我有一个条件——模型做出来之后,要先在我们内部测试三个月,效果好才对外推广。
没问题。测试阶段我们也会参与。
会后,林晨在笔记本上写下:
金融大模型合作框架:
技术部门:提供模型架构、微调方案、评测框架
金融部门:提供数据、标注人力、业务需求
产权:归t厂,金融部门优先使用权
时间线:数据准备1个月,微调1个月,测试3个月,预计6个月后出成果
写完,他合上笔记本,长出了一口气。
这就是他最擅长的事——不是在聚光灯下演讲,不是在采访中回答问题,而是在会议室里谈合作,在代码编辑器里写方案,在笔记本上算时间线和资源分配。
专注技术,做出成果,其他的都是副产品。
他想起两个月前在AI技术峰会上的演讲。当时他说制度比意志力更可靠。现在他要用同样的话提醒自己:专注比影响力更可靠。影响力是暂时的,技术是永久的。
打开IdE,开始写金融数据清洗的脚本。
第230章 大模型浪潮
十月初的一个周五,科技圈被一条新闻炸了锅。
openAI发布了新一代大模型。推理能力、代码生成、多模态理解——全部实现了质的飞跃。各大技术社区瞬间沸腾,评测截图、对比表格、体验视频像潮水一样涌出来。有人惊叹模型的逻辑推理已经接近人类专家水平,有人晒出模型自动生成的前后端代码,还有人展示了模型看图写诗的能力。
大模型时代真的来了。
这句话在短短几个小时内刷遍了所有人的朋友圈。
林晨是在午饭时刷到这条新闻的。他放下筷子,花了二十分钟把所有测评文章看了一遍,越看表情越严肃。他不是恐慌——他是兴奋。
他拿起手机想给陈博士发消息,又放下了。不急,先想清楚。
t厂的反应很快。当天下午四点,陈博士就在部门群里发了消息:
下周一下午两点开会,讨论大模型战略调整。所有人准时参加。收到回复。
群里瞬间被刷屏。
林晨回了后,打开了一个空白文档。他在键盘上敲了一个标题:大模型时代的战略窗口期分析,然后开始写。
周五晚上,整个办公区的人都走得差不多了,他还在写。
周末两天,他把能找到的大模型论文、技术报告、商业分析全部翻了出来。从Gpt系列的技术演进路线,到各家大厂的算力储备对比,再到金融领域落地大模型的可行性路径。资料越看越多,文档越写越长。
到周日晚上,他已经整理出了一份近五千字的分析报告。
周一,会议室。
陈博士站在白板前,用马克笔写下四个大字:
大模型是未来。
笔锋有力,白板微微晃动。
他转过身,目光扫过会议室里的十几个人:openAI的新模型证明了一件事——大模型的能力上限远超我们的想象。这不是改良,是代际更替。如果t厂跟不上这波浪潮,我们之前做的所有事情都会变成沉没成本。
会议室安静了几秒。
公司决定加大在大模型方向的投入,项目的优先级提升到最高级别。陈博士顿了顿,具体的资源分配方案还没定。今天开会,就是让大家提想法。
赵工先开口:我们目前的模型架构主要针对金融领域的垂直任务,如果切换到通用大模型路线,成本会上升一个数量级。我觉得还是要看性价比。
性价比是静态概念,周凯说,现在是窗口期,窗口关上了,性价比再高也没用。我同意陈博的意见,得跟上。
讨论持续了将近一个小时。有人说技术路线要调整,有人说先观望,有人说应该先做小规模验证。
林晨一直没说话,在角落里敲着笔记本键盘。
林晨,陈博士突然点名,你一直没说话,有什么想法?
林晨抬起头:我的想法是——不能观望。
他站起来走到白板前,在陈博士那四个大字下面写了一个公式:
窗口期 x 算力壁垒 = 竞争护城河
我是做量化交易出身的,他转过身说,技术浪潮的本质是套利。最早入局的人吃最大的红利,跟随者喝汤,迟到者买单。大模型现在处于什么阶段?早期。谁都不知道上限在哪里,但上限越高,先发优势越大。
他指着公式:这是两条腿。窗口期是时间,算力壁垒是门槛。现在的机会在于——大模型能力已经验证,但金融领域的垂直应用还没人做透。如果我们能在三个月内拿出一个金融场景的专用模型,那就是行业第一。
赵工问:三个月?现在我们的GpU能支撑吗?
不能,林晨直说,所以要申请。
怎么申请?
13b模型的微调,至少需要A100八卡集群跑一个月。如果要上70b,算力需求翻四倍。但我算过了——
他打开投影,切到周末做的那份文档,翻到一页数据分析。
我们现在的方案是基于7b模型微调,效果超过基线12%。但12%的领先优势,在金融场景里不够。客户拿一个通用大模型加上提示词工程,也能达到差不多的水平。但如果我们在13b模型上做微调,金融场景效果预计超越通用模型30%以上。
如果直接上70b呢?陈博士问。
领先优势可能达到50%。这种差距,足以支撑一个完整的商业化产品线。
会议室又安静了。
算力预算会增加,陈博士说,但需要详细的申请报告。谁能写?
我来写。林晨说。
陈博士看了他一眼,点头:
林晨花了两天时间。
第一天上午,他整理了项目现在的算力使用情况——峰值利用率、平均负载、任务队列长度、每周浪费的空闲资源。下午,他开始调研算力市场的现状。A100的价格在涨,h100的供货周期在拉长,各大云厂商的大客户都在抢资源。
他发现一个关键信息:公司之前和一家GpU云服务商签过年框协议,还剩一部分预留资源没有用完。如果走内部采购优先通道,成本可以压缩到市价的六折。
第二天,他把所有数据整合成一份正式报告。标题是:
星辰项目大模型方向算力扩容的申请
报告结构很清晰:
第一部分:为什么要扩大算力——大模型时代的战略窗口
第二部分:需要多少算力——13b和70b两种方案的资源评估
第三部分:产出预期——金融场景专用模型的性能预测与商业化路径
第四部分:RoI分析——三年内预期投资回报率不低于380%
第五部分:备选方案——如果算力申请不通过,b方案是什么
报告最后一段话,他反复推敲了几遍:
大模型赛道的竞争,本质上是算力壁垒的竞争。先发者用算力训练出行业最好的模型,后发者即使用同样的算力,追赶也需要时间。这段时间差,就是我们建立护城河的窗口。t厂有资金、有数据、有场景、有团队——唯一缺的是算力。补上这一块,我们就能在这波浪潮中站在浪头上,而不是被浪打翻。
点下键的时候,林晨看了一眼时间。凌晨两点四十三分。
报告交上去之后是等待。
第一天,没动静。
第二天,没动静。
第三天下午,林晨正在写数据预处理的脚本,屏幕右下角弹出陈博士的消息。只有一张截图——
截图上是一封公司高管的回复邮件,正文只有六个字:批准。加速推进。
下面附了一句:GpU集群扩容方案已启动,预计两周内到位。后续事宜由AI基础设施部配合。
林晨盯着那六个字看了好一会儿。嘴角慢慢扬起来。
然后他打开一个笔记本,翻到新的一页,写下:
大模型方向下一步:
算力到位后,立即启动13b模型微调(优先)
金融数据标注加速推进,目标新增10万条高质量标注数据
评测框架同步升级,增加多维度金融场景测试
预留70b模型的实验性验证窗口
时间线:12月底前,13b金融模型上线内部测试;春节前,正式版发布
写完,他把笔放下,靠在椅背上。
窗外是城市的夜景。对面的办公楼灯火通明,远处的高架上车辆川流不息。十月的晚风从窗缝钻进来,带着一点凉意。
林晨端起茶杯喝了一口,杯子里的水已经凉了。
他想起刚来t厂的时候,赵工跟他说过一句话:大厂的决策流程是最慢的,但大厂的资源是最猛的。能不能拿到资源,就看你有没有本事说服决策层。
现在资源到了。
他放下茶杯,重新把手指放在键盘上。IdE里是写到一半的数据预处理脚本。
浪潮来了。
但冲浪的人,从来不是站在岸边观望的。他们站在浪头上,迎着最猛的风,在所有人都觉得不可能的时候,稳稳地站住了。
林晨开始敲代码。
凌晨的办公室很安静,键盘的嗒嗒声像节拍器,规律、持续、不知疲倦。屏幕上的代码一行一行往下延伸,像一条正在修筑的路。
窗外,城市的灯火正在一盏一盏熄灭。但他头顶的那盏灯,还亮着。
第231章 转岗机会
十月中旬的一天,陈博士把他叫到了办公室。
陈博士的办公室格局没变,但桌上多了一台新的显示器——看来他也换装备了。
陈博士指了指对面的椅子,然后开门见山,公司要成立一个独立的大模型部门,我推荐你去。
林晨愣了一下。独立的大模型部门?
对。不是在AI应用中心下面加一个小组,而是单独成立一个部门,直接向cto汇报。陈博士说,这个部门的定位是做大模型的基础研发和商业化落地,跟应用中心的方向不同。
那我现在管的AI应用中心呢?
应用中心不变,推荐系统、金融科技继续做。但你如果去大模型部门,应用中心需要有人接手。
林晨沉默了几秒。这个提议来得突然,但又不完全意外——他最近在大模型方向上的投入有目共睹,陈博士推荐他是顺理成章的事。
大模型部门的规模呢?他问。
初期20人,后续可能扩到50人。预算和算力资源会大幅增加。
职级呢?
跟你在应用中心一样,资深专家。但如果你做得好,晋升速度会比应用中心快。大模型是公司的战略方向,资源倾斜会很明显。
林晨在心里快速权衡。留在应用中心,他管25个人,做的是推荐系统和金融科技,方向稳定但天花板可见。去大模型部门,他管20个人(后续可能50人),做的是最前沿的技术,方向有风险但上限很高。
更重要的是,大模型方向是他真正感兴趣的。他在投资系统里用的是传统机器学习和深度学习,但对大模型的理解和实战经验还不够深。如果去大模型部门,他可以全身心投入这个方向,学习最新的技术,做最有影响力的事情。
我需要考虑一下。他说。
给你三天。陈博士说,下周三之前给我答复。
走出办公室,林晨在走廊里站了一会儿。窗外的鹏城天际线在秋日的阳光下显得格外清晰,远处的鹏城湾波光粼粼。
他拿出手机,给苏婉发了一条消息:陈博士推荐我去大模型部门,你怎么看?
苏婉的回复很快:大模型方向不是你最感兴趣的吗?
是,但离开应用中心意味着从零开始。新部门、新团队、新方向。
你又不是第一次从零开始了。苏婉回了一句。
林晨看着这条消息,笑了。是啊,他不是第一次从零开始了。两年前他失业的时候,是从零开始学AI;入职t厂的时候,是从零开始带团队;升职当Leader的时候,是从零开始学管理。每一次从零开始,最后都走到了比原来更高的地方。
这一次有什么不同?
没有不同。
周三,他走进陈博士的办公室,说了一句话:
我去。
陈博士看着他,嘴角微微动了一下:我就知道你会去。
但我有一个条件,林晨说,应用中心的交接要平稳,周浩、李婷和陈铭三个人,我要确保他们跟新Leader磨合好了再走。
可以。给你一个月的过渡期。
谢谢陈博。
走出办公室的时候,林晨的步伐比以往轻快了一些。不是因为他做了一个轻松的决定,而是因为他做了一个对的决定。
大模型方向是未来。而他要站在未来这一边。
第232章 学习大模型
转到大模型部门的第一周,林晨就感受到了一种久违的陌生感。
不是因为新环境——办公区还是同一个,茶水间还是那个,食堂的酸菜鱼还是那个味道。陌生的是他面前的技术栈。
过去他做的是传统机器学习和深度学习:xGboost、LStm、transformer,这些他都熟得不能再熟。但大模型的世界远不止这些——预训练、指令微调、RLhF、LoRA、量化推理、分布式训练……每一个概念都是一扇新门,门后面是一片他还没完全探索过的森林。
周一晚上,他坐在书房里,面前摊着一堆论文和技术文档。屏幕上开着三个浏览器窗口:一个是hugging Face的模型页面,一个是pytorch的分布式训练文档,还有一个是openAI的技术报告。
苏婉端着两杯茶走进来,看了一眼他桌上的论文堆:这阵仗,像回到了两年前你学AI的时候。
差不多,林晨接过茶,但这次有基础,学起来快一些。大模型的底层还是transformer,我之前在投资系统里用过,只是规模不同。
规模不同就是质的不同吧?苏婉说,就像从自行车到汽车,虽然都是交通工具,但操作方式完全不一样。
林晨想了一下,点了点头:你说的对。从几百万参数的模型到几百亿参数的模型,不只是量的变化,而是方法论的变化。训练方式、推理优化、部署方案,全都不一样。
他给自己列了一个学习计划:
大模型学习路线:
基础理论:transformer架构、注意力机制、预训练原理
微调方法:全量微调、LoRA、qLoRA、指令微调、RLhF
分布式训练:数据并行、模型并行、deepSpeed、FSdp
推理优化:量化、剪枝、蒸馏、KV cache
应用落地:prompt Engineering、RAG、Agent
实战:从0到1完成一次大模型微调
他给每个模块安排了时间,总计大约三周。白天在公司工作,晚上在家学习,周末做实战练习。
第一周,他啃了三篇核心论文:《Attention Is All You Need》、《Scaling Laws for Neural Language models》、《training Language models to Follow Instructions with human Feedback》。第一篇他早就读过,但重新读一遍,在大模型的语境下有了新的理解。第二篇和第三篇是全新的内容,他花了两个晚上才消化完。
第二周,他开始做实战练习。在公司的GpU集群上,他用LoRA方法对Llama-7b模型做了金融领域的微调。数据是金融部门提供的研报摘要和问答对,总共两万条。
训练的过程比他想象的要顺利——LoRA的优势在于参数量小,微调成本低,7b模型在8张A100上只跑了两小时就完成了。
但评测结果让他不太满意:金融场景下的准确率只比通用模型高了8%,远低于预期的20%。他分析了原因,发现是数据质量的问题——两万条数据里有不少噪声,需要进一步清洗和标注。
数据,还是数据。他在笔记本上写下这个结论。
大模型的能力上限取决于数据的质量,这一点跟他的投资系统是一样的。投资系统如果喂的是垃圾数据,输出的也是垃圾信号;大模型如果用杂乱的数据微调,效果也好不到哪去。
第三周,他把注意力转向推理优化。大模型的推理成本是一个不能忽视的问题——7b模型单次推理需要几秒钟,70b模型可能需要几十秒甚至几分钟。如果要做商业化落地,推理速度和成本必须控制在合理范围内。
他研究了量化和蒸馏两种方案。量化是把模型的参数从Fp16(16位浮点)压缩到INt8(8位整数)甚至INt4(4位整数),代价是精度损失,但速度可以提升2-4倍。蒸馏是把大模型的知识转移到小模型上,用小模型做推理,速度更快但需要大量训练。
他选择先做量化方案,因为实现更简单,效果更直接。
三周学习结束的时候,他在笔记本上写下了学习总结:
大模型核心认知:
数据质量决定模型上限
微调方法的本质是高效的参数更新
推理优化是商业落地的关键瓶颈
大模型不是万能的,但在特定领域微调后可以超越通用模型
下一步:在13b模型上做金融微调,目标超越通用模型30%以上
合上笔记本,他看了一眼时间。凌晨一点。
苏婉和乐乐早就睡了。客厅的灯关着,只有书房的台灯还亮着。
他关掉台灯,走出书房,在走廊里站了一会儿。窗外的鹏城夜景安静地亮着,远处的鹏城湾在月光下泛着银色的光。
两年前他也是这样——深夜学AI,白天上班,周末实战。只是那时候他是在出租屋里,一个人对着屏幕,前途未卜。现在他是在新家的书房里,身后是一家人的温暖,前途清晰。
环境变了,但他学东西的方式没变:先看懂原理,再做实战,最后总结规律。这三步走完,一个新领域就算入门了。
他回到卧室,轻手轻脚地上床。苏婉翻了个身,嘟囔了一句:几点了?
一点。
早点睡。
他闭上眼睛,脑子里还在转着大模型的架构图。但很快,疲惫战胜了思考,他沉入了梦乡。
第233章 新团队
大模型部门的组建比林晨预想的要快得多。
他原以为从零组建一个二十人的新部门至少要两个月——走hR流程、筛简历、面试、谈薪资、办入职,每一步都有不可控的因素。但公司的支持力度远超他的预期。陈博士在背后做了很多工作,hRVp亲自盯进度,财务特批了招聘预算。
三周。从拿到编制到二十人全部到岗,只用了三周。
八个从应用中心转过来,包括陈铭和大模型小组的原班人马。陈铭是他最放心的人——两人从应用中心就开始搭档,配合默契。五个从其他部门调入,做过后端架构、数据工程和产品落地,经验丰富。剩下七个是社招新入职的,有从大厂跳过来的NLp工程师,有从金融行业转行的数据分析师,还有两个刚从顶尖高校毕业的博士。
林晨看着hR发来的人员清单,在陈铭的名字旁边打了个勾。这个人是他点名要的。陈铭在AI应用中心的时候就是最有冲劲的工程师之一,对新技术有一种本能的好奇心。当初在7b模型上做LoRA微调,就是陈铭第一个跑通了全流程。
新团队的第一次全员会议定在周一上午十点。
会议室不大,二十个人挤在一起,椅子不够,有人靠在墙上站着。林晨走进来的时候,所有人同时安静了。
他扫了一圈。有认识的面孔——陈铭、李婷,应用中心的老人;张雨,新来的博士,简历上写着自然语言处理方向,顶会论文六篇;还有几张他面试过的脸,记得每个人的技术方向,但不记得名字。
我叫林晨。他在白板上写下自己的名字,这个部门是新成立的,所有人都是新来的——包括我。
他转过身,手撑在桌沿上。
我们没有历史包袱。没有旧系统需要兼容,没有老流程需要遵守,没有以前都是这么做的这种话。我们要做的只有一件事:让大模型在金融领域超越所有通用模型。
台下的人看着他。有人眼神里有期待——尤其是那两个刚毕业的博士,坐得笔直,像等着听教授讲课。有人眼神里有不确定——那几个从其他部门调过来的老员工,双手交叉抱在胸前,态度审慎。有人眼神里有压力——陈铭知道林晨说的一件事背后是多少工作量。
这个目标听起来很大,林晨说,但拆解之后其实很清楚。基座模型用开源的13b,我们在上面做领域微调。数据用金融部门的研报和问答对,标注标准我们自己定。评测框架专门针对金融场景设计,不套用通用评测。三条线并行,两个月出第一版。
一个从数据部门转过来的工程师举了手:林总,数据质量这方面,金融部门现有的数据很乱,之前的团队试过标注,但标准不统一,效果不好。
我知道。林晨说,所以数据这条线我亲自盯。
工程师点了点头,收回了手。
第一件事,林晨在白板上写了四个字:技术分享。
每周五下午,每人三十分钟,主题自选。可以讲你做过的项目,可以讲你读过的论文,可以讲任何技术发现。目的就一个——让所有人了解彼此的能力和思维方式。
这是他之前带应用中心团队时摸索出来的经验。技术分享看起来跟KpI没关系,但它解决的是信息不对称的问题。当一个工程师知道坐在隔壁的同事擅长什么、正在做什么、遇到了什么坑,协作会自然发生。
第二个做决定的是部门架构。
他没有按传统的职能分组——算法组、工程组、数据组这样的划分。而是按任务线分了三个小组:微调组负责模型训练和优化,数据组负责语料清洗和标注质量,评测组负责构建金融场景的测试集。三个组的目标都指向同一个产出——一个能在金融场景下跑赢通用模型的大模型。
三个月,林晨在白板上写了日期,十二月底之前,我要看到一个能在金融问答、研报摘要、风险提示三个核心任务上全面超越通用模型的系统。不是实验室里的效果好两三个点,而是真正能用、能上线、能让金融部门愿意切换的。做不到的话,这个部门的存在就没有意义。
会议室里安静了几秒。
陈铭第一个开口:微调组这边,我之前在7b上做过完整的验证,LoRA方案可以直接复用到13b。但13b的参数量是7b的四倍,训练时间也会是四倍,8张A100一次微调大概需要十二个小时。如果申请不到更多算力,迭代周期会拉长。
算力的事我来解决,林晨说,已经跟陈博士申请了,下周有回复。你先按8张A100的方案排期,不够再加。
张雨推了推眼镜:林总,评测方面我有个建议。通用评测集对金融场景的区分度不高,比如mmLU里的金融题太基础了,测不出真正的差异。我建议我们自己构建一套多维度的金融评测集,覆盖问答、摘要、风控、合规这几个方向。工作量会大,但区分度会好很多。
可以。林晨看了她一眼。这个博士的思路很清晰,不是只会写公式的那种。你来牵头,评测组的人归你调。
会议持续了一个半小时。
结束的时候,林晨把马克笔放下,说了一句:今天的话不多,但方向应该清楚了。有问题随时找我——我的工位在走廊到底左边那间,门开着。
陈铭留到了最后。等其他人都走了,他走到白板前,看着林晨写的日期。
三个月,陈铭说,你觉得够吗?
够不够都得够。林晨把马克笔盖上,窗口期不会等人。
那万一第一版效果不好呢?
那就分析原因,改数据、调参数、再训一版。林晨拍了拍他的肩膀,这不是一次性的事,是反复迭代的过程。我在做投资系统的时候,第一版效果也一塌糊涂。重点不是第一版好不好,而是每一版都比上一版好。
陈铭看着白板上的日期,沉默了几秒,然后说:好。我先回工位写微调方案了。
去吧。
陈铭走后,林晨一个人在会议室里站了一会儿。窗外的鹏城秋天明亮而清澈,阳光从二十层的玻璃窗照进来,把白板上的字照得发亮。
他看着那行日期——十二月底——然后拿起板擦,把日期擦掉了。
不是取消,是确认了。
从零开始,但这次他不是一个人。身后有二十个人,有公司的资源,有陈博士在背后撑着。三年前他在家里一个人学AI,三年后他带着一个二十人的团队做行业最前沿的事。
走出会议室的时候,路过走廊里新装的部门铭牌——大模型应用部。牌子很新,不锈钢表面还贴着保护膜。
林晨伸手撕掉了保护膜。
新团队,开始了。
第一个周五的技术分享,陈铭讲了LoRA微调的全流程。
他准备了四十页ppt,从LoRA的数学原理讲到代码实现,再到他在7b模型上踩过的坑。讲到一半的时候,林晨注意到张雨一直在写笔记——不是打字,是用笔在本子上写,一行一行的公式和批注。
分享结束后,张雨举手问了一个问题:你在7b上用LoRA的时候,rank设置是多少?
16。
13b上呢?
还在调。初步试了32,效果提升不明显,可能是数据的问题。
张雨在笔记本上又写了几行,然后说:rank的影响在13b上应该比7b更大,因为参数空间更复杂。建议你试试把rank调到64,牺牲一点训练速度换效果。
陈铭想了想,点头:有道理。下一版我试试。
林晨坐在后排,看着这一幕,嘴角微不可察地动了一下。这就是技术分享的意义——不是一个人在台上讲课,而是一群人在台下碰撞。
第二个分享的是张雨。她讲了RLhF的数学框架,从pomdp建模到偏好函数的最优解。黑板写满了公式,全程没有任何一个人提问——不是觉得不好,而是跟不上。
林晨能跟上一半。他知道这是正常的——张雨的数学功底在这个团队里无人能及,她的价值不是让别人完全理解她的推导,而是让团队知道这个方向有人能做。
第三个分享的是林晨自己。
他没有讲大模型。他讲的是自己的投资系统——从五万块钱起步,经历了暴跌20%、最大回撤-42万,最终靠制度和代码扛过来的故事。
大模型跟投资有一个共同点,他说,就是不确定性。你不知道训练出来的效果好不好,就像你不知道下一个交易日会亏还是会赚。但你能做的是建立规则——预设止损、定义回撤极限、让系统在极端情况下也能安全运行。
他把投资系统的风控架构图投到屏幕上。三层止损:单一品种不超过5%仓位、全账户回撤不超过20%、连续三天亏损自动降仓。每一条规则对应一个极端场景。
做模型也是一样的道理。不是每次训练都能成功,但你可以在开始之前定义好——什么情况叫失败、失败后怎么处理、什么时候终止训练、什么时候调整路线。规则在前,执行在后。这个顺序不能乱。
台下终于有人开始记笔记了。不是技术笔记,是方法论笔记。
林晨知道他的话不能让每个人都理解。但至少有一部分人开始思考:原来做大模型跟做投资可以用同一套逻辑。
会议结束后,张雨在走廊里拦住了他。
林总,你刚才说的风控思路,在大模型里能不能理解成——训练过程中实时监控效果指标,设置性能底线,如果验证集上的loss连续三轮不降,自动终止并调整?
差不多,林晨说,但大模型的评测指标比投资更复杂。盈亏是即时反馈的,模型好不好往往要等人工评估之后才知道。所以你的实时监控指标选什么就很关键。
困惑度。张雨直接说,虽然困惑度不是唯一的指标,但它是最快的。如果困惑度在验证集上连续三轮不降,说明数据或参数有问题。
对。你先设计一个监控方案,下周讨论。
张雨点了点头,转身快步走向工位。她的步伐很快,像是已经在脑子里写公式了。
林晨看着她的背影,想起了一个人——两年前的自己。也是这样的步伐,也是这样的急迫,好像每多等一秒就会错过什么。
回到工位,林晨打开了一个新的word文档。标题写的是大模型部门月度工作总结。
但他没有直接开始写。他看着这个标题,想的是另一件事:第一周结束了。方向定了,团队开始磨合,技术分享跑起来了。但真正的考验还在后面——第一个微调结果的出来,才是检验一切的时候。
他敲了第一行:
部门完成组建,20人到岗,架构搭建完成。下周启动13b模型微调项目。
窗外,秋天的阳光正在变短。
但办公室的灯还亮着。
第234章 大平层交房
十一月的第一个周六,林晨接到了中介小陈的电话。
林先生,鹏城湾的过户手续全部办完了!业主那边已经交了钥匙,可以随时拿房!
电话那头,小陈的声音压不住的兴奋。1740万的大平层成交,对于中介来说是一笔不小的佣金,够他接下来三个月不用开单了。
行,我这周去拿钥匙。
挂了电话,林晨看了一眼在厨房里洗菜的苏婉。
房子过户了。
苏婉转过头:那什么时候拿钥匙?
就今天吧。反正小陈在那边等。
苏婉关掉水龙头,擦了擦手,带乐乐一起去。
周六上午,一家人到了鹏城湾。
秋天的阳光很好,从小区南门进来就是一片开阔的中庭花园。榕树的枝叶撑开一把巨大的伞,阳光穿过叶子间的缝隙落在石板路上,碎成一地金色的斑点。
小陈在物业中心门口等他们,穿着一件洗得很干净的白色衬衫,手里拿着一个牛皮纸文件袋。他先带他们去物业办入户登记——填写业主信息、录入指纹、办理门禁卡。然后是车位分配,地下二层的子母车位,可以停两辆车,虽然林晨现在还只有一辆。最后是物业费缴纳,每个月两块八一平,188平月均五百出头。
整个流程花了将近两个小时。签了大概二十份文件,每份文件都有三四页,物业小姑娘说话拖长音,打印机卡了两次纸。乐乐在旁边坐不住,从一张椅子爬到另一张椅子,苏婉拉了他三次才消停。
终于,所有手续办完了。
小陈从一个信封里取出两把钥匙,郑重其事地递给林晨。
林先生,恭喜。鹏城湾15楼1501室,正式属于您了。
钥匙是银色的,十字形,有点沉。林晨把它们掂了掂,然后递给了苏婉。
苏婉握在手里看了好一会儿。
怎么了?林晨问。
这把钥匙很轻,她说,但它打开的是一套一千七百多万的房子。
一千七百四十万,不是一千七百万。
苏婉白了他一眼:你就不能稍微感性一点?哪怕是今天?
感性留给装修。理性留给钱。
你这种人,买房都在算。
不算不行,林晨说,不算清楚怎么知道月供五万七是扛得住的。
苏婉没有接话,但握着他手的力度微微紧了一些。
他们上了15楼。两梯两户,电梯门一开就是入户玄关。1501室的门是深色的实木门,配的是智能密码锁。林晨按了密码——那是乐乐的生日和门牌号的组合,苏婉定的。
门推开的瞬间,一股空房子特有的气味飘了出来。不是霉味,是墙面漆和木地板混合在一起的清淡气息,夹着几个月没人住的微尘味。
但这一次的感觉跟之前任何一次看房都不一样。
上次来是,这次来是。
乐乐第一个冲进去,在空荡荡的客厅里跑了一个大圈。球鞋踩在木地板上发出清脆的回响,在四面白墙之间来回弹。跑完一圈又跑一圈,然后是第三圈。
这是我们的新家!这是我们的新家!
声音在空旷的客厅里回荡,像一个小小的山谷里的回声。
苏婉没有急着跟进去。她站在玄关处,从左到右慢慢扫了一遍。客厅、走廊、窗外的海景——视线每移动一段,表情就变化一点。不是兴奋,不是震撼,是一种缓慢的、一寸一寸的确认:这个地方,是她的了。
她走进厨房,摸了摸中岛台的台面。这是前任业主留下的,白色大理石,带了点浅灰色的纹理,保养得不错,台面上只有几道不怎么明显的划痕。
这个可以保留。她说。
什么?
大理石台面。不用换了,省一笔。
林晨走过来,弯腰看了看台面的边缘:没有裂纹,可以保留。但水槽龙头要换,那个老化了。
苏婉又走到灶台前,打开柜门看了看里面的燃气管道,然后关上。打开冰箱的位置——空的,前业主把旧冰箱带走了。她站在那个空位置前,用手比了比尺寸。
这里放一个对开门的。左边冷冻右边冷藏。
林晨走进书房。
书房的窗户朝北,光线柔和,不刺眼。从窗口望出去,能看到科技园的一角和鹏城湾的一小片海面。他在心里摆了一下家具的位置:工作台靠窗放,双显示器正对窗户,这样白天有自然光,晚上看屏幕不反光。书柜靠右边的墙,从地板到天花板,分成十二格——AI技术一格,投资金融一格,数学统计一格,哲学历史一格。沙发床放在角落,偶尔加班太晚可以躺着休息。
书房够大吗?苏婉走进来。
够了。林晨站在窗前没回头,比现在的书房大三倍。
那你的投资系统呢?
投资系统在云端,不需要物理空间。书房只是我复盘和规划的地方。他转过身,但网线要重新布置。这面墙要装六个千兆口。
六个?
两个给电脑。一个给NAS。一个给智能家居中控。两个备用。
苏婉摇了摇头,但嘴角是上扬的。你连书房网口都要算。
这间书房是我每天待最久的地方。它可以没有沙发,但不能没有网口。
他们又看了主卧、次卧和客房。每个房间都空荡荡的,白色的墙壁、灰色的地板、透明的玻璃窗。阳光从不同的方向照进来,在木地板上画出大小不一的矩形光影。
苏婉在主卧的窗户前往外看了一眼,然后拿出手机拍了几张照片。她走到乐乐的房间——这是次卧中最方正的格局,朝南,采光最好。
乐乐的房间要刷成蓝色。
哪种蓝?
大海的那种蓝。不是灰蓝,也不是深蓝,是晴空下海面的那种蓝。
林晨站在她旁边,看着空荡荡的次卧,想象它被涂成海蓝色之后的样子。
装修什么时候开始?苏婉问。
下周。林晨说,装修公司已经排好了工期。水电改造二十天,泥木二十五天,油漆十五天,安装收尾二十天。总共大约三个月。
三个月?乐乐从门口探进头来。他刚才一直在客厅跑来跑去,脸都跑红了。那不是在过年前才能住进来?
对,新家过年。
太好了!乐乐跳了一下,然后继续跑到客厅,一边跑一边喊,我可以在新家过年!我可以住大房子过年!
苏婉看着乐乐兴奋的背影,眼睛里有一种安静的满足。
装修的事我盯着,她说,你专心上班。但每天下班要来看一眼。
不是看一眼那么简单。苏婉转身面对他,表情严肃了。施工队会偷懒。你不看,他们就糊弄。上次旧家装修的时候就是这样——客厅的地砖铺歪了,如果不是你每天去盯,后来才发现就晚了。
我知道。我每天下班来,拍照片,跟图纸对比。
苏婉的眉头松开了一点。
他们又在新房里待了将近一个小时。
苏婉用手机丈量了每个房间的尺寸,在备忘录里不停地写。主卧衣柜要定制到顶,深度不低于六十公分。走廊的灯要换成感应式的,晚上起来不用摸黑找开关。卫生间的地砖要防滑的,老人来了不容易摔倒。阳台的晾衣架要电动的,手摇的太费劲。
林晨在书房里站了很久,用脚步量了房间的长宽,在手机备忘录里画了一个简陋的布局图。图上有桌子的位置、显示器的方向和书柜的尺寸。他不是室内设计师,但他知道一间好书房的标准是什么——安静、光线对、网速快、椅子舒服。满足这四条,别的都不重要。
走出小区的时候,乐乐走在最前面。他牵着苏婉的手甩来甩去,嘴里在唱幼儿园里学来的歌。走两步跳一下,走两步跳一下。
我们有新房子了!比旧家大两倍的房子!
林晨和苏婉走在后面。秋天的阳光把三个人的影子拉得很长,最前面那个短的,中间那个也不高,最后面那对高的。
紧张吗?苏婉问。
不紧张。
那是什么感觉?
林晨想了想。踏实。
为什么不是激动?
因为1740万的房子不是一个终点。他说,它是一个更大的起点。接下来还有月供、装修、入住。还有很长的路要走。
你这人。苏婉没有看他,但手找到了他的手,扣住了。连幸福都要算。
幸福不用算。林晨说,但让你和乐乐住得好的这件事,我得算。
苏婉没有再接话。她只是把他的手握得紧了一点。
那天晚上,林晨在旧家的书房里坐了很久。
他把白天拿到的所有文件一一归档。过户证明是一个红色的硬皮本子,印刷体写着不动产权证书五个烫金大字。打开第一页,权利人一栏写的名字是和,共有情况是共同共有。房屋坐落——鹏城湾花园15栋1501室。建筑面积——188.47平方米。
他盯着那个数字看了几秒。188.47平。三年前他住的是89平,刚好这一半。
然后打开记账软件,更新了家庭的资产负债表。
资产端:鹏城湾房产登记价值1740万,老家父母住的电梯房54万(全款),投资账户余额约67万,工资卡存款约12万,加上一辆开了三年的代步车。负债端:鹏城湾贷款余额1218万,月供5.71万;老家房子无贷款。净资产:约600万出头。其中超过一半是房产净值。
他在旁边加了一列对比数据——两年前同一张表上的数字。那时候资产端是89平的小房子、投资账户余额5万、工资存款几乎为零。负债端是旧家月供1.2万。净资产约为负数。
两年时间。从负数到六百万的净值,从89平到188平,从五万到六十七万。
不是运气。
是每一个深夜的选择,加在一起的结果。
他靠在椅背上,想起两年前跟苏婉在旧家阳台上说的话。那时候他说:我的目标是让被动收入覆盖月供。给我两年时间。苏婉说:好,我信你。
现在两年过去了。被动收入覆盖了月供的三分之一,距离完全覆盖还有一段路。但方向对了。
他合上笔记本,关掉电脑。
窗外,旧家的夜景还是那个样子——对面楼的窗户亮着灯,楼下街道上有车辆驶过。这是他在这个家里看到的最后一个秋天了。
明年这个时候,窗外的风景会是鹏城湾的海面。
他走进卧室。苏婉已经睡了,身边腾出了一半的位置。
他躺下去,闭上眼睛。
新家在等着他们。
第235章 装修过程
装修是林晨经历过的最考验耐心的事情。
他原以为自己做好了万全的准备——预算60万封顶,工期三个月,设计方案跟装修公司反复确认了四遍,材料清单都列到了螺丝钉的规格。但施工第一天,理论和现实之间的差距就以八千块钱的形式糊在了他脸上。
装修队拆开厨房吊顶后发现,原业主的管道布局跟物业存档的图纸完全对不上。下水管拐了一个莫名其妙的弯,绕过了承重梁,再接回到主管道。这不是施工错误,是前任业主装修时的妥协方案——当年改管道的时候发现承重梁开不了孔,就多绕了半圈。
问题在于,那半圈弯管已经老化了,内壁锈了一层。不换的话,再过两三年必然会漏水。换的话——改管费、材料费、人工费加起来,整整八千块。
这个钱谁出?林晨问项目经理老刘。
按合同,隐蔽工程变更由业主承担。老刘是个四十多岁的四川人,说话实在,不绕弯子,林先生,这个没办法。合同上写得清清楚楚,隐蔽工程跟图纸不符的,只能走变更。
林晨看了看苏婉。她在旁边看了好一会儿,然后轻轻摇了摇头——不是不让他争论,而是说别争了,先修。
他签了变更单。八千块。买了个教训:以后买房之前,不应该只验地面和墙面,还应该找专业的人查管道。
第二个意外在一个星期后冒了出来。
原计划是全屋铺地暖。林晨专门调研过——水地暖舒适度比空调采暖好得多,冬天脚踩在温热的木地板上,比头顶吹热风要舒服十倍。苏婉举双手赞成,她怕冷。
但施工队打开了客厅的地面之后,发现了一个无法回避的问题。
层高不够。老刘拿着红外线测距仪,在客厅四个角各测了一遍,然后把数据亮给林晨看,现在是毛坯层高两米八五。如果铺地暖——保温层两公分、回填层三公分、木地板两公分——加在一起七公分。铺完净层高剩两米七八。
林晨抬头看了看天花板。两米七八对于一个身高一米七八的人来说,不算矮。但188平的客厅太大了,层高在体感上会被空间放大。层高低了七八公分,压抑感会增加不止七八公分的感觉。
如果客厅不铺地暖,改用暖气片呢?
那净层高能保住两米八三,只铺地板去掉两公分。
暖气片不好看。苏婉说。
不好看但是两个好处——层高保住了,造价还省三万多。林晨说,188平的大客厅如果矮了那几公分,住进去之后每天都会觉得头上少了一块。
苏婉走到客厅中央,抬头看了一眼天花板,又走到墙角摸了摸墙面的平整度。她站了大概二十秒,然后说了一句:暖气片。但款式要选好看点的。
行。到时候你挑款式。
苏婉点了点头。
第三个跟意外有关的东西,是乐乐房间墙面的颜色。
苏婉定的是海蓝色——她想要的不是普普通通的海蓝,而是晴空下那种带着一点点绿的、透明感很强的蓝,像热带浅海的颜色。装修公司第一次刷出来的效果偏灰,乐乐站在房间中间看了半天,说了一句话:
不像大海。像乌云。
苏婉让装修公司重新调色。她亲自去了涂料店的调色间,跟师傅一起对着色卡调了将近一个小时。第二次刷出来,接近了但偏深——苏婉说太像深海了,小孩子住不够明亮。第三次又调,加了一点点白,一点点青,最后终于调出了那个颜色。
乐乐第三次走进来,站在房间里转了一圈,然后说:对了!就是这个!
是那种晴空下浅海的蓝。明亮、干净,有一种让人想深吸一口气的感觉。
苏婉看着乐乐满意的表情,嘴角浮起的笑容比任何预算表都让她高兴。
装修这两个多月的时间里,林晨每天下班后都会去新房看一眼。不是什么正式验收,就是一种习惯。
有时候只待五分钟——走进去,看看今天的进度,拍几张照片发到家庭群里,然后开车回旧家。有时候待半小时——发现某个开关位置跟图纸差了三公分,蹲在地上跟工长对着图纸确认细节,打三个电话问清楚能不能改。有时候待一个多小时——周末的晚上,搬个小马扎坐在空荡荡的书房里,想象这面墙放上书架之后的样子。
苏婉去得更频繁。她是中学老师,下午放学早,几乎每天三四点钟都会过来一趟。她负责看细节——墙角线直不直、地砖缝隙是否均匀、卫生间地漏的坡度够不够。林晨负责看进度、盯预算、做技术性决策。
他们的分工很自然——不是开会商量出来的,而是各自的性格自然形成的。
有一天晚上,林晨下班后到了新房,发现苏婉已经在了。她站在厨房的中岛台旁边,手里拿着手机手电筒,照着大理石台面的纹理,一厘米一厘米地在看。
在看什么?
看有没有裂缝。前任业主用了几年,如果有裂缝现在要补,不然以后会扩散。
有吗?
没有。保养得确实不错。
她关掉手电筒,转过身靠在岛台上。今天工长说水电改造下周能结束。你那个全屋网络布线的方案要确认了。
方案已经定了。林晨从包里拿出一个文件夹,翻到一页电路图,每个房间一个千兆网口,客厅电视柜后面留三个,给路由器和NAS。书房单独六口——两个给电脑主副屏,一个给NAS直连,一个给智能中控,两个备用。总共十九个口,走六类屏蔽线,千兆交换机放在电视柜的弱电箱里。
苏婉看着那张他自己画的布线图,上面密密麻麻标注了每个房间的位置和走线路径。
十九个网口。你当自己在装修机房还是在装修家?
家就是我的机房。我在书房里写代码赚钱,赚钱才能还得起月供五万七。所以书房是全家的生产力引擎——必须万无一失。
苏婉把图纸递还给他,笑了一下:说得好听。就是给自己花钱找借口。
不花钱。网线和交换机的钱加起来不到装修预算的百分之二。但它的回报是每天八小时的工作效率。
行行行,你是架构师,你说了算。
林晨把图纸收回文件夹,又拿出一份新的表格。那是装修预算的实时跟踪表,每一项工程的预估费用、实际花费和偏差率都列得清清楚楚。水电改造超了八千(就是那个管道的锅),但地暖改成暖气片省了三万二,整体预算还在控制线内。
目前花了多少?苏婉探过头来看。
水电加泥木,一共花了二十六万左右。加上后面油漆和安装,估计总价在五十五万以内。比预算省了五万。
五万留着给乐乐的乌龟买缸。
林晨愣了一下,然后笑了。苏婉就是这样——在严肃的事情里突然插一句不着边际的话,让人忘了正在谈什么。
两个月后,装修进入了收尾阶段。
地板铺好了,墙面颜色全部到位了,家具开始一件一件进场。客厅的深灰色L型沙发是苏婉选的,她在建材市场逛了三个周末才定下来——不是因为选择困难,而是因为她很清楚一套沙发要在家里待起码五年。电视柜是林晨挑的,能放下路由器、交换机、NAS和一堆智能家居的网关设备。
书房是最后一个完成的房间。
林晨亲自盯着每一根网线的走线、每一个面板的打线、每一个水晶头的压制。他坐在书房的地板上,用网线测试仪一根一根地测了19条线,确认每一条都是八个灯全亮。然后用标签机给每条线打了标签,贴在网口的防尘盖上——NAS交换机上行Ap-客厅,每一个都标清楚了。
书柜是定制的。深色胡桃木纹,从地板顶到天花板,分了十二格,每格的高度不一样——因为不同类别的书高度不同。AI和机器学习两格,高度三十公分;投资和金融两格,高度二十五公分;数学和统计一格,高度二十八公分;哲学和历史一格,高度二十二公分;剩下几格放笔记本和杂物。他花了一个下午把所有书分门别类放上去,按高低排列,从左到右由高到低。
工作台是电动的升降桌。桌面有两米宽,八十公分深,比普通办公桌大了一圈。双显示器并排架在悬臂上,左边竖屏放代码和日志,右边横屏放IdE和浏览器。人体工学椅是他挑了两个月的成果——腰部支撑能调六个维度,坐垫前倾角度能微调到一度。
苏婉站在书房门口,看着林晨坐在新椅子上转动身体的样子。
你在这个椅子上花的精力,比选我们卧室的床垫还多。
因为我在椅子上的时间比在床上还长。林晨转了一圈,至少醒着的时候是这样。
那你觉得这椅子值吗?
林晨把腰往后靠了靠。椅背完美贴合了脊柱的曲度,腰部支撑稳稳地顶在第三和第四腰椎之间。不软不硬,刚刚好。
他闭上眼睛,深深地吸了一口气。
新家的味道——木头、油漆和新鲜空气混合在一起。不是旧家那种熟悉的、时间沉淀下来的气味,而是一种崭新的、还没被生活填满的气息。像一本刚打开的笔记本的第一页。
装修结束了。
窗外,鹏城的冬天不冷,阳台上能看到一点海面反射的落日余晖。
接下来是新家真正的第一天。
装修的账单最后是五十三万七千。比预算省了六万三。林晨把省下的钱转到了家庭存款账户。
在笔记本上写了一笔:
装修完工。总花费53.7万。下一项:搬进去,开始新生活。
然后翻到下一页。
第236章 投资账户稳定
装修的两个多月里,林晨的投资账户一直在运行。
每天十五分钟,雷打不动。有时是早上六点半,起床后第一件事——泡一杯速溶咖啡,打开监控面板,扫一眼各子策略的隔夜数据和当日信号。有时是午休的间隙,在公司食堂一边吃盒饭一边看手机版的简化面板。有时是深夜十一点,乐乐睡了,苏婉在客厅看书,他一个人在书房里对着大屏幕做复盘。
这十五分钟跟焦虑没有关系。系统是全自动的——信号生成、仓位计算、下单执行、止损触发,全部由代码完成,不需要他动手。十五分钟只是为了确认:数据源正常,网络正常,各个模块的心跳信号绿灯。
像检查自家水管有没有漏水,而不是在修水管。
十二月的最后一个周末,他做了一次年度全面复盘。
这天的书房很安静。苏婉带乐乐去了同事家做客,旧家里只剩他一个人。他泡了一壶龙井——这是陈博士送的,说是龙井村的正宗明前茶,林晨平时舍不得喝,今天特意拿出来。
茶香的淡雅跟书房里暖黄色的灯光配在一起,有种仪式感。
他打开投资系统的管理面板,首页跳出了账户的净值曲线。
一条从五万起步,经历了急涨、暴跌、修复、再涨、买房减仓、再重新起步的曲线。每一个拐点他都能说出背景——涨的那段是2023年AI行情,跌的那段是2024年的模型失效,减仓的那个大坑是买房。
当前总资产:约83万元。
他盯着这个数字看了一会儿。
83万不算多。它离买房前的账户峰值还差很远。但这个83万的意义跟以前任何一次都不一样——它是在买了房、付了首付、交了税费、给了父母买房的钱、装修花了几十万之后,剩下来的。是真正可以继续滚动的本金,没有任何大额支出在眼前等着。
他打开各子策略的年度报告。
A股子策略年化收益38%。超额收益15个百分点。系统抓住了AI概念和消费复苏两条主线,在暴跌后自动降仓、反弹后自动加仓,节奏把握得比他自己手动调仓要好。但他的目光落在了风险评分那一栏——系统给出的评分在上升。AI概念的估值已经偏高了,超额收益的空间在收窄。这说明接下来的行情不会像之前那么顺利。
期货子策略年化收益22%。螺纹钢和铜的多头贡献了主要利润。原油期货波动率虽高但仓位控制得当,没有出现意外亏损。这个策略的稳定性比A股更好,因为期货市场趋势更明显,杂音更少。
期权子策略年化收益15%。保护性看跌期权在暴跌中发挥了关键对冲作用——那次账户回撤如果没有期权的保护,亏损会比实际多出将近八万。平稳市中期权略有损耗但整体为正,起到了保险该起的作用。
黄金子策略年化收益18%。国际金价在避险情绪推动下持续走高,系统维持了中等仓位,不追求高收益,只作为分散风险的配置。
每个策略单独拿出来都不算特别突出,但组合在一起的夏普比率是2.3。最大回撤控制在-20%——发生在买房前那次模型失效,系统自动修复后迅速拉了回来。
他在笔记本上开始写2024年的投资总结:
年初账户余额:约190万(买房前)。 四月买房:首付加税费合计提取约215万。 五月给父母买房:54万。 六月至十二月装修:累计支出约53万。 年末账户余额:约83万。 年度净回报:按实际运行月份计算,年化收益约35%。 最大回撤:-20%,系统自动修复。
整体评价:在经历了买房、父母置业、装修三笔大额支出的情况下,投资系统依然保持了正向收益。风控机制在多轮压力测试下证明有效。
写完之后他放下笔,喝了一口龙井。茶已经凉了一半,但香味还在。
83万。三年前的这个时候,他刚失业,全部身家不到30万——那还是算上了房子净值的。现在83万是纯粹的金融资产,不算两套房产的价值。但他知道数字本身不是重点。重点是趋势——83万在向上走。按保守的年化30%算,一年后就是108万,两年后140万。如果市场配合,速度会更快。
他翻到新的一页,开始写2025年的策略调整。
A股子策略:降低趋势权重,增加反转因子。AI概念板块估值偏高,仓位从40%降至30%,增加消费和医药的配置。
期货策略:维持现有趋势跟踪框架,增加螺纹钢和铜的权重。原油仓位从15%压缩到10%,波动率太高不值得多配。
期权对冲:维持现有的保护性看跌架构,不做大改动。成本可控,保险价值清晰。
黄金:维持中等仓位不动。黄金不是赚大钱的东西,是组合里的定海神针。
总体目标:2025年账户从83万增长到150万以上。回撤控制在10%以内。不追求峰值,追求稳定。
写完这页,他靠在椅背上,看着面板上跳动的数字。
窗外是旧家书房的窗户,望出去是对面楼的墙壁。没有海景,没有大阳台,没有落地窗。但他知道,这样的窗外风景很快就要换了。
再过两个月,他复盘的地方会是鹏城湾新家的书房。窗外是海,是天空,是更开阔的视野。
但复盘的内容不会变。投资不需要风景,需要纪律。
他关掉面板,走出书房。
客厅里安安静静的。厨房水龙头偶尔滴一滴水,冰箱压缩机低沉的嗡嗡声。这个89平的旧家再过几周就不再是他的家了。但他对这个地方没有不舍——它完成了该完成的使命。过渡时期的庇护所,复利起步的小作坊。
足够了。
他走进厨房倒了一杯温水,站在窗前喝了一口。
窗外的阳光很好。鹏城的冬天不冷,街上有人穿着单衣散步。
生活在上行。这是他能想到的最好的年终总结。
写完投资总结之后,他走到客厅。茶壶里的龙井已经凉透了,他又烧了一壶水重新泡。
客厅里很安静。旧家的周末下午总是很安静,楼上的孩子在练钢琴——应该是楼上那家新搬来的租户,弹的是车尔尼的练习曲,磕磕绊绊的。苏婉带乐乐还没回来,大概会在同事家多待一会儿。
他坐在沙发上发了一会儿呆。
83万。这个数字在三年前他连想都不敢想。三年前他全部身家不到30万,还背着房贷。现在83万只是投资账户的余额——不是总资产,不算两套房子,不算工资存款,只是投资这一个池子里的钱。
但数字不是最重要的。最重要的是系统——那套代码,那套规则,那套能在极端行情下自动止损、自动修复、自动重启的机制。钱会被花出去——买房花了,装修花了,以后还会有别的需要用钱的地方。但只要系统还在运行,钱就会再涨回来。
系统才是真正的资产。不是账上的数字。
他在手机备忘录里写了一句话:2025年不要被数字绑架。83万涨到150万是水到渠成的事,前提是不犯大错。最大的大错就是在市场疯狂时忘记风控,在市场恐慌时怀疑系统。
写完,苏婉的电话进来了。
我们在小区门口了,你下来接一下——乐乐买了一大袋金鱼。
买什么?
金鱼。你儿子觉得乌龟一个人太孤单了,非要给它买几条鱼做伴。
龟和鱼不能养在一起——龟会吃鱼的。
电话那头沉默了两秒。然后传来乐乐的声音:那我把鱼放在另外一个缸里!两个缸!
林晨笑了。他穿上拖鞋,拿了钥匙出门。
下楼的时候经过电梯里的镜子,看了一眼自己的脸。三十八岁。眼眶下面有一点黑眼圈——昨晚改论文改到凌晨两点——但眼神比三年前平静了太多。
叮。
电梯到了一楼。苏婉牵着乐乐站在大堂门口,乐乐手里的塑料袋里有六条橘红色的小金鱼在游。他看到林晨,举起袋子说:爸爸!它们叫小红一号、小红二号、小红三号、小红四号、小红五号和小红六号!
为什么都叫小红?
因为它们都是红色的啊!分不出来!
苏婉在旁边笑着摇了摇头。
这就是83万的意义——不是一堆数字,而是下午茶时间的金鱼命名大会。
第237章 被动收入
搬进新家前的最后一个周末,林晨坐在旧家书房里算了一笔账。
这笔账他以前也经常在心里盘算,但从没有正式落到纸上。今天他想把它写清楚。
标题:每月被动收入明细。
被动收入这四个字,对他有特殊的意义。三年前被裁员的那一刻,他的收入归零了。工资没了,什么收入都没了。他所有的收入来源只有一条管道——上班。那条管道一断,池子里的水就只出不进。
那时候他就下决心:再也不能让收入来源只有一条管道。
他在纸上列了第一行。
投资系统收益。83万本金,按保守年化30%除以12个月,月均约元。他在这行后面加了一个括号——注:波动较大,按月会有起伏,这个数字是长期均值。他知道投资不像工资,每个月准时到账。有时候连着两个月不涨,第三个月突然跳涨15%。所以两万出头的数字不能用来做月度预算,只能用来做年度展望。
第二行——知乎专栏。他在知乎上写技术文章写了两年多,积累了大约两千个付费订阅者。每人每月五块钱,平台抽成百分之五十,到他手里的月均约五千块。这笔钱不大,但非常稳定,每个月十五号准时到账。
第三行——Github赞助。开源项目维护了一年多,累计有几十个赞助者,月均大约五百块。这点钱跟工资和投资收益完全不在一个量级,但他的嘴角在这行旁边动了一下——不是因为金额,而是因为它代表的是另一种认可。不认识的人,因为他写的代码,愿意每个月掏几块钱支持他。这种认可跟工资不一样,它没有任何雇佣关系,纯粹的因为你做的事对别人有用。
第四行——技术文章稿费。偶尔会收到技术媒体的约稿,每篇稿费一千到三千不等,平均到每月大概两千。不稳定,有时候两个月不发一篇,有时候一个月发三篇。他把它当作零花钱而不是稳定收入。
四行加起来,每月被动收入约元。
他在下面又写了一行:
主动收入(t厂工资):65K x 16薪 ÷ 12 = 约元/月。
总月收入:约元。
然后他列了支出端。
月供:元。日常开支——买菜做饭、水电燃气、物业费、交通、通讯、医保社保——约元。乐乐教育——课外班加兴趣班——约5000元。其他杂项——人情往来、家里东西坏了换新的、偶尔出去吃饭——约5000元。月支出合计约元。
月结余:约元。
他看着这两列数字——收入和支出,主动和被动——然后意识到一件之前没有明确意识到的事。
被动收入元已经接近月供元的一半。如果加上知乎专栏和稿费,被动部分差不多覆盖了月供的百分之五十。
这意味着什么?
意味着如果他明天失业了,单靠投资系统和内容创作,他能扛住将近一半的月供压力。不至于立刻断供,不至于像三年前那样用存款硬扛、看着账户里的钱一天天变少。
三年前他失业的时候,月供一万二全靠存款。每个月眼睁睁看着存款减少,那种感觉他到现在还记得——像站在一截正在融化的冰面上,你能感觉到脚下每一秒都在变薄。现在如果失业,他有半年到一年的缓冲期来调整策略、找新工作或降低开支。
安全网。这就是被动收入的意义——不是让你不工作了,而是让你任何时候都有选择的余地。
苏婉推门进来的时候,他正在盯着那行被动收入数字出神。
在干什么呢?
算账。
算出什么了?
每月被动收入两万八。
苏婉在书房的旧沙发上坐下来。那是这间书房里唯一还没打包的软家具。两万八的被动收入能还月供吗?
不够,月供五万七。但加上工资就够了。而且——他把账本转过来给她看,被动这一块已经覆盖了月供的将近一半。
如果投资系统出问题呢?
最大回撤20%,被动收入从两万八掉到两万二。还是能覆盖月供的三分之一多。最极端的情况是市场崩盘、全部亏光——但这种概率比被车撞还低。我的风控有至少三层止损。
苏婉看着那串数字,沉默了一会儿。然后她说了一句让林晨有些意外的话。
你知道吗?你刚进t厂的时候跟我说,你的目标是让被动收入覆盖月供。那时候我觉得你在做白日梦。
林晨看着她。现在呢?
现在两万八了。覆盖一半了。她把账本合上,放在他手边,不是在做梦。已经快实现了。
林晨没有接话。他想起两年前那个深夜——他在出租屋的阳台上跟苏婉说我要做一套投资系统,让它帮我赚钱。那时候他不知道自己能不能做到。投资账户只有五万块钱,月供压得他喘不过气,失业的阴影还没完全散。
苏婉当时的回答是三个字:好,我信你。
现在他做到了。不是完全做到了——被动收入距离完全覆盖月供还有一段路——但他正走在实现它的路上。
他在笔记本上写了一行新的目标。
2025年被动收入目标:覆盖月供加基本生活开支(合计约元/月)。实现条件:投资账户达到120万以上。按年化30%计算,83万到120万大约需要一年。如果市场行情配合,可能更快。
写完这行,他把笔搁在桌上。
苏婉已经从书房出去了。客厅里传来她跟乐乐说话的声音——把这箱玩具封好,搬过去再拆——和乐乐不情愿的嘟囔声。
他站起来走到窗边。旧家书房窗外的风景他已经看了两年——对面写字楼的玻璃幕墙、楼下街道的行道树、远处立交桥上一闪一闪的车灯。这扇窗很快就不再是他的了。
但他没有不舍。
新的书房窗外是鹏城湾的海。新的账本上被动收入还在涨。新的生活已经等着了。
他走出书房,帮苏婉封箱子。
搬家倒计时,最后三天。
搬家前一天晚上,林晨在旧家做了最后一次投资系统检查。
他打开管理面板,做了一套完整的全模块诊断:数据源连通性——全部正常,行情接口延迟在20毫秒以内。信号生成模块——四个子策略全部在线,今天发出了两个买入信号和一个对冲加仓信号。风控模块——所有三层止损阈值正常,当前仓位风险敞口在预设范围内。自动交易接口——仿真环境测试通过。
每一个模块旁边都是绿色的小勾。
三年前他第一次部署这套系统的时候,只有两个模块——信号生成和手动交易。风控靠手动止损,复盘靠肉眼扫曲线。三年里他加了自动风控、加了仿真测试环境、加了多账户管理、加了实时监控面板——每一个模块都是因为某次出问题之后才意识到这里需要加一道保险。
系统不是一天建成的。是一步步被问题逼出来的。
他关掉面板,合上笔记本电脑,把它装进电脑包。这是旧家书房里最后一件没有收进纸箱的东西了。
站在书房门口,最后看了一眼这个不到六平米的小房间。书架已经清空了,只剩下墙上几个膨胀螺丝的孔。窗帘拆掉了,夕阳的光直接照进来,地板上晒出一道金色的矩形。
就是在这个房间里,三年前他敲下了第一行python代码。就是在这个房间里,他经历了投资账户从5万涨到20万、又从284万暴跌到几十万的所有起伏。就是在这个房间里,他写好了进t厂的面试ppt、带团队时的技术方案、FinGpt的设计文档。
房间很小。但它承载的东西,比很多大房间更多。
他关了灯,门在身后轻轻碰上。
第二天早上,搬家公司的车来了。四个工人花两小时把所有东西搬上车。他在旧家门口站了一会儿,然后把钥匙放在了物业办公室的信箱里。
新的生活,开始了。
新家的第一个周末,林晨在书房里整理了搬家后没来得及收的投资资料。
从旧家带过来的一个牛皮纸袋里,装着他三年前做投资系统时的手稿。第一页是一张用铅笔画的草图——系统架构的雏形,只有三个框:数据接入信号生成风险控制。每个框旁边密密麻麻写满了中文备注,字迹很潦草,看得出是一边学一边写的。
他坐在新书房的椅子上,把那张草稿从头看到尾。三年前的草图上的所有功能现在都被实现了,而且比他当初画的复杂了不止十倍。但在最核心的逻辑上——数据质量驱动决策、风控先于收益、系统化对抗情绪化——跟他当初在出租屋里画的那张草图没有本质的区别。
他把那张草稿放回了牛皮纸袋。然后在新笔记本的第一页写了一行:
新家,旧草稿,同样的底层逻辑。环境变了,原则不变。
第238章 大模型项目
新年后第一周的周三,林晨召开了新团队的正式启动会议。
会议室里坐了二十个人。陈铭坐在左手第一排,面前是打开的笔记本电脑。张雨坐在陈铭旁边,手里端着一杯还在冒热气的咖啡。李婷负责投屏,正在调试ppt的显示比例。其他人依次坐在长桌两侧,有人拿着笔记本,有人只带了手机,有人面前什么也没有——新人还不知道该带什么。
林晨站在投屏前,第一页ppt上只有一行字:
FinGpt:金融大模型的微调项目,代号FinGpt。目标:在13b基座模型上,通过金融领域数据微调,实现金融场景下超越通用模型30%以上的效果。
他拿起马克笔,在旁边的白板上写下了三个词:数据、标注、评测。
这三个词就是FinGpt的全部。他转过身,数据质量决定模型能力的上限。标注精度决定微调效果的天花板。评测标准决定我们是否真的比别人好。三个环节,任何一个掉了链子,整个项目就是白做。
他花了四十分钟讲解技术方案。从基座模型选型——为什么选13b而不是7b或70b,到LoRA的参数设置——rank、alpha和dropout的初步配置,再到训练方案——8张A100的并行策略和预估训练时间。
数据组负责收集和清洗金融语料。来自金融部门的研报数据、内部研究报告和客户问答记录,总量超过五十万条。但林晨对数据组说了一句让数据组长有些意外的话:五十万条太多了。大部分是垃圾。你的第一件事不是收集更多数据,而是删数据。
删多少?数据组长问。
删到剩下五万条。每一轮删完之后让我看删除记录,我要知道哪些被删了、为什么删。删数据比加数据更需要判断力。
标注组负责对筛选后的五万条核心数据做人工标注。标注不是贴标签那么简单——金融场景下的标注需要专业知识。每条数据至少由两个标注员独立标注,不一致的需要第三方仲裁。标注标准要用金融从业者的专业能力作为参照,不能用通用的众包标注。
评测组由张雨牵头,负责构建专门的金融评测集。张雨在会前已经把方案发给林晨了——评测集覆盖八个金融子任务,从金融问答到研报摘要,从风险提示到合规检查。每个任务有独立的参考答案和评分标准,不依赖通用评测集。
通用评测集里的金融题太基础了,张雨对着ppt解释说,比如mmLU里的金融题考的是什么是通货膨胀——这种题目只测了基础知识,完全区分不出模型在真实金融场景下的能力。我们自己的评测集要能测出——模型能不能读懂一份四十页的研报,能不能从一个两百页的招股说明书里找到关键风险提示。
这个工作量多大?林晨问。
很大。评测集每道题都需要专业金融人员审核——不是标注员,是真正的金融从业者,分析师级别的。我已经跟金融部沟通过了,他们愿意出人配合。
好。评测的质量比速度重要,不用赶。
会议结束后,陈铭留了下来。
13b模型比7b大四倍,他说,8张A100做一次微调大约需要十二个小时。如果效果不好,我们要反复调参数,一轮一轮地试。一个礼拜最多跑两次。如果微调效果达不到30%怎么办?
那就分析原因,调整方法,再训一版。林晨把ppt关了,电脑盖合上,第一版达不到目标是正常的。重点是找原因——是数据的问题还是方法的问题。数据不好就继续删,方法不对就换方法。不要指望第一版就完美。
但时间呢?我们只有三个月。
三个月是底线,不是天花板。如果时间不够,我去跟陈博士争取更多时间。但前提是我们的每一版都要比上一版更好。他拍了拍陈铭的肩膀,别焦虑。做就行了。
接下来的两个月,是林晨在t厂最忙的一段时间。
早上七点到公司,晚上十一点离开。除了吃饭和必需的会议,几乎所有时间都花在了FinGpt上。苏婉有一次凌晨两点起来上卫生间,发现书房灯还亮着,推门进去看到林晨对着三篇论文的对比表格在记笔记,旁边半杯速溶咖啡已经干了,杯壁上结了一层褐色的垢。
她没有说话。去厨房换了一杯热水,放在他手边,然后默默退出去。
她知道林晨在做什么。他在做一个他真正相信的东西——不是被安排的任务,不是KpI要求的指标,而是一件他自己想做的事。这样的人不需要被催,也不需要被叫去睡觉。
第一个月底,问题出现了。
数据组把清洗后的数据交上来,林晨花了两个晚上逐一检查。他随机抽检了五百条标注结果,发现其中约百分之十五有明显问题——术语翻译错误、日期标注不一致、风险等级的判断缺乏一致性。
他把数据组长叫到会议室。
十五个点的错误率太高了。这些数据喂给模型,效果会大打折扣。
数据组长是一个从金融部门转来的分析师,叫刘明,做数据工作做了五年。他接过抽样报告看了两分钟,表情从意外变成了认同。
标注标准不够细。他说,比如风险等级——轻度、中度、重度——三个等级的边界没有用具体的案例去定义。标注员凭感觉判断,当然不一致。
那就用案例定义边界。找金融部的分析师,拿二十个典型案例,让标注员在标注前先通过测试——判对十八个以上的才能上岗。不合格的不能标。
这样成本会增加,时间也会拉长。
成本增加比模型效果差要好。林晨说,用高质量数据微调的效果,远超用大量低质量数据微调的效果。这个道理在投资里叫信号比噪声更重要——同样的本金,抓住正确信号比处理更多信息更有效。大模型也是一样:五万条精选数据,比五十万条杂音数据好一百倍。
刘明想了几秒,然后站起来:我重新设计标注标准。一周内给你新方案。
第二个周末,第二版标注标准出来了。每条数据类型都有详细的案例定义,边缘情况列了三十多条。标注员上岗前必须通过测试。林晨看了之后在方案上批了两个字:通过。
第二个月末,第一个微调版本的结果出来了。
13b模型在金融评测集上的总分超过通用模型22%。
陈铭看着评测报告,表情从紧张变成了轻松了八成。22个点,比7b的12个点高了不少。但没达到30%。
足够了。林晨说,第一版22%超出我的预期。证明了方向是对的——高质量数据确实能带来质的提升。接下来的8个点,靠优化数据质量、调整LoRA的rank参数、增加难样本的权重来补。
他在笔记本上写下了FinGpt v1的总结:
FinGpt v1:金融场景超通用模型22%。未达30%目标,但方向正确。数据分析显示微调数据中研报摘要风险提示两个子任务提升空间最大——这两块的数据噪声还比较高,需要进一步清洗。下一步:数据二次清洗完成后启动v2训练。
写完,他没有关灯。
打开IdE,开始写v2的数据清洗脚本。
v2训练期间有一个细节林晨记得很清楚。
那是训练的第三天晚上,陈铭在监控训练loss的时候发现了一个异常——验证集上的困惑度在某一个batch之后突然跳升了十几个点,然后又在下一个batch降了回来。这种脉冲式的波动在训练初期偶尔会出现,但这一波特别明显。
陈铭发消息问林晨要不要暂停训练检查一下数据。
林晨当时在书房里做投资复盘,看到消息后让陈铭把那个batch的数据样本发了几条过来。他看了一遍——那几条数据是一个研报里提取的长句被截断了,截断的位置正好卡在一个金融术语的中间,导致那半句话在语义上完全不通。模型读不懂这种碎片化的输入,困惑度自然就跳了。
不用停,这波是数据噪声不是训练问题。继续跑。等这轮训练结束后把那几条截断数据标出来,v2的数据清洗脚本里加一个长句完整的检查规则。
陈铭回。
然后林晨加了一句:你看到困惑度异常的第一反应是怀疑数据而不是怀疑模型,这个判断是对的。大模型的问题80%以上出在数据上。
这件事后来被陈铭在团队内部分享时提过——林总当时一眼就看出是数据截断的问题。林晨听到后说:不是一眼看出来的,是我之前在自己的投资系统里踩过一模一样的坑。数据噪声导致的信号偏差,在投资里叫过拟合,在大模型里叫困惑度脉冲——本质是同一件事。
他把这句话写在了自己的笔记本上。然后在旁边加了一条标注:把投资系统的方法论迁移到大模型——这是我最核心的竞争力,不是某一个具体的算法。
第239章 突破性进展
三月中旬的一个周五晚上,林晨正坐在书房里做投资系统的周度复盘。
双显示器左边是投资面板,右边是这周FinGpt v2的训练日志。他刚把A股子策略的信号看了一半,右下角弹出陈铭的微信消息。
FinGpt v2评测结果出来了。金融场景超通用模型34%。
林晨的手停在了键盘上。
他盯着那行字看了大概五秒钟,然后把投资面板最小化了,点开陈铭发来的评测报告pdF。
报告第一页就是一张大表格。八个金融子任务,每个任务一个对比分数:
金融问答:超过通用模型35% 研报摘要:超过通用模型42% 风险提示:超过通用模型28% 市场分析:超过通用模型31% 财报解读:超过通用模型38% 合规检查:超过通用模型26% 投资建议:超过通用模型30% 情感分析:超过通用模型27%
综合领先:34%。
他一条一条地往下看,看完最后一行数字之后停住了。34%——超过了30%的目标线四个点。42%的研报摘要单项领先,意味着模型在理解和概括金融文本方面的能力已经远远甩开了通用模型。
他打开陈铭的微信对话框,打字:数据二次清洗的改进了什么?把优化方案详细写给我。
陈铭秒回:好!我今晚写。主要是三个方面——删掉了所有没有来源标注的研报摘要数据,统一了风险等级的判定规则,增加了5000条金融问答的难样本。
林晨放下手机,靠在椅子靠背上。
他想起两个多月前的那次会议。二十个人坐在会议室里,他在白板上写下30%的目标,台下有人在笔记本上记,有人在心里犯嘀咕。陈铭问他如果达不到怎么办,他说那就继续调。
现在34%的数字就放在面前——不是运气,是他的团队两个多月的积累。数据组刘明重新设计的标注标准、陈铭反复调整的LoRA参数、张雨构建的专业评测集——三个环节的成果汇在了一起。
不是兴奋,是一种安静的确认。确认数据质量优先的策略是对的,确认团队执行力是够的,确认自己从投资系统里带过来的方法论的适用性。
他在心里把34%翻译成了商业语言:这个领先幅度意味着金融客户切换大模型的收益足够明显了。一个客户之前用通用模型做金融问答,正确率一般;切换到FinGpt后正确率直接提升三分之一以上——这种差异不是说服客户换模型,是让客户主动来找你。
第二天上午十点,他召集了一个紧急会议。
会议室里的气氛跟两个多月前不一样了。两个多月前第一次开会的时候,有人在椅子上靠着墙站着,气氛里有一种我们要做一件不确定能不能做成的事的紧张感。今天没有人靠着墙——提前五分钟人都到了,椅子够坐,桌上放着打开的笔记本电脑和几张打印好的评测报告。
林晨站在白板前,把马克笔盖摘下来,写了一个数字:34%。
这个数字大家都看到了。他转过身,手撑在桌沿上,眼神扫了一圈。FinGpt v2在金融场景下超越通用模型34%,超过目标线30%。这个数字说明三件事。
他在34%下面写了第一个词:方向。
第一,方向是对的。用高质量精选数据做微调的效果,远超用大量杂音数据做微调。我们在数据上花的每一分钟都是值得的。
第二个词:团队。
第二,团队是能打的。从数据清洗到模型训练到评测构建,每个组的执行力都超过了我最初的要求。评测组的金融评测集被金融部的人拿去当成内部培训素材了——这说明我们的评测标准不仅合理,而且比行业默认的标准更专业。
第三个词:机会。
第三,窗口期还在。通用模型在金融场景下的表现仍然不行——通用模型能看懂文字,但看不懂金融。这个认知鸿沟就是我们的机会窗口。
他停下来,喝了一口水。
但34%不是终点。我们的下一个目标是40%以上。两个方向——金融问答和风险提示,这两块的提升空间还很大。张雨,你牵头做这两块的专项数据优化。陈铭,你试试把LoRA的rank从32提到64,看效果变化。
如果rank翻倍但收益递减怎么办?陈铭问。
那就不加。只做有效的改动,不为了加而加。
会后,林晨给陈博士发了一条微信:FinGpt v2结果出来了。金融场景超通用模型34%,超过目标。建议尽快启动商业化讨论。
陈博士回了一个字:
他走到陈博士的办公室,手里拿着打印好的评测报告。陈博士从头到尾翻了一遍,在研报摘要:42%那行停了一下。
这个数字是真实的?
真实的。评测集由张雨独立构建,没有在训练数据中泄露。
陈博士把报告放在桌上,双手交叉。商业化方案你想好了吗?
金融部门已经等了很久了。他们现在的金融问答系统是基于旧的bERt模型,效果早就碰到了天花板。如果切换到FinGpt,金融问答的准确率会提升超过三分之一。我的建议是先对接金融部门的智能客服系统,做三个月试点,拿到真实效果数据后再考虑外部商业化。
时间线呢?
四月份完成金融部门的系统对接,五月份上线试点,六月份开始评估效果。
陈博士点了点头。你回去写方案。写完发我。
回到工位的路上,林晨穿过走廊的时候看了一眼窗外。鹏城三月,春天刚开始。路边的榕树抽了新芽,嫩绿色的,在灰色的写字楼群之间显得格外鲜活。
白板上那个34%的数字还在会议室里。他没擦掉。
留给团队看的。
34%的结果在公司内部传得很快。
先是金融部的李总发了一封邮件,抄送了陈博士和cto。邮件标题就两个字:牛逼。正文也只比标题多几个字:FinGpt v2在金融问答上的准确率测试结果出来了,效果远超预期,建议尽快推进商业化对接。李总是做金融出身的,平时说话保守,邮件里用两个字已经是他表达能力的极限。
然后是AI应用中心以前的同事。李婷发了一条微信:看到群里发的FinGpt评测报告了。你们大模型部门才成立三个月,就把我们应用中心两年的成果超了。后面跟了一个哭笑不得的表情。林晨回了一句:不是超了,是站在你们的肩膀上了——之前应用中心积累的金融语料和评测经验,FinGpt用了不少。
赵工也发了消息。这位在应用中心时就常跟林晨唱反调的老工程师,消息只有一行字:你当初说不能观望的时候,我心里觉得你太激进了。现在看评测报告,你是对的。佩服。
林晨看着这条消息,心里有一种说不上来的感觉。赵工不是一个轻易说你对了的人。在应用中心那两年的各种会议上,两个人对技术路线的辩论不下几十次。现在他主动说,这份认可比任何数字都重。
他回了一句:赵工,不是我对了,是我们方向对了。应用中心打下的基础,FinGpt踩了不少。接下来如果有合作的机会,随时找我。
赵工回了一个握手的表情。
商业化推进的第一次正式会议在陈博士办公室。金融部的李总带了两个业务负责人,AI部门的陈博士和林晨。六个人围着一张圆桌。
李总开门见山:FinGpt能不能先接入智能客服系统?我们现在用的模型是两年前部署的bERt-based系统,金融问答准确率长期徘徊在六成出头。客户投诉量每月都在涨。
技术上没有问题。林晨说,FinGpt的ApI已经在内部测试环境跑通了。接入智能客服只需要两周——一周做接口对接,一周做压力测试和效果评估。
成本呢?
当前的成本主要在推理端。13b模型单次推理大约需要两秒钟,在A100上一秒钟的处理成本按云服务价格算大概是零点几分。如果日均处理一万次问答,月推理成本大约在两万到三万之间。如果推理量更大,可以考虑量化优化来降低成本。
比现在你们bERt系统的运维成本高了大约三成?李总问。
对。但准确率提升了三十几个点——客户满意度会跟着上去。林晨打开笔记本上的一页数据,根据FinGpt v2的评测,智能客服场景下回答的正确率从六成三提到了八成五以上。如果客户因为不准确的回答而投诉——每通投诉的处理成本平均是几十到上百块钱——减少的投诉量本身就能抵消增加的推理成本。
李总看了一眼数据,然后对他的业务负责人说:下周拿一条业务线做试点。
散会后,陈博士在走廊里问林晨:你刚才的推理成本数据是什么时候算的?
昨晚。林晨说,算到凌晨两点。
下次算到凌晨两点的时候,顺便把量化和推理加速的方案也写了。如果客户量上来了,两秒的推理延迟和几毛的成本都会变成瓶颈。
已经在写了。下周出方案。
陈博士点了点头,然后拍了一下他的肩膀。什么都没说。
但这个动作,林晨懂。
第240章 论文发表
FinGpt v2的结果出来一周后,陈博士提出了一个林晨之前没想过的事。
写论文。
这是在陈博士的办公室里。林晨刚汇报完FinGpt的商业化方案,正在收笔记本电脑,陈博士突然冒出了这三个字。
写论文?林晨把电脑包放在一边。
对,投顶会。陈博士靠在自己的椅子上,双手交叉放在桌上。金融场景超通用34%的结果,放在学术圈也是有竞争力的。数据质量策略和LoRA微调的方法论有足够的创新性,写成论文投出去没有问题。
林晨重新坐下来。他没想过发论文——做FinGpt的初衷是解决金融部门的实际需求,不是写文章。学术界的规则他不完全懂。但陈博士在学术圈发过十几篇顶会论文,他既然说了有足够的创新性,林晨就不会怀疑这一点。
写什么方向?
方向我已经想好了。陈博士拿起马克笔,在白板上写了几行字。数据质量在金融大模型微调中的作用。三个核心论点——第一,金融大模型的性能瓶颈不在参数量,在数据质量。用五万条精选数据的效果远超用五十万条未清洗的数据。第二,金融领域评测需要专业化评测集,通用评测集无法反映金融场景下的真实能力差异。第三,通过LoRA加数据质量优化的方法,在13b上实现了34%的超越通用模型效果,证明了领域微调的技术可行性。
您来写主要部分,陈博士又补了一句,你写技术细节和实验。我做一作,你做二作。
为什么您是一作?
论文的方向和框架是我定的,技术实现是你做的。一作定方向,二作执行——学术界的惯例。陈博士看着他,你有意见吗?
没有。我不在乎谁是一作,我在乎论文能不能发出去。
接下来的三周,林晨的夜晚被论文占满了。
白天照常上班——带团队、推进商业化对接、处理日常管理。晚上八点之后才开始写论文。论文从零开始写起,每天写一部分,第二天发给陈博士看反馈,第三天再改。
论文的标题最后定的是《FinGpt: Financial domain Adaptation of Large Language models via high-quality data curation》——通过高质量数据策划实现大语言模型的金融领域适配。
写作的难度比他想象的要大得多。学术论文有严格的语言规范——不是写技术文档那种怎么做,而是我们发现了什么、证明了什么、跟现有方法的区别是什么。摘要要在一段内概括全部贡献,引言要说清楚动机和意义,相关工作要引用几十篇前人的论文来定位自己的贡献,方法部分要写清楚每一个技术细节以便别人复现。
陈博士写了论文的框架、相关工作综述和结论。林晨写方法描述和实验分析。两个人来回改了七稿。
第七稿改完的那天晚上,林晨把pdF从头到尾看了一遍。七页正文,三十八条引用,四张实验结果表格。每一个数字他都核对过至少三遍——训练参数、评测指标、显着性检验的p值,一个都不能出错。
投哪个会?他把最终稿发给陈博士。
AcL。自然语言处理领域的顶会。今年六月底截稿。
AcL——计算语言学学会年会。自然语言处理领域最权威的几个会议之一,跟NeurIpS、IcmL同属于ccF-A类。如果这篇论文被接收,意味着他们的工作会得到全球学术界的正式认可。
林晨在截稿前一天的凌晨提交了论文。上传pdF、填写作者信息、勾选领域类别——系统返回了一个六位数的投稿编号,发到了他的邮箱。
他盯着那个编号看了一会儿。这篇论文凝聚了团队两个多月的心血,但它现在只是一串数字,躺在几万份投稿中间。三个月后审稿结果会出来——接收、修改或拒稿,概率各占一部分。
他把投稿确认邮件转发给陈博士,加了三个字:已提交。
等吧。陈博士回。审稿周期大约三个月。这段时间别盯着审稿系统死等,该做什么做什么。
林晨没有再管论文的事。
但投稿的消息还是传开了。不知道是谁最先在团队内部群里提了一句林总和陈博投了AcL,然后群里就炸了一次。张雨第一个发消息:林总投了AcL?!哪篇?陈铭替林晨回答了:FinGpt的论文,林总二作。
太牛了!一个刚入职两个月的新人发了一个欢呼的表情。
还在审,不一定能中。林晨打字很快。不用太期待。
张雨没有放过这个话题。她回了林晨一条私信:审稿意见出来后我可以帮忙看回复意见。我之前发过三篇AcL,对审稿人的关注点和回复策略比较熟。
林晨把这句话记在了心里。好。到时候找你。
三个月后的一天晚上,他正在书房里做投资系统的月度复盘,手机震了一下。
陈博士的微信。正文只有两行字,第一行是截图的缩略图——论文接收邮件的截图,第二行是三个大字:论文中了。
他把图片点开放大。邮件的开头是dear Authors, we are pleased to inform you that your paper... has been accepted to AcL 2025.
林晨盯着那个AcL 2025看了很久。
中了。他的第一篇顶会论文。二作,但论文上的实验数据和核心发现都是他自己写的。从两年前连AcL是什么都不知道,到现在名字出现在AcL的作者列表上。
他给陈博士回了一条:谢谢陈博。
谢什么,实验是你做的。要谢就谢你自己。
论文接收的消息再次传开之后,团队群里的反应比投稿的时候更大了。不是因为论文本身——论文的内容大多数人都参与过——而是因为作者列表上的致谢部分。虽然致谢只有一句话感谢t厂大模型应用部全体同事的支持,但每个人都知道那句话指的就是自己。
晚上回到家。苏婉看到他进门时的表情,从沙发上坐起来了一点。
发生什么好事了?
论文中了。AcL。
那个顶会?
苏婉站起来走过来,抱了他一下。很短的拥抱,大概两三秒,然后退开来看着他。恭喜。这是你第一次发顶会论文。
也是从零开始。林晨说。
苏婉的嘴角弯了一下。你所有的事都是从零开始的。
林晨想了想。她说得没错。学AI是从零开始,做投资系统是从零开始,学大模型是从零开始,发论文也是从零开始。他人生中所有重要的东西,都是在三十五岁之后从零开始学的。
他在笔记本上写了一行:
FinGpt论文被AcL 2025接收。不是终点,但证明了这条路是对的。下一步:不是写论文,是做产品。让模型在实战中产生价值。
然后翻到了下一页。
论文发表后的第二周,陈博士在部门周会上提了一个新议题:要不要在Github上开源FinGpt的训练代码和方法实现?模型权重不公开——那是公司的资产——但数据清洗的方法、LoRA的参数配置和评测集的设计框架可以开源,既能为公司和团队持续积累学术影响力,也能吸引更多的合作者和应用者。
团队讨论后意见不一。有人说开源方法等于给竞争对手送弹药,有人说开源的收益远大于风险——学术影响力会带来更好的招聘、更多的合作机会和更广泛的行业认可。
林晨的意见是开源。他在会议上说了一句:我们这篇论文的核心贡献不是方法本身,而是用实验证明了数据质量优先这条路线是对的。开源代码让更多人复现和验证,反而会放大这个贡献的价值。
张雨附议:我已经在Github上看到有人在试图复现我们的实验了。与其让别人盲猜参数,不如我们把参考实现公开出来。质量更高,也减少误导。
陈博士最后拍了板——开源。训练代码和评测框架在Github公开,数据清洗脚本附带详细的使用文档。模型权重和训练数据不公开。
开源的pR由张雨负责。她在Github上创建了FinGpt的官方仓库,REAdmE写了将近两千字的英文介绍——从项目动机到技术路线到实验结果,每一个细节都对得上论文里的数据。
仓库上线第一周,Star数破了两千。Issue区里有人问参数细节,有人报bug,有人问能不能支持中文以外的金融场景。张雨一条条回复,林晨偶尔上去看一眼——看到那些来自全球各地的开发者在讨论他团队的开源代码,有一种跟发论文不一样的满足感。
知乎上也有人在讨论这件事。有人发帖标题是国内大厂终于有人认真做开源了——FinGpt训练代码公开,下面评论说这才是工程师该做的事,用代码说话。
林晨把那条帖子转到了团队群。
然后继续写FinGpt的商业化方案。
第241章 学术认可
论文正式发表那天,林晨的Google Scholar页面变了。
之前那个页面上只有两篇文章——一篇是知乎专栏转发到arxiv的技术报告,引用数3;另一篇是跟陈博士合作的内部技术白皮书,引用数0。现在第三行多了一行粗体字:FinGpt: Financial domain Adaptation of Large Language models via high-quality data curation. AcL 2025。
会议名称后面那个小标记——一个对勾符号——表示这篇论文被正式收录了。
林晨在中午吃饭的时候随手刷了一下Scholar页面。第一天,3条引用。第二天,7条。到了第三天下午再看的时候——15条。大部分引用来自金融AI领域的研究者,有人在related work里提到了他们的数据质量策略,有人复现了LoRA的微调参数,有人用他们的论点论证金融场景需要专门的评测集。
他把引用页面截了一张图,发到了团队群里。
大家的成果正在被学术界看到。
群里炸了第三次。陈铭回了一个竖大拇指的表情,张雨回了一串代码——那是她在Github上发现的一个开源项目,标题是FinGpt Reproduction,有人在根据论文复现他们的实验流程。
已经有人在复现了。张雨加了一个感叹号。
一周后的部门周会上,陈博士在议程最后加了一项。他平时在周会上总结工作只会说大家辛苦了,继续加油,那天他多说了一句话:这个部门刚成立两个多月,已经有一篇AcL论文了。这在t厂的历史上是第一次。
话很短,说完就切换了下一页ppt,好像什么都没发生一样。
但林晨坐在后排,看到陈博士嘴角动了一点点——不是笑,是克制着的满意。
学术圈的反应比工业界更慢,但更持续。论文正式发表后一个月,引用数突破了50。有人从新加坡国立发邮件来问数据集的细节,有人从伦敦的金融机构发邮件来讨论商业化授权,还有人从国内某家头部券商发邮件问模型权重能不能开源。
林晨每封邮件都看了,挑了几封重要的亲自回复。对学术界问细节的,他让陈铭整理了技术补充文档发过去。对商业授权的,他转给了公司法务和商务团队处理。对问开源权重的,统一回复模型权重属于公司资产,暂不公开,但论文中的方法可以复现。
知乎上也热闹了一阵。论文的预印本链接被一个十万粉丝的技术大V转发了,评论数几个小时内破了两百。林晨看了一眼评论——有人说工业界终于有人认真做金融大模型了,有人说数据质量比参数量更重要的观点终于有实验支撑了,也有人质疑34%的提升在真实场景下能维持多少。
他在团队会议上专门提到了那些质疑。
质疑是正常的,他说,因为学术实验和真实场景之间确实有差距。实验室里的34%是理想条件下的结果——干净的评测集、标准的问答格式、没有对抗性输入。但真实的金融客户提问方式五花八门,有些问题写得像散文,有些问题夹杂了五六个子问题。我们在实验室里拿了34%,不意味着在产品里能拿到34%。
那我们怎么办?一个刚转正的工程师问。
先把产品做出来。上线后收集一个月的真实数据,再重新评估。到时候第二篇论文的内容就是FinGpt在实战中的效果——不是在实验室里有多好,而是在客户手里有多好。
他想起自己之前在知乎上写过的一句话:技术只有用到产品里,被用户用起来,才算完成了它的使命。论文是一种完成,但不是最后一步。
晚上,苏婉在客厅看手机。
你的论文引用又涨了,她说,语气不像是汇报,更像在陈述一个已知的事实。现在五十三了。
你什么时候学会盯Google Scholar了?
你教我的。她放下手机,抬头笑了一下。我就是偶尔查一下你名字。你现在是有顶会论文的AI工程师
听起来像个头衔。
比头衔好听。苏婉把手放在沙发扶手上,头衔是别人给的。论文是你自己写的。
林晨想了想,她说得对。论文跟晋升不一样,不是任何人给你的奖赏。是你自己发现问题、找到答案、用严格的实验证明它——然后用同行评审的方式让全世界检验它。跟投资系统是一个道理:没有人告诉你怎么做,你自己摸索。
他在笔记本上写了一段:
学术认可:FinGpt论文被AcL 2025接收,一个月内引用破50。这是对团队工作的验证,不是终点。真正的验证在产品端——模型能否在客户手里产生价值。下一步:推进试点落地,收集真实数据。
写完,合上笔记本。
下一件事:不是写第二篇论文,是让第一篇论文里说的东西,在真实世界里跑起来。
论文发表带来的不只是学术引用。一个月后,陈博士把林晨推荐到了公司的技术委员会。这个委员会由各技术部门的资深专家和Fellow组成,每两周开一次会,讨论公司的技术战略方向和跨部门技术协同。
第一次参加会议,林晨坐在长桌倒数第二个位置。主持会议的是t厂的cto——一个在硅谷待了十几年的华人,说话中英文夹杂,但思路极快。他在会上提了一个议题:t厂的AI基础设施要不要全面转向大模型?
讨论了一个多小时。有人说大模型是趋势但投入太大,需要谨慎,有人说先用开源模型验证,再考虑自研。林晨一直没说话,直到cto点名问他:FinGpt团队的林晨,你们在做这一块,你怎么看?
不应该犹豫。林晨说,不是因为我做这个方向才这么讲——是因为窗口期不会等人。一年前我们讨论要不要做的时候,行业的领先者已经领先一年了。现在如果我们还在讨论要不要全面转,再过一年差距会变成两年。大模型不是一次普通的技术迭代,是代际更替。
散会后,cto在门口对他点了一下头,说了一句:有空来我办公室聊聊FinGpt的数据质量策略。
陈博士在走廊里等林晨。他说了一句话:你刚才说的那番话,会让一些人不舒服。但委员会需要这种声音。
林晨知道,从那天起,他在公司的影响力不再仅限于自己的部门。
引用数突破一百是在论文发表后的第二个月。
张雨在群里发了一条消息:FinGpt论文今天正式破百引!!!三个感叹号,她平时从不加感叹号,这次一口气加了三个。
林晨在obsidian里记了一行笔记:论文一百引。影响力在扩大。但更重要的是——下个月试点数据出来,我们得证明这些引用的内容在真实世界也成立。
然后他点开了陈铭发来的下一份文档——FinGpt v3微调计划。第一页写着目标:在v2的34%基础上,通过扩大精选数据规模和优化训练策略,争取在v3达到40%以上的金融场景领先。
他合上笔记本,打开终端。
新一阶段的工作,开始了。
晚上回到新家。苏婉在阳台上给植物浇水——她现在用的是他传感器数据的浇水方案,虽然嘴上从来不承认数据驱动这种说法。乐乐趴在地板上看一本从学校图书馆借来的恐龙科普书,乌龟慢慢趴在水缸的石头上缩着脖子在睡觉。
林晨没有急着进书房。他在苏婉旁边的躺椅上坐了一会儿,看夕阳一点点沉进鹏城湾的海平面上。
今天有个人从伦敦发邮件问我能不能合作。他说。
什么人?
一家金融机构的AI负责人。他们想做金融大模型,看了论文后想谈技术合作。我转给商务团队了。
你的论文影响这么远了?
不是论文影响远。是大模型这件事本身影响远——金融领域的垂直应用大家都在做,我们先发了一篇文章。他把头靠在椅背上。但文章只是第一步。第二步是做产品,第三步是规模化。
那你现在在第几步?
第二步刚开始。走稳了才能到第三步。
苏婉关了浇水壶,在旁边的躺椅上坐下来。两个人安静地看着海。
这是他最放松的一刻——不是论文被接收的瞬间,不是晋升宣布的瞬间,而是在阳台躺椅上跟苏婉并肩坐着、不需要谈论任何一个KpI的瞬间。
第242章 晋升机会
FinGpt商业化试点上线后的第二个月,陈博士再次把林晨叫到了办公室。
这次的谈话很短。林晨进门的时候陈博士正在看一份文件——年度绩效评审的汇总表。他示意林晨坐下,然后把文件转了过来。
公司年度晋升。我推荐了你。
林晨低头看。表格上他的名字旁边标注的是t4-1,职级名称一栏写着资深专家。
资深专家。t厂技术序列的最高几档之一。再往上就是Fellow和Vp——那是全公司技术人员的塔尖,整个t厂近万工程师里不超过十几个。
薪资和待遇呢?他问。
基础月薪78K,十六薪,年包约125万。陈博士翻开另一页,加上部门绩效奖金——如果FinGpt商业化试点达到预期,年终奖六到十二个月——总包可能接近150万。另外还有一笔保留期权,分四年解锁,每年解锁百分之二十五。
78K。比他现在的65K涨了两成。林晨在心里快速算了一下——78K乘以十六,月均约十万四千,加上投资收益月均两万,月收入在十二万上下。减去月供五万七和日常开支两万多,每个月还能结余四万左右。
这个薪资在市场什么水平?
中等偏上。陈博士靠在椅背上,如果去创业公司做cto,薪资可能翻倍,但没有t厂的平台和资源。如果去大厂做同样的职级,薪资差距不大,但你在t厂有现有团队和方向,不用从零开始。
我接受。
我知道。陈博士站起来,走到白板前。他在上面写了四行字:
t4-1,资深专家。薪资:78K x 16薪。管理:大模型应用部,目前25人。汇报:陈博士。生效日期:下周一。
林晨看着这四行字。
两年前他在AI应用中心拿到52K的offer那晚,激动得在出租屋的阳台上站了半小时没睡着。现在看到78K,内心只有一种平静的确认——确认这条路还在往前走,确认每一步付出都在产生回报。
不是他不珍惜了。是他比两年前更清楚一件事:薪资的数字是外在的标尺,真正的成长是内在的——从不知道AI是什么到能发顶会论文,从一个人摸索到带二十几个人的团队,从焦虑失业到有底气做出选择。这些变化工资条上不会有,但它们才是涨薪背后真正的原因。
下周一晋升仪式,陈博士说,到时候hR会正式发邮件。
走出办公室,林晨在走廊尽头的窗户边站了一会儿。
玻璃窗外是鹏城四月的中午。阳光从正上方照下来,写字楼的幕墙反射着白亮的光。远处鹏城湾的海面上有几艘帆船在训练,白帆在阳光下显得格外干净。
两年半前他站在出租屋的窗前看同样的天际线,想的是能不能活下去。两年半后他站在t厂大楼的走廊里,刚晋升资深专家,年薪百万级,手下管着二十多个人的部门,论文发了,投资系统在滚。
不是炫耀。是给自己一个交代。
他拿出手机,给苏婉发了两个字:升了。
苏婉回复:多少?
78。乘十六。
那边沉默了大概十秒。然后回了一条:晚上庆祝。加两个菜。
乐乐要吃什么?
糖醋排骨。你做的。
收起手机,他走回工位。
桌上放着一份FinGpt商业化试点的周报——金融部门反馈说智能客服的准确率提升了百分之三十几,客户满意度也有明显改善。他拿起周报扫了一遍,在几个关键数据旁边用红笔画了圈。这些数据下周要向陈博士汇报。
电脑屏幕右下角弹出hR的邮件——关于您晋升的通知。他点开看了一眼,确认生效日期和薪资数字无误,然后点了,把窗口关了。
晋升只是路牌,不是终点。终点在更远的地方——FinGpt的下一个版本、投资账户的下一个台阶、家人更好的生活。路还在继续。
他打开IdE,继续写FinGpt v3的数据处理脚本。
晋升仪式在周一上午。小会议室里摆了茶点和水果,hR总监亲自来宣布。
仪式本身很短——hR念了晋升决议书,陈博士简短地说了几句林晨是AI部门近年来晋升最快的员工之一,然后颁发了新工牌。工牌的底色从白色换成了淡金色——资深专家专属的颜色,林晨之前不知道还有这个区别。
散场时,陈博士在走廊里叫住了他。
你的晋升报告上,我写了一段评语。想看吗?
林晨点头。
陈博士在手机上翻出一张截图递给他看。评语栏里只有三行字:
学习能力极强——从零开始学AI,两年内达到顶会论文水平。 业务判断准确——大模型方向的战略投入,抓住了行业窗口期。 管理能力稳步提升——团队稳定,产出质量高,商业化推进顺利。
评语很短,但林晨看着从零开始那四个字,心里有一种难以形容的感觉。两年前陈博士面试他的时候,他的简历上AI经验那一栏几乎是空白。现在同一个人的评语里写着顶会论文水平。
谢谢陈博。
不用谢我,是你自己挣的。陈博士收了手机,还有一件事——公司正在筹建AI平台部,统筹所有AI基础设施和模型资源。级别比我现在的部门高半级。年底可能有调整。你做好准备。
林晨看着陈博士的背影走远。他知道这句做好准备不是客套——陈博士在给他递信号。大模型部门的表现在公司内部已经有了声量,晋升资深专家只是第一步,后面可能有更大的变动。
回到工位,他把淡金色工牌放在桌上看了看。工牌上的照片还是两年前入职时拍的,头发比现在短一些,眼神里有一种当时不自知的紧张。他拿起工牌翻到背面——芯片位置印着一行小字:t厂技术序列 t4-1。
他给苏婉发了工牌的照片。
淡金色。高级货。
苏婉回了一个大拇指,然后补了一句:晚上加菜别太晚,乐乐明天要早起。
知道。
他放下手机,把工牌挂回脖子上。淡金色在白色衬衫上很显眼。
下午两点,陈铭敲门进来。
林总,FinGpt商业化试点的最新数据出来了——金融部门的智能客服准确率提升了百分之三十六,比上个月多了三个点。客户满意度从七十三升到了八十九。
林晨接过报告看了一遍。这个数据可以上报了。你整理一份月度总结,抄送陈博和金融部的李总。
陈铭点头准备走,林晨加了一句:还有——下周开始,你独立负责FinGpt微调方向。张雨负责评测和研究方向。你们两个各自建小组,招人。我只管总体策略。
升官了就想偷懒?
林晨笑了。他跟陈铭之间的默契已经到了能这样说话的程度。不是偷懒,是让更多人成长。我当初在应用中心的时候,陈博士也没每天盯着我写代码。
陈铭出去后,林晨站起来走到窗前。
窗外鹏城四月的正午阳光很亮。他站了一会儿,然后回到工位——IdE里是FinGpt v3的数据处理脚本,写到一半。
他继续敲代码。就像两年前在出租屋里敲下第一行import numpy时一样。
晋升消息在公司内部公布后的第二天,林晨的钉钉收到了一条意想不到的消息。
消息来自一个他之前在AI应用中心带过的实习生——那个实习生已经转正了,在另一个部门做NLp。消息很短:林总,听说你晋升资深专家了。恭喜!我以前在应用中心实习的时候,你教我写的第一段代码我现在还在用——就是那个数据清洗的模板。
林晨看着这句话,想起了那个实习生。大四的学生,刚来的时候python还没写利落,在周报里把准确率准解率。林晨带了他三个月,教他从数据预处理做到模型评估。后来他转正去了NLp部门,两个人就很少联系了。
林晨回了一条:你现在在NLp部门怎么样?
挺好的,现在做文本分类和情感分析。您教的数据处理思路我一直都在用。对了,上个月我们团队在试用FinGpt的ApI——效果确实比之前的通用模型好太多了。
林晨把这条消息截屏发给了陈铭。你看,我们做的东西已经有人在用了。不是金融部的客户,是同公司的NLp团队。
陈铭回了一句:这说明FinGpt的影响力已经超出金融部门了。要不要考虑开放ApI给更多内部团队试用?
可以考虑。你先评估一下推理资源的负载能力。如果现在8张A100的余量够,可以让更多团队接入试用。收集更多场景的反馈。
陈铭回了一个的手势。林晨放下手机,继续写IdE里的代码。
第243章 装修完工
三月底的一个周四晚上,装修公司发了验收通知。
周五下班后,林晨和苏婉一起去了鹏城湾。这次没带乐乐——苏婉让同事帮忙接了放学,说要先自己看一遍,确认没问题了再带乐乐来。
打开1501的密码锁,门往里推开,林晨站在玄关处没动。
两个多月前这里是水泥地和裸露的管线。现在从玄关望过去,是一条铺着浅色木地板的走廊,走廊的尽头是客厅,落地窗外鹏城湾的海景映在夜空中,远处的灯光在水面上碎成一片金色。
苏婉从他旁边挤过去,直接走到客厅中央,原地转了三百六十度。
深灰色L型沙发靠落地窗放着,她挑的颜色和面料,在暖色灯光下比效果图还好看。电视柜是原木色,里面已经装好了路由器、交换机和NAS,网线整齐地束在理线槽里——林晨上周末自己来装的。厨房的中岛台保留了前任业主的白色大理石,苏婉要求的嵌入式烤箱和洗碗机已经安装到位。
比我想象的好。她说。
哪里好?
哪里都好。她走到阳台上。玻璃栏杆外面就是鹏城湾的海面,晚风从海面上吹过来,带一点咸味和远处植物的清香。她在那把早就选好的藤编躺椅上坐下来,身体往后靠了靠——椅背倾斜的角度刚好,视野里一半是天空,一半是海。
以后可以在这里喝茶看书了。
林晨拉了另一把躺椅坐在她旁边。两个人并排躺着,透过玻璃栏杆看海。夕阳沉进了西边的山后面,海面上还剩最后一道橙红色的余晖在慢慢变淡。
比旧家好多少倍?苏婉问。
面积大了一倍多,视野好十倍——旧家窗外是对面楼的瓷砖墙——阳台好一百倍。
那旧家呢?
林晨想了想。旧家也好。但旧家是过渡——89平的小两房撑过了我们最难的那段时间。现在新家是安定——不需要再换了。
苏婉没有说话。过了好一会儿她轻声说:两年前住在旧家的时候,我从来没想过这辈子会住进这么大的房子。
我也没想过。
那你怎么就走到了?
林晨没有马上回答。他看着远处海面上最后一抹金色被夜色吞没,然后才开口:因为每一步都不敢停。被裁了就去学AI,学了就做系统,做好了就找工作,找到了就拼命。不是因为看到了最后的样子——每一步走出去的时候都不知道前面是什么——而是因为停下就意味着倒退。
苏婉没有再说话。她闭着眼睛,晚风把她的头发吹散了几缕,贴在脸颊上。
乐乐要是来了,应该会在这个阳台上跑来跑去吧,他想。
第二天是周六,搬家。
搬家公司的大车早上九点停在旧家楼下。四个工人花了将近两个小时,把旧家的东西全部搬上车。东西不多——林晨的书装了十二个纸箱,苏婉的衣服五个箱,乐乐的玩具和绘本塞了三个编织袋,厨房的锅碗瓢盆两大箱。最大的家具是那张一米八的双人床,苏婉说不要了,买新的。
下午两点半,大车开进鹏城湾的地下车库。又花了两个多小时把所有东西搬上15楼。到傍晚的时候,旧家的东西全搬进来了,但到处都是没拆封的纸箱和散落一地的泡沫纸。
乐乐最兴奋。他在每个还没封的纸箱之间穿梭,一会儿翻出他的积木,一会儿翻出他的恐龙模型,一会儿又从不知道哪个箱子里扯出一本绘本坐在地板上看起来。苏婉说了他三次先别拆,等整理完了再拿,他每答应一次就又翻出一样新东西。
明天再整理,苏婉最后放弃了,今天先把床铺好。
那天晚上他们睡在新家的主卧。
床垫是新的,苏婉挑了一个多月才定的——软硬适中,林晨躺上去之后觉得腰部的支撑比旧床好太多。乐乐非要睡在中间,左边一个大人右边一个大人。他在新床垫上滚了两圈,两分钟就睡着了。
林晨躺在黑暗里,听着新家的声音。这是完全陌生的声音组合——远处低沉的空调外机声跟旧家不一样,走廊里偶尔传来邻居关门的声音,阳台上风吹过那几盆苏婉前几天搬来的绿植发出沙沙的轻响。还有乐乐的呼吸声,平稳、均匀,跟旧家时一模一样。
苏婉在旁边翻身。还没睡着?
在听新家的声音。
跟旧家一样吗?
不一样。旧家楼下是宵夜档,凌晨两三点还有人划拳。这里是十五楼,听到的是海风和空调外机。
习惯吗?
还没。但迟早会习惯的。
苏婉安静了一会儿。黑暗中林晨感觉到她的手伸过来摸到了他的手臂,然后握住了。
这是新家的第一夜。她说。
你怕吗?
怕什么?
怕月供太高,万一顶不住怎么办。
林晨没有马上安慰她。他知道月供五万七这个数字对任何人来说都不是小数目。但他也已经算过了——78K的月薪加上投资收益,月入十二万左右,减去月供和日常开支还能结余几万。只要不失业,月供就是可控的。
不怕。他说,如果三年前能扛住一万二的月供,现在就能扛住五万七。收入涨了,底气也涨了。
苏婉握着他手臂的手紧了一下。
窗外,鹏城湾的海面上有一艘夜航的船,红绿两色的航行灯在黑暗中一闪一闪。这是他从新家主卧窗户看到的第一个夜景。
旧家的窗外是对面楼的瓷砖墙,密密麻麻的空调外机和防盗网,晾衣架上挂满了邻居的衣服。
新家的窗外是海,是天空,是远处闪烁的船灯。
他闭上眼睛。
新家的第一夜。以后还有很多个。
搬进新家后第二天是周日。苏婉一早就起来开始拆纸箱。
她拆的方式很有章法——先拆厨房的,因为厨房是最急用的,今天就要做饭。然后拆卫生间的,洗浴用品和毛巾必须当天到位。然后是卧室的床单被套和衣柜收纳。客厅和书房的纸箱排在最后,因为不急。乐乐房间的纸箱排在最末——因为只要把装玩具的那个编织袋打开,乐乐自己就了,所谓整理就是把所有玩具倒在地板上挨个玩一遍。
林晨在书房里装机。双显示器的电源线和信号线走了桌面的线槽,悬臂支架的松紧度调了三遍才对准。NAS开机后花了二十分钟自检——四块硬盘阵列完好,两年多的所有项目代码和投资系统的备份数据都在。交换机十九个口的灯一一亮起,他从网线测试仪的屏幕上看到一串绿色的pASS。
通了。他低低地说了一声。
苏婉探头进来:全通了?
全通。十九个口,每一条都跑满千兆。他转身看着苏婉,脸上有一种完成了巨大工程的满足感。从今天起,这间书房就是全鹏城网速最快的房间之一。
在你眼里书房的网速比客厅的沙发还重要。
沙发是你选的,网口是我装的。各有所长。
苏婉靠过来,站在他椅子旁边看着双显示器亮起来。左边竖屏——投资系统的监控面板,净值曲线安静地停在97万的位置。右边横屏——一个空白的IdE窗口,光标在第一行一闪一闪。
开始正常生活。苏婉说。
林晨说。正常生活。
不是大富大贵的日子。是每天上班、回家、陪老婆孩子、盯着系统运行、偶尔看看海的日子。是他三年前站在出租屋阳台上最想要的那种日子。
搬进来一周后,林晨在阳台上装了一套智能灌溉系统。不是那种花里胡哨的智能家居套装——是他自己用树莓派加几个传感器搭的。土壤湿度低于阈值自动浇水,水箱水位低于警戒线自动发通知到手机上。苏婉说他在阳台上种的那几盆绿萝和文竹是全楼最受科技呵护的植物。
他在树莓派上跑了一个轻量级的python脚本——跟投资系统用的是同一种编程语言和相似的定时任务框架。每半小时检查一次传感器读数,记录到本地的cSV文件里。一个月下来他发现绿萝更喜欢三天浇一次而不是每天浇——数据跟直觉相反,但数据更可信。
他在笔记本上总结了一条经验:灌溉系统的传感器数据推翻了苏婉的直觉判断。投资里也是一样——数据比直觉可信。继续靠数据做决策。
苏婉看到这条笔记后说:你连浇花都要记笔记。
不是浇花,是数据驱动的植物养护。
行,你说什么都是数据驱动。
但她第二天浇水的时候按了林晨的传感器数据来,绿萝确实长得更好了。
第244章 搬入新居
搬进新家的第一周,林晨每天下班后的工作不是写代码,是拆箱子。
十二箱书是他最花时间的。不是把书塞进书架就完事了——他在书架的每一格贴了分类标签。AI和机器学习两格,按照基础理论→模型架构→工程实践的递进关系排,从Goodfellow的深度学习教材到huggingFace的transformers实战。投资和金融两格,按理念→策略→风控的逻辑排,从格雷厄姆到塔勒布,中间夹了几本python量化实操。数学和统计一格,哲学和历史一格。还有一格专门放他的笔记本——十几本软皮抄黑皮本,从两年前开始记,每一本封面上写着起止日期。他按日期把它们排成了一排。
苏婉整理厨房和客厅的方式跟他完全不同。她不追求整齐——她追求好用。
烤箱放在中岛台的右手边,因为她是右撇子,拿取最顺手。洗碗机在中岛台左边,脏碗从右手边收集到左手边放进去,一条流水线不用转身。调料瓶按使用频率分了三层——高频的油盐酱醋放在最容易够到的开放格,中频的花椒八角辣椒面在下一层,低频的肉桂丁香香叶在最上层。
你觉得怎么样?她问林晨。
动线很合理。但是酱油瓶和醋瓶能不能不要挨着放?用的时候容易拿错。
苏婉想了想,把醋瓶挪到了酱油瓶的右边三十公分。这样就不会拿错了。
林晨站在厨房里看着苏婉的摆放方式,想起了自己在投资系统里做模块拆分时的思路——每个模块只做一件事,边界清晰,互不干扰。苏婉在厨房里做的事情本质上是同样的逻辑,只是她不需要写代码来执行,她的编译器是日常使用习惯。
乐乐的房间是最后收拾好的。他的玩具和绘本比林晨预估的至少多一倍——大箱小箱、大袋小袋,积木、汽车模型、恐龙战队、画笔画纸,还有一大摞从幼儿园带回来的手工作品,每一件他都不让扔。
林晨花了整整两个晚上把乐乐的玩具分类归位。积木装在一个大收纳箱里,放在墙角。汽车模型挂在墙上的一排木架子上,按大小从大到小排列——乐乐要求的。绘本放在一个小书架里,书架高度刚好是乐乐踮脚能够到的高度。
窗台上的乌龟缸终于有了主人。林晨趁一个午休时间去附近的宠物市场买了一只巴西龟,硬币大小,壳的颜色翠绿。乐乐给它取名叫。
为什么叫慢慢?苏婉趴在缸边看。
因为乌龟都走得慢啊!乐乐理直气壮的。
那为什么不叫?
因为我走路快!乐乐在客厅里跑了一圈来证明自己的观点。
苏婉看着那只比乐乐手心还小的乌龟,笑了。
新家的生活节奏跟旧家不同。
在旧家的时候,三个人挤在89平的空间里,乐乐在客厅跑两步就撞到茶几,苏婉在厨房切菜声传遍整个客厅,林晨在不到六平米的小书房里转个身都困难。现在是188平——林晨在书房写代码,苏婉在厨房做饭,乐乐自己在房间里玩积木或对着乌龟喃喃自语,三个人各占一个空间,互不干扰。
但也有不方便的地方。比如乐乐晚上叫妈妈,苏婉在主卧听不太清——走廊隔了五六米,中间还有一道拐角。比如林晨在书房戴着降噪耳机敲代码,苏婉喊他吃饭要走到书房门口拍他肩膀。
房子太大了,苏婉有一天晚上说,喊人吃饭都要走两段走廊。
那你装一套呼叫系统。每个房间一个按钮,按一下对应的房间响铃。
你装。
林晨真的装了一套。不是那种复杂的智能家居系统,就是最简单的无线门铃,一个主机带四个按钮,分别贴在乐乐房间、书房、客厅和主卧的墙上。乐乐觉得这是新家最好玩的装置,第一天每过五分钟就按一次客厅的按钮,然后跑过来看林晨的手机会不会收到通知。
不要再按了!林晨从书房探出头来喊。
乐乐缩回手,但五分钟后又会偷偷按一次。这个循环持续了整整两天,直到苏婉终于把按钮挪到了乐乐够不到的高度。
搬进新家后的第一个周日,林晨坐在书房里做了一次投资系统的月末复盘。
双显示器在宽大的工作台上发出柔和的光芒。左边是投资面板,右边是笔记本——已经改成了电子笔记,但他还是习惯在纸上先算一遍。人体工学椅的腰托稳稳顶在后腰,比旧家那把从二手市场淘来的老椅子舒服了不止一个档次。
管理面板首页跳出了三月的净值:当前总资产约97万。
83万到97万。一个月涨了14万,月度收益率大概17%。比平时高了不少,是因为三月的AI概念来了一波。但他调低了预期——17%的月收益不可持续,正常月份应该回到5%到8%的区间。这波高收益是市场赏的,不是系统能力突然提升了。
他在笔记本上写了一段:
投资账户97万。2025年目标200万以上。按保守的30%年化算,大约一年半到两年。如果市场配合——比如再来一次像样的科技股行情——可能一年内就够。
写完,他把笔放在桌上。
窗外,鹏城湾的夜海在月光下闪着银光。15楼的高度让视野格外开阔,整个海湾的轮廓一览无余。旧家书房窗外是隔壁写字楼的瓷砖墙,距离不到十米,连对面的人在开什么会都看得一清二楚。现在是海、天空、远处一闪一闪的导航灯标。
他站起来走到客厅。苏婉坐在深灰沙发上,脚搁在茶几边沿,手里端着一杯还在冒气的红茶在看书。乐乐趴在地毯上画画,乌龟慢慢在窗台的缸里趴在石头上晒太阳——虽然现在是晚上,没有太阳,但它还是趴在上面一动不动。
这个画面比他屏幕上任何一张收益率曲线都让他安心。
复盘完了?苏婉抬头。
完了。系统正常,月度收益还可以。
多少?
暂时不说。下个月底再一起公布。
苏婉没有追问。她知道他的习惯——投资的事只做阶段性复盘,不把日常波动带到家庭氛围里。这个规矩从两年前就定下了,她一直配合得很好。
乐乐从地板上抬起头,举起他的画:爸爸!我画了我们的新家!
是一幅歪歪扭扭的儿童画。一个大大的房子,房子前面有一只小乌龟,门口并排站着三个人——一个高的、一个矮的、一个中间的。
三个人是谁?林晨蹲下来。
高的那个是爸爸!中间那个是妈妈!最矮的那个是我!
我怎么变成最高的了?
因为你站在我们三个人的中间!乐乐认真地在画上指了指。
林晨看了一眼苏婉,苏婉正端着茶杯看着他们,眼睛里有一种说不清的温柔。
他在乐乐的画右下角签上了日期。然后帮乐乐把画贴在了乐乐房间的墙壁上——海蓝色的墙,白色画纸,歪歪扭扭的房子和三个小人,还有门口那只绿豆大的乌龟。
新家的第一幅墙上装饰。是一个五岁男孩画的他眼中的家。
他退后两步,跟苏婉并肩站着,看着墙上那幅画。
挺好的。苏婉说。
没有比这更好的了。
住进新家的第一个月,林晨养成了一个新的习惯。
每天下班回家后,不是直接进书房,而是先在阳台上坐五分钟。就坐在藤编躺椅上,不拿手机不拿电脑,单纯地看着鹏城湾的海面发呆。
这是他以前在旧家从来没有做过的事。旧家的阳台太小了,放了一个洗衣机和一个拖把池,连一把椅子都塞不下。这个行为本身在旧家是不可能存在的——那里除了书房那张椅子,没有任何可以让人安静独处的地方。现在十五楼的阳台上,他可以一个人对着海面的潮汐和远处的船灯,放空五分钟。
有时候乐乐会跑出来坐在他腿上跟他一起看。五岁的孩子不懂什么是海景——他只关心远处那些船是不是海盗船。但他会在爸爸腿上坐五分钟——对五岁孩子来说,这已经是很长的时间了。
苏婉说这五分钟是他性格里出现的新成分。以前的林晨是那种一分钟都不能浪费的人,每天的时间被切成了十五分钟一个的格子——工作、学习、投资、复盘。现在格子之间多了一个叫的东西。
这算什么新成分,林晨说,是年纪大了。
不是年纪大。苏婉靠在阳台门框上,手里端着茶。是你不焦虑了。焦虑的人最怕静止。不焦虑的人才能坐着发呆。
林晨想了想,她说得对。
第245章 乐乐的学校
搬进新家后的第二个月,苏婉做了一件事。
不是买家具,不是布置软装——是办入学。
乐乐今年秋天上小学。她把一张清单放在餐桌上,推给林晨。周末早上,阳光从阳台照进来,把清单上的字照得清清楚楚。
户口本、不动产权证书、居住证明、预防接种证、出生医学证明——每一项后面都写了备注。户口本要原件加复印件两份房产证要彩色复印件居住证明去社区开,工作日才能办。
我都约好了,材料也准备得差不多了。苏婉说,下周我请半天假去社区开证明,然后去学校报名。你到时候跟我一起去。
鹏城湾所在的小区对口的是鹏城实验小学——南山区的重点小学,在全市排前五。这所学校的学位非常紧张,周边好几个小区的家长为了让孩子入学,提前三年就开始准备落户。
林晨之前不知道这些。他是做量化的,对学区房的运作逻辑只有模糊的认知——知道学区好代表学校好,但好在哪里、怎么个好法,他没有具体概念。全是苏婉在做功课。
这个学校比乐乐现在的幼儿园好了多少?他问。
幼儿园是普惠园,硬件一般,老师流动性大。苏婉给自己倒了杯水,靠在岛台边上。鹏城实验小学是南山区前五,硬件好,师资稳定,课程体系完整。最关键的是——有信息学兴趣班。
计算机的?
对。三四年级开始有编程选修课,用的是Scratch入门,后面进阶到python。苏婉喝了一口水,你不是一直说要让乐乐学编程么。
林晨看着她。想起买房时苏婉说的那句话——我最喜欢的是这个阳台。当时他以为她是真的最喜欢阳台。
语文老师做事情,永远比表面看起来要多几层。她说阳台的时候,心里算的可能是学区。
入学手续办得比预想的顺利。
招生老师在系统里核对了房产证和户口本,确认学位没有被占用——前任业主的孩子已经上了初中,学位释放出来了。
林乐乐小朋友入学材料齐全,九月份可以正常入学。招生老师盖了章。
走出来的时候,乐乐牵着苏婉的手,好奇地看着小学的校园。操场铺着红色塑胶跑道,旁边是五层楼的白色教学楼,玻璃窗反射着上午的阳光。升旗台上的国旗在风里微微飘动。
妈妈!这就是我的小学吗?比幼儿园大好多!
大多少?
大三倍!乐乐伸出三根手指。
苏婉蹲下来,给他正了正书包的肩带。以后你在这里学数学、英语、语文、体育——还有计算机。
有编程吗?
三年级开始有。但如果你自己想提前学,爸爸可以教你。
我要学!乐乐转头看着林晨,爸爸你教我编程!
招生老师听到他们的对话,递过来一张宣传单。学校有课后兴趣班,有少儿编程班,每周三下午,一学期2800。如果孩子感兴趣可以先从这里开始,用Scratch入门,对小朋友很友好。
林晨接过来扫了一眼。报名。
你不问我意见?苏婉说。
你之前说过乐乐的兴趣应该支持。
苏婉嘴角弯了一下。她确实说过。
回家的路上,乐乐蹦蹦跳跳走在前面,嘴里反复念叨我要上小学了我要学编程了。林晨和苏婉并排走在后面,手自然牵在一起。
你建议买鹏城湾的时候,林晨说,是不是已经想好了学区这件事?
苏婉没有正面回答,但嘴角的弧度比刚才更明显了。
语文老师的职业病。她说。
什么职业病?
凡事多想一步。你是做投资的,你想的是资产增值和月供能力比——算的是钱。我是当老师的,我想的是这套房子对口的是哪所学校——算的是教育。
林晨没有接话。他看着前面蹦蹦跳跳的乐乐,想到乐乐两年前还在普惠幼儿园的小院子里玩耍,马上要进全市排名前五的小学,有一种比投资收益率更踏实的获得感。
两年前他焦虑的是能不能让乐乐上个好幼儿园。现在乐乐进的是鹏城最好的小学之一。不是靠关系和钱——靠的是他和苏婉两年前做的一个正确的决定。
每一步选择都是拼图的一小块。学AI是一块,做投资系统是一块,进t厂是一块,升职是一块,买房是一块。这些拼图拼在一起,拼出来的画面是一个五岁男孩在重点小学操场上仰头看教学楼的样子。
乐乐在前面喊:爸爸你走快点!
来了。
阳光从鹏城湾的方向洒过来,把三个人的影子长长地投在人行道上。
第246章 父母来访
五月中旬的一个周六上午,林晨开车去机场接父母。
这是父母第一次来鹏城湾的新家。之前他们来过鹏城两次,都住在旧家。89平的小两房,没有专门的客房,父母挤在那间不到九平米的小次卧里,晚上翻身都要小心不碰到彼此。早上起来排队用一个卫生间,父亲总是六点起床第一个用,怕后面人多。
现在不用了。188平的大平层,四间卧室,父母有一间自己的客房。
林晨在到达口等了十来分钟,就看到了父亲的身影。林建国穿着一件浅灰色夹克,还是三年前买的那件,洗得起了一点毛边但叠得整整齐齐的。左手一个大包,右手一个小包,背挺得很直。
母亲走在后面几步。手里拎着更小的一个布包,里面是家乡带过来的腊肉、酸豆角和自己晒的干辣椒。她比上次见面瘦了一些,脸上颧骨的轮廓比之前明显,但精神看着不错。
爸,妈。林晨迎上去接包。
来了。父亲只说了两个字,把包递给他。然后回头看了母亲一眼,示意她跟上。
又高了。母亲看着他说。
我三十好几了,不会再高了。
我就是觉得你又高了。母亲坚持。
林晨没再接话。他提着包走在前面,带他们去地下车库。母亲坐进车里之后一直在看窗外的鹏城——新区的写字楼群、立交桥上的车流、路两旁修剪整齐的绿化带。她的眼神里有一种说不清楚的情绪,像在确认什么。
鹏城真大。她说。
比老家大多了。
你们那个新家——你哥说有180多平?
188平。
188平……母亲重复了一遍这个数字,没有再往下说。她看着窗外的高楼,眼角的皱纹在阳光下显得比平时更深。
车子停进鹏城湾地下车库的专属车位,坐电梯上15楼,电梯门打开,入户口的花砖在灯带下反着光。
这就是你们新家了?母亲站在1501门口。
对。进来吧。
母亲走进去的动作很慢。一只脚先跨进去,停了半秒,再跨另一只。像进庙一样。
客厅的落地窗外是鹏城湾的海面,正午的阳光把水面照得波光粼粼。深灰色的长沙发在阳光中显得柔软而沉稳。走廊通往四间卧室、两个卫生间、一个书房和一个储物间,木地板从玄关一直铺到阳台,每一步踩上去都有轻微的弹性。
这么大。母亲轻声说。她走到客厅中央,慢慢转了一圈,然后回头看走廊的方向。这房子走一圈要两分钟吧?
住得完。苏婉从厨房里迎出来,手上还沾着洗菜的水珠。她用围裙擦了擦手,走过去拉住母亲的胳膊。妈,我带您看客房——以后您和爸来就住这间,一直给您留着的。
客房朝南,一米五的床配了软硬适中的床垫——苏婉专门挑的,说老人的腰需要中等偏软。独立的衣柜挂了几件备用的家居服,窗帘是淡色遮光的。窗台上放了一盆绿萝,刚浇过水,叶子上还挂着水珠。
母亲走进去,没有说话。她坐在床沿上,用手掌按了按床垫的软度,又摸了摸床单的面料。然后她站起来走到窗前,把窗帘拉开了一点,看了看外面的风景。
这房间比我老家的主卧都大。她说完这句就没有再开口了。手还放在窗帘上,指节微微发白。
林晨看了一眼父亲。林建国一直站在客房门口,双手背在身后,什么也没说。他的目光在客房里停留了几秒,然后移开——顺着走廊扫了一遍客厅,从客厅扫到阳台上那一小片看得到的海。
然后他开口了。
这阳台能放两把椅子吧?
已经放了。林晨说。两把躺椅。您以后来就坐那里看海。
父亲点了点头。只点了这一下。
晚饭是苏婉做的。她专门做了带家乡味的几道菜——酸豆角炒肉末用的是母亲带来的酸豆角,腊肉蒸蛋用的是家乡的腊肉,清炒时蔬配了一叠她自己调的蒜蓉酱。外加一大锅白米饭。
乐乐坐在爷爷旁边,一刻不停地说话。从上个月学的恐龙分类讲到昨天乌龟缸里慢慢是怎么爬石头的,再到后天幼儿园要搞的运动会他要参加什么项目。爷爷不怎么搭话,只是偶尔一声,但每一声都是在乐乐说完一段之后停顿了一秒才发出来的——说明他在听。
爷爷,我九月份要上小学了!鹏城实验小学!重点小学!
知道了。你爸跟我说过。
我还在学编程!少儿编程班!用Scratch!
什么鼠?爷爷显然没听过Scratch。他侧过头看着林晨。
是一种给小孩学编程的工具,林晨解释,用图形化的方式让小朋友理解程序逻辑。
爷爷想了一下。就是说,电脑能听懂他的话?
差不多。
爷爷看了看乐乐,又看了看林晨。然后说了一句:这孩子脑子随你。
林晨还没来得及回应,母亲在旁边加了一句:嘴巴随苏婉。
苏婉端着汤碗的手顿了一下,然后笑了。乐乐确实嘴皮子利落,这个特点全来自苏婉。一个五岁的孩子能在饭桌上不停嘴地聊十分钟,从恐龙聊到编程再聊到运动会,内容之间居然有逻辑连贯性——这种能力肯定不是林晨遗传的。
晚饭后,林晨陪父母在阳台上坐了一会儿。
太阳快落完了,海面上剩最后一条橙红色的光带。远处的帆船正在回港,白帆被晚霞染成淡粉色。母亲坐在藤编躺椅上,身体慢慢往后靠下去,然后深深地吐了一口气——像是吐出了某种从上车开始就一直憋着的东西。
这景色真好看。她说。
你每天都能看到。
你在旧家的时候也能看到这些?
旧家看不到海。旧家窗外是对面楼的墙壁和空调外机。
母亲没有再问了。她安静地看着海面,双手搭在扶手上,表情松弛。过了大概两分钟,她说了一句没头没尾的话:
你小时候我就想带你去海边。那时候家里没钱,连火车票都买不起。你闹了好几次,我只能带你去县城那条小河沟旁边站着。
林晨看着母亲的侧脸。她花白的头发被晚风吹散了几根,眼角的皱纹在夕阳最后一点光线里显得更深了。他心里涌起一种说不清的感觉——心疼过去的日子,也踏实于现在的日子。
妈,以后想看海随时来。客房永远给你们留着。
母亲没有说话。但她的嘴角动了一下——不是笑,是那种确认了的微表情。
父亲从椅子上站起来,走到阳台的玻璃栏杆边上,手搭在上面,看着远处。然后轻声说了一句:
这房子好。住着舒坦。
林晨知道,这是父亲对任何事物能给出的最高评价了。林建国不会说我很喜欢真漂亮为你骄傲——他这辈子不会说这样的话。住着舒坦四个字,是他整个情感表达词汇表的天花板。
晚上,林晨在书房里写了一行字:
父母来了,看到新家。客房第一次有人住,阳台上的躺椅第一次有爸妈坐。他们安心了。这就是最好的事。
走出书房,客厅的灯还亮着一盏。苏婉还在沙发上,手里拿着书但目光在远处——她在等林晨,等着跟他说句什么。
妈好像瘦了。林晨说。
她以前一直担心你。苏婉放下书。你每次打电话只说你工作忙,她以为你过得不好。这次看到了新家,看到了你的书房和阳台,她应该放心了。
你呢?
苏婉想了想。我也放心了。然后关了客厅那最后一盏灯。
窗外,鹏城湾的夜海在月下安静地闪光。客房里的父母已经睡了——这是他们这辈子住过的最大、最安静的房间。
第247章 家庭幸福
父母在鹏城住了一周。
这一周,林晨每天准时下班。不是六点半走,是五点半——t厂正常的打卡时间。这是他入职以来第一次连续一周不加班。
母亲最喜欢的位置是阳台上的藤编躺椅。每天下午,她泡一杯自己从老家带来的粗茶,坐在上面看海。有时候看一个小时,有时候看更久,身体陷在椅子里一动不动,只有眼睛在慢慢扫着海面——远处进港的货轮、近处训练归来的帆船、偶尔飞过的海鸥群。
她跟林晨说起老家的河。那条河在林晨小时候的记忆里很宽,现在看照片其实不到三十米。母亲说她小时候也没见过海,第一次见海是跟父亲结婚后那一年去的厦门——那时候坐绿皮火车,一个晚上才到,在厦门只住了两天就回来了。
现在好了,母亲说,每天都能看到海。不用坐火车。
父亲最喜欢的地方是小区的花园。每天早上六点起床,去楼下散步一个小时,回来的时候手里偶尔捏着一片不知道从哪里捡的叶子,放在茶几上再去做别的事。
花园里的步道是塑胶的,不用爬坡,比老家好走。他说这话的时候面无表情,但这句话本身就是评价——他会走路,每天要走一小时,对路面的材质有发言权。
有一天早上林晨起得早,陪父亲去花园走了一圈。在凉亭边父亲停了一下,看着几株开红色花的灌木。
这是什么花?
不清楚。林晨不养花,回头我问问苏婉。
父亲没再追问。他继续往前走,走了几步之后头也不回地说了一句:你现在的日子,比我和你妈这辈子任何时候都好。
林晨看着父亲的背影。他还是穿着那件洗得起毛边的灰夹克,背还是那么直,步伐不快不慢。这句话从他嘴里说出来,不像感性的感慨,更接近一个工程师做完验收后下的结论。
周四晚上,苏婉做了一顿丰盛的饭。
不是什么特别的日子。她买菜的时候看到黄花鱼很新鲜,就多买了两条。回来路上又去卤味店切了半只烧鸭。到家发现冰箱里还有一盒没拆封的虾,索性一起做了。
桌上摆了五菜一汤。黄花鱼清蒸的,葱丝姜丝码得整整齐齐。烧鸭切块码盘。蒜蓉开背虾,虾壳炸得脆脆的,蒜蓉炸得金黄。还有一盘酸豆角炒肉末——母亲带来的酸豆角——和一盘清炒菜心。
一家人围坐在餐桌边。父亲坐主位,林晨坚持让他坐的。母亲坐在父亲的右手边——那是她几十年来固定的位置。乐乐坐在爷爷旁边,苏婉坐在婆婆旁边,林晨坐在桌子靠厨房的那一侧。
妈,多吃鱼。苏婉夹了一块最嫩的鱼肚肉放在母亲碗里。
自己来自己来。母亲推辞着,但已经拿起了筷子,脸上的笑意根本收不住。
爸,您尝尝这个排骨。林晨夹了一块红烧排骨放到父亲碗里。
父亲咬了一口,点了一下头。
乐乐举着自己的小筷子:我也要!我要最大那块!
先把你碗里这块吃了。苏婉说。
饭桌上的气氛比林晨记忆中任何一次家庭聚餐都好。不是菜多了几道,是每个人都松弛了——母亲不再在吃饭时偷偷观察林晨的脸色来判断他是不是在强撑,因为她已经看到了新家的阳台和书房;父亲不再沉默着扒完一碗饭就放下筷子,而是多吃了半碗饭;乐乐不再是唯一在讲话的人,而是大家轮流被他的话逗笑。
吃完饭,母亲站起来要洗碗。苏婉拦她:妈您是客,我来洗。
什么客人不客人的——我是你妈。母亲笑着把她推开,端着一叠脏碗进了厨房。她的动作还是那么利落——先冲洗一遍残渣,再挤洗洁精,然后从大到小挨个擦,冲干净之后倒扣在沥水篮里。每一步都干净利落,跟她二十年前在家里洗碗的流程一模一样。
林晨站在厨房门口,看着母亲在水池前忙碌的背影。她的背有点弯,头发比上次见面时又白了几根。但手上的节奏没变——洗、冲、倒扣,每个碗都放得稳稳当当。
以后多来。
母亲头也没回:来什么来,你们工作忙,我们来了添乱。
客房一直留着。随时来。不添乱。
母亲洗完最后一只碗,在水龙头下冲了一下手,擦了擦转过身来。她看着林晨,眼睛里有一种很复杂的平静——像一块压了很久的东西终于被拿走了。
晨子。她叫了林晨的小名。这个名字从他十八岁之后就很少有人叫了。你好好的,妈就放心了。
林晨没有回答。新家的每一个房间都在替他说。
周日,父母坐下午的航班回老家。
林晨开车送他们。母亲在后座一路上反复叮嘱——不要总熬夜,乐乐的咳嗽要重视,苏婉工作也忙你多帮忙做家务。每一条他都说知道了。父亲坐在副驾驶,一句话没说,只是偶尔看一眼窗外的鹏城——那些高架桥、商务区和海滨大道。
到了机场,母亲抱着乐乐亲了又亲,额头、脸颊、头顶各一下。然后她抱了一下苏婉,抱得很短但很用力。最后她抱了林晨,抱了三秒。
父亲没抱任何人。他只是伸出右手,用力拍了拍林晨的肩膀——三下,每一下都拍得很重。然后说了三个字:好好干。
林晨点头。
安检通道的玻璃隔断后面,父母的背影越来越小,最后消失在转弯处。林晨站在原地等了很久,直到确认他们已经走了。
回来的车上,苏婉打破了沉默。
爸今天说了八个字。
哪八个?
你现在的日子比我和你妈这辈子任何时候都好。苏婉的声音很轻,今天早上在花园里,你爸跟我说的。不是当着你面说的——是趁你不在的时候说的。
林晨握着方向盘的手顿了一下。
他的父亲是这样的——永远不会当着他的面说我为你骄傲。但会在花园里趁他不在的时候,对他妻子说一句比我们这辈子任何时候都好。这一句话里藏着的感情,林晨全都听得懂。
晚上回到家。父母住过的那间客房已经空了,但床单上还留着母亲折好的痕迹。窗台上的绿萝苏婉刚浇过水,叶子上有水珠在滴。
他在笔记本上写了一行:
父母走了。这是他们这辈子住过的最大的一间客房。不是炫耀,是安心。他们放心了,我也放心了。
走出书房。客厅里乐乐正趴在茶几上画新画——这次画的是三个人和两把躺椅,躺椅上一对老人,海上有几艘小船。
林晨走过去,摸了摸乐乐的头。
乐乐画的是谁啊?
爷爷奶奶!乐乐头也不抬,我给他们画了专属的躺椅。下次他们来就能坐了。
苏婉在沙发上看着这一幕,端着她的红茶,表情松弛而满足。
这就是他想要的生活。不是赚到最多的钱,买到最大的房子,爬到最高的职位。而是父母在的时候有客房给他们住,妻子在身边一起喝茶,儿子趴在地板上画爷爷奶奶的躺椅。
不是终点。但已经够了。
父母走后的第二天早上,林晨在阳台上发现了一件事。
躺椅的扶手上放着一百块钱,用一块小石头压着。钱是旧的,折痕很深,像是在包里放了很久。石头是父亲从小区花园散步时捡回来的——一颗普通的鹅卵石,灰白色的,表面被雨水冲得很光滑。
林晨给母亲打电话:妈,你们在阳台上放了什么?
你爸让我放的。他说住了一个礼拜,不能白住。我说儿子家里不用给钱,他说那不行,这是规矩。
妈,一百块钱住一个礼拜?这比旅馆便宜多了。
母亲在电话里笑了。不是那种哈哈的大笑——是那种闷在喉咙里的、短促的笑。她说:你爸这辈子就这个性格,你别笑他。
林晨没有笑。他捏着那张旧的一百块钱,知道父亲表达感情的方式——他不会当着面说任何感性的话,但他的行动里全是感情。那一百块钱和那颗鹅卵石是他能给的全部表达。
挂了电话后,林晨把钱和石头一起放在了书房的书架上——跟那些技术书和笔记本放在同一格。不是用来花,是用来提醒自己:父亲的爱从来不靠嘴巴说。
苏婉早上起床后看到书架上的钱和石头,问了一句:这是什么?
爸给的房费。他觉得不能白住。
苏婉看着那一百块钱和鹅卵石,沉默了几秒。你爸是我见过的最不会表达感情的人。顿了顿,补了一句:也是最会用行动表达感情的人。
林晨点头。
第248章 回望过去
父母走后的那个周六,下了一整天的雨。
雨水打在阳台的玻璃栏杆上,顺着弧面往下淌,把鹏城湾的海面洗成一片灰蒙蒙的远景。林晨本来计划去公司加班——FinGpt v3的数据处理脚本还没写完——但早上站在窗前看了看雨势,决定不去了。
他一个人坐在书房里,做了一件很久没做的事。
回望。
电脑里有一个文件夹,名字叫年度计划。他点进去,里面有三个文档。三年前的、两年前的、一年的。
第一个文档是2022年6月目标.txt。文件名没有修饰,纯文本格式,说明当时连整理格式的心情都没有。
里面三行字:
1. 找到一份工作,什么工作都行。只要能还月供。 2. 继续学AI,把投资系统做出来。 3. 还房贷。不管怎样都不能断供。
三行文字。每个字都是一块石头,压在当时的胸口。他记得写下这三行字的那个晚上——失业第二个月,存款正在快速见底,旧家月供一万二每个月像倒计时一样准时来敲门。那天凌晨两点他坐在出租屋的小阳台上,手机屏幕照着手指打的这几个字。
不是用键盘写的,是用手机备忘录。因为那时候他觉得自己不配打开电脑写任何正式的东西。
第二个文档是2023年目标.docx。格式升级了,从txt变成了docx,说明心态也在变。
1. 在t厂扎根——至少撑过试用期,最好能做出点成绩。 2. 投资账户突破200万——系统已经证明有效,剩下的就是时间。 3. 给家人更好的生活——更大一点的房子,更好的学校,更少的焦虑。
这三个目标全部达成了。他的试用期不仅过了,还成了team Leader。投资账户突破了200万之后买了鹏城湾。家人的生活比两年前好了不止一倍——房子大了、学校好了、焦虑少了。
第三个文档是2024年目标.docx。格式很规整,有分节符和目录索引——这是在工作状态中写的。
1. 大模型方向:FinGpt在金融场景下实现显着领先(超通用模型30%以上),完成商业化试点。 2. 投资:账户从买房后余额恢复增长,年底达到100万以上。 3. 生活:装修完工,搬进新居,乐乐入学准备完。
全部达成。FinGpt超过了34%。投资账户到了97万。装修完成了,新家入住了,乐乐九月份要进鹏城实验小学。
他关掉这三个文档,靠着椅背闭上眼睛,在心里倒放了一段记忆。
三十五岁被裁的那个下午。hR的表情和语气都记不清了,只记得自己拿着一个牛皮纸信封走出写字楼的时候,太阳很亮。他站在门口的台阶上,觉得整个世界突然安静了。街上有车在开,有人在走路,有外卖骑手在等红灯——一切照常,除了他自己。
那个深夜坐在出租屋阳台上抽烟的画面。烟是小区楼下便利店买的,最便宜的那一款,他平时不抽,那天晚上抽了半包。脑子里只有一个问题在无限循环:下一步怎么办。
学AI的第一个月。装好了python环境,打开第一个教程网页,跟着教程敲了第一行print(hello world)——然后被import tensorflow那行的报错信息困了整整一个下午。他盯着十几行红色的traceback看了四十分钟,不知道自己到底能不能学会。
第一笔实盘交易的晚上。五万块钱,A股EtF,买了之后第一天浮盈八百块。他激动得半夜十二点给苏婉发了消息——不是什么分析,就是一句赚了八百。那八百块钱的意义不在于金额,而在于证明了一件事——代码可以帮他赚钱。
暴跌20%的那个下午。账户从280多万跌到两百三十几万,他坐在旧家书房里看着面板上那个闪烁的红色数字,手指悬在键盘上方停了很久。脑子里的两股力量在打仗——一股说手动平仓,先保住本金,另一股说系统设计的时候就预设了20%的回撤,现在没到系统的止损线,你不应该干预。最后他放下了手,选择了相信代码。
买房的下午。带着苏婉站在鹏城湾的落地窗前,188平的客厅空荡荡的,她走到阳台上往外看了一眼,说了一句我最喜欢的是这个阳台。他当时心里在想两件事——一件是这阳台确实好,另一件是首付和月供要算清楚。
父母第一次来新家的那个中午。母亲站在客房床前摸着床垫软度,父亲站在阳台门口看着海面说住着舒坦。那是他父亲这辈子说过的最大一句肯定。
每一帧画面都很清晰。不是模糊的情感记忆,而是精确到当时光线、声音和触感的画面。连在一起,是三年。
他从椅子上站起来,走到窗前。雨还没停,窗外灰色的海面上白浪一层一层往岸边推。这是他书房的窗——朝北,安静,适合工作,不适合社交。但今天他不在工作,他在想事情。
三年。从35岁到38岁的三年。
写出来只是几行字。几行字之间藏着的,是几千个小时的深夜学习、几百次被拒绝后的重新尝试、几十次回撤时克制自己不要手动的心理战。不是天赋。是三十五岁被裁后没有放弃自己。
手机响了。苏婉的微信:雨停了要不要出去走走?
去哪?
楼下花园。乐乐说要去踩水坑。
他走出书房。客厅里乐乐穿着雨鞋跃跃欲试,乌龟慢慢趴在水缸的石头上纹丝不动。
窗外,雨小了。海面上的云雾正在散开,透出一点灰蓝色的光。
回望完了。该继续往前走了。
雨停了之后,林晨带乐乐下楼踩水坑。
小区的花园被雨洗了一遍,空气里有湿润的泥土味和榕树叶子的清香。乐乐穿了那双黄色的雨鞋,专门挑最深的水坑跳,每跳一次水花四溅,裤子湿了大半截。他咯咯的笑声在整个花园里回荡。
林晨站在凉亭边看乐乐跳。旁边长椅上坐着一个老先生在看报纸,抬头看了一眼乐乐,笑了笑继续看报。
手机震了。苏婉发来一张照片——是三年前的一张旧照。照片拍的是旧家小书房,书桌上铺满了打印出来的论文和技术书,显示器上是一行红色的python报错。她附了一句:刚才整理相册翻到的。你还记得这个晚上吗?
林晨记得。那是他学AI第一个月的某个晚上,被一个import tensorflow的报错折腾了整整一个下午。照片里他的手指正按在回车键上,准备又一次运行那段报错的代码。
他回了一句:记得。那个报错后来发现是numpy版本不兼容。花了两天才解决。
两天的报错,换来三年后的今天。苏婉回。
林晨看着这条消息,又看了看在花园水坑里蹦跳的乐乐。从tensorflow报错到AcL论文,从五万到九十七万,从89平到188平——这些都是可见的结果。但回望的意义不在于结果,而在于过程:那个被报错卡住但没放弃的人,那个在暴跌中忍住没手动平仓的人,那个在所有人都觉得大模型投入太激进时坚持说不能观望的人。是那些选择,造就了结果。
继续跳!乐乐在前面喊。
来了。
他收起手机,走过去牵乐乐的手。
花园的石板路被雨洗得很干净,反射着雨后的阳光。父子俩的影子在浅色的地面上拉得很长——一个高,一个矮,手牵手往前走。
下午他们去小区门口的水果店买西瓜。
乐乐选了一个最大的,两只手抱不住,林晨帮他托着底。回家路上乐乐问了一个问题:爸爸,你小时候也爱吃西瓜吗?
爱吃。但小时候爷爷很少买——西瓜那时候要几块钱一个,爷爷觉得贵。
那现在爷爷能天天吃西瓜吗?
能。上次爷爷奶奶来的时候,冰箱里放了两颗。妈每天切一盘给他们。
乐乐想了一下,认真地说:那以后我长大了也要赚很多钱,给你们买西瓜。
林晨没有说你不用赚很多钱我们不需要你买。他知道这个七岁的孩子想表达的不是西瓜——是爱。用他能想到的最大的消费来兑现的爱。
林晨说,等你长大了,给我们买。
苏婉站在厨房门口看到父子俩抱着一颗大西瓜进门,乐乐的脸都涨红了但还是不撒手——这个西瓜是我选的!是我的!
晚饭后她把西瓜切了。乐乐挑最大那块给林晨,第二块给苏婉,自己拿第三块——然后在茶几旁边吃了满脸的西瓜汁。
林晨看着这个画面,在脑子里把它存成了又一张。
回望够了。继续走。
第249章 展望未来
林晨三十八岁生日那天,苏婉在厨房里忙了一个下午。
没有蛋糕——林晨对甜食没什么兴趣,苏婉也懒得跟乐乐解释为什么生日蛋糕一年只能吃一次。没有蜡烛——乐乐非要吹,苏婉从储物间找了一根去年中秋节没用完的红蜡烛给他,让他在茶几旁边吹着玩。没有生日歌——林晨嫌那个调子太催眠。
但有一桌菜。
苏婉做了六菜一汤。清蒸鲈鱼是主菜,鱼身划了斜刀,姜丝葱丝码得整整齐齐,蒸好后淋了一勺滚烫的花生油,滋啦一声把葱姜的香味炸出来。糖醋排骨是林晨的最爱,酸甜比例是苏婉自己调的——三勺醋两勺糖,再加一点老抽上色。一盘白灼菜心,一盘蒜蓉炒花蛤,一盘凉拌黄瓜。汤是番茄蛋花汤,林晨喝了一口说跟两年前在旧家喝的味道一样。苏婉说那是因为她两年来一直用同一个锅。
乐乐面前还有一份单独的菜——三个卤鸡翅,装在他自己的小碗里。他一边啃一边在跟苏婉讨论爸爸现在几岁。
爸爸你三十八岁了是不是很老了?
三十八岁不算老。
那你能不能活到一百岁?
天天吃你妈做的饭,活到一百岁可以。
乐乐满意地点了点头,继续啃鸡翅。
晚饭后,乐乐在客厅看电视,苏婉在沙发上翻书。林晨一个人走进书房。
三十八岁了。他在笔记本上翻开新的一页。
2025年下半年目标:
第一行:FinGpt商业化。试点阶段已经上线,接下来把用户量从现在的几百人推到上万人。需要做三件事——优化推理速度,现在的单次推理延迟在2到3秒,对实时客服来说还不够快,目标降到1秒以内;接入第二个业务线(智能投研辅助),金融部门已经有人愿意做第一批试点用户。
第二行:投资账户从97万增长到150万以上。保守估计,按年化30%算,从97万到150万大约需要一年多。这个数字不激进——如果市场像去年那样配合,可能更快;如果遇到回撤,可能更慢。关键不是速度,是不出大错。
第三行:团队成长。大模型部门现在二十几个人,他需要培养两个能独立带方向的骨干——陈铭在微调方面已经成熟了,张雨在评测和研究上的能力也很突出。下一步让他们各自带一个小方向,他只管总体策略和技术判断。
第四行:家庭。乐乐九月份入学鹏城实验小学,苏婉评高级职称今年是窗口期,父母身体健康——这是苏婉让他加上的,她说你的年度计划以前从来不考虑这些,从今年开始必须考虑。
第五行:自己。保持学习,保持锻炼。每周至少游两次泳,至少读一本跟工作无关的书。
他放下笔,看着这五个目标。
以前的年度计划几乎全是职业生涯和钱的——找工作、晋升、投资、买房。现在开始有了家庭和个人的比重。不是因为职业生涯不重要了,是他终于开始理解一件事:职业和收入是手段。让家人和自己过得好,是目的。
他想起陈博士跟他说过的一句话——永远不要忘了你为什么出发。
他出发的原因很具体。三十五岁被裁的那个下午,他不甘心。不甘心自己的职业生涯就停在这里了,不甘心让妻子和孩子跟着他一起被焦虑困住,不甘心变成一个每天盯着招聘网站的失业者。
现在不甘心变成了底气。焦虑变成了从容。困苦——那个最难的时候——变成了过去。
接下来的路不是不再有挑战。而是有底气之后,能去挑战更大的东西——不是只为自己,也是为团队、为家人、为更多他还能影响到的人。
他翻到笔记本最后一页,写了一行字:
三十八岁的林晨。比三十五岁有底气,比三十七岁从容。下一步不是追数字,是找方向。方向对了,快慢都无所谓。
合上笔记本,关掉台灯。
走出书房。苏婉在给乐乐讲睡前故事。她在念一本图书馆借来的书,讲的是一个小男孩骑着一条龙飞过了很多座山。乐乐在她怀里已经眯了眼睛,但每次苏婉翻页他都会挣开一下眼看看画,然后再眯回去。
后面呢?乐乐含糊地问。
后面——少年骑着龙飞到了一个更好的地方。
什么地方?
比现在更好的地方。苏婉轻声说,但要去那里,需要勇气和坚持。
我有勇气。
你有。
林晨靠在门口听着。窗外的鹏城湾在夜色中安静地亮着灯,远处一闪一闪的航标在水面上拖出短促的光影。
更好的地方长什么样他不知道。但他知道有勇气和坚持的人一定能到——因为他自己就是从那里走过来的。
三十八岁的第一晚。
不是新的开始。是继续。
生日后没几天,林晨在公司碰到了一个意想不到的人。
那天的午饭时间,他去公司食堂排队取餐,旁边队伍里有人叫了他一声:林晨?
他转头认了两秒才认出来——是老同事张毅,之前在上一家公司同组的Java后端。三年前公司裁员,张毅也在名单上,但两人后来失去了联系。
你也来t厂了?林晨把餐盘端到张毅对面坐下。
刚来一个月。之前在另外一家小厂待了两年,最近刚跳过来。张毅还是老样子,说话快,吃饭更快。你现在做什么?我听说你在t厂混得不错。
做大模型。
大模型?张毅停了下筷子。你现在转AI了?
转了两年多了。
从Java后端直接转AI?张毅的表情不是质疑,是真正的意外。怎么转的?报班学的?
自学。网上找课程和论文,边学边做项目。林晨夹了一筷子青菜,第一个项目就是那套投资系统——自动交易股票期货的那种。后来靠这个项目拿的t厂面试。
张毅沉默了一会儿,然后说了一句话:你知道吗,当时被裁的那批人里,大部分到现在还在做老本行。有几个转行了——开网约车、卖保险。你是我认识的唯一一个从零开始转了AI还能发顶会论文的。
你怎么知道论文的事?
你名字都挂在公司内部论坛首页了,热烈祝贺大模型应用部林晨陈博士论文被AcL接收。整个t厂的技术人员都看到了。
林晨笑了。hR帮他做的宣传,自己都没注意。
吃完饭走回工位的路上,张毅说了一句让林晨想了很久的话:当初被裁的时候,我觉得那是这辈子最倒霉的一天。但现在回头看,那次裁员把所有人的路分开了——有些人被分了之后一直在原地打转,有些人被分了之后却走了一条新路。
林晨没有说话。但他知道张毅说的是事实。
被裁不是什么好事。但它是一个强制分岔口——被迫离开原来的轨道之后,不同人做出了不同的选择。有人选择了安全——继续做同样的技术栈,只不过换了一家公司。有人选择了放弃——离开技术行业,去做门槛更低的工作。他选择了最难的那条——从零开始学全新的领域,在所有人都觉得三十五岁学不会了的时候硬啃。
三年后再看,最难的那条路,反而走得最远。
晚上。他在笔记里加了一段话:
三十八岁的展望。不是对未来做详细的布局——因为最好的机会往往不在布局里。而是对自己说:你有底气面对任何变化,你有能力从零开始学会任何东西,你有耐心走完任何一条长路。三十五岁证明了第一条,三十八岁确认这三条都成立。
翻到下一页。
窗外,鹏城湾的夜色没有变化。但他的眼睛看到的,跟三年前不一样了。
三十八岁之后的第三天,周日上午。
林晨在书房里写代码。苏婉在客厅备课——她今年要评高级职称,周末都在准备公开课教案。乐乐趴在地毯上玩乐高,乌龟慢慢趴在水缸的石头上纹丝不动。阳光很好,从阳台的落地窗照进来,在木地板上画了一大片暖黄色的矩形。
这个画面跟三年前旧家的画面对比太鲜明了。三年前的旧家客厅,乐乐只能挤在沙发和茶几之间的小缝隙里玩积木,苏婉在餐桌边备课因为没有书房。林晨在不到六平米的小书房里对着屏幕学AI。三个人挤在89平的空间里,每个人都在努力,但每个人都很憋屈。
现在每个人都有一块属于自己的空间。苏婉在客厅有沙发和书架,乐乐有他的海蓝色房间和窗台上的乌龟缸,林晨有他的六口千兆网书房和升降桌。不是奢侈,是每个人都能在自己的空间里做最好的自己。
苏婉端了杯茶走进书房。在想什么?
想三十八岁之后的日子怎么过。
怎么过?
保持。保持在现在的方向上,保持在现在的节奏里。林晨靠在椅背上,三十五岁到三十八岁是爬坡——从失业的谷底一路往上爬,每一步都不敢松劲。三十八岁之后不是不爬了,但爬的方式可以不一样——不是为了生存而爬,是为了更好而爬。
听起来你终于不焦虑了。
不是不焦虑。是知道了焦虑是生活的一部分——不需要根除它,只需要不让它控制你。
苏婉把茶杯放在他的桌面上,走出去继续备课。
阳光从书房的窗户斜照进来,在双显示器的边框上反射着柔和的金属光泽。
三十八岁。不是新的开始,是继续。但继续的方式,比开始的时候更轻松。
第250章 新的起点
七月最后一天。晚上十一点。
苏婉和乐乐已经睡了。
林晨站在鹏城湾新家的阳台上,手搭在玻璃栏杆上,看着远处的海。今晚没有月亮,但海面上铺了一层碎碎的灯光——远处科技园写字楼的外墙灯带、货运码头的高杆灯、航道上几艘船的红绿舷灯。每一种灯都在水面上有自己的倒影,波纹把它们揉碎再拼起来,像一面正在流动的马赛克画。
夜风从海上来,带一点咸腥和湿润。他手里端着一杯茶——龙井,不是酒。他不怎么喝酒,尤其是在想事情的时候。
今天是他入职t厂三周年的日子。
三年前的今天,他走进t厂大楼,门禁系统还没有录入他的信息,保安看了好一会儿他的临时通行证才放行。那天他穿了一件刚买的白色衬衫,领口太紧,系上扣子勒得脖子不舒服。他在电梯里对着镜子看了自己的样子——三十五岁的新人,跟旁边一群二十出头的校招生站在同一个电梯轿厢里,年龄差距像一道无声的界线。
今天下午,他在公司开了一个季度总结会。会议室的空调有点冷——二十楼中央空调的出风口正对着他的座位,他让陈铭跟他换了个位置继续讲。
FinGpt v2商业化试点的数据投在大屏幕上——金融智能客服准确率提升了百分之三十几,客户满意度也有明显改善。金融部门的人已经在催他什么时候能正式上线、什么时候能接入第二个业务线。陈铭在会上提了智能投研助手的想法——用FinGpt的大模型能力去帮投资者读研报、筛信息、提示风险。
散会后,陈铭在走廊里追上他。林总,我觉得智能投研这件事可以认真考虑。它本质上是把您的投资系统的文本理解能力从传统NLp升级成大模型——量化策略加文本理解,这两件事您都在行。
林晨当时没有给明确的答复。先写方案。写完了我们讨论。
现在他站在阳台上,把陈铭说的话又在脑子里过了一遍。
量化策略加文本理解。一套能从数字中读出信号、从文字中读懂信息的系统。他从三年前就在往这个方向走——投资系统是前一半,FinGpt是后一半。两件事拼在一起,才是完整的图景。
但这还是太远。FinGpt v2刚上线试点,v3的数据处理还在进行中。智能投研这个方向需要更多的数据、更强的模型、更长的验证周期。他给自己定了时间线——明年上半年启动探索,一年之内出第一版原型。
阳台上的风比刚才大了一点。他喝完杯里最后一口茶——茶已经凉了,龙井凉了之后有一丝回甘。
他想起三年前的同一个夜晚。
2022年7月31日晚上十一点。他坐在旧家的小阳台上——那个阳台只有不到三平米,放一个洗衣机就满了一半。他坐在一把塑料凳子上,膝盖顶着阳台的栏杆。鹏城的夏天闷热潮湿,他身上穿着一件旧t恤,背上出了一层汗。
那时候他想的是:下个月的月供怎么还?投资账户里只剩五万块钱,再找不到工作就要断供了。
那时候他不知道一年后自己会在t厂升职当Leader,不知道两年后会被陈博士推荐去大模型部门,不知道三年后会站在188平的大平层阳台上看同样的海。他甚至不知道自己到底能不能学会AI——那时候他刚报了网课,连反向传播的梯度公式都看不懂。
但即使什么都不知道,他还是做了一个决定:不能停。
三年后他站在同样的时间刻度上——7月31日晚上十一点——站在完全不同的地方。
他从35岁走到了38岁。
失业→入职。新人→Leader→资深专家。投资账户:5万→20万→284万→买房→67万→83万→97万。房子:89平→188平大平层。论文:零→AcL一篇。管理:一个人→二十几个人的大模型部门。
数字是客观的。更重要的变化是主观的——焦虑变成了从容,迷茫变成了清晰,不确定为什么而活变成了知道往哪里走。
他转身走回客厅。关上了阳台的玻璃门。
书房里双显示器的屏保在黑暗中转动——那是他设的相册屏保,轮播着这几年的照片。他站在门口看了一会儿:乐乐在老家的院子里追鸡,苏婉在旧家书房里对镜头微笑,父母在新家阳台上并排坐着看海。每一张照片都是一块路标,标记着他曾经站在哪里。
他坐进人体工学椅,晃了一下鼠标。屏保消失,IdE露出来——FinGpt v3的数据清洗脚本,写到一半,停在了一个for循环中间。
他想了想,没继续写。关掉了IdE,打开了obsidian——他的笔记软件。
写了一行:
2025年8月1日。新的一页。从涅盘重生继续向前。方向不变——用技术解决真实的问题,用系统对抗不确定性。下一步——让FinGpt真正产生价值,让投资系统持续稳定运行,让团队成长,让家人过得更好。
写完,关掉显示器。
走出书房之前,他回头看了一眼房间的布局。双显示器,升降桌,十二格的定制书柜,六个千兆网口——每一条线都打好标签。这间书房是他花了最多心力设计的房间,不是因为他对家装有多大兴趣,而是因为这里将是他未来几年待得最久的地方。
凌晨一点。苏婉在床上睡得很熟,她的呼吸声平稳而有节奏。乐乐在隔壁的房间,被子踢掉了一半——这是他的固定动作,每晚必踢。
林晨帮乐乐把被子重新盖好,在黑暗里站了几秒,然后回到主卧。
躺下。闭上了眼睛。
窗外的航标灯还在闪。不是注意危险的信号——是方向对了,继续走的确认。
三十八岁的林晨不是在涅盘。
他已经在灰烬中重生了。现在是在重生之后,开始了新的出发。
路还长。但他知道怎么走。
八月的第一个周一,林晨到公司比平时早了半小时。
办公区的灯还没全亮,保洁阿姨正在擦走廊的地面。他刷了工牌走进大模型应用部的办公室——二十几个工位空着,只有最后一排角落的灯亮着。陈铭已经到了,面前是双显示器,左边训练日志在滚,右边在写代码。
林晨放下电脑包。
陈铭头也没抬。FinGpt v3的第一次训练跑完了,效果有提升但不大。评测组今天出报告。
先别盯着v3。今天下午有个重要的事——林晨把一份文件放在陈铭桌上。那是公司内部流转的一份战略规划草案,封面上印着t厂AI战略2025h2。
看一下第五页。公司正式把智能投研列入明年q1的重点方向。跟陈铭你上次提的想法一致。
陈铭翻到第五页,看了两分钟,然后抬头看着林晨。
公司想做这个?
对。而且指定我们部门牵头技术验证。林晨坐下,打开自己的电脑。金融智能投研助手,基于FinGpt的文本理解能力,加上原有投资系统的量化分析能力。不是实验室里的demo,是能真正帮投资者分析研报、解读财报、筛选信息的工具。
那FinGpt v3呢?
并行推进。v3继续做——提升的是底层模型能力。智能投研是新方向——探索的是应用场景。林晨打开了一份空白的项目计划书,你牵头智能投研方向,张雨继续负责FinGpt模型迭代。两条线并行推进。
陈铭想了一下。可以。但我需要两个后端和两个金融分析师。
招聘名额已经在hR了。两周内到位。
陈铭嘴角动了一下,然后转头开始敲键盘——他已经在写项目方案了。
上午十点,全部门站会。
二十几个人围着长桌,林晨在投屏上放出两行字:
1. FinGpt v3:目标40%+,持续迭代底层模型。张雨牵头。 2. 智能投研助手:FinGpt在金融场景的新应用。陈铭牵头。
从今天起,我们部门从做模型用模型。模型要迭代,但更重要的是模型用在什么地方、解决什么问题、产生什么价值。学术论文证明我们能做研究,商业化试点证明客户需要我们的东西。下一步——证明我们能规模化地创造价值。
站会散了之后,林晨回到工位。
窗外的鹏城八月阳光灼人。海面上有几艘帆船在训练——应该是本地一个帆船俱乐部在搞夏令营。白帆在蓝灰色的水面上格外显眼。
他打开obsidian,写了一行:
2025年8月。从涅盘重生到继续向前。下一步的方向——让技术落地、让团队成长、让生活继续上行。方向对了,继续走。
然后他最小化笔记软件,打开IdE。
FinGpt v3的数据清洗脚本还停在上周五写到一半的位置。光标在for循环中间一闪一闪。
他继续敲。键盘的嗒嗒声在安静的办公室里像节拍器一样规律。
窗外,灯塔的光柱在阳光下看不见。但它还在闪——对着每一个还在航行的人,对着每一艘深夜归港的船。
方向对了,继续走。
第251章 大模型落地
八月下旬,鹏城的天气进入了一年中最难熬的阶段。气温连续一周挂在三十五度以上,海风被闷热的水汽裹住,吹在身上没有凉意,只让人觉得黏糊糊的。t厂大楼的中央空调二十四小时不停转,会议室玻璃上凝了一层薄薄的水雾。
林晨坐在二十楼的小会议室里,面前是三个部门的负责人——金融事业部的孙总、产品部的刘姐、还有他们大模型应用部的陈铭。空调出风口正对着他的后颈,吹了一个小时,脖子有点僵。他把椅子往旁边挪了半米。
今天是FinGpt项目的月度评审会。大屏幕上投着上个月的数据——智能客服试点接入金融事业部的理财咨询业务线,跑了一个月,准确率从刚上线的百分之六十七提升到了百分之七十八。这个数字对于通用大模型来说不算什么,但在金融这个容错率极低的领域,七十八意味着已经达到了人工客服辅助工具的最低门槛。
用户留存呢?孙总翻着报告问。
陈铭把第二页投上去。试点期间接入的用户大概两千三百人,使用过至少一次智能客服的人里,复访率百分之四十一。对比行业平均水平——通用AI客服的复访率大概在百分之十五左右。
四十一很高。孙总放下报告,这说明用户不只是在尝鲜——他们真的在用。
因为回答是靠谱的。陈铭调出了一组对照数据,我们对比了同一个问题分别丢给通用大模型和FinGpt的结果。通用模型在解释理财产品的风险等级时,有百分之十二的回答包含了不准确或误导性的信息。FinGpt的错误率不到百分之三。差距在于我们做了垂直领域的指令微调——用了几万条金融监管文件和产品说明做训练数据。
孙总点了点头。产品部的刘姐接过话头:从产品角度看,七十八的准确率还不够直接面向c端用户独立提供服务。但如果定位是辅助人工客服——帮客服人员快速检索信息、自动生成回复草稿、实时校验合规性——这个准确率已经可以上线了。
你们的意思是先做内部工具?孙总问。
林晨把椅子往前拉了拉,第一步,FinGpt智能客服不直接面对用户,而是嵌入金融事业部的客服工作台——当客服人员看到用户提问时,系统自动给出推荐回复和合规提醒。人工做最终确认。这个模式的好处是零风险——每一条回复都是人工审核过的,FinGpt只是提效工具。
第二步呢?
第二步等准确率超过百分之九十,再做直接面向用户的自助客服。林晨翻开手里的笔记本,上面有几行他在昨晚写下的规划,时间线——今年q3做完内部工具上线,q4把准确率从七十八推到八十五以上。明年q1评估是否达到直接面向用户的标准。
刘姐在平板上记了几笔。这个节奏我可以推动。但需要金融事业部配合做两件事——第一,提供一线客服的使用反馈,帮我们迭代模型;第二,开放更多的业务场景数据,让FinGpt能覆盖理财产品之外的第二条业务线。
孙总看了看表。第一条没问题。第二条——你们想要什么业务线?
智能投研辅助。林晨把陈铭上周写的方案投到大屏幕上,用FinGpt的文本理解能力,帮个人投资者分析研报、解读财报、筛选市场信息。这不是替代人工分析,而是帮普通投资者看懂专业内容——研报动辄几十页,里面全是术语和表格,一个散户根本读不完也读不懂。
这个方向——孙总皱了下眉,合规风险有多大?
很大。所以我们不做投资建议。陈铭翻到了方案的合规说明部分,FinGpt在智能投研里的角色是信息整理者——帮用户把一篇五十页的研报压缩成五百字的要点摘要,用通俗语言解释专业术语,按用户指定的条件筛选信息。但我们不给或的建议。所有涉及投资决策的内容,全部标记为仅供参考,不构成投资建议
而且用户端的每一次输出都有完整的合规审查日志。林晨补充了一句,万一以后有监管问询,我们能追溯每一次对话的完整链路。
孙总沉默了大概半分钟,翻完了方案的最后一页,然后合上报告。方案我带回部门讨论。下周给你们反馈。
散会后,林晨和陈铭走回工位。走廊的空调比会议室还冷,过道两边的玻璃办公室里有人在大声开会——好像是云服务部门在争论某个架构方案。
你觉得孙总会批吗?陈铭边走边问。
林晨的回答很干脆,金融事业部的客服团队每天要处理几万条用户咨询,高峰期加班加到晚上十点。能帮他们提效的工具,没有理由不批。智能投研方向上——他会犹豫,但最终也会批。因为t厂的金融业务需要技术亮点,而FinGpt目前是全公司唯一的金融大模型。
陈铭点了点头,没有继续这个话题。走到工位前,他突然停了一下。对了,评测组上午发消息——FinGpt v3的第二次训练跑完了。金融问答准确率——
多少?
百分之八十一点三。比v2提升了三个多点。
林晨站在工位边,看着陈铭屏幕上的训练曲线。loss值在最后几百步趋于平稳,几乎是一条水平的直线——说明这次训练的收敛效果不错。但更关键的指标是右侧的评测矩阵:二十个金融领域的benchmark任务,v3在十四个上超过了v2,两个持平,四个略有下降。
下降的那四个任务是什么?
保险条款解释、期货合约说明、外汇政策问答、跨境支付流程。陈铭把评测详情拉了出来,这四个任务的数据量都不够,训练集规模只有其他任务的十分之一左右。
那就不是模型本身的问题——是数据瓶颈。林晨拉了张椅子坐下,v3先不发,把这四个任务的数据集补到跟其他任务同等规模,再重新微调一轮。
数据从哪来?
林晨想了一会儿。两个来源——金融事业部的内部文档,和公开的监管文件。前者我去跟孙总要,后者张雨已经在爬了。两周之内把数据集翻一倍。
陈铭打开了一个新的文档,开始列数据需求清单。林晨回到自己的工位,打开obsidian。
八月下旬了。从他在陈博士面试时提出AI的物理成本到现在,刚好过去了一年半。那个时候他连大模型的训练流程都只停留在论文里的概念,微调、RLhF、prompt Engineering——每个词都认识,但拼在一起不知道具体怎么做。
一年半之后,他已经带着二十几个人的团队,在做金融大模型的商业化落地。
不是天赋。是一年半以来每一天都在学。
窗外的海面被正午的阳光晒得发白。远处的货轮慢慢往港口方向挪——从高空看像一片漂在水上的树叶。
他低头继续写上周没写完的v3数据清洗脚本。
九月第一周,FinGpt智能客服辅助系统在金融事业部正式上线。不是c端产品——是内部工具,嵌入客服工作台,当客服人员接到用户咨询时,系统自动在侧边栏给出三条推荐回复和一条合规提醒。客服人员可以选择直接发送推荐回复,也可以自己修改后再发。
上线第一天的数据,陈铭当晚就发到了林晨的消息里:客服平均响应时间从四十七秒降到了三十二秒。减少了十五秒——看起来不多,但在每天上万条咨询的体量下,十五秒意味着整个团队每天多出了四百多个工时。
孙总在内部的即时通讯上给林晨发了两个字:好用。
林晨回了一个。
没有多余的客套。在大厂待了快两年,他已经学会了一个道理——内部的认可不需要长篇大论的感情抒发,说就是对技术人最高的评价。
晚上,他在笔记本上写了三行字:
FinGpt走出了从论文到产品的第一步。不是完美的产品——是能帮人省十五秒的工具。但十五秒积累起来,就是真实的价值。下一步——把准确率推上去,把业务线拓宽。金融大模型不是风口上的猪,是埋在土里的种子。慢慢长,扎实长。
第253章 团队扩张
九月底的周一早会,陈博士把林晨叫到了他的办公室。
陈博士的办公室在二十六楼。不是很大——大概十几平米,书柜占了半面墙,里面塞满了论文集、会议纪念牌和各种技术标准的蓝皮书。桌上三台显示器,其中一台永远开着监控面板——GpU集群的利用率、各个训练任务的进度、模型的推理延迟。陈博士做管理这么多年,还是改不了随时盯着技术指标的习惯。
林晨在沙发上坐下。沙发是深灰色布艺的,坐垫有些旧了。
这一个多月你们部门动静不小。陈博士靠在椅背上,FinGpt智能客服在金融事业部的试点——孙总在跨部门会上专门表扬了,客服平均响应时间降了十五秒,复访率百分之四十一。然后是国泰证券——王总上周给我打了一个电话。
他说什么?
他说你们团队的技术水平超出预期。一个券商技术总监用这四个字评价一个大厂部门——你知道分量。
林晨知道。这意味着外部市场对FinGpt的认可已经从有点兴趣变成了愿意买单。上周国泰的技术对接会上,对方已经在问ApI定价了。
基于这两件事,陈博士转入正题,公司打算把大模型应用部的组织架构调整一下。目前你们是AI研究院下属的二级部门——成立时候这么设是因为方向还不明确。现在FinGpt在内部有落地验证了,外部合作也立项了,部门需要更大的独立空间。
怎么调?
大模型应用部升格为一级部门,跟AI研究院平级。你的职位从资深专家调整为部门副总监,直接向我汇报。薪资从七万八调到八万八乘以十六薪,下个月工资条生效。
七万八涨到八万八。按十六薪算,年包从一百二十五万涨到一百四十万出头,涨幅大约百分之十三。
团队规模呢?
从现在的三十二个人扩到四十二——hR批了十个名额,年底前到位。陈博士翻出一份组织架构表,三条业务线。FinGpt底层模型迭代由张雨牵头——这条线维持现在的节奏。金融应用方向——智研和智能客服——由陈铭牵头。第三条线是新方向——公司希望启动大模型在医疗领域的预研。
医疗预研的范围?
先做医学文献的智能检索和临床决策辅助——不直接面向患者诊断,是面向医生的科研辅助工具。医疗数据壁垒和合规要求比金融更高,所以公司定位为,不追求短期商业化。陈博士把一份方案推过来,这个方向的负责人,你有推荐吗?
团队内部目前没有医疗背景的人。得从外面招——要既有NLp基础又有临床知识。这种复合型人才市面上很少,薪资不能低于陈铭现在的水平。
那就按专家级待遇招。Jd你来写,我让hR优先处理。
林晨记在了笔记本上。
陈博士转了一下手里的笔。还有一件事——接下来你要从亲自写代码过渡到确保别人写好代码。我知道你在v3数据清洗脚本上还在亲自写——张雨完全可以接手。三十五人的一级部门,副总监的时间应该花在更重要的地方。
这句话击中了林晨。从失业学编程以来,他一直有一种执念——自己的价值等于自己写出的代码。从投资系统到FinGpt v1的微调脚本,他始终是团队里写代码最多的那个人。但现在团队快四十二人了,如果他还在写for循环和debug,本质上只是一个兼职做管理的程序员。
我知道。但是放下代码很难。
我懂。陈博士的语气难得温和了些,一个人写出最好的代码,价值是线性的。帮三十个人写出比他们原本更好的代码,价值是指数的。你三十五岁来时需要证明能做事——你已经证明了。现在三十八岁需要证明的,是能让别人做好事
林晨站起来。给我一个月过渡。
可以。陈博士也站起来,你是t厂AI线成立以来晋升最快的副总监。从入职到现在,不到四年。
走出办公室,林晨回到工位。他把FinGpt v3的数据清洗脚本转给了张雨。这个你接手。有问题随时问,但我不会再改你的代码了——你直接交pR。
张雨愣了两秒,然后点了头。
下午林晨跟hR开了将近一个小时的会。十个新名额:两个金融NLp算法工程师、三个大模型训练工程师、一个数据标注主管——支撑金融应用线扩张;两个医疗AI研究员——新方向;两个后端工程师——数据采集系统扩容。
医疗方向的名额他花了最长时间。医疗NLp复合型人才太少了——既懂深度学习又懂临床知识的,大多在顶级医院或头部医疗AI公司。薪资对标部门专家级,不然简历都收不到。
走出hR办公室,走廊尽头的落地窗被西晒照得暖黄。他站住看了一眼远处的鹏城湾——下午四点的阳光不再刺眼,货轮慢慢往西走,船尾拖着长长的白浪。
四年前他连print语句都要对着教程敲。三年前忐忑不安地走进这栋大楼当新人。两年前第一次带小团队做核心项目。今年春天刚升资深专家、拿七万八。不到半年——三十八岁,四十二人的一级部门副总监,八万八乘十六。
不是运气。是每一个白天和深夜都没有浪费。
晚上回家,苏婉做了六菜一汤。乐乐举着筷子喊爸爸当大官了——他不知道副总监是什么概念,但从苏婉的语气里判断是好事。
林晨看着满桌的菜和家人的笑脸,在笔记本上写了一行:
最难的不是升职加薪——是升职之后还能保持三十五岁那年的饥饿感。不是为了生存而饥饿,是为了下一个更好的版本。
第252章 跨界合作
九月第二周,孙总在内部通讯上给林晨发了一条消息:国泰证券的人下周来公司考察,想了解一下FinGpt在投研场景的应用。你这边方便接待一下吗?
林晨正在写代码,看了一眼消息,手指悬在键盘上方停了两秒。
证券公司的考察。这意味着FinGpt的名声已经从t厂内部传到了外部机构。他回了一个字:
会议定在周三下午两点。国泰证券来了三个人——技术总监姓王,四十出头,头发梳得一丝不苟,说话慢条斯理但每个问题都问在技术上;一个产品经理姓赵,三十出头,带着一个平板和一本厚厚的笔记;还有一个合规主管沉默寡言,全程只在本子上记录。
林晨这边带了陈铭和产品部的刘姐。会议室还是二十楼那间——空调出风口还是对着座位吹。
王总开门见山:我们公司最近在推数字化转型,其中有一个方向是智能投研——用AI帮分析师提高研报撰写效率,同时帮普通投资者降低信息获取门槛。我们在网上看到了您们在FinGpt上的技术分享,想了解一下能不能合作。
陈铭把FinGpt的技术架构和金融问答能力投在屏幕上,从数据采集、指令微调、RLhF对齐到评测体系,每个环节大概讲了两分钟。王总听得很认真,在陈铭讲到领域微调数据规模的时候打断了一下:你们的金融训练数据大概有多少?
目前高质量标注数据大约两万条,覆盖理财、保险、基金、股票四个领域。另外有十几万条半自动标注的公开监管文件数据。
两万条标注数据听起来不多,但在金融这个领域已经是相当可观的积累。金融数据的标注成本远高于通用领域——一条涉及复杂金融产品的问答对,需要具备专业资质的标注人员花十五到二十分钟才能完成,单条成本在五十块以上。
王总显然知道这个成本结构,所以他没有追问为什么只有两万条——而是问了另一个问题:如果我们想合作开发一个智能投研助手,您们需要什么?
林晨接过话头——这也是他的主场:两样东西。第一,数据。券商手里有大量的研报、路演纪要、行业数据库,这些都是训练投研模型的燃料。没有数据,模型再强也做不出垂直场景的效果。第二,业务场景和反馈。我们不知道一个券商分析师每天的工作流程长什么样,不知道他看研报的时候最需要什么维度的信息——这些需要你们的产品经理和分析师告诉我们。
你们能提供什么?赵经理第一次开口。
模型能力。包括文本理解、信息抽取、摘要生成、合规审查——这些都是FinGpt已经在金融场景验证过的。另外——林晨顿了一下,我本人有三年的量化投资系统的开发经验,对金融数据的理解不只是停留在NLp层面——我理解金融数据的业务含义。
这一点是林晨独有的优势。大部分做大模型技术的工程师懂算法但不懂金融,能把损失函数夏普比率放在同一句话里讨论的人不多。
王总合上笔记本,身体往椅背靠了靠。我想确认一下——您说的量化投资系统是您个人做的还是商业项目?
个人项目。从零开始开发的,覆盖A股、基金、可转债、期货期权,目前管理规模不到一百万的实盘。林晨没有回避金额,不是机构级别的量化系统,但让我理解了金融数据的底层逻辑——量价关系、波动率结构、市场微结构。这些理解在做FinGpt投研模型的时候很有用——因为你知道用户看到的研报里的每一组数据背后代表什么。
比如说?
比如说一份研报里提到某公司的经营性现金流同比下降百分之二十五。一个单纯的NLp模型只会把这句话当成一段文本,提取出实体——公司名——和数字——负百分之二十五。但懂金融的人知道:经营现金流下降百分之二十五意味着这家公司的盈利质量在恶化。如果同时发现应收账款在增长,说明公司可能在通过放宽信用政策来维持账面利润。这两条信息交叉验证之后,才能得出有意义的分析。FinGpt要做的不是简单的文本提取——是把这个交叉验证的逻辑内化到模型里。
王总沉默了大概十秒,然后侧头跟赵经理交换了一个眼神。
林总,我们的合作意向是认真的。王总把一张名片推到林晨面前,下周我们内部开一个立项会,如果您有空,希望您能来我们公司做一个分享——给我们的技术团队和业务团队讲一下FinGpt在投研场景的应用可能性。
林晨接过名片。可以。我让陈铭跟您们确认时间。
散会后,陈铭在走廊里忍不住说了一句:林总,您刚才那段关于经营现金流和应收账款的例子——讲得太清楚了。比我方案里写的那些提升投研效率之类的空话有力一百倍。
林晨没接这个茬。他说的是:回去把国泰证券需要的技术对接方案先准备出来。他们下周立项会如果通过,这个合作就是FinGpt第一个外部商业项目。
如果外部合作推进来,那跟金融事业部那边怎么协调?
并行。金融事业部是内部客户,国泰是外部客户。两边的需求不一样——内部强调的是客服效率和合规零风险,外部强调的是投研能力和差异化竞争。FinGpt的底层模型是一样的,但上层应用需要两个版本。
陈铭回到工位开始写对接方案。林晨坐到自己的位置上,看着国泰证券的名片。这不是第一次有人找他合作——之前有投资机构想投资他的量化系统,他拒绝了。这次的合作性质不一样——不是别人投钱买他的东西,而是拿他的技术和别人的数据场景做交叉融合。
晚上他在笔记里写了一段记录:
国泰证券的合作意向是FinGpt从内部工具走向外部市场的第一步。这个方向是对的——金融大模型的价值不在t厂内部,在整个金融行业的信息处理效率提升。但要注意两点:不能因为合作分散了内部FinGpt v3的节奏;不能因为商业化的诱惑降低了模型的质量标准。慢一点可以,方向偏了不行。
周末,林晨跟苏婉说了这个事。苏婉正在客厅整理她公开课的材料——桌上铺满了教案纸和打印出来的课程标准。
证券公司找你合作?苏婉把手里的笔放下,这算不算你们部门第一个外部项目?
如果下周立项通过,就算。
那你觉得能通过吗?
大概率。林晨靠在沙发上,国泰的人技术功底不错——问的问题全部踩在点上,明显是做过功课的。他们如果只是来走过场,不会问那么多细节。
那FinGpt要开始赚钱了?
不急着赚钱。第一个外部项目的意义不在于收入——在于验证我们的技术在外面有人买单。林晨拿起茶几上的杯子喝了口水,大模型这个行业现在全是烧钱的,谁先找到商业模式谁就活得更久。
苏婉看了他一眼。她说:你讲工作的时候,眼睛里有一种很笃定的光。跟以前不一样。
以前什么样?
以前你讲工作的时候也在认真讲,但是眉头总是稍微皱着的——像是在同时担心什么。
林晨没有否认。失业后很长一段时间他都是这样的状态——在认真做事的表面下有一条暗流始终在淌。焦虑、担忧、不确定感——这些情绪没有消失,只是被盖在了的下面。
现在不一样。现在他讨论工作的时候,那条暗流已经平了。
第254章 清华技术演讲
十月中旬,林晨收到了一封意料之外的邮件——来自清华计算机系的学生会,邀请他去做一个技术分享。主题是大模型在金融科技的实践,面向的是研究生和本科生中的AI方向学生。
他盯着邮件看了一会儿。清华——中国计算机科学的最高学府。他自己只是中南省某普通大学的毕业生,从来没有想过有一天会被清华邀请去讲课。
苏婉在旁边看到了他的表情。什么邮件让你这么严肃?
清华找我去做分享。大模型在金融科技的实践。
去啊。苏婉说,这有什么好犹豫的?
林晨没有犹豫——他不是不想去。他在想的是另外一件事:站在清华的讲台上,他应该讲什么。只是讲技术——像在公司内部做技术分享那样把FinGpt的架构和评测数据放上去——那他只是一个普通的客座演讲者。但他觉得自己应该讲点别的。站在一群年轻的计算机系学生面前,他能给他们的东西,不只是一套模型的训练参数。
他回复了邮件。时间是下周三下午。
周三下午两点,林晨站在清华计算机系报告厅的讲台上。报告厅不大,容纳大概两百号人,差不多坐满了七成。前排坐了十几个教授和老师,后排和中间是学生——本科生和研究生各占一半。
林晨穿了件白衬衫——不是在t厂常穿的那件polo衫,是苏婉帮他挑的。
我叫林晨。他把自己的名字写在投屏上,目前是t厂大模型应用部的副总监。但今天我不打算从副总监的角度来讲——我想从一个三十五岁才开始学AI的程序员的角度来讲。
台下安静了下来。这个开场白跟学生预想的大厂技术分享不太一样。
他先把自己被裁员的经历讲了一遍。没有煽情,只是陈述事实。三十五岁,在跨境电商公司干了十年后端开发,突然被优化。那个下午我拿着赔偿金走出写字楼,在门口的台阶上站了很久——不是因为难过,是因为不知道下一步往哪走。
然后他讲了自己在家闭关学AI的过程。tensorFlow的报错困了他两天,吴恩达的课看了三遍才听懂反向传播,数学基础不够就重新翻高数课本——每一步都是硬啃出来的。
我投的第一家web3公司给了我offer,薪资三十K。但我干了两个月公司就出问题了——项目暂停、资金断裂、二次裁员。那次经历让我明白了一件事:跟风追热点的代价远比老老实实学基本面要大。
接下来他切换到技术部分。把FinGpt在金融场景下的落地逻辑从头到尾讲了一遍——为什么选金融这个垂直领域,怎么构建标注数据集,怎么设计合规机制,怎么从模型训练到产品上线。每个环节他都附了一页他自己踩过的坑的总结——比如模型在回测数据集上表现完美但上线后被用户的实际提问打回原形,因为用户的提问方式跟标注数据完全不一样。
台下开始有人做笔记。前排的一位教授——头发花白,戴着老花镜——在纸上写着什么。
FinGpt现在的金融问答准确率是百分之八十一。看起来不高——通用大模型在闲聊场景下的准确率能到九十好几。但金融是一个容错率极低的领域——一条理财产品的风险等级解释错了,用户可能赔几万。所以我们的标准不是百分之八十一够不够好,而是什么时候能到百分之九十以上还能保持零合规风险
他在大屏幕上放了两行字:
技术是手段,不是目的。目的是用技术解决真实世界里的真实问题。如果你学AI只是想进大厂拿高薪——可以,这条路走得通。但如果你学AI是因为相信这件事能改变某个行业的效率——那你会走得更远。
演讲结束后是问答环节。前排的一个戴眼镜的男生第一个举手。林老师,您刚才提到您是从普通大学毕业的。在现在这个竞争环境下,非名校出身的程序员在AI行业还有机会吗?
林晨的回答毫不犹豫,AI这个行业最公平的地方在于——算法不认学历,只认结果。你的模型跑出来的指标比别人的好,你就是比别人的好。清华还是普通大学,在accuracy的数值面前没有区别。关键是你能不能拿出让别人无法忽视的结果。
第二个站起来的是一个坐在后排的女生。林老师,我有一个比较个人化的问题——您觉得三十五岁转行学AI还来得及吗?我身边很多师兄师姐一过三十岁就开始焦虑,觉得自己已经学不动了。
林晨沉默了两秒。台下所有人的目光都集中在他身上。
来得及。他说。我就是三十五岁开始学的。不是报班速成那种——是真的从python基础语法开始敲。刚开始连import tensorflow都会报错。但一年后我靠AI项目面试进了t厂,两年后在AcL发了论文,三年后我站在这里——以副总监的身份告诉你们这些全国最顶尖的计算机学生:来得及。
他顿了顿,补了一句:来得及的前提是你真的投入。不是每天下班刷一个小时网课那种投入——是每天十小时以上、把论文当成睡前读物、把报错当成学习材料的那种投入。三十五岁转行确实比二十二岁难。不是因为脑子慢了——是因为你肩上已经扛着房贷和家庭。但如果你有办法扛着这些东西还往前走,三十五岁一点也不晚。
报告厅里的掌声不算热烈——清华的学生比较内敛。但前排那位花白头发的教授站起来跟他握手的时候说了一句:你今天的分享比很多客座教授讲得都有价值。他们讲的是技术怎么成功,你讲的是从失败怎么走到成功。后面那种对学生的帮助更大。
林晨走出报告厅的时候,在走廊里被几个学生拦住了。他们问的问题全是关于怎么从零开始自学AI的。他站在走廊里跟这几个学生聊了十几分钟,把当初自己学AI的路线图和资源列在了一张纸上递给他们。其中一个男生接过那张纸的时候说了一句:谢谢林老师。我今年研二,在纠结转不转AI方向。听您今天说的——我不犹豫了。
林晨拍了拍他的肩膀,走出了清华计算机系大楼,十月的北京秋风干燥而清爽。他站在系馆门口的台阶上,看着校园里的银杏树正在转黄,叶子边缘已经镀了一层金边。
晚上他在北京的酒店房间里打开笔记本,写了一行:
清华演讲。第一次以从失败者走过来的人的身份跟年轻人分享,而不是以大厂成功者的身份讲技术。前者让后排那个女生不再焦虑三十五岁,让那个研二男生不再犹豫要不要转AI。这些比多跑一轮v3训练有意义。技术可以改变效率,但故事可以改变人。
第255章 鼓励年轻人
清华演讲结束后的第三天,林晨收到了一封很长的邮件。
发件人是一个叫小李的研二学生——那天坐在报告厅后排的角落里,全程没有提问,但演讲结束后专门在走廊里等了他十几分钟。林晨记得他——因为他的眼神里有那种拼命想找一条出路的焦虑。
林老师:
我是那天坐在后排角落的学生。您的演讲结束之后我在走廊里站了很久,本来想跟您说几句话,但是人多没排上。后来回到实验室,一整个晚上脑子里都在回放您说的那句话——三十五岁一点也不晚。
我今年二十六岁,研二,研究方向是计算机视觉。但最近一年我觉得cV这个方向已经到了瓶颈——论文好发,但落地太难。我想转大模型方向,又担心已经太晚了——实验室的师弟师妹们从研一就开始搞LLm,论文已经发了好几篇。
您的经历让我看到了另一种可能性——不是赢在起跑线上,而是赢在每一个今天没有放弃。
我想问您一个具体的问题:对于一个有mL基础但没接触过LLm的学生来说,从零开始学大模型,最有效的方法是什么?
林晨在工位上看到这封邮件的时候正在吃午饭——一份从楼下食堂打包上来的青椒肉丝盖浇饭。他放下筷子,把这封邮件又看了一遍,然后写了回复:
小李:
谢谢你的邮件。你的问题我认真想了一下,给你几个建议,按优先级排序:
别报付费速成班。任何标榜三个月入行大模型的课程都是收智商税。大模型需要的知识密度不是三个月能压缩的。
从Andrej Karpathy的nanoGpt教程开始。一行一行敲他的代码,理解每一个张量维度变换的含义。这不是抄——是在理解transformer的骨架子。跑通之后自己从头复写一遍。
精读五篇论文。Gpt-1、Gpt-2、Gpt-3、InstructGpt、LLamA。不是随便翻——每一篇做三页以上的笔记,理解每一组实验设计的逻辑。
找一个具体的问题做微调实验。可以是情感分析、文本摘要、对话生成——什么都行,关键是亲自跑通训练、评估、分析和改进的完整链路。一个亲手调出来的烂模型比看一百篇论文学到的多。
二十六岁一点也不晚。我三十五岁才开始——比你晚了九年。你现在有比当年我好得多的基础——mL你是懂的,pytorch你是熟的,实验室有GpU给你用。二十六岁转大模型不是弯道超车——是在正确的赛道上正常起步。
最后说一句:在清华这种地方,很容易被周围人的进度裹挟——别人论文发了、offer拿了,我还在学基础。这种横向比较是效率的毒药。你唯一要比的人,是昨天的自己。
林晨
他点了发送,然后继续吃饭。
这件事他本来没放在心上。但两周之后——十月底——小林发来了第二封邮件。这次短了很多,只附了一个Github链接。
林晨点进去,是一个大模型微调项目。用LLamA的架构在中文对话数据集上做了一次SFt,评测结果显示模型在对话连贯性和事实准确性上都有不错的提升。REAdmE写得密密麻麻——每一个训练参数的设置理由都解释得很清楚,每一个失败实验的教训都写在实验日志那节里,每一个消融实验的结论都配了表格。
邮件正文只有一段话:
林老师,谢谢您上次的回复。按照您的建议,我从nanoGpt开始写起,读完了五篇论文,然后做了这个微调项目。这是我这辈子第一次完整地从头开始做一个大模型项目——从数据准备到训练到评测全部一个人完成。两周前我拿到了某大厂大模型部门的实习offer。谢谢您。
林晨看着屏幕。心里涌起一种很难描述的感觉。
不是因为收到感谢——他对感谢这种东西早就不在意了。是因为他看到了一个年轻人用两周时间证明了二十六岁转行一点也不晚。当年他花了两年从零学到能面试,这个小李只用了两周就做出了一个有质量的微调项目。不是说他比自己厉害——是说他比自己幸运,因为有人在前面给他画过地图。
窗外的海面被十月的阳光晒得明亮而柔和。远处几艘训练帆船正在回港——帆都收了,剩下桅杆在波浪里缓缓摇摆。
晚上他在笔记本上多写了一页纸,标题叫为什么帮别人是对的。
帮一个人找到方向,比多赚一笔钱更有价值。赚钱是线性增长的——投一万赚五千,投十万赚五万。但帮人改变选择是杠杆的——你花一个小时回复一封邮件,那个人可能因此改变了整个职业路径。这种杠杆效应是任何量化策略都比不了的。
苏婉端着茶走进书房,看到他桌上摊开的笔记本上写着这一页,站住看了一会儿。
你在写什么?
复盘。帮了一个清华的学生——二十六岁转大模型拿到实习offer了。
你帮他什么了?
回了一封邮件,花了大概十五分钟。
苏婉把茶杯放在桌上,看了他一眼。她的眼神里有那种的温柔。十五分钟改变一个人的路——这比写代码效率高。
林晨说,但前提是他自己愿意行动。我只是给了他一张地图。
地图是你自己当年走过的路画出来的。换了别人画不了。
林晨想了一下,觉得她说得对。他能画出那张图、给出那五点建议,是因为他自己三年前就从那条路上一瘸一拐地走过。每一个坑他都踩过,每一条冤枉路他都走过。
周末,林晨在知乎上发了一篇文章——《三十五岁转行学AI,三年后我变成了什么样子》。这篇文章是在飞机上开始写的——从北京回鹏城的航班上,他打开笔记本在备忘录里敲了两千多字。不是技术文章,是叙事——被裁员的下午、出租屋阳台上的烟、tensorflow的报错、第一个实盘交易赚的八百块。
文章发出去之后他没再看。周日晚上苏婉刷手机的时候突然推了他一下:你看知乎热榜。
他打开知乎——那篇文章被顶到了热榜第三,评论上千条。
他划了几条高赞评论:
三十五岁那年在家里阳台上的画面,让我想起我自己。不是同一个阳台,但那种不知道下一步去哪的感觉,一模一样。
看完这篇文章我决定不裸辞了。不是不转行——是用更稳健的方式来转。
最打动我的不是他现在多厉害——是他三年前连import都报错的样子。让我觉得我还有救。
林晨关上手机。窗外鹏城湾的夜海和往常一样安静,只有远处航道上的航标灯在闪。
他帮了几个人,写了一篇文章,影响了更多他看不见的人。
这种感觉,比投资账户从九十七万涨到一百万还要好。
第256章 投资系统进化
十一月的鹏城终于凉了下来。海风从湿热变成了干爽,早晚温差拉大到七八度,阳台上不用开风扇就能坐得住了。
周六上午,林晨没有去公司。他坐在书房里,面对双显示器,左边是FinGpt的ApI测试界面,右边是他那套已经跑了三年的投资系统后端代码。
他有一个想法,在脑子里转了两周了。
目前投资系统的信号来源主要是量价数据——K线、成交量、技术指标。这些数据能捕捉市场规律,但有一个盲区:不识字。当一条政策新闻出来的时候,系统看到的是股价的波动,但不知道波动的原因。这就导致了两个问题——信号滞后,和误判风险。
但如果把FinGpt的文本理解能力接到投资系统里,让系统能新闻、公告和研报——那它得到的信号就不只是股价在跌,而是股价在跌因为某行业的补贴政策要到期了。前者是描述,后者是理解。
他打开一个新的python文件,开始写一个接口模块。
思路不复杂:在现有的投资策略引擎上增加一个文本信号层。每一篇新推送的财经新闻、每一个公司公告、每一份公开的行业研报,先过FinGpt做摘要和信号抽取——提取出事件类型、影响标的、影响方向和置信度。然后把这个文本信号量化为一个向量,跟量价信号在同一个策略层做融合。
是技术难点。量价信号是浮点数——涨了百分之三,成交量放大了两倍。文本信号是语义向量——该行业面临政策收紧压力。两个信号不在同一个空间里,怎么做加法?
他在纸上画了半小时的架构图,最后选了一个方案:不做信号加法,做信号分层。文本信号作为一层过滤器——当文本信号的置信度超过阈值的时候,调节量价信号的权重。如果FinGpt判断某条政策新闻对某个行业的负面影响很高,那么即使该行业的量价信号显示超跌反弹的机会,仓位也只开到原来的三分之一。
不是让AI替人做决策——是让AI在决策前多问一句:你看过今天的新闻了吗?
下午两点,他跑通了第一个版本。测试用的是上个月的一条真实新闻——某新能源补贴政策到期前一天的市场数据。旧版系统在补贴到期当天还在做多——因为量价信号显示超跌。新版系统在新闻发布之后立刻把仓位减了半,因为FinGpt判断补贴到期对行业利润的负面影响是长期的。
回测下来,那一个交易日就少亏了八千多。
他看着对比结果,把数据截了张图。
苏婉端了杯茶进来,看到屏幕上的两张回测曲线。这是你那个投资系统?
新版。给它加了一个读新闻的模块。用FinGpt。
也就是说你的AI现在会看新闻了?
会了。而且看完之后会自己调仓位。
苏婉看了他几秒。你让AI帮你看新闻炒股——这样合法吗?
用公开信息做分析不违法。而且这个系统不对外提供服务——是我自己用的。
苏婉把茶放下,没有继续追问。晚上想吃什么?我去买菜。
随便。让林浩做吧——今天是周六,他休息。林晨说到这里突然停了一下。林浩上周刚到鹏城,目前在林晨家暂住,正在厨师学校上课。
苏婉出去了。林晨继续写代码。他在文本信号层加了一个置信度阈值的参数——只有当FinGpt对某条新闻的判断置信度高于百分之七十的时候,才允许干预量价信号。低于七十的不予采纳——这是安全边界,防止模型在不确定的时候乱动仓位。
这个参数的设置不是拍脑袋的。他用了过去两年的新闻数据做回测,发现百分之七十这个阈值下,文本信号的准确率接近百分之八十五,召回率在百分之六十左右。保守但有效——这正是他想要的。
傍晚的时候陈铭发来了一条微信:林总,您周末在用FinGpt ApI跑什么?后台监测到一个人一直在调文本理解接口,每秒十几条——差点触发限流了。
林晨回:接投资系统。给系统做了一层文本信号过滤。回测效果不错。
陈铭发了一串省略号。您周末的爱好是写量化系统?
林晨回了个习惯了,然后继续调参。
晚上九点,他终于跑完了全量回测。新版系统对比旧版,在最近六个月的市场数据上,夏普比率从一点一提升到了一点四,最大回撤从百分之十五降到了百分之十一。不算惊艳——但稳定。而稳定是投资系统最重要的品质。
他在回测报告末尾写了一行注释:
# v4.0 - 融合FinGpt文本理解层。不是让AI取代策略——是让策略在出手之前先学会。
第257章 收益提升
十一月底,新版投资系统上线实盘运行的第三周。
林晨每天早上起来第一件事不是看手机微信,而是打开笔记本看策略引擎的夜间运行日志。他设了凌晨两点自动跑批——A股收盘之后系统把当天的交易数据回传,跟文本信号层的新闻分析结果交叉验证,生成一份当日信号质量报告。
过去三周的信号准确率曲线图在屏幕上缓缓展开。第一周——准确率百分之六十三,低于预期。问题出在FinGpt对某些行业术语的理解偏差上——比如并购重组获受理并购重组获批之间的区别,一个是刚进排队、一个是基本定了,市场影响完全不同。模型的文本理解没有分辨出这两个表述的差异。
他花了整整一个周末修复这个问题。不是改模型的参数——是在数据清洗环节加了一层金融术语的细粒度标注。让标注人员把提交注册这类流程节点精确标注出来,然后重新微调FinGpt对金融事件文本的理解。
第二周——准确率升到了百分之七十一。第三周——百分之七十六。接近他在回测中看到的水平了。
实盘账户的数据更直观。新版系统上线的这二十天里,账户从九十七万涨到了约一百零八万。不到一个月增长了百分之十一。而同期沪深三百指数只涨了不到百分之二。
不是因为运气好——是因为系统做了三笔精准的操作。
第一笔:十一月中旬,一条关于进口芯片材料关税调整的新闻刚发布十几分钟,FinGpt就识别出这个政策变化对某半导体材料进口商的负面影响,文本信号层的置信度高达百分之八十二。系统自动把该标的的仓位从满仓减到了三成仓。两天后该股跌了百分之七——系统少亏了大概两万三。
第二笔:某医药公司发了三季度财报——表面上净利润增长了百分之十五,但FinGpt在读完整份财报之后提取了一个隐藏信号:扣非净利润下降了百分之八,增长全靠一次性的资产处置。系统判定这份看起来很漂亮的财报实际上是一颗雷,直接把所有仓位清掉了。三天后该股跌了百分之九——系统避免了约三万块的损失。
第三笔:十一月下旬,央行发布了一份货币政策执行报告。FinGpt从报告中提取出了保持流动性合理充裕推动企业综合融资成本稳中有降两个关键表述,判断短期银行间市场利率有下行空间。系统随即在债券EtF上加仓——三天后长端利率确实下行了十个基点,债券持仓赚了两万多。
这三笔操作的成功率不是巧合。核心逻辑很简单——信息从发布到被市场充分消化之间有一段真空期。大部分投资者看到政策新闻要花几小时甚至几天才能理解其含义。但程序不会——它读到新闻的瞬间就完成了分析和应对,比人类的平均反应时间快了不止一个数量级。
这就是的价值。不是算法预测未来——是在信息不对称的窗口期内,用比别人快一万倍的速度抓住信息,然后安静地等在所有人都还没反应过来的地方。
十二月初,张雨在周会上展示了FinGpt v3的最新训练结果。金融基准测试的准确率已经推到了百分之八十四点六——比v2的百分之七十八提升了一大截。数据集的四个短板任务全部补齐了——保险、期货、外汇和支付场景的训练数据翻了一倍,效果显着提升。
再有一轮RLhF,应该能推到百分之八十六以上。张雨说。
林晨看着评测报告,脑子里想的却是另一件事。FinGpt v3的准确率提升不只是模型本身的进步——它意味着接在投资系统里的文本信号层的可靠性也会同步提升。一个准确率百分之八十五的文本理解模型,意味着系统的阅读能力从高中生水平提升到了大学生水平。
会后他更新了笔记本上的一条记录:
十一月:投资账户从九十七万到一百零八万。月收益百分之十一。主要驱动力——文本信号层的三笔关键操作避免了约五万损失并赚到了两万多超额收益。不是系统变得更聪明了——是系统终于学会了在买股票之前先看看新闻
第258章 税务规划
十二月中旬,林晨收到了t厂发来的年度薪资统计邮件——这是他升任副总监后的第一整年。年薪一百四十万出头,年包中奖金的部分扣税是按最高档走的。个税系统自动扣缴,他平时不怎么关注银行卡上的数字变化,直到周末他整理年度财务数据做复盘的时候,在个税App上看到了一个让他沉默了好几秒的数字。
苏婉正在客厅备课,听到书房里突然安静了——没有键盘声,没有翻页声。怎么了?
没事。就是在看纳税记录。林晨盯着屏幕上的累计扣税额。不是小数目。
他以前不怎么在意税的问题——打工的时候工资不高,税也没多少。投资系统的收益在账户里滚动,只要不卖出就不用交税。但今年不一样——工资从七万八涨到八万八,年包一百四十万出头,个税的最高档直接跳到了百分之四十五。
不是抱怨纳税——纳税说明收入高,这是好事。但收入到这个量级之后,合理合法的税务规划就不再是可选项了。就像一个程序从单线程跑到了多线程,必须加一层调度机制——否则cpU资源会浪费在无效的上下文切换上。
他打开浏览器搜了一下个人税务筹划,出来一堆广告——专业避税帮你省百分之五十的税。他全部关掉了。在t厂的技术文化里,所有标题里有帮你省xx%的东西都要先打个问号。
他换了个思路——打开知乎搜大厂高p税务规划经验。翻到了一个匿名的回答,写得挺实在:
不要相信任何避税方案。个税合法优化的空间非常有限——主要是两块:一是每年的专项附加扣除(房贷利息、子女教育、赡养老人这三项尽量填全),二是可以考虑通过成立个人独资企业或工作室把部分劳务收入转到经营所得,但这个方式近两年的监管越来越严,没有实际业务支撑纯粹为了避税的操作风险极高。
林晨把这条回答仔细看了两遍,然后在笔记本上写了几个要点。
房贷利息扣除:鹏城湾月供五万七,符合住房贷款利息专项附加扣除条件——每年可抵扣一万二。
子女教育扣除:乐乐在鹏城实验小学,符合子女教育专项附加扣除条件——每年可抵扣一万二。
赡养老人:父母均超过六十岁——每年可抵扣两万四。
这三项加在一起,每年能抵扣四万八。虽然跟他的年收入比起来不多,但这是零成本的合法节税。不省白不省。
但光靠专项附加扣除是不够的。他需要一个更系统的方案。
周一下班后,林晨去见了一个人。周律师——是陈博士推荐给他的。周律师四十多岁,专做高净值人群的个人财富规划,办公室在福田一栋不是很起眼的商务楼里。没有金碧辉煌的装修,桌上没有水晶摆件——只有一台笔记本电脑和一叠文件夹。她看起来不像搞财富管理的,更像搞工程设计的。
林总的情况不复杂。周律师翻完他带来的材料后给出结论,年薪一百四十万加投资收益,在鹏城不算特别高的净值,但增速很快。目前最优先的事情不是节税——是先把税务合规的基础设施搭好。
什么意思?
就是从现在开始养成习惯——收入分类记账、投资盈亏单独核算、保留完整的交易记录。很多人都是等挣到一定阶段才想起来税务的事,结果发现之前好几年的账理不清。你现在一百万的量级开始做这件事,比等到了五百万再做容易一百倍。
林晨点头。
具体操作上,三件事。周律师列了一张纸,第一,专项附加扣除全部填上——这个你应该已经知道了。第二,投资账户里不同品种的收益要分开记录——股票分红、基金收益、期货平仓盈亏,税务处理都不一样。第三,如果你未来有出书的版税收入或者做培训的劳务收入,考虑成立一个个人工作室——不是为了避税,是为了把这些偶然性收入的税务处理正规化。
工作室税率比工资低?
经营所得税率在三十万以下档位确实比工资个税低——但前提是你有实际经营内容和支出票据。如果只是为了开工作室转工资,税务局一眼就能看出来。
所以关键是有实际经营
走出周律师的办公室,林晨在手机上写了一条备忘:
税务:12月底前填齐全年的专项附加扣除。1月初把投资交易记录归整完毕——按品种分。版税和培训收入如果达到一定量级,考虑开工作室走经营所得。
晚上,他在笔记本上写了一个新的板块标题:财富管理——从零开始的系统。下面分成四格:
第一格:稳定收入的税务合规(正在进行)
第二格:投资收益的记录与分类(1月完成)
第三格:资产配置(待系统学习)
第四格:长期传承规划(待研究)
写完他看了一眼窗外的海。从三年前写下1.找到工作,2.学AI,3.还月供到现在,他的计划表从变成了。不是变得贪心了——是终于有了余裕去思考那些以前来不及想的事。
第259章 理财意识
十二月的最后一周,林晨做了一件他三年没做过的事——走进了一家书店。
不是那种商场里的连锁书店——是福田图书馆旁边的一家老书店,一楼卖新书,二楼收旧书。店里有一股旧纸和油墨混合的味道,书架之间的通道很窄,两个人并排走都要侧身。
他不是来买技术书的。是来找理财相关的书。
在t厂技术人的圈子里,聊投资的很多——但大部分是聊哪只股票会涨下个月的行情怎么看。几乎没有人系统地聊过构建一整套财富体系这件事。大家把投资当成了打游戏——盯着K线做短线,赚了高兴亏了骂娘,账户的数字上上下下但没有人想过整体框架的问题。
林晨以前也是这样的。三十五岁开始做投资系统的时候,他脑子里只有一件事:选股、择时、赚钱。什么资产配置、风险管理、税务规划——这些词在他的词典里不存在。他用技术能力把择时做到了极致,但这只是在这个维度上的优化。
过去几个月的变化让他意识到一件事:赚钱只是第一层。赚到的钱放在哪里、怎么保护、怎么让它长期地、稳定地在不同的经济环境中持续增值、怎么把它安全地传给下一代——这些才是财富管理的全貌。
从书店出来,他手里拎了六本书。不是那种封面花哨的炒股秘籍,是两本关于资产配置的经典、一本关于中国税制的实操手册、一本关于家族财富传承的案例分析、两本关于宏观经济与投资周期的书。每一本都很厚,翻开全是数据和图表。他喜欢这种风格——逻辑清晰,论证严谨,不需要文采。
元旦假期三天,林晨除了陪苏婉和乐乐去了一趟鹏城湾公园之外,剩余的时间全部坐在书房里啃这些书。
他看书的方式跟读论文一样——先用荧光笔画出核心结论,然后在旁边用铅笔记下自己的理解和疑问,最后把所有要点整理到obsidian里形成自己的知识框架。
第一天读完资产配置那本书之后,他在笔记里画了一张饼图。把他的所有资产放在饼图里看了一遍:
房地产:鹏城湾188平,购入价1740万,目前贷款余额约1190万。首付522万加上这一年多已还的本金约28万,净值约550万。占家庭总资产超过百分之八十。
问题在这里。他盯着饼图自言自语。超过百分之八十的资产集中在一套房子上。虽然鹏城的房价相对坚挺,但这不是资产配置——是押注单一标的。任何一个理性投资者都不会在股票账户里用百分之八十的资金买一只股票,但在房产上大家却觉得很正常。
第二天读完宏观经济那本书之后,他又发现了第二个问题。他的投资账户目前几乎全是人民币资产——A股、国内基金、国内期货。美元、港币、海外资产配比为零。这意味着人民币汇率的波动直接影响了他全部金融资产的购买力。
第三天他写了一份完整的资产配置改进计划:
1. 逐步将投资账户中百分之二十到百分之三十的资金配置到海外资产——美股EtF、港股高股息标的、黄金。不是为了博取高收益,是为了对冲人民币汇率风险。
投资账户内部进一步分散——目前A股占比过重,增加债券EtF、REIts、可转债的配置到百分之三十以上。
降低房产在总资产中的集中度——不是卖房,是未来新增资产优先配置到金融资产而非房产。
保持百分之五到百分之十的现金或现金等价物——不是为了等抄底,是为了应对突发事件。三年前失业的经历告诉他,没有流动性的资产在危机面前一文不值。
元旦晚上的饭桌上,他跟苏婉说了这个计划。苏婉听完之后放下筷子。
你说要拿一部分钱去买美股和黄金?
对。大概二十到三十万的比例。不是一次买进去——分批,用半年时间建完仓。
我信你的判断。苏婉说这四个字的时候语气很平淡,但林晨知道这四个字的分量。三年前他拿着五万块进股市的时候苏婉也说了这四个字——那时候账户里每一个百分点的波动都让她半夜睡不着。现在他要把几十万分散到跨境资产,她还是这四个字。
因为三年的时间证明了他的选择是对的。信任不需要每年重新审批。
晚上他在笔记里更新了财富管理四格框架的第二格和第三格:
第一格:税务合规 ?(专项附加扣除已填好)
第二格:资产配置 ← 今天完成规划。接下来六个月是执行期
第三格:知识体系 ← 六本书正在啃,这是长期积累的事
他合上笔记,看着窗外鹏城湾的夜色。远处的航标灯还在闪。方向对了,继续走——但这一次他知道不能把所有鸡蛋放在一个篮子里。
第260章 家族信托
一月中旬,鹏城迎来了一年中最冷的一周。气温降到十度以下,海风夹着冷意从阳台灌进来,林晨每天早上起来都要把客厅的推拉门关严实。苏婉把家里所有的厚被子都翻了出来,乐乐裹着棉被在沙发上看动画片,只露一张圆脸在外面。
书房里的林晨正在看一份材料——周律师上周发来的关于家族信托的介绍文档。他翻开第一页就看到一句话:
家族信托不是理财产品——是一个法律架构。它的核心功能不是,是和定向传承
林晨对这个词有天然的亲近感。他写代码十几年,对架构的理解很具体——设计一个系统的骨架,让数据流在正确的时间经过正确的节点到达正确的目的地。家族信托本质上也是架构——资产流动的架构,只不过流的是资金,节点是法律主体,路径是继承和分配规则。
他继续往下读。
家族信托最基本的操作模式是:委托人把部分资产的所有权转移给信托——由信托公司作为受托人进行管理——信托按照委托人设定的分配规则在指定的时间把资产分配给指定的受益人。资产一旦进入信托,法律上的所有权就不再属于委托人个人了——这意味着委托人的个人债务、婚姻变动、继承纠纷都不会波及信托资产。
所有权的转移是核心。很多人对财富管理的第一反应是怎么赚更多,但实际上到了一定量级之后,怎么保护好已经赚到的怎么赚更多更紧迫。就像一个程序的瓶颈从cpU跑得快不快变成了内存有没有泄漏——赚到了钱,下一步是确保它不被各种风险侵蚀。
风险来源有哪些?林晨在笔记上画了一张简表:
婚姻风险——离婚导致的财产分割。债务风险——经营失败或意外产生的连带债务。继承风险——没有遗嘱导致的遗产分配纠纷。税务风险——遗产税政策落地的预期带来的不确定性。
他一条一条看过去,发现这些风险有一个共同特征:都不是投资决策能规避的。投资能对抗市场波动,但对抗不了法律和制度的风险。对抗这些风险唯一的方法是用法律架构——信托、保险、遗嘱认证——把自己和家人的权益提前写进一个不容易被撕毁的框架里。
他拿起手机给周律师发了条消息:家族信托的设立门槛大概多少?对资产规模有什么最低要求?
周律师过了几分钟回了一条语音:国内家族信托的设立门槛一般一千万起——但实操中如果信托财产规模小的话,设立和每年维护的管理费成本相对就显得很高。你现在总资产大概在六百多万——还不包括按揭——目前直接做家族信托性价比不高。
那现阶段的建议是什么?
做三件事。第一,立一份遗嘱。听起来不太吉利,但这是所有财富传承规划的地基——比信托还基础。你名下有一套鹏城湾的房产、有投资账户、有t厂的期权和社保权益,如果万一出了什么事没有遗嘱,这些资产的继承全部要按继承法的默认顺位来分配——过程很长,手续很麻烦,而且你没法控制分配比例。
第二,给自己和妻子配置足额的人寿保险。不是为了投资回报——保险的投资回报率从来都不是最优的。是为了当家里的经济支柱万一倒下的时候,对方和孩子的生活质量不塌。
第三,给你的儿子开一个独立账户,每年把一部分投资收益转到里面——这是你作为父母给孩子的定向赠与,未来做信托的时候这部分资产的来源更清晰。
林晨把这三条建议记在了笔记本上。他在第三条上画了一个圈。
晚上吃饭的时候,他在饭桌上提了一件事——语气很随意,就像在讨论明天要不要吃鱼。
婉儿,我们这周六去找个公证处,把遗嘱立了。
苏婉夹菜的筷子停在半空几秒。你说什么?
遗嘱。不是有什么问题——是我在整理财富传承的事情。立遗嘱是地基。你也要立一份。咱们各自把份额写清楚——如果万一有什么情况,乐乐的教育费用和成长过程中需要的钱不会因为继承程序卡着拿不出来。
林晨,你才三十八。
三十八也可以提前规划。代码的容灾系统都是在系统正常运行时建的——不是在它崩溃之后。
苏婉看了他一会儿,然后夹了一筷子菜放到乐乐碗里。周六我去。但是你要跟我保证你不是因为身体出了什么问题才突然想起来做这些。
保证。体检报告上周刚拿回来——所有指标正常。立遗嘱跟身体无关,跟思维方式有关。程序员喜欢做容灾备份。
苏婉没再追问了。她了解林晨——他能坐在书房里花三天时间画资产配置饼图,就说明他是认真地、系统地考虑过这件事。不是心血来潮。
晚上林晨在笔记本上更新了财富管理四格框架的最后一格:
第四格:长期传承规划。结论——目前总资产约六百五十万,直接做家族信托尚不成熟。现阶段:1.遗嘱 2.人寿保险 3.乐乐独立账户。目标——当净资产突破一千万时,启动家族信托正式设立。
他合上笔记本。
窗外,鹏城湾的夜色清冷而安静。海面上的灯光还是那些灯光——货轮、渔船、航标灯。但他看它们的眼光不一样了。以前他看的是怎么赚更多的钱来付得起更好的风景。现在他看的是怎么保护好已经有的东西让家人一直能看到这片海。
从赚钱到守财。从程序员到架构师。从为自己工作到为家族做长线布局。三十八岁这一年,他的思维方式完成了又一次升级。
第261章 侄儿的困境
腊月二十八,林晨开车回老家。
从鹏城往北,高速开了六个多小时。乐乐在后座看了一路的风景,看到路两旁的山从矮丘变成连绵的大山,兴奋地喊了好几次爸爸你看那座山!苏婉坐在副驾驶偶尔闭眼休息——放寒假以来她一直在赶公开课的教案,难得有机会什么都不想。
林晨握着方向盘,看着前方的公路在冬日薄雾中延伸。他已经两年没回老家过年了——去年是因为刚装修完搬家,前年是因为刚入职t厂走不开。今年无论如何要回来。
车子拐进县城的时候天已经黑了。路灯是新换的LEd,比两年亮了很多。街边多了好几家新开的店铺——一家奶茶店、一家手机维修店、还有一家挂着鲜红招牌的火锅店。县城在变,但变得很慢,像是一个不太着急的人在散步。
老家的院子还是老样子。父亲林建国站在院门口等他们,身上还是那件灰色夹克,背挺得笔直。母亲从厨房里迎出来,围裙还没解,手上沾着面粉——她在包饺子。
到了到了!母亲的声音隔着半个院子就飞过来了。她把林晨从上到下看了一遍,又看苏婉,最后蹲下来一把抱住乐乐。长这么高了!上次见你才到我腰,现在到我胸口了!
奶奶,我七岁了!乐乐挺着胸膛说,我今年上小学了!重点小学!
好!好!母亲笑着把乐乐拉进屋里。院子里还贴着去年的春联,红色褪成了浅粉,纸边被风吹得卷了起来。
晚饭桌上坐了六个人——父母,林晨一家三口,还有堂兄林枫。林枫比林晨大六岁,在鹏城做建筑相关的工作,这次也带着一家子回来过年。他比上次见面瘦了一些,脸上多了几道晒出来的皱纹——工地上风吹日晒的痕迹。
林枫哥,林浩呢?林晨发现缺了一个人。林浩是林枫的独子,今年应该二十三了。
在东莞。林枫夹了一筷子菜,语气很平淡,去年又回电子厂了,做手机壳的。说今年过年不回来——厂里加班三倍工资。
又回电子厂了?林晨放下筷子,他不是去培训学校学厨师了吗?
学了。林枫叹了口气,学了三个月,拿了个初级证。出来找馆子——人家嫌他没经验,只肯给洗碗的活儿,工资还不到三千。干了两个月他觉得没意思,又回厂里去了。
母亲放下筷子,这孩子怎么回事?学了厨师又回去打螺丝?
妈您别急。林枫说,那培训学校教的东西太浅了——切切菜翻翻锅,三个月出来根本不上手。他也想找个正经馆子跟师傅学,但人家不要初级证的,要中级以上的。他在东莞找了一圈没找到,只能先回厂里挣口饭吃。
林晨没有说话。他心里很清楚——培训学校那套东西他见过太多了。三个月速成班,教的是皮毛,出来的学员连灶台的门槛都够不着。林浩拿着一个初级证去找工作,跟没学过几乎没有区别。他自己的投资系统里分析过餐饮行业的数据——一个初级厨师在普通餐馆的月薪三千到五千,而且几乎没有上升空间。真正能上灶炒菜、有发展前景的起点是中级厨师证。
他见过太多这样的数据。但他更心疼的是自己的侄儿——学了厨师却还是回到流水线上,比没学过更让人心堵。
晚上,林晨跟苏婉躺在老家的客房里。天花板上的顶灯是老式的吸顶灯,灯罩里积了一些灰,光线透过灰尘变成一种柔和的暖黄色。
林枫哥是不是挺自责的?苏婉轻声问。
不是自责——是不知道怎么帮。他自己也只能在工地上搬砖,给不了林浩更好的路。林晨看着天花板上那盏旧灯,二十三岁拿着个初级厨师证在东莞找不着活,又回到流水线上打螺丝。这孩子明明有天赋——培训学校的刀工比赛还拿了第二名。就是缺一个正规的、能学到真本事的平台。
你想帮他?
林晨没有回答。但他的脑子里已经在转着这个念头——帮林浩找到一个真正能走下去的路。不是施舍钱,是帮他自己走出一条路。上次的培训学校不够,这次得来真的。
第二天下午,林晨在院子里晒太阳的时候,听到母亲和林枫的对话。林枫的声音很低但林晨还是听到了几句:……林浩打电话说不想干了。厂里把加班费砍了一半,一个月拿到手才四千出头。他说想回来,但回来也找不到事做……
林晨从椅子上站起来,走进屋里。哥,林浩的电话多少?
你要他电话干嘛?
我跟他聊聊。
林枫犹豫了一下,把号码给了林晨。
晚上九点,林晨拨通了林浩的电话。响了五六声才接。
电话那头是嘈杂的机器声和一种空洞的回声——应该是在宿舍走廊之类的地方。
林浩,我是林晨。你小叔。
小叔?林浩的声音听起来有些意外,您怎么想起给我打电话了?
听说你在东莞。过年也不回来——怎么样了那边?
还……还行吧。林浩的这句话拖了很长,像是先在脑子里删掉了几个版本的回复才选了这几个字。厂子还行。就是最近加班的活儿少了,工资少了一些。
一个月多少?
电话那头沉默了一会儿。上个月四千二。扣掉住宿费和伙食费,剩三千五。
三千五。在东莞。一个月三十天,每天十小时。折成时薪不到十二块。
林浩,你上次在培训学校学厨师,后来怎么没继续?
电话那头沉默了更久。小叔……那个培训学校太浅了。三个月出来拿了个初级证,去馆子找工作人家嫌我没经验,只让洗碗。干了两个月工资才两千八,还不如回厂里。我也想过考中级证,但中级证得去正规厨师学校脱产学三四个月,学费好几万……我哪有那个钱。
你愿不愿意来鹏城?不是来玩——是来正经学厨师。林晨的语气很平静,我给你找一所正规的厨师学校,脱产学三个月,考中级厨师证。学费我来出。
小叔,我……林浩的话卡在喉咙里。
车票我给你买。或者你打顺风车过来,我给你报销。就是认真学一门手艺。你二十三岁,路还长。
电话里安静了大概有十秒,然后林浩的声音再次传过来,这次比刚才少了很多遮掩。小叔——我想学。真的想学。培训学校那三个月我刀工比赛还拿了第二名,老师说我有天赋。但就是没钱没门路,才又回了厂里。
来鹏城。这次不走弯路了。
挂了电话,林晨站在院子里。腊月的夜风很冷,空气里有远处燃放烟花爆竹的硫磺味。他抬头看着老家头顶的星空——没有鹏城的光污染,银河隐隐约约地横在天上。
二十三岁。高中毕业。培训学校学了三个月又回到流水线上。没有中级证,没有方向,但有天赋——刀工比赛第二名不是随便拿的。他缺的不是能力,是一个正规的起点和一段不被焦虑打断的时间。
如果他能在二十三岁拿到中级厨师证,进正式的餐厅从案板做起,他的人生轨迹会跟现在完全不同。不是流水线上的重复——是灶台上的创造。
林晨回到屋里,打开笔记本写了一行:
林浩。二十三岁,东莞电子厂,月薪三千五。培训学校初级证,刀工天赋,但缺平台和正规训练。跟我三十五岁被裁的时候一样迷茫——但比我早了十二年,而且他有一双能做出好菜的手。这十二年加上这双手,可以改变一切。
第262章 深夜谈心
正月十一,林浩坐上了从东莞到鹏城的火车。
动车两个半小时的车程,他只带了一个洗得发白的旧双肩包——里面塞了两件换洗t恤、一条牛仔裤,还有充电器和半包已经压碎了的饼干。他没有行李箱,因为宿舍里的东西不值得带——那些东西都属于电子厂的流水线,不属于他。
林晨在鹏城北站接他。站台上人流不多,他一眼就认出了林浩——二十三岁的年轻人穿着一件深蓝色的工装外套,肩膀很宽但背微微驼,脸上的皮肤被厂房里的日光灯长期照得偏白。工厂里的太阳是LEd灯管,不是鹏城湾上空那颗。
小叔。林浩走到他面前,声音有点怯。
来了。林晨接过他的双肩包。先回家吃饭。
林浩坐在林晨那辆深灰色SUV的副驾驶上,一路上很少说话。车窗外的鹏城在他眼前展开——高架桥、商务区、海滨公园、cbd的玻璃幕墙反射着正月微温的阳光。这些跟他在电子厂车间里看到的一切是完全不同的维度。
车子停进鹏城湾地下车库。林浩跟在林晨后面走进电梯的时候,一直看着电梯里的数字往上涨——15楼。叮的一声,门开了。
苏婉在1501门口等着。林浩来了?快进来!路上累了吧?先洗手,马上吃饭。
林浩走进客厅的那一步,动作跟他奶奶一模一样——一只脚先跨进去,停了半秒,再跨另一只。他站在客厅中央,看着那面望海的落地窗和深灰色长沙发,嘴张了张没有说话。188平的大平层,比他电子厂的整层员工宿舍加起来还要大。
小叔……这是你的房子?
我的。也是你婶婶的。林晨把林浩的背包放在沙发边上,那间是客房——之前爷爷奶奶来住过。你住那间。
林浩走到走廊里,探头看了一眼客房的床和衣柜,然后退回来。他的眼眶有点发红,但很快用袖子擦了一下——这个动作被他藏在转头的动作里,没让任何人看到。
晚饭是苏婉做的——六菜一汤。清蒸鲈鱼、糖醋排骨、白灼菜心、一盘蒜蓉花蛤、一份卤鸡爪、还有一碗紫菜蛋花汤。桌上一盘叠一盘,这是苏婉招待客人的最高规格。
林浩端碗的时候手有点抖。婶婶,您不用做这么多菜……
苏婉往他碗里夹了一块最大的排骨。在电子厂吃食堂能有什么好东西。多吃点。
林浩低头扒饭,吃得很快——但每吃一口都要停下来嚼很久。这是他这辈子吃过的最好的一顿饭。
饭后,乐乐拉着林浩的手去看他养在乌龟缸里的慢慢。浩哥哥你看!这是慢慢!它每天除了爬石头就是发呆!
它挺可爱的。林浩蹲在缸前,看着那只缩在石头上的小乌龟,脸上露出了一丝放松的表情。
浩哥哥,你以前是做什么的?
我……在电子厂做手机壳。
做手机壳是什么意思?你在做我妈妈用的那个手机壳吗?乐乐拿起了苏婉的手机——是一个普通的硅胶保护壳。
差不多。林浩说。他没有解释那是流水线上的手机壳——一天两千个,每个一样,不需要思考,手比机器便宜。
晚上十点,乐乐睡了,苏婉在沙发上看书。林晨把林浩叫到了阳台上。
鹏城湾的冬夜不冷。海面上没有雾,远处的货轮和近处的渔船各有各的灯光色温,在水面上铺成一层明暗交错的光带。阳台上的两把藤编躺椅——父母来时坐过的——林晨让林浩坐了一把。
林浩,跟我说实话。你想要什么?
林浩坐在躺椅上,身体前倾,两只手肘撑在膝盖上,眼睛看着脚下的木地板缝。我不知道,小叔。我只知道我不想再这样了。他的声音很低,像是第一次对另一个人说这句话。每天七点起床,七点半到车间流水线,一样的动作做到晚上八点。中间吃一顿饭。每个月工资卡上多四千块——扣掉吃住剩三千五。五年。一模一样。
你的想法是?
我想过回来。但我不知道回来能做什么。县里要么开小店,要么去工地。都不比电子厂好多少。我想过学技术——但我不知道学什么。学修车?学电工?学电脑?每个都觉得还行,但每个都不确定。
那你对什么有兴趣?林晨问的不是你擅长什么——在一个没机会尝试任何东西的环境中,兴趣比擅长更重要。
林浩想了想。我喜欢——吃东西。他说完自己都有点不好意思,不是那种嘴馋。是喜欢吃到好吃的东西的时候那个感觉。以前厂里食堂的菜全是水煮的,有一次工友带我从后门溜出去,在镇上一家小馆子吃了一个辣椒炒肉——那个味道我到现在还记得。
林晨没有笑。他听得很认真。
除了吃——你做过饭吗?
做饭算吗?林浩终于抬头看着林晨,我从十岁开始在家做饭。爸妈都在外面干活,爷爷奶奶牙口不好,家里的饭基本上都是我做的。过年的时候一家人的团聚饭也是我做——十几个菜,我自己从早忙到晚。
你觉得做菜难吗?
不难。就是费时间。但做菜的时候——林浩顿了一下,在找一个词来形容,心里踏实。切菜就是切菜,炒菜就是炒菜。不用想别的。
林晨看着林浩。二十三岁的年轻人坐在这把藤编躺椅上,说出心里踏实四个字的时候,他整个人比前面所有对话都松弛——肩膀放下了,背也不驼了,手指不再绞在一起。
林浩。林晨把椅子转过来正对着他。你有没有想过——把做饭变成职业?不是路边摊那种,是正规厨师。
我……林浩张了张嘴,我高中毕业。厨师不得要更高学历吗?
厨师不看学历。看刀功、火候和味觉。
那我能行?
林晨的回答没有任何犹豫。你刚才说做菜的时候心里踏实——这是最重要的。剩下的都是学得会的东西。
海风吹过来,带一点微凉的咸味。阳台上的灯带在玻璃栏杆上映着一条柔和的暖光。林浩坐在躺椅上沉默了很久,然后说了一句话:小叔——我想试试。
林晨点了点头。
当晚,他在笔记本上写了:
林浩:二十三岁,高中毕业,电子厂流水线五年。核心信息——他从十岁开始给全家做饭,做菜让他心里踏实。这是方向。剩下的路我来给他铺。
第263章 指路人
林浩在林晨家住到第三天的时候,情绪开始出现了细微的变化。第一天是拘谨和感激——吃饭的时候端碗的姿势很正式,筷子从不在盘子里多翻一下,吃完立刻站起来要洗碗,被苏婉按着肩膀推回了沙发上。第二天他放松了一些,开始跟乐乐有说有笑,在乌龟缸前蹲了半小时看慢慢爬石头。
但到第三天,林晨注意到林浩开始沉默了。他坐在沙发上看手机的时候,手指不是在刷朋友圈——是在反复划着同一个页面:应该是招聘网站。他的眼神里有那种在找路但不知道往哪走的空洞。
晚饭后,林晨把林浩叫到了书房里。不是阳台上——阳台适合谈心,书房适合谈事。
林浩,你想过自己适合做什么吗?林晨坐在人体工学椅上,面对着林浩——林浩坐在旁边那把从客厅搬过来的木椅上。
想了好几天了,小叔。我想不清楚。林浩的手搁在膝盖上,指节绞在一起,我只有高中文凭。考驾照开货车——我不会认路,导航都救不了。学修车——我动手可以,但电子件越来越多,我不懂电路。学电脑——我连打字都是在手机上学的手写输入。
那你觉得自己最大的强项是什么。不用想别人怎么看——就是你自己觉得做起来不费劲的事。
林浩想了大概半分钟。
做饭。他的声音比之前都笃定,从十岁开始给家里做饭,做十几年了。不管多累,进了厨房切菜的时候,脑子就安静了。
林晨把椅子转过来正对着他。好。那我问你——你有没有想过把做饭变成职业?
想过。但小叔,当厨师不都得去专门的学校吗?我高中毕业又没考上大学,这种正规学校能要我吗?
听说。餐饮行业是极少数的完全靠手艺说话的行当——没有人在试菜的时候问你是哪个学校毕业的,他们只看你炒出来的东西好不好吃。刀功、火候、调味、摆盘——这四样东西跟学历没有半毛钱关系。
林浩的眼睛亮了一下,但马上又暗了。那我怎么学?跟谁学?
两条路。林晨在桌上摊开了一张空白的便签纸,第一条路——找家餐馆从最基层的洗碗工做起,慢慢往厨房里面挪。干两年也许能升到打荷,再两年升到案板,再干几年有可能摸到炒锅。这条路不需要什么投入,但慢——而且能不能学到真东西全看老板和大厨愿不愿意教你。
第二条路——正经报一个厨师学校,脱产学三到六个月。学费两三万。毕业拿中级厨师证。然后出来直接进正式的餐厅——从案板或者打荷做起,但已经有了受过系统训练的基础,成长速度比野路子快很多。
学费……林浩低下了头。两万三的学费对于月薪三千五的人来说,是半年的全部工资。
学费我出。林晨的语气像是在说一件很小的事,但不是白给的——是你欠自己的。你学成了之后,这笔投资用你未来的收入来还。不是还我钱——是还你二十三岁这一年给了自己一个改变的机会。
林浩的手指攥着膝盖上的裤子布料,指节发白。他沉默了很久——可能有将近一分钟。
小叔——我真的行吗?我没读过什么书,字写得也丑,我怕我去了也学不会——
林浩。林晨打断了他。不是严厉的语气——是很平静的陈述,三年前我三十五岁被裁的时候,连python的print都不会写。我用了三年学到了现在的位置。你今年二十三岁——比我整整早了十二年。如果你二十三岁开始学一门手艺,到了三十五岁你已经是有十二年经验的老手艺人。不是流水线上的十二年——是真本事上的十二年。
林浩的眼眶红了。他没有哭出来——但他低着头沉默了好一会儿,然后深吸了一口气,抬起了头。
小叔,我想走第二条路。
确定?
确定。
林晨点了点头。他拿过那张便签纸,在上面写了几个字:鹏城,正规厨师学校,中级厨师证。
然后把便签纸推给了林浩。
这是你的第一个目标。接下来的事——我帮你找学校,你专心准备开学。
林浩接过那张便签纸的时候,手指还在微抖。但这一次不是因为害怕。是因为二十三岁那年,他终于找到了一个方向——一个具体的、真实可及的、可以靠自己的手去实现的方向。
晚上他把那张便签纸叠成四折,塞进了工装外套的内袋里——那是他平时装工资条的口袋。从那天起,那个口袋里不再只是装了三千五百块的数字,而是装了他未来十几年要走的路。
第264章 厨师的建议
正月十五,元宵节。
苏婉煮了一锅汤圆——黑芝麻馅和花生馅各半。乐乐端着自己的小碗坐在沙发上数她一共吃了几个白胖子,数到六个的时候被苏婉拦住了:再吃要闹肚子了。
林晨在阳台上给老家的父母打了一个电话,说了声元宵快乐。母亲在电话那头絮叨了一堆家常——隔壁家谁谁儿子结婚了,村东头谁家老人过世了,县里今年要搞什么新规划。林晨一件一件地听着,偶尔或知道了。
挂电话前母亲补了一句:林枫说你去找林浩了。那孩子怎么样了?
在我家。挺好的。
他那边工作——
我跟他商量了,让他去学门手艺。厨师。林晨说得很平静。
电话那一头沉默了几秒。然后母亲说了一句:你比他爸靠谱。
这句话让林晨心里咯噔了一下。不是因为感动——是因为他知道母亲说这句话的时候,是在把两份期待叠在了一起:一份是对她儿子的认可,一份是对她孙子的欣慰。
晚上,林晨在书房里继续跟林浩聊。这次聊的不是要不要学——聊的是为什么选厨师。
林浩,你知道中国餐饮行业有多少从业人员吗?
不知道。
大概两千多万人。林晨调出了一组数据——是他前几天专门查的,这还只是正规登记在册的。加上那些夫妻店、路边摊,真实数字更大。你知道这两千多万里缺什么吗?
人太多了,啥都不缺。
不。缺好厨师林晨把笔记本屏幕转过来对着林浩,一个刚入行的普通厨师月薪大概六千到八千。一个有中级职称的厨师一万到一万五。一个在五星级酒店或高端餐厅做主厨的——两万到四五万。一个有名气的、能在全国范围内出菜的厨师——不封顶。而且厨师是少数完全不怕AI取代的职业——AI写得了代码写不了辣椒炒肉的火候。
林浩盯着屏幕上的薪资数字,嘴唇动了一下却没开口。他以前只知道——在电子厂里三千五就是三千五,不会有任何人因为技术好而给他加薪。但厨师不一样——同一个厨房里,学徒和主厨之间的薪资差距可以是十倍以上。这意味着只要技术真的好,是有上升通道的。
但是小叔——他想了想又说,我听说厨师很苦。每天在灶台前站十几个小时,夏天厨房里四十多度。
苦是真的。但电子厂难道不苦?厂里流水线也站十几个小时——而且是重复一个动作。至少厨师是在创造东西——每道菜做好之后端出去被别人吃得很开心。那种感觉跟做完两千个手机壳不一样。
林浩想了很久。最后他说的不是,而是一句话:我想让那些吃我做的饭的人——跟那天我在镇上吃到那个辣椒炒肉的时候一样高兴。
林晨听完,没有接话。但他心里给林浩加了一分。不是为了讨好他说什么我想当名厨赚大钱,而是说自己想让吃饭的人感受到跟他当年一样的幸福感。
这是一个好厨师必须具备的心态。技术可以教——但这种对食物和食客的共情能力,教不了。
最后一个问题。林晨合上笔记本,你对什么菜系最感兴趣?
川菜。我在广东待了好几年了但口味还是改不过来——我做饭的时候放辣椒最顺手。而且川菜在深圳很受欢迎。
那就川菜。不用什么都会——把一样东西做到极致就够了。
林浩点了点头。他站起来的时候动作比前几天都利落——不像是在完成一个仪式,更像是在准备去干活。
林晨看着他的背影走出书房。二十三岁,高中毕业,在流水线上浪费了五年。但他有一项从十岁就开始了的核心技能——做菜。他需要的是正规的训练、正确的方向和一段不被焦虑打断的时间。
方向定了。川菜。下一步——找一所好学校。
第265章 鼓励与承诺
正月十七,林晨开车带林浩去看厨师学校。
他们去了三家。第一家在南山区,是某连锁品牌旗下的培训机构——装修很好,大厅里播放着轻音乐,墙上挂满了学员和名厨的合影。但林晨看了一圈之后发现一个问题:他们的课程设置太短——两个月速成,每天只上四个小时的实操课,剩下的时间全部是理论。这是培训业余爱好者的——不是培养职业厨师的。他对林浩说完就拉着人走了。
第二家在福田城中村附近,是一家老牌的职业技术学校。校舍很旧,走廊的水泥地被踩得发亮,空气里弥漫着食堂和清洁剂混在一起的味道。但实训厨房很大——十几口灶台一字排开,每个操作台配了单独的菜板和刀具架。学生上实操课的时候一人一个灶,不是几个人挤一口锅。校长姓黄,五十多岁,以前是鹏城某老字号酒楼的大厨,说话语速很快:我们这里不讲那么多理论,就是炒。三个月的课程,八百个实操学时。炒到会为止。毕业考试要过三关——刀功、火候、调味。
林晨问:你们的学生毕业之后好找工作吗?
只要你不是来混日子的,肯定有地方要。上个期毕业的二十个学员里十二个进了鹏城的正规餐厅——剩下的要么自己开店了要么回乡发展了。黄校长指了指墙上贴的一排就业去向表,但我们这里不包就业——我们是教本事,不是卖包票。
林晨点了点头。他不需要包就业——那种承诺通常是骗人的。他需要的是教本事。
第三家在宝安区,条件跟第二家差不多但规模更大——有专门的面点实训室和烧腊房。但课程周期更长——六个月,学费也贵一倍。
回去的车上,林晨问林浩:你选哪家?
第二家。林浩毫不犹豫,三个月,八百个实操学时。黄校长说话不绕弯子——我信他。
那就定了。
当天晚上,林晨给黄校长打了电话,交了报名费和学费——一共两万八千五。转账完成的时候短信提示音响起,林浩坐在沙发上听到那一声叮咚,手攥成了拳头又松开——这个声音代表着他未来三个月的路已经被铺好了。
挂完电话之后林晨走回客厅。林浩站在沙发旁边,手足无措地看着他。
小叔……这两万多块钱,我不知道什么时候才能还……
你听好。林晨走到他面前,声音不高但每个字都很笃实,我不是借你这两万多——是投资在你身上。你二十三岁,在流水线上干了五年,月薪三千五。如果没人拉你一把,五年后你可能还在另外一个流水线上拿三千八。
我给你的不是学费——是一张门票。这张门票让你进了一个有上升通道的行业。之后你能不能升上去看你自己——你的刀功、你的火候、你对每一道菜的用心程度。你学得好,将来一个月赚回这两万多块不费力气。学不好,再多钱也砸不出一个厨师。
林浩没有回答。但他走到林晨面前做了一个动作——
他鞠了一躬。不是那种九十度的、很正式的鞠躬——是把腰弯到了接近跟地面平行之后停了三秒钟,然后缓缓直起来。二十三岁的年轻人在流水线上被主管骂了五年从来没有鞠过任何一次躬,但今天他给小叔鞠了一个。
林晨拍了拍他的肩膀。行了,去收拾东西。下周一入学。
正月二十,林浩正式去厨师学校报到。那天林晨请了半天假,开车送他。
实训厨房在一楼,推开门是一股炒菜油和料酒混在一起的香气——很浓,但不是那种让人不舒服的油腻。十几口灶台整整齐齐地排列着,每口灶上面挂着铁锅和炒勺,灶台前面铺了防滑的胶垫。墙上钉着一排刀具架,各种宽窄的菜刀在日光灯下反射着干净的金属光泽。
林浩站在实训厨房门口,看着这些东西的样子,跟那天站在林晨家客厅里看海的表情完全不一样。那天他是局促的、紧张的、不自在的。今天他是安静的、专注的——眼睛慢慢扫过每一口灶台、每一把菜刀、每一个贴着名字标签的调料罐。
你好,你是新来的吧?一个穿着白色厨师服的学员从里面走出来。我叫阿伟——你先去换上工服,班主任马上来。
林浩领了工服——一身白色的厨师服、围裙、帽子。他去更衣室换好之后走出来,站在厨房门口照了一下走廊里的一面镜子。
二十三岁的他穿着白色的厨师服,比穿什么衣服都合身。
林晨站在旁边看到这个画面,想到了三年前自己去t厂面试的那天——穿着那件领口太紧的白衬衫,在电梯里对着镜子调整自己的表情。那个时候他也是在跨一道门槛——不知道门里面有什么,但知道跨进这道门之后,原来的日子就不会再回来了。
林浩即将面临的也一样。从流水线上重复五年的那个动作,到厨房里每天十几个小时的切菜、掂锅和调味——苦吗?比以前更苦。但以前的苦是下沉的、看不到头的;现在的苦是向上的、每一步都在往更好的地方走。
小叔——林浩在离开前回头说了两个字,谢谢。
林晨摆了摆手,转身上车。
开出学校门口之后,他打开手机备忘录,在那条记录下面加了一行字:
报名费+学费28,500元,正月二十入学。三个月后毕业。目标——中级厨师证。方向——川菜。
这不是施舍,这是投资。投资在一个二十三岁、跟我当年一样迷茫但比我当年早了十二年的年轻人身上。
他能行。
第266章 入学第一周
林浩入学后的第一周,林晨每天早上出门上班的时候能看到客房里灯已经亮了——林浩五点半起床,洗完脸刷完牙之后把客房收拾得整整齐齐,被子叠成豆腐块,然后坐早班公交去学校。他在电子厂养成的早起习惯在厨房里刚好用得上——厨师行业也是早起晚归。
晚上林晨下班回来的时候,林浩通常还没到家。厨师学校的实操课从早上八点上到晚上六点——中间只有半小时吃饭——比电子厂的流水线站得还久。但林晨注意到一个细节:林浩回来之后不管多累,脸上没有在电子厂视频通话时那种我已经消耗完了今天全部精力的疲惫。取而代之的是一种今天学到了新东西的充实感。
苏婉也注意到了。林浩这孩子的眼神比刚来的时候亮了很多。
因为在做自己擅长的东西。
周五晚上,林浩洗完澡坐在客厅沙发上,主动跟林晨汇报了这一周的内容。
第一天练直刀——切土豆丝。师傅要求每根火柴棍粗细,差了不到半毫米就要重切。我切了两筐土豆,切到手指上起了两个水泡但没切破。第二第三天练花刀——蓑衣花刀、荔枝花刀,练到手抽筋。从今天开始练火候——师傅让我们每个人单独用一口灶炒鱼香肉丝,他挨个尝,我的过了。
林浩说这些的时候语速比平时快了很多——不是紧张,是兴奋。他这辈子第一次发现有一种东西叫做学习曲线——你投入了时间和精力,它会回馈以可见的进步。电子厂的流水线没有学习曲线——只有重复。
师傅说我的基本功底子不错——毕竟做了十几年家常菜。林浩说这话的时候嘴角第一次出现了自信的弧度。
但是?林晨追问。
但是师傅说我的调味太偏向家庭口味——盐和酱油的比例都是家里炒菜的量。餐厅出品的菜调味要更精准——每道菜的咸度、甜度、酸度都要按标准克数来,不能凭感觉。
这就是你接下来三个月要学的。
苏婉切了一盘苹果端过来,林浩接过最大的那一片,咬了一口之后突然说了句:婶婶,您做的菜比我之前吃的所有菜都好吃。我想知道您是怎么做的。
苏婉愣了一下,然后笑了。我做的菜没什么特别的——就是不偷懒。肉炒之前要腌够时间,爆炒的时候火要足够旺,放调料的顺序不能乱。
就这些?
就这些。家常菜不需要炫技——食材新鲜、火候到位、调味准确。苏婉放下果盘,你师傅说的调味要精准其实就是这个意思——不是让你放更少或放着更多,是让你学会在正确的比例上停下来。
林浩听得很认真。他把苏婉说的话跟师傅说的话叠在一起,发现两者指向同一个核心:精准。好厨师的功夫不在创意,在每次出手都稳稳地落在同一个刻度上。
周日晚上,林晨在笔记上加了林浩的第二个记录:
入学一周。基本功过关。核心待攻克——调味标准化。态度:端正,有主动性。开始主动跟苏婉讨论做菜的底层逻辑——说明不是在被动学习,是在主动思考。
第267章 林浩的日常
二月下旬,林浩在厨师学校进入了第二阶段的训练——火候与调味。
实训厨房每天下午的实操课从两点开始——灶台全部点起来,厨房里温度高到将近四十度。林浩穿着厚厚的双层棉质厨师服站在灶前,背上湿了大半,但他没有像旁边几个学员那样中途跑到门口去透气。黄师傅说过一句话让林浩记到了现在:厨师不怕热——怕热趁早别干这行。
火候训练的核心项目是炒肉丝——鱼香肉丝、京酱肉丝、尖椒肉丝,每一种都要练上百遍。同样是猪里脊切丝,在不同菜里要求的火候完全不同。鱼香肉丝要的是锅气——火要大,翻炒要快,入锅到出锅不超过九十秒,炒出来的肉丝外层有焦香、内里还是嫩的。京酱肉丝要求的是均匀——火不能太大,要让甜面酱均匀地裹上每一根肉丝,色泽红亮不黑不焦。尖椒肉丝考的是对辅料的判断——尖椒什么时候下锅决定了最终的口感是爽脆还是软塌,早五秒和晚五秒是完全不同的两道菜。
这道选择题的背后是一个厨师对食材特性的理解。尖椒的含水量高,下锅太早水分一出来就成了煮辣椒——软塌塌的完全没有爽脆感;下锅太晚辣椒的生涩味没去掉,吃起来有一股青味。最佳时机是锅里的油刚好冒第一缕青烟——温度大概在一百八十度左右——把尖椒倒进去快速翻炒十五到二十秒。这个时间窗口精确到秒,全靠厨师的眼力和手感。
林浩练鱼香肉丝练到第十天的时候,黄师傅端着他的那份成品尝了一口,放下筷子说了一句让林浩兴奋了整整一个下午的话:这个能端去卖了。
但接下来黄师傅补了一句话把林浩拉回了现实:鱼香肉丝能卖之后还要再练两年才算真正掌握火候。知道为什么吗?因为餐厅厨房里的灶台火力是学校的三倍——同样的菜在更猛的火上炒,锅气更足,但失误的窗口也更短。你们现在在学校练的是基本功,不是。
这话让林浩明白了——三个月的培训只是入门券。真正成为一个能独当一面的厨师,是在真实的、高强度的餐厅后厨里磨出来的。学校灶台的火是温顺的,餐厅灶台的火是狂暴的。在温顺的火上练好基本功是第一步,在狂暴的火上稳住出品才是终点。
晚上回到林晨家,林浩把黄师傅说的话转述了一遍,然后补了一句:小叔,毕业之后我想直接找家生意好的餐馆去炒——不去那种人少的、没压力的地方。压力越大,进步越快。
林晨正在看FinGpt的评测数据,听到这句话抬起了头。二十三岁的林浩主动选择了压力——不是因为他喜欢吃苦,是因为他已经明白了:在厨师这个行当里,灶火的温度和成长的速率是正相关的。火越猛,菜越香;压力越大,手艺越快成熟。
行。等你毕业了,我给你找地方。
林浩回了客房。林晨在笔记上记了一条:
林浩第一个月:鱼香肉丝过师傅关。心态——从怕做不好转变为主动寻求高压环境锻炼。这是一个职业厨师的起点心态。
第268章 调味进阶
二月的最后一周,林浩进入了厨师训练营最难的一个模块:调味。
黄师傅在第一堂调味课上没有示范任何操作。他把二十几个学员全部叫到一口灶台前面,从调料柜里拿出了六个一模一样的白瓷小碗,每个碗里面放了半勺白色粉末。
尝。然后告诉我分别是什么。
第一个学员上去,拿筷子蘸了一点放进嘴里:
第二个:
第三个犹豫了一下:味精。
第四个尝完之后沉默了很久,最后说:……不知道。
黄师傅把那碗推给林浩。林浩蘸了一点点放进嘴里,闭上眼感受了一下——咸的,但咸味很薄,后面跟了一种很淡的鲜——是鸡精。
黄师傅终于点了点头,然后把第六碗推给了所有人。那碗没有一个人答对——是白胡椒粉,但因为磨得太细又放了太久,辛辣味已经挥发差不多了,只剩下一种微弱的、几乎察觉不到的麻。
这六碗只是基本功——黄师傅把六只碗排了一排,在厨房里你们每天要面对的不是六种调料,是几十种。酱油就有生抽、老抽、味极鲜、蒸鱼豉油、头抽——每一种的咸度、色度、回甘都不一样。醋有陈醋、香醋、白醋、米醋——酸度、挥发速度、跟热锅接触之后的残留香型都不一样。
今天开始你们每个人做一百次鱼香肉丝。不是随便做一百次——每一次做完之后自己尝,然后用笔记下这一次的糖醋比例、泡椒的用量、勾芡的浓度,以及你尝到的结果跟标准版之间的差距。一百次做完,如果你还调不出一个稳定的鱼香味,那就再来一百次。
林浩回到自己灶台前,翻开黄师傅发的调味记录本——一个普通的方格本,每一页印着统一的格式:糖(g) | 醋(ml) | 泡椒(g) | 姜蒜比例 | 芡汁浓度 | 成品评价。
他系好围裙,开始第一次。
第三次的时候醋放多了,成品的酸味盖过了泡椒的复合香。他皱着眉在成品评价写道:酸突出,泡椒味被压制。
第十七次的时候糖醋比例终于对了,但泡椒剁得不够细,炒完之后辣椒的颗粒感太强,影响了菜的整体口感。他在记录本上狠狠记了一笔:泡椒必须剁到接近泥状——颗粒大则口感粗。
第四十一次的时候他终于做出了一盘让自己满意的鱼香肉丝。端到品尝台的时候黄师傅看了一眼他手里的记录本——密密麻麻写了将近三十条笔记。
黄师傅尝了一口。对味了。
三个字。但林浩知道这三个字的分量。他用了四十一次失败,换来了第一次成功。
晚上林晨下班回来,看到茶几上摆了一盘鱼香肉丝。苏婉正在举着筷子尝。
林浩做的?
他晚上回来做的——说今天在学校练了一整天,回来还要再巩固一遍。苏婉把盘子推给他,你尝尝。
林晨夹了一筷子。入口的一瞬间,泡椒的酸辣和糖醋的甜酸同时打在味蕾上——鱼香味型的层次感出来了。虽然不是完美版本,但对于一个从流水线转行刚一个月的学徒来说,这个水平已经出乎他的意料。
林浩呢?
在厨房刷碗。苏婉往厨房方向努了努下巴。
林晨走到厨房门口。林浩在水池前一只一只地冲洗他用过的炒锅和调料碗,洗得很仔细。
林浩。这盘鱼香肉丝不错。你进步很快。
林浩回头看了他一眼,没笑,但眼角有点发亮。还差得远——黄师傅说鱼香肉丝练两年才算入门。
你现在一个月就到这个水平了。再加二十三个月,就是大师。
林浩刷碗的手停了一下。然后继续。
窗外鹏城二月的晚风已经转暖了。春天的海雾开始从东边漫过来,把阳台外的灯光润成一层朦胧的柔焦。但厨房里亮堂堂的——一个二十三岁的学徒在水池前刷锅,身上的围裙还粘着炒菜溅出来的油点。
第269章 工作的挑战
三月初的月度战略会,陈博士走进来的时候比平时晚了三分钟。他没坐下,直接站在投影幕前面,把手里的遥控器点了一下。
屏幕上出现一行字:智研——金融机构智能投研助手。产品级交付。目标客户:券商、基金、保险资管。
会议室安静了两秒。下面是一行时间线:q2完成模型选型和数据准备,q3启动封闭开发,q4交付测试版本给首批合作客户。
孙总第一个开口:九个月从零到交付?
陈博士没解释时间线,看了一圈会议室。技术负责人——林晨。
林晨没接话。陈铭坐在他右边,转头看了他一眼。
张雨犹豫了一下,举起手,声音比平时小了半拍:陈博,q2完成数据准备——光跟券商谈数据授权通常就要两三个月。九个月从零到交付——
所以才现在启动。陈博士语气没变化,但张雨的话停住了。
孙总翻了一页笔记本。数据从哪来?
框架协议跟三家券商签了。但框架协议只是意向。具体数据清单、授权范围、合规流程,要一家一家去谈。
等于数据端从零开始。孙总合上笔记本,看着陈博士,q2完成数据准备——这个前提是q2能签下至少两家券商的正式协议。万一谈崩了一家——
那就只剩两家。陈博士说。
会议室又安静了。陈博士没解释,也没打气。他看了在座的人几秒,说了句:散会。林晨留一下。
椅子响了几声,人陆续往外走。陈铭路过林晨身边的时候拍了下他的肩膀,什么也没说。张雨走到门口停了一下,回头看了他一眼,出去了。
门关上。
陈博士靠在椅背上。林晨还坐在原处,没动。
有问题?
数据是核心瓶颈。林晨说。
我知道。
九个月不够。
你算过了?
不用算。金融数据授权涉及版权和合规,每家券商内部审批流程不一样,快的六周,慢的三个月。三家并行谈,乐观估计q2结束前能签两家就算顺利。模型训练最少两个月,加上数据标注和清洗——
所以要并行推进。
林晨停了一下。他本来想再算一遍时间账给陈博士听,但看着陈博士的眼神,他把数字咽了回去。
我还没说接。
陈博士没接这句话。他站起来走到窗边站了几秒,然后转过身看着林晨。
做投研大模型,光懂大模型架构不够。他说,得真正拿这些数据做过决策。你做了三年量化,你知道一份研报里哪些数字真有用,哪些是分析师凑字数的。张雨技术比你强,但她没买过一股股票。
林晨沉默了几秒。这话很直,甚至有点扎人,但他知道陈博士只是在陈述一个事实,没别的意思。
陈博士点了下头。明天开始。
林晨站起来,走到门口又停了。陈博——为什么是现在?FinGpt v3刚稳定到84.6%,离86%的目标还有距离。这时候分精力做新项目——
因为窗口期。陈博士说,大模型做金融垂直场景,谁先做出能用的产品,谁就先拿到券商的客户关系和数据授权。慢半年,你可能连谈判的资格都没有。
林晨出了会议室,站在走廊上深吸了一口气。三月初还有点凉,窗外的鹏城湾灰蒙蒙的。他站了几秒,拿出手机给陈铭发了条消息:小会议室,十分钟后。又给张雨发了条:同上。
十分钟后,三个人坐在小会议室里。林晨没坐,靠在白板边沿站着,手里拿着一支记号笔。
智研项目,三大块。他在白板上写了三个词——数据、模型、合规。没画框,没画箭头,就三个词竖着排着。数据最难。研报、财报、路演纪要、市场数据——全散在券商手里,每家规矩不一样。模型这边,基于FinGpt做垂直微调,投研场景的指令微调和RLhF。合规——每一份输出都要有溯源链,哪个结论从哪篇研报哪个数据来的,必须能查到。
陈铭盯着白板看了好一会。林总,我跟进数据谈判。但时间确实太紧了。跟券商谈授权,人家内部要法务审、合规审、研究所审批——光走流程可能就一个月。
所以第一家先去国泰。林晨说,国泰跟我们有FinGpt的合作基础,关系已经在那了。把国泰先签下来,后面两家拿国泰当案例去推。张雨,你这边——
用现有数据先跑投研场景原型。张雨接了话,FinGpt v3在投研任务上没单独测过,我估摸大概60%上下。跑完才知道差多少。
行。测完给我数字。
散了之后,林晨在小会议室坐了一会。白板上那三个词还在。他拿手机拍了张照,然后把白板擦了。
走出会议室的时候,陈铭正在工位上打电话,声音压得很低但语速很快,大概在跟谁确认什么事。林晨没过去,直接回到自己工位坐下。
打开电脑,新建了一个空白文档。标题:智研项目方案书。
第一章:数据源定义。他开始列需要的数据类型。券商研报——总量策略、行业配置、个股深度。公募基金季报年报。保险资管月度策略报告。交易所公开数据。监管文件。
写完第一遍,他停下来。又在每一种数据类型后面补了标注。研报——部分券商当付费产品,授权难度大。基金季报——公开可取,但清洗工作量不小。监管文件——没有授权问题。
他打开FinGpt后台的数据看板,翻了翻v3版本的训练数据分布。研报类语料只占全部训练数据的2.3%。2.3%。这个数字解释了很多问题。通用大模型在投研任务上表现差,模型架构是一方面,更根本的原因是它根本没见过多少研报。
他退出来,又打开邮箱,搜数据合作框架协议。三份文件跳出来——国泰、海通、中信建投。他逐个打开扫了一遍。每份都是两三页的标准框架——合作意向、保密条款、知识产权约定。没有一份涉及具体的数据清单和授权范围。框架协议就是一张纸,意思是愿意聊愿意给你数据差着十万八千里。
他靠回椅背,揉了一下眼睛。手机亮了。苏婉发来消息:还没回来?
他打字:还要一会。
乐乐今天作业得了一颗星,等你回来跟你说。
林晨看了两秒,把手机扣在桌上。继续写方案书。数据获取难度——他在每一项后面简单标了评估。研报:难。基金季报:中。监管文件:易。粗算下来,百分之四十的数据需要谈判获取,百分之三十存在授权壁垒。
他保存文档,关掉,又打开,看了一遍,又关掉。又翻出那三份框架协议,逐个看保密条款和知识产权那两节——全是模板话,合作意向双方协商另行约定,没有一条是硬承诺。数据的事,写代码解决不了。
然后他坐在那里,翻出张伟两个月前发他的一份券商行业研究报告——张伟当时说这报告写得不错你看看,跟项目无关。他翻了几页,图表、数据、分析师的观点。他看得比平时仔细,看的时候在想:如果我要训练一个模型来理解这种东西,我需要喂给它多少份?一千份够吗?五千份呢?这些报告的格式五花八门,有的结构化程度很高,有的通篇都是叙述,连个数据表格都没有。清洗这些数据的工作量可能比获取数据本身还大。
他把报告关了,给陈铭发了条消息:明天去国泰之前,把跟他们签的框架协议重看一遍。重点看保密条款和知识产权那两节。
发完之后他又靠在椅背上。办公室的灯管有一根在微微闪,不注意根本看不出来。他盯着那根灯管看了一会,然后关电脑,收拾东西下楼。
开车回家路上,他没放音乐,就这么开着。脑子里的东西翻来覆去——数据授权的时间线,模型选型的方案,标注团队要几个人。快到小区的时候他才给苏婉打了个电话。
还有多久到?
五分钟。
乐乐已经睡了。
新项目?
压力大?
林晨把车开进地下车库,停好车,没熄火,坐在车里想了想。有点大。
能做吗?
能做。
那就行。苏婉的语气很平常,好像他说的是明天要交一份普通报告。回来吃点东西,冰箱里有粥。
到家之后林晨确实饿了。粥热了一碗坐在餐桌边吃。苏婉从卧室出来穿了件外套,坐在对面看着他。
什么项目?
金融大模型。面向券商的投研助手。
跟FinGpt不一样?
FinGpt是通用的。这个更垂直——帮分析师看研报、提数据。
那你不是最合适的人吗?你做量化做了三年,这些数据你天天在看。
她说得跟陈博士说的几乎是同一件事。陈博士说的是没买过一股股票,苏婉说的是这些数据你天天在看。一个从技术角度,一个从使用角度,但结论一样。
我知道了。林晨把碗放下。
苏婉站起来回卧室,走到门口回头说了句:粥碗放水池里就行。
凌晨两点,林晨还没睡着。他翻了个身,脑子里全是数据——全是他做量化交易时每天打开的那些东西:wind终端的研报推送、同花顺的财务数据、交易所的公告页面。这些东西长什么样他清楚,哪些是噪音哪些是信号他也清楚。但知道是一回事,能不能把这些东西变成大模型能理解、能输出的结构化信息,是另一回事。
他翻了个身,脑子里还盘着明天要先联系谁。
第270章 数据困境
三月第二周,林晨带着陈铭去国泰证券开数据合作对接会。
国泰是FinGpt的第一个外部合作方,双方在智能投研方向签过框架协议。林晨本来觉得有合作基础,数据谈判会比跟陌生券商容易。事实远不是这样——框架协议就是一张纸,意思是愿意聊愿意给你数据之间隔着十几个法务和三道合规审批。
国泰研究所的徐所长四十五岁,做卖方研究二十年。他不是那种技术恐惧型的老派领导——上次林晨展示的智能研报摘要系统让他确实觉得有价值。但一聊到授权研报数据给t厂做商业产品的条款,他的表情就变了。
会议室在国泰研究所的十二楼,长条桌,一边坐着林晨和陈铭,另一边坐着徐所长和两个法务。茶泡了但没人动。
林总,我先把丑话说在前头。徐所长转着手里的笔,没看林晨,看的是投影幕上那份合作方案,我们的研报是卖方研究的核心产出。每一份策略报告,分析师花几个星期甚至几个月写出来。版权属于公司。如果这份研报的内容被你们的大模型学习之后,用在其他客户的商业产品里——我们怎么保证付费客户不会绕开我们,直接从你们的模型获取被处理过的信息?
林晨没有回避。徐所,我们的方向是帮更多普通投资者理解研报。一份几十页的策略报告,全市场真正从头看到尾的人可能不到百分之十。剩下的人要么不看,要么只看标题就做决策。我们做的是把这百分之九十拉进来——让他们通过AI摘要看到研报的核心逻辑,觉得有道理,再去找更多券商的完整研报。
那你觉得——徐所长停了一下,笔不转了,一个散户看完你们的AI摘要,他还会买我们的研报看吗?
会。因为我们只提取事实和关键逻辑,不给买卖建议。专业投资者需要深度数据和模型细节,这些东西摘要里没有,还得看原文。
徐所长靠回椅背,盯着林晨看了两秒。林总,你打过电影预告片那种东西吧?预告片拍得好,观众看完就觉得自己已经知道这电影讲什么了——他还会买票进电影院吗?
会议室安静了几秒。
林晨本来想接话,但徐所长继续说了下去:我在这行二十年,见过太多散户。他们看得懂研报,就是懒得翻。你们给他一个AI摘要,他觉得够了,他就不会再花时间去找原文。你的电影预告片会让更多人进电影院——这个逻辑在电影行业成立,在金融行业不成立。因为电影观众要的是体验,散户要的是结论。
陈铭在旁边听着,手里的笔停在笔记本上。他看了一眼林晨——林晨的表情没什么变化,但他认识林晨快两年了,知道他没接话的时候是在重新想措辞。
会议室里只有空调的嗡嗡声。两个法务互相看了一眼,没说话。
林晨想了几秒。徐所,你说的对。散户确实要的是结论。但我们输出的内容里没有结论——只有事实和逻辑。比如一份策略报告说消费板块二季度盈利增速预计回升至12%,我们的AI提取的是这个数据和它的来源。至于消费板块该不该买——我们不说,也说不出来,因为我们没有预测模型,只有信息提取模型。
你能保证?徐所长身子前倾了一点,你的模型架构能保证它不会自己出投资建议?
这是架构层面的约束。林晨说,提示词约束可以被绕过,但架构约束绕不过去。我们的输出层有一道硬规则:没有原文段落支撑的结论,直接丢弃,不会出现在最终输出里。
徐所长没接话,低头在纸上划了两笔。旁边的法务凑过来耳语了几句,他点了下头。
那我再问一个问题——徐所长抬起头,你们的AI摘要如果每一条都标注了来源,那等于是给国泰的研报做了一个免费的分发入口。这个入口在你手里。将来如果你们跟海通、中信建投也签了协议,你们的AI平台是不是同时推送所有券商的摘要?那我们国泰的研报在你的平台上跟别家的放在一起——用户凭什么选我们的?
这个问题比版权问题更难回答。法律上能绕过去,但商业竞争的账不好算。
陈铭看了林晨一眼。林晨没看他,在想怎么接。
徐所,你说的这个问题确实存在。林晨停了一下,但我可以反过来问——如果国泰不参与,海通和中信建投参与了,那你们的研报在我们的平台上根本没有摘要,用户连看到的渠道都没有。在平台上出现,至少还有被选择的机会。
徐所长手里的笔又转了起来。他知道林晨说的是实话——缺席的代价可能比参与的代价更大。
但这个逻辑还不够。徐所长没点头,也没摇头,他转头跟右边的法务说了几句,法务翻出一份文件看了看,递给他。
这样——徐所长把文件放在桌上,手按着纸面,我们可以谈一个方案:所有AI摘要的输出,必须标注信息来源于国泰证券的哪一份研报,在输出末尾附带原文获取方式——链接跳转到国泰的官方渠道。这是前提条件。
可以。林晨说,溯源链本来就是我们的合规要求,每一份输出都要标注来源。
另外——徐所长看了他一眼,总量策略报告和行业配置报告的数据授权可以谈。但个股深度分析暂不纳入。个股研报涉及到具体的调研信息和盈利预测数据,太敏感了。盈利预测一旦泄露到你们的模型里,被别的机构拿来交易——这个责任我们担不起。
林晨心里算了一下。总量策略加行业配置——覆盖了智研项目大约百分之五十的数据类型。另外百分之五十的个股数据,没拿到。
个股这块——他试探了一句。
不行。徐所长很干脆,个股研报里的信息一旦被模型——你怎么控制它不会被用在你们其他客户的产品里?我们内部讨论过了,个股数据至少现阶段不开放。
陈铭微微摇了下头——意思是别再推了。林晨看懂了,站起来。
行。总量和行业的授权条款,你们法务出一版,我们法务再看。个股的事,后面再想办法。
徐所长也站起来,握了下手。林总,我多说一句——你们做AI的,可能觉得数据就是数据,喂给模型就行了。但在我们这行,一份研报后面是一个分析师三个月的调研,是无数个电话会、无数条微信聊天、无数次跑现场。这些积累没法被一个大模型替代。
林晨点了下头,没反驳。现在不是说这话的时候。
出了国泰的大楼,三月的阳光照在脸上。林晨和陈铭沿着人行道走了大概两百米,谁也没说话。陈铭把笔记本夹在腋下,另一只手插在外套口袋里,低着头走路。林晨走在他旁边,盯着前方的路面,脑子里还在过刚才的对话。
走到停车场,林晨开车门没进去,站在车门边靠着,掏出手机看了一眼——三条未读消息,全是工作群里的,他没点开。
总量和行业拿到了。陈铭坐进副驾驶,把笔记本翻开,但个股数据没拿到——智研在个股分析这个场景上的训练数据会少一大截。
林晨把手机塞回口袋,站在车门外又想了几秒,才绕过去坐进驾驶座。他没急着发动车,把手放在方向盘上。
个股研报是券商最值钱的东西,他们不可能轻易放。他说。
那怎么办?没有个股数据,模型在个股分析上的能力会瘸腿。陈铭翻开笔记本,我刚才在会上记了一下——国泰一年大概发多少份个股研报,公开渠道能看到的摘要和结论有多少——
你记这些干嘛?
我在想有没有可能从公开渠道拼出个股分析的数据。陈铭说,不从国泰拿,从别的地方找。
林晨发动了车,没马上开。他想了想。
个股的底层信息不是没有。他说,财报是公开的,交易所的问询函回复是公开的,投资者关系活动记录表是公开的。这些东西不需要任何人授权,谁都可以看。
但这些数据和券商研报里的个股分析是两码事——陈铭犹豫了一下,研报里有分析师的观点和预测,公开数据只有事实。光有事实没有观点,模型能学到什么?
对,光有事实不够。林晨把车开出停车场,但如果我们的模型先学会从公开事实中提取关键信息,再用已经拿到的行业配置和总量策略数据来建立分析框架——相当于一个人先学会看财报,再学会看行业,再去理解个股。逻辑上说得通。
陈铭想了一会。可以试。但数据量可能很大——光沪深三千多家公司过去三年的年报问询函就不知道有多少份。
那就先爬。林晨说,交易所的年报问询函、证监会行政处罚决定书、投资者关系活动记录——这些都是公共数据。让张雨搭爬虫框架,先把量跑起来。
陈铭在副驾驶上用手机开始打字。我整理一份公开数据源清单,回去发给你。
车开上滨海大道。陈铭打完字放下手机,转头看着窗外想了一会,突然又开口:林总,你觉得徐所长最后那句话什么意思?一份研报后面是三个月的调研——他是在警告我们?
林晨看着前方的路。他在提醒。他怕我们觉得有了数据就什么都能干。
那你觉得呢?
林晨没直接回答。他想了想,说:数据是原材料。但没原材料你连灶都上不了。
陈铭笑了一下。那我们先解决原材料的问题。
手机震了。陈博士的消息:谈得怎么样?
林晨单手打字回了一条:总量策略和行业配置可以签。个股深度拿不到。
过了大概半分钟,陈博士回了三个字:意料之中。
林晨把手机放在中控台上,没再问陈博士怎么办。他知道答案——拿到多少用多少,拿不到的想办法补。他做量化那几年也这样,wind数据缺几个字段、同花顺的财务更新晚了两天,照样得出信号。
车开到公司楼下的时候,陈铭已经把公开数据源清单整理好了,发到了他的邮箱。林晨看了一眼标题——智研项目公开数据源初步清单,里面有七八个数据入口,每个后面标了数据类型和预计量级。
他把车停好,熄了火,在车里坐了几秒才推门下车。
第271章 数据方案
三月下旬的一个下午,林晨抱着笔记本走进陈博士办公室的时候,白板上还留着上午产品评审的痕迹。他拿起板擦把那些流程图擦干净,然后拧开记号笔的盖子。
陈博士正在回邮件,头也没抬。你那个数据方案,想清楚了?
想清楚了。但先说一个前提——林晨在白板左上角写了个数字:70%。券商授权数据大概只能覆盖我们需要的七成场景。国泰那边总量策略和行业配置签了,个股深度锁死不给。另外两家还在谈,别乐观,一家进度卡在法务审条款,另一家连技术对接人都还没定。
陈博士这才转过来,靠在椅背上看着白板。七成不够。剩下三成你怎么填?
公开数据。林晨在白板上画了第二个框,年报问询函、监管处罚公告、投资者关系活动记录——全是交易所和证监会公开的,没有版权问题。张雨的爬虫已经搭好了,第一批八千份问询函正在入库。
八千份问询函,质量怎么样?
参差不齐。有的问询函回复特别详细,连子公司担保链都拆开了写;有的就几页套话。林晨顿了顿,但量摆在那儿,清洗之后可用的部分我估计能过半。而且问询函有个天然优势——它是交易所质疑上市公司时发的,里面的措辞自带风险线索标记。模型从这种语料里学到的风险信号,比研报里四平八稳的分析要锐利得多。
陈博士站起来走到白板前,盯着那个第二个框看了几秒。你说公开数据没有版权问题——技术上没有。但你有没有想过一个问题:你爬了几千份问询函喂给模型,模型输出的时候如果有一段跟某家公司问询函回复的措辞高度相似,那算不算侵犯这家公司的信息权?
林晨的手停在记号笔上。
这个问题他确实没有深入想过。问询函是公开文件没错,但如果模型生成的文本和某家上市公司的回复原文高度重合,在金融合规语境下确实可能出问题。尤其是涉及未公开的经营数据——虽然出现在问询函回复里,但那家公司可能并不希望这些信息被AI模型重新组合后二次传播。
我加一条规则——林晨在白板上写了几个字,输出环节做去重。模型生成后过一遍跟训练语料的相似度比对,超过阈值的段落自动标注来源并附原文链接。跟我们在国泰那边的溯源设计一脉相承。
陈博士点了下头,视线移到白板空白处。还有呢?券商授权和公开数据加在一起,缺了什么?
市场微观结构。林晨在白板最右边画了第三个框,研报讲的是机构逻辑,问询函讲的是监管视角。但每天实际交易里价格怎么动、量怎么变、信号出了之后市场多长时间反应——这些数据两种来源都没有。
你自己那套量化交易日志?陈博士问。
对。三年,几千条交易信号和对应的市场反应。另外FinGpt v2在金融事业部的客服试运行数据,脱敏之后也能用。但这两个加在一起,量不大。交易日志大概三千条,客服日志脱敏过滤之后能用的可能不到两千条。
陈博士转过身面对林晨。你刚才说七成靠券商,剩下靠公开数据补。那市场微观结构这部分呢?五千条样本撑不起一个维度。
撑不起。但这五千条的用法不一样——它混在总量数据里做辅助特征。就像你做NLp的时候加个词性标注,词性本身提供不了主要语义,但能让模型在歧义句上判断更准。交易日志和客服日志起的就是这个作用。
陈博士沉默了一会儿。他拿起白板旁边的一支笔,在第三个框下面画了一条短线。那问题来了——你这个辅助特征的数据量够不够起到辅助的作用?五千条混在总量一万多条的语料里,占比不到三成。模型会不会干脆忽略这个维度的信号?
林晨承认这个问题存在。如果某个特征在训练数据里占比太低,模型可能直接把它当噪声过滤掉。他想了几秒钟。那我把交易日志的数据做一次增强。每条原始信号加反向条件和扰动条件——比如如果信号发出时大盘在跌,结果会怎样。逻辑上是合理的,量化回测本来就做这种条件分解。增强之后数据量能翻三四倍。
翻三四倍——人工合成的数据,模型能分出来吗?
分不出来,前提是增强规则本身是对的。我做了三年量化,增强逻辑不会有问题。
陈博士把笔放回笔槽。数据方案大方向行。但有两个风险点你要盯住——第一,公开数据的合规边界比你以为的模糊,找法务出一份正式的意见书,不要自己判断;第二,券商授权那边另外两家,下周我再帮你推一把,你别花太多精力在上面。你现在的重点应该放在数据清洗和标注上。
标注人手不够。林晨说了他最想说的一件事。
Jd已经给hR了,三天了,简历就收了七份。其中四个是计算机专业的——我们需要的是懂财务的,不是懂代码的。另外三个金融相关的,两个是大三的,基础太薄,一个倒是研二的,但在广州,人过不来。
陈博士想了想。hR那边我去说,让他们加急推。另外你把Jd里的薪资往上提一档,鹏城这地方实习生薪资到位了人不难找。
提多少?
日薪从一百五提到两百。别在这上面省。
林晨点了下头,把白板上的内容拍了一张照片,转身出了办公室。
回到工位,张雨的显示器分成左右两块。左边是scrapy的运行日志,绿色的200 oK一行一行往下滚,偶尔跳出一行红色的403 Forbidden——被反爬了,但scrapy的自动重试机制在十秒之后换了个代理Ip重新请求,又变回了绿色。右边是数据看板,三条入库曲线都在往上走。
入库顺利。张雨指着左边那块屏,深交所的页面结构很规矩,css选择器写完基本不用改。上交所的稍微麻烦一点,有些老页面还是table布局,不过也能搞定。
出问题了?林晨看到他浏览器里另外开了一个tab,标题是tesseract ocR。
张雨的表情一下子变了。他把右边屏幕切到一个预览界面——上面是一份年报问询函的扫描件,中间夹了一张财务数据表格。你看这个。问询函本身是纯文本的,爬取没问题。但有些公司在回复问询函的时候,直接把财务附表贴成了图片。pdF转文本到这一步就断了——ocR出来的东西你看。
他点开ocR结果。表格原本是五行六列的结构,ocR输出的文本里行和列全混在了一起——第三行的数字跑到第二行末尾,表头和表体粘在一起,小数点后面的数字被截断或者拼到了隔壁单元格。
我试了三个参数配置——张雨把tesseract的配置文件拉出来给林晨看,psm模式从3到6到11都试了,表格结构识别最好的是psm 6,但你看到结果了,还是乱的。字符识别率倒是不低,单个数字几乎没认错,关键是位置信息全丢了。
林晨盯着那张乱掉的表格看了半分钟。字符识别对了但位置丢了——那问题不是ocR引擎,是表格检测。你先做个预处理——把pdF页面做版面分析,表格区域单独切出来,然后用专门的表格识别模型做结构解析,不要把整页丢给tesseract。
专门的表格识别模型?有什么现成的?
微软去年开源了一个table-transformer,专门干这个的。你先拿它试试,识别出表格的行和列的边界框,然后在每个单元格内做ocR。两步拆开做,比一步到位要靠谱。
张雨记了两行笔记。那非表格的部分呢?
纯文本的让模型自动清洗,不用人工介入。只把含表格的页面标记出来,table-transformer跑完之后,单元格级ocR再校验一遍。校验的工作量——他估算了一下,八千份问询函里带财务表格的大概两成,一千六百份左右。每份校验三到五分钟,全走人工得要——
一百多个小时。张雨算得很快。
所以需要标注实习生。林晨把下午和陈博士讨论的结论说了,薪资提了,hR那边在推。人到了之后清洗和标注并行,你这边爬虫和表格识别继续优化。
张雨已经把table-transformer的Github页面打开了。
晚上九点多,林晨坐在工位上整理今天的数据方案讨论。他没有写什么总思考,只是在项目文档里加了三个待办事项:法务意见书——公开数据合规边界确认;hR——标注实习生招聘加急;张雨——table-transformer表格识别方案验证。想了想又在下面补了一条:券商授权的另外两家,进度周报单独跟踪,别让它们自己拖着。
第272章 数据标注
四月初的第一个周一,三个实习生到岗。hR的加急推送起了一些效果——最终收了二十几份简历,筛到九个面试,最后留下三个。
陈铭带着他们到十五楼那间临时改的标注间。说是标注间,其实就是把一间旧会议室的桌子重新拼了一下——三台显示器一字排开,键盘旁边放着厚厚一沓打印出来的标注规范文档。空调出风口有点响,陈铭去调了一下没调好,索性不管了。
三个人自我介绍的时候,林晨站在门口听着。
小敏,暨南大学财务管理专业大四,已经保研了,说话利索,眼神总在观察。简历上写着一堆奖学金,面试的时候问了个让林晨意外的问题——标注数据最后的模型效果我能看吗?我想写进毕业论文。林晨当时说可以。
周昊,鹏城大学金融工程研二,戴一副圆框眼镜,头发有点长,坐下来就开始翻标注规范文档,边看边用铅笔画线。不怎么说话,但问的问题很细——研报里这类措辞,标注置信度怎么设?
赵琳,也是鹏城金融工程研三,比周昊高一级。她是三个人里唯一有过实习经历的——在一家小券商研究所做了半年,写行业简报。进门的第一个动作是把手机翻过去扣在桌上。
林晨在前三天做了培训。不是那种念ppt的培训——他把标注平台投在大屏上,拿一份真实的年报问询函当场标。
看这段——请补充说明你公司2024年第三季度营业收入同比下降23.7%的原因,并说明是否存在持续经营能力风险。他一边读一边在标注界面上操作,事件类型——监管问询。涉及主体——这家公司本身,代码标上。影响方向——负面,不用想,交易所都质问你持续经营能力了。时间节点——2024年q3到q4,问的是第三季度的事但影响在四季度体现。关键数字——23.7%,还有持续经营能力虽然不是数字但属于定性风险指标,也要标。
周昊举手了。林总,影响方向标负面,依据是什么?如果这家公司去年同期基数特别高,今年同比下降其实是回归正常水平,那影响方向应该是中性才对。
林晨放下笔。你说的这个在分析层面是对的。但标注层面我们做的是消息本身的方向——净利润下降就是负面,不管基数高不高。原因很简单——模型得先学会净利润下降是负面信号这件事,才能去学基数效应可能让下降变成中性这种进阶判断。两步走,别混。
小敏接了一句:那如果同一条消息里正面和负面都有呢?比如这家公司净利润下降但经营性现金流反而改善了。
标混合。备注栏里把正面维度和负面维度分别写清楚——净利润下降23.7%,负面;经营性现金流改善,正面。模型以后要学会区分同一事件里的正负信号,我们的标注得先给它区分好。
赵琳一直没说话,但她的笔记写得密密麻麻。培训间隙她翻回前面重新看了遍自己记的内容,在某个地方画了个圈。
第二天培训重点是研报数据。林晨拿了一份国泰证券的行业配置报告做示范。这种报告里关键数字特别密集——消费板块建议超配至15%新能源行业盈利增速预期下调至8.2%——每一个数字都是标注目标。但是——他指着报告里一行字,考虑到估值修复空间——这算不算关键数字?
三个人都没出声。
不算。估值修复空间是个模糊预期,没有具体数值。标注关键数字的标准是——能在事后验证的。23.7%能验证,15%能验证,8.2%能验证。修复空间验证不了。不要标。
第三天下午,林晨让他们三个人各标五份,他当场批改。
赵琳的速度最快,五份四十分钟就交了。准确率还行,但有一份出了问题——她把大股东计划减持不超过2%标成了正面。林晨把她叫过来。减持不超过2%——你觉得为什么是正面?
赵琳愣了一下,然后脸上有点红。我看成增持了。
你看一下原文——两个字在上面,不超过是修饰减持比例的上限,不是把减持变成增持。这种错误很要命——模型如果在这里学反了,后面输出的研报分析会告诉你大股东减持是利好
赵琳把那份标注重新做了一遍,这次花了十五分钟。
周昊的五份准确率最高,但他标得太细了。一份问询函他标了四十多个关键数字,连公司注册地址变更这种跟投资决策无关的数字都标进去了。林晨跟他说:你的判断力没问题,但你缺一个过滤步骤。标完之后问自己——这个数字会不会影响任何一个人的买卖决策?不会的删掉。
小敏的五份里有一个标注让林晨多看了几眼。那是一份关于并购重组的问询函,公司回复里写了重组方案已获证监会受理。小敏把事件类型标成了并购重组获批。林晨指着那行字问:受理获批是一回事吗?
小敏仔细看了看。不是。受理只是说材料收了,获批是审核通过了。
对。在并购重组这件事上,从受理到获批中间可能隔三四个月,也可能最后批不下来。市场对这两种状态的定价完全不同。所以事件类型应该标并购重组获受理——精确到当前节点。
小敏改了标注,在备注栏加了一句:受理不等于获批,注意区分。
第四天,标注正式开始。
头三天林晨基本全天泡在标注间。他不是盯着他们看——自己也开了一台电脑坐在旁边标。早上十点到下午六点,中间除了吃饭不停。一份问询函他平均标六七分钟,比实习生快一倍。快的原因很简单——他看了太多研报和问询函,哪里有数字哪里有信号扫一眼就知道。
中午一起吃饭的时候,周昊突然冒出一句:林总,你标一天不累吗?我觉得盯两个小时眼睛就开始花。
林晨嚼着饭说,但你做量化的时候每天看几百条K线也累,不还是看?重复性工作没有不累的,关键是你得知道重复的目的是什么。
赵琳第二天就遇到了瓶颈。一份深交所的问询函回复长达三十八页,里面嵌了七张财务数据表。她花了四十五分钟才标完,标完之后整个人往后靠在椅背上,揉了好一会儿太阳穴。林晨走过去看了一眼她的标注——结构上没大问题,但有一张合并报表的表格她标错了层级,母公司数据和子公司数据混在了一起。
这种合并报表,子公司那一行标的时候要加个标签——子公司xx,别跟母公司的行粘在一起。模型读表跟人读表不一样,人一眼能看出来缩进代表从属关系,模型看的是token序列,你得把这个层级关系写进标注里。
赵琳点头,重新标那张表。这一次她花了二十分钟。
第一周结束的时候林晨做了质检。他在三个人各自的标注里随机抽三十份,逐条核对。结果出来了:小敏82%,周昊85%,赵琳76%。综合准确率81%。
他把三个人叫到一起,没开会,就是指着屏幕上出问题的样本一条一条过。
小敏,你这份——扣非净利润下降12%净利润下降3.8%是两个不同的数字,你只标了净利润。扣非净利润在投研场景下有时候比净利润重要——很多公司靠卖资产或者政府补贴把净利润做正了,但主业其实在萎缩。所以两个数字都得标。
小敏看着自己漏掉的那行,咬了下嘴唇。我以为净利润已经代表了。
净利润是最后那个数,扣非才是主业到底怎么样。看报告先看扣非。
周昊,你的问题不在标注本身——在过标。你这三十份里标了太多无关数字。我上次跟你说的过滤步骤,你做了吗?
周昊推了推眼镜。做了,但我不太确定哪些数字跟投资决策有关。比如有一份问询函里提到公司专利数量增加了15%——这个算不算?
看行业。如果是科技股,专利数量是核心指标,标。如果是传统制造业,专利数量跟盈利关系不大,不标。
赵琳——林晨的语气停顿了一下。赵琳的76%是最低的,她自己心里也清楚。你的问题集中在两种场景——合并报表的层级关系和大股东增减持的方向判断。第二种我之前跟你说过一次了。
赵琳没说话,手指在桌面下绞着。
这样——下周你专门标问询函里涉及股权变动的那类文档,别标其他类型。集中练一种场景,练到不出错再换。
赵琳点了一下头,很轻。
第二周林晨没有全程坐在标注间了。上午他在自己的工位处理项目其他事务,下午过来待两三个小时,抽查和答疑。但他每天下班前会抽出四十分钟自己标一批——保持对标注规范的手感,也为了让自己不跟一线脱节。有天晚上他标到八点多,周昊从工位过来找他——他以为周昊走了。
林总,我想跟你聊聊。
周昊站在门口,手插在卫衣口袋里。这个标注工作——我觉得学到东西,但有点担心。我们做的全是人工标注,如果以后模型能自动标注了,这套经验不就没用了?
林晨把手里的笔放下。你觉得模型能自动标注金融数据——什么时候能实现?
不知道。可能两三年?
两三年之后你在哪?
周昊没接话。
你现在学的这套东西——从非结构化文本里提取结构化信号——放到哪都是基本功。模型什么时候能自动标注我不知道,但标注标准本身在变——你觉得两三年之后这套规范会跟今天一模一样吗?
周昊想了想。不会。
所以你担心的事情不存在。规范在变,你干的事也跟着变。
周昊走了之后,林晨看着屏幕上自己标完的最后一份问询函。但他知道周昊的焦虑是真实的。标注工作确实枯燥,每天对着同一类文档反复标同样的维度,跟写代码比起来没有任何创造性。如果他自己二十出头坐在这里,大概也会想同样的问题。
第二周的质检结果:小敏90%,周昊91%,赵琳83%。赵琳提升最大——她把股权变动类文档标了整整一周之后,方向判断的错误率从原来的24%降到了9%。但她在财务报表层级关系上还是容易出问题,合并报表的数据偶尔还是会把子公司和母公司混在一起。
林晨跟陈铭说:你找个时间给赵琳开一次小灶,专门讲合并报表的结构。你是金融方向牵头人,讲这个比我清楚。
陈铭答应了。第二天中午他拉着赵琳在茶水间白板上画了半个钟头的合并报表结构图。赵琳回来之后标了一份带三层子公司的问询函回复,全对。
第三周的前两天,赵琳突然请了一天假。她没说原因,hR那边只走了正常流程。第二天回来的时候脸色不太好,标了半天出了好几个低级错误——把标成,漏标了两个关键数字。
小敏在休息的时候悄悄跟林晨说:赵琳昨天好像是因为身体不舒服,她最近经常揉眼睛。
林晨想了想,在工位上搜了一下,下单了一个显示器护眼滤光片和一把人体工学椅,第二天送到标注间。他没跟赵琳解释,就是把旧椅子换了。赵琳看到新椅子的时候顿了一下,坐上去试了试,然后低头继续标。
第三周结束时质检结果:小敏93%,周昊94%,赵琳89%。综合准确率过了93%的线。
月底,标注数据集的总量爬到了三千二百条人工标注样本。加上张雨那边自动标注后人工交叉验证的批次,总量接近五千条。林晨在项目文档里更新了数据端的最新数据,没有发群消息。他走到张雨工位旁边说了一句:数据够了,下周一启动智研1.0训练。
第273章 金融模型训练
五月第一个周一的凌晨两点,张雨往嘴里塞了第四杯美式。纸杯已经凉透了,他也不在乎,灌下去的时候胃里一阵痉挛。训练集群的监控面板占据了他两块屏幕——左边是GpU利用率曲线,右边是loss值的实时折线。
loss在第八百步的时候突然翘了一下。
张雨盯着那个跳动的数值,手指悬在键盘上方没放下来。翘一下正常,训练刚开始,梯度还不稳定。他等着。loss回落了,继续往下走。他松了口气,靠在椅背上,拿起手机看了一眼时间——2:17。美团上点了份黄焖鸡,四十分钟前下的单,骑手还在三公里以外。
六小时后,第一轮SFt训练跑完。
张雨把评估脚本挂上去,在工位上趴了大概四十分钟。脖子酸得厉害,起来的时候左胳膊整条都是麻的。他揉着胳膊等评估结果刷出来,屏幕上逐行跳出benchmark的得分——
他愣住了。
研报关键信息抽取准确率61.2%。财报数据提取58.7%。政策影响分析一致性52.3%。跟基座模型比,平均只提了不到六个百分点。
六个百分点。五千条标注数据喂进去,调了一整夜的参数,提了六个百分点。
张雨把评估结果截了图发到项目群里,附了一句话:第一轮SFt结果不理想,我分析一下原因。
九点十分,林晨到了公司。他打开手机看到这条消息,站在电梯里重新看了一遍那几个数字。61.2%、58.7%、52.3%——这些数字他太熟悉了,FinGpt v3基座模型在投研任务上的初始表现就是这个水平附近。五千条专门标注的金融投研数据,加上整整一轮微调,几乎等于白干。
他走进办公室的时候张雨已经在了。桌上摆着三个空咖啡杯和一个外卖盒,黄焖鸡的米饭剩了大半碗,菜已经干成一层油膜贴在盒底。张雨的头发支棱着,黑眼圈重得像挨了一拳。
过拟合了。张雨没等林晨问,直接说结论,我回查了训练日志,loss在两千步之后就几乎没有下降,但验证集上的指标开始发散。模型把训练数据里的pattern背下来了,换一份没见过的研报就傻了。
林晨把评估报告翻到验证集那一页。确实,训练集上的loss已经收敛到了很漂亮的一条水平线,但验证集的loss从一千八百步开始就往外飘了。典型的过拟合曲线。
学习率设多少?
2e-5。保守值。
太保守了反而不好——林晨皱着眉,学习率小意味着模型在参数空间里走得太慢,只学到了训练集表面上的关联,没机会往深处走。而且你训练了多少个epoch?
三个。
三个epoch配2e-5的学习率,模型根本没有动力跳出训练数据的局部最优。林晨拿过张雨的键盘,在终端里翻了训练配置文件,学习率调到5e-5,epoch降到两个,加dropout 0.1,再加一层gradient clipping——阈值1.0。另外,数据增强做一下:把研报里同一句话的不同表述方式手动加进去,比如净利润同比增长23.5%归母净利增幅23.5%,让模型知道这是同一个意思。
数据增强那个得让标注组帮忙——
我去协调。你先把第二轮训练的配置改好,下午我带人把增强数据补上,晚上重新开跑。
张雨点头,但没动。他盯着屏幕上那条验证集的loss曲线,嘴角抿了一下。
林晨看出来了。别想那一轮了。数据第一次喂进去,不理想是正常的。我们五千条样本量不算大,过拟合的风险本来就高。调整策略再来就行。
我知道。张雨的声音有点干,就是——折腾了一个通宵,结果等于什么都没干。
不算什么都没干。你现在知道了2e-5的学习率配三个epoch会过拟合——这是有用的信息。
张雨苦笑了一下,开始改配置文件。
下午两点,林晨把三个标注实习生叫到小会议室,把数据增强的需求交代下去。小敏问:林总,同一句话的不同表述要加多少条?
每个核心金融术语至少覆盖三种常见写法。营业收入营收主营业务收入归母净利润归属于母公司股东的净利润毛利率销售毛利率——你们做标注的时候应该见过这些写法。另外研报里还有一些口语化的表达,比如业绩大增盈利修复,也列进去。
小敏记在笔记本上,另外两个实习生也开始翻自己之前标注过的文档,把同义不同写的表达摘出来。
傍晚六点,增强数据补了将近八百条。张雨重新检查了一遍训练集的分布,确认没有引入明显的偏移,然后提交了第二轮SFt任务。
今晚我来盯。张雨说。
你回家睡一觉。林晨挡了他,昨天熬了一宿,今天再熬,明天脑子是糊的。训练跑起来不需要人盯着,设好early stopping和checkpoint,明天早上看结果。
张雨犹豫了一下。那我设个凌晨四点的闹钟起来看一眼loss曲线——
随便你。但别再喝四杯咖啡了。
张雨嘿嘿笑了一声,开始收拾桌上的外卖盒。
第二天早上八点半,张雨在林晨的工位旁边等着。这次他换了件t恤,头发洗过了,但手指还是在微微抖——不是紧张,是昨天喝太多咖啡的后遗症。
出来了。第二轮SFt。他把笔记本转向林晨。
屏幕上是新的评估结果。研报关键信息抽取准确率82.7%。财报数据提取79.4%。政策影响分析一致性76.8%。风险因子自动识别74.1%。
比第一轮好了将近二十个百分点。
这次对了。张雨的声调明显高了一截,验证集和训练集的loss差距缩小到合理范围,early stopping在第一千七百步触发了——说明模型在第二个epoch的早期就学到了足够好的泛化能力,没有过拟合。
林晨看着那几个数字。二十几个百分点的提升,从五十多到七十多到八十出头——放在大模型微调的语境下算很好了。但跟之间还有一段距离。八十出头的准确率意味着每五次判断有一次是错的,在金融场景下,错一次就可能漏掉一个风险因子或者误读一条关键数据。
接下来上RLhF。林晨说。
RLhF的训练比SFt复杂。核心环节是偏好标注——要让人来判断模型给出的两个回答哪个更好。但的标准在金融场景下极度微妙。
林晨从金融事业部借了两个分析师来做偏好标注。一个叫赵锐,做了五年行业研究员,看研报比看小说多;另一个叫方颖,从券商研究所跳过来的,对合规和表述规范极其敏感。
第一天标注,两个人就吵起来了。
赵锐指着屏幕上A和b两个回答:这个A明显更好——它把毛利率变动的驱动因素拆成了量和价两个维度,逻辑链条完整。b虽然也提到了毛利率,但没有区分驱动因素。
方颖摇头:A的逻辑是完整,但你注意到没有,它引用的那个数据源写的是wind一致预期,原文是wind预测均值——虽然意思一样但表述跟原文不一致。在合规审查下,这种改动可能被认定为信息失真。b虽然没拆驱动因素,但它引用的数据源跟原文一字不差。
那你觉得b好?
在投研场景下,数据溯源的准确性优先于逻辑的完整性。逻辑分析师可以自己补,数据一旦标注错了,下游用起来就是错的。
两个人各执一词。林晨坐在旁边听完,说了一句:两个标准都对,但优先级不同。投研场景下——信息准确性第一,逻辑完整性第二。A的逻辑再好,数据源引用有偏差就扣分。但b的数据准确也不能掩盖逻辑缺陷——两个维度同时评分,最终取加权和。
他打开标注规范文档,在偏好评估标准那一栏加了三行字:
信息准确性权重0.4,逻辑连贯性权重0.35,合规安全性权重0.25。当A在信息准确性上低于b时,即使A的逻辑连贯性评分更高,仍标注b为偏好项。
赵锐看完这个标准,咕哝了一句:行吧,数据准确性高于一切——这是你们做量化的人的思维。
金融行业的底线。林晨回了他一句。赵锐没再说话。
三天时间,赵锐和方颖标注了一千对偏好对比数据。每一对对比都要在三个维度上分别打分、写评语、再判定偏好。到最后一天下午,方颖的眼睛已经布满血丝,赵锐的脖子上贴了两片膏药。两个人互相检查了对方的标注,又吵了两回,最终把分歧样本提交给林晨仲裁了三十多对。
一千对偏好数据入库。张雨在当天晚上启动了RLhF训练——先训练奖励模型,再跑ppo对齐。
这次张雨没有熬通宵。他设置了checkpoint自动保存,把手机闹钟调到凌晨四点半。闹钟响的时候他翻起来看了一眼后台的reward model训练曲线——loss在稳步下降,没有异常。他又睡了。
第二天早上七点四十分,张雨到了公司。RLhF训练已经跑完了。他没有立刻打开评测结果,而是先去茶水间泡了杯茶。手还是抖,昨天那几杯咖啡的咖啡因还没代谢干净。他端着茶杯回到工位,深吸了一口气,点开了最终评测报告。
屏幕上逐行刷出数字。他的目光从上往下扫——
研报关键信息抽取准确率:89.3%。
他停了一下。比第二轮SFt的82.7%又提了将近七个百分点。RLhF确实有效。
财报数据自动提取准确率:92.1%。政策影响分析一致性:87.6%。风险因子自动识别:85.4%。
他往最下面看——平均综合得分:88.6%。
百分之八十八点六。
张雨放下茶杯。他没有喊出来,也没有跳起来。他盯着那个数字看了大概十秒钟,然后拿起手机给林晨发了一条消息:
出来了。88.6。你来的时候到我工位上看。
八分钟后林晨到了。张雨把屏幕转过来,没有说话,让林晨自己看。
林晨的视线从上往下走,速度很慢。他看到89.3%,眉梢动了一下;看到92.1%,嘴角微微收紧;看到最下面的88.6%,他的手搁在桌沿上,手指轻轻敲了两下。
对比数据呢?
张雨切到另一页。同样是十份真实研报的零样本测试——通用大模型在关键信息抽取上的准确率是63%。智研1.0是89.3%。中间差了二十六个百分点。
这十份研报模型训练的时候没见过?
绝对没见过。国泰证券上周新发的,我专门挑的发布时间在训练数据截止之后的。
林晨站直了身体。他没说话,在脑子里过了一圈——88.6%的综合准确率,在金融投研这个场景下意味着什么。够不够推向商业化?够,但不算宽裕。每十次判断有一次出错的概率,在机构客户的使用场景下仍然需要人工做最终复核。但作为工具,这个精度已经过了及格线。
他更在意的是另一件事——这个模型从第一次SFt的失败,到调整策略后的效果跃升,到RLhF的进一步拉高,整个过程证明了一件事:五千条高质量标注数据确实能撑起一个垂直模型——这个判断没错。
但推向商业化意味着另一组问题:客户会不会接受88.6%的准确率?监管怎么看待AI输出的合规责任?商业场景下错了就是投诉和退单。
他权衡了几分钟。
发一份给陈博士。他说,另外准备一下——后天跟金融事业部和产品部做一个方案评审会,我们讨论智研的商业化路径。
商业化?张雨的语气里带着一点迟疑,88.6%够了吗?我觉得还可以再跑一轮——
不是够不够的问题。林晨打断他,再跑一轮当然还能再提几个点,但商业化评审不代表马上就交付。评审是让各方看效果、定方向、对齐预期。如果等到九十多分再启动商业化流程,时间窗口就被人占了。
张雨没再反驳。他低头看了一眼屏幕上那个88.6%,把评测报告导出成pdF,拖进了陈博士的共享文件夹里。
第274章 效果突破
五月中旬的评审会安排在十一楼的大会议室。林晨到的时候,屏幕已经亮了,智研的demo界面停在首页——一个白色底色的简洁页面,中间是文本输入框,右侧是文件上传区域。
人陆续进来。陈博士坐了主位,面前一杯白水,没碰。孙总在对面落座,他今天穿了件深蓝的polo衫,进来的时候只跟陈博士点了个头,没跟其他人打招呼。刘姐带着产品部的两个人坐在侧边,电脑已经打开,估计在记会议纪要。陈铭靠墙坐,手机扣在桌上。张雨坐在最靠门的位置,手边一台笔记本跑着后台监控——推理日志、GpU占用率、响应延迟,全部实时盯着。
九点整,陈博士看了一眼全场:开始吧。
林晨站起来走到屏幕旁边。他没打开ppt,直接切到了demo界面。
今天不做录屏演示——直接用智研1.0跑真实案例。在座各位谁有最近的研报,现场丢给模型跑。
会议室安静了两秒。这种演示方式风险很大——提前录好的视频可以剪辑、可以重来,现场跑意味着模型可能输出不准确、甚至出错。林晨扫了一圈在场的人,看到刘姐微微皱了皱眉——产品部的人天然偏好可控的演示流程。
孙总从包里抽出一个平板,翻了几下。国泰证券上周发的《2025年二季度A股策略报告》。四十七页。你确定在这个会上跑这份?
全篇粘贴进去。林晨说。
孙总把平板递给旁边的助理,助理把pdF导出成文本,四十七页的内容全部复制粘贴进了智研的输入框。文字滚了大概十秒钟才停住,密密麻麻挤满了输入区域。
林晨点了提交。
后台的推理日志开始在张雨的屏幕上刷。token消耗数、attention分布、推理层数——一行一行快速滚动。张雨的手放在键盘上,没打字,眼睛跟着日志走。前五秒一切正常,GpU利用率拉到了百分之七十八,推理延迟在预期范围内。
第六秒,延迟突然跳了一下——从正常的0.3秒涨到了1.2秒。
张雨的眉头压下去。他飞快地扫了一眼GpU监控——显存占用率正常,没有oom。那延迟跳升只有一个可能:模型遇到了一个特别长的注意力跨度计算节点。四十七页的研报里有大量交叉引用——如图3所示详见第38页附表——这些跨页面的引用会让注意力机制在全文范围内做高开销的检索。
他抬头看了一眼大屏幕。界面上显示着正在分析中的等待动画,三个灰色的圆点在缓缓跳动。会议室里没人说话。孙总靠在椅背上,目光从屏幕移到林晨脸上,又移回去。
林晨站在屏幕旁边,手插在裤兜里。他的目光没有看屏幕——在看张雨。张雨的眉头松了一点,对他做了个手势——右手食指画了个小圈,然后竖起来。正在处理,没问题的意思。林晨微微点了一下头,表情没什么变化。
二十八秒后,大屏幕上的等待动画消失了。输出开始逐段渲染。
第一部分——核心结论摘要。七句话。总量观点、配置建议、核心风险提示,一个不缺。林晨快速扫了一眼,内容跟他印象中那份研报的核心结论吻合。
第二部分——关键数据表格。自动提取的结构化表格,Gdp预测值、cpI中枢、企业盈利增速预测、主要行业配置建议及权重。每个数字后面跟着原文出处的页码标注。
林晨的目光扫到表格第四行——企业盈利增速预测那一栏。模型输出的数字是8.5%,页码标注p.23。他心里紧了一下。他不记得原文中这个数据是不是8.5%。如果这个数字错了,整个演示的公信力会打折扣。
他没有去看张雨,也没有去看陈博士。他保持姿势不动,等孙总先开口。
孙总盯着表格看了大概二十秒。然后他拿起平板,翻到第二十三页,手指在页面上划了几下。
8.5%,对。孙总把平板放下来,页码也对。
林晨的肩膀松了半寸。他自己都没注意到刚才绷着。
第三部分输出——全文逻辑链条图。一棵树状图从宏观经济判断到行业选择到个股筛选,每个节点标注了支撑该判断的论据和原文数据来源。图形在屏幕上渲染的时候有一瞬间的卡顿——大概一秒半——然后完整展开了。
刘姐把笔记本转过来给旁边的人看了一眼,低声说了句什么,没听清。
孙总没急着说话。他从助理手里拿回平板,自己翻了三分钟,把模型输出的三部分内容跟原文逐项对照。最后他抬头看向林晨。
这个表格里的数字——每一个都能在原文里找到?
每一个都有溯源日志——点任意一个数字会跳转到原文对应段落。
自动提取的准确率呢?
关键数字提取准确率目前是92.1%。林晨停了一下,剩下7.9%的误差集中在嵌套超过三层的层级化表格——研报里那种多层表头加合并单元格的格式,ocR和解析还处理不好。
够用。孙总说了两个字,然后靠回椅背,92%的提取准确率意味着人工从逐页翻研报变成抽查核验。效率提升的量级很大。
刘姐这时候插了一句:但如果客户用了这个工具,那8%的错误导致了一个投资判断的偏差——责任算谁的?
会议室安静了两秒。这个问题比数据准确率更尖锐。
林晨看向刘姐:智研的定位是辅助工具,不是决策工具。产品端会在每一份AI输出上标注仅供参考,不构成投资建议的合规提示。同时我们设计了溯源链——每一个结论都可以追溯到原文出处,用户可以自行验证。法律责任边界在产品协议里会明确划定。
那用户为什么不用通用大模型?便宜,甚至免费。刘姐追问。
因为通用大模型在投研任务上的关键信息抽取准确率只有63%。林晨的语气平淡,差了26个百分点。在金融场景下这个差距是决定性的——63%意味着三次判断有一次是错的,89%意味着十次判断有一次偏差。分析师不会用一个三分之一的概率出错的工具。
刘姐点了点头,不再追问,低头在笔记本上写东西。
陈铭在旁边一直没说话。这时候他开口了:林总,逻辑链条图那个功能——如果在研报的逻辑本身有矛盾的情况下,模型怎么处理?比如一份研报里宏观部分看多消费,但行业配置部分又低配消费——模型输出逻辑链的时候会不会强行弥合这种矛盾?
这个问题很刁钻。林晨看了陈铭一眼——陈铭的表情很平静,但这个问题踩在了模型设计的一个真实痛点上。
目前版本不会主动弥合矛盾。林晨如实回答,如果检测到逻辑冲突,模型会在对应节点上标注逻辑冲突标签,而不是强行统一。这个行为是训练数据里的标注规范决定的——我们在标注阶段就要求标注员遇到研报内部矛盾时标记出来,而不是忽略。
陈铭没再说话,微微点了一下头。
孙总在平板上又翻了大概一分钟。他找到一份研报的某个段落,抬头对林晨说:你用智研跑一下这段。
他把平板递给助理,助理把那段文字复制出来贴进输入框。林晨扫了一眼——那是一段关于新能源行业政策分析的段落,大概六百字,里面嵌了两个表格引用和三条跨行业关联数据。
提交。这次输入短,模型六秒就输出了结果。
林晨先看了一眼输出内容。然后他的呼吸慢了半拍。
模型在政策影响方向的判断上标了。但原文那段话的措辞是补贴退坡幅度低于市场预期——低于预期确实是正面影响,但这个判断需要一层推理:先理解本身是负面,再理解低于预期翻转为正面。模型做对了这层推理。
但让林晨紧张的不是结果对不对,是推理路径的展示方式。模型在输出中直接写政策影响方向:正面(退坡幅度低于预期),没有展示退坡=负面→低于预期→翻转的中间步骤。如果分析师不仔细看原文,只看模型结论,可能误解为政策是正面的而忽略退坡这个前提。
他没有在会上指出这个问题。但他记住了。
孙总看完输出,没说话,把平板收了起来。
陈博士把水杯拿起来喝了一口,放下。林晨,智研1.0的核心壁垒在哪?
这个问题林晨想过很多遍。但如果回答垂直数据领域微调就太浅了——这些东西别人也能做,只是时间和成本的问题。
两个壁垒。他说,第一个是显性的——数据授权和标注质量。五千条金融投研场景的高质量标注样本,加上券商授权的研报训练数据,这套数据的获取周期和合规成本是新进入者绕不过去的。第二个——他停顿了一下,是隐性的。标注规范的制定、偏好标注的优先级设定、训练策略的调整——这些决策背后需要对金融投研场景的理解。同样的数据、同样的模型架构,由一个没有金融实操经验的人来设计训练流程,产出的效果会跟智研1.0差一大截。
陈博士看了他几秒钟。然后说了八个字:你做量化那三年,值了。
这句评价很轻,但在场的人都听见了。孙总微微偏了一下头,像是重新审视了一遍林晨。刘姐在笔记本上停了笔,抬头看了一眼陈博士又看了一眼林晨。陈铭的表情没什么变化,但他在手机上打了个字,不知道记了什么。
评审会没有当场做结论。孙总走的时候经过林晨身边,停了一下。国泰证券那边我对接。内测可以安排他们三个行业研究组先上。
什么时候能开始?
六月底之前把环境搭好。
孙总走了。陈博士最后离开会议室,走到门口时回头看了林晨一眼:商业化路径方案写完发我。
门关上了。林晨站在空了的会议室里,大屏幕上还挂着智研1.0的输出界面。他盯着那段关于新能源补贴退坡的分析结果,把刚才记下的那个问题在心里又过了一遍——模型跳过了中间推理步骤直接给结论,这个问题必须在产品化之前解决。不然到了客户手里,总有一天会因为一个被跳过的前提条件,让某个分析师做出误判。
他拿出手机,给张雨发了一条消息:
RLhF的偏好标注规范加一条——当模型输出涉及低于预期高于预期这类需要翻转推理的判断时,要求模型在输出中展示中间推理步骤。明天碰一下怎么改训练数据。
发完消息,他关掉了屏幕。
第275章 产品化
六月第一周,智研项目正式进入产品化阶段。
评审会定在周二下午三点,大模型应用部的小会议室。空调开到了二十四度,但屋里还是闷——金融事业部那边来了三个人,加上产品部和林晨的团队,十二个人挤在一张长桌两侧,投影仪的热风从身后吹过来。
刘姐站在投屏前面,遥控器换到第一页。三张产品架构图已经在屏幕上排好了——她显然准备了一个周末。
ApI接口层。她点开第一张图,智研核心能力通过ApI输出——文本理解、信息抽取、摘要生成、合规审查。券商在自有交易软件里嵌入调用,客户看研报时直接拉AI分析结果。这块不复杂,技术侧已经验证过了。
林晨点头。
web工作台。第二张图切进来,面向券商分析师和基金研究员。上传研报、自动分析、人工复核、协同批注。定位很明确——帮分析师省时间,不是替他们做判断。分析师最烦的是在四十七页报告里翻关键数字,我们帮他三秒找到。
孙总插了一句:国君那边三个行业研究小组愿意做第一批试用,我上周跟他们所长吃了个饭,口径松了。
刘姐记了一笔,翻到第三张图,c端小程序——
她话还没说完,林晨敲了一下桌面。
刘姐,c端先缓一下。
刘姐停住了,遥控器握在手里没放下。缓?这块我上个月就开始跟前端排期了。
投顾牌照的事你想过没有?林晨靠在椅背上,语气很平,用户输入关注的公司名,系统推送研报摘要和关键数据——这个动作在监管眼里算什么?算不算投资建议?我们手里有牌照吗?
会议室安静了三秒。
刘姐把遥控器放到了桌上。小程序每一条结果都标注了数据来源,末尾加仅供参考,不构成投资建议
你觉得这行字能挡住监管?林晨看着她,去年某某财富被罚的两百万,就是因为在App里做了个股诊断功能,底部也加了免责声明。监管认的是实质——你实质上就是在帮散户做投资决策参考。
刘姐没接话。她低头翻笔记本,翻了两页,抬头时语气变了:那你的意思是,c端先不做?
先不做。林晨说。
先不做的代价你想过没有?刘姐的声音没提高,但节奏快了,小程序是获客入口。没有c端流量,ApI和web工作台卖给谁?券商采购流程平均六到九个月,你指望q4内测完了明年q1就能有客户签约?没有用户量做背书,销售团队去谈什么?
可以先用免费ApI额度做获客。林晨说。
免费ApI获客?刘姐摇头,开发者社区那帮人会把你接口薅到爆,转化率不会超过百分之五。你做过互联网产品吗?
这句话一出来,桌上有两个人同时低下了头看笔记本。
林晨没有回应这句话本身。他说:牌照风险是硬风险。你做产品规划不能绕过硬风险去画蓝图。
两个人对视了几秒。刘姐先移开了目光,拿起笔在第三张架构图旁边写了两个字——。
先跳过c端,后面再说。她清了清嗓子,下一个议题,定价。
陈铭举了手。他在团队里话不多,但每次开口都带着一股子拧劲儿。ApI定价我有个问题。
刘姐示意他说。
按调用量阶梯定价——这个方案我看了,起步价定在每千次调用八十块。陈铭翻出一张自己画的表格,但问题是,金融行业的ApI调用量波动极大。季度末出研报高峰期,单客户日调用量可能飙到平时十倍。按阶梯往上走,单月账单会突然暴增——客户财务部门看到这种波动会直接卡预算。
那你的方案呢?林晨问。
月封顶。比如月费三千封顶,超出部分免费或者极低价。陈铭说,客户要的是可预测的成本,不是用得越多越贵的惩罚机制。
林晨看向刘姐。
刘姐皱着眉头想了几秒。月封顶会影响收入天花板。高峰期是最赚钱的时候——
高峰期也是客户最容易因为账单暴增而跑掉的时候。陈铭说。
这句话戳到了点上。刘姐沉默了一会儿,在笔记本上画了个圈,把陈铭的方案标了出来。
定价模型再磨一版,下周一给我。她对陈铭说。
会议继续。时间线——刘姐给出来的规划是q3产品研发,九月底完成1.0版本;q4跟国泰证券做封闭内测;明年q1正式发布。
孙总听完时间线,摘下眼镜擦了擦。q4内测只有国泰一家?
金融事业部那边还有两个合作客户可以加入。刘姐说。
两家券商加一个基金,内测用户总共不到三十个人。孙总把眼镜戴回去,你们有没有想过一个问题——万一q3研发延期,q4内测就要往后推,明年q1的发布就会卡在春节前。金融行业春节前两个月是全年最忙的时段,没人有精力配合你做产品上线。那就得等明年q2。一个季度的时间差,市场上可能已经冒出两三个同类竞品。
不会延期。林晨说。
孙总看了他一眼。你保证?
我保证技术侧不延期。林晨顿了一下,但产品侧如果有需求变更——
产品侧不会在q3中途改需求。刘姐截断了他的话,我已经跟团队说了,q3的需求冻结上个月就签了字。谁改谁负责延期成本。
孙总没有再追问。但他离开会议室的时候在门口停了一下,回头对林晨说了一句:q3如果到八月底进度不到百分之七十,提前跟我说。别等九月底才告诉我完不成。
门关上了。
会议室里剩下刘姐、林晨、陈铭和张雨四个人。
刘姐开始收拾投影仪的线。c端的事,你再想想。她说这话的时候没看林晨。
我想过了。林晨说,你可以先做小程序的原型和交互设计,但不上线。等我们拿到投顾牌照的合规意见书之后再推。设计周期刚好可以跟q3研发并行——不浪费排期,也不踩红线。
刘姐动作停了一秒,然后继续收线。行。这样能接受。
张雨在旁边小声问了一句:投顾牌照的合规意见书要多久能拿到?
问了法务,最快四到六周。林晨说。
四到六周之后可能q3都过了一半了。张雨嘀咕。
设计稿出来之前不影响。刘姐把线卷好塞进包里,前端那边我重新排一下优先级,q3前半段集中做ApI和工作台,小程序放后半段。
她拉上包的拉链,站起来,走到门口又转过身。林晨,我知道你谨慎是对的。但你也要理解——产品经理看的是窗口期。c端这条赛道,晚半年可能就晚了。
晚半年总比被罚两百万强。
刘姐笑了一下,没再说话,推门出去了。
陈铭还坐在原位没动。他面前的笔记本上密密麻麻写满了数字——ApI定价模型的推演,阶梯和封顶两种方案的交叉对比,边际成本和客户流失率的估算。
月封顶的事你再细化一下。林晨对他说,把不同调用量区间下的收入差异算清楚,给刘姐一个有数据支撑的方案。
陈铭合上笔记本。
张雨最后一个走。走到门口时他回头看了一眼林晨——欲言又止。
智研现在88.6%的综合准确率,产品化够用吗?张雨问,我的意思是——内测阶段用户一旦发现分析结果有误,信任感会断崖式下降。88.6意味着每十个结果里就有一个多是不准的。
所以内测阶段有一项任务是收集人工修正数据,反哺训练。林晨说,目标是在正式发布前把综合准确率推到92以上。
那需要多少修正数据?
至少两千条。林晨说,国泰证券那三个研究组,加上金融事业部的两个客户,封闭内测两个月——如果每个用户每天修正五到八条——
张雨在脑子里算了一下,点了点头。够。前提是他们真的愿意每天花时间修。
所以要选好种子用户——不是随便拉几个分析师凑数,是找那些真正在研报上花时间、对效率有刚需的人。林晨站起来,你去跟孙总要一份国泰证券研究组的名单,我需要知道这三组人分别覆盖哪些行业、日常研报阅读量大概多少。
张雨应了一声出了门。
会议室空了。林晨坐在椅子上没动。空调的压缩机停了,屋里突然安静得能听到走廊远处有人打电话的声音。
他打开笔记本,翻到空白页,写了几个字:智研·下一步。
封闭内测——国泰证券三个研究组加金融事业部两个客户,目标用户二十到三十人。稳定运行两个月后评估迭代方向。
效果迭代——内测过程中收集人工修正数据,反哺模型训练。正式发布前将综合准确率从88.6%推到92%以上。
定价策略——ApI按调用量阶梯定价,月封顶待定。web工作台按席位年费加定制化服务包。第一个季度不追求收入,追覆盖率和使用时长。
他写完又看了一遍,合上笔记本,看了眼时间。
他站起来,关了投影仪,推门出去。
第276章 林浩的进步
六月中旬,林浩在厨师学校进入了最后一个月——综合实训阶段。
前两个月的专项训练成果在这个阶段开始集中检验。刀功方面,直刀、斜刀、花刀全部达到标准速度,一筐土豆切成火柴棍粗细的丝,从最开始需要一个多小时到现在三十几分钟。火候方面,鱼香肉丝、京酱肉丝、尖椒肉丝这些基础川菜的火候控制达到了能出活的水平。调味方面,几百次重复练习让鱼香味型、宫保味型、麻辣味型的糖醋盐辣椒花椒配比形成了肌肉记忆,不用每次翻本子也能调出稳定的味道。
综合实训的内容是模拟餐厅的完整出餐流程。早上八点到灶前,备料切配,十一点开始接单,按照外卖单的节奏同时管控四口灶,保证每道菜在规定时间内出品且品质一致。这个阶段考的已经不只是技术——是多任务调度和高压下的稳定输出。
实训厨房跟前两个月用的训练灶台不一样。训练灶台是一人一位,中间有隔板,学员之间互不干扰。实训厨房撤掉了隔板,八个人四排灶台面对面站着,间距不到半米,跟真实餐厅后厨的密度一样。灶台上方是排烟罩,六台大功率抽风机同时运转,轰隆声盖住了旁边人说话。灶台前方贴着一块小屏幕,外卖订单一条一条往上刷。
林浩第一天就翻了车。
上午备料阶段一切正常。十一点接单,头两单顺利出了——鱼香肉丝三分钟,麻婆豆腐接上。他正往第三口灶的锅里倒油准备做干煸四季豆,余光瞟到屏幕上已经刷到了第六单。手上的动作不自觉地加快了——四季豆还没断生他就起锅装盘。
慢了。旁边灶台的学长老周端着锅侧身经过他身后,胳膊肘撞到了林浩的右手。林浩正端着刚出锅的四季豆往盘子里倒——这一撞,盘子歪了,四季豆撒了小半在灶台上,油渍溅到右手手腕内侧。他没叫出声,但手一抖,剩下的四季豆全扣进了盘子里,卖相全毁。
他咬着牙把盘子推到出菜口,回头拿抹布擦灶台上的油渍,同时余光扫屏幕——第四单和第五单的倒计时已经开始跳红了。他伸手去抓第四单的食材,脑子里全乱了——四季豆毁了要补做,第四单第五单还等着,第七单第八单又弹了出来——
油溅到手腕的地方开始发烫。他用左手背蹭了一下,继续翻锅。但节奏已经全碎了——第四单的宫保鸡丁花生米炸过了头,第五单的水煮牛肉盐放多了他自己都尝出来了。
中午高峰期结束。八张单,出菜超时两张,品质不合格一张。合格率百分之六十二。
黄师傅站在出菜口后面,把不合格的三盘菜挨个尝了一口。然后他把筷子放下了。
林浩,过来。
林浩走到出菜口。黄师傅没看他,低头用指头弹了一下那盘水煮牛肉的碗边。咸了。你自己知不知道?
知道。盐放早了,后面又加了一次——
不是盐的问题。黄师傅抬起头,目光很直,你被撞那一下之后,后面五张单全乱了。你手没问题——问题在脑子。手上还在炒菜,心里已经慌了。油烫了一下你就六神无主了?
林浩垂着眼睛没说话。
黄师傅伸出两根手指点了点灶台方向。你去后厨看过没有?中午饭点,四十张单同时进,六个人挤在八平米的灶台区域,锅碰锅、人碰人,油溅、火燎、汤洒——全是常态。你要是因为被碰了一下就崩,你去哪个后厨都活不过三天。
厨师的手要稳。没人撞你的时候稳谁都会,撞了还稳才算本事。黄师傅的声音不高,但字字砸得很实,回去,把出错的菜重新做一遍。
那天下午的训练,林浩把水煮牛肉从头到尾做了一遍。牛肉切片、码味、上浆、滑油、调汤、下菜、起锅——每一个步骤他都放慢了速度,把注意力完全集中在手上。做完之后他端去给黄师傅尝。黄师傅吃了两口,没说话,拿笔在记录表上打了个勾。
晚上回到林晨家,苏婉已经做好了饭。林浩洗了手坐到桌边,右手手腕内侧有一道红印——上午油溅的。苏婉看到了,没问,默默从冰箱里拿了块冰用毛巾裹上递给他。
贴一会儿,明天不起泡。
林浩接过来按在手腕上,冰凉的触感让他呼了口气。
今天实训怎么样?苏婉问。
林浩夹了一筷子菜,嚼了两口,说:翻车了。
怎么翻的?
被撞了一下,后面全乱了。
苏婉点了点头,没接话。她了解这个年轻人的脾气——说多了他反而拧巴。
吃完饭林浩回了客房。他把工装外套口袋里那本卷了边的调味记录本翻了出来,从第一页开始看。鱼香肉丝第一次被评酸突出,泡椒味被压制——那是进校第三天的事。往后翻,一页一页,每一页都是一次犯错和一次修正。四十八页。他翻到最后一页,空白的。他从口袋里摸出一支笔,在手背上写了两个字:稳住。
笔迹歪歪扭扭的——他写的时候看着手背上那道红印。
第二天的高峰训练。
上午备料一切正常。十一点开始接单,头三张出得顺利。第四单做到一半的时候出了状况——不是被人撞,是食材出了问题。他伸手去拿配菜区里码好的青笋丝,盒子是空的。上午备料的时候他按照标准量准备了六份青笋丝,但今天单量比昨天多了两张,第六份已经用完了。
他站在灶前愣了半秒——屏幕上第四单的倒计时在跳,第五单第六单又弹了出来,青笋丝没了,手里的锅还烧着油。
他没有停下锅。右手把火调小,左手转身去冰柜里取了一根青笋,抄起菜刀——直刀切丝,三十秒切完一份。这是他练了两个月的速度。切完直接下锅,比从配菜区拿现成的慢了四十秒,但他补回来了。
第七单。第八单。九单。十单。
屏幕上的订单一条一条往上刷,灶台前油烟弥漫,他的视线偶尔被对面的蒸汽挡住,耳朵里全是抽风机的轰鸣和旁边人掂锅的金属声。手腕上的红印还没消,油溅上去还有点刺痛,但他没管——手上该翻锅翻锅,该调味调味,眼睛盯着锅里的食材而不是看屏幕上跳动的倒计时。
十单全出,超时零,品质问题零。
黄师傅在出菜口后面站着,从头到尾没说话。等最后一单出了菜,他低头在评语栏写了四个字:今天合格。
林浩看到那四个字的时候,没激动也没松气——他只是在心里把两个字又念了一遍。
接下来两周的综合实训,林浩再没有翻过车。他学会了在高峰期用余光扫配菜区的存量,提前预判哪些食材可能不够;学会了被隔壁人碰到手肘时右手把锅端稳左手把身体顶回去——不靠喊也不靠让,靠自己的重心;学会了在最忙的时候把注意力收回到面前的这一口锅上,而不是去想后面还有几张单等着。
六月二十九号,毕业考试。
考试在实训厨房里进行。三个指定菜——鱼香肉丝、麻婆豆腐、回锅肉。每道菜限时十二分钟,从切配到装盘全部一个人完成。评分标准:刀功一致性、火候控制、调味准确度、装盘卫生与美观。评委是黄师傅加一位从外面请来的川菜师傅——姓何,五十多岁,国字脸,表情很严肃,全程不说一句话。
二十六个学员分三批考。林浩在第二批。
第一道:鱼香肉丝。切配花了三分钟——肉丝顺纹切,粗细一致;泡椒剁碎;葱姜蒜切末。下锅——油温七成热,肉丝滑散,泡椒末炒出红油,下配菜翻两下,兑汁收锅。十一分钟出品。他端盘子的时候看了一眼——肉丝嫩滑,芡汁明亮,颜色是对的。但他的手微微抖了一下——考试的压力和实训不一样,对面何师傅那双不眨眼的眼睛让他后背发紧。
第二道:麻婆豆腐。切豆腐的时候手一滑——刀刃在豆腐块边缘多划了一道口子,有一块碎了。他停了一秒。换一块重新切,速度比第一次慢了五秒。下锅炒牛肉末、加豆瓣酱炒红油、下豆腐、勾薄芡、撒花椒面。出锅他看了一眼——碎掉的那块豆腐让他端锅时心里咯噔了一下,但最终呈现出来的麻婆豆腐表面完整,牛肉末酥脆,红油光泽均匀。他呼了一口气。
第三道:回锅肉。川菜厨师的看家菜。他深吸一口气开始切配——五花肉煮熟切薄片,蒜苗斜刀切段,每段长度一致。下锅——先煸肉,炒到边缘微卷起焦壳,加豆瓣酱甜面酱,下蒜苗翻两下出锅。他端盘的时候看了一眼——肉片卷边的弧度是对的,蒜苗青绿,酱色均匀。这道他最有把握。
三道菜全部端到了黄师傅和何师傅面前的点评台上。
两位师傅挨个尝。何师傅吃了鱼香肉丝,面无表情;吃了麻婆豆腐,眉毛动了一下;吃了回锅肉,放下了筷子,转头看了黄师傅一眼——那个眼神林浩读不懂。
黄师傅拿起笔在评分表上写评语。他没有写数字。他写的是——
鱼香肉丝:芡汁收得好,泡椒味正。肉丝有一两根偏粗,不影响。
麻婆豆腐:豆腐碎了一块你自己补了——手法能看出来。牛肉末煸得到位,花椒面撒的量刚好让嘴唇微麻不压鲜味。
回锅肉:卷边焦壳到位,蒜苗火候合适。这道你做得最稳。
何师傅在旁边看了黄师傅的评语,点了点头。他在评语栏的末尾写了一行字:刀功基本功扎实,高压下有调节能力。可出师。
黄师傅抬头看着林浩。你是这期二十六个学员里面综合评分最高的。
林浩站在点评台前面,双手垂在身侧。他张了张嘴,想说谢谢,但嗓子眼堵了一下,最后只点了点头。
中级厨师证。到手了。
晚上回到林晨家。林浩推开门的时候,客厅茶几上已经摆好了四菜一汤——红烧排骨、清炒莴笋、紫菜蛋花汤,还有两道是苏婉下午特意做的。其中一道是可乐鸡翅——林浩小时候来林晨家玩,每次苏婉都做这道菜给他吃。那时候他个子才到餐桌高,站在苏婉腿边等着鸡翅出锅,嘴角沾着酱油汁。
另一道是糖醋里脊——林浩在厨师学校练的第一道菜。
苏婉从厨房端着最后一碗饭出来,看到林浩把厨师证放在了茶几正中间——那张盖着红色钢印的证书被他擦得干干净净,摆得端端正正。
她放下碗,把证书拿起来翻看了好一会儿。然后她什么都没说,去厨房把可乐鸡翅又热了一下,端出来放到了林浩面前。
趁热吃。凉了就不好吃了。
林晨坐在沙发上,看着茶几上那张证书。他想起三个月前这个年轻人站在他家客厅门口的样子——肩膀塌着,后背驼着,说话时眼睛看地面,两只手不知道该放哪里。
林浩夹起一块可乐鸡翅咬了一口。酱汁的甜味在他嘴里化开。他嚼了两口,忽然说了一句:婶婶,您做的可乐鸡翅比我在学校做的所有菜都好吃。
苏婉笑着摇头:我就会做这么一道拿手菜——你以后超过我容易得很。
林浩摇头,很认真地说:跟学校做的不一样。他吃了两口,没说话。
晚上林浩洗完碗,回客房之前在客厅站了一会儿。他手里还攥着那本卷了边的调味记录本——四十八页,每一页都是一次犯错和一次修正。
叔,这本子我留着。他说。
林晨看了他一眼。留着。
林浩点点头,转身进了客房。门轻轻带上了。
第277章 周末聚餐
林浩毕业后的第一个周六,在林晨家做了一桌川菜。
说是毕业庆祝,其实没有搞什么仪式感。上午九点林浩就到了,手里拎着两个泡沫箱,是从菜市场直接运过来的。苏婉开门看见他,箱子上还沾着水珠,鱼是活杀的,排骨挑的中段肋排,菜心只取了最嫩的那一把。林浩换了厨师服系上围裙的时候,袖口挽得规整,手上的刀痕已经结了细小的疤。
小叔,灶借我用一下。
林晨从书房探头看了一眼。林浩已经把三口锅支好了,铁勺铲子摆成一排,调料罐按使用顺序排了两行,醋瓶靠左,酱油靠右,盐和糖并排放,料酒放在最顺手的位置。这排布跟他在厨师学校的灶台一模一样。
你把我的灶台改成你的了。苏婉端着洗好的菜心进来,看见调料罐全部移了位置。
婶婶您做菜的时候我再给您摆回去。林浩头也没抬,正在把排骨剁成寸段。刀落下的时候力道刚好,每一下都切断骨头但不震散肉的结构,断面干净整齐。苏婉站在旁边看了两秒,没说话。
备料从下午两点开始。
厨房里响起了第一道声音——菜刀切在砧板上的笃笃笃。林浩切土豆丝,手腕微微带弧度,刀刃贴着指关节往前推,每一根都跟上一根差不多粗细。苏婉站在水槽边洗菜心,抬头看了一眼他的刀法,没说话,继续拧水龙头。
接着是蒜苗斜刀切段的声音,跟切直丝不一样,每一下都带着清脆的断裂声。案板上很快铺了一层斜截面——林浩说斜刀切的蒜苗断口面积大,炒的时候更容易把香味逼出来。乐乐趴在厨房门框上,两眼盯着林浩的手。
浩哥哥你在干什么呀?
切蒜苗。
为什么这样切?
这样切更好吃。
乐乐想了一下,似乎觉得这个答案不够有说服力,但又找不出反驳的理由,就继续趴着看。林浩把切好的蒜苗段推到一边,拿起一块后臀尖肉开始片——左手按住肉面,右手持刀平推,刀身几乎跟砧板平行,每一片都薄到能透光。他把肉片叠起来再切成丝,整块动作一气呵成,中间没有停顿也没有废料。
妈妈,浩哥哥的手好快!乐乐扭头朝客厅喊。
苏婉在旁边笑了一下。你浩哥哥练了三个月。
肉丝切完,林浩拿一个小碗开始调鱼香汁。白醋、白糖、泡椒末——他没用秤,手一抖就倒进去了,但倒完之后用手指在碗口抹了一下尝了尝味道,然后又加了一小撮盐。苏婉注意到了这个动作。
你刚才已经按比例调了,为什么还要尝?
每批泡椒的咸度不一样。林浩把碗放到灶台边上,黄师傅说标准比例是死的,你的舌头是活的。
苏婉没有接话,但她记住了这句话。
四点过半,第一口锅烧到了冒烟。林浩往锅里倒了一勺油,油面刚泛起波纹他就把肉丝下进去了,铁锅里嗞啦一声,油烟跟着蹿起来,肉香裹着油雾从锅边溢出来。乐乐本能地往后退了一步,又忍不住往前凑。林浩左手掂锅,右手持铲,肉丝在锅里翻滚了两下,颜色从红变成粉白。他颠了一下锅,肉丝全部腾起来又落回去,没有一根掉在灶台上。
鱼香肉丝出锅。林浩把盘子推到一边,灶台上那碗调好的糖醋汁下锅时机掐在肉丝刚断生的当口。汁水碰到热锅,冒出一股酸甜的蒸汽,鱼香味瞬间弥漫了整个厨房。苏婉闻了闻,悄悄点了一下头。
第二道是麻婆豆腐。豆瓣酱下到热油里炒出红油——颜色从暗褐变成深红,油面上开始冒细小的泡,林浩等的就是这个时刻。牛肉末煸到酥脆,豆腐块滑进锅里的时候他用铲背轻轻推,不用铲刃——防止碎。勾薄芡,撒花椒粉。他捏着花椒粉罐的手在半空中停了一秒,然后手腕微转,撒下去的量刚好让整盘豆腐面上覆了一层薄雾似的花椒面。苏婉又看了他一眼。
婶婶,你尝一口。
苏婉用筷子夹了一小块豆腐,嘴唇刚碰到就微微一吸——麻味在舌尖上炸开,但立刻被豆腐的鲜嫩接住了,没有抢。她放下筷子,没吭声。
回锅肉是第三道。这是川菜厨师的看家菜,林浩切肉片的时候速度明显慢了下来——每一片都在仔细控制厚度,肥瘦层要分明,下锅之后边缘才能卷出焦壳。他把肉片铺进热油里,锅边响起密集的嗞嗞声,肥肉部分开始透明,边缘慢慢翘起来,微微发黄。蒜苗段最后下锅,翻炒三下出锅。整道菜从下锅到装盘不超过两分钟。林浩把盘子端到桌上的时候,肉片边缘的焦壳还冒着微弱的热气。
第四道是他自己发挥的——鹏城本地的海虾,按宫保的做法走。干辣椒段和花椒粒先在低温油里慢慢逼出香气,等油面微微冒泡的时候虾仁下锅快速滑熟,出锅前撒一把炸花生米。花生米是林浩提前二十分钟用冷油小火慢炸的——外皮微裂,里面还有一点嚼劲,不会发软。这道菜不在川菜经典之列,但虾肉的弹性和宫保味型的复合香意外地合拍。
四道川菜之外,苏婉做了清蒸鲈鱼和白灼菜心。鲈鱼蒸好之后她亲手淋了一勺滚油——葱姜丝在热油里缩了一下,香味跟着油冒出来。白灼菜心配蒜蓉酱。加上乐乐非要加的可乐鸡翅——这是她最爱吃的菜,苏婉每次都做。一桌七道菜摆上来的时候,餐桌几乎放不下了。
乐乐举着筷子在宫保虾球和鱼香肉丝之间来回摆。这个好吃!这个——这个也好吃!她往碗里夹了一筷子虾球,又夹了一筷子肉丝,碗堆成小山。苏婉在旁边看着,轻轻说了句慢点吃,也没拦。
苏婉夹了一块回锅肉放进嘴里,肥肉的焦壳在牙齿间裂开,油脂裹着蒜苗的辛香一起涌出来。她看了林浩一眼。
三个月,进步比我想的大。
林浩筷子顿了一下。婶婶,我就是按学校的标准化方子来的。您做菜十几年了,您那是靠经验和感觉。
经验和感觉也得有底子。苏婉放下筷子,想了想措辞,标准化能保证你每一锅都一样——不出错,不掉链。但真到了灶台上,今天的豆瓣酱可能比昨天的咸一点,今天的蒜苗可能比昨天的老一点,你得靠感觉微调。标准能保你不犯错,但到了灶台上还是得靠感觉来调。
林浩安静地听着,手里的筷子没有动。
你现在底子有了。苏婉说这话的时候语气很平,像在说一件已经确认了的事实,不是在夸他。
乐乐嘴里塞满了虾球,含含糊糊地说:浩哥哥以后给我们做饭好不好?每天都做!
林浩笑了一下。等我去酒店上班了就没那么多时间了。
酒店?苏婉问,定下来了吗?
还没。黄师傅推荐了两家,一家是南山那边的五星酒店,一家是科技园的川菜馆。
你自己想去哪家?苏婉夹了一块鱼肉。
林浩想了一下。酒店。黄师傅说大酒店出餐流程正规,学到的东西多。
林晨夹着菜,插了一句:酒店先干半年。
先去大酒店学规矩——食材管理、出餐流程、跟不同工种的配合。这些东西小馆子学不到。林晨把一块豆腐放进嘴里,嚼了两下,等你在酒店把基本功磨够了,再考虑下一步。
小叔是说——以后可以自己干?
林晨没有正面回答,只是看了林浩一眼。先把基础打好。
林浩点了点头。他说不出太多话,但点了头的样子比说一百句都确定。他给苏婉的碗里添了半碗饭,又给乐乐夹了一块鱼——动作自然,没有犹豫。乐乐吃饭的时候米粒掉在桌上,林浩顺手拿纸巾帮她擦了,苏婉看在眼里,没有说什么。
林晨看了一眼。三个月前林浩刚来鹏城的时候,说话时手总是攥着裤缝,眼神不知道往哪放。现在他端碗夹菜的动作都很顺——手不找地方藏了,眼睛看人时也不会滑开。林晨没有说什么,继续吃饭。
苏婉把鱼身上最嫩的那块肉挑出来放在乐乐碗里。慢点吃,别呛着。
乐乐嘴里塞满了东西,含含糊糊地点头。
饭后苏婉泡了茶端出来。乐乐窝在沙发上捧着平板看动画片,嘴角还沾着酱油。林浩坚持一个人洗碗,苏婉这次没拦。她坐在客厅里端着茶杯,偶尔朝厨房方向看一眼——水龙头冲着炒锅哗哗地响,林浩用钢丝球擦锅底的声音很有节奏,一下一下的。
小叔,林浩的声音从厨房传出来,伴着水声,黄师傅说——好的厨师最后不是靠舌头,是靠鼻子。
苏婉接了一句:你黄师傅说得对。
林晨靠在沙发上翻手机。过了一会儿他听到厨房里水声停了,接着是碗碟摞起来的轻响。又过了一会儿,林浩从厨房出来,围裙已经解掉,手上还沾着水。他站在客厅边上看了一眼苏婉,又看了一眼沙发上刷手机的林晨,再看看缩在沙发角里看动画片的乐乐。
小叔,婶婶,我回去了。明天还要去黄师傅那边拿推荐信。
慢走。苏婉放下茶杯,明天别忘了吃早饭。
林浩嗯了一声,换上鞋出了门。苏婉去厨房看了一眼——灶台擦得干净,锅摞得整齐,连调料罐都被他按原来的位置摆回去了。她打开冰箱,剩下的食材分门别类装在保鲜盒里,每个盒子上贴着标签,写着名字和日期。
苏婉关上冰箱门,站在厨房里看了一会儿。林晨从客厅喊她:茶凉了。
来了。
第278章 投资新高
七月初的一个周六上午,林晨坐在书房里做半年投资复盘。
这是他坚持了三年的习惯——每个季度做一次完整回顾,半年做一次深度复盘。书房的桌上摆着两台显示器,左边是他自己写的投资系统管理后台,右边开着一个空白的复盘文档。空调在头顶嗡嗡地吹,苏婉带乐乐去少年宫上Scratch编程课了,家里很安静。
他先拉出了过去六个月的账户净值曲线。一月初的数字是一百零五万,曲线从那里起步,头两周就往下扎了一下——A股年初跌了近百分之三,他的账户跟着回撤了两个多点,净值掉到一百零二万附近。他点开一月份的详细交易日志看了看,那段时间系统没有触发任何调整信号,风控参数一切正常。他当时判断是正常的市场波动,没有干预。事后证明判断是对的——但一月下旬那几天他每天早上醒来都会先看一眼账户,确认没有出格的事情发生。
二月份开始曲线抬头。新版文本信号层在一月中旬正式上线——他把FinGpt对政策新闻和公司公告的自动分析接入了投资系统的信号层。这层东西他打磨了将近三个月,之前一直在回测环境里跑,没敢直接上实盘。上线后效果来得比预想中快:二月中旬系统通过文本信号捕捉到一条央行关于流动性措辞的微妙变化——合理充裕变成了合理适度,两个字的差异,但系统给出了一个偏紧的信号。林晨当时犹豫了一下,让系统自动减了一成权益仓位。两天后市场确实回调了一波,他少亏了大概一万五。那一笔赚的数字不大,但整个逻辑闭环跑通了——从新闻文本到交易信号到下单执行,全自动,没有人工干预。
三月份净值突破一百一十五万。他拉出二到三月的胜率数据看了看——文本信号触发后的交易胜率比纯技术指标高了十一个百分点。这个数字让他放心了一些,但他也注意到了一个问题:文本信号的触发频率太低,平均两天才出一条有效信号。这意味着在大部分时间里系统仍然靠技术指标运行,文本信号只是偶尔的加成。他在复盘文档里记下了这一点:信号频率需要提升,但精度不能降。
四五月市场进入震荡期,沪深三百几乎横盘。林晨的投资系统靠债市配置在这段时间跑出了正收益——账户缓慢上行到一百二十二万。他点开四五月份的持仓记录看了看,债基的占比从年初的百分之三十提到了百分之四十。这个调整是系统自动做的——震荡市里降低权益仓位、加配固收,逻辑没问题。但他翻着翻着眉头皱了一下——四月下旬有一笔可转债交易差点出问题。
那是一只跌破转股价的转债,系统根据均值回归模型发出了买入信号,仓位自动打到了预设上限的百分之八十。林晨当时看了信号觉得没问题就放行了。结果第二天发行方发了一则公告——下修转股价的方案被董事会否决了。转债价格在公告发布后十分钟内暴跌百分之八。他的系统在跌幅触碰到止损线的时候自动平仓了——亏了大约一万二。
他重新打开那笔交易的完整日志,从信号触发到平仓,整个过程的每一个时间戳都有记录。止损执行时间是公告发布后第十二秒。他盯着屏幕上那个数字看了好一会儿。如果止损线再低两个百分点,这笔交易就会变成一个窟窿。如果他的止损机制没有设成全自动而是需要人工确认——公告发布后那十二秒他可能根本来不及操作,因为那天他正在公司开部门周会。
他在复盘文档里加了一段:四月二十八日可转债止损事件。事后归因:文本信号层对公告风险的预判不足——模型只分析了公告文本的情绪倾向,没有识别出董事会否决这一类具有强烈方向性的事件信号。需要增加事件驱动型的文本分类模块。
六月行情起来了。智研项目推进的过程中,他从FinGpt v3的优化里拿到了更强的文本信号源——投研场景的文本理解能力反哺到了投资系统的信号层。六月中下旬科技股有一波像样的行情,系统在六月十五日加仓了一组半导体EtF,六月二十三日又追了一笔AI算力方向的仓位。两笔都踩在了行情启动的早期阶段。月底账户从一百二十二万快速升到了约一百三十万。
他把六个月的净值曲线拉出来跟沪深三百做了对比。沪深三百同期涨了大约百分之五。他的账户从一百零五万到一百三十万,涨了二十五万,半年度收益率百分之二十四。
百分之二十四。林晨对着屏幕自言自语。年化接近百分之五十——虽然下半年市场走势不一定能维持这个速度,但系统至少证明了它的持续有效性。
他开始写复盘文档的月度摘要。一月至六月各月关键节点和数据已经在正文里记过了,摘要只补一条结论:文本信号层是最大增量,事件驱动分类模块是最大短板。
然后他写核心结论——半年增长二十五万,半年度收益率百分之二十四。文本信号层是最大的增量来源,但事件驱动分类模块需要补强。风控整体健康,过去二十个月最大回撤控制在百分之八点七以内。
他停笔想了一下。从2022年到现在三年半,初始本金五万,累计净投入大约二十万——中间向亲戚借过三十万加仓,后来还了——目前账户一百三十万。净赚一百一十万,投入产出算下来是五倍半。这个数字不是他最在意的。他更在意另一个指标:回撤控制。最大回撤百分之八点七,意味着系统从来不让任何一次错误变成灾难。
他在文档末尾写了下半年目标:继续稳健增长,补强事件驱动信号模块,争取年内突破一百六十万。
下午两点,苏婉和乐乐从少年宫回来了。乐乐进门就冲进书房找林晨:爸爸你看!我今天做了一个画图的程序!
林晨接过平板看了看——乐乐用Scratch画了一朵花,花瓣是用循环语句画的,重复十二次旋转三十度。他摸了一下乐乐的头。不错。循环用对了。
乐乐欢天喜地跑了。苏婉走进来,手里拿着一杯柠檬水。她把手机递给林晨——复盘文档她已经看完了。
年初到现在赚了二十五万。
比去年下半年多了不少。
文本信号层接入之后信息优势明显了一些。林晨关掉了后台面板,转过椅子面对她。
苏婉在书房的折叠椅上坐下来。那个四月差点出事的转债,你现在修好了吗?
还在改。需要给文本信号加一个事件分类模块——专门识别这一类有方向性的关键词。估计要一两个月。
你说的自动止损——那十二秒——每次都这么快吗?
止损是系统里优先级最高的指令,触发就执行,不需要确认。
苏婉点了点头。她不懂技术细节,但她记住了差点出事自动止损这两个关键词。前者让她后怕,后者让她安心。她没有追问怎么改,而是问了另一个问题。
那二十五万,你打算怎么放?
按上次的资产配置继续分散。一部分配海外EtF和黄金,一部分留在A股和债基里做复利增长,留百分之十现金。
不再买一套房?
资产集中度已经太高了——大平层的房贷月供五万七,再买房压力太大。而且现在房价走势不明朗,不如把钱留在流动资产里。
苏婉想了一下。那你觉得下半年还能赚这么多吗?
不一定。行情好的时候可能更多,行情差的时候可能回撤。我给自己的目标是年收益百分之三十以上——只要复利持续跑下去,十年之后数字会比较大。
百分之三十——那一年大概就是三四十万。
按一百三十万算,一年三十九万。加上我们两个人的工资,家庭年收入大概一百四十万左右。
苏婉在心里默默算了一下。房贷一年六十八万,乐乐的教育和日常开销一年三十多万,加上给父母偶尔的补贴,一年总支出大约一百万。收入减支出,每年能剩四十万上下。
够用了。她说。
林晨嗯了一声。
苏婉站起来走到书房门口,停了一下。你那个四月的事——以后会不会又出?
不能保证不出。但我能保证出的时候系统会自动砍掉。
苏婉看着他的眼睛。她没有接话,点了一下头,出了书房。外面客厅里传来乐乐的声音——她在给苏婉演示那朵用循环画出来的花。
林晨转回屏幕,打开了一个新的代码分支——事件驱动型文本分类模块。光标闪烁了几秒,他开始写第一行import。
第279章 财富自由的定义
七月中旬的一个周六下午,林晨坐在书房里调好摄像头,等着知乎那边的线上分享会开始。
苏婉带乐乐去少年宫上Scratch课了。出门前苏婉站在书房门口看了他一眼:今天这个分享你准备了吗?
准备什么?又不是答辩。
那你一会儿别一紧张就开始报数字。人家请你去是聊经验的,不是听你做财报的。
林晨没接话。苏婉说的对——他确实在备忘录里列了一堆数字:家庭年支出、投资账户余额、年化收益率、被动收入占比。像一个准备上庭的律师,把所有证据都码得整整齐齐。
分享会三点准时上线。主持人叫赵晴,知乎财经区的运营,声音很利落,语速快但不急。线上会议室里已经进了一百多人,聊天区消息滚动得很快。林晨看到弹幕里有人在聊自己的持仓,有人在吐槽最近的市场行情,也有人已经在问嘉宾是谁。
今天我们请到的嘉宾是林晨老师,赵晴开场,他在知乎上写过几篇关于个人投资系统的高赞回答,今天聊的主题是普通人怎么定义财务自由。林老师先简单介绍一下自己的情况?
林晨清了清嗓子。他不太习惯这个称呼。
我就是一个在大厂做技术的,三年多前开始自己搭了一套量化投资的系统,目前账户大概一百三十万。不是什么大资金,但我自己觉得够用了。他看了一眼弹幕,补充了一句,我知道在知乎这个一百三十万可能不算什么——但我是从五万块开始做的。
聊天区立刻有人打字:一百三十万就来讲财富自由?
另一个人跟了一句:深圳有房吗?有房贷吗?
赵晴把问题挑出来念了。林晨本来想绕开,但想想算了。
有房,也有房贷。月供五万七,你们没听错。一年的固定支出大概一百万出头。
聊天区炸了。
月供五万七还说财富自由?
这叫财务自由?这叫财务自由落体。
支出比我还高,哪来的自由?
赵晴笑着帮他解围:大家先别急,让林老师说完嘛。
林晨盯着屏幕上快速滚动的弹幕,心里有一瞬间的犹豫。他原本准备的发言路线是从数字推导到结论——被动收入覆盖支出,所以实现自由。但弹幕的反应让他意识到这个推导有问题。数字太扎眼了。一个年支出百万的人讲财富自由,跟月薪六千还在挤地铁的人讲财富自由,中间隔着一整条鸿沟。
我先回应一下刚才那个问题,林晨说,我知道很多人看到一百万支出会觉得这跟自己没关系。但我想说的是——我说的跟你们理解的可能是两回事。
聊天区安静了一点。有人打了个,有人在等。
我三年半前失业的时候,全部家当大概三十来万块。那时候没人请我来讲分享会。他顿了一下,我后来找到了工作,开始做投资,账户慢慢做起来了。按被动收入覆盖支出这个标准,我确实已经过了那条线。但我今天想聊的不是这条线。
那你想聊什么?聊天区有人直接问了。
林晨看着那个问题,发现自己也不太确定该怎么回答。他在备忘录上写了几个关键词——选择的自由不用为了钱做违心的事有时间想长远的事。但把这些词念出来的时候,他觉得自己的声音像在念课本。
我想聊的是……过了那条线之后的事。他说,很多人觉得财务自由是一个终点——被动收入大于支出,然后你就可以躺平了。但实际上过了那条线之后你会发现……他停住了,因为下一句话他没有想好怎么说。
聊天区有人替他接了:然后发现更迷茫了?
林晨愣了一下。对。差不多是这个意思。
弹幕的画风突然变了。之前在质疑数字的人开始认真起来了。
一个Id叫房贷三十年的用户打了一大段话:我月薪两万二,老婆月薪八千,房贷六千三,孩子幼儿园学费四千。每个月能剩三四千就谢天谢地了。你说被动收入大于支出——我连被动收入是什么都没体会过。但我能理解你说的过了那条线之后更迷茫。因为我发现哪怕我每个月能多存五千块,我也不知道多出来的钱该干嘛。花掉?存着?投资?好像怎么选都不对。
另一个Id叫辞职在家带娃的用户说:我去年裸辞的,手里有大概五十万存款,觉得够躺一阵子了。躺了半年,钱确实还够,但人快要废了。每天早上不知道起来干嘛。
赵晴适时地插了一句:财富自由之后怎么办这个问题比怎么实现财富自由更难回答。林老师,你自己呢?你现在过了那条线之后,最大的困惑是什么?
这个问题砸到了林晨没准备好的地方。他下意识地去看备忘录,但上面写的那些话——选择的自由长期目标——突然觉得全是空话。
说实话,他说,我最大的困惑是——我发现自己对钱的焦虑消失了,但对时间的焦虑反而更强了。以前每天忙上班、忙做投资系统、忙还房贷,觉得时间不够用。现在房贷不是问题了,投资系统也跑起来了,但我反而觉得时间更不够用。不是事情变多了,是我开始意识到很多事不是多给点时间就能做成的。
聊天区有人回了一个表情包:一个人在空旷的房间里转圈。然后一行字:有钱了但不知道干嘛+1。
林晨看着那个表情包,忽然觉得有点荒诞。一百多个人在听一个年支出百万的中年男人讲自己不知道该干嘛。但弹幕里那些共鸣又让他意识到——这种困惑跟数字大小无关。月薪两万和被动收入四十万的人,在然后呢这个问题面前是一样的。但谁也回答不了那个然后呢。
我前两天在想一件事,他接着说,我三十五岁失业的时候,目标很明确——活下去,找到工作,还房贷。那个目标虽然苦,但是清晰的。你每天醒来知道自己要干嘛。现在呢?房贷不是问题了,工作稳定了,投资系统也能稳定赚钱了。但我反而经常问自己——接下来到底要干嘛?这个问题比怎么还房贷难多了。因为还房贷是有终点的,但接下来干嘛没有终点。
弹幕里有人在刷。也有人在打字反驳:你这是凡尔赛,我们还在想办法多赚五千块。
林晨看到了那条弹幕。他想了想,说:你说得对。我没资格跟你说钱不重要——因为我的钱够用了。钱不够的时候它就是最重要的,这个不用我来说。我今天来不是跟你们说钱不重要的。我就是来分享一个自己的体会——就是当你真的不再为钱焦虑的时候,你会发现另一个问题在等着你。那个问题可能比钱更难。
分享会持续了一个半小时。后半段的话题从财富自由慢慢偏到了人生方向,弹幕里开始有人分享自己的经历。一个三十一岁的程序员说自己攒了八十万正在纠结要不要辞职gap一年;一个四十岁的单亲妈妈说自己被动收入覆盖了支出但每天都在焦虑这样下去对不对。
林晨听着这些故事,发现自己没法给出任何答案。他连自己的问题都没想清楚。他注意到弹幕里有一种奇怪的氛围——一开始大家是来听成功者讲经验的,到了后半段,分享的方向不知不觉偏了,变成了一群人在互相倒苦水。赵晴好像也意识到了这个问题,在最后五分钟试着把话题往给一些实操建议上拉,但林晨发现自己说不出什么实操建议。他最后只说了一句:如果你们也在想然后呢这个问题——说明你们已经走过了最难的那一段。至于后面往哪走,我也没有答案。
下线之后,书房安静了下来。下午五点的阳光从窗帘缝隙里照进来,在桌面上拉出一条窄窄的光带。他关掉电脑,在椅子上坐了一会儿。
门锁响了。苏婉带着乐乐回来了。乐乐的鞋还没换好就冲进书房,手里举着一个用纸板做的迷宫:爸爸你看!我今天做了一个迷宫游戏!小猫要从这里走到这里——但是我还没想好中间放什么障碍物!
那你想放什么?
不知道!乐乐理直气壮地说,老师说要先想好终点是什么,再放障碍物。但我还没想好终点是什么。
林晨看着乐乐手里那个画了一半的迷宫,愣了一下。
苏婉端着两杯水走进来,递给他一杯。她看了一眼他的脸色:分享会不顺利?
也不算不顺利。就是……被问住了。
被谁问住了?
被我自己问住了。
苏婉在旁边的椅子上坐下来。她没催他,就那么等着。
聊到后面的时候,林晨慢慢说,我发现我在台上说的那些话——什么选择的自由、什么从容规划长期目标——我自己都不太信。不是说它们是假的,是……太顺了。像写作文。真实的感受比那个要乱得多。
怎么个乱法?
他低头看着乐乐的迷宫。就是……以前穷的时候,每天起来知道自己要干嘛——赚钱、还债、活着。那个方向是清晰的。现在钱够用了,我反而经常不知道自己下一步该往哪走。不是说没有事情做,是说不知道哪件事才是真正值得花时间做的。
苏婉听完没有马上接话。她看了一眼乐乐——乐乐趴在地板上正拿彩笔给迷宫涂颜色,完全没注意到爸妈在聊什么。
你有没有想过,苏婉说,不知道往哪走本身就是答案?
什么意思?
就是——你以前的方向是被迫的,穷就是方向。现在没有外力推你了,你反而不知道自己想去哪。这不代表你出了问题,这只代表你第一次有了真正选择的机会。只是你还不习惯自己选。小时候没吃过自助餐的人,第一次进自助餐厅也不知道该拿什么。
林晨看了她一眼。你这个比喻比我在知乎上说的所有话都好。
那是当然。苏婉语气平淡。
林晨没说话。乐乐这时候抬起头:爸爸,你说迷宫的终点应该是什么?
你觉得呢?
我想放一个蛋糕当终点!乐乐想了两秒钟,但是老师说了,如果终点太容易就到了,就不好玩了。
林晨看着乐乐,忽然笑了一下。他从书桌抽屉里拿出笔记本,翻到今天的那一页。备忘录上那些整齐的关键词——选择的自由长期目标——他看了两秒,然后翻过那一页,什么都没写,合上了笔记本。乐乐已经把迷宫的终点画好了——一个歪歪扭扭的蛋糕,旁边画了一根蜡烛。蜡烛上的火苗涂成了橙色。
第280章 工作的意义
七月底的一个周四下午,t厂大模型应用部的开放工位区里大部分人都戴着耳机埋头干活。空调出风口往下灌着冷气,键盘声和鼠标点击声混在一起,像某种低频的白噪音。
陈铭在林晨的工位旁边站了大概三十秒,手里攥着一杯已经不冰了的美式。他犹豫了一下才开口。
林总,有空吗?
林晨正在看FinGpt v3.1的一组评测数据,头也没抬。什么事?
想跟你聊个……私人的事。陈铭的音量压得很低。在开放工位区说私人的事,通常意味着不想让旁边的人听到。
林晨抬头看了他一眼。陈铭的脸上有一种他不太常见的表情——脸上是一种不太常见的紧绷——话在嘴边转了好几天终于决定说出来的那种。
去会议室。
两个人走到走廊尽头的小会议室。六平米的空间,一张圆桌,四把椅子,墙上还留着上次会议的白板笔迹——几个数据流向的箭头和一串看不太清的参数。陈铭关上门,坐下来,把那杯美式放在桌上。他没有马上开口。
怎么了?林晨问。
陈铭从裤兜里掏出手机,翻出一个聊天记录,推到林晨面前。
屏幕上是一个微信对话。对方自称某头部量化基金hR,问陈铭有没有兴趣聊聊AI研究员的岗位——年薪开到了八十万起步,外加年终奖和期权。
林晨看完,把手机推回去。你怎么想的?
我没想好。陈铭的手指无意识地在杯壁上划,划出一道道浅浅的水痕,所以想问您一个问题。
您投资账户一年被动收入几十万了,房贷也早就不是问题——您为什么还在t厂上班?
这个问题让林晨有点意外。他以为陈铭来找他是为了聊那个量化的offer,没想到开头问的是这个。
你怎么知道我投资账户的事?
上次部门聚餐的时候您提过一嘴——说投资账户过了一百多万。当时我算了算,按您说的年化收益,被动收入一年至少三四十万。陈铭的语气很认真,我没有打探您隐私的意思,但这个问题我确实想不通。
林晨靠在椅背上,手指在桌面上敲了两下。他发现自己没有准备好回答这个问题。不是因为没有答案,是因为答案说出来会显得很装。
你先告诉我,林晨说,你问这个跟你那个量化offer有什么关系?
陈铭沉默了几秒。他的肩膀微微塌了一点——这是他紧张时的体态,林晨观察过。陈铭平时讲话的时候肩膀是撑开的、腰是直的,像一个在导师面前做汇报的博士生。但现在他的坐姿像一个在食堂随便吃个饭的本科生。
那个hR找我聊了三次了。第三次的时候我答应了见一面——下周三约了线下喝咖啡。他停顿了一下,但我不确定我应不应该去。
为什么不确定?钱给得多,岗位也对口。
就是因为钱给得多,我才不确定。陈铭的语速加快了,我来t厂的时候工资才二十八万——现在加上绩效奖金大概四十多万。那个量化岗位直接开八十万起步,翻了一倍。但我在t厂待了快两年了——智研从零开始是我跟您一起搭的,FinGpt的金融方向是我带的。如果我现在走,这些东西就跟我没关系了。我走了之后智研的金融方向谁带?张雨那边的模型迭代还指望着我们这边的反馈做优化。
所以你纠结的其实不是钱。是走了之后你做的东西还属不属于你?
陈铭抬起头看了他一眼。那个眼神里有一种被说中的微弱的不甘。
差不多是这个意思。但也不全是。他又低头看那杯美式,我其实还有另一个问题——我看了您的投资收益之后,算了一笔账。如果您把投资账户的钱翻一倍,被动收入就能完全覆盖家庭支出了。那您完全可以辞职做全职投资——时间自由,不用开会,不用写周报,不用跟别的部门撕数据授权。但您没这么做。我想知道为什么。
林晨沉默了。他想说因为钱不是工作的唯一目的,但这话说出来就跟他在知乎分享会上说的那些话一样——太顺了,像作文。他换了个角度。
你知道我三十五岁失业的时候在干嘛吗?
陈铭摇头。
在家焦虑。每天早上醒来第一件事就是打开招聘网站——不是看有什么好工作,是看还有没有工作。那三个月我投了四百多份简历。后来t厂给我发了offer,我当时只有一个想法——终于有人要我了。
他把桌上那支笔拿起来转了一圈。那时候我来t厂就是来求生的。没有什么改变世界的念头。但后来事情慢慢做起来了——智研的模型从跑不动到能内测,你们几个年轻人从什么都不懂到能自己带方向,FinGpt在投研场景里开始有人用。这些东西不是我自己一个人做的,但如果没有我每天在这里推,它们不会走到今天。
陈铭听着,没有打断。
你问我为什么还在t厂——林晨把笔放下,我说实话,我不确定。也许有一部分是惯性,习惯了每天起来去公司,不想改变。也许有一部分是……舍不得?这个词可能不太准确。就是你花了两三年时间把一个东西从零做到能用,然后你说你要走了——那种感觉就像……他想了想,就像写了一半的代码突然不写了。不是说写不下去了,是自己选择了不写。你能接受吗?
陈铭没回答这个问题。他换了一个角度:但如果有另一个东西值得你去写呢?
什么意思?
比如您做全职投资。投资系统已经在稳定赚钱了——您全职做的话,收益可能会更高。那不也是一种把一件事做到底
林晨想了想。投资这件事我做三年多了。它确实在赚钱,但——他停了一下,在找合适的表述,投资赚钱跟做产品不一样。投资赚了钱,那个结果是属于自己的。你赚了一百万,你很高兴,但只有你一个人高兴。但智研做出来之后——你知道国泰那个分析师小宋说什么吗?他说智研能帮他省三分之一翻报告的时间。那个时间是他可以拿去思考、去写真正有深度的分析的时间。我听到这句话的时候——他顿了顿,怎么说呢,跟投资账户涨了十万的感觉不一样。不一样在哪我说不太清楚。
陈铭看着他,眼神里有种微妙的变动。没有被说服,更像是某种确认。
那如果我换一种问法,陈铭说,我换一种问法——您在t厂最不想失去的是什么
这个问题比之前的所有问题都尖锐。林晨发现自己需要认真想。
最不想失去的……他重复了一遍这个短语。办公室里安静了几秒,空调的声音突然变得很明显。
大概是那种——每天早上知道今天要做的事情跟昨天不一样的感觉。智研每周都在往前走,每个版本都有新问题,新问题需要新的方案。如果我辞职做投资——投资系统已经能自动跑了,我每天要做的只是看监控、做调仓。那种感觉我试过,周末的时候系统自动运行,我坐在家里盯了两个小时屏幕,什么都没做。然后我打开电视看了一下午纪录片。
他笑了一下,笑里有点无奈。所以也许我的答案是——我还在t厂是因为如果我走了,我不知道每天早上起来该干嘛。你可以说这是没有勇气跳出舒适区,也可以说这是……
惯性?陈铭接了一个不太客气的词。
你可以这么说。林晨没有反驳,我刚才说的那些什么做产品有意义——那是我事后给自己找的理由。真实的感受比那个乱。有时候我是真的觉得做智研有价值;有时候我只是习惯了每天去公司,打开电脑,看数据,开会,写方案。到底是哪个原因在驱动我,我自己也分不清。
陈铭愣了一下。他大概没预料到林晨会这么直接地承认自己说不清楚。在他的认知里,林晨是那种什么事都能给出清晰判断的人——从模型选型到团队架构到项目方向,每次开会他都有一套完整的逻辑。但现在坐在他面前的人说的却是我自己也分不清。这种坦诚让陈铭有点措手不及——他准备好了听一段鸡汤,准备好了被说教,但没准备好听到一句我也不知道。
会议室里安静了好一会儿。陈铭拿起那杯美式喝了一口,咖啡已经彻底凉了。
那我再问您最后一个问题。他把杯子放下,如果我是您,您会建议我去见那个量化的人吗?
去见。
为什么?
因为见了你才能知道你到底在犹豫什么。你现在觉得你是在去和留之间选——但其实你连是什么样都不清楚。那个hR跟你聊了三次微信,你以为你了解那个岗位了?你了解的是hR想让你了解的东西。去了才可能看到真实的。那边的团队是什么样的,工作节奏是什么样的,技术栈是什么——这些东西微信里聊不出来。
那万一见了之后觉得那边更好呢?
那就再来找我聊。林晨的语气很平,至少你做决定的时候两边都看过了,不是只凭一个薪资数字脑补的。你现在只看清了一边——t厂这边你做了快两年了,好的坏的你都清楚。另一边你只看到了一个薪资数字和hR画的三张大饼。
陈铭站起来。走到门口的时候他回过头:谢谢林总。我下周三去见。
回来之后跟我说说。
陈铭走后,林晨一个人在会议室坐了一会儿。白板上还残留着上次讨论智研2.0架构的笔迹——模型蒸馏推理优化风控规则层,旁边还有陈铭当时画的一张数据流图,箭头从原始研报指向特征提取模块,再指向风险标签输出层。他用手指擦了一下推理优化那几个字,笔灰沾在指腹上,灰色的。
他推开会议室的门走回工位。陈铭已经坐在自己的位置上了,戴着耳机,屏幕上是智研2.0的代码仓库。林晨路过的时候瞥了一眼——他在改风控规则层的接口参数。
第281章 智研初验
八月初的一个周一早晨,林晨拎着笔记本电脑出现在国泰证券的投研楼层。
他是跟陈铭一起来的。陈铭背着双肩包,包里装了十份打印好的操作手册和一摞内测用户反馈表。小宋在电梯口接的他们,穿着国泰的深蓝色工装衬衫,胸前工牌晃了一下。八张工位围成半圆,屏幕上还挂着昨晚没关的wind终端,有几台开着同花顺的Level-2行情。分析师们陆续到了,有人端着咖啡,有人刚从晨会出来还夹着笔记本,有人电话还没挂完就坐下了。
林晨把电脑接上投影,花了二十分钟过了一遍智研的操作流程——上传研报、选择分析模板、查看摘要和数据表。演示刚结束,小宋就开口了。
能不能试试真实的?就我桌上这堆。
他指的是工位上摞着的五份刚出的行业研报,头天晚上加班没看完的那种,有两份封面上还贴着黄色便利贴写着。林晨点头,小宋把五份pdF拖进了智研的web工作台,点下开始分析。
进度条开始走。十秒,二十秒。小宋还盯着屏幕看。三十秒的时候他扭头跟旁边的同事说了句什么,四十秒的时候他起身去茶水间接了杯水。等他走回来,进度条走到百分之八十七。
还得多久?小宋端着水杯问。
大概还有十几秒。林晨自己也有点紧张——第一次在真实用户面前跑,万一结果不好看呢。
五十三秒后结果出来了。五份研报的摘要和数据表格整整齐齐地排列在页面上。小宋放下水杯,挨个翻了摘要,又点开财务数据表看了看。他点进第二份研报的数据表停留了大概十秒——那是一家半导体设备公司的中报,营收和净利润的数字他都核对过了。最后他抬头看了林晨一眼。
内容本身没问题,数据提取得也准。但这个等待时间……我写报告的时候中间插一次一分钟的空白,思路全断了。你用wind拉数据也就两三秒的事。
旁边的消费组分析师凑过来问了一句:每次都这么慢吗?
看文档长度。短的十几秒能出,长的大概五十多秒。林晨如实回答。
五十秒我也等不了。那人说完就转身回自己工位了。
这句话林晨记住了。他没有记在笔记本上,但脑子记得很清楚。六十秒对于一个正在写深度报告的分析师来说,已经不只是有点慢了——是打断工作流。
内测第一周,数据比预想的复杂得多。
三个组十个用户的活跃数据每天自动回传到后台。林晨每天早上到公司的第一件事就是打开后台看前一天的数据——登录次数、调用时长、功能使用分布、异常报错。数据用表格呈现,他每天手动更新一张趋势图。
tmt组的小宋用得最勤,几乎每天都要跑两三次——上午开盘前跑一次看隔夜报告,下午写周报的时候再跑一次提取数据。他甚至在第三天的时候把智研的快捷方式钉到了浏览器书签栏的第一位。总量策略组的两个分析师也在用——他们看宏观报告需要快速抓关键数据点,智研的摘要省了不少翻页翻图表的时间。
但消费组那边出了状况。
消费组组长何敏,四十出头,短发,说话语速快且精准,从不多说一个字。她在国泰做了十二年的消费行业研究,从白酒到乳制品到调味品,覆盖过半数以上的消费龙头。内测第二天她用智研分析了一份某食品公司的中报,模型输出的摘要里清清楚楚地写着二季度毛利率同比提升1.8个百分点。
何敏看完这段没说话。她点开原始报告翻到成本分析那章,又切到wind拉了该品类棕榈油和白糖的期货价格走势。五分钟后她给小宋发了一条消息:智研说毛利率提升1.8个点,但它没告诉我棕榈油价格二季度环比跌了百分之十二。成本端的一次性利好,跟公司经营能力没关系。
小宋把这条消息转给了林晨。附了一句话:何敏姐很较真,但她说的确实对——我自己做消费研报的时候也会先看原材料成本走势。
林晨看完之后坐在工位上想了一会儿。毛利率提升是事实,智研提取得没错。但何敏看到毛利率提升之后的第一反应是追问为什么——她要的是对数据背后驱动因素的判断,而不只是数据本身。智研现在给不了这个为什么。
他又看了一遍小宋转来的消息,特意注意了何敏的措辞。成本端的一次性利好,跟公司经营能力没关系——这是一个有十二年行业经验的分析师看到毛利率变动之后的本能反应。她脑子里有一套关联网络:毛利率变动了,她先看是成本端还是价格端的变化,再去查原材料价格走势,最后判断这个变动是不是可持续的。智研目前只做了第一步,后面三步完全没有。
更麻烦的事情发生在第四天。
总量策略组的基金经理王磊,管着两只偏股混合型产品,在用了三天智研之后突然停了。后台数据显示他第四天登录次数归零,第五天也没有恢复。
小宋私下跟林晨说了原因:王经理做的是择时策略,他需要的是宏观情绪指标和资金流向数据。智研目前给的研报摘要对他来说太浅了,而且太慢。他原话是——我花六十秒等出来的东西,我自己翻报告三十秒就能找到,而且我翻到的比它给的多
他是真的不需要,还是用得不顺手?林晨问。
小宋想了想:应该是真的不需要。择时的人不看深度研报,他们看的是高频数据和情绪面。智研现在压根没做这个方向。而且王经理这人比较直接——他觉得没用的东西不会勉强去试。他第三天跑的那次还是我帮他操作的,他自己都没主动登录。
所以他的流失不是因为产品差,是因为我们的功能边界切不到他的需求上。
可以这么理解。但林总,何敏那边也有问题——她还在用,但她对智研的评价越来越尖锐了。
何敏的内测反馈写了一份两页纸的文档,不是填表格那种敷衍的东西,是像写内部研究报告一样认真写的。林晨看到文档的时候先是一愣——很少有内测用户会花这个时间。
何敏写的核心段落是这样的:
智研在结构化数据提取上已经可用。但投研的核心从来都在判断数字意味着什么上面,看到数字只是起点。毛利率变动、应收账款周转天数变化、经营性现金流与净利润的背离——这些数字背后的原因才是投资决策的依据。目前的智研像一个特别快的实习生:翻报告、整理数据又快又准,但跟他说毛利率变了他不会追问为什么变了,是可持续的还是一次性的
林晨把这段话反复看了三遍。特别快的实习生——这个比喻精准得让他没法反驳。因为何敏说的就是事实:智研目前只能做到信息提取,做不了因果判断。
七天留存数据拉出来的时候,十个用户里只有九个还在用。王磊的流失不算意外——他的工作流程跟智研的功能设计根本对不上。但九个人全部每天在用这件事,本身已经说明了问题:至少对深度研报阅读场景的用户来说,智研有不可替代的价值。
陈铭在群里看到数据时说了一句:九个人还在用,已经很好了。
林晨回复他:何敏的反馈你看了没有?
看了。她说的问题我们内部讨论过——风险判断需要经验积累,模型目前做不到。
做不到不代表不能做。短期方案:在摘要模板里加变动归因字段,先覆盖毛利率和营收增速这两个最常见的数据变动类型。模型在提取到毛利率变动的时候自动触发一个归因提示——提示用户关注成本端和价格端的变化。中长期要做专家规则层,把何敏这种资深分析师的经验编码成规则。
何敏会愿意帮我们做规则标注吗?陈铭问。
会。她写了两页纸的反馈——这种人不会拒绝让她的经验被更多人用到。你约她一次电话,把变动归因的方案跟她讲一下,听她的意见。
陈铭发了个的表情。
林晨打开笔记本写了三行:
速度——单次推理从六十秒压到二十秒以内。跟张雨确认模型蒸馏和推理加速的方案,下周必须出个技术评估。
风险提示——短期在摘要模板里加变动归因字段,先覆盖毛利率和营收。中长期要做专家规则层。
用户边界——择时策略型不是智研的目标用户,不要强求全覆盖。
写完第三行他合上笔记本。何敏那句话还在脑子里转:特别快的实习生。又快又准,但不会追问为什么。
第282章 市场反响
八月中旬,智研内测的消息在鹏城金融圈传开了。
源头是小宋。一次卖方路演的茶歇间隙,他端着纸杯咖啡跟一个公募基金的研究员闲聊,提到我们最近在用一个AI工具做研报分析,摘要和数据表都是自动出的,省不少时间。他没提智研的名字,也没说具体是哪家做的——但AI研报分析这几个字本身就是信号。在金融圈里,这种模糊的说法反而比详细介绍更管用——听的人会自己去打听。对面的研究员回去之后辗转通过行业渠道找到了t厂金融事业部,问有没有投研方向的AI产品在推。
林晨接到这个线索的时候正在看何敏最新一轮的反馈——她把变动归因功能的需求细化了,列了六种需要自动提示的数据变动场景。林晨刚把何敏的建议整理完,转头就跟陈铭说了市场那边传来的消息。
你注意一下,林晨说,小宋在行业活动里提到了智研这件事——他没经过我们同意。内测协议里有保密条款,他虽然没有说出产品名和技术细节,但消息传出去了。
陈铭皱了皱眉:要跟国泰那边正式沟通一下吗?
要。但不兴师问罪。小宋觉得这东西好用才会跟同行聊,这是好事。只是口径要统一——后续别人来问,我们只说在探索金融方向的AI产品,不确认也不否认具体项目名称和功能。
陈铭点头,然后问了一句让林晨没想到的话:林总,你在知乎上发过文章吧?
林晨愣了一下。半年前写过一篇,关于转行学AI的个人经历。怎么了?
我昨天搜AI投研这个关键词,你的文章排在第二页。浏览量两万多。文章本身没提智研,但你个人简介栏里写着t厂大模型应用部副总监
林晨打开知乎看了一眼。确实——他写那篇文章的时候还没加入智研项目,当时觉得个人简介写真实信息更有说服力。但现在智研正在内测阶段,任何跟t厂大模型方向挂上钩的公开信息都可能被外界解读为公司层面的信号。
他正要关页面的时候周姐路过看到了。你个人简介上还挂着公司title?大厂一般不允许员工在外部平台用公司职位的。合规那边查起来算违规,轻则警告重则处分。
林晨当即把个人简介里的公司职位删了,只留了AI从业者三个字。
其实删了也没用,周姐靠在隔板上说,文章的缓存和截图早就被人存了。现在搜你的名字还能看到大模型应用部副总监——不过至少你主动改了,态度上没问题。下次公司合规抽查的时候,你可以说已经自行修正了。
陈铭在旁边听得一愣一愣的:这也要管?
大厂什么都管。周姐的语气很平淡,像在说今天中午食堂吃什么一样自然,你在公司内网发帖的时候注意过底部的免责声明吧?本发言仅代表个人观点那条。外部平台也一样——你的title挂在那里,别人会默认你说的话代表公司。尤其你是项目负责人。
第一波主动找来的机构里,最让林晨意外的是一家管理规模三十几亿的私募。
投研总监叫马海东,四十多岁,做量化选股出身。他给金融事业部的商务邮箱发了一封邮件,正文只有三行:看了贵司在知乎上关于AI投研方向的文章,感兴趣。我们目前有AI辅助投研的实际需求。方便约个电话吗?
下午林晨跟马海东通了一次电话。马海东说话节奏快,没有寒暄:我们做量化选股,现在用的大模型是开源的那几个,微调过,效果一般。研报摘要这块我们自己训了个小模型,准确率大概八成出头,财务数据经常抽错。听说你们在做一个金融方向的垂直产品——能不能聊聊?
林晨没有直接确认智研的存在。他按照提前跟周姐对过的口径说:t厂在金融AI方向有技术储备,具体产品形态还在探索阶段。如果你们有需求,我们可以先了解一下场景。
他下意识用了了解场景而不是介绍产品。先让对方说痛点,后面才好对得上。
马海东显然不满足这个回答:我理解的谨慎。但你给我交个底——你们做的东西在国泰那边跑过了没有?
林晨停顿了一下。马海东直接点了国泰的名字,说明他消息来源很明确。否认反而显得虚假。
我可以确认t厂在跟部分金融机构做技术合作。合作内容和数据受保密协议约束,没法展开。
马海东在电话那头笑了一声:行,你这个回答我听懂了。我下周安排人去你那边拜访,可以吧?
可以。提前发个议程,我们准备一下。
挂了电话之后,马海东那几个关键信息已经刻在林晨脑子里了:量化选股私募,自研模型准确率八成,痛点在财务数据抽取。下周拜访,得准备对比数据。
陈铭站在林晨工位旁边没走。他听到了大部分对话内容,表情有些复杂。
这个人挺厉害的。陈铭说。
做量化的都直接——时间成本算得很清楚。
不是这个。陈铭拉了把椅子坐下来,压低了声音,我在想另一件事。智研才内测三周,已经有公募和私募在主动找我们了。这个速度是不是有点快?
林晨看着他等他说完。
太顺了反而让我不踏实。内测期间的问题还在——何敏说的风险判断我们还没解决,王磊流失了我们也还没补上用户画像。如果外面传的口碑是研报摘要很好用,用户买回去用了两个月之后发现只会做摘要
回头客就没有了。林晨接上了他的话。
陈铭点头。还有一件事——找上门来的目前都是中小机构。大公募、大券商总部和保险公司一点动静都没有。
大机构不会因为一个内测口碑就来找你。林晨靠在椅背上,他们决策链长,合规审慎,内部走完一轮评估至少两三个月。中小机构决策快是因为投研团队少、痛点集中、老板拍板就能定。大公募动一下要过投研、It、合规、采购四道关。
那我们怎么打大机构?
先不急。中小机构用标准SaaS跑通商业模式,做出三五个成功案例。大机构看到同行在用了,自己会来。
那如果大机构自己也在做类似的产品呢?陈铭追问,我知道有几家头部公募已经在内部搞AI投研了。
那就更不用担心。林晨说,自己做的效果大概率不如我们——他们投研团队懂金融,但AI团队是外包的或者刚组建的,技术积累差得远。等他们发现自己做了半年还不如智研内测版的效果,会来找我们的。
陈铭想了想:所以中小机构是验证市场,大机构是等我们自己证明了再进场。
对。而且大机构一旦决定买,合同额会是中小机构的五到十倍——定制化需求多、使用规模大、决策层级高。所以不着急,先把手头的案子做好。
中小机构走标准化SaaS,快签约快交付。大机构做定制方案加poc验证,慢慢渗透。林晨说,但前提是风险提示功能必须在正式发布前上线,不然口碑撑不过三个月。
同一天还有另一封邮件进来——一家券商的金融科技部门发来的正式咨询函。措辞比马海东的私信正式得多,盖了部门公章的pdF附件,提了两个方向:一是购买智研ApI服务接入自己的零售客户端,二是深度定制——把智研作为底层模型嵌入到券商自己的投研平台里。第二个需求意味着客户要在智研的基础上做二次开发,技术对接的复杂度远高于标准SaaS。
林晨把这封邮件也转给了周姐。周姐看完之后说了一句:券商的定制需求报价要单独做——不能按标准SaaS的价格体系走。你跟他们谈的时候把ApI和定制拆开报价,不然后面利润全被定制吃掉。
陈铭听到最后一句,没再说什么。他站起来走了两步又回头:马海东下周来的时候我去旁听可以吧?
可以。但别说话——你上次在国泰那边跟人聊数据方案的时候太积极了,差点把内部排期说出去。
那次是意外。陈铭的表情有点窘迫。
我知道。所以下次意外发生之前先忍住。
陈铭走了之后,林晨心里又过了一遍刚才的话。风险提示功能必须在发布前上线,这条底线他得盯死。
如果马海东下周来的时候智研只能演示摘要和数据提取,那跟他们自研的小模型有什么本质区别?准确率高十二个点确实是优势,但仅靠准确率的差距撑不起一个新产品的护城河。风险提示功能——也就是何敏说的追问为什么的能力——才是智研跟开源模型拉开差距的地方。
他给张雨发了条消息:变动归因功能的开发排期排一下,我需要知道最快什么时候能上线。
张雨回了个语音,只有十五秒:框架我已经搭好了,规则模板还需要何敏那边确认。如果她这周能给出六种数据变动的归因逻辑,两周内可以出第一版。
两周。林晨在心里算了一下——马海东下周来拜访,距离正式发布至少还有一个月。如果变动归因功能两周内出第一版,还有两周做内部测试和优化,时间刚好卡在发布前。
他合上笔记本,拿起桌上的水杯喝了一口。水已经凉了。
第283章 商务谈判
八月下旬,林晨第一次坐到了正式的商务谈判桌对面。
谈判对象是鹏城本地一家中型公募基金——管理规模八十亿出头,投研团队三十多人,在科技赛道有独到优势。他们想买智研的ApI服务接入内部投研平台,不是试探,是带着预算和技术方案来的。
对方派了四个人:投研总监刘总、技术部负责人老钱、采购主管周岚、法务小肖。林晨这边带了陈铭和商务经理周姐。
t厂二十楼的商务会议室跟平时开技术评审会的那间完全不一样。白桌布铺着,矿泉水摆了两排,水果拼盘里西瓜和橙子切得整整齐齐。空调调到了二十四度,没有出风口对着人吹。林晨坐下来之后下意识摸了一下桌布的质地——比想象中厚。他注意到自己的肩比平时高了半寸,刻意往下压了压。
周姐坐他右后方,面前的文件夹翻开到报价方案那一页。陈铭坐在林晨左手边更靠后的位置,手里拿着笔记本,准备记要点。进场之前周姐跟林晨说了最后一句提醒:你今天少说话,让我来控节奏。你只管回答技术问题,价格的事我来接。
刘总先开口:林总,我们团队上周用自己数据库里的十份深度报告做了小范围测评。ApI返回的研报摘要和财务数据表质量相当不错——尤其财务数据的自动提取,我们对比了人工提取的结果,准确率在九成左右。这个水平已经可以在日常投研里用了。
林晨微微点头。他没有急着接话——上周跟周姐复盘第一次谈判的时候,周姐说的第一条就是少说话,让对方多说。
停了两秒他才开口:谢谢刘总。你们测评过程中有没有发现哪些功能跟预期对不上?
话一出口他就感觉不对——商务谈判里不会有人主动让客户挑毛病。周姐在他右后方轻轻咳了一声。
刘总倒是笑了:林总是技术出身吧?问问题的方式很像做技术评审。我们测评的结果整体符合预期,但准确率九成这个数字——你们内部评测应该是多少?
林晨又犯了一个错——他直接回答了:我们最近一次评测,财务数据提取准确率九十二点三。
周姐的咳嗽声这次听得更清楚了。刘总的眼神微微变了一下——他现在知道了t厂的内部基准线比客户自测结果高两个点。下次再谈价格的时候,这个数字会变成对方手里的牌。
林晨感觉到了不对劲,但不确定哪里出了问题。他看了一眼周姐,周姐面无表情地翻着手里的文件夹。
刘总没有在准确率上纠缠,继续往下说:我们最关注三个模块。第一个是财务数据自动提取——季报年报原文丢进去,ApI返回结构化的财务报表和核心指标。这个功能如果稳定运行,至少能给研究员省掉一半以上的基础数据处理时间。第二个是政策新闻的投研信号提取——我们每天有人工标注政策变化对持仓标的的影响,AI做初筛加人工复核的模式如果能跑通,效率提升很明显。第三个是研报摘要——每天上百篇卖方报告,研究员根本没时间全看,摘要做第一轮筛选就够了。
林晨把技术方案推过去的时候尽量控制了自己的节奏。他指着方案里的一行数据说:政策信号提取准确率目前在百分之八十七左右——这个水平还做不了全自动,但作为人工复核的辅助够用了。
说完他就后悔了——又是主动暴露短板。在商务场合说做不了全自动等于给了对方压价的理由。
周姐在旁边不紧不慢地接了一句:方案里标注了每个模块的推荐使用场景,刘总可以对照你们内部流程看一下适配度。
林晨听出来了——周姐在帮他兜。她把话题从准确率不够高转到了使用场景匹配上。他暗暗记下了这个手法。
价格环节拖了最长时间。
刘总问完价格怎么定之后,周姐把报价方案推了过去。阶梯定价:ApI基础调用量每月十万次以下按每次两毛五,十万到五十万次按每次一毛八,五十万次以上按每次一毛二。定制化模块——政策信号提取和深度研报摘要——作为增值服务按年收费,标准价每年六十万。
刘总看完报价方案没说话,把平板递给旁边的老钱。老钱翻了翻,周岚也凑过来看了两分钟。法务小肖一直在旁边记笔记,没抬头。
然后刘总抬头了:基础调用量每次两毛五——这个单价对中型机构来说偏高。
林晨差点脱口而出量大可以再降——嘴都张开了,又硬生生咽回去。周姐先他一步开口:刘总觉得什么样的单价在你们的预期范围内?
林晨第二次学到东西——对方嫌贵的时候,不急着降价,先问对方的预期。
刘总没接这个球:我们内部有一套算法评估工具的预算模型,我没办法直接给你一个数字。但坦白讲,如果按每次两毛五的单价、每月调用量十万次算,一个月就是两万五,全年三十万。这只是基础模块的费用,加上定制模块和增值服务,总成本压力不小。
老钱在旁边补充了一句:而且我们自研的小模型目前也在跑——虽然效果不如你们,但成本基本只有服务器支出。替换成你们的ApI,增量成本是需要算清楚的。我们不是从零开始买工具,是在两个方案之间做选择。
林晨这才意识到,对方嫌贵是认真算过账的。他们有一套现有方案在跑,虽然效果差但几乎零边际成本。智研要替代它,必须有足够的增量价值来覆盖增量成本。而他今天准备的方案里完全没有提到这一点——他只列了智研的价格,没有列客户自研方案的机会成本。
谈判在价格上僵了将近二十分钟。周姐提了一个折中方案——首月给体验折扣,调用量十万次以下按每次一毛八计费,第二个月恢复阶梯定价。刘总说考虑一下,要回去跟内部走预算审批流程。老钱追问了一句:定制模块的年费能不能也做个阶梯?我们第一年的调用量肯定到不了上限,按标准价收不太合理。
周姐接了这个问题:定制模块的费用可以按季度支付,不需要一次性付全年。首季度按标准价,后续根据实际使用量调整。
刘总点头记了下来。
散会之后林晨跟周姐和陈铭回到十五楼的办公室。陈铭一坐下就说:刘总说价格偏高,但他的语气不像是要走——更像是在试探。
他确实在试探。周姐坐下来喝了口水,但试探底线这件事——被试探的那一方不能先露出来。林总,你今天暴露了两个内部信息。
我知道。林晨靠在椅背上,九十二点三的准确率,还有量大可以再降——后面这句我咽回去了,但嘴已经张了。
周姐放下水杯看着他:准确率的问题不大——这个数字迟早要公开,早说早建立信任。但你差点说出量大可以再降这件事是真的危险。如果这句话说出口了,刘总下次来一定用量来压价,而且他有一个很硬的理由——他们有自研方案。
那阶梯定价方案本身呢?定得太高了?
阶梯定价的框架没问题。但你对客户的成本结构不够敏感——他们有自研方案在跑,替换成本不只是你报的那个价,还有迁移成本、学习成本、合规审批成本。你得把增量价值算给他们看,而不只是报一个绝对价格。
林晨沉默了几秒。他想起何敏说的特别快的实习生——智研的价值不只是省时间,还在于数据的准确率比客户自研方案高十个点以上。这个增量价值他今天完全没有讲清楚。
下一次谈价格的时候——周姐看着他说,你准备一个对比表。他们自研方案在准确率和覆盖范围上跟智研的差距,折算成研究员每月因为数据错误需要返工的时间,再折算成人力成本。让数字替你说话,别让客户自己去算。
她又补了一句:还有——下次谈判的时候你坐我的位置。我坐你右边,随时可以递纸条。今天你暴露问题的时机太集中了,如果中间有人帮你打个岔,节奏就不一样。
陈铭在旁边补了一句:老钱说他们自研模型准确率八成出头——我们九成二,差了十二个百分点。一个研究员一个月处理一百份报告,百分之十二的出错率意味着十二份报告要返工。一份深度报告的返工时间至少两个小时——一个月就是二十四个小时的无效劳动。按研究员时薪算一下——
你怎么算这么快?林晨看他。
我之前在国泰做数据方案的时候算过类似的账。陈铭有点不好意思,那次是算我们帮他们省了多少标注成本——算法差不多。我回去整理一下,下次谈判之前给你一张表。
林晨点头。他看了一眼时间——五点二十了。第一次商务谈判,犯了两个错。
第284章 大单签约
九月第一周的周三上午十点,林晨收到了那家公募基金法务发来的签约确认函邮件。
附件是pdF,十四页,正文从第一条定义与解释开始,到最后的签字页结束。林晨没有在屏幕上看——直接打出来了。十四页A4纸摊在办公桌上,他用笔逐条对照之前两轮谈判时约定的条款。
数据安全条款:客户数据不得用于模型训练,隔离存储,合规审计权归属客户。他看了一遍,没问题。SLA指标:ApI可用性百分之九十九点五,月度响应时间中位数不超过三秒。也对得上。交付周期:合同签署后五个工作日内完成ApI接入和联调测试。
翻到第七页的时候他停下来了。
定制化行业模型的开发范围写的是科技赛道和消费赛道各一个,开发周期合同签署后九十个工作日内交付,费用包含在年度合同总额内。
他盯着包含在年度合同总额内这几个字看了很久。首年合同总额四百八十万——ApI基础服务大约两百万,增值模块约一百万,定制模型开发费用摊在剩余的一百八十万里。但两个定制模型的实际开发成本是多少?张雨那边调出两个工程师全职投入三个月,加上GpU算力和标注数据采购,保守估计在六十到八十万。如果开发费用从合同总额里出,留给智研的利润空间就薄得像刀刃。
他在页边空白处写了一个问号。
继续往下翻。违约条款确认了——双方各自的违约责任和赔偿上限都写了。知识产权条款确认了——定制模型的底座Ip归属t厂,客户定制部分的使用权归属客户。
签字页在最后一页。甲方盖章栏已经签好了,刘总的签字笔迹很潦草,日期是两天前。乙方一栏空白。
林晨拿起笔之前看了一遍整个合同最后一页的条款摘要——合同总额、付款周期、交付节点、违约条款——都跟之前两轮谈判的纪要对得上。他拿笔签了名字,日期写了当天。
签完之后他看着那张纸坐了大概半分钟。四百八十万。智研项目的第一个商业合同。数字本身不算大——摊到t厂大模型部门一年的运营成本里,GpU算力、三十几个人的薪资、标注和其他费用,这只是成本的一个零头。四百八十万。有人愿意为智研付钱了。
下午他把签约的消息在部门群里同步了。群里先安静了几秒——大家大概在确认自己没看错。然后消息刷上来了。陈铭发了三个拳头,张雨发了一句终于签了,三个标注实习生里的小王发了一个感叹号,小赵发了三个鼓掌的表情。
五分钟后张雨的私信过来了:林总,合同里两个定制模型的开发工期九十个工作日——我们目前底层模型迭代那边没有多余的工程师可以全职做这个。如果要从现有项目抽人,排期需要调整。
林晨回了一句:你先算一下人力和算力成本,明早我们碰一下。
他又给周姐发了条消息:合同签了。但我有个顾虑——两个定制模型的开发成本可能在六十到八十万,如果这笔支出从合同额里出,利润空间会被压缩。下次跟新客户谈判,定制模块的定价要单独拆出来,不能含在年度总额里。
周姐秒回:四百八十万首年合同,两个定制模型算在里面的确有成本倒挂风险。但第一个合同跑通流程比利润率重要——定价策略后续优化。
周五晚上林晨带团队聚餐。地方是科技园附近一家湘菜馆,二楼包间,两张圆桌拼在一起。他提前跟服务员要了两箱啤酒和一箱豆奶——张雨不喝酒,这个习惯全组都知道。
人到齐之后林晨站起来说了几句话。声音不大,包间里慢慢安静下来。
智研从启动到现在不到半年,第一个商业合同签了。四百八十万。
他端着杯子停顿了一下。
陈铭带着两个新人去国泰谈数据授权,吃了三次闭门羹,最后谈下来了。张雨从零搭了整套数据采集和清洗的流水线,上个月出过一次数据回灌的事故,张雨通宵修到第二天早上六点,八点准时上线。三个标注实习生每天对着标注平台核对数字,把准确率推到了九十三。
他又停了一下。
但——合同里包含两个定制模型的开发。接下来三个月张雨那边要抽人做这件事,工作量不小。大家庆祝完了,周一回来接着干。
他举起杯子。团队碰杯的声音在包间里响了十几秒。陈铭喝完一口放下杯子,对旁边的张雨说:我硕士毕业后第一家待的公司也做大模型,做了两年全部在做poc和demo,没有一个项目真正签过商业合同。智研是我参与的第一个从零到签约的商业化项目。
张雨倒了杯豆奶碰了一下陈铭的杯子:我之前在百度做搜索,项目是做不完的,但都是内部项目没有外部合同。签约的感觉确实不一样。
这个合同是真金白银付钱的,不是玩demo。陈铭说这话的时候看了林晨一眼。
第二杯酒喝到一半的时候出了岔子。
标注实习生小王喝了两杯啤酒脸通红——他平时根本不喝酒,今天大概觉得是庆祝场合所以硬撑着喝。突然他拍了一下桌子对着陈铭喊:陈哥你每次催我们改标注催得那么急——你知不知道我上个月改到凌晨两点有几次?四次!
包间安静了半秒。陈铭愣住了,端着杯子的手停在半空。
你催得紧我能理解,但你至少给个合理的截止日期吧?小王的舌头已经有点大了,每次都是明天之前改完,明天之前到底是几点之前?
旁边另一个标注实习生小赵赶紧拉小王的胳膊:行了行了,喝酒喝酒。
小王被拉着坐下了,嘴里还嘟囔了一句什么,声音小了但语气没软。陈铭脸色有点僵,端起杯子喝了一大口没说话。林晨看了一眼小王——二十三岁,硕士刚毕业就进了智研项目做标注,入职才四个月。四个月里被催了不知道多少次截止日期,今天是酒精把忍了很久的话冲出来了。
包间里的气氛一下子微妙了。张雨倒了杯豆奶走过去拍了拍小王的肩膀,小王抬起头说了句我没事就是有点晕,然后把脸埋进胳膊趴在桌上了。
林晨坐在主位上看着这个场景没有干预。一个团队第一次经历商业化的兴奋之后,总有些日常积攒的东西会被酒精冲出来。小王说的截止日期问题不是今天才有的——他忍了至少两个月了。
聚餐的后半段气氛有些散。陈铭不怎么说话,一直在喝水。小王趴在桌上,中间起来上了一次洗手间回来又趴下了。张雨跟小赵聊了几句数据标注流程优化的技术细节,刻意把话题引到正经事上。林晨把剩下半箱啤酒退了,叫服务员上了壶热茶。
散场的时候快九点半了。小赵扶着小王在楼下打车,小王上车前回头跟陈铭喊了一句:陈哥——我不是针对你啊——剩下的字被车门切断了。
林晨打车回家的路上给陈铭发了条消息:小王说的截止日期的事你回头看一下,确实有问题。
陈铭回了两个字:收到。
到家的时候快十点了。苏婉在客厅沙发上翻书。她抬头看了一眼林晨进门的样子——鞋没摆正、外套搭在玄关椅背上没挂起来。
聚餐?
嗯。签了智研的第一个合同。
多少钱?
四百八十万。
苏婉了一声。她合上书放在茶几上,看了林晨一会儿。你今天看起来不兴奋。
林晨换完拖鞋走过来坐到沙发上。坐垫陷下去的时候他长出了一口气。
聚餐的时候出了点事。一个标注实习生喝了点酒当众抱怨陈铭催工催太紧。
他说的是真的?
是真的。陈铭确实催得紧,截止日期经常给得不合理。
苏婉看了他一会儿。你就为这个不高兴?
林晨靠在沙发上看着天花板。也不全是。我签完合同之后一直在算账——两个定制模型的开发成本可能吃掉利润的大头。第一个合同有可能不赚钱甚至倒贴。
他顿了一下。而且今天小王的事提醒我,团队跑得越快,后面拖着的问题越多。截止日期管理、标注流程优化、新人的工作节奏——这些都是日常不起眼但越积越多的事情。我之前全部注意力都在产品功能上,这些管理细节基本没管过。
苏婉站起来去厨房倒了两杯水,递了一杯给他。
你有没有发现,你每次拿到一个好消息之后第一反应都是接下来会出什么问题
林晨转头看她。
我没说你想错了,考虑风险当然是对的。但你想的全是风险,没给自己留一秒钟高兴的时间。
林晨接过水杯喝了一口。他看着杯子里的水面想了一会儿,然后说了句跟产品数据无关的话:也是。半年前智研连个能跑的原型都没有。
苏婉笑了笑,拿起茶几上的书继续翻。
第285章 团队激励
签约之后第二周,林晨跟hR开了三次会,才把奖金分配方案敲下来。
三次。不是因为钱多,是因为二十四万摊到十几个人头上,每个人怎么分,hR有一套算法,林晨有另一套。hR的算法按职级和工时算,陈铭的职级够但工时记录不全——他经常晚上十一点还在跟国泰证券的技术团队通电话,那些时间没打卡也没填系统。林晨坚持按实际贡献度重新算,hR说这不符合公司制度。第二次会上林晨把陈铭过去十二个月的加班记录打印了一份出来——不是打卡记录,是钉钉会议纪要的时间戳,一共三百多条。hR的姑娘翻了三页,没再说制度的事。
方案还没定的时候就有动静了。周姐先找的林晨——她觉得自己两万出头少了。林总,这个客户是我从第一次接触到签约全程跟下来的。前前后后跑了三个月,中间两次差点谈崩都是我拉回来的。两万出头……说实话,跟付出的时间不太匹配。
林晨没有当场表态。他知道周姐说的有道理——商务端确实是她一个人在撑,从客户的第一通电话到合同最后签字,中间所有对接、报价、条款谈判都是她做的。但二十四万就这么多,给周姐加就意味着从别人那里减。他从哪里减?
张雨那边也有意见,不过他没直接找林晨说。林晨是从陈铭那里听到的——陈铭吃完午饭回来说:张雨觉得六万少了。他跟我说数据流水线一个人搭了半年。陈铭说这话的时候语气很平,没站在谁那边。
林晨心里算了笔账:张雨月薪三万多,六万奖金确实不到两个月工资。但二十四万的盘子就摆在那里,按贡献度分已经是他能争取到的最合理的方案了。hR最初给的那版方案更离谱——张雨按工时算只能拿到四万。
最终林晨拍板的方案:陈铭十万出头,张雨将近六万,三个标注实习生每人八千,周姐两万出头。剩下的摊给项目期间参与过数据校验的其他同事。周姐的金额比hR初版方案多给了三千,从其他同事的份额里匀出来的。
发奖金那天林晨把所有人叫到十五楼那间小会议室。房间不够大,标注组的三个实习生挤在门口加了把椅子。空调出风口正对着最里面那个位置,坐在那儿的张雨把外套拉链拉到了下巴。
林晨站在白板旁边。他没坐。
四百八十万合同的奖金分完了,具体数字你们各自看邮件。我说一件事——这笔钱不多,但它标志着智研从花钱的项目变成了能赚钱的项目。陈铭去年一家一家跑券商谈数据授权,张雨一个人把数据流水线搭起来,标注组每天核对每一个数字的出处,周姐在客户那边磨了三个月把合同谈下来。你们的投入第一次变成了客户愿意付费的产出。
他顿了一下。
接下来的路更长。方向继续对,奖金只会更大。
陈铭接过奖金确认单的时候看了一眼数字,没说话。他把确认单折了一下塞进衬衣口袋里,手指在口袋外面按了两秒。
散会后其他人陆续走了。陈铭没动。
林总,我有个事想商量。
这笔奖金……能不能换成额外的年假?
林晨看着他,没接话。
陈铭的声音放低了。我爸妈在西安。三年没回去了。
三年?
去年春节项目赶进度,没走。今年清明本想回去,FinGpt v3的联调出了问题又没走成。国庆……他停了一下,国庆也只休了两天就回来了。我妈上个月打电话,说让我寄张照片回去就行,不用跑。她说不用跑。
最后三个字他说得很轻。
林晨靠在白板边上,手指敲了两下白板框。奖金换年假,公司没有这个制度。hR的薪酬系统里奖金和假期是两条线,不能互转。他如果硬批,财务那边会打回来。
年假我批不了额外的。林晨说。
陈铭点了点头,表情没什么变化。他大概也预料到了。
但是——林晨打开笔记本翻到项目排期那一页,智研十月中旬之前不会启动新的训练任务。你九月份的调休有四天没休,年假还剩三天。把这两样叠在一起,连上国庆七天——能凑出十四天。回去待十天,来回四天。
陈铭眨了一下眼睛。他在心里算了算——调休四天加年假三天加国庆七天,确实是十四天。之前他只想着额外请假,没想过把已有的假期拼在一起。
奖金照拿。林晨把桌上陈铭刚才折好的确认单从口袋里掏出来又展平了推回去,回家给爸妈买点东西。别说在鹏城混得不好。
陈铭把确认单重新接过去。他站起来走到门口,手搭在门把上,回头说了句:林总,之前在大厂干了几年,没有leader帮下属算过假。
门关上之后林晨打开邮件,给陈铭的调休申请批了通过。
下午两点半,张雨敲门进来。
他来确认数据采集系统下一阶段的预算。随着签约客户增加,数据更新频率需要从每周一次提到每天一次,这意味着整个流水线要加人加机器。林晨批了两台A100做数据处理的预算,然后从抽屉里拿出一份已经打印好的Jd递过去。
你看看这个。
张雨接过来扫了一眼。是数据工程师的招聘Jd,最后一行写着:入职后由张雨负责带教,三个月内达到独立承担数据清洗模块的能力。
带新人?张雨抬头看林晨。
数据采集是你一个人搭起来的,但智研如果长期运营,你不能一直一个人扛着这套系统跑。把新人带出来,明年你才有精力去做更偏底层的事情。
张雨把Jd放在桌上,手指无意识地弹了一下纸边。他沉默了大概十秒。
林总,带人我确实没经验。之前标注组那几个新人是我带的,但效果不好——他们做完的东西我全得重查一遍,还不如我自己做。
因为他们做完你重查,还是因为教的方法有问题?
张雨愣了一下。大概是……我告诉他们标准,但没告诉他们怎么达到标准。比如数据清洗的规则我写了一份文档,但里面的判断标准很多是靠经验做的——什么异常值该删、什么该保留,我自己能判断,但写在文档上就是视情况而定。新人看到视情况而定就懵了。
那就把视情况而定拆开。林晨在白板上画了一条线,你脑子里做判断的时候其实是有一套隐含规则的——只是你太熟了所以觉得自己是凭经验。你回忆一下,上周那个标注新人第一次交上来的数据,你改了哪些地方?
他标的几个异常值我觉得不该删——那是季报里因为会计准则调整导致的数据跳变,不是真正的异常。
你判断的依据是什么?
我看了那家公司的年报附注,里面有会计政策变更的说明。
所以你的判断依据是年报附注里有没有对应的解释,而不是数据看起来正不正常。这条规则你能写出来吗?
张雨想了想。能。异常值判断——先查年报附注是否有会计政策变更说明,有则保留,无则标记为需人工复核。
就这么写。把你脑子里的每一条隐含规则都拆成这种程度的显性规则。写完之后让新人照着做,做完了你查——查的时候只查规则有没有被执行到位,不要查结果对不对。因为规则写对了,结果自然对。规则写错了,你改规则,不改人。
张雨拿起白板旁边的笔,把林晨画的线底下写了两行字。他写得很慢,一笔一笔。
我回去把所有判断规则都拆出来。大概需要一周。
一周够了。新人下周到。
张雨收好Jd和笔记,走到门口又停住了。林总,之前标注组那几个新人……我是不是该重新带一遍?
林晨看了他一眼。你觉得呢?
张雨站在门口没动。过了几秒他说:我把规则文档写好之后先给他们做一次复盘——把之前犯的错误用新规则过一遍,让他们知道错在哪、为什么错。
林晨点了点头。张雨带上门走了。
走廊里传来标注组三个实习生讨论奖金怎么花的笑声。其中一个说想买个新手机,另外两个在起哄说不如凑钱吃顿好的。声音透过会议室的磨砂玻璃传进来,模模糊糊的。
林晨合上笔记本。桌面上还摊着奖金分配的最终确认表。他拿起笔在陈铭的名字旁边画了个圈——调休申请要赶在九月二十号之前走完流程,不然国庆排班系统会把陈铭排进去。他拿起手机给周姐发了条消息,约她明天上午碰一下售后对接的流程——客户已经开始提需求了。
第286章 工作选择
林浩拿到中级厨师证之后,手机上的招聘信息开始变得具体了。
黄师傅在他毕业那天给了一个电话号码。鹏城南山有家川菜馆,老板是我带出来的。开了七八年了,生意稳。你去了能直接上灶。
林浩记下了号码,当天下午就去看了那家店。
川菜馆开在南山区一条老街的拐角,门脸不大,招牌上写着蜀香楼三个字,其中字的灯不亮了。下午三点多店里没人,几张桌子上的收碗布还没撤。林浩从半开的厨房门往里看——四个灶台,两个炒锅师傅正在收档,一个切菜的阿姨在洗砧板。排烟罩上挂着一层油垢,不锈钢台面的接缝处有发黑的污渍嵌在里面。
老板姓秦,四十出头,围裙上全是油点子。他听说是黄师傅介绍来的,上下打量了林浩两眼。中级证?行。过来直接上灶,月薪八千,包吃住。忙的时候晚上加两三个小时,没有加班费但年底有红包。
八千。林浩在心里记下了这个数字。
从蜀香楼出来他又去了福田区另一家。这家是在招聘网站上看到的——新开的中餐厅,老板做餐饮连锁出身,招聘信息上写着月薪一万加绩效提成。林浩去了之后发现店还在装修,工地围挡没拆,厨房的地砖刚铺好,空气里全是水泥味和油漆味。
老板是个穿polo衫的中年人,头发梳得很亮。他看了林浩的厨师证和学校的实操成绩单,当场拍板:你来了先帮我把后厨团队搭起来,等开业了你就是二灶。一万底薪,绩效按营业额算,干得好月入一万二不是问题。
林浩趁老板接电话的时候去厨房转了一圈。灶台已经装好了,但调味罐的标签还是空的——盐和糖用同样大小的白色塑料罐装着,光看外观分不出来。冰柜里放了半箱没拆封的调料,牌子他没见过。他蹲下来看了看冰柜底部的排水口,有水渍但没装排水管。
他在心里把这家的工资记下了,但旁边画了个问号。
晚上回到林晨家,林浩坐在客厅沙发上没开电视。苏婉端了杯水放在他面前,他接过去握着杯子没喝。
怎么了?苏婉问。
在找工作。林浩把手机上的招聘信息翻给她看,黄师傅推荐了一家川菜馆,八千包吃住。还有一家新开的中餐厅,给一万加绩效。
还有呢?
小叔之前说让我找大酒店。
苏婉没接话。她知道林浩心里在纠结什么——她这几天听林晨和林浩断断续续聊过。
林晨八点多回来,换了衣服出来看到林浩还坐在沙发上。他在对面坐下来。
那两家看过了?
林浩点头。蜀香楼能直接上灶,八千。福田那家新店给一万,但厨房太乱了——调料罐没贴标签,冰柜排水口没装管。
你心里怎么想的?
八千……比我在电子厂的时候翻了一倍多。林浩的手指在杯壁上蹭了一下,而且直接上灶。黄师傅说上灶才能练手艺,不上灶等于白学三个月。
林晨没接这个话。他靠在沙发背上想了一会儿。
你去看蜀香楼的时候,厨房卫生怎么样?
林浩顿了一下。排烟罩上有油垢。灶台接缝里有黑渍。
这种地方你每天要在里面待十几个小时。卫生搞成这样说明后厨管理松——管理松的地方,食材把控也不会严。你去直接上灶是能练手艺,但练的是什么样的手艺?
林浩沉默了。他想起新开那家中餐厅的厨房——盐和糖分不清的调料罐、没接排水管的冰柜。那种老板急着开业赚钱,出了食品安全问题,背锅的是厨师。
那……大酒店呢?林浩的声音有点低。
酒店的厨房管理跟小餐馆是两套东西。食材入库有验收标准,出餐有食品安全规范,每个岗位有Sop。厨师学校教技术,酒店教管理。两样都会了才能独当一面。
案板岗……就是切菜?
厨房全流程的入口——进什么料、切什么规格、备多少量,全从案板开始。干一年,有机会顶炒锅岗。
林浩低头看着手里的杯子。水面映着客厅吊灯的光。他没说话。
小叔,我知道你说的是对的。他隔了一会儿开口,声音闷闷的,但五千多块……我刚从厨师学校出来,好歹拿了个中级证。以前在电子厂拿三千五,现在去大酒店拿五千六,涨了是涨了,但跟八千比差了两千四。一年就差快三万。
你算的是一年的账。林晨说,两年呢?去蜀香楼八千上灶,两年后你可能还在那里炒同样的菜,月薪涨到九千。但去酒店两年,你已经把整套厨房管理体系摸清了——出来去任何餐厅起步都是后厨主管的级别,一万五到两万。那时候你不仅会炒菜,你还能管人、管流程、管食材。
林浩的嘴唇动了一下,没出声。他在心里算——两年差六万,但两年之后差距会反过来。可是两年好长。他今年二十三,二十五岁的时候手里能攒下多少钱?
你想快点赚钱,能理解。林晨的语气没有教训的味道,但你拿中级厨师证是为了换个地方切菜吗?
这句话戳到了什么地方。林浩攥着杯子的手指收紧了。他在厨师学校三个月练的刀工、火候、调味——不是为了去川菜馆天天炒鱼香肉丝和麻婆豆腐的。可话说回来,不去上灶又怎么练手艺?
案板岗也能学东西?他问。
案板是厨房的第一道关。备料切配决定了后面所有环节的品质——你切的大小不均匀,炒锅师傅再厉害也炒不出标准的菜。而且案板要接触所有食材的入库、存储、分配,这些是管理厨房的基本功。
客厅安静了很长时间。苏婉在厨房洗碗的声音隔着门传过来,水龙头开开关关。
我再想想。林浩说。
第二天林浩在网上投了四家五星级酒店的厨房岗位。他没有只投一家——他给自己留了退路,如果大酒店不要他,蜀香楼的八千还开着。
三天后,鹏城湾附近一家国际连锁的五星级酒店回复了他。邮件里写着:请于周六上午九点到酒店中餐厨房参加试菜,请自备工装和刀具。
试菜那天林浩早上七点就到了。酒店大堂比他想象的还要大——挑高十几米,一整面墙的落地玻璃外面是海,地面的大理石亮得能照出人影。他穿着学校发的白色厨师服,背着那套用了一个月的刀具包,站在大堂里觉得自己跟这个地方格格不入。前台让他走员工通道,绕到大楼侧面一扇不起眼的铁门进去,坐货梯下到负一层。
厨房在负一层。推开门的一瞬间,林浩愣住了。
这间厨房比蜀香楼大五六倍不止。将近两百平的空间被分成五个区域——烧腊间、炒菜档、蒸柜区、冷菜间和初加工区——每个区域之间用半透明塑料帘隔开。地面是防滑瓷砖,不锈钢排水渠用盖板封住,墙角和设备接缝处看不到任何污渍。灶台一共八口,排成两排,上方是银色的排烟罩,干净到能反光。
中餐行政总厨姓梁,四十多岁,香港人,说话带着浓重的粤语口音。他面前摆着一排试菜评分表,旁边放着三双筷子——每道菜换一双。
试三道菜。鱼香肉丝,麻婆豆腐,你自选一道。每道限时十五分钟,从备料开始。食材在初加工区,自己取。
林浩把刀具包打开,摆好刀和磨刀棒。他走向初加工区取食材——猪里脊、泡椒、豆瓣酱、嫩豆腐、牛肉末、葱姜蒜。取食材的时候他注意到每样东西都贴了标签:产地、入库日期、保质期、验收人签名。冰柜里整整齐齐码着半成品,每一盒上面盖着保鲜膜,贴着日期。
先做鱼香肉丝。他在案板上开始切配——顺纹切猪里脊,粗细尽量一致。泡椒剁碎,葱姜蒜切末。灶台跟厨师学校的不一样——火力猛得多,阀一开蓝色火舌就喷上来,锅底瞬间烧红。他调了一下火,等油温到了七成热下肉丝滑散。速度比在学校快了——火大,每个动作之间的间隔短了将近一半。他稳住手,泡椒末炒出红油,下配菜翻两下,兑汁收锅。十二分钟出品。
端到梁师傅面前。梁师傅用筷子翻了翻肉丝,夹了一口尝。没说话,在评分表上写了几笔。
第二道:麻婆豆腐。他切豆腐的时候格外小心——上次考试碎了一块,这次他放慢了速度,刀入豆腐之前先用指腹试了一下刀刃的力道。下锅——牛肉末煸酥,豆瓣酱炒红油,下豆腐轻轻推而不是翻,勾薄芡,撒花椒面。出锅时豆腐完整,表面裹着红油。
端过去。梁师傅尝了一口,放下筷子,在表上写了几笔。
第三道自选菜他做了回锅肉。川菜厨师的看家菜,他最有把握的一道。五花肉煮熟切薄片,蒜苗斜刀切段。下锅先煸肉,边缘卷起焦壳,加豆瓣酱甜面酱,下蒜苗两翻出锅。端盘的时候他看了一眼——肉片卷边弧度是对的,蒜苗青绿,酱色均匀。
梁师傅三道菜都尝完了。他在评分表最后一栏写了几个字,然后抬起头看着林浩。
基本功扎实。案板岗,月薪五千六,包食宿,五险一金。周一入职。你愿意吗?
五千六。
林浩站在那里,手里的刀具包还敞开着。梁师傅等了几秒。旁边炒菜档的几个师傅在备料,有人瞟了他一眼。
我愿意。
从酒店出来之后林浩站在路边给蜀香楼的秦老板发了条消息:不好意思秦哥,我去了别家。
秦老板秒回:行,以后想回来随时说。
林浩把手机揣回口袋。他想起小叔昨天说的那句话——你拿中级厨师证是为了换个地方切菜吗?
不是为了切菜。但他也知道,从案板岗切菜开始这条路,走起来比直接上灶慢得多。慢就慢吧。他跟自己说了一句,转身往公交站走。
晚上他给林晨发了条消息:小叔,我选了酒店。周一入职。
林晨回了三个字:好好干。
第287章 入职酒店
九月最后一周周一早上七点四十五,林浩站在酒店员工通道门口。
铁门比他上次来试菜时看起来更窄了。门旁边贴着一张A4纸,上面写着员工通道,请刷卡入内。他掏出昨天领到的员工卡贴了一下,门禁了一声弹开。走进去是一条狭长的走廊,天花板很低,日光灯照得走廊里惨白。走廊尽头是更衣室——男女分开,铁皮柜排成两排,每个柜门上贴着编号。林浩找到自己的柜子,换上白色厨师服、黑色防滑鞋、一次性发网。裤子和鞋是酒店配发的,鞋底比他自己的厚,踩在地上有一种橡胶的弹性。
从更衣室出来走货梯到负一层。厨房的门是双开不锈钢门,上面有一个圆形的观察窗。他推门进去的时候,厨房里已经有人了——初加工区的两个阿姨在洗菜,冷菜间的师傅在切卤水拼盘。墙上的时钟指着八点整。
一个四十多岁的男人站在炒菜档的灶台前面,正在用干布擦灶台边角。他个子不高,肩膀很宽,光头,围裙上没有任何污渍。听到脚步声他转过头来,看了林浩一眼。
新来的?
是。我叫林浩,案板岗。
罗。炒菜档主管。他没伸手,指了指案板台的方向,你站那里。
林浩走到案板台前。台面是不锈钢的,比厨师学校的案板宽了将近一倍,上面整齐地摆着四块砧板——蓝、红、绿、白——和一排刀架,刀架里插着六把刀。墙上钉着一张塑封卡片,密密麻麻印着小字。
罗师傅擦完灶台走过来。他在案板台前站定,把六把刀从刀架里一把一把抽出来检查——刀刃、刀背、刀柄,看完一把放回去再抽下一把。检查完之后他抬起头看林浩。
规矩讲一遍。听好了——
他拿起蓝色砧板。海鲜。
红色砧板。生肉。
绿色砧板。蔬菜。
白色砧板。熟食。
他把四块砧板依次放下,动作不快但每一块放的位置都是一样的——间距精确到看起来像用尺子量过。
用错了砧板,交叉污染,整间厨房停业整改。你停,我也停。
林浩点了下头。
罗师傅指了指墙上那张塑封卡片。hAccp食品安全规范。入职一个月内背下来。
他没说有空看看。他说的是背下来。
林浩抬头瞄了一眼那张卡片——从食材验收温度到成品出餐温度到每一道工序的交叉污染防控措施,密密麻麻几十条。他没吭声。
还有——罗师傅走回灶台旁边,拉开一个抽屉取出一卷保鲜膜和一支记号笔,切完的料,半小时内盖好保鲜膜进冰箱。标注日期和品名。每一盒。漏一次,罚一次。
他把保鲜膜和记号笔放在案板台上。
今天中午跟着我看备料单。
说完他转身回了灶台。整个交代过程不超过三分钟。没寒暄,没欢迎词,连有不懂的随时问我这种客套话也没有。罗师傅说话的时候语速很平,像在念一份清单——念完了就是念完了。
林浩站案板台前,把四块砧板的位置记了一遍。蓝红绿白。海鲜、生肉、蔬菜、熟食。他默念了两遍,然后拿起备料单看当天的量。
厨房的上午相对平静。八点到十点是备料时间,各个区域的师傅按备料单准备中午要用的食材。初加工区的阿姨把整筐的蔬菜搬进来,林浩负责按单子切配——鱼香肉丝要多少克猪里脊丝、宫保虾球要多少只大虾、干煸四季豆要多少根。所有的量都精确到克。
他开始切第一筐猪里脊。顺纹切丝,粗细跟学校练的一样——火柴棍粗细。切了十几分钟之后罗师傅走过来了。他没说话,站在旁边看了一会儿。林浩余光瞟到他在,手里的刀没停但速度不自觉地快了一点。
慢了。罗师傅只说了两个字。
林浩不解,他觉得自己切得已经很快了。
罗师傅拿起他切好的几根肉丝看了看,放下。看你的刀——起刀的时候手腕偏了,最后两刀的丝粗了。
林浩低头看了看——最后几根确实粗了一点,不明显,但跟前面的丝放在一起就能看出来。
大小不均匀,炒锅师傅火候控制再好也出不了标准菜。罗师傅说完走了。
林浩重新调整了手腕的角度,从剩下的里脊肉开始切。这次他刻意放慢了速度,把注意力集中在每一刀的起刀角度上。切了半筐之后他停下来把肉丝摆成一排看了看——比刚才均匀了。
十一点,午餐高峰期开始。
变化是突然的。前厅的订单系统接入了厨房——墙上的大屏幕亮起来,一排排菜名往上刷。炒菜档的四口灶同时开火,排烟罩的抽风机全功率运转,轰隆声填满了整个厨房。几个炒锅师傅开始喊单——鱼香肉丝三号桌!麻婆豆腐加急!宫保虾球两份!
林浩在案板台前切备料。订单一条一条刷上来,每个炒锅师傅喊出来的菜名都意味着他需要立刻把对应的备料送过去。他的手速已经不慢了——厨师学校三个月的刀工训练不是白练的。但酒店的节奏和学校完全不同。学校实训的时候是做完一道再做下一道,这里是四口灶同时出菜,八个菜同时在锅里,每一道菜的备料都要在他这里排队。
十二点二十分,他切到第三十多份备料的时候手开始发麻。右手食指和中指因为长时间握刀已经僵成了弯曲的形状,放下刀的时候手指半天伸不开。他用左手把右手的手指一根一根掰直,揉了揉指关节,然后重新拿起刀。
一点半,高峰期过去。灶台上一口接一口地熄了火。炒锅师傅们开始收档——清洗灶台、整理调料、清点余料。林浩站在案板台前,面前堆着十几盒已经切好但没用完的备料。
罗师傅走过来。他看了一眼那堆备料,拿起其中一盒,揭开保鲜膜看了一眼又盖上。
今天备多了。蒜苗多了两份的量,虾仁多了一份。多出来的到明天就不能用了——浪费。
林浩张了张嘴。备料单上写着预约客量对应的量——但实际下单比预约多了几张——
所以你备料的时候要多算还是少算?
林浩想了想。往多了备一点。但不要多太多。
多多少?
……不知道。
看前厅的预约单——散客预约跟团餐预约的比例。罗师傅拿起案板台上的一支笔在备料单的空白处写了几个字——散客多备一成,团餐按量。写完把笔放回去,走了。
下午三点厨房全面收档。林浩负责清洗案板台和砧板。他把四块砧板搬到清洗池,用指定品牌的清洁剂刷了三遍——每块砧板刷完翻面再刷,连边缘和底面都不放过。他记得罗师傅说用错了砧板就是交叉污染,那清洁不到位也一定出事。
他在刷红色砧板的时候发现底部边缘有一条细缝——砧板用久了表面会起毛刺,毛刺里可能藏着肉末。他蹲下来把那条细缝用刷子头仔细抠了几遍,确认干净了才放下。
员工食堂在厨房隔壁,六张长桌,菜是自助取的。林浩端着餐盘找了个角落坐下。他刚拿起筷子,罗师傅端着自己的盘子坐到了对面。
罗师傅吃饭很安静,嚼东西的时候嘴不动声。林浩低着头扒饭,不知道该不该说话。
今天中午你切了多少份备料?
林浩咽下一口饭。没数。几十份吧。
几十?
可能……三十多?
四十二。罗师傅用筷子点了点他面前的桌面,你备的料,你自己心里要有数。多少份、用了多少、剩了多少。剩了多少就是浪费了多少。
林浩放下筷子。
还有——罗师傅把一块西兰花夹起来看了看,你备的料被送进炒锅之后,出来的菜你看过没有?
没有。
以后要看。罗师傅把西兰花放进嘴里嚼了两下,你切的大小不均匀,炒锅师傅再厉害也炒不出标准的菜。案板是第一道关。你手里出来的东西不标准,后面全乱。
他吃完最后一口饭,站起来端着盘子走了。走到餐盘回收处的时候头都没回。
林浩坐在那里,面前还有半盘饭没吃完。他慢慢嚼着,脑子里把罗师傅的话过了一遍。大小不均匀——备多了浪费——备的料出来什么结果得自己看。三件事。他拿出手机想记一下,想了想又放回去了。员工食堂不让用手机。
晚上回到员工宿舍——四人间,上下铺,他睡下铺靠窗的位置。同屋的三个一个是冷菜间的、两个是初加工区的,都比他来得早,已经洗完澡在各自铺上刷手机。林浩洗完澡坐到床上,从枕头底下翻出那本卷了边的调味记录本。他翻到空白页,把今天罗师傅说的三件事写了下来。
写完之后他翻到前面看了一眼——鱼香肉丝酸突出,泡椒味被压制,那是进校第三天的事。四十八页的错误和修正。他合上本子,又打开,翻到背面第一页。
他在那页上写了两个字:备料。
然后他翻开墙上hAccp规范表的照片——白天用手机拍的——开始背。第一条:食材验收温度。冷藏品四度以下,冷冻品零下十八度以下。
他把手机亮度调到最低,一行一行地看着那张密密麻麻的规范表。看到第三条的时候,隔壁铺位的呼噜声响了。
第288章 酒店磨练
十月中旬,林浩在酒店厨房干满了三周。
三周的时间让他对这两个字有了全新的认识。在厨师学校,精确是老师嘴里的标准——肉丝火柴棍粗细,油温七成热,盐少许糖适量。在酒店厨房,精确是备料单上的克数、保鲜膜上的日期标签、冰柜里每盒半成品的摆放位置。罗师傅有句没明说的话林浩慢慢品出来了——厨师学校教你做菜,酒店厨房教你做不出错。
但不出错很难。
第一次犯错是入职第十一天。
那天下午三点多,午餐高峰刚过。林浩在案板台前切完最后一单备料——猪肉丝,红色砧板。他放下刀,把切好的肉丝装盒、盖保鲜膜、贴标签、放进冰柜。然后他拿了一块湿布擦案板台——擦到一半的时候冷菜间的师傅过来借一把削皮刀,他侧身去刀架上取。取完递过去,回身继续干活——他拿起一块绿色砧板,把一筐刚从初加工区送来的青笋摆上去开始切丝。
青笋切到第三根的时候,罗师傅从灶台那边走过来了。
他站在案板台旁边没说话。林浩余光看到他,手停了一下。
罗师傅伸手摸了一下红色砧板的表面。然后他看了一眼林浩手下的绿色砧板——青笋正在上面被切成丝。
红色砧板切完生肉,消毒了吗?
林浩的心一下子沉下去了。他刚才擦案板台的时候只擦了台面——红色砧板用完了他随手推到一边,没有消毒就直接把绿色砧板摆上去了。两块砧板挨着,绿色砧板的底面贴着红色砧板的边缘。
没消毒。我——
整块绿色砧板上的青笋全部扔掉。罗师傅的声音跟平时一样平,砧板底部可能接触了红色砧板表面的生肉残留。青笋是做凉菜的——不经高温杀菌。
林浩把那筐青笋端到垃圾桶旁边倒掉了。半筐青笋,三四斤重。他蹲下来把绿色砧板搬到清洗池,用消毒液泡了五分钟,刷了三遍,竖起来沥干。
回到案板台前的时候他发现罗师傅已经把那块红色砧板也搬走了。灶台到案板台之间不到三米的距离,罗师傅走过去又走回来,两块砧板,他一块都不会放过。
记下来。罗师傅经过他身边的时候说了两个字。
林浩从口袋里摸出那本调味记录本,翻到反面——他在入职第三天开始用反面记错误。他写了一行字:换砧板前必须消毒。红绿之间不能挨着放。
写完他又加了一句:生肉砧板用完立刻消毒,不要等。
第二次犯错更严重。
入职第十八天。那天预约客量比平时多了两桌——一个商务团加一个婚宴包间。备料单是头天晚上根据预约算好的,林浩照单备料。但中午高峰开始之后他发现牛肉丝的消耗速度比预想的快——鱼香肉丝和水煮牛肉两道菜同时被点了十几次,备料单上他只按标准量备了六份牛肉丝,到十二点半就用完了。
他在案板台前愣了几秒——订单还在刷,水煮牛肉的备料没了。他赶紧从冰柜里取了牛肉出来化冻,但牛肉冻得硬邦邦的,用微波炉解冻最快也要三分钟,再切丝又得五分钟。八分钟。高峰期八分钟断一道菜。
水煮牛肉断了九分钟。前厅经理冲到厨房门口的时候脸是白的——包间的客人在催菜,催了三次。
水煮牛肉呢?九分钟了!
罗师傅站在灶台前没回头。他看了林浩一眼——那一眼很短暂,林浩觉得比被骂更难受。
化冻的牛肉出来之后林浩用最快的速度切完了备料送过去。罗师傅接过来没说话,开灶做了。出品的时候一切如常——客人吃了没抱怨,前厅经理也没再追过来。
但那天下午收档之后,罗师傅把林浩叫到了灶台旁边。
备料量怎么算的?
按备料单。单子写六份我就备六份。
预约单上商务团和婚宴包间同时开餐——你看了没有?
看了。但备料单是头天晚上排的,我照着备——
备料单是死的,你人是活的。罗师傅从灶台下面的抽屉里拿出一叠前厅的预约单翻到当天的页面,商务团八人桌,菜单里预点了水煮牛肉。婚宴包间十人桌,菜单里也预点了水煮牛肉。两桌同时开,你光算散客的点单量够吗?
林浩看着预约单上的两行字。他备料的时候只看了备料单——备料单是头天晚上按预约总客量算的标准量。但商务团和婚宴包间的菜单是提前定好的,这些预点菜的量他没有加进备料单里。
团餐和包间的预点菜单要单独加算。散客按标准量备,团餐按菜单加量。罗师傅把预约单放在案板台上,这个道理你下次记住了?
记住了。
记住了没用。写下来。
林浩掏出记录本,翻到反面。他写了两行字:团餐预点菜单要单独加算备料量。散客和团餐分开算。
写完他停了一下,又加了一行:备料单是参考,不是圣旨。动脑子。
罗师傅看了一眼他写的东西,没说话,转身继续擦灶台。
这两次犯错之后,林浩养成了一个习惯。每天晚上回到宿舍,他翻出那本调味记录本——正面是菜谱和调味比例,从厨师学校带到现在的四十八页。反面是错误日志,入职之后新写的。每一天下班之后他坐在下铺把当天犯的错误抄一遍——不只是在脑子里记,是用手一笔一笔写。写完第二天早上上班前再看一遍。正面四十多页菜谱和调味比例,反面十七页错误和纠正。他每天晚上写完一面翻到另一面。
错误日志写到第十七页的时候,罗师傅注意到了。
那天下午四点多,厨房没什么活。罗师傅坐在灶台旁边的铁凳子上喝茶——不锈钢保温杯,茶色浓得发黑。林浩在案板台前整理第二天的备料单,拿着前厅的预约单一桌一桌核对预点菜的量。
罗师傅喝了一口茶,放下杯子。他的目光扫过案板台上林浩摊开的那本记录本——正面朝上,能看到一页菜谱。罗师傅没说话,但目光停了两秒。
你那本子——
林浩把本子翻到反面给他看。错误日志。每天记一遍,第二天上班前看一遍。
罗师傅看了看反面的内容。一页一页翻——砧板消毒、备料量计算、标签漏贴、保鲜膜没盖紧……全是小错。有些错他抓过,有些他没抓到但林浩自己发现了。
他翻了三四页,合上本子还回去。没说好也没说不好。
然后他站起来,把茶杯放在灶台上,走到八号灶前面——那是四口主灶之外的一口备用灶,平时不开。
过来。
林浩放下本子走过去。
罗师傅从冰柜里取了一盒嫩豆腐、一袋牛肉末、一罐豆瓣酱和一小瓶花椒面。他把这些东西放在八号灶旁边的备料台上。
麻婆豆腐。用这口灶做。
林浩看着八号灶。灶台跟四口主灶一模一样——德国进口,火力比厨师学校猛一倍。他之前只在案板台前切备料,从来没有在酒店的灶台上正式炒过菜。试菜那天不算——试菜那天梁师傅在旁边看,压力不一样。
现在?
罗师傅没回答。他走到旁边拉了把铁凳子坐下来,端起保温杯喝了一口茶。
这就是的意思。
林浩深吸了一口气。他系紧围裙带子,打开灶台阀门——蓝色火舌喷出来,锅底瞬间烧到发白。他倒了一勺油进锅,等油面开始起烟。
下豆瓣酱。酱入锅的一瞬间油花四溅——火太大了,酒店灶台的油温上升速度比学校灶台快了将近一半。他的手被溅了一滴热油在虎口上,他没缩,右手拿勺快速推了三下把豆瓣酱炒匀。
下牛肉末。牛肉末入锅后要快速炒散——但在大火上肉末凝结的速度也快,他必须比在学校的时候更快地把肉末划开。铲子下去推了四下,肉末散开了,但有一小团还没完全炒开。他没时间去管,直接把牛肉末推到锅边——
下豆腐。他一手端着豆腐盒一手扶着锅沿,嫩豆腐滑进锅里。推。不能翻——翻会碎。他拿勺子背轻轻推了两下让豆腐均匀裹上酱汁。
勾薄芡。芡汁沿着锅边淋下去——量要多一点,因为火大收汁快,少了挂不住。他凭经验调了量,心里没底。
撒花椒面。出锅。
端盘的时候他看了一眼——豆腐完整,表面红油裹着花椒面,牛肉末大部分酥散,有一小团没炒开的不明显。卖相可以。
他端到罗师傅面前。罗师傅放下保温杯,从旁边的筷子筒里抽了一双筷子。他夹了一块豆腐放进嘴里。嚼了两下。
林浩站在灶台前面,两只手垂在身侧。他注意到虎口上那滴热油灼出的微微刺痛。厨房里很安静——其他灶台都熄了火,排烟罩的风机也停了。只有远处初加工区的水龙头还在滴水,一滴一滴地响。
罗师傅咽下去。放下筷子。
一个字。
林浩的手指微微松了一下。他自己可能没意识到刚才攥紧了。
罗师傅站起来,把铁凳子推回墙边。他走到灶台前看了一眼八号灶——锅壁上还有一点残留的芡汁。他拿起抹布擦了一下,又看了一眼林浩。
芡汁淋少了。火大要多两成。下次注意。
说完他拎着保温杯走了。
林浩站在八号灶前面,看着罗师傅的背影拐进了冷菜间的方向。他低头看了一眼自己的手——虎口上有个小红点,是刚才豆瓣酱入锅溅的热油。
那天晚上他在记录本反面的第十七页写完当天的错误——芡汁淋少了,大火要多两成——之后,翻到正面在鱼香肉丝后面加了一行小字:酒店灶火力=学校灶x2,所有跟时间相关的动作都要提前半拍。
十月底,林浩在酒店厨房做满一个月。罗师傅开始在闲的时候偶尔让他用八号灶练手。算不上正式的上岗培训,只是罗师傅喝完下午茶之后的十分钟或者收档之前的二十分钟。罗师傅不会说来,我教你——他只会在某天下午茶喝到一半的时候突然说,然后从冰柜里取一样食材放在八号灶旁边,自己坐回铁凳子上端着茶杯看。
有一次他让林浩炒回锅肉。林浩下蒜苗的时候火候过了——蒜苗叶子发蔫,颜色从亮绿变成了暗绿。罗师傅看了一眼盘子,没说行也没说不行,只说:蒜苗下锅翻两下就出。不是三下,两下。
还有一次他让林浩做干煸四季豆。林浩炸四季豆的时候油温控制得不错,但出锅前加干辣椒和花椒炝锅的时间差了半拍——花椒在油里多待了两秒,整道菜带着一丝苦味。罗师傅尝了一口,放下筷子。
花椒什么时候下?
油温上来之后——
油面开始冒细烟的时候。不是冒粗烟。罗师傅说完继续喝他的茶。
林浩在记录本上记下来:花椒下锅时机=油面冒细烟。早了不出味,晚了发苦。
十一月第二周的一个下午,罗师傅喝完茶之后没说。他把八号灶点着了,自己站在灶台前面。
你看。
他往锅里倒了一勺油。油热之后他没看油面——他在听。油在锅里刚开始响的时候是一种细密的滋滋声,像蚂蚁在铁皮上爬。然后声音变了——滋滋声变成了噼啪声,像很小的鞭炮。罗师傅在噼啪声开始后的第二秒下了花椒。
听到没有?
噼啪声。
这是油温到点的信号。看烟不准——油的品种不同冒烟温度不同,厨房里今天用的油和明天用的油可能不是同一批。但声音是准的——不管什么油,到了适合下料的温度,声音都一样。
他让林浩站到灶台前面。锅里的油在噼啪作响。
你听。
林浩侧着耳朵。噼啪声密集但不炸——像很小的气泡在油里一个接一个破裂。他之前炒菜一直看油面的烟度判断温度,从来没注意过声音。
听多了你就不需要看烟了。罗师傅关了火,眼睛一次只能看一个锅,耳朵能同时听两口灶。以后你管两口灶的时候,靠耳朵。
林浩站在灶台前面,看着锅里的油慢慢安静下去——噼啪声渐渐消失了,只剩最后几个零星的气泡声。
那天晚上他在记录本正面写下了新的一行:听油声判温——滋滋声低油温,噼啪声下料点。写完他看了一遍正面和反面的内容——正面四十多页菜谱和调味比例,反面十七页错误和纠正。两边加起来,大概就是他这几个月全部学到的东西。
他合上本子,放在枕头边上。走廊里有人经过,脚步声远了。手机屏幕已经自动息屏了——他不知道看了多久。
第289章 餐饮的想法
十一月的一个周日下午,林浩休息,回了林晨家。
这已经变成了一种习惯——每逢休息日林浩就会回来,在厨房里跟苏婉一起做一桌菜,然后一家人边吃边聊。今天他带了一条在酒店冷菜间学到了做法的香茅烤鱼——用香茅、柠檬叶和南姜去腥,烤出来的鱼肉鲜嫩带一层焦香的脆皮。他还做了一道酒店食堂版的家常回锅肉——用郫县豆瓣和甜面酱调底味,蒜苗切斜刀快炒出锅,肥肉部分透明微卷,瘦肉部分挂着酱色的亮光。
饭桌上,乐乐啃着烤鱼肉,嘴巴没停过。浩哥哥你做的鱼真的超级好吃——比我们学校门口那家快餐好吃一万倍!
谢谢乐老板。林浩学着酒店前厅服务员的样子做了一个夸张的鞠躬。这是这两个月他在酒店学会的另一件事——跟同事的互动比以前更放松自如了。以前在电子厂他跟任何人都没话聊,现在他会开玩笑了。
那个快餐很难吃吗?苏婉问乐乐。
超难吃!那个阿姨炒的菜全是一个味道——番茄炒蛋甜得跟糖水一样,回锅肉全是肥的。乐乐用筷子比划着,一脸嫌弃,浩哥哥你做的回锅肉肥的是脆的,瘦的是香的,不一样!
你那个不一样说得还挺精准的。林晨看了乐乐一眼。
因为我吃过啊!乐乐理直气壮,那个快餐店的回锅肉是肥的先炸过的——但是炸太久就全缩成硬的了。浩哥哥的是煸出来的——肥油逼出来了但不硬。而且那个快餐店的肉切得好大一块,浩哥哥切的是薄薄的,一口一片。
林晨有点意外地看了儿子一眼。七岁的孩子能把回锅肉的肥肉处理方式说出来——虽然用词稚嫩,但观察是准确的。他转头看了林浩一眼,林浩正低头夹菜,没有接话,但嘴角往上提了一点。
苏婉也注意到了。乐乐,你以后可以当美食评论家。
什么是美食评论家?
就是专门吃饭然后写文章说好不好吃的人。
那不是世界上最幸福的工作吗?乐乐眼睛亮了。
不对——世界上最幸福的工作是我同学她爸爸——她爸爸是冰淇淋厂的,可以每天吃冰淇淋。乐乐纠正。
那第二名就是美食评论家。
乐乐认真想了想,点了点头表示接受这个排名。
一家人都笑了。林浩笑的时候嘴咧得比以前大了——两个月前他笑起来还是那种小心翼翼的、带着几分拘束的弧度。现在他脸上的表情自然了。苏婉看着林浩笑的样子,心里想:这两个月这孩子确实变了——以前回来吃饭他基本只动筷子不动嘴,现在他能跟乐乐斗嘴了。
饭后苏婉在沙发上看书,乐乐趴在地毯上玩积木。林晨和林浩坐在阳台上。十一月鹏城的天气是最舒服的时候——海风干爽微凉,不湿不闷。阳台上的三角梅还开着,红的紫的挂在栏杆外面,被风一吹就轻轻晃。
林浩,你在酒店做了快两个月了。感觉怎么样?
比我前五年在电子厂学到的东西加起来都多。林浩靠在藤编躺椅上,语气比以前从容了太多,罗师傅虽然不怎么说好话,但他教东西很实在。我现在管炒菜档的备料基本上不会有差错——而且他开始偶尔让我在他监工下炒几道比较简单的菜。
你对未来有什么想法吗?
林浩没有马上回答。他端起杯子喝了口水,放下杯子的动作比平时慢。阳台上有几秒钟的安静——只有远处海面上拖船的汽笛声,和楼下小区里某个小孩骑平衡车的轱辘声。
暂时没有。先把基本功磨扎实——罗师傅说我至少还要练一年才算可以上手他顿了一下,手指无意识地摩挲着杯沿,目光落在阳台栏杆的三角梅上。然后他好像下了某种决心——小叔——我有时候晚上在宿舍会想一些事。
什么事?
就是……如果技术再练好一点的话——他说到这里停住了,像是在斟酌该不该继续说。嘴唇动了一下,又合上了。
林晨没有催他。他知道林浩不是那种话到嘴边就能脱口而出的人——他需要一点时间把脑子里已经想过无数遍的东西整理成可以讲出来的句子。
算了,说出来怕你觉得我想太远了。我一个刚学两个月菜的人,说开店——
想远不犯法。说。
林浩把目光从三角梅上移开,看向阳台外面的远处。我有时候会想,将来能不能自己开一家店。不用太大——就是那种科技园白领中午来吃饭的快餐店。
为什么是快餐?
因为我自己的消费能力就摆在那里——我从月薪三千五的流水线过来的,我知道大多数普通人中午能承受的就是人均二三十。酒店厨房出品那些菜人均几百——但那不是我的客群。他说着说着语速快了起来,手指不再摩挲杯沿,而是握住了杯子,科技园那些写字楼里的人,中午就一个小时,他们要的是味道还行、上菜快、价格能天天吃得起。我现在在酒店学的这些川菜技法——稍微调整一下就能做出比周边快餐店好吃很多的东西。
他停了一下,又补了一句:但我也只是想想。我还差得远。
林晨没有接差得远这半句话。他在脑子里把林浩的话过了一遍。方向是对的——但他需要确认这个年轻人是认真想过的,还是随口一说。
你说的方向可以再想深一点。快餐这个赛道确实比高端餐厅宽——鹏城几百万上班族每天中午都要吃饭。但你说的味道还行、上菜快、价格能天天吃——任何一家快餐店都在说这三件事。你得告诉我你凭什么比隔壁那家做得好。
林浩愣了一下。他之前没有想过这个问题——他只想着我做的菜比他们好吃,但没有想过怎么变成一种稳定的、每天都能复现的东西。他的嘴唇动了动,没说出声。
我在酒店学到的标准化——他说了一半,自己又卡住了,但酒店的标准是星级酒店的标准,快餐店不可能做到那个程度。成本撑不住。
对。所以你要想的是——怎么在快餐的成本约束下,把酒店后厨那套标准化的核心逻辑搬过来。全套搬不了,搬核心的就行。你不可能在快餐店里用罗师傅那个级别的备料精度——但你至少可以做到每一份菜的主料称重、调料按比例配好、出餐时间有标准。
林浩点点头,眉头皱着,显然在消化这句话。他在酒店学的是高精度的标准化——但快餐的客单价决定了成本空间有限,他需要找到一种在有限成本下保持出品一致性的方法。这个问题他之前没有想过——但它确实是他将来必须解决的。
现在能开吗?林晨问他。
林浩摇了摇头。
不能。原因不只是你只会炒菜。林晨靠回椅背,开店需要选址、装修、供应链、人员管理、财务——这些你都不懂,但这不是最大的问题,不懂可以学。最大的问题是你现在炒菜的水平还不够稳定。罗师傅说你还要练一年——你自己也清楚。一家快餐店的口碑建立起来需要时间,但毁掉只要一次。开业第一个月出品不稳定,顾客就不会来第二次。快餐不像酒店——酒店一个客人不满意,前厅经理还有机会补救。快餐店一个人拿了难吃的那份,他转头就走了,你连他的脸都记不住。
林浩没说话,嘴唇抿紧了。他低下头看着手里的杯子——杯子里的水已经凉了,他没注意到。一个人撑不起一家店。谁管账?谁管进货?谁管卫生检查?谁管外卖平台?一家店从房租谈判到灶台采购,从排烟管走线到营业执照审批——这些事他连碰都没碰过。
所以你现在先别急。林晨说,在酒店继续磨技术。同时开始观察后厨怎么运转——备料、库存、出餐节奏、人手调度。你炒菜靠手,管厨房靠脑子。两样不一样。
那我什么时候才算准备好了?
等你自己能回答刚才那个问题——凭什么比隔壁做得好——而且能拿出证据的时候。
客厅里乐乐的积木塔倒了,地叫了一声。苏婉在旁边说:没关系,再搭一个。然后乐乐又开始噼里啪啦地重新搭。积木撞击地板的声音从客厅传到阳台——清脆的,细碎的。
林浩听着客厅里的声音,沉默了一会儿。然后他轻声说了句:我知道了。
他没有再往下说。但林晨注意到他划了几下手机。
阳台上的三角梅被风吹得轻轻晃。林浩站起来说去帮苏婉收拾碗筷,走进客厅之前把手机揣回口袋。他弯腰搬积木的时候乐乐抬头看了他一眼——浩哥哥你怎么不笑了?我在想事情。想什么事情?想怎么比隔壁做得好。
乐乐没听懂,但她觉得这个回答很认真,就点了点头继续搭她的积木塔。
第290章 市场调研
十二月开始,林晨在工作之余做了一件事——系统地研究鹏城的快餐市场。
他做研究的方式跟做量化策略差不多——先收集数据,再到现场验证,最后看数据跟现场能不能对上。如果数据说某条街的快餐需求大,但现场看到那条街的快餐店在亏钱,那数据就有问题。必须两个维度交叉验证。
数据方面,他在网上查了鹏城餐饮行业的公开数据和报告。鹏城常住人口接近一千八百万,其中科技园、cbd、前海几个核心商务区每天中午的外食人群超过两百万人。快餐赛道的人均消费区间大约在二十到五十块——其中人均二三十块是最大的区间,覆盖了最大比例的上班族群。这个价位段的消费者最在意三样东西:味道过得去、出菜快、价格不心疼。至于品牌、装修、故事——没人关心。花心思在品牌包装上的快餐店林晨见过不少——开业的时候热闹两个月,之后客流就掉了。因为二十块钱一顿饭的人不会为你讲故事买单,他只会为他明天还愿意来吃买单。
实地走访才是真正花时间的部分。连续三个周末的中午他都开车去了科技园附近。
第一个周末他选了腾讯滨海大厦旁边巷子里的一家湖南快餐店。到的时候十一点半,他没进店,站在马路对面的一棵大王椰子树旁边,打开手机计时器。十一点四十分,第一个白领模样的年轻人走出来拎了一份打包。然后第二个人、第三个人。到了十一点五十五分,门口开始排队——不是三五个人的队,是拐了个弯的队,排出去将近三十米。队伍里的人清一色穿着卫衣或者格子衫,低头刷手机,偶尔抬头看一眼队伍移动的速度。没人不耐烦——因为他们知道这家店出餐快,等不了多久。
林晨目测了一下店铺面积,大概不到八十平,里面摆了十几个座位,绝大部分顾客是打包带走。他在树旁边站了整整四十分钟,一边数人头一边在手机备忘录里记数字。四十分钟里这家店至少出了一百二十份餐。按均价二十三块算,四十分钟营收两千七百多块。一个中午高峰期两个小时下来,营业额破万不是问题。
他走到那家店的门口看了一眼菜单——贴在墙上的塑封纸,十五道菜,全是湘菜家常菜,定价十八到二十八块。米饭一块钱随便加。门口支了一口大铁锅,里面煮着筒骨萝卜汤,免费送。店面装修简陋到几乎没有——白墙、塑料凳、不锈钢桌子。但地上干净,没有油污。灶台前面那个胖胖的厨师满头大汗,颠勺的动作快得像上了发条。旁边一个帮厨在不停地往灶台上递备好的菜——整个后厨的节奏像一台运转顺畅的机器。
林晨在门口站了一会儿。厨师抬起头看了他一眼——大概以为他是排队等位子的客人。林晨点了一份小炒黄牛肉打包。等了四分钟出餐。味道不能说惊艳,但确实比大多数快餐好吃——牛肉嫩,辣味足,米饭是现蒸的。二十三块钱吃到这个水平,难怪排长队。
第二个周末他去了南山科技园另一条街。那边的快餐生态不太一样——几家连锁品牌的快餐店占了主力,自选菜模式,十几道菜摆在不锈钢保温台里,顾客拿托盘自选。生意有好有坏。生意好的那家排长队,生意差的那家门可罗雀。林晨在生意差的那家门口站了一会儿,看出了问题——保温台里的菜颜色发暗,青菜蔫了,红烧肉结了一层白油。他进去点了一份尝——味道不能说难吃,但明显是放了很久的菜。保温台这个东西本身就是双刃剑——方便了顾客自选,但菜放久了口感和卖相都会下降。没有人会为这样的菜排第二次队。
第三个周末他去了车公庙和前海桂湾。车公庙的快餐更接地气——巷子深处藏着好几家只有本地人才知道的小店,一家潮汕粿条店的老板跟每个来的客人都打招呼,显然是熟客生意。他还进去点了一碗——十五块,粿条爽滑,牛肉片薄而嫩,汤底清甜。老板是个五十多岁的潮汕大叔,一边下面一边跟客人聊天——今日加班啊?嗯,赶个版本。食完多饮汤啊。这种熟客关系是连锁快餐店做不到的,但它也意味着扩张性差——这家店只能服务这一条巷子的人。前海桂湾那边则全是新楼新铺,快餐店数量不多,但每家装修都比较新——写字楼群还在陆续入驻,客流量没有科技园那么大,但竞争也小。
每个商务区的快餐生态都不一样,但底层逻辑是一样的:写字楼密集的五百米范围内,出餐速度快、人均适中、口味至少达到连锁中上水平的店,日子都不难过。选址不犯大错,基本不会亏钱。反之,那些口味一般、出餐慢、或者卫生肉眼可见不过关的店——即使在好位置也撑不过半年。林晨在车公庙的一条巷子里就看到了一家已经关门贴了转让的快餐店,门口的招牌还没拆,上面写着隆江猪脚饭——玻璃门上贴着红纸黑字的旺铺转让。
这些观察他回去之后整理成了一份简单的报告——没有花哨的图表,只有数字和结论。跟做投资研究一样,数据最终要收敛到几个核心判断上。他写了一页A4纸——正反两面。正面是数据:核心商务区的午餐人群规模、各价位段的竞争格局、几家典型快餐店的客流量和出餐速度。反面是结论:人均二十到二十五的川菜快餐在科技园南区和中区存在市场空白——湘菜快餐有但不多,川菜快餐几乎没有。这是机会。
观察林浩是另一个维度的调研。林浩在酒店厨房做了将近三个月,变化是看得见的——技术上的进步需要更长时间才能看出来,但关注点的变化已经很明显了。
有一天晚饭后苏婉在厨房洗碗,林晨靠在门框上跟她聊天。
你有没有发现林浩最近跟以前不一样了?
怎么了?
上次他回来做饭,我看见他收拾食材的时候把每个菜的成本在脑子里过了一遍。鱼香肉丝的肉和配菜比例他随口就说出来了——肉丝一百二十克、笋丝八十克、木耳四十克。这些比例他自己算的——菜谱上根本没写这么细。
苏婉关了水龙头,用围裙擦了擦手。他前天跟我聊天的时候说了一件事——你知道他现在在酒店怎么估算备料量吗?他会看前厅的预订系统——如果那天宴会厅有三个桌餐,商务餐的备料就要比平时多备百分之十五。因为他发现宴会散场后会有小高峰——宴会客人出来了不想走远,就到商务餐厅随便吃一口。
罗师傅教他看的?
不是。他自己发现规律之后跟罗师傅说的,罗师傅让他以后每天看前厅的预定报表。苏婉把洗好的碗放进沥水架,还有一件事——他现在下班之后会留在厨房多待二十分钟。把第二天要用的腌料先配好——用小保鲜盒分装,上面贴标签写菜名和日期。罗师傅看到之后没说什么——但第二天给他加了一个小时的加班费。
他还说过什么?
苏婉想了想。他问过我一个问题——他说婶婶,你们学校同事中午一般花多少钱吃饭。我说是二三十块吧,有时候点外卖更贵一点。他说那如果楼下有一家二十块能吃到现炒的川菜你愿不愿意。我说愿意啊,现在外卖二十块只能吃到预制菜。他听了之后就在那里算——二十块客单价、食材成本六七块、毛利多少多少——算着算着自己笑了一下。
林晨没有说话。他靠在门框上,对苏婉说:林浩开始自发关注成本结构和经营逻辑了。备料量估算、客单价推算——厨师不会想这些,经营者才会。
十二月中旬的周末晚饭后,林晨和苏婉在阳台上喝茶。他把最近考察快餐市场的观察跟苏婉说了。
林浩想做快餐这个想法,方向是对的。他技术上还需要再磨——但现在关注的东西已经从怎么炒好一道菜怎么经营一道菜的方向偏了。
你真的打算跟他合伙开店?
不是现在。但方向可以确认了。林晨放下茶杯,快餐这件事能做,但前提是出品稳定。林浩现在还不够稳——我上次吃他炒的回锅肉,连续两份的蒜苗熟度差了一截。酒店可以容许这种误差,快餐不行。快餐的顾客没有忠诚度——你今天比隔壁好吃他就来,明天不如隔壁他就不来。
苏婉端着茶杯看着阳台外面。鹏城的冬天不下雪,但十二月的风已经带了一点冷意。她把披在肩上的薄毯裹紧了一点。
林浩上次跟我说了一句话——他说他以前在电子厂的时候觉得自己这辈子就这样了。现在他觉得可以做点什么事。
林晨没有回应。他端着茶杯站在阳台栏杆边,听着风声。
过了一会儿他说:等他技术再稳一些——我们认真聊。
苏婉没有追问什么时候算稳。她了解林晨——他说认真聊就是已经在想了,只是还没到该出手的时候。她把茶杯收了,进屋给乐乐掖被子去了。
第291章 兄弟商量
十二月底的最后一个周六,林晨约了堂哥林枫见面。
林枫比林晨大几个月,今年也是三十八岁——在鹏城做了十几年的建筑工程,从最基础的施工员做到了项目副经理。他管过工地的材料采购和人员调度,对装修成本、工期控制和供应商管理的经验非常丰富。最近两年建筑行业不太景气,林枫所在的公司裁员了好几轮——他本人虽然还没被裁,但也感觉到了行业的寒意。上个月公司年会,往年都要包个酒楼摆十几桌,今年改成了部门聚餐——人均预算砍了三分之二。这种细节比任何新闻都直观。
两人约在了科技园附近的一家茶餐厅。林晨之前在附近考察快餐店的时候发现这家的奶茶不错,冻柠茶的酸度刚好,就记下了。
林枫到得比林晨早。他还是老样子——穿着那件洗得有些发白的深蓝色工装外套,左手端着冻柠茶,右手摊开一份从工地带过来的工程进度表。他在看进度表纯粹是习惯了——手里没东西反而不自在。堂兄弟俩见面不用寒暄。林晨坐下之后先点了一杯冻柠茶,然后就开始说正题。
林浩在酒店做了快三个月了。他想开一家快餐店——主打川菜快炒,人均二三十,定位科技园白领。我做了一些市场调研,数据上能撑住。
林枫听着,手里的冻柠茶喝了一口又放下。他没有打断林晨——等他把市场调研的几个核心数据说完。科技园每日午餐外食人群规模、人均二十到三十价位段的竞争格局、几家典型快餐店的出餐速度和客流量——林晨用两分钟把这些数字讲完了。
林浩做菜的技术底子已经有了——但开店不是只靠会炒菜。选址、装修、供应链、运营管理——这些是他的短板,也是我的短板。
你要我做什么?林枫问得很直接。
你管了十几年工地——选址评估、装修设计、工期控制、供应商管理,这些刚好是林浩和我都不擅长的。
林枫没有立刻回答。他把手里那份工程进度表合了起来,放在桌面上一角。然后他从口袋里掏出一包烟,抽出一根没点——他戒烟三年了,但思考的时候还是习惯拿一根在手里转。烟在他指间转了两圈,又塞回了烟盒。
准备投多少钱?
初估五十万上下——包括租金押金、装修和前几个月运营。
店打算开在哪?
科技园附近——鹏城科技园、腾讯滨海大厦周边或者软件产业基地。白领密度最高、午餐需求量最大的区域。
林枫把那根没点的烟又掏出来又塞回去。他低头看着桌面,好像在算什么东西。茶餐厅的背景音乐换了一首老粤语歌,隔壁桌一对情侣在讨论要不要再加一份菠萝包。林枫抬头看了一眼窗外——科技园周六的街道比工作日安静很多,但即使安静,街两边的快餐店大部分还是开着门,零零散散的上班族拖着周末加班的身躯进进出出。
老弟,我跟你说个事。
林枫的声音突然低了下来。他把身体微微往前倾,端起冻柠茶喝了一口,杯底的冰块撞在一起发出细碎的响声。他放下杯子之后没有看林晨——而是看着窗外。
我明年可能被裁。
林晨抬起头看着他。
上个月公司停了两个项目——我们部门已经超编了。现在八个人干以前四个人的活,谁都看得出来下一步是什么。林枫说这句话的时候语气很平,就像在说今天天气转凉了一样。但他的手放在桌上——食指无意识地在桌面上敲了两下,这是他在工地看图纸时候的习惯动作。
林晨沉默了几秒钟。他跟林枫从小一起长大——堂兄是个沉稳寡言的人,做了十几年工程的人就是这样,事情做到位了不用说太多话。但今天他说可能被裁的时候,那四个字的重量比表面上重得多。三十八岁,十几年经验的建筑工程师,上有老下有小——被裁意味着什么不需要展开说。
你有没有考虑过先找别的建筑公司?
找过。行情摆在那里——到处都在缩。我投了十几份简历,回了两个——都是降薪三分之一以上的岗位。他把冻柠茶的吸管转了一圈,降薪我倒不是不能接受,问题是那些岗位做的事情跟我现在做的事情比,连打折扣都算不上。让我去管仓库?我能管,但那不是我能发挥最大价值的位置。上个月有个物流公司找我,说管仓储,月薪六千。我在工地上管几百号人的时候,一个月到手一万四。
林晨看着林枫。堂兄今天的表情比平时多了几分松动——不是焦虑,是一种被搁置太久的困顿。在工地上管了几百号人、几千万预算的副经理,现在投出去的简历像石子扔进海里——连水花都没溅起来。
那正好。林晨说,别等人裁你。趁现在有方向,先给自己铺条路。快餐这件事数据告诉我能做。但光有数据不够——需要有人把店铺从毛坯变成能开业的模样。这个能力只有你有。
林枫没有接话。他看着窗外那条安静的街,一家快餐店门口坐了两个外卖骑手在等取餐。他们的电动车停在路边,后座的保温箱上贴满了各个平台标识的贴纸。
说实话,餐饮我没做过。他终于开口了,盖楼和开店是两回事——我知道怎么把一栋楼从地基盖到封顶,但一家快餐店的后厨排烟怎么走、动线怎么设计、水电负荷够不够——这些我能搞,但跟管工地不一样。
哪里不一样?
工地容错空间大。预算超了可以申请追加,工期拖了可以协调,材料不到位可以换供应商。快餐店不行——开业第一个月如果亏钱,可能就扛不过第三个月。每一个环节的成本都得卡死——装修超一万的预算都可能在最关键的时候变成压垮骆驼的那根稻草。
所以需要你。林晨把冻柠茶推到一边,两只手放在桌上,我做了两个月调研——数据能支撑这件事可行。但落地执行需要的那些经验,是数据替代不了的。选址评估、装修成本控制、供应商谈判——你在工地上十几年攒下来的判断力比任何数据都有用。你刚才说的容错空间小——那正好,小本生意经不起错——正好需要你这种在大项目上管过容错的人来做。
林枫看着他。眼神里有审视的意思——不是不信任,是工程人员在评估一个方案之前必须要确认的前提条件。
你确定?
我确定数据上能做。但我不确定我们能执行到什么水平。这取决于我们三个人各自动手的能力。
又是一阵沉默。隔壁桌那对情侣的菠萝包端上来了,黄油融在面包上的香气飘了过来。茶餐厅的背景音乐又换了一首——还是老粤语歌。
你刚才说的选址装修这块——林枫终于又开口了,如果让我参与,这块我要说了算。我干这行十几年了——你要是听我的,我能在装修上帮你省至少百分之二十。但我也有一个底线——选址的时候如果我的评估是某个铺位排烟走不通或者消防过不了,那就不能因为租金便宜或者位置好就硬上。这个你得答应我。
没问题。专业判断优先。
林枫终于露出了今天第一个松动的表情——嘴角往上提了一点点。他端起冻柠茶喝了一口,冰块在杯底碰出清脆的响声。那你把林浩叫上——我们三个人找个时间正式碰一次。
林枫站起来准备走的时候,又停了一下。还有一件事——我最近在工地上看了一眼科技园中区和南区那边的几个商铺,有一个在软件产业基地旁边的巷子里,面积一百平出头,门口有棵大榕树挡着招牌。如果你需要我先去看看——
你已经在看了?
路过的时候顺便瞄了一眼。林枫把烟盒塞回口袋,做工程的人的习惯——到一个地方先看墙体、看管线、看消防出口。走到哪改不了。
两人走出茶餐厅。冬天的鹏城天黑得早——下午五点太阳已经偏西了,科技园的写字楼群在斜阳里投下长长的影子。停车场里车不多,周末加班的人还没出来。林枫走在前面,步子不快不慢。深蓝色的工装外套在夕阳下显得更暗了一些。
林枫的车先走了。林晨站在停车场里,把今天的对话在脑子里回放了一遍。比预想的顺利——但也在意料之中。林枫不是一个需要被说服的人,他是一个需要被需要的人。十几年的工程经验被公司闲置着,像一把钝了但没断的刀——只要有人给他一块磨刀石,他比任何人都更愿意把刀磨亮。
第292章 三人合伙
元旦假期结束后的第一个周末,林晨、林枫和林浩三个人坐在了林晨家的客厅里,围着茶几开了一场正式的三人会议。
茶几上铺了林晨打印出来的市场调研报告、林枫初步筛选的几个候选店铺位置、和林浩手写的一份快餐菜单初稿。苏婉泡了一壶铁观音端出来,给每人倒了一杯。乐乐抱着她的兔子玩偶从房间跑出来,看了看客厅里的阵仗——三个男人围坐着,茶几上全是纸——她犹豫了一下,拉了拉苏婉的衣角。
妈妈,楼下有只猫。
哪只猫?
黑色的,在花园那个滑梯旁边。
苏婉看了一眼林晨。林晨说:你带她下去看看吧。
苏婉心领神会,穿上外套带乐乐出门了。乐乐在门口回头看了一眼茶几上的纸——爸爸你们在开会吗?林晨说:对,大人的会。哦了一声,跟着苏婉出去了。
门关上了。客厅里只剩三个男人。
林晨先定了基调。林浩上次跟我说他想开一家快餐店——这件事我已经跟枫哥聊过了。今天三个人坐在一起,目的是确认两件事:做不做,怎么做。
林浩是三个人里最了解厨房技术和菜品结构的。他把手写的那份菜单初稿推到茶几中间。我在酒店后厨观察了几个月——快餐出品最核心的就是标准化。每份菜的食材分量、切配规格、调味比例全部提前定量。我在酒店学的就是这套——备料多少克、腌料提前多久拌、炒制时间多少秒,都有数。按这种方式做快餐,不管谁当班,出来的味道都是一样的。
你能同时管控几口灶?林枫问。
目前稳控两口——高峰期如果能练到同时四口灶全开并保持每道菜出品时间不超过三分钟的话,一个小时大概能出一百份左右。
够用。快餐店午餐高峰期一般是一个小时左右——大概出八九十份。林枫说。
菜单你准备怎么规划?林晨翻开了林浩的菜单初稿。上面列了十二道菜——鱼香肉丝、麻婆豆腐、回锅肉、宫保鸡丁、尖椒肉丝、酸豆角炒肉末、炝炒莲白、番茄炒蛋、青椒土豆丝、水煮肉片、蒜蓉西兰花和一份紫菜蛋花汤。
六道川菜快炒,六道下饭家常菜。林浩指着每道菜旁边的标注,定价全部在二十到二十五块之间——米饭和汤免费。食材成本我算过了——平均每份菜的成本大约在六块左右。按卖出去的均价二十三块算,食材成本差不多在百分之二十六。
这个成本率在快餐行业算什么水平?林枫问林晨。
中上。快餐行业平均食材成本大概在百分之三十到三十五之间。百分之二十六说明配方设计很省食材又不牺牲口味。林晨在纸上写下了一组数字,假设一天卖两百份——均价二十三——一天营收四千六。一个月大概十四万的营业额。毛利按百分之七十四算大概十万出头。去掉租金、人工、水电——算五万成本——月净利润五万左右。
林枫听完这组数字,没有说话。他靠在沙发背上,看着天花板,过了大概半分钟。
万一卖不到两百份呢?
这是林枫说的第一句质疑。他坐直了身子,看着林晨写在纸上的数字。新店开业头两个月,周边写字楼的人根本不知道你。没有老客口碑,没有外卖平台数据,第一天的客流可能是五十份,也可能是八十份。你按两百份算利润——那如果第一个月平均每天只卖一百二十份呢?营收直接砍掉四成,利润可能就只剩两三万。再加上装修有意外支出、设备需要调试、员工不熟练浪费食材——前三个月可能是亏的。
林晨没有反驳。他看着纸上的数字,在心里重新算了一遍。林枫说得有道理——他的估算是按稳定期算的,新店爬坡期必须单独算。
枫哥说得对。我刚才的估算是满负荷的情况——新店爬坡期日均一百到一百五十份更现实。那意味着前三个月可能是微亏或者打平。
那资金要留够。林枫看着他,五十万如果只按满负荷算,前三个月一亏就可能扛不住。我建议至少留两个月的运营周转金——也就是多备十万。
六十万我们三个凑不出来。林晨想了一下,装修那块你说了算——你能不能把装修预算再压一压?省下来的钱直接当周转金。
林枫靠在沙发背上想了想。如果我在装修上全程盯着——从施工队到材料全部自己把控,装修三十万出头有可能做到。加上押金十万,剩九万周转金。紧是紧了点,但省着用能扛过前两个月。
那就按五十万走。装修你盯,省下来的就是周转金。林晨在纸上写下50万,画了个圈,出资比例怎么定?
这个问题一出来,客厅里的空气变了——从讨论业务变成了讨论钱。即使是亲兄弟,一说到股权分配就不再是随意聊天了。茶几上的铁观音还在冒着热气,但没有人去碰茶杯。
我出二十万。林晨先表态。
我也出二十万。林枫跟着说。
林浩没有说话。他看着茶几上那张菜单初稿,手指攥着笔——那支笔在他的指间转了两圈又停住了。
林浩?林晨叫他。
我……存了五万多。他的声音低了下来,在酒店这几个月攒的。但离八万还差三万。
客厅里安静了几秒。林浩的低声在茶几上方悬着——他的视线落在菜单初稿上,没有抬头看任何人。
差的三万我先垫着——从你的分红里优先扣还。林晨说,你出资八万。另外技术入股两万折算给你——你是主厨,菜品研发和出品控制都靠你。这样你名下一共十万。
林枫听到这个安排,看了一眼林晨。你出二十万,我出二十万——股权怎么分?
我百分之四十,枫哥百分之四十,林浩百分之二十。
林枫的眉头动了一下。我出二十万占四十——比你出同样多的钱占的份额一样。凭什么?
因为你省的那十万装修成本是真金白银。林晨放下笔,装修按市场价至少四十万——你帮我规划到三十万出头,省了将近十万。而且将来开第二家店的时候你的经验更值钱。浩子的百分之二十也不全靠出资额——技术入股两万折算的就是他作为主厨的角色价值。没他就没菜卖。
林枫想了一下,点了点头。但他的眉头没有完全松开——他在想另一个问题。
分红怎么分?
每月留百分之四十利润作为发展公积金和预备金——用于设备维护、日常周转和将来的扩张。剩下的百分之六十按股权比例分配。
如果亏了呢?林枫追问。
亏的时候不分红——预备金先扛。预备金扛不住的按股权比例追投。林晨看着他,最坏的情况下每个人都还要再往里掏钱。按比例来。
林枫终于点了头。行,这个方案我接受。
但林浩的眉头没有松开。他看着茶几上那份菜单初稿,手指在纸角上折了一个小痕。
小叔——我有个问题。他开口了,声音不大但很清楚,菜单的事——我想说一下。
刚才小叔说六道川菜、六道家常——但我觉得不应该这么分。我是学川菜的,家常菜我也能做但不是最拿手。如果菜单上川菜和家常菜各占一半,顾客进来不知道这家店到底是川菜馆还是家常菜馆——定位模糊了,复购就不稳定。
林晨和林枫对视了一眼。
你的意思是——把番茄炒蛋和蒜蓉西兰花这些换掉?
不是砍。换。番茄炒蛋换成鱼香茄子,蒜蓉西兰花换成干煸四季豆。全川菜菜单,口味更统一,备料也更集中——不用同时备两套调料体系。川菜用郫县豆瓣、花椒、干辣椒、泡椒——家常菜用生抽、蚝油、白糖——两套调料体系意味着后厨备料量翻倍,浪费也翻倍。
但有些不吃辣的白领怎么办?林枫问。
炝炒莲白不辣。番茄蛋花汤不辣。水煮肉片可以做微辣版本。川菜不是全辣——只是以辣为主打。林浩说完,看了看林晨,又看了看林枫。
林枫先表态:我同意全川菜。定位清晰比受众宽重要。什么都有,等于什么都没特色。
林晨想了想。从商业角度来说,全川菜菜单的定位更鲜明,但受众面会窄一点。混搭菜单受众宽但辨识度低。他拿起笔在纸上画了两条线——一条写川菜专精——辨识度高、复购强,另一条写混合菜单——受众宽、无记忆点。
先按你的方案走——全川菜。一家新店不可能让所有人满意——先抓住一批人再说。回头菜单你再优化一版,把菜品的调味配方和出餐时间精确到秒。
林浩点了点头。他低下头在菜单初稿上把两道菜划掉,写上替换的菜名。笔迹比刚才坚定了一些。
那分工呢?林枫把话题拉回来。
我负责资金、财务和整体商业策略。枫哥负责选址评估、装修和前期供应链对接。林浩负责厨房技术和菜品研发。林晨把笔记本翻开新一页,具体股权比例和分工细节——等店铺位置确定之后再落成正式的合伙协议。今天先把框架定下来。
三个人都点了头。
林枫站起来走到窗边,从口袋里掏出手机翻了一会儿。我最近在工地上看了一圈铺位——科技园中区和南区有几个有空置的。有一个在软件产业基地旁边的巷子里,面积一百平出头,月租两万八——但巷子太窄,排烟管可能不好走。还有一个在科技园中区,靠近一栋商务楼的底商,九十五平,月租两万五,我看了排烟井的位置还可以。等完了我整理一份清单发给你们。
林枫从窗边走回来,拿起茶几上他那杯已经凉了的铁观音一饮而尽。林浩还在低头修改那份菜单,笔在纸上沙沙地响。他把鱼香茄子写在番茄炒蛋的位置上,旁边标注了食材比例和预估成本。写完之后他抬起头,看着林晨和林枫——
小叔,爸——谢谢你们。他说得很轻。
林晨看了他一眼。谢什么?合伙,不是施舍。你出了技术,出了时间,后面至少一年全搭进去了。这些东西不止八万块。
林枫也看了他一眼,没说话,但嘴角提了一下。
门锁响了一下——苏婉带着乐乐回来了。乐乐一进门就喊:爸爸!那只黑猫好胖!它看到我就跑了!
它怕你。
它应该怕我吗?
你嗓门那么大,谁不怕你。
乐乐想了想,觉得有道理,就没再追问。她跑到茶几旁边看了一眼——菜单还在、数字还在、画的线条还在。她歪着头看了几秒,然后被兔子玩偶分了心,抱着兔子跑去房间了。
苏婉把外套挂在门口,走进客厅。她扫了一眼茶几——菜单上有划掉的菜名和新增的字迹,纸上写着50万和一个圈。她没有问,但看了一眼林晨。林晨微微点了一下头。苏婉没多问,去厨房把凉了的铁观音重新烧了一壶水。
第293章 定位讨论
一月中旬的一个晚上,三人第二次正式碰头。
地点还是林晨家的客厅。茶几上摆了苏婉提前洗好的草莓和几块曲奇——她大概觉得三个大男人讨论正事也得有点吃的。这次林枫带了一叠从工地上拿回来的平面图纸和一份装修材料报价单,用A4纸打印的,边角折了好几道——大概是在工地办公室翻来翻去弄的。林浩带了自己这几天在酒店休息时间改良过的第二版菜单——菜品数量从十二道精简到了十道,每道菜的调味配方和出餐时间精确到了秒。他把菜单写在一张白色卡纸上,每道菜旁边还贴了张便利贴标注食材供应商的备选。
苏婉照例给每人倒了杯茶,然后带着乐乐出了门。临走前跟林晨说了句冰箱里有水果,语气跟平时提醒他拿快递差不多——她已经习惯了客厅里这种一周一次的兄弟会议。
林晨等门关上才开口:今天把定位定下来。定位不定,后面所有事都是空的——找什么样的铺位、怎么装修、菜品怎么定价、卖给谁,全跟着这个走。
林枫点头。我这边也等着定位落地才好出装修方案——风格不同,材料和工期差得远。你做快餐是简洁路线,做正餐就得加灯光加装饰,差出好几万块和半个月工期。
林晨翻开笔记本新一页,所以今天讨论的每一个结论都直接影响到后面花钱的地方——定位差一点,预算就差一截。
那我们先说目标客群。林晨看了眼笔记本上之前列的几条,科技园白领,中午吃工作餐,预算有限但不想将就——这个方向三个人有没有不同意见?
没有。林枫回答最干脆,我上个月抽了三个中午跑了科技园南区和中区十几个主要办公楼——腾讯、华为终端、中兴、鹏城软件产业基地——附近五百米范围内的午间流动人口大概十万到十五万。这些人中午只有一个小时,对价格敏感但愿意为好吃干净的饭多掏几块钱。
我也没意见。林浩说,酒店旁边的快餐店中午全是穿工牌的人——这个客群没错。
客群定了,接下来定产品结构——这是最重要的部分。林晨的目光落在林浩那张卡纸菜单上。
林晨转向林浩。菜品结构呢?你上次十二道,这次砍了两道——说说理由。
林浩把第二版菜单推到茶几中间。我去掉了青椒土豆丝和紫菜蛋花汤。土豆丝跟炝炒莲白功能重叠——都是素菜,成本低但客单价也低,留一个就够了。紫菜蛋花汤直接免费送,不占菜单位置。他顿了一下,现在十道菜——五道川菜快炒,五道下饭家常菜。
只有十道?林枫皱了下眉,十道菜会不会太少了?顾客进来一看菜单就两排——觉得选择不够,转头就走。我之前路过几家快餐店,菜单上少说也有十五到二十道。
林浩摇头。菜多不代表好。酒店后厨有个说法——菜单越厚,利润越薄。每多一道菜就要多备一种食材,备料一复杂,食材损耗就上去。而且出餐速度会变慢——你灶台上摆五口锅,但备料台就那么大,菜一多,配菜跟炒菜之间要等,高峰期根本撑不住。
十道够吗?林枫还是不太放心,你说五道川菜五道家常——那水煮肉片这种偏辣的菜,不吃辣的人不会点。等于对一部分顾客来说可选的就只剩五道家常菜,五道选两道吃一顿,来三次就把菜单吃遍了。
可以加两道川菜。林浩的语气变了,带着一种不太想退让但又不好直接顶回去的犹豫,我本来砍掉的几道里有两道出餐速度够快——干煸四季豆和泡椒鸡杂。四季豆出餐两分半,鸡杂三分钟出头。加上这两道的话,川菜七道家常五道,一共十二道。
林晨一直没说话,这时才开口:加两道川菜,你备料要加多少?
四季豆和鸡杂都是独立食材——跟现有的十道菜没有重叠。多加两样主料,调料可以复用。林浩说得很肯定。
那成本呢?
四季豆和鸡杂的食材成本比现有菜品略高——但定价可以拉到二十五,利润率跟其他菜差不多。
林晨在笔记本上写了几行字,然后抬头看林浩。我理解你想多保留川菜——川菜是你最拿手的,也是你最有信心的部分。但问题是我们要做的是快餐,不是川菜馆。来这里吃饭的白领里至少一半人中午吃不了太辣——他们要的是下饭、快、不贵。十二道菜里有七道川菜,顾客进门一看菜单第一反应是这是家川菜馆——不辣的人直接就不进来了。
林浩抿了下嘴。他明白林晨说的道理,但脸上的表情还是有些不服。
林枫看出了林浩的心思,换了个角度说:浩子,你想想——如果菜单上川菜太多,来吃饭的广东本地人点来点去就那几道不辣的,翻来覆去吃一样的东西,第二次就不来了。反而把菜做精——十道菜道道口味有区分度,回头率更高。
林浩沉默了好一会儿,最后说了句:行。十道就十道。但水煮肉片我要保留——这道菜虽然辣,但它是招牌菜。一个川菜师傅连水煮肉片都拿不出来,说不过去。他的声音比刚才低了半度,像是做了让步但给自己留了底线。
林晨看了眼菜单上水煮肉片旁边标注的出餐时间——三分半。可以。但出餐时间必须控制在三分钟以内。高峰期等不起三分半。
我能压到三分钟。林浩说,提前把底料和肉片分装好,到点下锅汆水浇油,流程压到三分钟没问题。
定价呢?林枫问。
二十到二十五块。林晨接过话,十道菜全在这个区间里。米饭和汤免费。人均消费控制在二十五以内——这个价在科技园快餐市场有竞争力。
二十五封顶会不会太低?林浩问,水煮肉片食材成本就七八块了——卖二十五毛利是不错,但有些用料重的菜定到二十五利润太薄。
就定二十到二十五这个区间。林晨的语气没有商量余地,超过二十五就变味了,白领觉得是正餐。心理预期就是二十多块吃顿午饭,你卖二十八他明天就带便当了。利润薄的地方靠走量补——一天两百份跟一百份的差距不是单价能弥补的。
林浩没再争。他在卡纸上水煮肉片旁边把定价从25-28改成了,划掉了原来的数字。笔尖划过纸面的声音在客厅里很清晰——他划了两道,划得很重。
好。定价定了。林晨在笔记本上写下了20-25四个数字,后面画了个括号写上不可逾越接下来装修风格。枫哥你说。
林浩点头。我算过成本——平均每份菜的食材成本六块左右。按均价二十二块算,食材成本大概百分之二十七。
装修风格怎么定?林晨转向林枫。
林枫把平面图和报价单摊在茶几上。快餐不需要花里胡哨——我建议地面用浅灰色防滑瓷砖,墙壁白色防水漆,桌椅用原木色。色调温暖但干净,不喧宾夺主。厨房做成半开放式——顾客能看到炒菜档口的操作流程。
半开放式?林浩的眼睛亮了一下,筷子夹着曲奇停在半空,那炒菜的时候油烟会不会飘出来?
不会。林枫用笔在图纸上画了个框,油烟净化器装在灶台上方,风量够大的话油烟根本出不了操作台的范围。半开放的意思是开一个窗口——顾客能看到你在切菜炒菜,但油烟有挡板和净化系统隔离。
这个设计我同意。林晨说,让顾客看到厨房——看到菜是怎么炒出来的——比挂十张卫生评级牌子都管用。厨房看得见,比什么评级牌子都管用。
还有一点。林枫指着图纸上靠门口的位置,这里我设计了一个透明的菜品展示区——用不锈钢保温盘摆当天的十道菜。顾客进来先看到菜——闻到味道——然后点餐。这个动线比看菜单点餐更直观。
好想法。林晨在笔记本上画了个箭头标注了这个位置。
林枫在报价单上圈了几个数字。装修预算我初步估了——厨房区大概十八万,用餐区十万出头,招牌和杂项三万左右。总共三十万出头。但这是粗算——定下铺位量了房才能出精确数字。
三十万装修,加上押金和前期运营——五十万刚好卡在预算线上。林晨在笔记本上列了几行数字,不能再超了。所以每一步都得精确。十道菜,半开放厨房,人均不超过二十五,专做科技园白领的午饭——这几个方向不能动摇,后面的事才能往下推。
林浩盯着茶几上那张菜单看了一会儿。十道菜。他写了十二道,被砍掉两道,又自己加了回去,又被说服放下来。他在菜单的空白处用圆珠笔画了条竖线,把五道川菜和五道家常分开——左边是鱼香肉丝、麻婆豆腐、回锅肉、宫保鸡丁、水煮肉片,右边是番茄炒蛋、尖椒肉丝、酸豆角肉末、蒜蓉西兰花、炝炒莲白。右边那五道菜他其实不太满意——都是家常得不能再家常的菜,体现不出厨师的手艺。但林晨说得没错——来吃快餐的白领不需要你展示手艺,他们只需要好吃、快、便宜。
十道菜。他把菜单推回茶几中间,我回去把每道菜的标准化配方写出来——分量、切配规格、调味比例全部定量,保证以后不管谁炒都是一个味。
林枫收起平面图。定位定了就好办——我下周开始跑铺位。科技园附近几个商务区的底商我大概有数,先筛出几个候选,然后带你们去实地看。
林晨站起来走到阳台上倒了杯水。客厅里茶几上摊着三份文件——菜单、平面图、报价单——上面都有三个人各自画的标注和修改痕迹。草莓已经吃完了,曲奇还剩两块。林浩伸手拿了一块咬着,另一只手还在手机上修改菜单的电子版。
林晨把水杯放下,回头说了句:下周看铺位。枫哥你提前把候选铺位筛出来——硬件条件不达标的不要带我们去看,浪费时间。
第294章 选址考察
一月下旬的两个周末,林枫开着他那辆皮卡带着林晨和林浩跑了四趟。
第一处在鹏城科技园南区——软件产业基地旁边一条巷子里的底商。林枫提前打了电话约了中介,三个人周六上午十点到的地方。路上堵了二十分钟,林枫的皮卡在科技园南区的窄路上拐了两个弯才找到那条巷子。铺位面积一百平出头,月租两万八。中介是个穿西装的年轻人,嘴很利索,一进门就指着巷子外头:你们看,旁边三栋写字楼全是It公司,中午人流量没问题的。
林晨没搭理中介,先进去把铺位从里到外走了一遍。地面的瓷砖有好几块翘起来了,踩上去咯吱响。墙角有一片水渍——不知道是管道渗水还是楼上漏水。林浩蹲在铺位最里面的角落——那是未来厨房的位置——拿手机拍了几张照片。角落有个老旧的排水口,旁边墙上还有一截生锈的铁管。他用手指摸了摸铁管的表面,一层铁锈粘在指尖上。
林枫绕到铺位后巷。他蹲下来看了看排烟井的位置,皱起了眉。然后站起来把后巷的墙壁从上到下扫了一遍,又走到巷子口拐角处看了一眼楼上住户的窗户。
回到铺面里,林枫把林晨和林浩叫到一起。排烟井是老的砖砌管,口径不够。中餐馆的油烟量大,这个管子排不出去——要重新走管的话得打通好几堵墙,后巷上面六楼就是住户,外墙不能随便打洞。光改排烟这一项,保守估计多花五六万,还不一定能拿到物业批文。
那不能做?林浩问。
可以做,但不划算。林枫摇了摇头。
林晨在铺位门口站了一会儿,看着巷子里来往的人流。中介还在旁边说着这个位置真的难得之类的话。林晨打断他:这个我们再考虑。中介递了张名片就走了。
第二处是高新区南区——靠近某大厂办公楼的一个十字路口转角铺位。面积一百二十平,月租三万二。位置确实好——十字路口四个方向都有人流量,铺面的玻璃门对着人行道,一眼就能看见里面的情形。林枫在电话里就对林晨说过这个铺位:条件太好了——排烟、电路、面积全部达标。
三个人到了之后林枫先检查基础设施——水管、电路、排烟管。他在天花板的检修口旁边架了把梯子,半个身子探进去拿手电筒照排烟管的走向。林浩这回没闲着,他走到铺面最里面,开始丈量可能做厨房的区域的面积。
这边如果做厨房,能放下四口灶吗?林浩冲着天花板的方向喊。
林枫从检修口里探出头来,手里还捏着一把灰。空间够——一百二十平比刚才那家宽裕多了。排烟管口径也够大,可以直接接商用净化器。
林晨站在铺面门口观察人流。十字路口四个方向,两个方向通写字楼群,一个方向是公交站,另一个方向是商业街。午饭时间应该人流很集中。他沿着铺面往外走了二十步,停下来——左手边不到二十米有一家湘菜快餐,右手边大概十五米有一家隆江猪脚饭,再往前走几步还有一家沙县小吃。
他折回来的时候林枫正站在铺面中间跟林浩讨论厨房怎么布局。林晨把刚才看到的情况说了:左右二十米内三家快餐——湘菜、猪脚饭、沙县。密度太高了。
林枫不以为然。位置好才有竞争——你看那些没竞争的地方,要么人流量不行,要么铺位条件差。这三家卖的都是面和粉——跟我们的川菜炒菜定位不一样,不算正面竞争。
不算正面竞争?林晨的语气有些硬,中午这些人就一小时吃饭时间——他在你这里排了十分钟队还没排到,旁边猪脚饭不用排队,你觉得他会等你?快餐的竞争跟菜品品类没关系——拼的是距离和速度。三家店在抢同一批午餐人流,再加一家进来就是存量市场。
林枫还想说什么,但顿了一下。那你的意思是好位置反而不值得进?
我的意思是竞争对手密度太高的时候,好位置的优势会被摊薄。你以为你在抢人流,实际上你在分流——从三家变成四家分同一批午饭的人。
林枫想了想,没再反驳。但他的表情还是有些不甘——这个铺位的硬件条件确实是他今天看过的最好的。
我进去看看那几家。林浩突然说了一句。
他出了铺面往左走了十几米,站在那家湘菜快餐门口往里看了一会儿。然后又走到猪脚饭门口看了看。回来之后跟两人说:湘菜那家面积大概六七十平,坐了二十来个人,中午估计翻台两到三轮。猪脚饭更小,四五十平,主要是打包带走。两家都开了至少两年以上——你看门口那块招牌的褪色程度就知道了。
所以呢?林晨问。
所以如果你说的对——中午一小时的高峰期客流已经被这两家吃掉了大半——我们插进去能抢到的就是剩下的那部分。剩下那部分够不够撑起一天的流水,这个我没数。
林晨看了眼林枫。林枫没说话,但点了下头——算是默认了。
这个位置再想想。林晨做了结论。
第三个周末,他们去了科技园中区——靠近t厂总部的一栋商务楼下的底商。铺位面积九十五平,月租两万五。中介没有跟着——这个铺位是林枫自己在网上找的,直接联系了房东的联系电话约了看房。
三个人到的时候是周六下午,商务楼很安静。一楼大堂的保安在刷手机,看了他们一眼就低头了。但林晨特意在工作日中午来过一次——他站在楼下的便利店旁边数了十五分钟的人流,大概一百二十人进出商务楼大堂。楼下大堂里有电梯指示牌,上面写着七八家公司的名字——都是科技和互联网公司。
林枫对这处铺位看得最仔细。他趴在地面上用卷尺量排水口的坡度,打开天花板检修口看排烟管走向和口径,拿电笔测试每个插座的接地。量完一圈之后他在笔记本上逐项记了数据——排烟管口径、水管管径、电路负荷容量、墙面状况、地面平整度。
林浩也没闲着。他走到铺面最里面那片区域——大概二十五平——开始在地上比划。冰箱靠这面墙,备料台放中间,灶台靠那边——他边说边用脚步量距离,两口灶之间的间距至少要八十公分,不然高峰期转身的时候胳膊会撞到。
你在酒店后厨站多大地方?林枫问。
两个人的灶台之间大概一米二——但那是酒店,空间宽裕。快餐店我算过,两口灶之间八十公分刚好够转身和递菜。四口灶的话——林浩在地上走了几步,这边放不下四口。两口炒锅加一口煲汤灶,最多三口。
三口够用?林晨问。
高峰期一口灶大概三分钟出一道菜,三口灶同时开——一小时大概能出六十到七十份。加上提前备好的几道快出菜品——一小时出八九十份没太大问题。林浩掰着手指算了一下,但前提是备料台必须足够大——我切配和出餐要同时进行,台面不够的话会卡住。
备料台多长你能用?林枫掏出卷尺。
至少一米八——两米最好。配菜、切料、装盘三个动作在一个台面上完成。
林枫在铺面最里面的墙边量了一下,用手指在墙上做了个记号。两米的台面靠这面墙放——可以。冰箱紧挨着台面,转身就能拿到冻品。灶台在对面——中间通道留一米二,两个人错身通过没问题。
林枫量完最后一面墙,把卷尺收了起来。他在笔记本上翻了两页给林晨看:水管没问题,电路负荷够——排烟管口径够大,可以直接接商用油烟净化器。排污管道也有,不用重新走管。这个铺位的条件是今天四家里最好的——而且附近三百米范围内没有川菜炒菜类的快餐。
我中午来数过人流——楼里进出的都是附近写字楼的上班族。林晨说,三百米内只有两家——一家北方饺子馆一家潮汕粿条店——做炒菜的快餐是空白。
第四处呢?还看不看?林浩问。
第四处在南山区另一个写字楼群旁边。三个人开着皮卡过去看了——排烟和排污都需要重新改建,林枫评估之后认为改造成本至少多花七八万。他跟林晨对视了一眼,两人都没说话,上车就走。
皮卡停回科技园中区的路边,三个人坐在车里没急着下来。车窗半开着,下午四点的阳光斜着照进来。
第三处铺位的条件确实最好。林枫翻着他密密麻麻的现场勘查笔记,排烟排污电路三项基础设施全部达标。月租两万五,在科技园中区这个位置不算高。
附近三百米没有川菜炒菜快餐——这个比什么都重要。林晨靠在座椅上,存量市场里抢生意太难了。空白市场进去做第一家,只要东西不差,顾客自然来。
林浩你觉得呢?
林浩正用手机查地图。这个位置离最近那栋写字楼大概两百米——中午走过来大概三分钟。可以。但厨房空间——枫哥你最后确认一下能不能放下三口灶加一套完整的备料台。我需要至少两米的备料台面——不然切配和出餐会互相卡。
二十五平的厨房,三口灶加两米备料台加双门冰箱——林枫在方向盘上敲了几下,紧凑,但能排得下。回去我出精确的施工图——每一公分都得算清楚。
林晨看着前挡风玻璃外面那栋商务楼。他在这附近上了两年多的班——t厂总部走路过来也就七八分钟。以前每天中午在食堂吃饭,从没注意过楼下还有一间空铺位。
就选这里。他说,我回去跟房东约时间谈价格。枫哥你尽快出测量和设计方案。林浩开始准备菜品标准化配方——等铺位定下来,装修期间你有六周左右的时间把配方和Sop全部定型。
皮卡发动了。林枫挂挡的时候说了句:回去我把装修预算也一块出了——精确到每一项材料的单价和数量。
车子汇入科技园中区的车流里。林浩坐在后排,低头在手机备忘录上打字——他已经开始写第一道菜的标准配方了。
第295章 签约租赁
二月初,林晨跟第三处铺位的房东约了面谈。
房东姓蔡,五十多岁,是科技园本地的村民——这一带旧改之后手里分了几套写字楼配套商铺,靠收租过日子。他开一辆黑色的雷克萨斯,穿一件灰色的夹克,说话带着浓重的本地口音。见面地点在铺位现场——蔡房东比林晨早到了十分钟,站在铺面门口抽着烟。
林晨到的时候带了林枫一起——签约之前他想让林枫再确认一遍铺位的硬件条件。蔡房东看了眼林枫手里提的工具箱,没说什么,推开门让他们进去。
林枫进了铺面就开始干活——他带了激光测距仪和水平仪,从铺面的第一面墙开始量。激光测距仪打出的红线在墙壁上一闪一闪,他嘴里报数字,林晨在旁边拿笔记本记。
蔡房东站在门口看了一会儿,扔了烟头走过来。你们要开什么店?
快餐。川菜炒菜。林晨回答。
蔡房东点了下头。开快餐可以。但我有几个条件——油烟净化要达标,不能影响楼上住户。之前有一家做烧烤的把楼上投诉到物管去了,后来我让他们走了。
没问题。我们配商用油烟净化器,排出去的空气符合深圳环保标准。林晨把林枫准备的一份《厨房排烟系统方案》递给了蔡房东。方案里详细写明了油烟净化器的型号、风量等级、排烟管道走向、噪音控制标准和日常清洗维护的周期。
蔡房东接过去翻了翻,看得很仔细——不像那种走马观花的房东。他翻到排烟管道走向那页停了一下,指着一处标注问:排烟出口在这里——屋顶上面那个排烟口是公用的还是你们独用的?
屋顶排烟口是这间铺位独用的——我之前确认过。林枫从工具箱旁边拿出一叠他上次勘查时拍的照片,排烟管从天花板上方走,出外墙接到屋顶。这是老建筑的设计,每间铺位有独立的排烟竖井。
蔡房东看了照片,又看了眼林枫的激光测距仪,说了句你们倒是仔细。语气里不像夸奖,更像是一种老房东对新租客的试探——看你们到底是认真做事的还是随便看看的。
林晨心里明白,接了句:蔡叔,我们三个人合伙开的——我出主要资金,我堂哥负责装修工程,我侄儿是主厨。不是玩票的。
蔡房东把排烟方案还给了林晨。租金你们确认过了?两万五一个月。
确认了。但我想谈两个细节。林晨说,合同租期三年——前两年租金不变,第三年涨百分之五,可以吗?
蔡房东想了想。第三年涨百分之五可以。但押金我要三个月的——这个不能少。
押三付一没问题。
还有——装修的时候不能动承重墙。你想开窗口做半开放厨房,外墙那边可以,但不能动结构。
林枫在旁边接了句:蔡叔放心,我做建筑十几年了——哪些能动哪些不能动我比谁都清楚。
蔡房东看了林枫一眼,似乎这句话比刚才那份排烟方案更有说服力。他点了下头,从夹克内袋里掏出了一份打印好的租赁合同模板——显然是早就准备好的。
林晨接过合同看了一遍。条款比较标准——租金、押金、违约责任、续租优先权、装修约定。他在两个地方跟蔡房东又磨了几轮。
第一处是装修免租期。合同上写的是装修免租期十五天——林晨要求延长到三十天。快餐店装修工期至少四周——加上消防验收和食药监检查,前面五到六周基本上没法正常营业。十五天免租期太短了。
蔡房东摇头。三十天太长了——这期间我的铺子等于白给你用。二十天。
二十五天。
行,二十五天。
第二处是违约条款。合同上写着如果租户提前退租,押金不退——林晨要求加一条如因不可抗力或政策原因导致无法继续经营,双方协商处理押金退还。蔡房东看了一眼,说:加可以——但政策原因要写清楚,不能随便拿政策当借口退租。
林晨改成了因政府拆迁、城市更新等行政行为导致无法继续经营的,蔡房东这才点头。
合同签完,蔡房东把一式两份的合同收好,跟林晨握了下手。年轻人做事蛮认真。他说这话的时候终于笑了一下——之前全程都是一副不冷不热的表情。
铺位面积九十五平,月租两万五,押三付一。首期支付十万元——三个月押金加一个月租金。合同租期三年,前两年租金不变,第三年涨百分之五。装修免租期二十五天。
签完合同的第二天上午,林枫带着他工地上用的全套工具来了铺位。这次他量得更细——每一面墙的长度和垂直度、每一根柱子的截面尺寸、每一个插座和开关的位置、地面的平整度、天花板的层高。激光测距仪打出的数字他一边报一边记在本子上,偶尔还拿水平仪校一下墙角的垂直偏差。
这面墙偏了两公分。林枫蹲在铺面东侧的墙角,水平仪的气泡偏了一格。他用笔在墙上画了个记号,在笔记本上写了行字。然后走到排水口旁边——把排水口的直径和地面坡度都量了一遍,又打开手机手电筒照了排水管拐弯处的状况。
排水管有个拐弯——这里可能会堵。他在笔记本上画了个简图,标注了拐弯的位置和角度,装修的时候要加个检修口,方便以后清理。
量了将近两个小时。林枫坐在铺位门口的台阶上把数据整理了一遍,然后给林晨打了个电话:尺寸全量完了。我回去出施工图和装修预算——大概三天能给你。
三天后,林枫带着一套cAd施工图和一份详细到每一项材料的装修预算来了林晨家。施工图上标注了厨房区域二十五平米、用餐区五十平米左右、收银台和过道及卫生间约二十平米。灶台排成一条直线——左侧两口炒锅加右侧一口煲汤灶。备料台在灶台对面——冰箱和冷柜靠墙排列。
厨房排烟管道走天花板上方,出外墙接到屋顶排烟口。林枫指着施工图上的标注说明,灶台上方装商用油烟净化器,风量我选了一万八的——足够覆盖三口灶的油烟。冰箱和冷柜靠墙排——备料台在中间,炒菜转身就能拿到配好的料,出锅两步到出餐台。全程动线最短,没有折返。
林晨看着施工图上密密麻麻的标注,问了句关键的问题:装修预算多少?
林枫翻开预算表。每一项都列了材料名称、规格、单价、数量和小计——从防滑瓷砖到不锈钢操作台,从油烟净化器到空调主机,一共二十多行。
厨房区——防滑瓷砖、不锈钢操作台、灶台、排烟系统、冰箱冷柜——加起来十八万出头。用餐区——地板、墙面、天花板、桌椅、灯饰、空调——大约十万。收银台、招牌和其他杂项——大概三万。总装修费三十一万左右。
林晨在笔记本上把数字加了一遍:装修三十一万,加上押金十万——启动成本已经四十一万了。五十万的总投资,只剩九万作为前期运营的周转金。
他停了一下笔。枫哥,装修预算能不能再压一压?三十一万——我之前预期的是三十万以内。多出来这一万加上去,周转金就只剩九万了。
林枫摇头。很难再压了。厨房设备的价格我报的是市场上最优惠的渠道——不锈钢操作台和灶台我找的是我认识的一家供应商,已经比市场价低了百分之十五。油烟净化器的品牌我选了中档的——再降档次的话净化效果不达标,验收过不了。瓷砖和地板也是——再便宜的材料用不住,快餐店地面天天有油水,防滑不达标出了事谁负责?
那用餐区呢?十万能不能少一点?
用餐区我已经按最低标准配了。桌椅用的是快餐店专用的钢木结合款——便宜但不难看。空调我选的是二级能效的——一级能效贵两千但省不了多少电。天花板用的是最普通的铝扣板——再降就是工程板了,那个效果你不会想要的。
林晨看着预算表上那组数字。三十一万装修加十万押金等于四十一万——比他预想的多了一万。九万块的周转金意味着前两个月必须实现正现金流——如果第三个月还不能盈利,周转金就断了。
九万周转金有点紧。他把笔记本推到林枫面前让他看自己算的那行数字。
前期两个月省着点花——食材采购量控制好,水电费注意不浪费——九万够撑到第三个月。林枫想了想又补了一句,但如果有什么意外开支——比如设备坏了要修、消防验收整改——那九万就不够了。
所以装修必须一次到位,验收一次过。林晨看了眼林枫,你能保证吗?
工程上没有百分百的保证——但我做十几年了,消防验收出问题的情况不多见,只要施工期间不偷工减料。林枫说完这句话自己也意识到这回答不够让人放心,又加了一句,我全程盯着施工队——材料进场我验,工序我盯,每一道环节我签字确认。
林晨在笔记本上把周转金9万圈了一下。这个数字比他预想的少了一万——虽然一万块在五十万的总盘子里不算什么,但创业初期现金流是命脉,每一天都在花钱,多一万少一万差别很大。
就这样。他把笔记本合上,装修预算三十一万——但实际支出我设个上限,三十二万封顶,超了要三个人商量。押金十万。周转金九万。总共五十万,一分钱没有多余。
林枫点头。行。我控制得住。
林浩一直在旁边听。他没怎么说话——装修和预算不是他擅长的领域。但他听出来了——五十万花完之后,账上只剩九万。如果前两个月亏钱,第三个月这个店就可能撑不下去。
他低头看了一眼自己正在写的第三道菜的标准配方——蒜蓉西兰花。这道菜的食材成本四块八,售价二十块,毛利率百分之七十六。他在配方下面加了一行小字:出餐时间两分十秒。
这道菜必须快。每一道菜都必须快。九万块周转金容不得任何一道菜出问题。
第296章 股权分配
二月中旬的一个晚上,三人在林晨家的客厅里讨论股权分配。
茶几上摊着几张A4纸——上面是林晨提前写好的合伙协议草稿。字迹不算工整,有些地方涂改过,但条款清晰:出资额、股权比例、岗位职责、分红机制,四项内容各占一页。他还专门买了一盒红印泥——签完字要按手印的,他在网上查过,个人合伙协议按手印比签名更有法律效力。
苏婉这次没出门——她在厨房里做了一壶咖啡端出来,顺便看了一眼茶几上的纸,说了句字写好看点,就回卧室了。
林晨把四页纸分别递给林枫和林浩。你们先看——有问题随时说。
林枫接过去看得很仔细,每一条都读出声来又咽回去,嘴唇微微动。林浩拿着纸的手有点发紧——他这辈子没签过正式的商业文件,连租房合同都是他妈帮他签的。
总投资五十万。我出资二十万,负责财务、数字化运营和整体商业策略。枫哥出资二十万,负责店铺设计装修和后续维护。林浩出资八万——其中五万是你自己在酒店攒的工资,另外三万我先垫着,从你将来的分红里优先扣还。技术入股两万折算给林浩。
林晨说完这段,等了几秒。林枫先开口了。
百分之四十——他指着协议上自己名字旁边那个数字,跟我出的钱一样。你负责的事比我多,我占四十——合适吗?
出资一样,股权一样——这是应该的。林晨说,你省下来的装修成本至少有十万——按市场价做这套装修方案要四十万以上,你帮我做到了三十一万。这十万本来就是你的贡献,四十是你的底价。
林枫摇头。他放下协议靠在沙发背上,双手交叉放在胸前——这是他在工地上不同意甲方方案时的习惯姿势。我出的钱跟你一样多——但运营那头你扛的比我重。我做的那些事——量房、出施工图、找供应商、盯施工队——是我分内的活。装修省的那十万也是我分内干出来的。我出二十万占四十,你出二十万也占四十——凭什么?
客厅里安静了几秒。林晨没急着反驳——他知道林枫说的有道理。出资一样股权一样,这是最不容易扯皮的分配方式。
那你觉得多少合适?林晨问。
百分之三十五。我出二十万占三十五——多出来的百分之五给浩子。
百分之二十太多了。林浩突然开口了。三个人都看向他。
林浩把协议纸放回茶几上。百分之二十——他指了指自己的名字旁边那个数字,我也觉得多了。我只出了五万。爸二十万是四十——凭什么?
他说完这句话自己也有点意外——他其实没准备好说这些,是在心里转了好几天的话突然冒了出来。
林晨看了眼林浩。这小子能问出凭什么三个字——在酒店后厨那几个月不只是学了炒菜。
你的价值不在出资额上。林晨说,你是主厨,菜是你炒的,没你就没菜卖。
可炒菜的人到处都是——林浩的语气不像在谦虚,更像是在陈述一个他反复想过的事实,鹏城随便招一个川菜师傅月薪也就六七千。你给我百分之二十——我哪值这么多?
林晨在旁边听了这话,表情有些意外。他转头看着林浩——这个二十三岁的侄儿在他印象里一直是厨房里闷头干活的年轻人,不太说话,让干什么干什么。没想到在股权这种事上他敢开口问凭什么。
浩子说得有道理。林枫接了话,我出的钱跟你一样多,运营的事你扛得比我重——我占四十确实多了。重新算吧。
林晨把笔记本翻到新的一页。他在纸中间画了一条竖线——左边写出资额,右边写贡献值。
好。我们换个方式来算。他写下了三个人的名字和对应数字。
出资额:我二十万,枫哥二十万,浩子八万——加上技术入股两万折算给浩子,凑满五十万。这个是硬数字,没有争议。贡献值:我负责商业策略和数字化运营;枫哥负责装修工程,省了将近十万成本;浩子是主厨,菜品研发和出品控制都靠他——技术入股两万就是折算他的手艺。
那你打算怎么把出资和贡献折成一个比例?林枫问。
林晨在纸上列了几组数字,划掉了两组,最后留了一组:我占百分之四十,枫哥百分之四十。浩子百分之二十。我和枫哥出资一样,股权一样。浩子出资少,但他是主厨——百分之二十里头有两万技术入股的折算。
凭什么我八万占二十?林浩问。
林晨看着他。因为一股值两万五。你出了八万加两万技术入股,十万除以两万五等于四股,四股就是百分之二十。枫哥二十万除以两万五等于八股,八股就是四十。我也一样。出资额是一回事,值多少钱是另一回事。枫哥省了十万成本是真实的,你作为主厨的角色也不可替代。枫哥你在工地上管过几百万的项目——你的工程管理能力放在市场上至少值月薪一万五到两万。浩子的厨艺按酒店厨师的市场价大概月薪六千到八千——但快餐店的主厨和酒店厨师不一样,他要同时管备料、出餐速度和成本控制——这个角色的市场价应该更高。
林浩听到林晨说不可替代三个字的时候,手指在膝盖上收紧了一下。他在酒店后厨干了几个月——从来没有哪个师傅跟他说过你不可替代这种话。在酒店的后厨体系里,每个人都只是一个工序上的螺丝钉,走了换一个就是。
林枫听完没说话。他在想一个问题——如果四十是按出资和贡献仔细算过的,不是拍脑袋定的,那他刚才的顾虑其实不成立。
林浩低着头看着协议上自己的名字。手放在纸边上,指节微微发白。二十三年来第一次——有人把他当作一个合伙人而不是一个打工的。在酒店后厨他只是一个帮工,师傅让切菜就切菜,让颠锅就颠锅。没有人问过他的意见,也没有人算过他值多少钱。
我接受百分之二十。林浩说这句话的时候声音很轻,但小叔垫的那三万——我一定还。分红优先扣,扣完为止。
这是写在协议里的——你不用重复。林晨语气平淡,但看了林浩一眼。
还有一个问题。林枫指着协议上分红机制那一条,每月留百分之四十利润做发展公积金和预备金——这个比例是不是太高了?我们三个人每个月也要靠分红过日子——百分之四十留下来的话,到手的只有百分之六十。如果月利润只有三四万——每人分到手可能也就几千块。
前期必须留足预备金。林晨说,你知道我们周转金只有九万——如果设备坏了要修、消防验收要整改、某个月生意不好——没有预备金就撑不住。等三个月以后现金流转正了,预留比例可以降到百分之三十。
降到百分之三十可以。林枫点头,但降到多少、什么时候降——写清楚,别到时候又扯皮。
林晨在协议上改了几个字——前三个月预留百分之四十,之后预留比例由三人协商决定,不低于百分之二十。
三个人把修改后的协议从头到尾读了一遍。林晨先在协议末尾签了名,然后把笔递给林枫。林枫签完又递给林浩。
林浩接过笔的时候手确实在抖。他自己也说不清楚为什么——二十三年了,他在老家念完职高就出来打工——工厂流水线、饭店后厨、酒店帮工——从来没有人让他坐在一张桌子前面签一份跟他未来有关的文件。
他签完名字,按了手印。指印的红色在白纸上很显眼——他盯着看了两秒。指印的形状有点歪——他按下去的时候手指滑了一下,印泥在纸上拖出了一个小尾巴。他想重新按一个,但林枫已经在旁边签了——来不及了。
一式三份,每人一份。林晨把三份协议叠好,用回形针别上,分别装进了三个牛皮纸信封里。
签完协议之后林枫把他的那份折了两折塞进夹克口袋里,然后说了句让气氛松下来的话:以后咱们三个人的微信小群得改个名——就叫晨枫餐饮筹备组好了。把你的和我的都放进去。等将来店名也这么取——。
那我的呢?林浩问。
林枫看了他一眼。你是主厨——你的名字放在菜里就行。以后客人说这家店的水煮肉片真好吃——那就是你的名字。
林浩想说什么又咽了回去。他低头看着协议上自己那个指印——红色的、有些歪的椭圆形。他按手印的时候力气用大了,指印的边缘糊开了一点。
晨枫。林浩念了一遍,行。叫晨枫。
晨枫快餐。林晨念了一遍这个名字——两个字,干脆,好记。他在手机上搜了一下晨枫餐饮——工商注册没有重名。他拿起茶几上的笔在协议草稿的空白处写了两个字,又在旁边画了个圈。
店名也定了。林晨站起来,走到窗边把窗户推开了一条缝。二月的夜风钻进来——不是冷的,带着那种南方冬天尾巴上特有的潮润。他关了窗回到沙发边坐下,拿起那份签了字按了手印的协议看了看,然后折好放进了茶几下面的抽屉里。
下周枫哥开始装修——浩子你配方定型的进度怎么样了?
八道菜的标准配方写完了——还差两道。水煮肉片和酸豆角肉末的出餐流程还在调。林浩收好协议,一周之内全部定稿。
第297章 装修设计
三月第一天,林枫带着施工队进了场。
他比所有人都早到半个钟头。六点刚过,铺位里只有他从家里搬来的那张折叠桌和一盏工地灯。施工日志摊开在桌上,每一道工序后面跟着完成时间和验收标准——拆墙、走线、铺管、粉刷,一行一行排得密密麻麻。他在最后一行用红笔写了四个字:全程盯工。
拆旧比预想的快,也比预想的麻烦。施工队抡大锤砸了两天,旧吊顶、旧地砖、旧隔断全部清空之后,九十五平的铺子露出了毛坯骨架。水泥地面坑坑洼洼,天花板上裸露的管道交叉错杂,墙角有一滩不知道哪年漏下来的水渍,已经发了黑。林枫蹲在地上用靠尺量了一遍水平——最大高差将近两公分。他把施工队长老周叫过来:地面找平,全铺水泥砂浆,不找平后面贴砖全得翘。老周看了一眼靠尺上的刻度,搓了搓手:那得多加两天工,砂浆还得再加三吨。林枫翻开报价单指了其中一行:找平的工料费我预留了,加就是了。
水电进场那天出了第一桩意外。林枫按施工图让电工把厨房区的水管从地面改走天花板——方便日后维修,不用砸地砖。电工队长姓陈,看了图纸之后直摇头:走顶的话管子要绕梁,多费三四十米ppR管,弯头也翻倍。林枫没商量:绕就绕。地砖一旦铺好,水管漏了你刨不刨?这钱省不得。陈队长还想说什么,看了一眼林枫的表情,不说话了,转身去搬管子。
水管走到第三天下午,陈队长发现一个问题——天花板主梁的位置跟施工图上标注的差了十几公分,图是房东给的旧图,梁的实际位置偏了。原计划从梁侧穿管过墙的方案行不通了,管子得绕过整根横梁多走一个弯。林枫站在人字梯上拿着卷尺量了十分钟,下来之后在施工日志上画了一道修改线,算了一下多出来的管材和工时。多半天工期,加上之前找平多出来的两天——总共还能在月底收工。他合上本子,语气跟在工地上给甲方报变更时一模一样——冷静,精确,不容反驳。
电走完之后轮到排烟管道。这是林枫最在意的一个环节。他亲自爬上人字梯,手电筒照着风管每一处接口,指头沿着密封胶的痕迹摸过去。胶没打满。他敲了敲第三截风管的接口处,你看这里,还有缝隙。油烟三个月之后就会从这种地方渗出来,到时候天花板全是油垢。安装师傅是个四十来岁的湖南人,嘴上应着好好好我补,手上只挤了半管胶。林枫没走,站在梯子下面等他打完,自己又摸了一遍,才点头放行。那天中午他跟林晨吃饭的时候右手食指上全是密封胶,洗不掉,搓了半天。
排烟管装完的第二天下午,林枫接到了佛山家具厂的电话——原定这两天发货的餐桌椅出不了了。电话那头的业务员声音有点虚:林老板,不好意思,我们这边一批出口单临时插队了,您那个单子要往后排三天。林枫捏着手机没吭声。三天——在装修排期里不是小数字,后面所有工序都等着家具进场才能做最后的收边收口。他挂了电话之后沉默了大概三十秒,然后翻手机通讯录,拨了另一个号码——龙岗一家做餐饮家具的工厂,他之前做工程项目时存过的联系人。龙岗那边接电话的是个年轻姑娘,林枫把情况说了,问能不能加急出六套原木色餐桌椅。对方说加急可以,但加急价贵一成,明天下午自提。林枫说行。挂了电话他算了算——比佛山那批贵了八百块,但提前了整整五天。第二天下午他开皮卡去龙岗拉了六套桌椅回来,卸货的时候老周问他佛山那批怎么办,他说到了之后再退三套,多出来的三张桌子刚好能塞进用餐区靠窗的位置。林晨后来问他退不了怎么办,林枫说:多三张桌就是多九个座位,午餐多翻一台,一个月多出来的营收够把那八百块加急费挣回来。
三月中旬,厨房开始铺防滑砖、装不锈钢操作台和灶台。这是整个装修里精度要求最高的环节——灶台位置差一两公分,后面油烟机和排烟管的对接就歪了。林枫拿着激光水平仪站在厨房中央,盯着安装师傅把三口灶台的膨胀螺栓一颗一颗打进去。第一口灶装完他用水平仪测了一遍,偏了三毫米。师傅说三毫米不影响,林枫没吭声,自己把螺栓松开重新调了一遍,再测,零偏差。师傅看了他一眼,没说话,后面两口灶全部按这个标准装,没再出问题。
灶台装完的第二天又出了事——定制的不锈钢备料台送来的尺寸跟图纸差了五公分。厂家的解释是标准件,尺寸有正负公差。林枫拍了照片发到厂家微信群里,附了一句:我的施工图上标的是140乘70,你发来的是135乘70。五公分的差让我灶台到备料台的通道窄了五公分,人端着炒锅转身都会碰到。返工,费用你承担。厂家那边沉默了两个小时,最后回了三个字:明天发。三天后新备料台到货,尺寸分毫不差。但工期又被压了两天。林枫把后面墙面刷漆的工序调了顺序,先刷厨房再刷用餐区,硬是把时间抢了回来。
三月中旬还有一个小插曲。林晨有天中午过来巡工,看到厨房区的防水漆颜色跟图纸上的色号不一样——图纸上写的是浅灰,刷出来偏蓝灰,冷调的,跟用餐区的白墙放在一起不协调。林枫当时不在现场,林晨打电话给他。林枫听完之后说了句我知道了就挂了。半小时后他出现在工地,蹲在墙角看了看漆面,拿手机拍了一张照片发给涂料供应商。对方回了一条长消息解释——这个批次的色号确实偏了半个色阶,但符合厂家标称的色差范围。林枫没跟供应商掰扯色差范围,直接问了一句:你手上有没有跟色号完全一致的现货?对方查了仓库说有,但要从东莞仓库调,加一天半。林枫说调。然后他让施工队把已经刷完的那面墙打磨了一遍重新刷。老周看着心疼——漆和工时都浪费了,但林枫的态度很明确:厨房的墙就这一面,客人隔着玻璃看到的也是这面墙。颜色不对,你改不了第二回。重新刷完之后他拿着色卡比对了一遍,确认了零偏差才签字验收。
用餐区最后完工。浅灰色防滑地砖铺好了,墙面刷白色防水漆,干净到近乎单调——唯一跳出来的是靠门那面墙留了白,林枫说等店名和菜单灯箱做好了再上。原木色的桌椅摆了八张——靠窗三张、中间四张、角落一张——通道留出了两个人并排走的宽度。空调装在进门口斜上方的位置,冷风斜着吹下来能覆盖整个用餐区。
最后装的是厨房和用餐区之间那面玻璃隔断。十二个毫米厚的钢化透明玻璃,从地面一直通到天花板下沿,把二十五平的厨房完整地展示在用餐区视线里。顾客排队点餐的时候,隔着这面玻璃能看到灶台上的不锈钢台面反着光,砧板和刀具按色标分类插在架上,炒锅师傅掂锅时火苗窜出锅沿——所有动作一览无余。安装那天林枫亲手擦了三遍玻璃——任何一点指纹和胶痕都不肯放过。施工队的师傅问他为什么厨房跟餐厅之间不砌半墙省点钱,他只说了一句:你吃饭的时候想不想看厨房里干不干净?师傅愣了一下,想了想,点头说想。
三月底装修全部完工。总花费三十一万出头——比预算多了不到一万,主要是地坪找平和备料台返工追加了人工和材料费。林枫把所有票据、合同和变更记录装进了一个档案袋,交给林晨的时候说了句:账你自己对,每笔钱花在哪我都写清楚了。
完工那天傍晚林晨和林浩一起过来验收。林浩站在用餐区,隔着玻璃隔断往厨房里看。三口灶——两口炒锅一口煲汤灶——排成一排,备料台跟灶台之间刚好能转身端锅的距离,冰箱靠墙排成一行,从取料到切配到炒制到出餐——一条直线上走过去不到八步。他推开厨房的门走进去,灶台的高度他伸手试了试,刚好不需要弯腰;备料台的宽度他摆了三把砧板上去,还留出放调料碗的空当;出餐口的高度跟他端锅出菜时的手肘齐平——不用抬手也不用弯腰。
他站在灶台前,手放在旋钮上,转了一下。火苗窜出来,蓝色的焰尖比酒店那台灶还亮。他关了火,转身看着整间厨房的布局——从备料到灶台到出餐口,每一步的距离都是算好了的。他走到出餐口的位置站定,往用餐区看——隔着玻璃隔断,外面的桌椅、收银台、门口的招牌位置全在视野里。他转过头对林晨说了句:小叔,明天我带食材来试灶。
林晨点了点头。他抬起头,隔着玻璃隔断跟林浩对视了一眼。厨房里的灯开了,透过玻璃隔断把整个用餐区照得发亮——这就是客人每天走进来第一眼看到的画面。
林枫站在店门口,用抹布擦掉手上最后一点密封胶的残渍。他从口袋里掏出烟盒,抽出一根叼在嘴角,没点。他看着自己一个月的活——从一面毛坯墙到一间完整的店。地上还散着几截被锯掉的多余管头和一袋没用完的白水泥,他弯腰一个一个捡起来丢进了角落的废料箱。老周走过来跟他结了最后一笔工钱,问他:林工,你以后还接装修的活不?林枫想了想,把烟从嘴角拿下来夹在指间:看吧。有活就接。
他没跟老周说他可能很快就不做建筑这行了。但他的手机里还存着公司项目经理上周发的消息——四月排班出来之后通知你。他看了两遍没回。
第298章 菜品研发
三月底装修完工的那天晚上,林浩一个人留在了还没开业的厨房里。
他把三口灶台——两口炒锅一口煲汤灶——的旋钮逐个拧开又关上,感受了三次火力的节奏。蓝色的火舌比酒店那台德国灶更猛,烧锅底的速度快到他差点没反应过来——空锅放上去不到十秒就冒了青烟。他关了火,在笔记本上写了一行字:新灶火力偏猛,油温升速比预估快两成。
然后他开始做菜。十道菜,从头到尾做一遍。用新灶台、新炒锅、新砧板——所有他接下来每天要用的家伙什,今晚全部过一遍手。
鱼香肉丝是第一道。他下油,等油温到了七成热下肉丝滑炒——结果油温升得太快,七成热的判断比在酒店慢了两三秒,肉丝下锅的瞬间表面就焦了一层,颜色深了半度。他铲出锅看了一眼,用手指捻了捻肉丝的断面——外层已经过火了,里面还算嫩,但口感会偏干。他把这盘菜推到备料台上,在笔记本上写:鱼香肉丝,油温判断需提前3秒,滑炒时间减5秒。
第二道回锅肉也出了问题。他习惯性地把焯过水的五花肉下锅煸油——在酒店的灶台上这个步骤需要一分半钟,新灶火力猛,不到一分钟肉片的边缘就开始卷曲焦化。他赶紧下豆瓣酱和蒜苗,但出锅的时候回锅肉的酱香不够足——煸炒时间太短,肉片里的油脂没有完全逼出来,豆瓣的醇厚感也差了一口气。他把筷子插在肉里尝了一口,放下了。
他接下来连续做了尖椒肉丝、宫保鸡丁、酸豆角炒肉末——中间没有停。每道菜做完他都在笔记本上记下新灶台的油温节奏、下料时机和出餐时间的偏差。宫保鸡丁的花生米炸过了一点,外皮有点发苦——他后来才意识到新灶的余热比酒店灶台高,关火之后锅体的温度还在往上走,花生米在关火之后的那几秒里又多炸了半成。他在笔记上补了一句:花生米起锅时间再提前5秒,关火前15秒就捞。
酸豆角炒肉末倒是稳住了——这道菜本身靠的是酸豆角的酸味和肉末的油脂融合,对火候的精度要求没有回锅肉那么高。但尖椒肉丝又出了状况——尖椒下锅之后他习惯性地用酒店灶台的中火翻炒,新灶开到中火也比酒店灶台的火力大,尖椒的表皮被烧出了几块焦斑,卖相不好看。他赶紧调小火补救,肉丝倒还保住了嫩度,但尖椒跟肉丝的颜色搭配出了问题——绿的带焦、白的泛灰。他把这盘放在备料台角落,在笔记上写:尖椒肉丝,中火实际为酒店中大火,灶台旋钮刻度需重新对应。
番茄炒蛋差点炒老了——在酒店这道菜他闭着眼都能做,新灶的猛火让蛋液凝固的速度比预想快了一截,他手忙脚乱地翻了两下就出锅,蛋块有点碎,卖相不好看。他把这盘也推到一边,继续。
做到第七道蒜蓉西兰花的时候,他已经摸到了新灶的性子——火开到八成而不是全开,油温的判断提前三四秒,颠锅的频率加快来弥补缩短的炒制时间。蒜蓉西兰花的蒜香逼出来了,花菜断生还带着脆劲,颜色翠绿没有发黄。他尝了一口,点了一下头。
第八道炝炒莲白、第九道水煮肉片——都稳住了。炝炒莲白他用了猛火快炒——这道菜本身就是要大火短炒逼出干辣椒的焦香和莲白的脆嫩,新灶的火力刚好对路。水煮肉片最后的泼油步骤他特意把火关小了三秒再泼,花椒面和辣椒面被热油激出来的香气比在酒店做的还浓——新灶的火力优势在这一步反过来了,只要时机卡准,猛火能逼出更大的香。他端着这碗水煮肉片从厨房走出来的时候,碗面上那层翻滚的红油还在冒着细密的小泡,干辣椒碎和花椒粒浮在油面上,热气把辣味带到整个用餐区。
最后一道是麻婆豆腐。
这是罗师傅在酒店教他最多的一道菜,也是他对着镜子练了无数遍的一道。他换了一口干净锅,烧干水气,下菜籽油——油温五成热下牛肉末煸酥,推到锅边;下郫县豆瓣酱小火炒出红油——新灶的猛火差点让他把豆瓣酱炒糊,他赶紧把锅端离火口三秒让温度降下来,再回火继续炒。红油逼出来了,颜色比在酒店做的更亮——这灶的火够猛,豆瓣酱的红色素被高温逼出来得更充分。加水烧开后下豆腐——轻轻推,不能搅。他用手腕的力量让豆腐在锅里转动,每一块都裹上了红亮的汤汁。勾薄芡,收汁的时候他盯着汤汁的状态看了大概十秒——浓度到了,撒花椒粉,出锅。
他把十道菜全部端到了用餐区的长桌上摆成一排。
林晨苏婉和林枫应他之前发的消息赶了过来。苏婉进门看到桌上那一排菜的时候愣了一下——十道菜全部摆出来了,有的卖相好有的卖相差,像一份考卷摊在老师面前。她从第一道鱼香肉丝开始尝,一筷子下去她就看出来了:这肉丝外层偏焦了——你火开大了?
林浩点头。
她尝了回锅肉:肉片煸的时间不够,豆瓣香差了一点。不过这个辣度跟甜度是对的。
她又尝了宫保鸡丁:花生米炸过了一点,有点苦味。尝了番茄炒蛋:蛋老了,碎得厉害。
林浩没有辩解。每一条他都在笔记本上记着,回去要对照着调。
林晨吃到回锅肉的时候把椅子往后推了推,端起一碗米饭开始配着吃。他不是厨师,说不出那些术语——但他把回锅肉和水煮肉片各添了第二筷子,吃到蒜蓉西兰花的时候点了点头。番茄炒蛋他尝了一口就放下了,没说话。林浩看着小叔的反应,没问好不好吃——添了第二筷子——好吃。放下了——不行。
苏婉最后夹了一口麻婆豆腐,含在嘴里嚼了几秒,又夹了第二口。她放下筷子的时候没有马上说话,想了一会儿才开口:豆腐嫩,牛肉末酥,芡汁裹得住——你师父教你的那个推不搅的法子你用出来了。她顿了一下,花椒面要是再少撒一小撮就更好——你撒完之后舌头的麻感压过了豆腐本身的甜味。差一点点。
差多少?
就一小撮。
林浩看着麻婆豆腐上面那层红亮的芡汁和星星点点的花椒面,没有说话。一小撮——在罗师傅的标准里,这一小撮就是及格跟优秀之间的距离。但苏婉不是专业厨师,她说差一小撮,到底多小他得自己再试。
他拿起手机对着这盘麻婆豆腐拍了一张照片,发给了罗师傅。附了一句话:罗师傅,这是我在新店的灶台上做的麻婆豆腐。谢谢您这几个月的指教。
消息发出去之后他把手机放在桌上,屏幕朝下。
苏婉和林晨继续吃着桌上的菜,聊了几句装修的收尾细节。林浩坐在对面,偶尔应一声,但他的目光每隔一两分钟就会往手机的方向瞟一下。十分钟过去了,没有消息。他站起来收了几盘空盘子端进厨房。十五分钟。他把厨房的灶台擦了一遍。二十分钟。他走出厨房,看到手机屏幕亮了一下——是罗师傅的回复。
他拿起手机。屏幕上只有六个字:可以端去卖了。
后面隔了一行,又多了两个字:加油。
林浩站在用餐区,手机屏幕的光照着他的脸。他把这条消息截图存进了手机相册——跟那张中级厨师证的扫描件放在同一个文件夹里。然后他翻回聊天记录,看到罗师傅的头像亮着——在线。他打了几个字:花椒面我下次减一点试试。发了出去。
对面沉默了大约半分钟。然后罗师傅回了三个字:试吧。
没有更多了。罗师傅从来不废话。但这两个字里的意思林浩读得懂——师父让你试,就是觉得你有自己摸索的能力了。他没有再追问,把手机放回口袋。
苏婉在旁边看着他的表情,没有打扰他。
林浩转身进了厨房。他把备料台上所有剩的食材收拾好,保鲜膜盖好放进冰箱。然后他翻开笔记本,在今天的记录下面写了最后几行字:麻婆豆腐,花椒面减一小撮,其他不变。明天再做一遍。回锅肉煸油时间加20秒。番茄炒蛋全程小火关灶前15秒捞蛋。宫保鸡丁花生米起锅再提前5秒。尖椒肉丝,灶台旋钮中火实际等于酒店中大火,后续所有炒制统一下调一档。
他把笔记本合上,在厨房里站了一会儿。十道菜,今晚做了一遍,只有蒜蓉西兰花和炝炒莲白两道他满意。其他八道全有偏差——大的如回锅肉煸油不足、番茄炒蛋过火,小的如鱼香肉丝油温慢了三秒、尖椒肉丝火偏大一档。但每一个偏差他都记下了参数和修正方向,明天再做一遍就是了。
第二天他又做了一遍。这次鱼香肉丝和回锅肉都过了关——油温判断提前了、煸油时间加长了,肉丝外层焦色褪掉了,回锅肉的酱香厚了一层。番茄炒蛋他把火压到了最小,蛋液入锅后没有再凝固得太快,蛋块完整了很多——但还是比他在酒店做的差了一点口感,他想了想在笔记上加了一句:新灶做番茄炒蛋可能需要换一口厚底锅,薄底锅传热太快控不住温。尖椒肉丝统一下调一档火之后尖椒的焦斑没了,颜色绿得均匀,肉丝滑嫩——这道菜稳了。宫保鸡丁的花生米按调整后的时间捞出来,微微焦香但外皮完整不苦。
第二轮唯一没稳住的是麻婆豆腐。花椒面他按苏婉说的减了一小撮——结果减多了,麻味不够,豆腐的鲜甜是出来了但花椒的存在感弱了。他端着这盘麻婆豆腐看了半天,在笔记上写:减半小撮,不是一小撮。明天再试。
他关上厨房的灯。店面里只剩下玻璃隔断外面路灯透进来的光。他拿抹布把灶台擦了一遍,把笔记本放进口袋,推门出去了。
第299章 供应链
四月初,林枫开始搭建晨枫快餐的供应链。
这件事跟他之前在建筑工地上管材料采购本质上是一回事——找对源头、盯住品质、卡住成本。不同的是,工地上的钢筋水泥一年用不完可以堆在场地上,但食材不行。今天的猪肉放到明天就变色,今天的菜心过了今晚叶子就发蔫。他在笔记本上划了一条原则:当天采当天用,宁可少备补货不能多备浪费。
林枫三月份装修完工之后就跟公司请了长假。建筑行业不景气的风声越来越紧,公司几个项目停了之后人力严重超编,他跟项目经理提了休假,对方只说了一句你休吧,正好排班排不开,语气里没有挽留。林枫心里清楚——这长假多半是离职的前奏。公司已经三个月没发全额工资了,上个月到手的只有百分之七十,剩下的下个月补。他没跟林晨明说这件事,只是把全部精力投进了快餐店的筹备里。反正装修那一个月他等于全职在做店的事,现在装修完了做供应链,顺理成章。
第一个要解决的是猪肉供应商。他连续三个凌晨四点开着皮卡去南山农批市场,在凌晨最嘈杂的灯光下看肉。农批市场凌晨三点多开市,猪肉档的灯最亮,案板上整片整片的白条猪挂着,档主拿着剔骨刀在骨缝里游走。地面的排水沟里淌着混了血水的暗色液体,空气里是生肉的腥味和氨气味混在一起的味道。林枫穿着他在工地上穿的那双旧劳保鞋,踩着湿滑的地面一家一家地看。他不太会挑肉——钢筋水泥他一眼能看出标号和批次,但猪里脊他只能凭最基本的判断:颜色、弹性、气味。他在心里骂了自己一句——应该拉林浩一起来。
第一家档口的老板很热情,拍着胸脯说都是今早刚到的货,你看这肉的色泽。林枫翻过猪里脊看了看纹理,颜色偏暗,手指按下去回弹偏慢——新鲜度差了一截。他没说话,走了。第二家的肉色可以,但档主报价比市场均价低了一成,林枫问了一句你这每天的供应量稳不稳,对方含糊了几句就没下文了。他走到第三家,一个五十出头的潮汕老板,话不多,猪里脊摆在案板上纹路清晰、色泽粉润。林枫按了按肉质,回弹快,手感紧实。他问:每天能供多少?潮汕老板说了个数字。林枫又问:送到科技园中区加不加价?对方摇头:农批自提这个价,送过去加三十块跑腿费。
价格比市场均价高了百分之五左右。林枫没有犹豫,加了对方微信,备注了猪肉供应商1号。第二天凌晨他特意带了林浩一起去——林浩摸了肉、看了纹理、闻了气味,点了头:这个行。
贵的这百分之五换的是每天出栏的猪里脊纹理和新鲜度都在同一条线上——林浩的备料标准是每一片肉丝切出来粗细均匀、颜色一致,如果猪肉批次波动大了,再好的刀功也切不出标准品。
蔬菜走了另一条路。平湖海吉星批发市场——鹏城最大的农产品集散地,凌晨五点开市,整个批发市场像一座被白炽灯点亮的仓库。林枫第一次去的时候差点在市场门口就转头——入口处堆满了空纸箱和烂菜叶,叉车在通道里横冲直撞,喇叭声此起彼伏。一辆满载的大卡车堵在主通道上卸货,后面十几辆三轮车排着队按喇叭,没人挪。他摸黑走了十几分钟才找到蔬菜批发的区域,每个档口前面停着三轮车和小面包车,老板们在喊价、装货、算账,没有人注意到一个穿旧工装外套的中年人在看菜。
他在蔬菜区转了两圈,选了三家做了标记——一家专做叶菜的,一家根茎类比较全,还有一家小档口的老板是个四川人,摊位上摆着新鲜的二荆条辣椒和青花椒。林枫蹲下来翻了翻那筐二荆条——颜色红亮、表皮光滑、没有虫眼和黑斑。他抓了一把闻了闻——辣味冲鼻但不是那种呛人的干辣,是二荆条特有的香辣。他问了价,比普通辣椒面贵了两成。四川老板看他的表情补了一句:这个货我从汉源直接收的,不是市场里的通货。你做过餐饮的?
正在做。林枫把这家也加了微信。
第二天凌晨五点林枫再去的时候带了一份采购清单——十道菜对应的蔬菜品种、每日预估用量和品质要求。他按照前一天踩好的三家档口逐个拿货,六点出头皮卡后斗就装满了——三筐菜心、两筐青椒、一袋土豆、一筐二荆条干辣椒、几把小葱和蒜苗。他开车从平湖往科技园赶,六点四十到了店里,把菜一筐一筐搬进厨房。林浩七点到的时候,备料台上已经整整齐齐地摆好了当天要用的全部蔬菜。
但调料这头出了分歧。
林浩看了林枫带回来的豆瓣酱和花椒之后皱了眉。豆瓣酱是市场里最常见的那种——大厂出品的工业豆瓣酱,味道中规中矩,做出来不会难吃但也没有特别出彩的地方。花椒是普通货,麻度够但香气淡。爸,这个豆瓣酱不行。他直接说了。
林枫把那瓶豆瓣酱拿起来看了看标签:这个是市场里卖得最好的牌子,批发价也最实惠。你说的那个郫县老牌子,我查过——贵了将近一倍。一家快餐店——
川菜的灵魂在豆瓣酱和花椒。林浩打断他,这两样东西如果图便宜用次货,菜单上所有川菜都差一口气。你看鱼香肉丝——同样的肉丝同样的炒法,好豆瓣跟差豆瓣做出来的酱香完全不一样。顾客第一次来可能说不出哪里不对,但第二次他就不来了。
林枫看着他。他在工地上管了十几年的材料采购——水泥标号、钢筋规格、防水涂料品牌——他对品质一致性有偏执的要求,但他对成本同样有偏执的要求。两个偏执撞在一起的时候他需要算一笔账。
贵一倍的豆瓣酱——一天用多少?
按十道菜的量算,一天大概需要一斤半。普通豆瓣酱批发价六块一斤,郫县老牌子十二块——每天多出九块钱。一个月两百七十块。
林枫没说话。两百七十块——这个数字在他脑子里过了一遍。一天九块钱换的是十道川菜的底味品质。他想起自己在工地上选防水涂料的逻辑——贵的那个牌子每平米多花三块钱,但五年不漏水。省三块钱的后果是两年后渗水返工要花三十倍的价钱。
行。换。他说,花椒也换——你说的汉源大红袍,用那个四川档口的货?
对。花椒的麻度跟香气差一个等级,整个菜的层次就塌了。
干辣椒呢?
二荆条,你昨天拿的那批行。但不要买现成的辣椒面——自己买干二荆条回来碾。店里碾的辣椒面跟工厂碾出来的味道差很远,工厂批量碾的时候温度高,辣味和香味都损耗了。
林枫点了点头。他在清单上把豆瓣酱和花椒的供应商改了,旁边加了几个字:品质优先,成本次之。然后他抬头看了一眼林浩:你自己碾辣椒面——每天多花多少时间?
二十分钟。
二十分钟能省多少?
现成辣椒面批发八块一斤,自己买干二荆条碾大概十块一斤——反而贵了两块。但味道值这个差价。
林枫没有再反驳。他合上清单,凌晨四点出门、五点到海吉星、六点半把菜拉到店里——这个节奏他已经跑了四天了,身体的疲劳还没到极限,但每天开车往返四十多公里加搬货卸货,他知道撑不了一整年。他需要找一个更稳定的方案——要么跟批发市场的档口谈定点配送,要么找一个做餐厅食材配送的中间商。但现阶段没有量,配送商不会接一个月只采几百斤蔬菜的单子。
他先把这个念头记在本子上,继续每天凌晨跑。
四月第二个星期,出了一次事故。那天凌晨五点林枫到海吉星的时候,叶菜档的老板跟他说今天的菜心没有好货——连续两天的大雨把本地菜心的收成打了个对折,市场里能拿到的货叶子发黄、茎秆偏老。林枫在档口前站了十分钟,翻了好几筐,没有一筐达标。他最后拿了一筐勉强能用的——茎秆粗了一点,但叶子还没全黄。他拉到店里的时候林浩正好到了,打开筐看了一眼菜心,没说话,但他的表情告诉林枫——这筐不够格。
那天中午的炝炒莲白和蒜蓉西兰花用掉了这筐菜心里最好的部分,剩下的茎秆偏老的那些林浩全部切掉了——只取了嫩心。浪费了将近四成。林枫看着垃圾桶里扔掉的菜心茎秆,晚上在笔记本上写了一行字:叶菜供应需要备选渠道。明天去农批再找一家叶菜供应商,雨天的替代方案。
他把供应链的所有数据整理进了一个共享文档——每种食材的批发价、每日用量估算、周转周期。林晨帮他把文档接进了店里的管理后台,设置了安全库存线:任何食材低于两天用量的时候系统自动提醒补货。
四月中旬的某天凌晨,林枫从海吉星开皮卡回科技园的路上,天还没亮。路灯照着空荡荡的南海大道,他左手扶方向盘,右手从副驾驶座上摸过一瓶矿泉水拧开喝了一口。后视镜里皮卡后斗的菜筐被一张帆布盖着,筐里是明天一天要用的全部食材。他想着自己管了十几年的钢筋水泥,现在管的是猪肉、菜心和豆瓣酱。
车过了滨海大道的跨线桥,天边发白了。他揉了揉发酸的眼睛,拐进了科技园中区的辅道。再过两个小时,林浩就会走进厨房,打开冰箱,看到今天凌晨搬进来的这些食材,然后开始备料。从冰箱取料,到备料台切配,到灶台炒制,到出餐口出菜——八步。
第300章 招聘团队
四月中旬,店里的硬件和供应链都就位了。缺的是人。
林浩在四月初正式从酒店辞了职。他跟罗师傅提离职的那天下午,厨房刚好过了午餐高峰期,灶台还没凉。罗师傅正在擦他的炒勺——那把用了十几年的铁勺勺面被磨得发亮。林浩站在他旁边说了句:罗师傅,我月底走。
罗师傅没抬头,继续擦勺。过了大概五秒钟他问了一句:开自己的店?
嗯。快餐。科技园。
罗师傅把勺挂回墙上,擦了擦手。他看了林浩一眼,只说了一个字:
林浩在酒店做了半年。从案板学徒到罗师傅让他上灶试菜,中间被罚过两次、被教过无数次、被肯定过一个字。他收拾东西离开的那天把自己的调味记录本带走了——正反两面都写满了,前面是菜谱和调味比例,后面是错误日志。他在员工宿舍门口站了几秒钟,然后拉着行李箱走了,没有回头。
回到店里之后他开始张罗招人。厨师学校的同期学员是最先想到的人脉。他给几个还算熟悉的同学发了消息,内容很简单:我在科技园开了一家川菜快餐店,需要一个案板工和一个出餐工。月薪四千五包吃,试用期满涨到五千。
消息发出去之后回复的人不多。有的同学已经进了其他餐厅,有的去了酒楼做学徒工资更高,有的直接说不来——小快餐店不稳定,万一几个月就关门了,我白搭进去。林浩没有解释,回了个就挂了。他心里清楚,一家还没开业的无名小店,说服别人放弃手头的工作来投奔,靠的不是画饼。
最后来的两个都是跟他同期培训的。阿伟比林浩大一岁,刀功在同期学员里排前三,之前在一家潮汕菜馆的案板做了三个月,觉得潮汕菜的路子跟自己想学的对不上,看到林浩的消息第二天就来了。小刘最小,二十一岁,手脚麻利但经验最少,刚从厨师学校出来还没找到正式工作,看到同学群里林浩发的消息就打电话过来了——浩哥我啥都能干,你让我来就行。
林浩在店里面试他们的时候没有问太多技术问题。他把阿伟带到备料台前放了一把刀和一块砧板,指了指旁边一筐土豆:切丝,三分钟。阿伟拿刀开始切。林浩站在旁边看他的刀法和下刀的节奏——手腕发力、指关节弯曲抵住刀面、推切不压切——标准的厨师学校教法。三分钟到了他看了看土豆丝的粗细均匀度,点了点头。
小刘他让去出餐台模拟打了一份套餐——盛汤、打饭、摆盘、盖盖。小刘手有点抖,汤洒了一点在台面上,但他反应很快,拿抹布擦掉之后重新盛了一碗。林浩看了整个过程没说话,最后说了一句:你手别抖,客人看着你手抖他心里不安。多练就行。
前台招人更难一些。林枫在招聘网站上挂了收银员和服务员的岗位,收到的简历不多——一家还没开业的小快餐店,在招聘网站上的竞争力约等于零。面试了三个人,两个嫌远,一个嫌工资低。小吴是第四个来面试的,二十三岁,之前在科技园另一家快餐店做了一年收银。她来的时候穿得很普通,头发扎了个马尾,进门先看了一眼收银台的位置和收银机的型号,然后才坐下来。
林枫的面试方式一贯直接。你之前那家店中午高峰期一个小时能收多少单?
一百二三十单。最高的时候冲到过一百五。
如果打出来的单跟厨房出的菜对不上你怎么处理?
小吴的回答没有犹豫:单跟菜对不上我马上进厨房叫厨师对单号——不是站在前台喊,是直接走到灶台旁边指着订单的号码问几号还差一道。喊的话厨房那么吵根本听不见,等听见了菜也老了。
林枫又问了一个问题:客人嫌上菜慢找你理论你怎么处理?
跟他说前面排了几单——不能光说马上马上,马上到底是多久?我去厨房问个时间回来跟他说,他就不急了。
面试完之后小吴出了门,林枫转头跟林晨说:这个人靠谱。干过快节奏快餐收银的人不需要培训,来了就能上。
工资多少?
她自己提的四千五。我说给四千八——多出来的三百块是觉得她值这个价,而且比她之前的工资高一点,人容易留。
服务员是小吴推荐来的老乡小芳,十九岁,刚从老家到鹏城。林枫面试她的时候问了三个问题就结束了——在饭店干过没有?端盘子稳不稳?手脚快不快?小芳的回答都很短:没有。稳。快。林枫让她端一托盘水从厨房走到最里面那张桌子——水没洒。人留下了。月薪三千五包吃。
五个人就这样凑齐了。林浩主厨管炒锅和出品,月薪暂定六千——合伙人薪资从利润里出,现阶段先按这个数走。阿伟做案板切配备料,四千五。小刘管出餐台汤品和米饭,四千五。小吴收银打单外卖打包,四千八。小芳堂食区上菜收盘卫生,三千五。加上林枫不领固定薪资——他的投入折算成股东权益——整个团队的人力成本每月大概两万三出头。林晨算过,如果营收低于预期,最薄的环节就是人力——但五个人已经是最精简的配置了,再砍就运转不了。
团队到齐后的第一个周末,五个人加上林晨和林枫全部到了店里。没有正式的动员会——林晨只是把所有人叫到用餐区坐下来,把开业前最后几天的准备工作过了一遍。阿伟和小刘是第一次看到完整的店面,两个人在厨房里转了一圈——阿伟摸了摸不锈钢备料台的台面,小刘站在出餐口的位置比划了一下传菜的距离。
林晨说了几句话。他没有准备讲稿,站起来拿着笔记本翻了翻:试营业定在四月二十号,还有三天。这三天把所有流程走通——从备料到出餐到收银到收盘到打扫,每个环节至少走三遍。有问题当场记下来当天解决。
他顿了一下,看着这五张年轻的脸。大家从不同地方来,之前做不同的事,但现在在一家店里。店里的事就是大家的事——厨房的事前厅也看得到,收银的问题厨房也听得到。谁发现谁说,别等。
他没说更多。在t厂管过大模型应用部的副总监——带了三十个人的团队——他清楚开会讲太多话跟讲太少话效果一样差。三天的准备时间比任何演讲都重要。
接下来三天的问题比他预想的多。第一天走备料流程——阿伟按林浩给的分量标准切了十道菜的备料,结果发现备料台一次只能摆四道菜的料,剩下六道要放冰箱等——但冰箱跟备料台之间差了三步,中午高峰期来回跑会浪费时间。林浩在厨房里站了五分钟,把备料台上的砧板重新排了位置——三口灶按出餐频率排序,卖得最多的三道菜备料放在最顺手的位置,其余的按出餐顺序依次排开。阿伟照新顺序走了一遍,从冰箱取料到切配到递到灶台,全程少了四步。第二天走收银出餐流程——小吴打单的速度没问题,但她发现收银机的出单口跟厨房出餐口之间隔了一面墙,单子要绕过玻璃隔断才能递到林浩手里。她问了一句:能不能在隔断上开一个小窗递单?这样我不用绕。林枫量了一下玻璃隔断的宽度,当天下午就找了玻璃厂的人来开了一个十五公分宽的传单口——磨边封了口不割手,刚好能塞过一张小票。
第三天走完收桌打扫流程的时候小芳打翻了一碗汤——刚端起来脚被椅子腿绊了一下,整碗紫菜蛋花汤泼在了浅灰色的地砖上。店里一下子安静了。小芳蹲下去拿抹布擦,手在抖。林浩从厨房里走出来,看了一眼地上的汤渍,没看小芳,对小刘说了句:拿拖把来。小刘拖了地。林浩看了小芳一眼:椅子腿以后先看脚下再走。没事,试营业之前打翻的,不扣钱。
第301章 试营业
四月二十号那天早上,林浩六点四十就到了店里。
他比平时早了二十分钟。厨房的灯他一盏一盏打开,灶台上方的排烟灯先亮了,嗡地响了一声才稳下来;备料台的日光灯管闪了两下,把不锈钢台面照得发白;冷柜的指示灯亮起来的时候,压缩机的声音跟着响了一下,他听了一下节奏,没问题,才把冷柜门打开。阿伟昨晚备好的肉丝和菜丝一盒一盒拿出来放在备料台上,按出餐顺序排好。最左边是鱼香肉丝的肉丝和木耳丝,中间是回锅肉的五花肉片和蒜苗,最右边是宫保鸡丁的鸡丁和花生米。汤锅架在煲汤灶上,骨头汤的底料昨天下午就煲上了,他揭开盖子看了一眼,汤色发白,面上浮着一层细密的油花,拿勺子搅了搅,又盖上了。
小刘七点到的,进门先去洗手,水龙头开大冲了三十秒,拿纸巾擦干。然后站在出餐台后面把米饭蒸上,六升米的量,够中午一百二十份左右。如果不够,第二锅十二点前能赶上。他把汤桶从冷柜搬出来,紫菜蛋花汤的底料是林浩提前调好的,小刘只需要加热、勾薄芡、撒紫菜和蛋花。他拿长柄勺在汤桶里搅了两圈,底料化开了,盖上盖子开火。火苗从灶眼冒出来的时候他调了一下阀门,火小了一档,煲汤不能大火滚,小火温着就行。
阿伟七点一刻到。他换上厨师服,洗手,系围裙,然后到备料台前开始最后的切配。有些蔬菜必须现切现用,提前切好会氧化或出水。他扫了一眼林浩排好的备料盒,没说话,拿起菜刀开始切。刀落案板的声音在厨房里有节奏地响着,林浩在旁边注意到了他切土豆丝的手法,手腕发力均匀,推切不压切,间距一致。他没说好也没说不好,转身去检查灶台的火。
小吴七点半到的,在收银台后面开机、测试打印机、核对面上的零钱。她把抽屉里的硬币和纸币数了一遍,一百二十块零钱,跟昨天留的数目对得上。菜单灯箱她又检查了一遍,所有菜名和价格都对得上。她抬头扫了一眼厨房的方向,灶上的火已经点起来了,排烟的声音嗡嗡地响着。
小芳最后到,七点四十,她把八张桌子又擦了一遍,纸巾盒和调料罐每桌摆正,椅子拉出来对齐桌沿。调料罐里酱油和醋的液位她检查过,不够的已经从后厨补充了。擦到靠窗那桌的时候她发现桌面上有一块昨晚没擦干净的油渍,去厨房拿洗洁精重新擦了一遍,擦完用手背摸了摸桌面,确认没有油腻感才放行。
林枫八点到。他站在门口扫了一眼店内,灯开着、排烟开着、人都在。他没走进去,而是站在外面看了看招牌。晨枫快餐四个字亮着白光,旁边的小字写着川菜·家常·快餐。他盯着那几个字看了几秒钟,然后推门进来,走到收银台旁边站定,翻了翻小吴整理好的零钱盒。
林晨是最后一个到的。他提着一台笔记本电脑,在角落那张桌子上坐下来。屏幕上打开了一个共享文档,上面是今天试营业的记录模板:时间、人数、菜品、出餐速度、客户反馈,每一个格子都留了空白等他填。
九点半,五个人全部到了。林晨站起来说了几句话。他没有准备讲稿,只拿笔记本翻了翻:试营业两天。第一天只请朋友和同事来,不对外营业。把从备料到出餐到收银到收盘到打扫的流程走通。有问题当场记下来,当天解决。
他停了一下,看着这五张脸。大家从不同地方来,之前做不同的事,但现在在一家店里。店里的事就是大家的事。厨房的事前厅也看得到,收银的问题厨房也听得到。谁发现谁说,别等。
说完他就坐回角落去了。小吴在收银台后面把菜单又看了一遍。林浩在厨房里把灶上的火开了一下又关了,确认火力。小刘在出餐台把汤碗码成两排。阿伟的刀一直在案板上没停。小芳站在用餐区中间,两只手握在一起,看着门口。
十点,林枫走到门口,把试营业的牌子挂出去了。
第一批人是林晨t厂的同事。陈铭中午十一点四十到了,带了三个技术组的同事。他进门扫了一眼店里,八张桌子坐了三张,还有五张空着。他走到收银台前面:四份,两份鱼香肉丝,一份回锅肉,一份宫保鸡丁,全部堂食。
小吴打单的速度已经练过了,四份单子打出来,她把其中一联从传单口递进厨房。传单口亮了一下,纸条滑出来。林浩接单,看了一眼,开了灶。四份菜,他算了一下时间:两份鱼香肉丝同时出,回锅肉和宫保鸡丁间隔一分半钟起锅。阿伟在旁边备料台上已经把四份菜的料配好了,每份一个小碟子,肉丝、配菜、调料分别装好,放在灶台右手边的台面上。林浩左手翻锅,右手拿铲,两口炒锅同时开火。
油温到了,肉丝下锅,刺啦一声,油烟从锅沿升起来,被排烟罩吸走。林浩颠了两次锅,手腕一抖,肉丝在空中翻了一圈落回锅里。调料汁顺着锅边淋下去,木耳丝和胡萝卜丝跟进去,翻炒几下,起锅装盘。三分钟后,第一份鱼香肉丝出锅。小刘在出餐台接盘,放托盘,端到二号桌。又过了一分钟,第二份鱼香肉丝、回锅肉和宫保鸡丁依次出锅。从下单到全部上齐,一共七分钟。
陈铭夹了一筷子鱼香肉丝,嚼了两下。肉丝的嫩度还行,木耳丝的口感脆,辣度压着甜度,收汁收得刚好。他旁边的技术组同事已经开始吃第二口了。四个人的筷子几乎同时伸向各自的盘子,没有人先说话。等鱼香肉丝吃到一半,陈铭才说了一句:辣度合适。
吃完之后他把碗推到一边,走到收银台前面掏手机。多少钱?
四份四菜,每份二十二,一共八十八。小吴报完数抬头看了他一眼,您是林总的同事吧?
陈铭点了点头,扫了码付了钱。走之前他拐到角落林晨那张桌子旁边,说了一句:菜不错。出餐速度可以再快一点,中午高峰如果排到六七个人同时下单,七分钟等不了。
林晨在文档上记了一行:出餐速度,单次四份7分钟,需压缩到5分钟以内。
中午十二点,来了第二批。周姐带了两个朋友,都是做商务的,嘴刁得很。她们点了一份麻婆豆腐、一份水煮肉片、一份蒜蓉西兰花和一份炝炒莲白。小芳端菜的时候手稳,四道菜一碟一碟上,没洒没漏。周姐的朋友吃了一口水煮肉片,挑了一根莴笋尖出来看了看,又放回嘴里。周姐问她怎么样,她没马上回答,又吃了一口饭才说:这个肉片嫩,汤底够味。比园区那家川菜馆地道。
林浩在厨房里听到了传出来的声音,手里的炒锅没停。苏婉十二点半到的,她从学校直接过来,还穿着通勤外套。她没坐下来吃,而是站在用餐区角落看了十分钟。看小芳端菜的手稳不稳,看小吴收银的时候有没有排队。她也留意客人的筷子在哪个菜上停得最久,水煮肉片那桌三个人的筷子都往那道菜上伸得最多。
她看了十分钟,然后走到林晨旁边轻声说了一句:汤的分量可以再大一点,男客人吃完菜会想喝汤,现在碗太小了。
林晨抬头看她:你观察到了?
三个人喝完汤之后都去拿了一次免费汤桶。碗不够喝。
林晨在文档上又记了一行:汤碗换大号,或增加免费续汤提示。
下午一点半又来了几拨人,都是林枫和苏婉认识的朋友。有一桌三个人点了六道菜,把菜单上十道菜点了六道,林浩一个人灶上两口锅同时出,最忙的时候三份菜排着队等出锅。阿伟备料的速度跟上了,小刘传餐没出错,小芳收盘子的时候摔了一个碗,碎片捡干净了,重新拿了一套餐具摆上。小芳蹲下来捡碎片的时候手抖了一下,林浩从厨房里探出半个身子瞥了一眼,没说话,又缩回去了。
下午两点,最后一拨试营业的客人走了。小芳收盘子、擦桌子,小刘洗汤碗,阿伟收拾备料台。林浩把灶台擦了两遍,把炒锅挂回墙上。小吴把收银数据导出来,今天一共接待了三十二个人,营收六百七十块。试营业的食材大部分是免费提供的,这个数字没有参考意义。有意义的是流程,从下单到出餐平均六分半钟,最慢的一桌等了八分钟。阿伟备料没有断过,小刘传餐零失误,小芳收盘子摔了一个碗,碎瓷片捡干净了,新碗补上了。
林晨坐在角落,把今天的观察数据一条一条填进表格。灶台出餐速度填了六分半,传单口响应速度填了合格,备料台动线标了优化方向,收银台下单速度填了正常,汤碗容量标了需改,客户停留时间填了二十五分钟。
林枫站在门口,把试营业的牌子翻过来,背面是空白。明天再翻回去。
林浩从厨房里出来,手里拿着一碗饭和一碟剩菜,他自己还没吃午饭。他坐在备料台旁边,把饭和菜拌在一起吃了。阿伟和小刘已经在外面吃盒饭了,小吴和小芳在收银台后面各吃一份。
林晨合上笔记本电脑,走到林浩旁边。林浩嘴里嚼着饭,抬头看了他一眼。
明天再来一天。林晨说。
汤碗的事,换个大的。
林浩点了一下头,又扒了一口饭。
林晨走回角落把电脑收起来。他出门的时候目光扫过店面,厨房的灯已经关了,店面里只剩收银台的小灯亮着,小吴在核今天的账。门口的招牌灯还开着,晨枫快餐四个字映在夜色里。
第302章 菜品调整
试营业第二天来了更多人。林晨没有再请同事,昨天的客人把消息传开了,科技园里有几个人中午溜过来问这家新店能吃吗,小吴说今天试营业最后一天,菜品还是这几样,价格八折。他们坐下来点了菜,吃完了有几个说明天正式开业我还来,有的说麻婆豆腐够味,有的什么都没说就走了。
中午最忙的时候有六桌同时坐满,林浩灶上两口锅没有停过。油烟从排烟罩里灌出去,厨房里热气蒸腾,阿伟额头上全是汗,切配的手没停过。小刘传餐跑了两趟差点撞上端盘子的小芳,两个人在出餐口错身而过的时候互相看了一眼,没说话,各忙各的。小吴收银的时候排了三分钟的队,她急得额头上冒了一层汗,但手上的动作没乱,扫码、找零、打单,一步没落下。灶台上两口锅同时出菜的时候,林浩左手颠一号灶的回锅肉,右手拿勺往二号灶的鱼香肉丝里下调料,两口锅的火苗交替往上蹿。油烟从排烟罩里涌出去又被抽风机拉回来,厨房里雾腾腾的。阿伟切配的速度跟上了出餐节奏,配好一份料碟推到灶台边,林浩接过来下锅,整个过程不需要开口说话。一点半以后人渐渐少了,林浩才把灶火调小,开始清理灶台上的备料碟。
但林晨要的不是还来不来这种模糊反馈。他在共享文档里做了一张表格,每个客人吃完走之后他都在表格里记,点了什么菜、剩了多少、有没有加饭、加了几次、从坐下来到吃完走了多长时间。这些数字比任何一句口头评价都准确。一个人说可能是客气,但一个人把一整盘鱼香肉丝吃干净又加了一碗饭,这个数据不骗人。
晚上关了店,五个人加上林晨和林枫坐下来复盘。店里的椅子翻到了桌上,只剩他们坐的几张没翻。小芳把最后一张桌子擦干净,小吴把收银台的数据线拔了,阿伟把案板上的刀收进刀架,顺手把刀架推到墙角。林晨把笔记本电脑屏幕转向大家,上面是两天的数据汇总。
十道菜的销售排名。他点开一张柱状图,鱼香肉丝、回锅肉、宫保鸡丁、水煮肉片,这四道占了总点单量的百分之六十七。麻婆豆腐排第五,但单点率不高,大部分是配饭点的。
剩下的呢?林枫问。
酸豆角炒肉末还行,能占百分之十二。番茄炒蛋、蒜蓉西兰花、炝炒莲白、尖椒肉丝,这四道加起来不到百分之二十。
林浩在旁边听,没插嘴。他盯着屏幕上的数字看了一会儿,伸手点了一下尖椒肉丝的那根柱子:味道没问题。停了一下又说:我调过火了。
味道没问题,但它跟宫保鸡丁和回锅肉太像了,都是辣口下饭菜。林晨把鼠标移到番茄炒蛋上,客人进了店看到菜单上有三四种辣的肉菜,最后只选一两样,剩下那几样就没人点了。番茄炒蛋的问题是定价二十二块,客人觉得一道鸡蛋做的菜卖二十二块贵了,他们宁愿多花三块钱点回锅肉。
降两块呢?林枫的思路永远是价格。
林浩摇头:成本薄。他想了一下又说:不如换掉它。
林晨看他:换什么?
干煸四季豆。林浩说。
理由?
成本低。林浩说。下饭。
他停了一下,又补了一句:干香微辣,跟鱼香肉丝对冲。
林晨在文档上把番茄炒蛋划掉,旁边写了干煸四季豆四个字。
尖椒肉丝呢?
林浩想了几秒钟。糖醋里脊。
林枫抬头:糖醋里脊?这不是川菜。
快餐讲搭配。林浩说。
他又补了一句:不讲菜系。
林晨在电脑上敲了几下:现在辣的菜占七成,不辣的只有两道?
林浩说。加一道酸甜口,不辣的有选择。
苏婉一直在旁边听,这时候放下茶杯:辣的客人想换口味也会点。酸甜口跟咸辣口对冲。
林晨点了点头。他在菜单上把尖椒肉丝划掉,旁边写了糖醋里脊。然后他看向苏婉,她坐在角落一直没怎么说话。
苏婉,你有什么看法?
苏婉放下茶杯。我这两天在店里看了客人的吃饭节奏。中午十二点到一点半,科技园来吃饭的人平均用餐时间只有十八分钟。
没人接话。
十八分钟里要点单、等菜、吃饭、付钱走人。她看了一眼林浩,上菜超过五分钟,他们就有压力,时间不够用。水煮肉片从下单到出锅要多久?
七分钟。林浩说。
太长了。苏婉说。水煮肉片能不能提前预制?肉片焯好,调料包调好,客人一点单直接下锅?
林浩皱了一下眉。提前预制在酒店是可以做的,但快餐店出餐量大,预制多了口感会差。他想了一下:肉片能提前焯。
调料包呢?
分装好。林浩说。省切配时间。
整体能压到几分钟?林晨问。
四分钟。林浩说。
那就四分钟。苏婉说,快餐的客人来填饱肚子,味道及格就行,速度比味道重要。你十道菜里出餐最慢的就是水煮肉片,把它压缩到四分钟,中午高峰的翻台率能提一截。
林晨在文档上记了一行:水煮肉片预制方案,肉片提前焯好,调料包分装,目标4分钟出锅。
散会之后林浩没走。他站在厨房里,把灶台的火开了一下又关了,他在想糖醋里脊的炸制节奏。这道菜他之前没在新灶上做过。糖醋里脊的关键在于炸,面糊要挂得薄,油温要够高,炸出来才酥脆。但在快餐的节奏里,一道需要油炸的菜会占用灶台时间,而且炸完之后锅里的油不能直接炒下一个菜,得换油或者等油温降下来。
他在备料台前面站了两分钟,然后翻出笔记本,在空白页上写:糖醋里脊,考虑改成糖醋排骨?排骨可以提前卤好,出餐的时候挂糊炸一遍就行,省时间。干煸四季豆跟糖醋排骨能不能在同一个灶台上交替出,一个炸一个煸,时间差拉开就不冲突。
他关了厨房的灯,拿上笔记本出了门。店面里小吴还在核对今天的账。她抬头看了林浩一眼:浩哥,明天正式开业?
紧张吗?
林浩没回答。他在酒店做了一年多,每天面对上百份订单,没紧张过。但那是别人的厨房。明天是自己的灶台。他把笔记本塞进口袋,推门走了出去。
第二天早上八点,林浩在厨房里把干煸四季豆和糖醋排骨各做了一遍试吃。他本来想做糖醋里脊,但昨晚想了想炸制时间和灶台占用的问题,改成了排骨。
干煸四季豆他做得快,四季豆切好段,肉末备好,干辣椒和花椒煸香,下四季豆大火煸到表皮起皱,加肉末炒散,调味出锅。从下锅到出锅不到三分钟,味道干香微辣,四季豆表皮焦皱内里软嫩,肉末的油脂裹在豆角上。
糖醋排骨是提前卤好的排骨裹薄糊下油锅,油温七成炸到金黄,排骨在油里翻了两下,外壳迅速定型。捞出来控油的时候油还在往下滴,表面挂着一层薄薄的酥皮。另起一锅调糖醋汁,番茄酱、白糖、香醋、生抽、水淀粉,汁烧到冒泡把排骨倒进去翻两下,出锅。外酥里嫩,酸甜口很明显,不辣。他尝了一块,咬开的时候外皮咯吱响了一声,里面的肉还带着卤汁的香味。比糖醋里脊省时间,排骨可以提前卤好,出餐只多一道炸的工序。
他在笔记本上记了两行:糖醋排骨,卤制时间四十分钟,出餐炸制两分钟,总占用灶台时间三分钟含调汁;干煸四季豆,出餐时间两分半,可与糖醋排骨同灶交替出。两道新菜加进菜单之后,十道菜里有五道可以在四分钟以内出餐,只有水煮肉片一道需要四分钟以上。他在十道菜的名字旁边各写了一个数字,那是预估出餐时间,然后用红笔把超过四分钟的圈出来。只有水煮肉片一个红圈。
两道菜端出来的时候苏婉正好到店里。她背着包站在备料台旁边,看了一眼十道菜的排列,先没说话,拿筷子夹了一块排骨尝了一下。排骨外皮酥脆,咬开里面还有卤汁。她又夹了一根四季豆,嚼了两下,干香的味道在嘴里散开。
排骨酥。她说。四季豆香。顿了一下又补了一句:糖醋排骨放在菜单上能跟回锅肉形成口味互补,一个咸辣一个酸甜,客人可能两道都点。
林浩没接话,把两道新菜和保留的八道菜一起排列在备料台上。十道菜:鱼香肉丝、回锅肉、宫保鸡丁、麻婆豆腐、水煮肉片、酸豆角炒肉末、干煸四季豆、糖醋排骨、蒜蓉西兰花、炝炒莲白。五道川菜口味,五道各有不同,酸甜、干香、清淡、酸辣、咸鲜。辣的和不辣的比例从七三变成了六四。
他拿出手机对着十道菜拍了一张照片,发给罗师傅。没有附任何文字。
罗师傅的回复很快:四道新菜?
两道换了。林浩回。
什么换什么?
番茄炒蛋换干煸四季豆。发完又打了一条:尖椒肉丝换糖醋排骨。
对面沉默了大概半分钟。然后罗师傅回了一个字:
林浩把手机放回口袋。他走到灶台前面,闭上眼睛把十道菜在脑子里过了一遍。鱼香肉丝的下锅顺序,回锅肉的火候切换,宫保鸡丁的爆炒时间,水煮肉片的预制流程,干煸四季豆的煸制节奏,糖醋排骨的炸制油温,一道一道排过去,像在脑子里走了一遍灶台。十道菜,三口灶,中午高峰期同时出四到六份。
他睁开眼,开了火,烧了一口空锅。锅底热了,他往里面倒了一小勺油,让油在锅底转了一圈。火候够了。他关了火。
灶台上三口锅已经擦干净挂回墙上,备料台上十份配料碟按明天的出餐顺序码好,从鱼香肉丝到炝炒莲白,一号灶的碟子在最左边,三号灶的在最右边。汤桶里的骨头水已经放干净了,明天早上五点半重新烧。他把备料台擦了最后一遍,关灯之前看了一眼十道菜的排列,没有动。
明天正式开业。
第303章 正式开业
四月二十三号,星期一。晨枫快餐正式开业。
林枫前一天晚上就把开业促销的牌子做好了。Kt板,红底白字,写着开业首周全场八折。他本来想搞满减活动,满五十减十,被林晨拦了。
快餐客单价低,一个人吃一份菜加一碗饭才二十多块,凑不满满减门槛。林晨说得很直接,打八折,客人一算就知道省了多少。
林枫想了想,点了头。他在工地管了十几年预算,算账比谁都在行,但促销方案不是他的强项。林晨做数据分析出身,打折还是满减,哪种更能拉动客流,他用一天的营业数据就能算出来。
早上六点,林浩已经站在厨房里了。他把冷柜里阿伟昨晚备好的食材一盒盒拿出来放在备料台上,按出餐顺序排好。鱼香肉丝的肉丝浸在清水里防氧化,回锅肉的五花肉片码在盘子里,葱姜蒜全剁成了末分装在小碗里。汤锅架在煲汤灶上,骨头汤的底料昨天下午就煲上了,他揭开盖子用勺子搅了搅,汤色发白,面上浮着一层细密的油花。他盖上盖子,把火调到小火保温。
六点四十,小刘到了。他进门先洗手,然后站在出餐台后面把米饭蒸上。六升米的量,够中午一百二十份左右,不够的话第二锅十二点前能赶上。他把汤桶从冷柜搬出来,紫菜蛋花汤的底料是林浩提前调好的,他只需要加热、勾薄芡、撒紫菜和蛋花。
七点一刻,阿伟到了。他换上厨师服,洗手,系围裙,到备料台前开始最后的切配。有些蔬菜必须现切现用,提前切好会氧化出水。他扫了一眼林浩排好的备料盒,没说话,拿起菜刀开始切。刀落案板的声音在厨房里有节奏地响着,林浩在旁边看了一眼他切土豆丝的手法,手腕发力均匀,推切不压切,间距一致。他没说什么,转身去检查灶台的火。
七点半,小吴到了。她在收银台后面开机、测试打印机、核对面上的零钱。菜单灯箱又检查了一遍,十道菜的菜名和价格全对得上。米饭和汤免费,旁边贴了一张开业首周八折的告示。
小芳最后到,七点四十。她把八张桌子又擦了一遍,纸巾盒和调料罐每桌摆正,椅子拉出来对齐桌沿。抹布洗了三遍,最后一遍是用热水拧干的,擦过的桌面没有水渍。
八点,林枫到了。他站在门口看了一眼店内,灯开着、排烟开着、人都在。他没走进去,而是站在外面看了看招牌。晨枫快餐四个字亮着白光,旁边的小字写着川菜·家常·快餐。他盯着那几个字看了几秒钟,然后推门进来,走到收银台旁边站定。
林晨是最后一个到的。他提着笔记本电脑,在角落那张桌子上坐下来。屏幕上打开了一个共享文档,上面是今天的记录模板,时间、人数、菜品、出餐速度,每一个格子都留了空白等他填。
十点四十五分,店里还没来客人。小芳站在用餐区中间,两只手握在一起,看着门口。小吴在收银台后面把零钱又数了一遍。厨房里林浩站在灶台前,火开了一下又关了,确认火力。阿伟在备料台前把最后几份配料碟摆好。安静。只有排烟管道低沉的嗡嗡声和汤锅冒泡的声音。
十一点刚过,来了第一拨客人。三个穿格子衫的年轻人,工牌挂在脖子上,一看就是附近写字楼的程序员。推门进来的时候带了一股室外的热气,门铃叮地响了一声。他们走到菜单灯箱前面站了几秒钟,其中一个对另外两个说:新开的,试试?另外两个点头。
小吴站在收银台后面,看他们还站在灯箱前面,主动开口了:您好,看下菜单。开业期间全场八折。
鱼香肉丝一份,回锅肉一份,水煮肉片一份。三碗饭。
好的,三份菜三碗饭,堂食对吧?
小吴打单。小票从收银机出单口吐出来,穿过玻璃隔断上的传单口滑进厨房。林浩接单,看了一眼,三份,鱼香肉丝、回锅肉、水煮肉片。他把单子夹在灶台上方的夹子上,开了两口灶。
鱼香肉丝和回锅肉同时出。肉丝和五花肉提前备好,调味料按分量分装在小碟子里。他左锅翻炒肉丝,右锅煸五花肉,火候各控各的,两个菜的节奏已经刻进了手里。锅铲翻动的时候油星噼啪作响,鱼香汁浇下去的瞬间,一股酸甜带辣的味道从锅里腾起来,穿过传单口飘进了用餐区。四分钟后鱼香肉丝出锅,五分钟后回锅肉出锅。水煮肉片提前预制了肉片,从下单到出锅四分钟。三道菜,七分钟全部上齐。
小刘在出餐台接了盘子,放托盘,端到二号桌。三个程序员拿起筷子,几乎同时伸向各自的盘子。鱼香肉丝和回锅肉的盘子见底,水煮肉片剩了半碗汤。其中一个在收银台付钱的时候问了小吴一句:你们这汤免费?
对,紫菜蛋花汤,自己盛。米饭也是自助的,不够再加。
他回头看了看汤桶旁边摆着的不锈钢汤碗和饭勺,点了点头,扫码付了钱走了。出门之前掏出手机拍了一张店面的照片。
十一点半以后客人开始多起来。先是零散的两三个人,接着是成群结队的写字楼白领。他们大多两两结伴,工牌在胸前晃,讨论中午吃什么的声音从门口就能听到。有人看到八折的牌子停下来看了几秒,有人直接推门进来了。
小吴打单的速度越来越快。第二拨客人点了鱼香肉丝和宫保鸡丁,第三拨点了回锅肉和麻婆豆腐。小票一张接一张从传单口滑进厨房,林浩看单、开灶、翻炒、出锅,手上的动作没有多余。阿伟在备料台前把配料碟递过来,他接碟、下锅,用完的碟子推到一边,空碟子立刻补上。
中午十二点到一点半,是真正的高峰。林晨坐在角落的桌子上看着手表计时。十一点四十五分到十二点四十五分这一个小时里,店里最多同时坐了二十二个人。八张桌子全满,还有六个人站在门口排队。
小芳在七张桌子之间来回端菜和收盘子。第十分钟的时候她差点被一把椅子绊倒,鞋尖踢到椅腿发出一声闷响。她稳住了,但手里端着的空盘子歪了一下,一只碗差点滑出去。她把盘子放回收银台旁边,深吸了一口气,转身又往餐桌那边走。小刘看到她脚步有点乱,从出餐台后面绕过来帮她接了一趟碗。小芳冲他点了一下头,继续收盘子。
林浩在厨房里连续出了三十四份菜。阿伟在备料台上把每份菜的配料按分量配好放在小碟子里递过来,他接碟、下锅、翻炒、出锅,整个过程像一条流水线。到第三十五份的时候他发现灶台上的配料碟不够用了,阿伟切配的速度跟上了,但摆碟子的空间不够。他在灶台和备料台之间走了两步把用过的空碟子推到水槽里,阿伟立刻补上了新的碟子。三秒钟的停顿,然后继续出菜。
十二点二十分,灶台上的三口锅同时开着。左边炒鱼香肉丝,右边炒回锅肉,中间那口热着新的一批汤。厨房里的温度已经很高了,林浩额头上全是汗,但他没有时间擦。阿伟在旁边把配料碟一个接一个递过来,林浩左手翻锅右手拿铲,两口灶的节奏各控各的。灶台上方的排烟机嗡嗡地转着,把油烟和热气一起抽走。
小吴打了三十七张单子。她后来告诉林晨,中间有两次单子差点打串了,两个客人同时点单,她差点把菜名打反了。好在她对了一下单号才递进厨房,没有出错餐。她在收银台后面的墙上贴了一张纸,上面写着打单前对单号,后来再没犯过这个错。
一点半之后客流开始减少。最后几拨客人吃得很慢,坐在桌上刷手机,小芳收盘子的时候只能等着。到两点,最后一桌客人吃完走了。小芳收盘子、擦桌子,小刘洗汤碗和饭碗。阿伟把备料台上剩下的食材全部整理进冷柜。林浩把灶台擦了两遍,把三口锅里的油倒掉,锅底刷干净。整个厨房恢复了早晨来的时候的样子。
林晨在共享文档上敲下了今天的数字:接待客人六十七人,总营收一千四百九十二元(八折后),平均客单价二十二点三二元。出餐时间平均五分二十秒,最慢的一份水煮肉片等了七分钟。翻台率二点八次。
林枫在收银台旁边算了一笔账。食材成本,今天用掉的肉、菜、调料、米、油,按批发价算大概四百二十块。加上水电燃气大概八十块。毛利大概九百九十二块,毛利率百分之六十六左右。如果去掉八折优惠恢复原价,毛利率能到百分之七十三左右。再减去租金和人工,他没往下算了,开业第一天的数字说明不了什么,看一个月才知道。
林浩从厨房里出来的时候手里端着一碗饭和一碟回锅肉,他自己做的,中午没顾上吃。他坐在角落的凳子上,把肉浇在饭上,几口就吃完了。林晨走过去把收银数据导出了一份给他看。
出餐速度平均五分二十秒。林晨说。
林浩看了一眼数字。水煮肉片拖了后腿。
苏婉昨天说的预制方案你试了没有?
试了。林浩说。
中午用了?
用了。他停了一下。预制肉片四分钟能出锅。
口感呢?
放超过两小时会发柴。
那中午分两批预制。十一点一批,十二点半一批。
林浩点了下头。他站起来把碗放回水槽,走回厨房。灶台已经凉了,锅挂回墙上,备料台干干净净。他在备料台前站了一会儿,把明天要备的料在脑子里过了一遍。鱼香肉丝和回锅肉各备六十份的量,水煮肉片备四十份,其余各备二十五份。备料不够可以临时加,但高峰期切配跟不上会断菜。
他在笔记本上写下:鱼香肉丝60份,回锅肉60份,水煮肉片40份,其余25份。合上笔记本放进口袋。
厨房的灯关了。店面里只剩收银台的小灯亮着,小吴在核今天的账。林枫站在门口,把开业首周全场八折的牌子往门口挪了挪,让路过的行人更容易看到。
第304章 开业第一周
开业的八折优惠持续了七天。七天里林晨每天中午都坐在角落那张桌子上,面前打开着笔记本电脑。他不插手厨房的事,也不管收银台,他只做一件事,记数据。
每天的营收和客流量他按时间轴排好,画成折线图和柱状图。出餐时间配菜品销量做了一张表,翻台率配食材消耗做了另一张。到第七天晚上,他有了完整的第一周数据。
周一那天来了五十二个人,营收两千一百四。林晨坐在角落把数据录进表格,看了眼折线图,没有表态。周一是开业第二天,客人比试营业的时候少了三分之一,八折的吸引力没有想象中大。周二来了五十六个人,营收两千三百八,比周一多了两百块,增长幅度不大但曲线是往上的。周三六十一人,两千八百块,终于站上了两千五。周四十二十四人,三千二。周五冲到了三千四百二,客流量七十三人,是这一周的峰值。周六的客流反而降了,四十八人,两千五百块。周日更少,三十九人,一千九百多。写字楼的人周末不上班,这个区域的周末客流天生就弱。
日均营收三千零四十二元。八折后折算成原价大约三千八百块。去掉八折因素,日营收在三千上下浮动,周三冲了两千八,周四周五冲到了三千二,周末反而降到了两千五。中午的营收占全天百分之八十二,晚餐时段的客流稀稀拉拉,六点以后基本没人。林晨看着折线图上的周末断崖,在旁边写了一行备注:晚餐客群尚未形成,暂不考虑延长营业时间。
每天晚上关了店,林枫都在收银台旁边算成本。食材成本每天平均八百一十块,占比百分之二十六点七。人工成本每天七百六十七块,五个人加上林枫不算薪资、林浩的六千按天折算。加上水电燃气每天约一百三十块,租金按天折算八百三十三块。算下来每天的总成本大约两千五百四十块,日均毛利润五百出头。七天的毛利润加起来不到四千块。
林枫把计算器放下,看了一眼总数。第一周,去掉八折的优惠差额,基本是保本。按原价卖,每天能赚个五六百。
林浩在旁边听了一耳朵,没说话。他正在用筷子把一碗水煮肉片的汤底拨开看肉片,中午自己做的试吃,他在检查预制肉片的口感。肉片在汤汁里泡了四十分钟,表面有轻微的发白,但用筷子夹起来的时候还能保持完整。他夹了一片放进嘴里嚼了两下,肉质的弹性还在,没有发柴的感觉。他把肉片放回碗里,在笔记本上写:预制肉片泡汤40分钟,口感可接受。
但第一周有开业新鲜感。林晨把电脑屏幕转过来,上面是一张客流量折线图。周二到周五每天客人都在增加,周六反而降了。写字楼白领为主,周末他们不来这个区域。
那周末怎么办?小吴问了一句。她站在收银台后面还没下班,在算今天的对账单。
周末先不考虑。把周中五天的营收做上去,周中一天的顶周末两天。林晨的回答很干脆。
林枫在旁边听了一下:周末能不能推个午市套餐?吸引附近居民。
以后再说。林晨说,现在先把午市做稳。
另一个问题是等位时间。高峰期十二点到十二点四十五分之间,八张桌子全满,排队六到八个人。小芳收盘子的速度跟不上翻台需求,客人吃完站起来走了,她得先收碗擦桌再摆新餐具,才能让下一桌坐下。从客人起身到下一桌坐下,最快也要两分钟。小芳跑得满头汗,收完一张桌子转身又跑下一张,手上的动作已经是最快速度了,但流程本身限制了效率。两分钟在高峰期意味着收入的损失,八张桌子每分钟少翻一次,就少了大概一百五十块的营收。
小芳收盘子太慢了。林枫直说。
小芳低着头没吭声。她每天中午跑得最多,收盘子上菜,腿跑细了一圈,但她的手速确实跟不上。她才十九岁,之前没有餐馆工作经验,全靠快和稳在撑。
林晨想了想,开口了:流程有问题。小芳收盘子要走到桌子旁边,收完碗还得擦桌摆餐具,全做完才去下一桌。如果碗直接放到出餐台旁边的周转区,小刘顺手放进水槽,小芳每次走到桌子旁边只做两件事:收碗和擦桌。筷子不用每桌换,用消毒筷笼,客人自己拿。
林枫想了想:把收碗和洗碗分开?
对。收碗的人不管洗碗,洗碗的人不管收碗。碗从桌子到水槽只经过一个中转站,不绕路。
小芳在旁边听见了,她没说话,但记住了。
林浩在厨房里也听到了这段话。他没插嘴,但第二天早上他在备料台旁边放了一个不锈钢方盘,专门用来接小芳收回来的碗。方盘放在出餐口右手边,小芳走三步就能把碗放进去,不需要绕到水槽那边去兜一圈。小刘看到方盘,立刻明白了,他在出餐台旁边也放了一个空位,专门放要洗的碗碟。碗从客人桌面到水槽,中间只经过一个方盘,周转快了,水槽那边的节奏也跟着顺了。
第二天中午高峰期,小芳收盘子的速度从两分钟一桌压缩到了一分二十秒。节省下来的四十秒乘以八张桌子,一轮翻台快了五分钟。小芳中午跑完最后一趟的时候,脸上的汗贴着刘海,但嘴角有一点翘。她没说什么,把最后一摞碗放到方盘里,转身去擦下一张桌子。
周三出了个小插曲。中午高峰的时候,阿伟切配的速度突然慢了下来。林浩回头看了他一眼,阿伟的左手食指上缠着创可贴,切菜的时候只能用三根手指按住食材,速度比平时慢了至少三成。林浩没说话,但他把出餐节奏调了一下,两口灶不再同时出两份不同的菜,先出一份再出一份,给阿伟多留几秒钟的备料时间。
中午忙完之后,林浩走到备料台前面,把阿伟的刀拿起来看了一下。刀刃没有问题,是阿伟自己切菜的时候走神了。他把刀放回去,从抽屉里拿了一卷新的创可贴递给阿伟。
小心点。他说。
阿伟接过来,点了一下头。
第四天阿伟的手好了,切配速度恢复到了正常水平。林浩在笔记本上记了一行:周三阿伟手伤,出餐速度受影响,已恢复。
第三个问题出在菜品上。开业第一天,糖醋排骨卖得很好,出乎林浩的预料。酸甜口味确实吸引了不吃辣的客人。但干煸四季豆点单率偏低,排在第七位,比酸豆角炒肉末还低。
林浩想了两天。第三天早上六点,他在厨房里把干煸四季豆的做法改了。加大了肉末的比例,四季豆从切段改成斜切,入味更深,炒的时候多煸三十秒让表皮的皱褶更明显。他做了一盘出来自己尝,又让阿伟尝了一口。
比之前香。阿伟说。
林浩把火关了。
改了之后点单率上升了百分之十五,升到了第五位。
周五那天出了件事。一个客人端着水煮肉片走到门口,忽然停下来皱着眉往碗里看,肉片上面浮着一点白色的东西。他端着碗走回收银台:这肉片上面有白点,是什么?
小吴看了一眼,立刻叫了林浩出来。林浩走到门口看了一下,认出来了,那是预制肉片在热汤里放久了之后蛋白质凝固的白色颗粒,不影响食用但影响观感。他当场给客人换了一碗新做的水煮肉片,没有用预制肉片。客人吃完了走了,走的时候表情正常。
林浩回到厨房,在笔记本上写了一行字:水煮肉片预制时间上限90分钟,超过的倒掉重做。
林晨在数据表上标了一行备注:品质问题一次,已处理。
苏婉那天晚上来了一趟。她看了看林晨电脑上的数据,又去厨房看了一眼林浩备料的情况。她站在灶台旁边看了两分钟,没说话。林浩正在把明天要用的五花肉码进保鲜盒,余光扫到她站在旁边,也没说话。
阿伟的创可贴换了没有?苏婉问了一句。
换了。林浩说。
苏婉点了下头,走到收银台那边跟小吴聊了几句。她问小吴这几天打单有没有出过错,小吴说没有,打单前对单号的规矩她一直在执行。苏婉又看了看店里的动线,从收银台到出餐口到餐桌,走了一遍,然后走了。她明天还要上班,不能待太久。
开业第一周的最后一个晚上,七个人一起在店里吃了顿饭。林浩做了六道菜,鱼香肉丝和回锅肉,再加干煸四季豆和糖醋排骨,麻婆豆腐和蒜蓉西兰花。小吴在旁边看着菜单说了一句:浩哥,开业第一周你做的菜跟你第一天做的完全不一样了。
林浩正在盛饭,头也没抬。哪儿不一样。
稳了。
林浩端着碗走到用餐区坐下。林枫给他倒了一杯啤酒,也给林晨倒了一杯。阿伟和小刘坐在旁边喝饮料,小芳在收银台后面啃鸡腿。
林晨合上笔记本电脑,看了一眼在座的人。
第一周,营收两万一千三百块。去掉八折差额,按原价算大概两万六千六百。去掉食材和水电、人工、租金,毛利在四千左右。他停了一下,比预期差一点。但第一周是试水,菜品能不能稳定、出餐速度能不能提上去,这些比多赚几千块重要。
林枫端着啤酒杯点了下头。他管了十几年工地预算,第一个月的账面数据说明不了什么。真正重要的是流程能跑通、人能稳住。
林浩把碗里最后一口饭扒干净,放下碗。他没喝完那杯啤酒,明天还要早起备料。
明天六点到。他跟阿伟说了一句。
阿伟点头。
林浩站起来,走进厨房把灯关了。店面里小吴还在核对今天的账单,收银台的小灯亮着。门口的招牌灯还开着,晨枫快餐四个字映在夜色里。
第305章 口碑传播
八折优惠结束后第二周的周一,营收掉到了两千三百块。比上周少了将近一千块。
这个数字并不意外。林晨在数据表上标了一行:八折结束后自然回落,预计恢复期3到5天。他的预测是对的。周二两千六,周三两千九,周四三千一,周五三千四。客人开始回来了,而且这次是原价,没有折扣。
周一那天中午只来了三十八个人。小吴在收银台后面打了三十八张单子,打单的速度明显比上周慢了。小芳收盘子也不急了,八张桌子最多同时坐了十二个人,翻台完全没压力。厨房里林浩的出餐速度从五分二十秒降到了四分钟以内,因为单子少了,每份菜都能专心做。
林晨坐在角落的桌子前面,把周一的数字录进去:客流量38,营收2300,出餐时间3分50秒,翻台率1.5次。他看了一眼这行数字,在备注里写:折扣结束后首日回落,客流降42%。
周二中午来了四十五个人。营收比周一多了三百块,但离上周的平均水平还差得远。小吴注意到一个现象:来的客人里有大概三分之一是上周来过的,他们进店直接走到收银台报菜名,不用看菜单,点单速度比新客快了一倍。另外三分之二是新客,在灯箱前面站三十秒到一分钟,然后点一两道最热门的菜试试。
周三中午来了五十二个人,营收两千九。比周二又多了三百。小吴打单的时候发现回头客的点单速度越来越快,他们进店就知道自己要吃什么,不需要看菜单犹豫。她把这个观察告诉了林晨,林晨在数据表上加了一列:回头客占比。
周三的回头客占比是百分之四十二。周四上升到百分之四十八。周五到了百分之五十二。回头客占比从第一周的百分之三十五上升到了第二周的百分之五十二,这个数字说明第一周的客流不完全靠八折拉动,有一部分人在原价的情况下愿意再来。
口碑传播的起点是一个叫张鹏的程序员。他在科技园南区一家做云计算的公司上班,周一到周五中午在公司楼下吃饭,吃遍了方圆五百米内所有的快餐店。第一周他在晨枫吃了两次鱼香肉丝和回锅肉,八折后觉得性价比不错。第二周八折结束了,他还是来了。周三中午他点了一份回锅肉加一碗饭,二十三块钱。吃完之后他在公司群里发了一条消息:科技园中区新开的那家川菜快餐,回锅肉正宗。
就这么一句话。没有感叹号,没有表情包。但这条消息在一个三百人的技术群里被七个人看到了,其中三个第二天中午来试了。这三个人又各自在自己的部门群里说了类似的话。到了第二周周五,中午十二点到十二点半之间的排队人数从零变成了四到五个,八张桌子全满,门口站着一小排人等位。
周四中午来了一个女生,短发,穿黑色卫衣,工牌上写着产品部。她走到收银台前面看了三秒钟菜单,然后点了一份鱼香肉丝加一碗饭。吃完之后她把碗放到收银台旁边的回收区,对小吴说了一句:你们家米饭好吃。然后走了。小吴在收银台后面愣了一下,把这条反馈告诉了林晨。林晨在数据表上标了一行备注:米饭口感获正面反馈。
林浩也注意到了一个变化。以前中午高峰期他的备料是按四十到五十份的量准备的,现在他开始备六十份。鱼香肉丝和回锅肉的料备得最多,因为这两道菜的点单率最高。麻婆豆腐的点单率也上来了,很多客人把它当成必点的配菜。水煮肉片由于出餐时间长,点单率排在第四,但它的客单价最高,利润也最好。
周四晚上,林浩在厨房里把麻婆豆腐的做法微调了一下。他减少了花椒的用量,增加了一点糖,让口感更偏鲜香而不是纯辣。他自己尝了一口,又让阿伟尝了一口。阿伟说:比之前顺了。林浩没回应,把调整后的配料比例写在笔记本上:麻婆豆腐花椒减20%,糖加5%。
周五中午十二点十五分,店里坐满了人。小吴在收银台后面一刻不停地打单,小票从传单口不断涌进厨房。林浩开了三口灶,两口炒锅同时出鱼香肉丝和回锅肉,一口煲汤灶上热着汤。阿伟在备料台前的速度越来越快,他不需要林浩喊要什么料了,看一眼夹在灶台上方的单子就能把对应的配料碟递过来。小刘在出餐台把碗碟摆好,林浩出一份他接一份,端出去放在出餐台上,小芳跑一趟取走送到客人桌上。
十二点二十三分,来了一个新客人。是个女的,三十出头,穿灰蓝色职业装,工牌别在胸前。她站在门口看了一眼菜单,然后走进来坐到靠窗那张桌子上。小芳走过去递了菜单,她扫了一遍,点了一份麻婆豆腐和一碗饭。
辣吗?她问了一句。
微辣。小芳回答。
三分钟后麻婆豆腐端上来了。她夹了一口,放在嘴里嚼了两下,然后又夹了第二夹。她没说话,低头吃饭。吃了大概十分钟,碗见底了。她站起来走到收银台前面扫码付了钱。
小吴看了她一眼:您觉得怎么样?
她掏出手机,对着碗和店面拍了一张照片。然后说了一句:我明天还来。
第二天她真的来了。第三天她也来了。到了第二周的周五,她已经是第五次了。小吴记住了她的脸和她每次点的菜,麻婆豆腐,偶尔换成回锅肉。她叫什么名字没人问过,但她在店里有了一个固定位置:靠窗二号桌。
类似的回头客越来越多。有个穿格子衬衫的男生每天中午十一点四十就到,永远点鱼香肉丝加一碗饭。有个戴眼镜的中年男人喜欢点酸豆角炒肉末,吃完之后会盛一碗免费的紫菜蛋花汤慢慢喝。还有一组四个人,是同一个公司的,每天中午一起过来占一张四人桌,各点各的菜,吃完一起走。他们离开的时候桌上干干净净,碗和筷子自己叠好了放在桌角,不用小芳特别收盘。
小芳对回头客有自己的判断方式。她不记脸,她记点单习惯。走进来直接报菜名的是老客,站在灯箱前面看十秒以上的是新客。周三那天中午她一口气收了八桌的碗,其中有五桌是老客吃完了走的,碗底干干净净,说明菜合口味。剩下三桌碗底剩了一点,但剩的是汤不是菜,说明分量刚好。
这些回头客构成了晨枫快餐最稳定的收入基础。林晨在数据表上加了一列回头客占比,第一周百分之三十五,第二周百分之五十二,第三周他预期会到百分之六十以上。
到了第二周结束的时候,日均营收稳定在了三千四百块。食材成本百分之二十七,人工和租金加上之后,每天能净赚五六百块。比第一周好,但离赚钱还有距离。
林枫在周五晚上的复盘中算了一笔账:按现在的营收水平,一个月大概十万出头。去掉食材三万左右,人工加租金将近五万,水电燃气五千,利润大概一万五到两万。这个数字比预期少,我们原来算的第一个月净利润四万。
差在哪里?林浩问。
翻台率。林晨翻开数据表,中午高峰期平均翻台二点八次,要做到三点五次才能达到利润目标。差的那零点七次就是营收缺口。
怎么提高?
两个方向。林晨在电脑上拉出一张流程图,压缩出餐时间,目前平均出餐五分二十秒,水煮肉片拖后腿。如果水煮肉片的预制方案能稳定在四分钟,平均出餐时间能降到五分钟以内。另外压缩翻台时间,目前小芳收盘子加摆新餐具需要一分二十秒,如果能把流程再优化到一分钟以内,翻台速度还能再快。
林浩站起来走进厨房。一分钟后他拿着那本笔记本走出来,翻到今天的记录,递给林晨看。上面写着:水煮肉片预制方案已稳定,明天中午实测。
林晨看了,点了一下头。
小吴在收银台后面整理今天的账单。她数了数回头客的人数,今天六十七个客人里有三十一个是上次来过的。回头率差不多百分之四十六。她把数据报给了林晨,然后说了一句:有个客人跟我说,他在大众点评上给我们写了评价。
写了什么?
回锅肉是我吃过最像家里做的。
林晨记下了这条反馈。然后他打开手机,搜了一下晨枫快餐。大众点评的页面上有两条评价,一条是八折期间写的,给了四星半,说味道不错、性价比高。另一条就是今天刚写的,给了五星。
他看了一眼评分,关了手机。明天中午还会有客人来,这个比评分实在。
林浩从厨房里出来的时候,手里拿着笔记本。他翻到明天的备料页,看了一眼上面的数字:鱼香肉丝70份,回锅肉70份,水煮肉片45份,麻婆豆腐50份,其余各30份。比这周的备料量又多了十份。他把笔记本合上,放进围裙口袋里。
小吴把今天的账单核对完了。她抬头看了一眼墙上的时钟,九点十分。店里已经收拾干净了,灶台擦了两遍,备料台上的东西全收进了冷柜,地面拖了三遍,连门口的地垫都翻过来拍了灰。她把收银机锁好,从收银台后面走出来。
林枫还在门口,把灯箱的开关按了一下又按了一下,确认灯箱的定时器设定正确。他抬头扫了一眼招牌,晨枫快餐四个字在夜色里亮着。他低头把定时器调到早上六点自动开,然后锁了门。
五个人一起走出店门。阿伟骑电动车先走了,小刘和小芳走另一个方向坐公交。小吴在路口等出租车。林浩走到路口的时候,苏婉发了一条消息过来:明天中午过来吃饭。
林浩回了一个字:好。
他把手机放回口袋,朝住的方向走了。街灯照在路面上,他的影子拖得很长。明天六点,他又要站在灶台前面了。
第306章 生意好转
第三周的周一,中午十一点五十,店里已经坐了六桌客人。
这个速度比前两周快了整整二十分钟。以前十二点整才有第一波客人进门,现在十一点四十就有人到了。小吴站在收银台后面看着门口,一个穿深蓝色工装马甲的男生推门进来,扫了一眼菜单就说:鱼香肉丝,打包。小吴按了收银机上的对应键,整个过程不到十秒。男生掏出手机扫码付钱,拎着打包袋走了,从进来到出去总共不到三分钟。
小吴把这笔单子录入系统的时候看了一眼时间,十一点四十三分。她注意到最近几天十一点半到十二点之间进来的客人越来越多,而且点单速度明显更快。他们不翻菜单,进门直接报菜名,吃完就走,动作很快。有个女生连续三天都来,每次点一样的鱼香肉丝加一碗饭,进门就往最里面那张桌子走,坐下后抬头看小吴一眼,小吴直接打单,前后不超过二十秒。
林晨坐在收银台旁边的角落里,笔记本电脑开着数据表。日均营收从三千四涨到了三千八,第四周冲过了四千。他在图表上画了一条趋势线,第二周末到第三周中段,斜率变陡了。他在曲线拐点旁边写了一个注释:口碑效应开始发力,预计5月日均可达5000。
旁边搁着一杯凉透的茶,他端起来喝了一口又放下,继续看数据。折线图上每天的营收点在往上走,散点的分布也越来越宽。他把周一到周五的数据分开拉了两条线,周一的线明显低一截,周五的线高高翘起。波动在变大,但均值在往上走,这才是关键。
五月份的第二个周三,日均营收第一次冲过了五千块。
那天早上林浩六点就到了店里。他把汤桶里的骨头换了一遍,新骨头提前泡了四个小时,下锅之后汤色比平时更白。阿伟七点到的时候看到备料台上的料碟已经全部码好了,数量也比平时多了十份。他没问为什么,系上围裙走到自己的位置,拿起菜刀开始切土豆丝。切了二十分钟,他又开始切胡萝卜丝和青红椒,刀落在案板上的声音很有节奏。
中午十二点到一点的六十分钟里,林浩出了七十二份菜,开业以来的最高纪录。他全程没停过,左手翻锅右手下料,两口炒锅交替出菜。阿伟递料的节奏跟他的出餐频率完全咬合,林浩的手刚往左边灶台方向一动,阿伟已经把下一份配料碟递到了灶台边上。小刘在出餐台接菜盘的手一直很稳,端出去的盘子没洒过一滴汤。
厨房里只剩下刀声和火声交替着,没有人开口说话。阿伟把配料碟递到灶台边上,林浩接过来下锅,小刘从出餐口端走成品。三个人像咬合的齿轮,每个环节都不留空隙。
一点十五分的时候出餐口同时压了四张单子。林浩看了一眼夹子,鱼香肉丝、回锅肉、宫保鸡丁、水煮肉片,四道菜两个灶台同时出。一号灶下鱼香肉丝的料碟,二号灶回锅肉先下锅煸,阿伟已经把宫保鸡丁的花生米和黄瓜丁配好放在灶台右边。林浩翻了一下一号灶的锅,肉丝在锅里滑了一圈裹上酱汁,颠锅两次收汁,小刘端走。二号灶的回锅肉还在煸,他顺手把宫保鸡丁的料碟推到二号灶边,回锅肉出锅的同时鸡丁下锅,两道菜衔接不到三十秒。水煮肉片提前预制好的肉片下锅,四分钟出头齐了。小刘端着四个盘子从出餐口出去的时候,外面排队等位的人已经等了三分半。
小芳收盘子也找到了窍门。她不再每桌跑一趟收银台再跑一趟水槽,而是把碗碟摞在一个托盘上,一次端走四桌的量,放在出餐台旁边的周转区,小刘顺手推进水槽。这个周转区是林浩第二天早上调整的。他把备料台旁边的一个不锈钢置物架从灶台左手边挪到了出餐口右手边,小芳放下碗碟之后转身两步就能拿到干净的碗筷摆到下一桌上。一个动作省了三步路,高峰期一分钟内能多翻一张桌子。小芳试了一天就习惯了新路线,收盘子的速度比之前快了将近一倍。
阿伟到的时候发现架子换了位置,也没问为什么。他系上围裙走到备料台前面,看到配料碟的码放顺序也变了,最常用的鱼香肉丝料碟放在最顺手的位置。他拿起菜刀开始切菜,刀落在案板上的声音很稳很轻,跟灶台上汤桶里冒泡的声音交替着,厨房里有一种不需要开口说话的默契。
林枫在周三晚上看账的时候算了一笔数。他把计算器上的数字按了两遍,确认没有算错,才开口:如果日均五千能稳住,月营收十五万。食材成本按百分之二十七算是四万零五百,人工两万三,租金两万五,水电燃气六千。月净利润五万五。
他把计算器上的数字又看了一遍,把红笔在表格最后一行划了一道线,在底下写了个数字。
第一个月我们算的是四万。林晨看着屏幕上的数据表说。
这个月比上个月好。林枫顿了一下,但还不稳。五千是周三的数据,周五可能冲到五千五,周一可能只有四千二。你得看平均数。
林晨把四周的日均营收调出来,从第一周的三千出头到第四周的四千七,涨了百分之五十五。周平均在往上走,但波动也在变大,周一和周五之间能差一千多块。
波动的原因是客群结构还没固定。林晨指着折线图上的波谷说,周一低是因为很多人周末在家吃了周一自己带饭。周五高是快到周末了想犒劳自己。这个波动正常,关键把日均均值拉上去。
怎么拉?
翻台率。林晨切了一张新图出来,目前中午高峰翻台三点二次。如果能到四点零,日均就能稳在五千以上。
林枫看了一眼屏幕上的数据,点了下头没再说话。他把计算器放回口袋,站起来去门口抽了根烟。林晨继续在电子表格上调整参数,把翻台率从三点二拉到四点零,日均营收的预测线从五千跳到了五千八。
林浩在厨房里听到了这段对话。他没有参加讨论,第二天早上他让阿伟把所有菜的备料量从六十份加到了七十五份。鱼香肉丝和回锅肉各加到了八十份。中午高峰期他从备料台前走过的时候,看到每份配料碟都码得整整齐齐,阿伟的刀工比两周前快了不少。他在备料台前面多站了三十秒,看了一眼配料的比例和摆放顺序,然后点了下头就回到灶台前。
小吴也在做调整。她把菜单灯箱上的顺序重新排了一遍,鱼香肉丝和回锅肉放在最上面一行,客人三秒钟就能找到最热门的菜。点单的时候她不再问您要什么,而是问鱼香肉丝还是回锅肉?给一个选项比问一个开放问题快五秒钟。五秒钟乘以四十个客人就是三分钟,高峰期三分钟意味着多翻一张桌子。
有个穿深蓝色polo衫的男生连续来了三天,每天都是鱼香肉丝加一碗饭。第四天他带了一个同事来,两个人点了一份鱼香肉丝和一份回锅肉。小吴记得他,因为他从来不看菜单,推门进来就直接走向最里面那张桌子,坐下后抬头看她一眼,她就知道该打单了。第五天他又来了,这次点了一份水煮肉片。小吴在收银机上多按了一个备注键,在单子后面加了一个星号。
周五那天营收冲到了五千八百块。小吴在收银台后面数钱的时候手有点抖,今天的单子实在太多了。她在收银机上按了三百多次,打单和收钱的流程已经形成肌肉记忆。看到菜名就按对应键,听到金额就收钱找零,手指不需要经过大脑。最后一单打完的时候她揉了揉手指关节,收银机上的数字定格在五千八百零三。
下午两点关门之后,店里安静下来。小吴把收银台擦了一遍,把零钱盒归位。小芳把最后几桌的碗碟收进水槽,擦干手解下围裙挂在门后面的钩子上。阿伟把备料台上的配料碟洗干净码好,菜刀插回刀架。厨房里只剩下汤桶里的小火还在烧,骨头汤冒着极细的气泡,咕嘟咕嘟的声音很轻。灶台上的油渍已经擦干净了,不锈钢台面在灯光下反着光,三口锅倒扣在灶上,锅底还带着余温。
林浩坐在备料台旁边,手里拿着那本笔记本。他翻到今天的记录页,写下数据:今日出菜七十六份,平均出餐时间四分五十秒,水煮肉片预制方案稳定在四分钟。今天中午的营收创了新高,仅午市一餐就一千八百块,八张桌子全满,门口还有三个人排队等位。林枫在收银台后面记了一笔,还在手机上搜了一下快餐店排队管理。
然后他把明天要备的料写在下一页上。鱼香肉丝和回锅肉各八十份,其余菜品比上周多备十份的量。
他合上笔记本,站起来走到门口,看了一眼灯箱上晨枫快餐四个字。转身回了厨房。灶台要擦,锅要刷,明天还要早起。
那个周五之后,林浩调整了中午高峰期的出菜策略。他把预制量从四十份加到了四十五份,同时让阿伟在十一点半之前把所有配料的碟子码好,不等最后一刻再切。这样他开火的时候不用等备料,手一伸碟子就在旁边。时间省了二十秒,二十秒乘以五十份菜就是十六七分钟。林浩没有把这件事跟任何人说,只是第二天中午出菜的时候阿伟发现备料碟已经排好了,他看了林浩一眼,林浩没看他,手已经在翻锅了。
出了店门,夜风从巷口吹过来,带着一点烧烤的烟味。
第307章 午餐高峰
六月第二个周三,中午十一点四十五分,八张桌子坐了七桌。
小吴在收银台后面打了一份单子递进厨房,转头又打了一份。厨房夹子上的小票越来越多,林浩在灶台前面扫了一眼,脑子里已经排好了出餐顺序。第一份鱼香肉丝已经在锅里了,第二份回锅肉等第一份出锅就下料。
两口炒锅同时开火。左边锅出鱼香肉丝,右边锅出回锅肉。阿伟把配料碟递过来的速度跟林浩翻炒的速度完全合拍,他看到林浩的左手往左边灶台方向一动就知道要换锅了,右手已经在备料台上拿好了下一份的碟子。小刘在出餐台旁边把空碗摞成两摞,汤桶里的紫菜蛋花汤正在小火保温,勺子放在桶沿上,伸手就能盛。
十一点五十五分,最后一桌空桌子被坐满了。厨房里的油烟从锅沿翻起来又被油烟机吸走,灶火的声音和排烟机的嗡嗡声混在一起,林浩的叫菜声从里面传出来,穿透整个厨房。然后门口开始排队。
六个人。第一个是穿深蓝色polo衫的男生,工牌挂在脖子上,他扫了一眼门口的排队队伍,犹豫了两秒钟,还是站到了队伍最后面。第二个人在他后面三米远的位置也站住了。陆陆续续又来了几个人,队伍排到了店门外面的人行道上。
小芳在用餐区里开始加速。她收盘子和擦桌子的速度比上周又快了一些,一个桌子从客人站起来到下一桌坐下去,她用了五十五秒。这是她最快的一次。擦桌的时候抹布翻了两面,先湿面擦油渍再干面擦水痕,碗筷从收走到摆好整套动作一气呵成。但排队等位意味着至少要翻两张桌子才能让所有人坐下,高峰期一张桌子翻台至少需要十五分钟,因为客人吃饭需要时间。
十二点零三分,一个客人端着空碗走到收银台前面扫码付钱。小芳立刻跑过去收盘子。十五秒之后,那张桌子擦干净了,新碗筷摆好。排队的第二个人坐了下来。
厨房里林浩的节奏没变。他两口锅交替翻炒,一边看单子一边叫菜名。鱼香肉丝一号桌回锅肉三号桌。他的声音不大,但穿透了油烟机的轰鸣声传到出餐口。小刘听到菜名就把对应的碗碟摆好,等林浩出锅端到出餐口的时候,饭和汤已经就位了。
十二点十五分,排队人数到了八个人。门口的队伍从店门口一直排到人行道的树荫下。林枫本来在门口抽烟,看到队伍排出来了,他灭了烟走到收银台旁边。他跟排在前面的两个人说了一句:大概等十分钟。然后转身进了厨房,对林浩说了一句:门口排了八个人。
林浩没回头。他手里的炒锅正在出回锅肉,五花肉在锅里煸出油脂的滋滋声盖过了林枫的话。他只说了一个字:
他加快了出餐节奏。两口炒锅交替使用,一口锅出完菜之后立刻刷锅热油炒下一道,中间不留空隙。阿伟的配料碟已经在备料台上排成了两列,林浩出锅一个空碟子推到水槽方向,伸手拿下一列的碟子就下锅。左手出锅右手下料,两口灶之间的切换快得像流水线上的机械臂。
十二点二十分,出餐速度从五分钟一份压缩到了四分半。十二点二十五分,四分十秒。林浩的额头渗出一层细汗,但他没有擦,两只手都在灶台上忙着。翻锅下料,出锅叫号,每一秒钟都被填满了。阿伟的刀速也提到了最高,切好的葱姜蒜分装在小碟子里,一碟递过去林浩接着就下锅,中间没有一秒钟空隙。
十二点三十分,排在门口的八个人全部坐下了。
小芳长出一口气,把最后一张翻好的桌子上的碗筷摆正。但她没来得及歇,新坐下的客人已经开始点菜了,小吴的收银机又开始打单。
但新的问题出现了。小吴打单的速度跟不上客人的点单速度,两个人同时在收银台前面等。她打完一个人的单子,第二个人已经有点不耐烦了。她把第二个人的菜名先记在便签纸上,等第一个人付完钱再录入收银机。这样厨房不会等单,但便签纸上的单子容易跟收银机对不上。
小吴的便签纸已经写了七张了。她把每张便签按顺序排好,出完一份菜就划掉一张,手里还剩四张没打进系统。她一边打单一边用余光扫便签纸上的字,怕漏掉任何一份。收银台上便签纸排成两排,每张上面写着桌号和菜名,字迹越写越潦草,最后几张她自己都差点认不出来。
十二点四十分,一个客人端着水煮肉片走到收银台前面。你们这个水煮肉片等了快十分钟了。
小吴抬头看了一眼厨房方向。水煮肉片出餐时间确实会长一些,大概五到六分钟。
我等了快十分钟。客人的语气不好,但声音不大。他穿着灰色的衬衫,工牌别在领口附近,午休时间有限。
非常抱歉,今天人比较多。小吴从收银台下面拿了一瓶矿泉水递过去,送您一瓶水,不好意思。
客人接过矿泉水,没再说什么,端着水煮肉片走到座位上吃了。小吴把他的桌号和等餐时间写在便签纸上,用红笔圈了一下。九分钟。她瞥了一眼厨房方向,林浩的灶台上两口锅同时在出菜,烟从油烟机下面翻出来又被吸走。
十分钟后小吴把这个数据报给了林晨。林晨在数据表上记了一行:水煮肉片等餐投诉一次,等餐时间约九分钟。他在旁边加了一个备注:水煮肉片预制量需增加。他把这个备注截了图发给林浩的手机,没有多说话。
林浩在厨房里也听到了那个客人的投诉。他没说话,但把水煮肉片的备料量从提前预制四十份调成了四十五份。多备五份有风险,过了两个小时的预制肉片口感会下降。但五份肉片的食材成本不到十块钱,而多备的这五份让水煮肉片的出餐时间从七分钟压缩到了四分半。
十二点四十五分,又一个客人来问水煮肉片。这次小吴在便签纸上写了个字递进厨房,林浩看到后从冷藏柜里拿出一份预制肉片,四分半钟出了菜。他起锅的时候手腕一抖,水煮肉片的红油在碗里晃了一下,香菜撒在最上面,颜色分明。客人端着水煮肉片走回座位的时候,脸上没有不耐烦的表情。
小吴在收银台后面松了一口气。她把便签纸上已经出完的几份划掉,剩下三份还没打进系统的单子重新排了一下顺序,确保不会漏单。
十二点五十分,最高峰过去了。门口没有排队的人了。八张桌子坐满了七张,最后一张桌子刚被小芳擦干净还没人来坐。林浩在灶台前面站了整整一个小时没有移动过,此刻他关了左边那口炒锅的火,只留右边一口在出剩下的几份单子。阿伟放下菜刀,甩了甩手,右手食指因为握刀时间太长,指节有点发僵。小刘把出餐台上最后几个空碗摞好,拿抹布擦了一下台面上的油渍。
一点十五分,最后一桌客人吃完走了。小芳把碗碟收进水槽,碗碟碰在一起发出清脆的声响,水槽里的水开始流起来。小吴把收银机的当日汇总打了出来,小票从机器里吐出来,长长的纸条上印满了数字。一点三十分,店门上挂了午休中的牌子。
林浩走到备料台前面坐下来,从口袋里掏出笔记本,在今天的记录上写了一行字:
高峰期出餐76份,最慢等餐9分钟(水煮肉片),明天预制量加到50份。
他合上笔记本,拿起一瓶矿泉水喝了两口。厨房很安静,只有汤桶里的小火在烧,骨头汤冒着极细的气泡。他看了一眼汤桶的液位线,还剩三分之一,够下午加餐用。他站起来拿起抹布开始擦灶台,阿伟在旁边切明天要用的葱姜,刀声和抹布擦铁板的声音交替着,厨房里又恢复了下午的节奏。
小芳把最后几张桌子擦干了一遍,从柜台下面拿出明天的菜单核对了一遍。小吴把收银机的钱数了一遍,跟汇总单上的数字对上了,把零钱盒归位。林枫从门口走进来,扫了一眼收银台上的汇总单,拿起桌上的计算器按了几下,把数字记在自己手机备忘录里。
林晨把电脑合上,端起那杯凉透的茶走到水槽边倒掉。他把杯子洗了一遍放回架子上,转身对林浩说:今天水煮肉片的投诉我记了,预制量你调了?
四十五份。林浩头也没抬,手里还在擦灶台。
明天加到五十。林晨说完就走到门口,推门出去了。
林浩把灶台擦完了一遍,又从水槽下面拿出一块干净的抹布擦第二遍。灶台上的铁板被擦得发亮,映着厨房顶灯的光。他把抹布拧干挂在水管旁边,目光落在备料台上码好的配料碟上,走到出餐口扫了一眼外面的天。下午三点,太阳偏西了,人行道上没什么人。
他回到灶台前面,把明天的预制计划在脑子里过了一遍。水煮肉片从四十份加到五十份,鱼香肉丝和回锅肉各加五份,其他菜保持不变。他没写在笔记本上,这些数字他记得住。
那天中午的营收破了两千八。林枫在收银台后面看着小票打印机吐出来一长串纸条,嘴里默念了一遍数字。他把纸条收好,在手机上记了一笔:午市营收2840。这是开业以来午市的最高纪录。林浩在厨房里不知道这个数字,他只知道今天的单子比昨天多,备料台的食材消耗比昨天快,他炒菜的速度比昨天更稳了。
第308章 第一个月
五月二十号,晨枫快餐开业整整一个月。
林枫把财务报表做出来了。他在建筑工地管了十几年的预算和成本,做这种账对他来说跟做工程决算是一个逻辑,每一分钱都要对得上。早上六点他就到了店里,坐在收银台后面把一个月的单据全部理了一遍。采购单和水电费单归在一类,租金转账记录单独放一摞,每一笔都跟收银机的数据核对过。他花了整整两个小时把所有数字填进表格里,用红笔在异常数据旁边画了圈。
月营收十二万三千四百块。他把一张手写的表格推到林晨面前。数字写得整整齐齐,每一列都对齐了,跟工程预算表的格式一样。最后一行用红笔加粗,旁边画了个圈。他在建筑公司做久了,手写字体都有cAd的影子。
林晨接过表格扫了一眼。他的笔记本电脑上开着另一张电子表格,数字跟林枫手写的基本对上了,只有食材成本差了两百块,那是电子表格里的预估数据和实际采购之间的差异。
食材成本三万两千八百块,占比百分之二十六点六。林枫念着表格上的数字。他用食指点着每一行,念完一行划一道浅浅的横线,人工两万三千八百。林浩六千,其余四个从三千五到五千不等。我自己不领薪资,你也不领。
林晨看着表格上的数字。营收十二万三千四,食材成本三万两千八,人工两万三千八,这三项加起来就占了大头。他在电子表格上标了一下百分比,食材占比百分之二十六点六,在预期范围内。
租金三万,含物业管理费。水电燃气五千二。林枫翻到表格第二页,外卖平台暂未开通,这块收入为零,成本也省了。
他拿红笔在最后一行写了一个数字,然后把笔放下,看着那个数字。四万零一百。
净利润。他说。
店里很安静。中午的高峰刚过,小芳在用餐区擦桌子,抹布翻面擦了三遍才把最后一桌的油渍擦干净。小吴在收银台后面整理零钱盒,把硬币按面值码进格子里。阿伟在厨房里洗案板,水龙头开了小半,水冲在案板上的声音隔着玻璃隔断传出来,细碎而规律。林晨看着红笔写的那个数字,手指在桌面上敲了两下。四万块。一家一百二十平米的快餐店,五个人,十道菜,一个月四万的净利润。
林浩坐在对面,听完了林枫报的数字,没说话。他端着那碗汤,自己做的骨头汤,中午没来得及喝,现在才喝上。汤已经有点凉了,面上结了一层薄薄的油膜,他用勺子搅开,喝了一口放在桌上,看着表格上的数字。
预备金怎么算?他问了一句。
前三个月留百分之四十。林枫指了一下表格底部的注释,四万的百分之四十是一万六,存到预备金账户里。剩下的两万四按股权分。
林浩点了一下头。他拿手机算了一下,三千六的分红加六千的薪资,九千六百。一个月前他还在酒店做案板,月薪五千六。他从口袋里掏出笔记本,翻到最后一页,在空白处写了一个数字:9600。写完之后他把笔记本合上放回口袋,站起来走进厨房去准备明天的备料。
林枫看着林浩的背影,转头跟林晨说:他不太会说。
我知道。
但他心里有数。林枫把表格折起来放进口袋,这个月四万,下个月如果能稳在五万以上,半年左右就能回本了。
林晨在电子表格上标了一行字:第一个月,营收12.34万,净利润4.01万。目标:第二个月营收15万,净利润7万。
他把电脑合上,站起来伸了个腰。坐了一上午,脖子有点僵。他走到门口,瞥了一眼外面的街道。下午三点,阳光打在人行道上,对面写字楼的玻璃幕墙反射着光。他站了十秒钟,转身回到店里。
小吴把收银机的当日汇总打了出来,走到林枫旁边把汇总单递给他。林枫接过去看了一眼,今天午市的营收是五千二。他把汇总单折好,跟早上的月度报表放在一起。
今天的菜价涨了一点。小吴说,猪肉比上周贵了两块钱一斤。
涨了多少?林枫问。
一斤涨两块,按我们每天的用量算,一个月要多出六百块左右的食材成本。小吴在收银台后面翻了一下今天的采购单,我已经跟供应商说了,看能不能把价格压回去。
林枫在手机备忘录里记了一下这个数字。六百块一个月,不多,但如果猪肉继续涨,食材成本率就要从百分之二十六点六往上涨了。他目光移向林晨,林晨轻轻摇了一下头,意思是不用现在处理。
先观察两周。林晨说,如果持续涨,再考虑调菜单价格。
林枫点了一下头,把手机放回口袋。
晚上关门之后,林枫坐在收银台后面把一个月的所有数据重新过了一遍。他把每天的单据按日期排列,在表格上填了三十一行数据。日均营收最高的一天是五月十六号周五,五千八百零三块。最低的一天是五月五号周一,三千零一十二块。他在表格最右边加了一列备注,把异常高和异常低的数据标了星号。
林晨坐在旁边看林枫做的表格,把几个关键数据敲进自己的电子表格里。日均营收约四千一,食材成本率百分之二十六点六,翻台率约二点八。这三个数字是核心指标,决定了这个店能不能活下去。
第二个月的目标你写了?林枫头也不抬地问。
写了。营收十五万,净利润七万。林晨把电子表格转给林枫看。
七万净利润需要日均营收到五千以上,食材成本率控制在百分之二十六以内。林枫在计算器上按了几下,有可能,但要看翻台率能不能上去。
今天小吴把菜单灯箱的顺序调了一下,热门菜放最上面。点单速度大概快了五秒左右。林晨说,五秒乘以四十个客人就是三分钟,三分钟等于多翻半张桌子。
林枫点了一下头,把计算器放回口袋。他拿起红笔在表格最下面写了一行字:第二月目标——日均5000+,翻台4.0+。写完之后他把红笔放在表格旁边,站起来伸了个腰。
明天的备料我让林浩加量了。林枫说,鱼香肉丝和回锅肉各加到八十份。
林晨应了一声,把电脑合上。
第二天早上,林浩比平时早到了十分钟。他在厨房里把灶台检查了一遍,火开了一下又关了,确认火力正常。然后他把备料台上的配料碟全部摆好,按照出餐频率从高到低排列,鱼香肉丝的料碟放在最顺手的位置,炝炒莲白的料碟放在最远。
阿伟到的时候发现林浩已经在备料台前面站了五分钟了。他没问为什么,系上围裙走到自己的位置,拿起菜刀开始切土豆丝。刀落在案板上的声音很有节奏,跟灶台上汤桶里冒泡的声音交替着。小刘到的时候,汤桶里已经有了半桶骨头汤,林浩提前两小时就到了,把昨晚泡好的骨头放进了汤桶里。灶火从最小的档调到中火,汤在桶里翻着细泡,骨头里的胶质慢慢融进汤里。汤色发白,面上浮着一层细细的油花。小刘走到出餐台旁边,把碗碟码好,饭桶插上电,勺子放在汤桶沿上。
小吴最后到,七点五十。她换上工作服,坐到收银台后面,开机测试打印机核对零钱。收银机吐出一张测试单,她看了一眼日期和时间:五月二十一号,七点五十一分。新的一个月开始了。
她把测试单撕下来扔进垃圾桶,把零钱盒里的硬币数了一遍,把备用金对好了。然后她把菜单灯箱又检查了一遍,鱼香肉丝和回锅肉还在最上面一行,昨天调整的位置没有变。
十一点钟,第一个客人推门进来。小吴抬头扫了一眼,是新客。她说了句:您好,看下菜单。
一个月前她说这句话的时候手还在抖。现在她扫一眼就知道是新客还是回头客。回头客直接报菜名,新客看菜单三十秒就会问推荐。这个客人看了二十秒菜单就问了:哪个好吃?
鱼香肉丝。小吴说。
客人点了一下头,小吴在收银机上按了鱼香肉丝的键,单子从打印机里吐出来,她把小票夹在夹子上递进厨房。
林浩在厨房里接到了今天第一张单子。他开了灶,锅底热了,油温到了。第一道鱼香肉丝下锅,肉丝滑进热油里发出细密的滋滋声。他翻了两下锅,左手颠锅右手拿勺,三十秒后出锅,小刘在出餐口接住盘子,端出去放在客人面前。
客人吃了一口,点了下头,继续吃。筷子伸向盘子里夹菜的动作很自然,没有犹豫,说明味道在他预期之内。
厨房里,阿伟的刀声和灶台上的火声交替着,汤桶里的小火慢慢烧着。林浩站在灶台前面,看着夹子上新递进来的第二张单子,开始准备下一份菜。灶台上的油还热着,锅还冒着轻烟,他伸手从备料台上拿了一份鱼香肉丝的配料碟,手腕一翻,下锅。
林晨在电子表格上更新了回本预测线。五十万的投资,如果第二个月净利润能到七万,回本周期就能缩短到八个月。他把预测线拉到了年底,看着曲线从左下角爬向右上角。然后他关掉电脑,去客厅陪乐乐下了一盘棋。乐乐赢了,很高兴,在沙发上蹦了两下。苏婉从厨房出来,目光落在沙发上蹦的乐乐身上,又移向林晨,笑了一下。
第309章 优化流程
林晨在t厂带过三十个人的团队。大模型应用部从零起步,从数据标注做到模型训练,再从部署上线盯到客户交付。每一个环节都有时间表,每一个节点都有责任人。他习惯把复杂系统拆成最小单元,然后找到瓶颈在哪里。
这套方法论他带了十来年,现在他把它带进了晨枫快餐的厨房。
周一中午十一点四十分,店里刚过准备期,第一拨客人还没来。林晨站在收银台旁边的角落里,手机打开计时器,看整个出餐流程。厨房里林浩已经开始备料了,刀切在案板上的声音隔着玻璃隔断传出来,节奏快而稳。阿伟在备料台旁边码料碟,十个碟子一排,姜蒜末和泡椒丝各归各位,豆瓣酱单放在后面一排。
十一点五十,第一拨客人进门。一个穿灰色工装的中年男人,推门进来之后在收银台前面站了几秒,抬头看墙上贴的菜单。菜单灯箱亮着白光,十道菜名从上到下排成两列,字号不算大,站在三米外看需要眯一下眼睛。小吴在收银台后面等他开口。客人的眼睛从左扫到右,又从右扫回左,最后指着某一行报了菜名。小吴手指在屏幕上点了几下,录入、付款、打单,整套动作行云流水。但林晨注意到,从客人站定到报出菜名,花了大概十五秒。
他按了一下计时器。四十二秒。整个点单环节四十二秒,其中客人犹豫就占了十五秒以上。回头客只要五到八秒就能报出菜名,但第一次来的客人要花十五到二十秒才能找到自己想吃的菜。
他站在角落没动,继续看第二单、第三单。小吴的录入速度很稳,三秒打完一单。问题不在她身上,问题在客人看菜单的时间。林晨在笔记本上记了一行字:点单瓶颈,客人犹豫十五到二十秒。
小票从收银机出单口滑出来,穿过玻璃隔断上的传单口飘进厨房。阿伟伸手一抽就拿到了,三秒。这个环节没有优化的空间,也没必要优化。
阿伟转身去备料台。他的手伸向左边,鱼香肉丝的配料碟,姜蒜末和泡椒丝配好的,拿起来就走。十五秒,配料碟递到了林浩手边。林晨正要按计时器记下这个时间,下一张小票来了:宫保鸡丁。阿伟的手在备料台上顿了一下,往右边找了两秒才找到对应的料碟。宫保鸡丁的配料碟在第三排靠右的位置,不常拿,多走了半步路。连续出三份同样的菜可以批量准备,时间压缩到十秒一份,但菜品切换的时候阿伟找料碟要花五秒。
林晨在笔记本上记:备料环节,菜品切换时有寻找时间,约五秒。他又看了一会儿,阿伟连续出五份鱼香肉丝的时候,手速明显快了很多,五份料碟一口气递完,中间没有停顿。但一换到点单率低的菜,他的节奏就断了。
厨房里油烟腾起来,灶火呼呼地响。林浩站在灶台前,锅铲翻飞,油在锅底滋滋响,汤在旁边一口小锅里冒泡。三口灶没有固定分工,哪口空了用哪口,中间要洗锅换锅。林晨看了一会儿林浩的出餐节奏,按了好几次计时器。水煮肉片从下锅到出锅四分钟,回锅肉三分半,鱼香肉丝三分四十秒。水煮肉片是最慢的那道菜,灶火开到最大也要四分钟才能出锅。平均出餐时间四分三十秒左右。
林晨在笔记本上记:出餐瓶颈,水煮肉片四分钟。他把手机计时器翻到历史记录,把每道菜的出餐时间按顺序排了一遍。水煮肉片是最慢的,但好在点单率不算高,一天也就十几份。鱼香肉丝和回锅肉才是大头,一天三四十份,这两道菜的出餐速度决定了整条链路的效率。
用餐环节他管不了。客人坐下来吃饭,快的三五分钟扒完走人,慢的坐着聊天二十分钟还不走。他总不能把椅子换成硬板凳。平均十八分钟,这个数字他只能接受。
收盘环节他跟了小芳三桌。小芳收碗碟的动作很利索,但她从最外面那张桌子开始收,收到最里面那张之后要端着碗碟走一整条过道才能放到出餐台旁边的周转区。折线走法,走了回头路。一分十秒。从一分二十秒压缩到一分十秒已经进步了,但还能再快。
一个中午看完,林晨在笔记本上把整条流程线画了出来。六个环节从左到右排在一条线上,每个环节下面标了时间,瓶颈用红笔画了圈。点单四十二秒,传单三秒,备料十到十五秒,出餐四分三十秒,用餐十八分钟,收盘一分十秒。总时长二十四分四十八秒。
他看了一会儿这条线,用红笔在四个瓶颈位置画了箭头指向右边。如果能把总时长压缩到二十二分钟以内,中午高峰期的翻台率就能从三点二提升到四点零。他不指望一步到位,但每个环节省十秒,整条链路就能快一分钟。
然后他画了一张流程优化图,贴在了收银台后面的墙上。
第二天早上小吴来上班,换工服的时候看见了那张图。她站在图前面看了大概三十秒,目光从左扫到右,又从右扫回左。她没说话,转身去了收银台。
但从那天开始,她改变了点单的开口方式。以前她说的是您要什么,从那天起变成了鱼香肉丝还是回锅肉。第一次来的客人不用再从头看菜单了,从两个选项里选一个就行。偶尔有客人两个都不想点,她才把菜单翻过来指给他们看。平均每单快了十二秒。十二秒乘以四十个客人就是八分钟。八分钟在高峰期意味着多翻一张桌子。
阿伟也看见了那张图。他第二天来得比平时早了十分钟,在备料台前重新整理了料碟的位置。鱼香肉丝和回锅肉的料碟挪到了最前面的位置,这两道菜点单率最高,一天要出三四十份。其他菜品按出单频率从高到低往后排。这样他每次拿料碟的时候手移动的距离最短,每份省了两到三秒。三秒乘以七十份菜就是三分半钟。
你把料碟重新排了?林晨有一天中午闲的时候问了一句。
阿伟头也没抬,手里正把一碟泡椒丝递向林浩。那张图我看明白了。他说。
林浩没看那张图。他在厨房里没时间看墙上的东西,灶台前面一刻不停,火苗从早烧到中午再烧到下午。但他自己做了另一个调整。三口灶以前没有固定分工,哪口空了用哪口,中间要洗锅换锅浪费时间。现在他固定了灶口的分工。左边一号灶专门出鱼香肉丝和回锅肉,这两道菜点单率最高,灶火一直开着不关。其他炒菜走中间二号灶,按单子顺序来。右边三号灶煲汤,同时用来煮水煮肉片的预制肉片。各灶各有分工,不需要每道菜都换锅洗锅。
一号灶因为常开常热,锅体温度比其他灶高了半拍。冷锅下油和热锅下油的时间差了将近二十秒,这二十秒在一号灶上省了出来。鱼香肉丝和回锅肉从下锅到出锅压缩到了三分半。整个出餐平均时间从四分三十秒降到了四分十秒。
小芳的调整最直接。林晨没有贴图,他直接跟她说了路线问题。从最里面那张桌子开始收,往门口方向一张一张收过去,碗碟放在托盘上端到出餐台旁边的周转区放下,再拿干净的碗筷从出餐台走回最里面那张桌子摆好。路线从折线变成直线,不走回头路。小芳听完之后在用餐区走了一遍,从最里面的八号桌走到周转区,再从出餐台走回八号桌,用秒表计了一下时间,一分零五秒。比之前的路线少了回头路,也少了绕出餐台半圈的距离。
小芳试了一天。第二天她对林晨说:快了,但碗碟摞太高容易倒。
换大号托盘。林晨说。
林枫当天下午就去买了一个不锈钢大号托盘,放在出餐台旁边。小芳收盘子的时间从一分十秒压缩到了五十秒。
所有的调整加在一起,每个环节都在缩短。点单快了十二秒,备料快了三秒,出餐快了二十秒,收盘快了二十秒。单客流程时间从二十四分四十八秒压缩到了二十三分四十三秒,省了六十五秒。六十五秒乘以八张桌子乘以三倍翻台,中午多出来的时间能让翻台率从三点二提高到三点七。
那天晚上林晨坐在角落的桌子旁边更新电子表格。他把旧的流程图从墙上取下来,换了一张新的上去。新图上标注了每个环节调整后的时间,红笔箭头比旧图少了两根。他在图的右下角写了一行小字:每省十秒,整链快一分钟。
林枫从冷柜那边走过来,收银台旁边站了一会儿,看着新图上的数字。然后他说了一句:你这套跟排施工进度表一个道理。
林晨抬了一下头。工序排好了,人就不会闲等。他说。
对,施工也这样。钢筋工干完退场,模板工立刻接上。林枫顿了一下,但你这个比我那个复杂。工地上的工序是固定的,你这里每天有变化。
所以这张图会一直换。林晨指了指墙上新贴的那张。
林枫没再说什么。他低头看了一眼自己手里的进货清单,转身去后厨检查明天的食材了。
这张图后来被小吴拍了一张照片存在手机里。她没跟任何人说为什么要拍,第二天中午在收银台前面点单的时候,语速比头一天又快了一点。报菜名的间隔缩短了半秒,打单的手指在屏幕上跳得更快了。中午高峰期多翻了一张桌子,她没归功于那张图,也没归功于自己。她只是在收银台后面站着,一句接一句地问客人:鱼香肉丝还是回锅肉?声音不大,但节奏很稳,像一台调好了参数的机器,每一单之间的间隙越来越短。
第310章 家族纽带的胜利
晚上九点半,店里最后一位客人擦了擦嘴,把筷子放在碗上,起身走了。小芳从厨房旁边端着抹布出来,把那张桌子擦了一遍,碗碟摞在大号托盘上端到周转区放下。她收盘子的路线是一条直线,从最里面到最外面,不回头。
小刘在出餐台后面洗碗,水声哗哗的。洗洁精的泡沫从他手指缝里挤出来,碗碟被冲干净之后码在沥水架上,一摞一摞整整齐齐。他已经洗了四十分钟了,手上泡得发白,但动作没有慢下来。每只碗转三圈,冲一遍,放到架子上,节奏很稳。最后一只碗洗完的时候他关了水龙头,甩了甩手上的水,在围裙上擦了两下,沥水架上的碗碟摞了八摞,每摞六只,按大小排列,碗口朝同一个方向。
阿伟把备料台擦了两遍。第一遍用湿抹布擦掉油渍和调料渍,第二遍用干抹布擦干水痕。刀挂回刀架上,大刀在左边,小刀在右边,和他每天备料时拿刀的顺序一致。案板翻了个面扣在台上,边角对齐,案板上有几道刀痕,是这周切排骨留下的,他拿抹布把刀痕里的碎屑擦干净。他在备料台前面站了几秒钟,检查了一遍有没有遗漏的东西,然后才解围裙。
小吴在收银台核今天的账。计算器按键的声音一下一下的,手指按下去弹起来,节奏像打鼓点。她对面放着一沓今天的收银小票,一张一张核对,偶尔用笔在清单上画一道杠。核完之后她把小票理齐,用回形针别好,放进收银台下面的抽屉里。今天出菜七十八份,营收五千二百块,翻台率三点七,比上周又好了一点。
林浩在厨房里把灶台最后擦了一遍。锅已经洗好挂回墙上了,三口锅挂在三只钩子上,锅底朝外,刷得发亮。汤桶里的剩汤倒进保鲜盒放进了冷柜,明天热一下还能用,骨头汤放一夜味道反而更浓。他把抹布在水龙头下冲干净,拧干,叠好放在备料台角上。灶台上的油渍已经全部擦净了,不锈钢台面在灯光下反着光。然后他关了厨房的灯,走出来。
厨房灯一关,用餐区的灯光就显得亮了。林枫坐在靠门口那张桌子上,面前摊着一张手写的进货清单。他拿着笔在清单上画了几道杠,那是他标注价格波动的记号。猪肉这个月涨了百分之三,鸡蛋价格稳定,二荆条辣椒因为产地原因涨了百分之五。他在清单旁边写了一行字:猪肉换供应商?找潮汕老板谈锁定价格。
林晨坐在角落那张桌子上,笔记本电脑开着。屏幕的光映在他脸上,蓝白色的。他把每天的数据导出来做了一张对比图,今天和上周同日叠在一起看,营收曲线和翻台率曲线都在往上走。食材成本比例单做一条线,跟营收曲线交叉的地方就是毛利率的波动点。
三个人坐在一起。店里很安静,只有冷柜压缩机的嗡嗡声和门外偶尔传来的车声。小吴已经核完账走了,小刘洗完碗也走了,阿伟最后一个走,走之前把后厨的门锁了。店里只剩林家三个人。
林枫先开口。他把笔放下来,扫了一眼手里的清单,然后抬头说:这个月能过四万。
他说的是净利润。林晨目光落在电子表格上的数据上,点了下头。第一整月运营,净利润四万,在预期之内。如果下个月翻台率能稳在四点零,净利润有机会冲七万。
猪肉涨价的事你怎么看?林晨问。
涨了百分之三。林枫翻了翻清单,我跟潮汕老板谈了,他可以锁定价格一个月,但量要加大。现在是每天三十斤猪里脊,锁定价格最少四十斤起。多出来的十斤如果卖不完就浪费了。
你算过没有?多备十斤的损耗和涨价百分之三哪个大?
林枫在心里算了一下。百分之三的涨价每天多花十五块左右。多备十斤猪里脊如果卖不完,一天的损耗大概二十到二十五块。锁定价格划算。但前提是量能跟上。
量能跟上。林浩在旁边说了一句。
他的声音不大,但语气很笃定。他知道自己每天出多少菜,也知道自己灶台上的节奏还能不能再快一点。
林枫点了一下头,在清单上锁定价格旁边打了个勾。
然后他停了一下,把笔放下来。他从口袋里掏出一包烟,抽出一根点上。他平时不怎么抽,工地上抽得多,回了鹏城之后抽得少了。今天他点了一根,吸了一口,看着店面的天花板。烟雾从他的嘴角飘出来,在灯光下散开。
我今天跟我那边项目经理通了个电话。他说。
林晨没说话,等他继续。林浩在旁边也停下了手上的动作,听着。
公司上个月又没发全额工资。这个月也悬了。林枫吸了一口烟,我请的长假他们也没催,估计是不在意了。
你打算什么时候辞?林晨问。
等这边稳了再说。林枫把烟在桌角按灭了,烟灰落进烟灰缸里。他扫了一眼店面,八张桌子在灯光下安静地摆着,这边净利润四万,我占百分之二十五,分红六千。比我在公司拿的工资差不少,但趋势往上走。
他说这句话的时候没有笑,也没有夸张。二十年的建筑行业,从施工员做到项目经理,工资从三千涨到一万五。现在一家一百二十平米的快餐店,分红加起来跟他当项目经理的工资差不少,但每个月都在涨。他的表情很平静,像在报一个施工进度数字。
林浩坐在旁边,听完了两个人的对话。他没插嘴,但林枫说完等这边稳了再说的时候,他点了一下头。他的手放在桌上,手指上有几道新的刀痕,不是切菜切的,是备料的时候案板上的倒刺刮的。他的手掌比三个月前粗糙了很多,指关节的骨节也更明显了。三个月前他的手是酒店后厨的手,白净,只有虎口有一小块烫伤的疤。现在他的手像干粗活的手,关节粗了,指甲缝里洗不干净的那层油渍是灶台留下的。
林晨合上笔记本电脑。他目光落在林浩的手上,又移向林枫的清单,然后扫了一眼店面。八张桌子,每张桌子四把椅子,干净整洁。玻璃隔断把厨房和用餐区隔开,隔断上的传单口刚好能塞过一张小票。收银台旁边的大号托盘叠得整整齐齐,灶台上三口锅已经凉了,锅底被刷得发亮。
店里的灯关了两盏,只剩收银台后面小吴走之前没关的台灯还亮着。灯光照在贴了流程优化图的墙面上,红笔画的箭头在灯光下很清楚。
他从口袋里掏出手机,打开投资账户看了一眼。账户余额四百一十五万。这个数字跟他刚被裁那会儿银行卡里只剩一千八百多块的日子隔了两年多。他把手机收回口袋,没有停留。
下个月。林晨说。
林枫和林浩同时看向他。
下个月如果净利润冲到七万以上,我提议把林浩的薪资从六千调到八千。阿伟从五千调到五千五,小刘和小吴各涨五百,小芳涨三百。
林枫想了一下。涨薪总额大概三千八。七万净利润的基础上完全能覆盖。
林浩在旁边听完了。他没说谢谢,也没说不用。他站起来把桌上林枫的烟灰弹到了烟灰缸里,然后走进厨房把灯全部关了。
厨房暗下来之后,店里只剩收银台后面那盏台灯还亮着。光线从台灯罩里漏出来,照在流程优化图上,照在收银台的台面上,照在小吴留下的那沓收银小票上。
林晨也站起来,把笔记本电脑装进包里。走到门口的时候他回头看了一眼,店面在暗光中只剩一个轮廓,八张桌子的影子映在玻璃隔断上。
林枫锁了门。三个人一起往停车场走。
六月的夜晚,风从南边吹过来,带着路边烧烤摊的烟气。林浩走在最前面,步子很快,低着头看手机,他在看明天要备的食材清单。林枫走在中间,手里拎着那箱明天要用的二荆条辣椒,他刚才从冷柜里拿出来要带回去的,明天一早送过来更新鲜。林晨走在最后面,手机亮着屏幕,上面是电子表格的曲线图,翻台率那条线从三点二慢慢爬到了三点七。停车场的水泥地上有几道裂缝,杂草从裂缝里长出来,被路灯照成一片深浅不一的绿色。
停车场的灯不是很亮,几只飞蛾绕着灯泡转。林枫把辣椒箱塞进皮卡后斗,拉上帆布绑好。帆布在风里拍了两下车斗的边沿,他重新紧了一下绳扣。
林浩头也没回地走向公交站。他住在附近,坐两站公交就到。
林晨拉开车门,坐进驾驶座。他没马上发动车子,而是打开手机备忘录写了一行字:第一个月净利润4万。下月目标7万。
他把手机放回口袋,发动了车。车载导航自动亮起来,显示回家路线。他看了一眼时间,九点五十二分。苏婉应该还在等他。
他没导航,直接开车走了。回家这条路他闭着眼都记得。
第311章 平衡两边
林晨的生活从五月开始变成了两条线。
白天在t厂,他是大模型应用部的副总监。早上九点到公司,先看一遍FinGpt v4的运行日志。模型昨天有没有异常输出,客户反馈有没有新问题,数据标注组的进度到哪了。然后开周会对需求,盯测试赶进度,中午十二点在食堂吃一顿十五块钱的盒饭。下午继续,跟产品和运维对时间节点,给陈博士汇报项目进展。六点下班,赶项目就加到八九点。
晚上七点到十点,他在家里打开笔记本电脑,连上店里的管理后台。客厅的灯调到最暗那一档,只有电脑屏幕的光映在茶几上,旁边放着一杯凉了的白开水,苏婉睡前给他倒的,他一直没喝。营收数据和菜品销量逐项核对,食材消耗单做一张表。有异常的标出来,第二天转给林枫处理。他把每天的数据导出来做了一张动态折线图,营收曲线和翻台率曲线叠在一起看趋势。食材成本比例单做一条线,跟营收曲线交叉的地方就是毛利率的波动点。
周末他开车去店里。不是去帮忙,他帮不了什么忙,厨房的事他插不上手,收银台有小吴。他去是为了看人。坐在角落那张桌子上打开电脑,一边处理t厂的工作邮件,一边用余光扫厨房和用餐区。他看林浩出菜的手势稳不稳,看阿伟递料的节奏跟不跟得上,看小芳收盘子的路线有没有绕弯路,看小吴面对排队的客人会不会慌。
六月份一个周六的中午,他坐在店里看数据的时候接到了陈铭的电话。手机震了两下,他瞥了一眼来电显示,是陈铭的办公号。店里正忙,厨房里灶火呼呼响,客人的说话声混在一起,但电话那头的声音还是很清楚。
林总,下周三有个客户要做FinGpt的定制方案演示,你能不能来?客户是某银行的资管部门,需求比较复杂。
可以,几点?
下午两点,在客户那边。我提前把需求文档发你。
挂了电话之后林晨看了一眼屏幕上的时间,中午十二点半,店里正忙。厨房里林浩的灶火呼呼响,阿伟递料碟的频率明显加快了,小吴在收银台前面一单一单接着打,门外等位的客人已经排了三拨。
他站起来走到收银台旁边,跟小吴说了一句:我周三下午有工作上的事,可能来不了店里。有事找林枫。
小吴点了下头。她现在已经不需要林晨每天在店里盯着了,收银对账这些事她自己能搞定。排班、食材盘点、处理客人投诉,她都接得住。有问题找林枫,林枫解决不了的就给林晨发消息,林晨通常晚上回家之后才回。
下午两点半,高峰期过了。店里安静下来,桌上的碗碟收了大半,空气里还残留着辣椒油和蒜蓉的味道。林浩从厨房里出来,端着一碗饭和一碟回锅肉。他的午饭。他在备料台旁边坐下来吃,三口两口就把饭扒完了。林晨看着他的吃法,快、专注、不留剩饭。在酒店做厨师的时候他养成了这个习惯,中午只有十五分钟吃饭时间,过了就要回去上灶。
林浩吃完饭把碗放回水槽,走出来站在林晨旁边,目光落在电脑屏幕上。上面是今天上午的营收曲线,从十一点开始陡升,十二点冲到最高点,一点开始下降。
周三我可能不在。林晨跟他说。
林浩点了下头。他不需要林晨每天在店里,厨房里的事他一个人能撑住。阿伟的配合越来越默契,备料台的节奏已经不用他喊了。小刘出餐也稳了,端碗的手不抖了,汤不再洒了。林浩在厨房里像一个指挥官,但他不需要说话。他走到一号灶前面,阿伟就知道鱼香肉丝或回锅肉要来了。他往二号灶方向偏半步,阿伟就知道宫保鸡丁要备料了。手势和位置就是信号,厨房里的节奏像一台上了油的机器,每个零件都在自己的位置上转动。
林晨合上电脑的时候想了一下他的时间分配。t厂的工作占了他大半精力,FinGpt的项目正在商业化落地阶段,不能松。店里的事占三成,主要是数据分析和流程优化,每天晚上回家花一个小时就能处理完。剩下的零头留给投资系统,FinGpt v4在自动运行,他每天只需要看一眼关键指标,不需要干预。两条线同时在跑,但都没有断。他每天的时间像一块被切成两份的蛋糕,每份不多,但刚好够维持运转。有时候中午在食堂吃完盒饭,他会打开手机看一眼店里的实时数据。翻台率、营收、食材消耗,每个数字都在预期范围内,他就关掉手机回去开会。如果某个数字偏离了,他就给林枫发一条消息,林枫通常半小时内就能处理好。晚上回到家已经十点多了,苏婉有时候还没睡,在客厅看一会儿书等他。她不问他累不累,只是递一杯水过去。
今天店里怎么样?她问。
还行。营收五千出头。
苏婉点了下头,没多问。她翻了一页书,又问了一句:你周三下午有工作的事?
嗯。银行客户方案演示。
那周三晚饭我带乐乐去店里吃吧。好久没去了。
苏婉合上书去睡了。林晨把笔记本电脑合上放在茶几上,靠在沙发上看了一会儿天花板。他在想FinGpt v4的一个模型参数,最近有一组客户反馈说金融文本的情感分析准确率下降了两个百分点,可能跟训练数据的分布偏移有关。他把思路记在手机备忘录上,明天到公司再深入分析。备忘录上只写了几个词:情感分析准确率降两点,训练数据偏移待查。
客厅很安静,只有空调外机的嗡嗡声。他坐了一会儿,把手机放回口袋,关了灯,走进卧室。苏婉已经睡着了,侧着身子,被子拉到下巴,床头柜上放着一本翻到一半的书,书脊压出一道折痕。乐乐的房间门关着,里面传出轻微的呼吸声。林晨躺下来,两分钟之后就睡着了。
第二天早上六点半闹钟响的时候,他已经在想今天要处理的事情了。t厂那边有一个九点的会,店里那边中午要备八十份的料。两边的日程表在他脑子里并行排列,没有冲突。他把闹钟按掉,起来洗漱。卫生间的镜子上还有昨晚苏婉贴的一张便签,上面写着牛奶快过期了,他看了一眼,把便签揭下来攥在手里,出了卫生间扔进垃圾桶。
厨房的灯亮了,苏婉在厨房里给他热牛奶。她穿着睡衣,头发有点乱,但动作很快,牛奶倒进杯子,两片面包放进烤面包机,三十秒搞定。乐乐的房间传来翻身的声音,还没醒。
几点走?苏婉问。
八点。
哪还有时间吃早餐。
林晨坐下来喝牛奶的时候,苏婉已经去叫乐乐起床了。牛奶是温的,面包烤得刚好,边缘焦了一点点,中间还软。乐乐的声音从房间里传出来,迷迷糊糊的,苏婉哄了两句才起来。林晨听了一会儿,嘴角动了一下,然后继续喝牛奶。面包的焦香味和牛奶的热气混在一起,这是他每天早上唯一的十分钟安静时间。
出门前他看了一眼客厅的时钟,七点五十。苏婉站在门口递给他一个保温杯,里面是泡好的茶。
晚上几点回来?
不一定。争取十点前。
他开车去公司。路上车不多,红绿灯一个接一个地过,他在等红灯的时候看了一眼手机,林枫发来一条消息:今天猪肉涨了两块,我跟潮汕老板说了价格,明天按新价走。旁边一辆公交车上贴着一张FinGpt的广告,蓝底白字,他扫了一眼就移开了视线。
他回了一个字:
绿灯亮了,他把手机放回口袋,踩下油门。车窗半开,早晨的风带着一点湿润的凉意吹进来。到了停车场熄火的时候,他又扫了一眼手机备忘录,昨天写的几个词还在。他截了个屏发到工作邮箱,等会儿到办公室再处理。
然后他收起手机,走进t厂的大门。刷卡进门坐电梯上楼,走廊里已经有几个人在工位上了,有人端着咖啡在讨论什么,有人在打电话,声音压得很低。他回到副总监的工位上。电脑屏幕上是FinGpt的运行面板,绿色的指标灯一闪一闪的。
两条线,同时在跑。他每天的时间像一块被拉长的橡皮筋,绷着但还没断。
苏婉知道他每天的时间怎么分配。她不说,但她看得到。她看到他每天早上六点起来看投资系统的数据,七点出门去t厂,晚上七八点回到家先看餐厅的数据,周末去店里待半天。她有时候想,他一天里真正属于自己的时间可能不超过两个小时。但她也知道,这两年他从来没有说过累。 到了公司之后,他在工位上坐下来,打开邮件。第一封是陈铭发来的,FinGpt v4的客户反馈汇总,本周新增三条,两条好评一条建议。他把建议转给了产品经理,在群里回了一个收到。第二封是人力资源的,下周二有新员工入职培训,需要他做一个半小时的技术介绍。他在日历上标了时间,然后关掉邮件,打开代码编辑器。屏幕上是昨天写到一半的数据清洗脚本,光标还停在第三十七行。他看了一会儿,开始打字。两条线同时在跑,他哪条都不能放。窗外的阳光照在键盘上,他已经开始打字了。手机在桌角震了一下。苏婉发来一条消息:明天我带乐乐去你店里吃午饭。他看了一眼,没有立刻回复。
第312章 妻子的理解
苏婉第一次去店里是开业第三周的周六。
不是特意去的。那天她带乐乐去科技园中区的图书馆还书,回来的路上经过那栋灰白色的小楼,一眼就看到了门头上亮着的灯箱,晨枫快餐四个字,底下一行小字写着现炒现做 川味快餐。灯箱下面有一盆绿萝,叶子被太阳晒得有点蔫,歪在花盆边上。门口停了两辆电动车,一辆外卖骑手的,一辆不知道是谁的,后座上绑着一个头盔。门口的脚踏垫上沾着一点油渍,深色的,大概是从厨房溅出来的。
乐乐拽了一下她的手:妈妈,爸爸的店!
苏婉停了两秒。她瞥了一眼店门,玻璃推门半开着,里面传来油烟机嗡嗡的声响和炒菜锅碰撞的叮当声。她本来没打算进去,但乐乐已经松开她的手往门口跑了。
她跟着走了进去。
店里正是中午高峰期,推门的一瞬间热气扑面而来,混着辣椒油和蒜蓉的味道。店不大,一百二十平米,但比她想象中要局促一些。玻璃隔断把厨房和用餐区分开,透过那层玻璃能看到厨房里不锈钢灶台的反光,还有林浩穿着白色厨师服在灶前晃动的身影。八张桌子坐了五桌,不算挤但也不空。空气里混着炒菜的香气和排烟机沉闷的运转声,靠门口的位置还能闻到一点葱花炝锅的味道。地砖是浅灰色的,走上去有一点滑,苏婉低头扫了一眼鞋跟,小心地迈了一步。墙上贴着一张手写的菜单,字迹工整,价格用红笔圈了出来。靠墙的位置放了一排木头椅子,椅面上有使用过的划痕,但擦得很干净。
小吴最先看到她。她从收银台后面探出半个身子,怔了一下,随即笑了:苏姐?林总说过您会来。您坐哪里?
随便坐。苏婉拉着乐乐走到靠窗的位置坐下来。那张二号桌今天空着,桌面上还有上一桌客人留下的水渍,小芳正端着抹布走过来。她看到苏婉,先愣了一下,然后赶紧擦了桌子,又给乐乐盛了一碗紫菜蛋花汤。汤碗比苏婉预想的小一号,乐乐两只手捧着刚好能端住。
乐乐端着碗喝了一口,眉毛扬了一下:妈妈,好喝。
苏婉没接话。她看了乐乐一眼,又看了一眼那碗汤。汤色清淡,紫菜散在蛋液里,碗底沉着几颗虾米。她没有点菜,把菜单推到桌子角上。
林浩在厨房里看到了她坐下来。他手上正出着一份回锅肉,灶上的火开到了最大档,五花肉在锅里煸出油脂,噼啪声盖过了排烟机的嗡嗡声。他没有停下来打招呼。三分钟后,他让小刘端了一份鱼香肉丝和一碗白饭出来,放在苏婉面前。
小刘放下盘子的时候说了一句:浩哥让端过来的。
苏婉看了那盘鱼香肉丝。肉丝切得粗细均匀,酱色红亮,葱花撒在表面,热气还往上蹿。她夹了一筷子放进嘴里,慢慢嚼了两下。肉丝嫩,酱汁甜酸比例刚好,咸度收得住,没有过重的味精味。她点了下头,没说好吃,也没说不好吃。乐乐在旁边看着她,等着她说点什么,但苏婉只是又夹了一筷子菜。
乐乐在旁边已经把一碗汤喝完了,开始用勺子舀米饭,一边舀一边看苏婉碗里的菜。苏婉挑了一块肉丝放到乐乐碗里,乐乐夹起来塞进嘴里,嚼了几下,眼睛又亮了一下。他伸筷子又夹了一块,这次没让苏婉帮忙,自己从盘子里夹的,酱汁差点滴到校服上。
苏婉没有只坐着吃。她吃完之后在店里走了一圈。鞋跟踩在浅灰色的地砖上发出轻脆的声响,她在每张桌子旁边都停了几秒,看看桌面的清洁度,看看椅子的摆放是否整齐。她看的方式跟客人不一样,目光跟着小芳走了一趟。小芳从最里面的四号桌开始收盘子,端着三四个碗碟绕过三号桌,走到出餐台放下,然后再回去收三号桌。这一趟下来,小芳走了两遍回头路。苏婉看在眼里,没说什么,继续走到另一边。
她又看了小吴收银的流程。客人扫码之后小吴会习惯性问一句需要发票吗,大多数人说不需要,少数人点一下头,小吴就手写在单子上。速度还行,但多了一个手写步骤,每次要耽搁五六秒。苏婉在旁边站了三十秒,数了三拨客人,每拨都因为开发票多停了几秒。
她还看了厨房里林浩出菜的节奏。灶台前他的动作没有一丝多余,手起刀落之间像在完成一套精密的工序。一份鱼香肉丝从下锅到出锅大概四分钟,中间颠锅三次、加调料两次,没有多余动作。小刘在出餐口接菜,单子上的备注他用红色记号笔在碗边画了一个圈,林浩出菜前看一眼就调整了辣度。这个细节做得利索。
她在店里待了大概四十分钟。走的时候林晨不在,他那天在t厂加班。苏婉拉着乐乐走到门口,回头看了一眼店面,灯箱上的字在午后阳光下发着白光,玻璃推门上贴着一张手写的今日特价贴纸,字迹是林浩写的,笔画端正但不太好看。她没说什么,牵着乐乐走了。
路上乐乐问了一句话:妈妈,浩哥哥做的菜好吃吗?
苏婉说,比我们在家做的好。
乐乐点了点头,没再问。他开始数路边的树,一棵、两棵、三棵,数到第十四棵的时候拐了个弯,他从头开始重新数。午后的阳光从车窗照进来,在他脸上打出一道斜线,他眯了一下眼睛,继续数。
晚上林晨回到家,苏婉在客厅里翻一本杂志。他换鞋进门的时候她抬了一下头。
今天去店里了?
嗯。路过。
怎么样?
苏婉翻了一页杂志,过了几秒钟才开口:小芳收盘子的路线可以调一下。
林晨把钥匙放在鞋柜上,转过来看她。
她现在从最里面往外收,端着碗碟走回来的时候走空路。如果反过来,从离厨房最远的桌子开始收,一路往厨房方向收过去,走到出餐台刚好手里端着最后一桌的碗碟,不用折返。
林晨想了一下。苏婉说的是对的。从最里面往门口收,小芳每收完一桌都要端着碗碟走回出餐台再返回去收下一桌。反过来走的话,收一桌往前走一步,碗碟越收越多但离出餐台越来越近,走完一趟正好放下。
你跟小芳说了没有?
没有。我又不在厨房管事。苏婉翻了一页杂志,嘴角动了一下。
林晨看了她一眼。她不会去厨房说这种事。她只吃了一顿饭,就看出了小芳路线的问题。
还有一件事。苏婉把杂志放下来,你们店里的汤碗太小了。
我知道,上个月就发现了。小吴已经在收银台旁边放了一个提示牌,告诉客人汤可以免费续。
提示牌不如换大碗。苏婉端起茶杯喝了一口水,你想啊,人在外面跑了一上午,坐下来就想安安稳稳喝碗汤。碗小了喝不够,还得站起来自己添。换成大碗,坐那儿就把汤喝饱了,不用折腾。
林晨从口袋里掏出手机,在备忘录上写了一行字:汤碗换大号。
你观察力挺强的。他说。
我天天在学校看学生吃饭。苏婉端着茶杯看了他一眼,小学生跟上班族吃饭有一个共同点,都想赶紧吃完走人。坐下来吃饱喝足就走,越干脆越满意。
你还想说什么?
苏婉把茶杯放下。你们店里的灯有点亮。
用餐区的灯太亮了。你有没有注意过,食堂的灯永远是全亮的?食堂跟饭馆不一样,食堂巴不得你吃完赶紧走。你们靠窗那排灯调暗两档试试,客人觉得舒服了,反而吃得快。就跟在家吃饭似的,灯暗一点,人反倒放松,放松了吃得利索。
林晨把这个也记在了备忘录上。
第二天他去店里的时候,先把灯光调了。靠窗那排灯从最亮调到三档,靠厨房那排保持五档。他没跟任何人解释为什么调灯。小芳在摆桌子的时候抬头看了一眼,没说什么。小吴问了句林总,灯怎么暗了,林晨只回了句试两天。
中午高峰期,平均用餐时间从十八分钟降到了十六分钟。苏婉的方法奏效了。
那天晚上林晨回到家,苏婉在厨房里切苹果。他走到厨房门口站了一下,苏婉头也没抬:灯调了?
调了。
用餐时间呢?
降了两分钟。
苏婉把切好的苹果推到他面前,用叉子叉了一块放进嘴里。那就对了。她说完这句话就端着水果盘去客厅了,没再多说。
林晨站在厨房门口看着她的背影,从口袋里掏出手机,把备忘录上关于汤碗的那条划掉,在后面加了一个括号:明天去批发市场找大号汤碗。
那天晚上林晨到家的时候已经九点了。苏婉在厨房里洗碗,乐乐在客厅写作业。他换了鞋进来,在乐乐头上摸了一下。乐乐头也没抬,嘴里念着乘法口诀。苏婉从厨房里探出头来,看了一眼他的脸,什么也没问。她只是把一杯温水放在茶几上,就回厨房了。他知道苏婉不问是因为她信任他。她从来不催他做决定,也从来不替他做决定。她只是在他看得见的地方放一杯水,让他知道家里有人在等他。茶几上的手机亮了一下,林枫发来一条消息。他看了一眼屏幕,六个字:明天对账,有情况。
第313章 乐乐的参与
乐乐八岁了,上小学二年级。
他对爸爸开了一家快餐店这件事的理解很简单:爸爸比以前更忙了,那个店里有一个会做很好吃的鱼香肉丝的浩哥哥。至于什么叫股权、什么叫分红,这些他不管。他只管一件事,偶尔可以去店里帮忙。
帮忙的内容很有限。他把纸巾盒一个一个摆在八张桌子上,每张桌子一个纸巾盒一个调料罐,摆在桌子右上角,角度跟桌边平行。纸巾盒是白色的塑料壳,手指按上去会弹出来一张,他试了一下弹力,觉得还行。调料罐里的辣椒粉有些满有些浅,他把太满的那个轻轻晃了两下,让表面平一点,又把最浅的那个从旁边桌匀过来一点。摆完之后他退后两步看了看,觉得第二桌的纸巾盒歪了一点,走过去转了一下,再退后看,这回齐了。他又觉得第三桌的调料罐离桌角远了半厘米,又走过去挪了一下。全部摆完之后他满意地点了一下头,跑去跟苏婉报告:妈妈,我摆好了。
苏婉正在靠窗的位置上看手机,听到乐乐的报告抬起头瞥了一眼。跟教室里排桌子似的。她说完又低头看手机了,乐乐站在旁边等了两秒,见她没有下文,就自己跑开了。
乐乐在学校里是那种安静的小孩。不惹事,也不跟同学吵架,考试中等偏上。老师评价他,这个评价在小学里通常意味着不突出但也不让人操心。他唯一的爱好是搭乐高,一个人能坐两三个小时不说话,拼出一艘宇宙飞船或者一座城堡,然后拆了重新拼。拼到一半的时候他发现有一颗零件找不到了,翻了半天盒子,最后在沙发缝里摸出来,安上去,继续拼。苏婉说他这点像林晨,林晨说他小时候也这样。乐乐听了没接话,低头继续拼他的飞船。
星期六中午,苏婉带他去了店里。乐乐穿着校服,书包背在后面,一进门就跑到靠窗的桌子旁边坐下。门口的风铃响了一下,他头也没回。他把书包塞到椅子底下,翻开练习册写了两个字就停了。店里太吵了。中午高峰期,人声和油烟机的嗡嗡声混在一起,隔壁桌两个穿工服的男人在聊项目进度,声音大得像在吵架。另一桌三个女的在说哪个外卖平台折扣多,筷子敲着碗边叮叮响。乐乐的铅笔停在半空中,看着练习册上的那道算术题发愣。七加五等于几,他知道等于十二,但脑子里全是炒菜的嗞啦声,写不下去。
妈妈,我可以去帮忙吗?
苏婉看了他一眼。你去问浩哥哥。
乐乐从椅子上跳下来,跑到厨房玻璃隔断前面,踮起脚往里看。林浩正在出菜,一号灶上鱼香肉丝出锅,酱汁在锅底收浓,二号灶上麻婆豆腐正在冒泡。林浩看到玻璃外面一张小脸在往里张望,手里颠了一下炒锅把最后一点酱汁裹匀,然后让小刘把菜端走。
他走到玻璃隔断前面,把传单口推开一条缝。厨房里热气涌出来,带着油和辣椒的味道,乐乐的鼻子皱了一下。什么事?
浩哥哥,我可以帮忙吗?
林浩看了他一眼。乐乐穿着校服,袖子撸到了手肘,脸上还带着刚才写作业时咬笔杆留下的铅笔印,在左边脸颊上画了一小道灰色的痕迹。
摆碗。林浩说完,从备料台下面拿了一摞碗放在出餐口。乐乐够不到出餐口的台面,他左右看了看,搬了一把椅子站上去,把碗一个一个摞好放在出餐台旁边。摞的时候他数了数,一共八个碗,摞成两组,每组四个,整整齐齐。摞完之后他站在椅子上看林浩炒菜。炒锅里的油在火苗上方翻滚,肉丝在锅里滑了一圈裹上了酱汁,林浩的手腕一翻,锅里的菜翻了一个面又落回锅底。乐乐的眼睛跟着翻炒的轨迹转了两圈,嘴巴微微张开。
浩哥哥,你怎么翻得这么快?
多练。
我能学吗?
先把碗摆好。
乐乐从椅子上下来,又搬了一摞碗上去摞好。小刘从出餐口接过碗,盛上饭,配好菜,端出去。乐乐站在出餐台旁边看了两轮,看小刘怎么配菜、怎么在单子上勾出已出的菜品。他注意到小刘每次端菜出去之前都会看一眼碗边的红色记号,有记号的就放在靠厨房那侧的出餐口,没记号的放在另一侧。
为什么分开放?乐乐问。
小刘笑了笑:有红圈的是少辣,得跟浩哥说一声。
乐乐点了点头,把这个记住了。他看了看小刘摆盘的手法,每份饭的量差不多,菜放在饭的旁边,酱汁不淋到碗边上。他看了两遍之后回到靠窗的桌子旁边坐下来,打开练习册继续写作业。这次他写得快了很多。两桌客人同时走了,小芳在收盘子的时候没说话,店里安静了几秒钟,铅笔在纸上发出的沙沙声变得格外清晰。乐乐咬着笔杆做完了两道数学题,又翻到下一页接着写。写完第三道的时候他停下来,在草稿纸上画了一个炒锅的形状,锅里的菜正在翻起来,旁边画了一个小人站在椅子上看。他看了一眼自己画的画,觉得不像,把纸翻过去,继续写数学题。
一点半,高峰期过了。厨房的灶火调到了最小,油烟机的声音也降下来了。店里的客人走得只剩一桌,小芳开始擦桌子,一块抹布从左到右擦过去,再喷一下清洁剂。林浩从厨房里出来,端着一碗饭和一碟糖醋排骨。排骨切得比正常的小块,酸甜口的酱汁裹得很匀,几粒白芝麻撒在表面,骨头剔得干干净净。这是他专门给乐乐做的。
乐乐拿起筷子夹了一块排骨,嚼了两下。肉嫩,酱汁酸甜刚好,咬下去没有一点碎骨碴。排骨表面的糖醋汁在灯光下泛着一层薄薄的光,每一块都切得差不多大小,比正常的一份小了三分之一,刚好适合小孩的手掌。他抬头看了林浩一眼,林浩已经转过身回厨房了,背影在玻璃隔断后面晃了一下就消失了。乐乐把一碟排骨吃完了,又把碗里的饭扒干净。站起来把碗送到出餐台旁边的周转区,然后跑回桌子旁边写作业。
小吴在收银台后面看着他跑来跑去,跟小芳说了一句:这小孩跟他爸爸一样,闲不住。
小芳在擦桌子,头也没抬:哪家的?
就是苏姐带来的,林总的小孩。
小芳看了一眼乐乐的背影,挺乖的。
苏婉坐在旁边,听到了这几句话,没接。她把乐乐的作业本翻了一页检查,数学题做完了三道,错了一道,她用铅笔在题号旁边画了一个圈。错的那道是进位加法,乐乐把个位进上去的一忘了加,苏婉在旁边写了正确答案,又画了一个箭头指到进位的地方。然后合上作业本放回书包里。
下午两点,他们要走了。乐乐把铅笔和橡皮塞进笔袋,拉上拉链,背上书包跑到厨房玻璃隔断前面,踮起脚对林浩喊了一声:浩哥哥再见!声音穿过玻璃,厨房里两个灶同时响着,不知道林浩听没听到。
林浩在灶台前面整理备料,头也没抬地回了一个字:
苏婉牵着乐乐走出店门。外面阳光很足,乐乐眯了一下眼睛,用手挡了一下才适应过来。门口的台阶上还有几滴水渍没干,他跳着避开了。走到停车场的时候他忽然说了一句:妈妈,浩哥哥做饭的时候好帅。
苏婉低头看了他一眼。你想学做饭?
乐乐想了一下。想。但浩哥哥说要多练。
那你先把作业练好。
乐乐没再说话。他上了车,系好安全带,在车后座继续写作业。苏婉发动车,把车窗摇下来一点,风吹进来,带着路边花坛里杂草的味道。她看了一眼后视镜,店面的灯箱还亮着。
她没说什么,开车走了。后座上乐乐的铅笔在纸上沙沙地响,写一道数学题的答案。他写完一行,又停了一下,铅笔尖在纸上点了一个点,看着窗外发了一会儿呆。路边的树一棵一棵往后退,他数到第七棵的时候不再数了。
妈妈,我以后能像浩哥哥一样厉害吗?
苏婉从后视镜里看了他一眼。你以后会比他更厉害。
为什么?
因为他二十三岁才开始学,你八岁就看到了。
乐乐想了一下,没继续问。他低下头继续写作业,把刚才做错的那道题重新算了一遍,这回算对了。车里很安静,只有铅笔在纸上划过的声音,和窗外偶尔开过的货车的引擎声。苏婉把车窗又摇高了一点,空调的风声代替了窗外的路噪。前面红灯亮了,苏婉踩下刹车,车停稳的一瞬间乐乐的铅笔尖在纸上画了一道歪线,他皱了一下眉,用橡皮擦掉重写。绿灯亮了,车重新起步,乐乐写完最后一道题,把练习册合上,塞进书包里。 乐乐在店里帮忙收碗的那天是周六。他穿着校服,系了一条小号的围裙,围裙太大了在身上晃来晃去,下摆都快垂到膝盖了。他走到六号桌去收碗,四个格子衫的男生看着他笑了,其中一个说:小伙子挺能干。乐乐没理他们,把碗一个一个摞起来,左手托着碗底,右手扶着最上面那个,走路的时候身子有点歪,但碗没掉。他小心地把碗放到水槽旁边,然后回来继续收下一桌。他收了三桌的碗,手上有油,在围裙上擦了两下,围裙上多了两道油印子。小吴在收银台后面看到他忙前忙后的样子,笑着摇了摇头,从抽屉里拿了一包纸巾递给他擦手。林浩从厨房里出来也看到了,递给他一块湿毛巾。乐乐接过去擦了手,抬头看了一眼林浩。林浩低头继续炒菜,嘴角微微弯了一下。苏婉在旁边看了一眼围裙在乐乐身上晃来晃去的样子,在心里记了一下,下次来的时候给他带一条短一点的围裙。
第314章 第二个月
六月二十号,晨枫快餐开业第二个月的财务报表出来了。
林枫坐在收银台旁边的椅子上,手里拿着一支笔和一张A4纸。他写字的习惯没变,每一列对齐,每一个数字写得工工整整,像工程预算表一样干净。纸的左上角写着第二个月四个字,下面分行列着各项数据。他把笔帽拔下来叼在嘴里,开始念。
月营收十四万八。他念出来,声音不大,但店里只有他和林晨两个人,每个字都听得清楚,食材成本三万七千,占比百分之二十五。人工两万四千八,涨薪之后多了一千,小芳和小吴过了试用期底薪各涨了五百。租金三万。水电燃气五千八。
他念完一行就在纸上的数字后面画一个小钩,表示这一项对过了。念到租金三万的时候他停了一下,抬头看了林晨一眼,林晨点了一下头,他就继续往下念。全部念完之后,他在纸的底部画了一条横线,在横线下面写了一个数字:五万。
净利润五万。他放下笔,比上个月多了一万。
林晨看着这个数字。五万净利润,五十万的总投资,按这个速度十个月回本。他在电子表格上更新了数据,画了一张预测曲线。如果第三个月继续保持增长,八九个月回本是合理的。但和之间有一段距离。餐饮行业的七月和八月是淡季,天气热了吃快餐的人会少,堂食客流下降的话营收会直接受影响。他把这个变量在表格里标了一个黄色的底色,又拉了一列做悲观预测,算了算最差情况下的回本周期。悲观预测出来是十到十二个月,不算差,但也不乐观。
他又把第二个月和第一个月的数据拉出来做了个对比。营收从九万六涨到十四万八,涨了百分之五十四。食材成本占比从百分之三十降到百分之二十五,是因为跟供应商谈了锁价,猪肉和大米的采购价各降了两三个点。人工成本涨了一千,是小芳和小吴过了试用期,底薪各涨了五百。这些他昨天在电子表格上就算好了,但看林枫手写的A4纸,数字落在纸上跟落在屏幕上的感觉不一样。纸上没有公式,没有自动计算,每一个数字都是林枫用笔一笔一画写上去的,字迹横平竖直,像工程图纸。
下个月准备上外卖。林晨说。
平台抽成百分之二十,加上包装成本,外卖的利润率会比堂食低一半。林枫算过这笔账,语气平淡,像是在念一份报告。他拿起笔在纸上空白处写了两个字,旁边画了一个问号。
利润率低,但客单价可以控制。林晨靠在收银台边上,手指点了一下桌面,外卖的菜单可以跟堂食不一样。出餐快的菜优先推,出餐慢的不上。水煮肉片送过去汤会洒,干脆不卖。鱼香肉丝和回锅肉这些打包方便的菜做主推,客单价反而比堂食高,外卖不免费续汤续饭,每份饭要单点。
林枫想了一下。外卖菜单单独做?
在平台上设两个套餐。一个双人餐,一个单人餐。单品只保留六到八道打包方便的菜。
水煮肉片不上?
不上。汤多碗大容易洒,差评风险太高。一个差评在外卖平台上等于十单白做。
林枫点了一下头。他在纸上写了外卖套餐四个字,旁边画了个圈,又在下面写了水煮肉片删三个字。
林浩在厨房里听着两个人讨论,手里还在切土豆丝。刀落在砧板上,节奏匀速,每一下间隔不到半秒。他切完一根土豆,把刀放下,走到出餐口插了一句:套餐配什么?
双人餐:两荤一素加两份饭。单人选一个荤菜加一份饭。汤另外买,一份三块。
汤三块?林浩问了一句。
外卖不免费续。汤的成本大概一块五,卖三块,毛利百分之五十。客人看到三块钱一碗汤会觉得便宜,愿意加。
林浩点了一下头,没再问。他回到备料台前翻了翻存量。鱼香肉丝的肉今天还剩二十来份的量,回锅肉的五花肉剩十五份。他拿手机给林枫发了一条消息:明天五花肉多拿五斤。
林枫看了手机,在进货清单上改了一个数字。
店里安静了几分钟。中午的客流已经过了,小芳在擦最后一张桌子,抹布从左到右擦过去,再喷一下清洁剂。小吴在核对收银记录,一笔一笔对,发现有一笔对不上,翻了三遍才找到,是中午忙的时候多找了一个客人的零钱。阳光从靠窗的玻璃射进来,照在地砖上画出一个斜长的光斑。林枫把那张A4纸折了一下,夹进文件夹里。
分红方案。林枫重新打开纸,用笔尖点着上面的数字,净利润五万,按协议前三个月留百分之四十作预备金,两万。剩下三万按股权分配:林晨百分之六十,一万八千。林枫百分之二十五,七千五百。林浩百分之十五,四千五百。
林晨在电子表格里输完数字,看了一眼总计。加上林浩每月八千的薪资,他这个月总收入一万两千五百。比上个月多了一千出头。他在表格里把林浩的累计收入也拉了一列,从入职第一月到现在,每个数字都对得上,像一串递增的台阶。
林枫点了下头,把笔帽扣回笔上。他在文件夹的标签上写了第二个月三个字,然后把文件夹放进收银台下面的抽屉里。抽屉里还有上个月的文件夹,薄薄的一张纸,上面写着的净利润数字比这个月少了近一万。他合上抽屉的时候看了一眼里面,文件夹已经从一个变成了两个,厚薄差了一倍多。第一个月和第二个月的数据就这样并排躺在抽屉里,像两页进度报告。
林浩在厨房里听到了分红数字,但他没出来。他拿手机看了一眼林枫发来的消息,截图存在了手机里,跟中级厨师证的扫描件存在同一个文件夹。然后他把手机放回口袋,继续切他的土豆丝。切完之后他拿了一把备用的刀,在磨刀石上磨了几下。刀刃在磨刀石上发出细小的沙沙声,他磨了几下,用拇指试了试刀锋,又继续磨。磨完之后他拿了一张纸巾擦干净刀面,把刀插回刀架。刀架上四把刀,两把大的两把小的,排得整整齐齐,刀刃都朝同一个方向。
阿伟从备料台那边走过来,手里端着一碗刚调好的鱼香汁。他最近在学调味,林浩让他先从酱汁的比例练起,什么时候加醋、什么时候加糖、什么时候收汁,每个步骤都有严格的时间窗口。阿伟把碗放在出餐口,林浩闻了一下,用筷子蘸了一点尝,点了下头。阿伟松了口气,抹了把额头的汗。
晚上关了店之后他去了银行。街上已经暗了,路灯亮着暖黄色的光,几个下夜班的人从Atm隔间走出来,各走各的路。Atm机旁边有一排花坛,夜风吹过来带着一点灰尘的味道。他走进去,插卡,查余额。屏幕上显示的数字比他人生中任何一次看到的余额都多。他看了一会儿,取了五千块现金,还了一部分之前学厨师时借的钱。他把现金装进信封,信封上没有写字。出银行的时候他把信封塞进外套内袋,拉上拉链。他没跟林晨说这件事。
出了银行,他在路边的便利店买了一瓶水,站在门口喝了两口。深圳六月的晚上还热,风从海边的方向吹过来,带着一点咸味。他把水瓶拧紧,放进背包的侧兜里,沿着人行道往出租屋的方向走。路过一家烧烤摊的时候,烤架上冒出的油烟被风吹散了,他停下脚步看了一眼,然后继续走。
回到出租屋的时候他在微信上给林晨发了一条消息:下个月五花肉再涨的话,我跟潮汕老板谈锁定价。
林晨回了两个字:
然后他打开电脑看了一眼投资系统的数据。账户余额四百二十五万,比上个月又多了近二十万。FinGpt v4在自动运行,这个月的收益率比上个月高了一点几个百分点。他调了一下风控参数,把单笔止损线从百分之二收紧到百分之一点五。账户大了之后,回撤的风险比收益的诱惑更重要。
调完参数他关了电脑。厨房的方向传来林浩发消息的提示音,又发了一条:明天六点到。五花肉锁价的事我去谈。
林晨看完这条消息,把手机放在床头柜上。苏婉已经睡着了,呼吸均匀,手里还握着翻了一半的书,封面卷了一个角。他轻轻把书抽出来,折好页码放在床头。乐乐的房间门关着,门缝底下透出一线台灯的光,大概还在看书。他目光落在乐乐房间的方向,没有去敲门。
他躺下来的时候瞥了一眼天花板。明天要去批发市场找大号汤碗,下周三t厂的商业化落地方案要定稿,客户那边催得紧。两件事隔了整座城,但都得做。他翻了个身,闭上眼睛。窗外远处传来一声狗叫,很快又安静了。
第315章 会员制度
林晨是在t厂的食堂里想到会员制度的。
那天中午他端着托盘找位置坐,食堂里人满为患,最后只剩一张四人桌还有空位。他刚坐下,旁边两个产品经理也在聊工作,声音不大不小,刚好飘进他耳朵里。
日活再高,不存钱就等于白来。戴眼镜的那个拿筷子戳了戳盘子里的西红柿炒蛋,留存看的是复购,复购看的是习惯。习惯靠什么?靠沉没成本。用户在你这里花了钱,他就不会轻易走。
对面那个点了点头:所以储值卡这东西,本质不是优惠,是锁。用户一旦存了钱,他的决策成本就变了。下次吃饭的时候,他不会再去比较哪家便宜,他会先想我那家店还有余额。
关键是怎么让用户愿意存。戴眼镜的那个喝了口汤,送得太少他不存,送得太多你亏。得算好那个点。
林晨夹了一口菜,慢慢嚼着。他没有刻意去听,但沉没成本复购这两个词像程序里的变量一样挂在了脑子里。t厂的食堂很吵,周围全是金属餐盘碰撞的声音和说话声,但这两个词像打了断点一样卡在了他的思维里。快餐店的客人也是用户。用户留存靠习惯,习惯靠沉没成本。客人在晨枫快餐充了值,他下次吃饭就会优先来这里。因为他已经把钱存在这里了。
他低头看了一眼自己盘子里的饭菜,突然觉得食堂和快餐店的差别比他想象的小。都是卖饭的,都是靠回头客撑着。食堂靠位置近,快餐店呢?快餐店靠什么?靠口味,靠出餐速度,靠价格。但如果这些都能被复制呢?隔壁再开一家店,味道差不多,价格差不多,客人凭什么继续来晨枫?凭习惯。而充值是锁住习惯最简单的办法。
下午在工位上写代码的时候,他脑子里还在转这个事。FinGpt v4的一个接口文档打开了半个小时没动,光标在编辑器里一闪一闪的。他在草稿纸上画了一个简单的流程图:用户扫码、输入金额、系统写入余额、消费时扣减。逻辑不复杂,跟他平时写的那些模型推理管道比起来,这东西像是用积木搭个小房子。
晚上七点半他到了店里。厨房里林浩正在收拾晚高峰最后几单的锅,灶台上的火刚关,不锈钢台面上还冒着水汽。小吴在收银台后面整理今天的票据,手边摊着一本手工记账的笔记本。小芳端着抹布从大堂走过来,看见林晨推门进来,朝他点了点头。
林枫坐在靠墙的那张桌子后面看账本,手边放着一杯凉透了的茶。林晨拉了把椅子坐到他旁边,把手机递过去,屏幕上是他在草稿纸上画的那个流程图的照片。
会员卡。林晨说,充值有优惠,充两百送二十,充五百送六十。客人充了值就跑不掉了,除非他以后再也不来。
林枫接过手机看了一会儿,拇指在屏幕上放大了那个流程图。他沉默了几秒,嘴微微动了一下,像是在默算。
充两百送二十,等于打九一折。充五百送六十,等于打八九折。他放下手机,拿起桌上的笔在账本空白处写了两行数字,比开业时候的八折少让利,但锁定了一笔现金流。
对。八折是一次性的,让利就没了。会员是先收钱再让利,钱在手里比让利出去强。
林枫的笔尖在账本上顿了一下。他抬头看了林晨一眼,那眼神里有一种算账算到点子上的认可。怎么做?
在收银系统上加一个会员模块。小吴扫一下客人的手机码,输入金额,系统自动充值到他的账户里。下次来消费直接扣余额,不用付现金。
开发成本呢?
我写。林晨说,小程序加一个页面就行,一两天的事。
林枫没有再问。他把账本上的那两行数字圈了一下,又在旁边写了一个字:做。
林晨用了两个晚上的时间写代码。白天在t厂开完会之后,晚上回家打开电脑,先看一遍FinGpt的运行日志和客户反馈,确认没有异常报错,然后切到晨枫的开发环境里写会员模块。两个窗口并排放在屏幕上,左边是FinGpt的监控面板,右边是晨枫小程序的代码编辑器。他想在两台服务器之间做负载均衡,时间切得刚好够用。客厅里很安静,只有键盘敲击的声音。茶几上放着一杯凉了的白开水,他写代码的时候习惯不喝水,写完一个模块才想起来喝一口。
会员模块的核心逻辑他只写了半天。用户扫码充值,金额写入数据库,消费时从余额扣减,余额不足提示充值。数据库表结构他参考了FinGpt的用户系统设计,只是把模型调用换成了余额查询。他加了一个积分功能:每消费一块钱积一分,积分可以在下次消费时抵扣,一百积分抵一块钱。积分的抵扣率很低,一百积分才一块钱,但客人的心理感觉是我在攒积分,这种心理比积分本身更值钱。
他还做了一个小细节:充值成功之后,手机上弹出的余额数字用大号字体显示,旁边跟一行小字已为您节省xx元。这行字是他在t厂看用户反馈报告学来的,用户对两个字的敏感度远高于。
小程序更新上线的那天是个周四。早上十点林晨远程提交了更新包,审核两小时就过了。他把上线消息发到了林枫的微信上,林枫回了两个字:知道了。
中午十一点半,小吴在收银台旁边摆了一个立牌。上面写着充值有礼:充200送20,充500送60,红底白字,跟开业时候的促销牌一个风格。字是林枫写的,他练过几年字,笔画端正有力,站在两米外都看得清楚。
小芳在每张桌子上放了一张名片大小的卡片,正面印着小程序二维码,背面是充值档位和优惠说明。
中午高峰期来了。前十几个客人都是老顾客,进了店直接走到收银台前面报菜名。小吴打完单之后顺手加上一句:我们现在有会员充值活动,充两百送二十,要不要办一张?
头三个人都没接话,付了钱端着餐盘走了。第四个是个穿polo衫的程序员,他看了看收银台旁边的立牌,想了一下:充两百送二十,等于九一折?
对。而且下次来不用付现金,直接扣余额就行。小吴指了指立牌上的二维码。
程序员掏出手机扫了码。小吴在收银系统上操作了一下,充值成功。程序员的手机上弹出一条消息:晨枫快餐会员,余额220元。大号数字220特别显眼,他看了一眼,收起手机,端着餐盘找位置坐下了。
第五个是个戴棒球帽的女生,她看了一眼立牌,直接问:充五百送六十是吧?然后扫了码。小吴给她充完值,她看了看手机上的余额数字560,点了点头走了。
后面几天办卡的速度慢了一些。有的客人听了小吴的介绍之后犹豫了一下,说下次再说。有的客人扫了码看了一眼页面就退出了,连充值的步骤都没走完。小吴把每天办卡的数量记在收银台旁边的小本子上,周一到周三分别是十五、十八、十七,加起来五十张。
前三天总共办了五十张会员卡,充值总额八千四百块。其中有十二个人充了五百,送六十的优惠确实比充两百划算。还有三个人主动要求充两千,林晨没设两千的档位,但小吴在系统里手动输入了两千的金额,按比例送了两百四十。
充两千送两百四,等于打八九折。小吴在打烊之后跟林枫说,她一边擦收银台一边算,有个客人说他每天都来吃,充两千够吃三个月了。
林枫坐在桌边,翻开笔记本写了一行:会员卡三天五十张,充值总额8400元。他在数字下面画了一条横线,又写了一行:现金先收进来,菜慢慢做。
八千四百块的现金趴在账上,等于一个月的租金有了三分之一。这些钱不能算营收,是预收款,客人随时可以来消费。但现金在手里就是现金,可以用来备货周转,也可以提前付下个月的租金。
林晨在电子表格上加了一列:会员充值余额。这个数字每天都在涨,新会员在增加,老会员也在充值续费。到了第二周周末,会员充值余额突破了两万块。他在表格里把会员充值余额单独标了颜色,跟营收和利润分开列。两万块是预收款,不是利润,混在一起会看错账。
小吴发现了会员卡的另一个好处。以前她只能记住几个熟客的脸和常点的菜,现在系统里每一笔消费都有记录。她午休的时候翻手机后台,发现有个穿格子衬衫的客人一周来三次,每次点鱼香肉丝和一碗饭。还有个戴眼镜的女生两周来一次,每次点水煮肉片加一碗汤。这些数据林晨每周导出来分析一次,根据点单频率调整备料量。鱼香肉丝的备料从每天五份增加到了每天七份,水煮肉片保持三份不变。
小吴还发现了一个规律:充了值的客人比没充值的客人来得更频繁。她把前两周的消费数据拉出来对比了一下,会员平均每周来三点二次,非会员平均每周来一点八次。她把数据截图发到了林晨的微信上,加了一句:会员比非会员多来快一倍。林晨回了两个字:正常。
会员制度的第三周,会员充值余额突破三万。林枫看着手机上林晨发来的表格截图,在笔记本上写了一个数字:。然后他在旁边写了一句话:比银行贷款划算。
林晨看着手机上林枫发来的那五个字,没有回。他在想下一步的事。会员卡的数据在增长,但光有会员还不够。积分抵扣率太低,客人攒了积分花不出去,积分就变成了一个摆设。他得想一个让积分动起来的办法。但那个不急,先把现在的系统跑稳了再说。
他关掉晨枫的后台数据,切回FinGpt的工作界面。下午三点有个会,他得把v4的参数调整方案过一遍。两条线,来回切。
第316章 小程序开发
会员系统上线两周之后,林晨开始写小程序的第二个版本。
第一版的小程序很简单,只有一个菜单页面和一个会员充值页面。界面是他用周末两个下午赶出来的,用了最朴素的UI组件,白底黑字,菜单排列像一张Excel表格。菜品名称左边对齐,价格右边对齐,中间用点号填充,整整齐齐但毫无美感。小吴第一天用的时候说了句这个页面有点丑,林晨回了一句能用就行,然后背起电脑包去t厂上班了。
但他知道能用和好用之间有一段距离。他每天早上打开小程序后台看数据的时候,能感觉到这段距离。菜单页面的停留时间只有三秒,客人点进来,看一眼密密麻麻的文字列表,没有图片参考,只能靠菜名猜分量和卖相。会员充值页面的跳出率也不低,百分之十八的人点进来没有完成充值就退出了。这些数字在后台报表里排成一行,每一行都在说同一件事:界面不行。
他在t厂的工位上打开小程序看了一遍,然后又关掉了。白天公司的事情排得满,FinGpt v4的迭代计划、客户需求评审、团队周会,每一件都比快餐店的小程序紧急。但紧急和重要不是一回事,他心里清楚。小程序是客人接触晨枫快餐的第一个界面,就像一个产品的首页,用户三秒之内决定留还是走。三秒留不住人,后面做得再好也没用。
周三晚上他回到家,洗完澡坐到书桌前,打开了小程序的开发环境。台灯的暖光照在键盘上,客厅里苏婉已经睡了,只有书房的灯还亮着。第一版的前端代码他全部推倒重写。菜单页面用了卡片式布局,每道菜一张小卡片,左边是菜品图片,右边是名称、价格和口味标签。图片是林浩做菜的时候他用手机拍的,厨房光线不太好,有些照片偏暗,但他在代码里加了一个亮度滤镜,调完之后勉强够用。口味标签他设了五个:辣、微辣、不辣、下饭、清淡。每道菜最多标两个标签,标签用不同颜色的胶囊框显示,红的代表辣,绿的代表不辣,客人一扫就能过滤掉自己不吃的。
会员页面重写之后加了三个模块:余额显示放在最上面,大号字体,跟充值成功时的提示风格统一;消费记录排在中间,最近十笔交易按时间倒序列出来,每一笔显示日期、菜名和扣款金额;积分明细放在最下面,当前积分、累计积分和抵扣记录分三行展示。
他还加了一个新功能:在线预点单。客人可以在到店之前在小程序上选好菜,选一个到店时间,提交订单,到了店之后直接报手机尾号取餐,不用排队等点单。这个想法来自他观察了三天的午高峰数据。每天十二点到十二点半之间,收银台前面排着七八个人,其中有百分之三十是在等点单而不是等出餐。这些人的点单时间平均两分钟,从看菜单到选菜到确认付款。如果这百分之三十的人提前在小程序上点好菜,到店直接取餐,排队时间能缩短三分之一。
预点单的流程他画了一张流程图贴在冰箱上。林浩早上来备料的时候看到了,看了一眼没说什么,但第二天他把灶台上调料瓶的位置重新排了一遍,把出餐最快的几道菜的配料放在最顺手的位置。他没有问林晨为什么要调,但林晨知道他是看了那张流程图之后自己做出的调整。
林晨在t厂午休的时候用公司的测试手机调了一下交互流程。他从客人的角度走了五遍完整路径,每一步都计时、截图、记笔记。打开小程序、浏览菜单、选菜、提交订单、选到店时间、确认,每一步的操作他都像跑测试用例一样严谨。第一遍他发现菜品数量选择器的加减按钮太小了,只有二十像素,手指粗的客人容易按错。他把按钮尺寸调到了四十四像素,加上了一圈浅灰色的点击区域,确保手指不会误触旁边的菜品。第二遍他发现取餐码的字体不够大,客人站在取餐口隔着玻璃隔断看不清屏幕上的六位数字。他把取餐码字号从二十像素调到了三十六像素,背景色从白色改成了黄色,数字用黑色粗体,在手机屏幕上一眼就能看到。第三遍他走完了支付流程,没有发现问题,从选菜到支付完成总共十四秒。第四遍他测试了会员余额扣减和积分增加的联动,发现了一个bug:余额扣减和积分增加不在同一个数据库事务里,如果网络断了会导致只扣钱不加积分。他花了半个小时修好了这个并发问题,把两个操作包进了同一个事务,要么同时成功,要么同时回滚。第五遍他重新走了全流程,确认没有问题。
修完之后他把小程序更新包提交了审核。提交审核的时候已经是凌晨一点了,他检查了三遍代码确认没有遗漏,才合上电脑。两天后审核通过,新版本上线。
上线那天是个周二。中午十一点半林晨远程确认了新版本在所有机型上都能正常打开之后,给林枫发了条消息:新版上线了,中午让小吴推一下预点单。
林枫回了一个字:好。
中午十一点五十分,小吴在收银台旁边摆了一个立牌:小程序点单,到店即取。小芳在每张桌子上放了一张名片大小的卡片,正面印着小程序的二维码,背面写着三行字:扫码点单,不用排队。字不多,但意思清楚。
前十几个客人还是老样子,进了门直接走到收银台前面报菜名。小吴在打完单之后加了一句:我们现在有预点单功能,下次来之前可以在小程序上先点好菜,到了直接取餐。
大多数人点了点头就端着餐盘走了。但立牌和桌上的卡片已经摆出去了,信息在传播,不需要每个人当场响应。
第一个用预点单功能的客人出现在十一点五十八分。林晨坐在收银台后面的板凳上看后台数据,手机屏幕上弹出了一条新订单:回锅肉一份,米饭一碗,手机尾号3721,预计到店时间十二点零五分。他站起来走到厨房传单口旁边,把订单小票打印出来递给林浩。
预点单。
林浩接过小票看了一眼,灶台上已经起了火。回锅肉是出餐最快的菜之一,从切配到出锅三分钟以内。他开始备料,五花肉从保鲜柜里拿出来切片,蒜苗洗净切段,豆瓣酱挖了一勺放在碗边。
十二点零三分,一个穿格子衬衫的男生推门进来。他走到收银台前面报了手机尾号:3721。
小吴在系统里查到订单,点了一下确认。厨房里林浩已经把回锅肉出锅装好了盘,从备料到出餐总共用了三分钟。小吴把餐盘从取餐口递出去,格子衬衫男生接过来的时候愣了一下。
这也太快了。他端着餐盘找了一张空桌坐下来,边吃边看手机上的订单记录。两分钟之后他在同事群里发了一条消息:科技园南区新开的那家快餐店可以提前点菜,到了直接拿,不用等。
第二条预点单在十二点十分进来了。第三条在十二点十三分。到十二点半的时候,后台一共收到了八条预点单。林晨在手机上拉了一下数据:八条预点单的客人从进门到取餐平均用时四分十二秒,同期堂食客人从排队到取餐平均用时七分半。预点单比堂食快了将近一半。
第二天的预点单数量涨到了十二条。第三天十八条。一周之后,预点单稳定在每天二十到三十单之间,占中午时段总单量的百分之十五。林晨在后台数据上看得到,每天十二点之前,有二十到三十个订单是提前下的。这些客人的到店时间集中在十一点半到十二点之间,比非预点单客人早了十五分钟。也就是说,预点单把一部分客流从十二点的高峰期拉到了十一点半的平峰期,错峰了。
翻台率从三点七提升到了四点零。这个数字意味着每天中午多翻了一张桌子。一张桌子一个中午多接待一组客人,一组客人平均消费二十五块,一个月多出来的营收大概在一千五到两千之间。加上晚上时段,全天的增量在三千到四千。
林晨把这个数据做了一张折线图,用微信发给了林枫。折线图上两条线,一条是上线前的翻台率,平缓地躺在三点七附近;另一条是上线后的翻台率,从三点七爬到了四点零。图的标题他写的是翻台率变化,没有加任何解读。
林枫看了之后回了一条消息:你写这个小程序用了多久?
三个晚上。
三个晚上值多少。
林晨没回。三个晚上写的代码换来的数字已经摆在图上了,不需要他再解释什么。技术是工具,不是答案。真正值钱的不是三个晚上的代码,是林浩的手艺让回锅肉三分钟出锅,是小吴在收银台前一句一句推预点单,是小芳每天早上把卡片摆上每一张桌子。这些加在一起才是一个完整的系统。
他关掉手机上的小程序后台,切回t厂的工作界面。FinGpt v4的模型有一个小参数需要调整,下午三点有个会要讲这个调整方案。两条线,来回切。午休结束前他还有十五分钟,他把折线图的源数据导出来存了一份备份,然后合上电脑,走回工位。走廊里的日光灯嗡嗡地响,有人端着咖啡从对面走过来,点了点头算是打招呼。
第317章 外卖业务
林枫是在进货的时候发现外卖这个选项的。
他每周三次凌晨四点开车去海吉星批发市场拉菜。从晨枫快餐到海吉星要开四十分钟,路上会经过科技园中区的一条食街。那条街上有十几家快餐店,到了中午的时候门口停满了穿黄色和蓝色制服的外卖骑手。骑手们一人一个保温箱,三五成群地站在取餐口前面等餐,有的在刷手机,有的在对讲机里催商家出餐。他每次路过都会看一眼,那些店的门口比堂食里面热闹多了。
这天早上拉完菜回来,他坐在店里整理进货单的时候跟林晨提了一句:科技园南区那几家店,中午外卖单子比堂食还多。
林晨想了一天。第二天他在小程序上加了一个外卖入口,入口按钮放在菜单页面的右上角,红色图标,点进去之后跳转到外卖菜单。外卖菜单和堂食菜单分开,少了几道不适合配送的菜。然后他去了美团和饿了么的商家端注册了晨枫快餐的店铺。审核用了三天,期间需要上传营业执照、食品经营许可证、门店照片、菜品清单。这些材料林枫之前都准备好了,他管了十几年工程资料,办证照这种事对他来说跟报建手续一样轻车熟路。他翻出一个档案袋,里面从消防验收到卫生许可一应俱全,拍照上传只用了半个小时。
上线第一天,两平台加起来出了十五单。不多,但这是个开始。林晨在后台数据表上记了一行:首日外卖15单。
外卖的出餐逻辑跟堂食完全不同。堂食的菜出锅直接端到桌上,从出锅到客人嘴里不超过三分钟。外卖的菜出锅之后要装盒、封口、贴标签、装袋、放进保温箱,骑手取餐、配送,整个流程下来从出锅到客人嘴里最少二十分钟。二十分钟对一道菜来说是很长的时间。鱼香肉丝的酱汁在盒子里泡着饭,时间长了饭会变软;麻婆豆腐的豆腐在密封盒里颠簸,到客人手上可能碎成渣。
林浩看出了这个问题。他花了一个晚上做外卖测试。下午打烊之后,他把十道菜全部做成外卖版,用打包盒一份一份装好,封口、贴标签、装袋,然后让林枫开车送回家,模拟二十分钟的配送时间。林枫把车停在楼下等了二十分钟才上楼,确保时间足够真实。
到家之后林浩在餐桌上把十份菜一份一份打开,每一份都拍了照片,然后逐个品尝。
鱼香肉丝:酱汁渗透了底下的米饭,饭偏软,但味道还在。他在笔记本上写:鱼香肉丝,饭偏软,可接受。
回锅肉:五花肉在密封盒里出了油,油渗到了底下的配菜上,卖相差了一点,口感变化不大。他写:回锅肉,出油,卖相差。
宫保鸡丁:花生米在密封盒里闷了二十分钟,皮不脆了,嚼起来像软豆子。他写:宫保鸡丁,花生不脆。
麻婆豆腐:豆腐碎了一半,卖相不好,筷子夹起来就散。他写:麻婆豆腐,碎,卖相差。
水煮肉片:汤洒了,保温袋里一片红,其他菜也被泡了。他写:水煮肉片,汤洒,不建议外卖。
他看完了所有的测试结果,坐在餐桌前想了一会儿。灶台上的火关了,厨房里很安静,只有冰箱压缩机的嗡嗡声。他把笔记本翻到新的一页,写下了调整方案:水煮肉片不上外卖。麻婆豆腐外卖版改用老豆腐代替嫩豆腐,老豆腐耐颠簸,不容易碎。宫保鸡丁外卖版花生米单独装一小包,客人收到之后自己撒上去,保持酥脆。
第二天中午他把调整方案跟林晨说了。林晨看了一眼笔记本上的记录,点了点头。菜品调整我在小程序和外卖平台上同步更新。
林浩说完就回厨房备料了。
林枫负责外卖的日常运营。他每天上午在两个平台上看单子、调配送时间、回复客人评价。骑手到店取餐的时候他站在门口确认订单,手里拿着出餐单,一个单号一个单号地对。这是他管工地的习惯延伸过来的,每一批材料进场他都要点数,每一份外卖出餐他也要对单号。有一次一个骑手拿了隔壁店的单子走进来,林枫看了一眼单号就把人拦住了:5307不是我们的,隔壁湘菜馆的。
骑手愣了一下,看了一眼手机上的订单,转身出去了。
第一个星期的数据:外卖营收三千二,扣掉平台佣金百分之二十,实际到手二千五百六。加上包装成本,每个餐盒三毛五,打包袋一毛五,筷子勺子两毛,每份包装成本七毛。一周一百零五单外卖,总包装成本约一百五十块。外卖净营收约两千四。
林枫坐在收银台后面,拿计算器按了一遍。他的手指在按键上敲得很快,数字一串一串地出来,记在笔记本上。按完之后他抬头看了一眼正在看后台数据的林晨。
一天两千四的外卖营收,扣掉佣金和包装,净到手大概一千八左右。他把计算器往桌上一放,利润率比堂食低一半。但这是增量,不做外卖的话这一千八也没有。
林晨看了一眼他记在笔记本上的数字,没有接话。外卖的利润率确实低,但外卖有一个堂食没有的优势:不占座位。堂食客人要坐在店里吃十八分钟,外卖客人从下单到取餐只需要两分钟。如果外卖出餐够快,一个骑手一次可以取走三到四份,相当于堂食翻台的零点三倍。但厨房出菜的时间是同一条线上的,外卖和堂食共用一个灶。
外卖出餐时间控制在五分钟以内。林晨在数据表上标了一行,超过五分钟骑手会催,催了会影响堂食出餐节奏。
林浩想了一下。外卖优先出。
林晨点头。
骑手在门口等,一分钟就是差评。林浩说完就回厨房去了。
他做了一个调整:外卖订单的小票用不同颜色区分。堂食单白色,外卖单黄色。林浩看到黄色小票从传单口递进来,优先出餐。白色小票可以等一分钟。这一分钟的优先权让外卖出餐时间从平均五分半钟压缩到了四分四十秒。林浩在灶台上的操作也做了调整:外卖的菜先起锅,堂食的菜起锅之后在保温台上放三十秒等装盘,这三十秒刚好够他回头把外卖的打包盒封口。
小吴也做了配合。骑手到店取餐的时候,她在收银台前面划出了一小块区域,放了三把折叠凳。骑手等餐的时候不用站在门口堵路,可以坐在凳子上等。这个改动是林枫提的,他说工地上等材料的车也要有地方停,不能堵在门口。
两周之后,外卖日均订单稳定在二十五到三十单。加上堂食,日均总营收冲过了五千五百块。林枫看着手机上的数据汇总,在笔记本上画了一个圈,圈里写了5500三个数字。他在数字旁边画了一条短线,写了两个字:稳了。
外卖的菜品菜单还在持续调整。林浩每周做一次外卖测试,把上周末卖得最好的五道菜重新做外卖版,模拟配送时间,然后逐个尝一遍,看看有没有需要改的地方。第二周的测试结果显示鱼香肉丝的饭偏软问题解决了,他在外卖版里把饭和菜分装两个格子,酱汁不会直接泡在饭上。宫保鸡丁的花生米单装之后恢复了酥脆,客人反馈不错。麻婆豆腐换了老豆腐之后碎的问题基本解决了,卖相差一点但至少筷子夹得起来。
林晨把外卖菜单的调整同步到了小程序和两个外卖平台上。每周更新一次菜单,每次更新都有数据追踪:哪些菜点单率高,哪些菜差评多,哪些菜利润率好。他在后台做了一张表,把十道菜的外卖表现排了个序。回锅肉排第一,点单率最高,差评最少。鱼香肉丝排第二,调整之后差评率下降了。宫保鸡丁排第三,花生米单装之后客人反馈明显好转。
排最后的是麻婆豆腐。虽然换了老豆腐,但外卖的卖相始终不如堂食。林浩看了数据之后说了一句:麻婆豆腐先下架。林晨点了点头,在外卖平台上把麻婆豆腐的售卖状态改成了下架。
林枫在笔记本上记了最后一行:外卖两周,日均25-30单,净营收约2400/周。他在数字下面画了一条横线,写了个括号:(增量)。
外卖上线第一天,中午十二点到一点,一共接了十四单。小吴一边收银一边处理外卖平台的订单,手忙脚乱地出了两个错。一个是地址写错了,骑手送错了楼。另一个是备注没看到,客人写了不要葱但出了葱。林浩在厨房里听到了小吴的慌张,抬头扫了一眼出餐口,继续炒菜。第一天的错误是正常的,第二天会好一些。第二天果然好了一些。小吴把外卖订单的处理流程简化了,平台来单的时候手机会震动提醒,她先看备注再打单,错误率降到了零。林浩在厨房里出外卖的菜优先做,因为骑手在门口等,晚一分钟就是一个差评的风险。
第318章 外卖挑战
外卖做了三周之后,差评来了。
那天下午两点,店里过了午高峰,林枫坐在收银台后面翻手机。美团商家后台的消息提醒跳出来的时候他没在意,以为又是系统推送的广告。他随手点进去,看到一条两星评价,配了一张照片。照片拍得不太清楚,光线上暗下亮,像是用一只手端着盒子另一只手按快门拍的。但内容看得足够清楚:麻婆豆腐的盒子打开之后,豆腐碎了大半,红油汤洒得到处都是,浸到了米饭上,白饭染成了一片橙红色。评论写的是:豆腐碎了,汤洒了。不会再点。林枫看了一眼评价的日期,三天前——那是麻婆豆腐从外卖菜单下架之前的最后一批订单。
林枫盯着那张照片看了几秒。他点开评论者的主页看了一眼,是个新账号,只有一条评价,就是这一条。他把评论往下滑了滑,看看这个客人之前有没有给过其他店差评。没有,只这一条。他翻回照片,放大看了一眼盒子的形状,方形塑料盒,是他们现在用的那种七百五十毫升的。盒子侧边有一条渗出来的红油痕迹,从盖子缝里流出来的。米饭那一侧的小盒也被波及了,白饭上沾了几点橙红色的油渍。
他把手机递给正在备料台切葱姜的林浩。林浩擦了擦手,接过手机看了一眼照片,没说话。他把手机还给林枫,转身从冰箱里拿出一盒嫩豆腐,从储物柜里拿了一个方形塑料盒和一个圆形铝箔盒摆在灶台边。
他在厨房里做了一份麻婆豆腐外卖版。切块、焯水、炒料、下豆腐、收汁,每一步都跟堂食的流程一样。装盒的时候他特意把豆腐一块一块用勺子舀进去,没有倒。盖上盖子,用手指沿边按了一圈确认密封。然后他端起盒子,模拟骑手骑车的颠簸,左右摇晃了三十秒。
打开盖子看:豆腐碎了两块,汤没有洒,但盒边有渗出。红油顺着盖子缝隙渗到了盒外壁,手指按上去沾了一层油。
老豆腐不够硬。他说。
林枫站在厨房门口看着他整个过程。怎么办?
换盒子。
林浩蹲下去,从备料台下面的储物柜里翻出两种外卖盒样品。一种是现在用的方形塑料盒,七百五十毫升,盖子扣合式,四边各有卡扣但密封性一般。另一种是圆形铝箔盒,八百毫升,带铝箔盖可以折叠密封,弧形侧壁。他把两种盒子摆在灶台上,重新做了一份麻婆豆腐,分装进两个盒子里。
方形盒:豆腐装进去之后还有晃动的空间,汤汁顺着缝隙渗到盖子边缘,盒壁有两条油渍。圆形铝箔盒:豆腐贴着弧形盒壁排列,汤被弧度兜住,铝箔盖折叠压紧之后几乎没有缝隙。
他把两个盒子分别摇晃三十秒。方形盒里的豆腐又碎了一块,汤从盖子缝隙渗出来沾了手,米饭那一侧的小盒子也被波及,沾了几滴红油。圆形铝箔盒里的豆腐完整,汤没有渗出,铝箔盖压得紧实,整盒拿在手里倒过来都不会漏。
圆形盒汤不容易洒,豆腐不容易碎。林浩把两个盒子并排放在出餐口上,用手指点了点圆形铝箔盒的盖子,每单多两毛。
林枫在心里算了一下。每天外卖二十五到三十单,其中麻婆豆腐大概占六单。每单多两毛,一天多一块二,一个月多三十六块。三十六块换零差评,值。他没犹豫。
林浩没接话。他转身回到灶台前,重新做了一份麻婆豆腐装进圆形铝箔盒里。封口、摇晃、打开,豆腐完整,汤没有渗出。他把这个盒子放在出餐口旁边,让林枫拍照。
把这个照片回在评论下面。林浩说。
林枫拍了照。照片里圆形铝箔盒打开之后,豆腐整整齐齐浸在红油里,汤汁没有外溢,米饭用单独的小碗装着,干干净净。他在评论下面回复了一段话:感谢反馈,我们已更换包装,麻婆豆腐现在使用圆形铝箔盒,防洒防碎。欢迎再次尝试。
回复发了之后没有立刻有效果。差评不会因为一条回复就消失,评分也不会一个晚上回升。但林枫做了另一件事。他让小吴在每一份外卖的袋子里放了一张小卡片,名片大小,白底黑字,上面写着:如有任何问题,请拨打本店电话,我们会第一时间解决。卡片下面印着店里的手机号。
小吴拿着一沓卡片问了一句:放这个有用吗?
至少让客人知道可以找我们。林枫说,比差评挂在那里没人管强。
卡片放出去之后的三天里,店里接到了四个电话。两个是问地址的,一个是说少放了筷子,一个是说汤洒了。少放筷子的那个林枫让阿伟顺路带了一双筷子过去,汤洒了的那个林枫直接退了款。四个电话,零差评。
第二条差评来得更棘手。不是菜品问题,是配送时间。一个在科技园南区写字楼上班的客人点了一份外卖,等了五十分钟才送到。骑手在南区迷了路,绕了十五分钟才找到那栋写字楼的入口,进了园区又走错了楼栋号。菜到了之后已经凉了,宫保鸡丁的花生米不脆了,回锅肉的五花肉表面凝了一层白油,筷子夹起来能看见油脂在灯光下反光。
这个问题的根源不在菜品,在配送。林枫打开美团商家后台拉了最近一周的数据。晨枫快餐的平均配送时间三十五分钟,但波动极大。快的时候二十分钟,慢的时候超过五十分钟。他看了看每单的明细,发现大部分超时集中在两个时段:十一点四十五到十二点十五的高峰期,以及科技园南区的远距离订单。高峰期骑手不够用,单子积压在系统里排队。远距离订单骑手不熟路,绕路浪费时间。
配送时间我们控制不了。林枫跟林晨说。
能控制一部分。林晨打开小程序的后台数据,把出餐时间和骑手等待时间分别拉了出来。我们店的出餐时间平均四分四十秒,从出餐到骑手取餐平均等三分钟。出餐时间我们已经优化了,骑手等待时间可以压缩。
他做了一个改动:在小程序上加了一个建议配送时段功能。客人在下单的时候可以选择12:00-12:1512:15-12:30的配送时段,系统会提前十五分钟把订单推到厨房,林浩按时间段备餐,骑手到店的时候菜刚好出锅。这样骑手等待时间从三分钟压缩到了一分钟。
但平台那边的配送时间还是没法控制。林枫试过跟美团的区域经理沟通,发了三条消息,等了两天才收到回复。回复很客气但效果不大:您店的单量在区域内占比不高,暂时无法保证优先派单。
林枫把这段话转给林晨。林晨看了一眼,说了一句意料之中的话:他们不会为了一个日均三十单的店调整调度算法。
那天晚上九点,店里打扫完之后,林枫坐在收银台前算了一笔账。外卖营收三千二百,平台佣金六百四,包装成本三百五十,食材成本八百五十。外卖的净利率只有百分之二十二左右,比堂食低了不止一截。但外卖的绝对利润一天大概七百块,加上堂食的一天三千多,总利润接近四千。
外卖的利润率虽然低,但它是增量。林晨在电子表格上画了一条线,把堂食和外卖的利润分列出来,堂食的天花板是翻台率,一天最多翻四轮,每轮八张桌子,每桌平均消费二十三块,一天堂食营收最多七千多。外卖没有这个天花板,厨房出餐能力是上限,不是座位数。
林枫想了一下。所以我们要做的是提高外卖出餐速度,而不是减少外卖。
对。外卖是增量,堂食保基本盘。
林浩在厨房里听到了两个人的对话。他站在备料台前,把今天的外卖订单数了一遍,三十二单,比上周多了两单。他在笔记本上写了两行字:外卖出餐速度4分40秒,目标4分钟。圆形铝箔盒,每单成本+0.2元。写完之后他把笔记本合上,放进灶台下方的抽屉里。
差评出现在第三天。一个客人点了一份水煮肉片外卖,收到的时候汤洒了一半,碗底的油渍浸透了包装袋。他在平台上给了一星差评,写了三个字:汤洒了。林浩看到差评的时候正在备料,他放下刀瞥了一眼手机屏幕,然后继续切菜。水煮肉片不上外卖,他之前就跟林晨说过。但美团后台更新菜单的时候出了个bug,已经下架的菜品短暂重新上线了半天,这个客人正好在那半天里下了单。
林晨在系统里把水煮肉片从外卖菜单里下架了。这道菜只能在店里吃,汤太多,碗太大,不管怎么包装都会出问题。他同时把外卖菜单做了一次调整,只保留打包方便的六道菜:鱼香肉丝、回锅肉、宫保鸡丁、麻婆豆腐、干煸四季豆、酸豆角炒肉末。 差评处理完之后,林浩在厨房里把所有外卖包装重新检查了一遍。塑料盒的盖子扣紧了没有,封口膜贴平了没有,汤碗有没有换成深底的。他一样一样地看,看了十分钟,把两个盖子松的盒子换了新的。阿伟在旁边看着,没说话,但他记住了:盖子扣完要用力按一下,听到咔嗒一声才算扣紧。第二天中午外卖出餐的时候,阿伟把每一个盒子都按了一下。
第319章 自建配送
林枫提自建配送的想法是在一个下雨天。
那天中午下了暴雨。鹏城七月的雨来得急,十分钟之内科技园中区的路面就积了水,写字楼下挤满了躲雨的人,便利店门口的遮雨棚下站了三层。外卖订单在十二点到十二点半之间暴涨了三倍,平时走路就能来吃饭的白领们全改了外卖。晨枫快餐的美团和饿了么订单同时亮起来,厨房里的出餐口堆了七八份等着骑手取的袋子,袋子排成两排摞在一起,最底下的那份宫保鸡丁袋子被压得有点变形。
但骑手严重不足。林枫站在门口看着手机上的订单状态一栏一栏变红,骑手赶往商家的提示停了五分钟才变成骑手已取餐。三份订单因为超时被取消,一份因为汤洒了被差评。那个差评的客人留了一句话:等了一个小时,汤洒了半袋,不吃了。
林枫站在店门口看了一阵。雨还在下,骑手们穿着黄色和蓝色的雨衣在雨里穿梭,电动车在积水的路面上压出两条白线,溅起的水花打在路人的裤脚上。有两辆电动车在路口打滑,骑手一只脚撑在水里才稳住。他看了十分钟,回店里的时候衣服袖子湿了半截,额前的头发也沾了水珠。
自己送怎么样?他跟林晨说了一句。
林晨正在收银台后面用笔记本电脑看小程序的数据。他抬头看了林枫一眼,没有立刻回答。他把当天上午的外卖数据拉了出来,分成自送单和平台单两列。十二点之前的自送单(一公里以内)平均送达时间十八分钟,平台单(一公里以外)平均送达时间四十二分钟。三份平台单因为超时被取消,那份被差评的也是平台单。
自己送意味着招人。林晨在电子表格上新建了一行,开始算账,招两个配送员,每人每月工资四千五,加上电动车和保温箱的投入,一个月成本大概一万。平台佣金按百分之二十算,一公里以内的自送单每天大概二十到二十五单,每单省四块六左右,一个月省三千四百五十块。自建配送的成本是省下来佣金的三倍。
林枫没接话。他在心里算了另一笔账:三份取消的订单意味着三份食材白白浪费,加上重新做的份量和包装材料,直接损失大概一百二十块。一份差评可能影响之后二十个客人的选择,这些是平台数据里看不到的成本。
但自建配送的速度可控。他说了一句。
可控但覆盖不了全部区域。一公里以外的单子还是要走平台。
那就混合。一公里以内自己送,一公里以外走平台。
林晨想了一下。混合模式意味着两套系统并行。自建配送覆盖科技园中区写字楼群,优势是速度可控、没有佣金,劣势是覆盖范围小、需要管理配送员。平台配送覆盖更远的区域,优势是覆盖广、不用管人,劣势是佣金高、速度不可控。他在电子表格上画了一个简单的矩阵,把两种模式的优劣势分别填进去,然后在最下面加了一行估算数据。
先试一个月。林晨在电子表格上加了一行,把自建配送的预算填进去,招两个配送员,月薪四千五,包电动车和保温箱。一公里以内自送,超过一公里走平台。对比一个月的数据,看哪个划算。
林枫第二天就招到了人。他在58同城上发了招聘信息,标题写的是科技园快餐店招配送员,月薪四千五包车,当天下午就收到了七条消息,第二天来了三个人面试。面试在店里做,上午十点,厨房还没开始忙。第一个人是刚从快递公司辞职的小伙子,二十三岁,说自己跑过半年快递,对科技园的路很熟。他说话快,走路也快,面试的时候林枫让他从店里走到门口再走回来,六步,一步不拖。第二个人是四十二岁的中年男人,之前在另一个快餐店做了两年配送员,那个店关了才出来找工作。他话不多,但回答问题很稳,问他外卖洒了怎么处理,他说先跟客人道歉,再看是退单还是补送,最后拍照报给店里。第三个人太年轻,十九岁,看起来不太靠谱,说话的时候眼睛不看人,问他对科技园熟不熟,他说还行,但让他指方向的时候手指乱晃。
林枫选了第一个和第二个。小伙子叫小赵,二十三岁,手脚快话少。中年人叫老王,四十二岁,稳当,对配送流程很熟。两个人各配了一辆电动车和一个保温箱。林枫从五金店买了两把车锁,从网上订了两个防雨罩,第二天就到货了。
培训花了一个下午。林枫把科技园中区的地图打印出来,用红笔标出了所有写字楼的位置和入口方向,用蓝笔标出了从店里到每栋写字楼的最短路线。小赵和老王各拿了一份地图,林枫让他们从店里出发,分别去三栋写字楼送一趟模拟单,计时。小赵第一次跑花了二十二分钟,在第二栋写字楼的地下车库入口绕了一圈才找到正确的电梯。老王花了二十六分钟,每到一个路口都要减速看门牌号。
林枫让他们把跑错的路口在地图上标出来。小赵标了三个点,老王标了五个。两个人又跑了一遍,小赵十五分钟,老王十九分钟。林枫让他们把科技园中区的所有写字楼画了一张路线图,标注每个写字楼的入口方向和电梯位置,贴在电动车的后备箱内侧,送餐的时候低头就能看到。
两天之后,两个人的配送时间都压缩到了十五分钟以内。小赵最快的一次十二分钟,老王稳定在十三到十五分钟之间。十五分钟比平台平均快了十五分钟。
客人的反馈很直接。一公里以内的外卖订单,从下单到送达平均二十分钟,比平台快了一半。差评没了,好评多了。有一个客人在小程序上留了一条评价:终于有家快餐店的外卖不用等一小时了。另一个客人打电话来说:你们家的麻婆豆腐最近没洒过了,之前点别家每次都洒。还有个在写字楼上班的姑娘,连续三天点了自送单,第三天在外卖袋里放了一张便利贴,上面画了个笑脸。
但自建配送的覆盖范围确实有限。超过一公里的订单还得走平台,平台的配送时间在高峰期依然不稳定。林枫试过把一公里的范围扩大到一点五公里,结果小赵和老王的配送时间从十五分钟涨到了二十分钟。路程远了,等红绿灯的时间长了,找写字楼门牌号的时间也长了,二十分钟的配送时间跟平台差距不大,自送的优势没了。
一公里是合理的覆盖半径。林枫在笔记本上写了一行字。他把科技园中区的写字楼和地标画了一个圈,圈内的走自送,圈外的走平台。
小赵和老王跑了三天之后,林枫发现另一个问题:中午高峰期的十一点四十五到十二点十五这半小时里,自送单量集中爆发,两个人跑不过来。最忙的时候小赵同时带了三份单,两份挂在电动车把手上,一份塞在保温箱里,老王两份,厨房出餐口排了四份袋子等取。
林枫把这个问题跟林晨说了。林晨在小程序上做了调整:一公里以内的自送订单在高峰期分时段限量,每个时段最多接受十五单,超出的自动转入平台配送。这样既保证了自送的质量,又不至于让客人等太久。
调整之后的中午高峰期变得有序了。十一点四十五到十二点之间的十五单由小赵和老王送,十二点到十二点十五的十五单也是两个人送,超出的单子走平台。厨房不再堆单,骑手不再干等,客人的等待时间从平均三十五分钟降到了二十分钟以内。
混合模式跑了两个月之后,林晨做了一张对比表。自建配送的单均成本三块八,包括人力和折旧分摊。平台配送的单均佣金四块六。自建配送比平台便宜八毛钱一单,加上配送速度更快、差评更少、好评更多,整体性价比高于平台。他在电子表格上标了一行:自送单日均二十七单,平台单日均十八单,自送占比百分之六十。
但自建配送有一个人数上限。两个配送员最多每天送五十单,超过五十单就要加人。现在每天的自送单量在二十五到三十单之间,两个人刚好能覆盖。如果单量增长到四十单以上,就需要第三个配送员。
林枫说了一句:先不急。等到四十单再招人。
他管了十几年的人,知道多招一个人不只是多一份工资的事。多一个人就多了排班和管理的成本,两个人好管,三个人需要制度。等量到了再加人,是最稳妥的做法。他在笔记本上记了一行:自送单日均27单,配送员2人,上限50单。40单以上考虑招第3人。他合上笔记本的时候,林枫从店门口走进来,雨衣上还在滴水。他把手机递过来,屏幕上是一张照片——科技园中区新开了一家川菜快餐,门头招牌刚挂上去,红色灯箱,字还没通电。
第320章 第三个月盈利
七月份的数据出来了。
林枫把财务报表摊在收银台旁边的桌子上。他现在用了一个新的记账本,A4大小,浅蓝色封皮,每一页都是手画的表格,字迹跟他管工地时的工程预算表一样横平竖直。栏目从左到右依次是:日期、堂食营收、外卖营收、食材成本、人力成本、租金、水电燃气、平台佣金、自建配送、包装材料、净利润。每一行都是一天的数据,最后一行是月合计。数字写得密密麻麻但清晰可辨,小数点对齐在一条竖线上,像印刷出来的一样。
月营收十九万三千。他念出来,堂食十三万八,外卖五万五。
林晨在旁边用笔记本电脑同步更新电子表格。他看了一眼林枫的数字,跟自己屏幕上的一样,点了点头。
食材成本四万九,占比百分之二十五点四。林枫继续念,手指沿着表格一行一行往下移,人力两万五千八,跟第二个月持平,五个人的工资,不算配送员。租金两万五。水电燃气七千,七月开空调了,比六月多了两千。外卖平台佣金四千二,只算一公里以外走平台的单子。自建配送九千六,两个配送员工资九千加电动车折旧六百。包装材料两千四,外卖盒、袋子、筷子勺子都在里面。
他用笔在最后一行画了一条横线,把所有成本加了一遍。数字在纸上排成一列:、、、7000、4200、9600、2400。他竖着加了一遍,又横着核了一遍,确认无误。
总成本十二万三千。他报出数字,然后做减法,营收十九万三千减去总成本十二万三千,净利润七万。
七万出头。
林浩在厨房里听到了这个数字。他正在擦灶台,晚上七点,店里已经没客人了,他在做收尾工作。不锈钢灶面被他擦得发亮,抹布叠成四折擦一遍,翻面再擦一遍,最后用干布收一遍水渍。擦完之后他把抹布洗干净挂在钩子上,走出来看到林枫写在纸上的数字。
七万整。他轻声重复了一下。
林晨在电子表格上更新了数据。第三个月,营收十九万三千,净利润七万。五十万的总投资,前三个月累计净利润四万加七万加七万等于十八万。他拉了一下回本时间线,按目前的速度,八到九个月能回本。
分红方案。林晨把电子表格切到另一个页面,手指在键盘上敲了几下,净利润七万,留百分之四十预备金两万八千。剩下的四万二千按股权分配。我百分之六十分两万五千二,林枫百分之二十五分一万零五百,林浩百分之十五分六千三百。
加上林浩每月八千的薪资,他这个月的总收入是一万四千三百。加上之前两个月,他三个月累计收入四万出头。他在手机上算了一下,他来鹏城之前在东莞电子厂的月薪是四千二,三个月一万二千六。现在三个月赚了四万出头,是那时候的三倍多。这个数字他没有告诉任何人,只是扫了一眼就锁了屏。
他把手机放回口袋,走回厨房。灶台已经凉了,锅挂在墙上,铲子竖在锅旁边的架子上。他站在备料台前面,把明天要备的料在脑子里过了一遍。鱼香肉丝八十份,回锅肉八十份,宫保鸡丁五十份,麻婆豆腐五十份。这四道菜是外卖和堂食的走量款,每天备料数基本稳定。水煮肉片和其余菜品的备料他明天早上再看当天的订单量调整。这些数字他不用写在笔记本上,已经刻在手里了。
林枫把报表折起来放进口袋。他算了一下自己的收入,三个月分红加起来两万七,加上之前在建筑公司最后几个月的工资存款,他手上的现金比来鹏城之前多了不少。但他没有动这笔钱,分红全部存进了一个单独的账户,那是他的股本金收益,不碰。
他瞥了一眼收银台旁边贴的员工排班表。七月份排了两个新来的兼职生,一个周一到周五中午高峰期来帮忙端菜收盘,一个周末全天补小芳的休息日。兼职的时薪十五块,一个月下来人力成本多了一千八。林枫在排班表旁边写了一行字:兼职人力占人力总成本8%,高峰期产出占比12%。投入产出比合格。
第四个月。林枫站起来,手指在桌面上敲了两下,如果第四个月也能稳在七万以上,九个月回本是确定的。
林晨在电子表格上拉了一条预测线。如果第四、第五、第六个月的净利润分别保持在六万五、七万、七万五,考虑到八月淡季可能小幅回落,六个月累计净利润大约三十八万到四十二万。加上前三个月的十八万,九个月的总净利润大约五十六万到六十万。五十万的投资在第八到第九个月可以回本。他在预测线旁边又加了一条保守线,假设七八月净利润降到五万五,回本时间推到第十个月。两条线之间的区间就是他的预期。
比预期慢一点。林晨说,我之前算的是七个月回本,现在看要八到九个月。
淡季回落多少?
七八月堂食平均下降百分之十五左右,外卖上升百分之二十。一降一升,总营收可能持平或小幅下降。但外卖利润率比堂食低,所以净利润可能会从七万出头降到六万多。
林枫想了一下。那七月份的七万出头可能是这几个月的高点。
可能是。也可能不是。得看八月份的数据。
林浩从厨房里走出来。他手里拿着笔记本,翻到今天的页面扫了一眼,然后合上放进口袋。笔记本上记的是明天的备料清单和今天的出餐数据,没有别的东西。
七万出头。他看了一眼林枫的报表,说了一个数字。
净利润七万出头。林枫确认。
林浩点了一下头。他没有说高兴,也没有说不高兴。七万对他来说是一个数字,这个数字的意义是:他三个月前从酒店辞职的时候做了一个正确的决定。他在笔记本上写了一行字:7月净利润。然后把笔记本合上,放回口袋。
他走到厨房门口,回头瞥了一眼灶台。两口锅都挂好了,铲子归位,抹布叠得整整齐齐放在水槽边。阿伟已经走了,案板上的备料碟码成了两排,明天一早他只需要从冰柜里拿出来就行。小刘把最后一批碗放进消毒柜,按了启动键,紫外线灯亮了,嗡嗡地转了起来。
林枫把店里的灯关了一半,只留了收银台上面的一盏。三个人各自收拾了东西。林浩穿上外套走向公交站,公交站离店三百米,最后一班车是十点半,今天赶得上。夜风吹过来,把门口的塑料门帘吹得哗哗响。林枫走向停车场,他的车停在写字楼地下一层,月租四百。林晨开车回家,路上经过菜市场,明天早上顺路买一些小葱和香菜。
苏婉在客厅里看书,乐乐在写暑假作业。电视开着,声音压得很低,播的是一档晚间新闻。客厅的灯开着,乐乐趴在茶几上,作业本翻到第三页,铅笔咬了一排牙印。
今天怎么样?苏婉问。
第三个月,净利润七万出头。
苏婉翻了一页书。那你可以给我换个新书包了,乐乐的书包拉链坏了。
林晨笑了一下。他把车钥匙放在玄关的托盘里,走进卧室换了衣服。七万出头,这个数字在晨枫快餐的账上已经算得上稳定了。第一个月保本运行,第二个月开始盈利,第三个月稳定盈利。趋势是对的,数字在往上走。他打开手机看了一眼外卖平台的数据,七月份外卖日均订单从二十三单涨到了三十单,客单价稳定在十八块左右。外卖的利润率比堂食低,但走量之后利润的绝对值在增长。他翻了一下前三个月的对比数据,每个月的环比增速在放缓,从百分之十五降到了百分之八。这是正常的,基数大了增速自然会下来。
书包明天买。林晨走进客厅,在乐乐旁边蹲下来看他的作业。数学第三页,加减法混合运算,乐乐的字歪歪扭扭地写在格子里,有两个算错了。他用手指点了一下那两个错题,乐乐擦掉重新写。
林晨在电子表格的最后一行写了一个词:可行。然后他关上电脑,去客厅帮乐乐检查暑假作业。
乐乐算完了题,把作业本递给林晨看。林晨看了一遍,两个错题改对了,又有一个新错误,九乘八等于七十二写成了七十四。他点了一下,乐乐嘟着嘴擦掉重写。苏婉合上书,走过来看了一眼作业本,在乐乐头上摸了一下。乐乐把作业本收进书包,跳下沙发跑进房间,客厅里只剩下电视的声音。林晨坐在沙发上,看了一眼手机上的投资账户余额,四百四十万,这个月又多了近二十万。FinGpt在自动运行,不需要他做什么。他把手机放在茶几上,靠在沙发背上闭了一会儿眼睛,然后站起来去洗澡。
第321章 林浩的成长
林浩站在灶台前面的时候,跟三个月前已经完全不一样了。
三个月前试营业的那天,他站在两口灶中间手忙脚乱。新灶的火候要一个个试,油温升速比预估快两成,翻炒时间要重新算,花生米起锅时间要提前五秒。备料台上八份菜排着队,他额头冒汗,眼睛盯着锅底,嘴里默数着秒数。阿伟在旁边切土豆丝切得慢,他催了两次也没快多少,最后干脆自己上手切了一批。那天中午出了四十二份菜,其中三份他不太满意,酱色偏深了一点,但他没时间重来。
现在他站在同一个位置,左手颠锅、右手拿铲,两口灶同时出菜。手掌悬在锅上方两秒,热浪的强度就告诉他油温到了几成。他不需要看秒表,手感就是刻度尺。颠锅的时候手腕一翻,锅里的食材稳稳地翻了个面,没有一片掉出锅沿。油温到了该下肉丝的时候,他不需要看温度计,手背在锅上方掠过的那一下就够了。
这种变化是七十二份、七十八份、八十五份菜一天一天地炒出来的。他的手掌比三个月前多了几道烫伤的疤痕,最明显的一道在右手虎口,颠锅的时候油溅上去留下的。起水泡的时候他没贴创可贴,也没涂烫伤膏,就那么裸着,炒菜的时候不影响握锅。水泡破了之后结了痂,痂掉了留下一块深色的印子,摸上去硬硬的。手掌上的老茧厚了一圈,食指和中指的指腹摸上去像砂纸。
阿伟的进步也看得见。他刚来的时候切一份土豆丝要四十秒,现在切同样的量只要二十五秒。刀功的提升靠的是每天的重复,早上七点到十一点,他切备料要用的所有蔬菜和肉类。鱼香肉丝的肉丝、回锅肉的五花肉片、宫保鸡丁的鸡丁,每一种形状都形成了肌肉记忆。林浩不需要检查他的备料了,阿伟放在备料台上的碟子跟林浩自己备的没有区别。
这天上午备料的时候,阿伟把切好的土豆丝拨进备料盆里,换了五花肉放上砧板。五花肉在刀下被片成薄片,刀刃贴着肥瘦交界的地方走,每一片的厚度差不超过半毫米。林浩在旁边看了一会儿。
林浩说了一个字。
阿伟没停手,继续切下一份。今天要多少备料?
鱼香肉丝四十五份的量,回锅肉四十份。林浩翻开笔记本,上面写的是数字,没有别的东西。昨天卖了四十二份,今天周五,多备。
阿伟点了一下头,手腕加速,五花肉片在砧板上码成整齐的一摞。他切完五花肉把刀放下,换了把小刀开始去鸡丁上的筋膜,动作快而稳,跟三个月前判若两人。
小刘的进步在出餐台。他端汤的手不再抖了。三个月前第一碗汤洒了的时候他紧张得手心出汗,碗沿滑了一寸,汤溅到桌面上,客人抬了一下眉毛没说什么,但小刘的耳朵烫了一整个中午。那天他端了二十多碗汤,手一直在抖。林浩什么都没说,只是收餐的时候帮他把桌子擦干净了。
现在小刘一只手端三碗汤稳稳地送到桌上。三碗汤的碗沿齐平,汤汁一滴不洒。他托盘的角度、手指的力度、端汤时小臂的角度,三个月下来全有了分寸。他学会了看单子上的备注,画一个圈,画一个方框,不要葱画一个叉。他把这些符号记在脑子里,端菜出门之前会扫一眼确认。有一次单子上画了两个圈,他看了一眼就知道这是老客人了,两个圈代表特别少辣。他端菜过去的时候没问,客人接过去也没多说一句,两个人之间像有一条看不见的线。
中午十一点四十五分,店里开始忙了。前厅的座位一个一个坐满,下单的提示音此起彼伏。小吴在收银台后面一边收钱一边打单子,手指在屏幕上敲得飞快。她现在不需要抬头看客人的脸就能认出回头客,系统里有每个会员的消费记录。
十二点十分,店里来了八个人同时下单。八份不同的菜,三份鱼香肉丝、两份回锅肉、一份水煮肉片、一份糖醋排骨、一份干煸四季豆。以前遇到这种情况林浩会先在脑子里排出餐顺序,但现在他的手已经在动了。一号灶鱼香肉丝和回锅肉并行,二号灶水煮肉片开始预制,糖醋排骨的卤排骨已经在蒸柜里热着。
灶台上的火苗蹿起来,油烟从锅沿翻滚着往外冒。林浩左手颠锅,右手用铲子翻了一下肉丝,手腕一转,锅里的食材翻了个面。油温到了,他抓了一把花椒丢进去,锅里炸出噼啪的声响。另一口灶上回锅肉的蒜苗刚下锅,他侧过身子看了一眼火候,颠了两下锅,出餐。
二号。他喊了一声。
小刘从窗口接过盘子,扫了一眼单子,送到了二号桌。
三分钟后。五号。又是一盘鱼香肉丝出了灶台,小刘接到手里,转身就送。厨房里的节奏像一台磨合好的机器,每个零件都在精确的位置上运转。阿伟把备料碟从备料台推到灶台边,林浩接过来下锅,整个过程不需要喊一个字。
八份菜全部出完,用了二十二分钟。林浩关小了火,拿毛巾擦了一下额头上的汗。灶台上还有余油在滋滋响,他拿铲子把锅边溅的酱汁刮干净,顺手把灶台擦了一遍。
阿伟在备料台旁边切明天的土豆丝,听到林浩走过来说了一句:明天鱼香肉丝的肉丝切短两毫米。
阿伟停了一下刀。为什么?
肉丝偏长了,不容易裹酱。
阿伟看了他一眼,点了一下头,把刀的角度微调了一点,继续切。刀落在砧板上的声音又快又匀,土豆丝像细线一样从刀刃下面滑出来。他切了两根之后停下来,拿尺子量了一下长度,确认角度调对了才继续。
林浩在厨房里站了三十秒,看了一圈灶台和备料台。然后他拿起抹布把灶台又擦了一遍,把锅挂回墙上,把调料瓶的盖子全部拧紧了一遍。他低头看了一眼自己的手,虎口上的那道疤已经结了痂,摸上去硬硬的。
小刘进来收碗的时候,林浩正在洗锅。水龙头开着,凉水冲在滚烫的铁锅上,蒸汽升起来,模糊了他的脸。锅刷了三遍,第一遍去油,第二遍去味,第三遍过清水。他把锅挂回墙上的时候手很稳,没有一点多余的晃动。
林哥,今天有个客人说鱼香肉丝好吃。小刘把碗放进水槽里。
哪桌?
四号桌,戴眼镜那个。吃完了又点了一份。
林浩没接话。他在笔记本上写了一个数字:42。那是今天鱼香肉丝的总出菜数。他翻了翻前几天的记录,周一38,周二40,周三41,周四43,周五42。他在数字下面画了一条横线,没有写任何别的东西。
阿伟从备料台那边走过来,扫了一眼林浩笔记本上的数字。下周备料再加三份?他问。
林浩想了一下。先加两份。看周一数据再说。
阿伟点了一下头,回到备料台继续切土豆丝。
林晨坐在角落的桌子上看手机。他打开电子表格,把翻台率从四点零改成了四点二。手指在屏幕上停了一下,他又加了一列,标题是菜品微调记录,在第一行写了三个字:肉丝短。
他抬头朝厨房方向看了一眼。林浩正在把明天的备料单写在白板上,字迹歪歪扭扭的但每个数字都清清楚楚。阿伟站在旁边,拿着刀等着,看林浩写完就去切。
灶台上的火已经关了。厨房里只剩下抽油烟机还在嗡嗡转着,和案板上刀落在砧板上的声音,一快一慢,像两台校过步的钟。墙上的温度计指着三十四度,夏天还没走,但厨房里的热浪比一个月前小了,阿伟学会了在出菜间隙关掉多余的灶头,省气也降温。
林晨站起来走到门口。他推开门的时候回头看了一眼厨房。林浩在擦灶台,动作跟三个月前一样,但速度更快了。阿伟在切土豆丝,刀落下的节奏比刚来的时候稳了不少。小吴在收银台后面数今天的流水,小芳在擦堂食区的最后一桌。每个人都在做自己的事,不需要谁催。
他推门走了。外面深圳九月的傍晚还亮着天光,夕阳从写字楼的缝隙里照过来,把人行道染成一片橙色。他站在门口深吸了一口气,往地铁站的方向走。走到路口的时候他回头瞥了一眼晨枫快餐的灯箱,灯箱已经亮了,白光照在人行道上。他转过头继续走,手机震动了一下,是林浩发来的消息:明天鱼香肉丝备45份。他回了一个字:好。地铁站入口的灯光亮着,他走下台阶,刷卡进站。站台上等车的人不少,他站在黄线外面。列车进站的时候带起一阵风,他上了车,在角落里找了个站的位置。手机又震了一下,这次是林枫的消息:明天猪肉价格问一下潮汕老板。他回了一个字:好。
第322章 顾客粘性
八月份的第二个周三,小吴在收银台后面看着手机上的会员系统发呆。
不是发呆,是在数人头。她现在不需要看脸就能认出回头客。系统里有每个会员的消费记录,谁一周来几次、谁每次点什么菜,她全知道。上个月店里注册会员突破了三百人,活跃会员有一百四十多个,这些人的消费占了总营收的六成以上。
穿polo衫的男生走到收银台前面,小吴头都没抬就打了一张单子。鱼香肉丝、一碗饭、不要葱。他扫了一下余额就走了,从进门到出门不超过十五分钟。他叫什么名字小吴不知道,但系统里他的会员编号是00017,第十七个注册的会员,每周二和周四中午准时来,从开业到现在一次没断过。
小吴看着他的背影走出去,在系统里点了一下已消费。她数了数,这个月他已经来了八次,比上个月多了一次。消费总额还是跟以前一样稳定,鱼香肉丝加一碗饭,偶尔加一碗汤。
靠窗二号桌的女客人也来了。她进门的时候二号桌空着,她直接走过去坐下,把包放在椅子上,拿出手机扫码点餐。小吴在后厨窗口看到她的订单弹出来:麻婆豆腐、一碗饭。跟上周三一模一样。
这个女客人点麻婆豆腐的频率从一周两次变成了一周三到四次。偶尔换回锅肉,但永远是那个位置,靠窗、二号桌、面对门口。如果二号桌被人坐了她就坐一号桌,但只要二号桌空着她一定会坐在那里。小吴有一次问她要不要换到里面更凉快的桌子,她摇了摇头。
坐这看得到门口。她说。
小吴没多问。她把单子递进后厨的时候顺便扫了一眼备注栏,麻婆豆腐微辣、不要花椒面。这个备注她已经看过不下二十次了,闭着眼睛都能打出来。
六号桌的四人组也出现了。四个穿格子衫的男生,每天中午十一点五十五分准时到,各点各的菜,吃完一起走。他们之间不怎么聊天,各自低头看手机,但吃饭的速度很同步,几乎在同一个时间放下筷子。然后其中一个人站起来说一句,其他三个人跟着走。
他们四个人消费总额固定在九十二到九十六块之间。小吴甚至能预测他们的消费,如果其中一个人换了糖醋排骨而不是回锅肉,总额就多两块。她把这笔账记在收银系统旁边的便签纸上,不是为了什么目的,就是习惯了。便签纸上已经写满了密密麻麻的数字,最早的一张是一个月前的,上面的铅笔字迹已经开始模糊了。
中午高峰期过去之后,小吴把会员数据导出来,发到了林晨的微信上。
第三周回头客占比58%。她发了一条消息,比上周多了两个百分点。
林晨回了一个字:
然后他在电子表格上更新了回头客数据。第二周52%,第三周58%,第四周63%,第二个月平均60%,第三个月65%。数字在往上走,每周多一到两个百分点。
他切了一个新列出来,标题是回头客单价。数据拉出来之后,他发现回头客的平均客单价比新客高两块钱。回头客加汤的比例比新客高一倍,加饭的比例也高百分之三十。不是因为他们点更贵的菜,而是因为他们点得更多,加一碗汤、加一份饭、偶尔再追加一道菜。
林晨把这个数据圈出来,在旁边写了一个标注:回头客价值等于客单价乘频率。
下午三点,店里没什么客人了。前厅只有两桌人在慢慢吃,小吴在收银台后面整理今天的零钱。林浩从厨房里出来,在收银台旁边坐下,喝了一杯水。他手上的油渍还没洗干净,指甲缝里有一小条红辣椒皮。
今天有个客人跟小刘说回锅肉比上个月好吃。他说。
林晨抬头看了他一眼。哪桌?
六号桌其中一个。他之前每次都点回锅肉,今天又点了,跟小刘说蒜苗比以前脆。
林晨在电子表格上找了一下六号桌的消费记录。四个人的订单,其中一份回锅肉从开业到现在点了二十七次,没有一次换过别的菜。
他上个月点了二十三次。林晨说。
林浩没接话。他把杯子里的水喝完,起身回厨房备料去了。路过备料台的时候他停下来看了一眼阿伟切好的土豆丝,拿两根出来看了看长度,放回去,没说什么。
林晨继续看数据。他把回头客的订单拉出来,按菜品种类排序。鱼香肉丝排第一,占回头客订单的34%。回锅肉第二,占28%。剩下的品类加起来不到40%。
这两个菜就是晨枫快餐的根基。只要鱼香肉丝和回锅肉的味道不降,回头客就不会走。他翻到下一页,在目标栏里写了一行数字:回头客占比63%,目标70%。他盯着这个数字看了几秒,没有写怎么达到70%。能做到的就是继续把菜做好。
他把电子表格关掉,又打开了会员数据看了一会儿。会员编号00017的消费频率从每周两次变成了每周三次,从第七周开始就没断过。靠窗二号桌的女客人在上个月加了三次汤,这个月加了七次。六号桌的四人组消费总额从九十二到九十六变成了九十四到九十八,涨了两块钱,因为其中一个人开始加一份酸辣汤了。
这些数据散落在系统里,每一笔都不起眼,但合在一起就是晨枫快餐的护城河。林晨把手机放回口袋,目光扫过前厅,小吴正在给一个新客人办会员注册。
林浩在厨房里也认识这些回头客。他认单,不认脸。鱼香肉丝多一份葱、回锅肉不要蒜苗、麻婆豆腐微辣不要花椒面,这些备注在小票上反复出现,他看单子就知道是哪个客人。有时候单子还没到窗口,他已经在备料了,因为那个备注他记得太熟了。
有一次中午高峰,鱼香肉丝多一份葱的单子刚从打印机出来,林浩已经在往锅里倒油了。阿伟在旁边瞥了一眼单子,又扫了一眼灶台上已经翻滚的油锅,什么也没说,默默递过下一份备料。两个人配合了三个月,这种默契已经不需要多解释。灶台上的油烟顺着抽风口往上走,林浩翻了一下锅,菜落进盘子里的声音干脆利落。
有一天中午,一个老客人的备注变了,从变成了。林浩看到单子的时候停了一下,手悬在调料架上方,多抓了一勺辣椒。然后他多做了一份中辣的麻婆豆腐端出去。客人吃了一口,抬头看了一眼厨房方向,没说话。
第二天中午,同一个人的备注变成了中辣,加一份饭。
林浩在白板上把麻婆豆腐的备料数加了两份。阿伟扫了一眼白板上的数字变化,没有问为什么,只是多切了两份豆腐。
林浩在备料台前面把这条备注记在笔记本上。他写的只是:三号桌,微辣改中辣,加饭。没有写任何别的东西。但他在备料的时候多备了两份中辣的麻婆豆腐调料,因为他知道这条备注还会出现。
他看了一眼备料台上码好的碟子。阿伟今天切的所有备料都按标准码好了,土豆丝的长度统一,肉丝的粗细一致,鸡丁的筋膜剔干净了。三个月前阿伟备的料他还得一个个检查,现在他只需要扫一眼就行。阿伟站在水槽边洗手,手上的油渍比刚来的时候少了很多,因为他学会了先戴手套再切肉。
林晨在数据表上把这个变化标了出来。备注从微辣变成中辣,客单价从18变成22。一个回头客的口味在变化,消费在增加。他在旁边画了一个向上的箭头,然后关掉了电子表格。
傍晚六点,小吴在收银台后面关掉了会员系统的页面。最后一笔订单是那个穿polo衫的男生,他居然破天荒地在晚餐时间来了。点了一份回锅肉、一碗饭、一碗汤。小吴看了他的消费记录,这是他第一次在晚餐时间来。
她把这条记在了便签纸上,打算明天告诉林晨。便签纸已经用了大半本,每一页上都写着某位客人的消费习惯。翻到最早的一页,字迹已经模糊了,但内容她还记得。
店门外的路灯亮了,穿polo衫的男生从玻璃门外走过,手里拎着一个电脑包,步子很快,消失在写字楼的方向。小吴把便签纸折好,放进收银台下面的抽屉里,跟其他几十张便签纸叠在一起。抽屉合上的时候发出轻轻的嗒一声,像是给这一天画了个句号。她关掉收银系统,站起身来伸了一下腰。收银台旁边的灯箱还亮着,照着空了一半的堂食区。小芳把最后一桌擦干净,解下围裙挂在门后面。店里安静了,只有厨房方向传来林浩洗碗的水声。小吴把收银台的抽屉锁好,拿着今天的数据单走到门口。她回头看了一眼空荡荡的堂食区,灯箱的光照在桌面上,白色的桌布被小芳擦得干干净净。她推开门,外面的路灯亮着,夜风带着一点凉意。她锁了门,把钥匙放进口袋,往地铁站的方向走。
第323章 扩张的想法
八月底的一个晚上,店关门之后。林枫坐在收银台旁边,面前的桌子上摊着一张纸。纸上画着一条路,路边标了几个方框,方框旁边写着数字。他用的是工地画图纸的那种黑色水笔,字迹粗而直,跟他的性格一样。
他在算账。第三个月的利润表刚出来,净利润九万八千,加上前两个月的数据,三个月的累计净利润已经过了二十万。林枫在纸上列了一行数字:六月六万五,七月八万四,八月九万八。每一个月都在涨,涨的幅度还越来越大。他在数字下面画了一条趋势线,斜率越来越陡。笔尖在纸上划过的声音很轻,但在安静的店里听得很清楚。
南区那个位置可以看一下。他忽然说了一句。
他说的是科技园南区。那边有一片写字楼群,人流量不比中区少,但快餐店只有三家,而且味道一般。林枫上周送外卖的时候特意绕了一圈,中午十二点他站在那个十字路口数人头,数了四十分钟。手里的笔记本上密密麻麻写满了数字,经过路口的人流量、进入快餐店的人数、在路口停留超过三分钟的人数。
中午高峰期经过那个路口的人大概一千两百到一千五,比中区少一点但没少太多。林枫把笔记本翻到那一页,递给林晨。那一页的纸已经被翻得起了毛边,四个角都有折痕,上面用黑色水笔写的字密密麻麻,数字和箭头挤在一起。目前那个位置有三家快餐店,两家中式一家西式,评价都在三点五到四分之间。
林枫又翻了一页笔记,上面是他从外卖平台上抄的数据。这家,他指了一下,月销四百多单,差评率百分之八,主要投诉出餐慢和菜品不稳定。第二家月销三百出头,差评率百分之六。第三家西式快餐,月销不到两百。他合上笔记本,三家的差评里提到最多的就是两个字:不稳定。菜品今天好吃明天难吃,客户跑了就不回来了。林枫用手指在笔记本上点了两下,这个缺口就是我们能吃下来的地方。中区刚开业那会儿,也是靠稳定出品一步步把客户留住的。
林晨接过笔记本看了一会儿。林枫的笔记很清楚,人流量的时间分布、行进方向的占比、进店率,每一项都有数字。他甚至画了一张简单的位置图,标注了周边写字楼的分布和停车位置。
你什么时候去的?林晨问。
上周三,中午十一点到一点。林枫说,我还查了那边的租金,一平米八十到一百二,看位置。比中区便宜一点,因为那边还在开发。九十五平米的铺位,月租大概两万二到两万六。
林晨看着位置图上的标注。南区的人流动线跟中区不同,中区的写字楼沿一条主街分布,人流集中在街道两侧。南区的写字楼是围合式布局,中间有一个广场,人流分散到三个方向。这意味着一个铺位很难覆盖所有人流,选址很关键。他在笔记本上南区的位置图旁边画了一个圈,标注了人流量最大的那个入口。
租金比中区便宜多少?林晨问。
大概比中区便宜百分之十五到二十。我们中区那个铺位一平米一百三,南区同面积大概一百到一百一。林枫翻了一页笔记,上面是他抄的几家商铺的招租信息。这个位置,他指了一下位置图上的一个方框,正对着写字楼群的主入口,中午人流直接经过门口。租金两万四左右。
林浩在厨房里听到了两个人的对话。他把灶台最后一遍擦完,把抹布搭在水龙头上,走出来站在备料台旁边。手里还拿着笔记本,上面写的是明天的备料量。
能管过来吗?他问了一句。
三个人都看向他。这是他第一次在扩张讨论里发言。厨房里的抽油烟机还在嗡嗡地转,灶台上的水龙头滴了一滴水,声音在安静的店里很清晰。不是反对,不是赞成,是一个很实际的问题。一家店的厨师只有一个,如果开了第二家店,谁去炒菜?
林晨想了一下。一家店靠人管,两家店靠系统管。先把系统做好再考虑第二家店。
系统?林枫问。
菜品标准化。林晨说,每道菜的调料配比和出餐顺序,全部量化。照着数据做就能出一样的菜,不靠手感。
林枫点了一下头。这个逻辑他懂,管工地也是一样的道理,把流程写清楚,换一个人来也能做。钢筋的规格、混凝土的标号、施工的步骤,全部写进工程预算表里,谁来了都能照着干。做快餐跟干工地没本质区别,最后拼的都是标准化和执行力。
标准化要多久?林枫问。
调料配比已经做了七成了。林晨在电子表格上翻了一下,油温、火候、翻炒时间这些还在林浩手上。
林浩没说话。他低头看了一眼自己的手。右手虎口上有一道烫伤的疤,手掌上有老茧,食指和中指的指腹比三个月前粗糙了一圈。这些手感是几百份菜炒出来的,手腕翻锅的角度、油温到几成时下料、翻炒多少次出锅最合适,这些数字写在笔记本上只有几行字,但要把它们变成别人也能复制的标准,需要一遍一遍地拆解、量化、验证。如果要把手感变成数据,那手感还重不重要?他翻了一页笔记本,在空白处写了一行:调料配比表,待做。没有写别的。
系统需要时间做。林浩说。
林晨看了他一眼。我知道。
林枫站起来走到白板前面,拿白板笔在角上画了一条时间线。如果第四个月净利润稳在八万以上,第五个月开始找铺位。第六个月签合同、装修。第七个月试营业。前提是标准化做完了,厨师能顶上。
他在时间线上标了几个节点,每个节点旁边写了一个月份数字。白板上的时间线像他以前画的施工进度表一样,横平竖直,没有多余的线条。
太赶了。林晨说,标准化至少要两个月。现在才八月底,最快十月底才能做完。
那十一月找铺位,十二月装修,一月试营业。林枫把时间线上的月份往后挪了一个。或者开年二月试营业,避开年底淡季。
林晨没说话,在脑子里算了一下。第一家店从选址到试营业用了两个月,但那时候什么都是从零开始。第二家店有模板了,装修和流程可以复制,时间应该能压缩。但厨师的问题还没解决。
林枫把位置图折起来放进口袋。他知道今天的讨论到这里就够了。选址的数据有了,人流量的数据有了,租金的信息也有了。但做不做,什么时候做,要等更多的数据出来。
他站起来走到门口,回头看了一眼收银台旁边的利润表。三个月,净利润从六万五涨到九万八,每个月都在加速。如果第四个月能稳在八万以上,第二家店就不是想不想开的问题了。
林晨在电子表格上加了一张新表,标题是第二家店投资回报预测模型。空的,只是搭了一个框架:租金、人力、食材、营收、翻台率、回本周期。每一个格子都空着,等数据填进去。
他在模型下面写了一行备注:第四个月净利润稳定在八万以上,再考虑。
林浩回到厨房,在白板上写下明天的备料量。鱼香肉丝45份,回锅肉40份。他写完之后看了一眼白板上的数字,又加了一行:备料误差控制在正负2份。白板笔发出吱吱的响声,在安静的厨房里显得格外清晰。
他把白板笔的盖子盖上,把笔记本翻到下一页,写了一个在角上。那是他准备做的第四个月的备料计划。
阿伟已经把备料台收拾干净了。每一碟切好的菜都盖着保鲜膜,码得整整齐齐,明天早上拆开就能下锅。保鲜膜下面的土豆丝透出一点浅黄的颜色,肉丝码在碟子边缘,中间留了放调料的空间。林浩看了一圈备料台,没有说什么,走到灶台前面把最后一个锅挂回墙上。
灶台上的火已经关了。不锈钢台面上还有一点水渍,林浩用抹布擦干,把抹布叠好搭在水龙头上。他关了厨房的灯,从后门走出去。林枫锁了前门,林晨关了收银台后面的总电闸。三个人各自散了。
林晨开车回家的时候,脑子里的数字还在转。第二家店如果开,最关键的不是选址,不是租金,是厨师。林浩不可能同时在两家店做主厨,阿伟的训练进度要加紧。他在备忘录里记了一行字:第二家店,厨师先行。车窗外的路灯一盏一盏往后退,鹏城的夜还亮着。远处科技园的写字楼群里还有几扇窗亮着灯,不知道是哪个项目在赶deadline。他以前也是那些亮着灯的窗里的一员,现在他开的是一辆穿行在路灯下的车,脑子里转的不再只是模型和代码,还有灶台、备料、翻台率和第二家店的厨师。
第324章 谨慎决策
林晨用了两个周末考察科技园南区的选址。
第一个周末他一个人去的。背着一个双肩包,穿了一件普通的灰色t恤,早上十点到了南区。他没有走进任何一家快餐店,只是站在写字楼的出口和主要路口数人。中午十二点,人开始从写字楼里涌出来,三三两两地往餐厅方向走。有人低头看手机,有人端着咖啡杯,有人穿着运动鞋跑着过马路。他用手机计时器记数字,每十五分钟按一次,记下经过的人数和行进方向。
十二点到十二点十五分,一百一十三人。十二点十五分到三十分,九十八人。十二点三十分到四十五分,六十七人。十二点四十五分到一点,四十二人。他把这些数字记在手机备忘录里,回家之后录入电子表格。
总人流量三百二十人,比中区同时间段少百分之十五左右。但中区有六家快餐店在抢这些人,南区只有三家。竞争密度低,但人流量天花板也低。他在电子表格里算了一下,日均营收五千是一个乐观估计,四千五是保守估计。
他还注意到一件事。南区中午出来吃饭的人里,大概有三分之一穿的是蓝色或灰色的工装,不是中区那种白衬衫黑皮鞋的写字楼白领。工厂工人和物流小哥的步速更快,进店决策时间更短,但他们进店之后的客单价可能更低。
他在手机备忘录里记了一行字:南区客群构成,写字楼白领约65%,工厂和物流约35%。
第二个周末他带了林枫一起去。
两个人早上九点就到了南区,先沿着人流动线走了一圈。林枫对南区的地形不熟悉,但他对铺位的眼光跟看建筑材料一样毒辣。他一边走一边拿手机拍照,把每一栋写字楼的入口位置、底商情况、停车场的出入口都拍了下来。照片编号从他手机相册的3472张开始,一直拍到3498张,二十多张照片全部按位置标注了时间和方向。
你看这个,林枫指着写字楼主入口旁边的一个空铺位,正对着大门,中午出来吃饭的人不可能绕开它。
他们看了三个可能的铺位,每个都看了十五分钟以上。
第一个铺位在写字楼底商,九十五平米,租金两万四。正对着写字楼大门,中午人流直接经过门口。林枫从门口走到最里面的墙壁,走了十七步。他掏出手机打开测距软件,量了一下宽度和进深。然后他去了后面的厨房区域,抬头看排烟管道,又蹲下来看地漏和排水口。手指敲了敲墙壁,听了一下回声。
排烟管道要重新走,林枫站起来,拍了拍膝盖上的灰,原来的走法不对,油烟出不去。走管费用至少三万。水电倒是够用,不用改。
他拿出卷尺又量了一遍厨房区域的面积,在本子上记了一个数字:厨房可用面积28平米。够放三口灶,操作台,备料台,还有余量。
第二个铺位在写字楼侧门,八十五平米,租金两万二。旁边有一家便利店,人流量有保障。林枫在门口站了五分钟,数了经过的人数,然后走进去量了一下面积。
面积小了十平米,他皱了一下眉,厨房放不下三口灶。两口灶的话,高峰期出餐上限一天大概一百二十份。
他在本子上画了一个厨房布局的草图,两口灶加备料台加出餐台,挤得满满当当,操作空间只剩一个人转身的位置。他又在草图旁边画了一个叉。
林晨在旁边看了一眼草图,没说话。他走到门口,看了看侧门的方向。侧门对着一条小路,小路尽头是停车场的出口。中午有人从停车场出来走这条路,但人流量比主入口少了一大半。
第三个铺位在写字楼的背面,一百平米,租金两万六。面积最大,排烟管道已经有了。林枫进去转了一圈,点了点头,但走到门口的时候他回头看了一眼写字楼的大门方向。
客人要绕过整栋楼才能走到这里,他说,中午只有一小时吃饭时间,走过来三分钟,走回去三分钟。六分钟花在路上,吃饭的时间就少了。
他在本子上写了三个字:人流差。然后在旁边画了一条箭头,指向大门方向,标注了距离大约一百二十米。
三个人看完之后,在路边的长椅上坐了一会儿。林枫把三个铺位的数据在笔记本上排了一下,横着列了面积、租金、人流量、排烟条件四列,竖着列了三个铺位的名字。
第一个。他说了两个字。理由很直接,排烟管道的钱是一次性投入,三万能解决。但背面的铺位人流不够是硬伤,改不了。侧面的面积太小,厨房放不下三口灶,高峰期翻台率上不去。
林晨没有立刻同意。他站起来走到第一个铺位前面,在门口站了十分钟,数了经过门口的人数。中午十二点到十二点半,经过门口的行人有一百二十三个,其中进入隔壁便利店的四十七个,抬头看了告示的三个。
人流量够了,他说,但南区的客人跟中区不一样。中区是写字楼白领为主,消费水平稳定。南区有三分之一是工厂工人和物流小哥,他们的客单价可能更低。
客单价低不影响。林枫想了一下,他们吃回锅肉也吃干煸四季豆,只是不点水煮肉片。南区店加两个家常菜,减一个客单价高的,菜单可以微调。
林晨把这个想法记在手机备忘录上。但他没有签合同。
回去的路上两个人坐在公交车上都没说话。林枫靠在座椅上看着窗外,手里拿着笔记本翻来翻去,翻到位置图那一页看了两遍,又翻回去。林晨低着头看手机上的电子表格,手指在屏幕上划来划去。
晚上八点,林晨在电子表格的第二家店预测模型里填了第一组数据:租金,排烟改造一次性,预估日均营收4500到5000,预估月营收到。他在最后一行写了一个条件:等第四个月数据。
他盯着这组数字看了一会儿。第二家店的预测模型比第一家店乐观,因为有模板可复制,有供应链可共享,有人流量的数据可参考。但乐观归乐观,数据归数据。在第四个月的实际数据出来之前,所有预测都只是假设。
第二天晚上,林晨跟林枫在店里碰面。店已经关门了,前厅的灯只开了一半,收银台旁边的小灯亮着,照着两个人面前的笔记本和手机。
林枫把笔记本翻开,三个铺位的详细数据整整齐齐地排在那里,面积、租金、人流量、周边商户、排烟条件,每一项都有数字。
第一个铺位各方面数据最好,林枫说,但我们要考虑的不只是铺位。
林晨点了一下头。我知道。厨师、出餐流程、供应链,全要重新搭。
厨师是最关键的。林枫用笔在笔记本上画了一个圈,没有厨师,铺位再好也没用。
林晨没说话。他在想一件事。晨枫快餐的菜品标准化做了一部分,调料配比已经量化了,但火候和手法还是靠林浩的手感。如果林浩去了第二家店,第一家店怎么办?如果留林浩在第一家店,第二家店谁来炒菜?
他把这个想法在脑子里转了一圈,没有说出来。
阿伟切了三个月的菜,对每道菜的备料比谁都熟。林枫像是看出了他在想什么,但切菜和炒菜是两回事。
我知道。林晨说。
那天晚上,林浩在微信上给林晨发了一条消息:第二个店的厨师谁去?
林晨看着这条消息想了一下。他没有立刻回复,而是打开了电子表格的第二家店预测模型,在最下面加了一行:厨师培训周期,从零到能独立出菜,至少三个月。如果要开第二家店,至少提前三个月开始培养第二个厨师。
然后他回了林浩:你先管好第一个店。
林浩回了一个字:
林晨把手机放下,看着电子表格上那一行新加的数据。阿伟是目前最合适的人选。他切了三个月的菜,对每道菜的备料标准比任何人都清楚。但切菜和炒菜是两回事,从备料到灶台,中间至少要三个月的过渡期。
他在表格里加了一行备注:阿伟,灶台训练从九月开始。
手机屏幕亮了一下,是林晨投资账户的推送通知。他看了一眼余额,又看了一眼晨枫快餐的预测模型。两套系统,两种逻辑,一个靠数据和模型赚钱,一个靠菜和客流赚钱。他关掉通知,把预测模型存了盘。
厨房里阿伟还在切明天的备料。刀落在砧板上的声音一下一下,稳稳的,没有快慢变化。林浩站在灶台前面,把锅挂回墙上,看了阿伟一眼。
明天开始,林浩说,你站灶台。
阿伟的刀停了一下。
我看着你做。林浩把抹布叠好放在备料台角上,先从回锅肉开始。
阿伟点了一下头,低头继续切土豆丝。但他的手腕比刚才紧了一点,刀落在砧板上的声音也不再那么稳了。
第325章 T厂的晋升
九月初,鹏城还是热。办公楼外面的行道树被晒得打蔫,路面上的热气远远看过去像水波纹一样晃动。林晨从研发楼大门走进去的时候,冷气从头顶的出风口灌下来,汗一下子收住了。
陈博士的办公室在十二层。林晨坐电梯上去,走廊里很安静,只有空调的低频嗡嗡声和远处某个办公室里敲键盘的声音。他敲了两下门框,推门进去。
办公室不大,但落地窗外就是鹏城湾的海面。下午三点钟的阳光铺在水面上,亮得晃眼,几艘货轮在远处慢慢移动。陈博士坐在桌子后面,面前那台笔记本电脑开着FinGpt v4的运行面板,几个核心指标的曲线稳稳地往上走。他看到林晨进来,指了指对面的椅子。
林晨拉开椅子坐下来。椅背硬,坐下去的时候有一点咯吱声。陈博士的办公桌上除了电脑只放了一只白色马克杯,杯壁上有t厂的logo,里面的咖啡已经见底了,杯底剩下一圈深褐色的渍。
陈博士没有寒暄。他的手指在桌面上点了两下,像是在确认自己要说的话已经排好了序。部门要调整。大模型应用部和技术研发部合并,合并之后叫大模型事业群。事业群需要一个总监。
他停了一下,看着林晨。我推荐你。
林晨没有立刻接话。陈博士也没有催他,靠在椅背上等。办公室里安静了几秒钟,只有窗外隐约传来的船笛声。
团队多少人?林晨问。
合并之后五十人左右。技术线和数据线陈铭跟张雨在带,商务线周姐在跑。你管全局。
薪资呢?
七十乘十六。年包过百万。
七十乘十六。月薪七万,十六个月工资,年包一百一十二万。他现在拿的是五十二乘十六,这一跳涨了不小。五十个人的团队,总监的title,从管一条线变成了管一个盘子。
我考虑一下。
陈博士点了一下头。三天之内给我答复。
林晨站起来,把椅子推回原位,走出办公室。走廊里很安静,他走到电梯口按了下行键,看着电梯数字一格一格往下跳。
副总监管项目,总监管全局。他现在管的十二个人已经让他偶尔觉得分身乏术了。五十个人的盘子,两条线同时推进,他能不能撑住,得想清楚。还有一件事,副总监到总监,这一步迈出去之后,再想退就退不回来了。
接下来三天他照常上班,照常开会,照常看FinGpt的日志和晨枫快餐的数据。没有人知道陈博士找他谈过话,他的表情和平时一样,只是每天晚上回家之后会在阳台上多站一会儿。苏婉注意到了,但她没问。
第一天晚上他在阳台站了十分钟。鹏城九月的夜风还是热的,吹在身上有一点潮湿。他靠在阳台栏杆上,看楼下小区里的路灯和偶尔走过的行人。脑子里翻来覆去就是一件事:五十个人的盘子,他能不能撑住。协调会议会变多,晨枫那边的时间会被压缩。但陈博士推他上去,说明认可他。这个念头比其他所有顾虑都重。
第二天晚上他打开晨枫快餐的后台数据看了一会儿。第三个月的净利润接近十万,比第二个月又涨了一截。翻台率稳定在四点零左右,回头客占比在往上走。他关掉数据,又打开FinGpt的运行日志看了一会儿,也一切正常。两套系统都在健康地跑着,需要他做的只是维持。
他靠在椅背上,盯着天花板想了一会儿。维持和建设不一样。FinGpt在跑,不需要他建什么新东西了。晨枫还在长,每一步都是新的。他把这个念头放下了,关灯睡觉。
第三天上午,林晨敲了陈博士办公室的门。
陈博士点了一下头,没多说什么。他站起来走到门口,手已经搭在门把上了,又停住,转过头来。
你那个快餐店做得不错。
林晨愣了一下。陈博士从来不关心员工工作之外的事情。
你怎么知道?
你在食堂吃饭的时候,有一次手机开着后台数据,我路过看了一眼。陈博士推了一下眼镜,翻台率三点七,不错。
他拉开门走了出去,留林晨一个人站在办公室里。窗外鹏城湾的海面在阳光下泛着白光,林晨看了两秒,转身出去了。
人事流程走了一周。总监的工位从原来的开放区搬到了一间独立办公室,靠窗,窗户对着鹏城湾的方向,但比陈博士的小一号。办公桌上多了一台显示器,两块屏幕并排,一块看FinGpt,一块看邮件。林晨把晨枫快餐的后台收藏夹从手机移到了电脑的第二块屏幕上,缩小到一角,需要的时候点开看一眼。
搬工位那天下午,陈铭过来帮他搬了几箱资料。陈铭把最后一箱文件放到新办公桌上,拍了拍手上的灰。
恭喜升职。陈铭说,以后技术的事你尽管放心交给我。
那就拜托了。
陈铭走到门口又回过头来。不过总监这个位置,以后你跟其他部门打交道的时间会变多。产品那边和市场那边,都不是省油的灯。
我知道。
陈铭点了一下头走了。林晨坐在新的办公椅上,转了半圈,看了一眼窗外。鹏城湾的海面在下午的阳光下泛着白光,远处有几艘货轮在慢慢移动。他转回来看着两块屏幕,左边是FinGpt的运行日志,右边是晨枫快餐的后台数据。
那天晚上林晨回到家,推门的时候脚步比平时快了半拍。苏婉正在厨房里切菜,菜刀在砧板上咚咚响。她听到门响头也没抬。
升了?
林晨换鞋的动作顿了一下。你怎么知道?
苏婉把切好的菜装进盘子里,回头看了他一眼。你走路的声音变了。之前步子有点沉,今天轻了。
林晨站在玄关,手里拎着包,看着她端菜往餐桌走。苏婉走到一半回过头来。
恭喜。她说。
谢谢。林晨把包放在门口的柜子上,走到餐桌旁边坐下。乐乐从客厅跑过来,手里还握着铅笔,仰头看他。
爸爸升职了?
那我们是不是可以去你那个快餐店吃饭?
随时可以。
乐乐笑了一下,铅笔塞到耳朵后面,跑回客厅继续写作业。苏婉把碗筷摆好,三个人坐下来吃饭。桌上是清炒西兰花和红烧肉,苏婉做的。红烧肉放了冰糖,色泽比林浩做的偏浅一点,但甜味收得干净。林晨吃了两碗饭。
好吃。他说。
苏婉笑了一下,夹了一块西兰花放到他碗里。
吃完饭之后乐乐去洗澡,苏婉在厨房里洗碗。林晨帮她擦碗,两个人站在水槽前面,苏婉洗一个他擦一个,流水声在厨房里响着。
薪资涨了多少?苏婉问。
七十乘十六。年包过百万。
苏婉嗯了一声,把一个碗递给他。够开第二家店了。
林晨擦碗的手停了一下。他没有接这个话,把碗放进碗柜里,又拿过下一个。
苏婉没有追问,继续洗碗。
乐乐的学费下个月要交了。苏婉又说。
多少?
三千二。
我转给你。
不用转,我这边够。苏婉把最后一个碗洗好递给他,他擦干放进碗柜,关上水龙头。
两个人站在厨房里,水槽里的水声慢慢小了。林晨看着窗外,楼下小区里的路灯亮着,有人在遛狗,一个老太太推着婴儿车慢慢走过。苏婉把围裙解下来挂在钩子上,走出厨房。
周末去店里吗?苏婉在客厅里问。
那我带乐乐一起。
林晨点了一下头,走进客厅。乐乐洗完澡已经躺在床上看书了,苏婉在旁边给他掖被子。林晨站在门口看了一会儿,转身去书房打开电脑,扫了一眼晨枫快餐的数据。翻台率四点零,一切正常。他关掉电脑,去洗澡。
第二天中午他去了店里。高峰期刚过,用餐区还有两桌客人在收尾,一个穿格子衫的程序员端着餐盘起身,把椅子推回桌子底下。林枫坐在靠窗的位置看手机上的数据,林浩在厨房里擦灶台。小吴在收银台后面盘点零钱,阿伟蹲在门口整理外卖箱。
林晨走到林枫对面坐下,把晋升的事说了。
林枫听完点了点头。恭喜。不过你升职之后来店里的时间会更少吧?
不会少太多。每天晚上还是看数据,周末还是来。
你说的啊。林枫笑了笑,低头继续看手机。对了,这个月的净利润数据出来了。九万八,差一点到十万。
下个月应该能过十万。
照这个趋势,能。林枫划了一下手机屏幕,第四个月的净利润如果过十万,可以考虑第二家店了。
林晨没有接这个话。他看了一眼厨房的方向,林浩正把一锅热油倒进灶台旁边的回收桶里,油还在冒烟。
林浩从厨房里出来,围裙上还沾着油渍。他在桌旁坐下来,没有说,只是把林晨面前的碗往自己那边挪了挪,往里面夹了两块回锅肉。五花肉煸得恰到好处,边缘微微焦,酱香浓。
林晨夹了一块肉。好吃。
林浩点了一下头,低头吃饭。
吃完饭之后林晨帮小芳收了两桌盘子,又帮小吴对了一遍今天的流水。他对完流水之后在收银台旁边站了一会儿,扫了一眼墙上的营业时间牌,又瞥了一眼门口排队等位的几个客人。店里的一切都在正常运转,不需要他多做什么,也不需要他多说什么。
他拿起手机看了一眼时间,两点十五分。下午三点他还要回t厂开一个协调会。他跟林枫和林浩打了个招呼,走出了店门。
外面阳光很好,科技园的路上人来人往,大部分是刚吃完午饭回办公室的程序员。林晨走在人群里,瞥了一眼手机上晨枫快餐的后台数据,翻台率四点零,一切正常。他把手机放回口袋,往地铁站走。
第326章 职级天花板
林晨升任总监之后的第一场周会,安排在周一上午九点半。他到会议室的时候,投影仪已经开了,白板上还留着上周的会议纪要,几行潦草的字迹歪歪扭扭地排在左半边。他拿起板擦把白板擦干净,马克笔排列在白板下方的凹槽里,他挑了一支黑色的,在左上角写了v4.1迭代四个字。
九点半,五十个人的团队坐满了会议室。有人搬了椅子坐在后排靠墙的位置,有人靠着门框站着,手里端着咖啡杯。陈铭坐在他右手边,手里拿着技术方案的草稿,A4纸上画了好几处改动,字迹密密麻麻。张雨坐在他左手边,笔记本电脑上开着FinGpt v4的数据看板,几条曲线在实时更新。周姐坐在角落里,面前放着一杯咖啡和一份商务合同,合同的边角已经翻卷了。
林晨站在白板前面,没有坐下。他看了一圈会议室,先点陈铭。
陈铭站起来走到白板前,把技术方案的两处改动讲了。第一处是注意力机制的权重分配调整,第二处是推理阶段的缓存优化。讲完之后他看了一眼张雨,张雨接上来补了一句:数据标注组现在人手不够,v4.1上线之前至少要再招两个人,否则标注质量会下降。周姐汇报了两个新客户的签约进度,其中一个已经走完了内部审批,另一个卡在法务那边的合规审查上。
林晨听完,在白板上写了两个时间节点。v4.1版本两周后上线,数据标注组这周开始招人。签约流程他让周姐跟法务再对一次,能简化的步骤全部简化。
散会。他说。
会议开了四十分钟。散会之后他回到办公室,坐下来,打开电脑。FinGpt的运行日志在屏幕左半边,一切正常。他在右半边打开晨枫快餐的后台,今天的出菜量、营收、翻台率、回头客占比,数字一条一条排列整齐。两套系统,同一个屏幕上来回切换。他把两边的数据都看了一遍,关掉晨枫的后台,切回FinGpt。
陈铭散会之后来找他,站在办公室门口,一只手撑着门框。
五十个人的团队,以后开会得换个更大的会议室。陈铭说。
这周让行政排一下。
陈铭点了一下头,转身要走,又停住。林晨,总监这个位置,以后你跟其他部门的协调会会变多。产品那边和市场那边,都是扯皮的事。
我知道。
技术的事我可以扛,但协调的事你得多跑。陈铭说完走了。
林晨看着他的背影,在笔记本上记了一行字:协调会议排期。
上午剩下的时间他处理了几封邮件,其中一封是人事部门发来的,通知他总监的工号和权限已经更新。他点开链接看了一眼,权限列表比之前长了一截,多了几个审批节点和资源调度的入口。他关掉链接,又打开晨枫快餐的后台扫了一眼。上午十一点半的出菜量已经超过昨天同期了,翻台率在稳步往上走。
下午两点,他收到第一封需要他协调的邮件。产品部门的老李和市场部门的小王为一个方案的时间节点吵了起来,邮件抄送了他和另外三个总监,往来回复已经盖了十几层,谁也不让步。老李说技术排期不够,小王说市场窗口不等人。林晨看了五分钟,回了一句:明天下午三点会议室b,当面过。
下午三点的协调会,会议室比他自己的小一号,八个人坐下来已经显得拥挤,空气里混着咖啡和打印纸的味道。老李和小王坐在长桌两侧,两个人你一句我一句,争了二十分钟没有结论。其他几个人坐在旁边,有的看手机,有的翻文件,偶尔有人想插一句嘴,被两个人的气势压了回去。
林晨坐在会议桌的一端,听了二十分钟,手指在桌面上敲了三下。两个人停下来了。
两周内给v4.1版本的接口文档,其他版本排到下个季度。他说。
老李张了张嘴,想说什么,最终点了一下头。小王也点了头。林晨在笔记本上记下时间节点,合上笔记本,站起来走了。
出了会议室,他在走廊上站了一会儿。下午的阳光从走廊尽头的窗户照进来,照在地砖上形成一块亮斑。他站在亮斑外面,掏出手机看了一眼时间,三点半。
他回到办公室,打开邮箱,二十三封未读邮件,其中十四封需要他回复。他一封一封地看,一封一封地回。陈铭发来的v4.1版本技术细节讨论,他回了三个字:收到,看。周姐发来的合规审查流程文件,他下载下来看了五分钟,回复了两个建议。人事部门发来的新员工入职培训排期,他扫了一眼日期,转发给了陈铭。
十四封邮件回完,已经五点了。他靠在椅背上揉了一下太阳穴,又打开晨枫快餐的数据扫了一眼。今天的翻台率四点一,比昨天高了零点一。他盯着这个数字看了几秒,关掉页面,切回FinGpt的后台。
五点半他准时关了电脑,走出t厂的大门。鹏城九月的天空还亮着,阳光从西边照过来,把他的影子拉得很长。他站在门口的台阶上,掏出手机扫了一眼晨枫的数据,翻台率四点一。他把手机放回口袋,往地铁站走。
地铁站里人很多,他在站台上排队等了三分钟才挤上车。车厢里空调开得足,他站在门边,一只手拉着扶手,另一只手插在裤袋里。旁边两个穿工牌的年轻人在聊项目进度,声音不大,但他听得很清楚。他以前也是这样,站在地铁里想代码、想模型、想技术方案。现在他站在地铁里想的是明天的协调会要怎么开,法务那边的合规审查还要几天,数据标注组的新人什么时候能到位。
他在科技园站下车,出站的时候经过一家新开的奶茶店,门口排了十几个人。他看了一眼队伍的长度,在心里估算了一下这家店的翻台率和坪效,然后笑了笑,继续往家走。
到家的时候已经七点了。苏婉在厨房里炒菜,乐乐在客厅里写作业。他换鞋进门,走到餐桌旁边坐下。
今天怎么样?苏婉从厨房里探出头来。
开了两场会,回了一下午邮件。
技术方面的?
不是,协调方面的。产品跟市场吵架,我去当裁判。
苏婉哦了一声,没有追问。她把菜端出来,三个人坐下来吃饭。桌上是蒜蓉菜心和番茄炒蛋,苏婉做的,简单但干净。
乐乐一边吃饭一边问:爸爸,你当了总监以后是不是更忙了?
有一点。
那你周末还去店里吗?
乐乐满意地点了一下头,继续吃番茄炒蛋。
吃完饭林晨帮苏婉收拾碗筷,苏婉在厨房里洗碗,他站在旁边擦碗。流水声在厨房里响着,苏婉把洗好的碗递给他,他擦干放进碗柜。
今天开了几场会?苏婉问。
两场。一场是团队的周会,一场是协调会。
协调会开了多久?
四十分钟。两个人吵架,我打圆场。
苏婉笑了一下。那你今天开心吗?
林晨想了一下。技术会议开心。协调会不开心。
苏婉嗯了一声,把最后一个碗递给他。吃饭的时候开心就行。
林晨把碗放进碗柜,关上柜门。他站在厨房里看了一眼窗外,鹏城的夜色已经沉下来了,远处写字楼的一排排灯还亮着。他转身走出厨房,在客厅沙发上坐下来,拿出手机扫了一眼晨枫快餐的数据。翻台率四点一,比昨天好。他把手机放在茶几上,闭上眼睛靠在沙发背上。
乐乐写完作业跑过来,在他旁边坐下来。爸爸,你闭着眼睛干什么?
休息一下。
你是不是很累?
有一点。
乐乐从茶几上拿了一颗糖递给他。林晨睁开眼睛,看着乐乐手心里那颗糖,接过来剥开吃了。草莓味的,很甜。
他揉了一下乐乐的头,站起来去洗澡。
洗完澡之后他坐在书桌前,打开电脑。屏幕上FinGpt的运行日志还在跑,曲线稳稳地往上走。他在旁边打开晨枫快餐的后台,两个窗口并排,左边是FinGpt,右边是晨枫。
他盯着两个窗口看了一会儿,然后把FinGpt的窗口最小化,把晨枫的窗口拉到最大。
今天的翻台率四点一。第四个月的净利润预计也能到十万左右。他点开会员系统的数据扫了一眼,新增会员数比上个月涨了百分之十五。他又点开外卖数据,外卖订单占比从上个月的百分之二十三涨到了百分之二十七。
他关掉电脑,上床睡觉。苏婉的呼吸很均匀,她已经睡着了,手里还握着遥控器,电视停在财经频道,画面上在播一段关于AI行业的简讯。他轻轻把遥控器从她手里抽出来,放在床头柜上。
躺下之后他盯着天花板想了一会儿。今天回的十四封邮件里,只有两封是跟技术相关的,剩下十二封全是协调和排期。他翻了个身,把被子拉到肩膀上。明天还有三场协调会,后天还有两场。他闭上眼睛,很快就睡着了。
那天晚上他做了一个梦,梦里他站在晨枫快餐的厨房里,灶台上的火开着,锅里的油在冒烟。他不知道要做什么菜,但手里已经拿着一把铲子了。
第327章 创业的念头
林晨第一次认真想创业这件事,是在九月底的一个周五。
那天t厂出了一个问题。FinGpt v4.1上线之后,一个客户反馈说情感分析模块的准确率从百分之九十二降到了百分之八十八。四个点的降幅不算大,但对客户来说足以触发风控警报。林晨带团队查了两天,从模型参数到数据管道,一层一层往上剥,最后发现是训练数据的分布偏移导致的。新一批标注数据里中性情感的样本占比偏高,模型学偏了。
修复不难。让数据标注组重新平衡样本分布,再跑一遍微调就行。张雨当天下午就把新的数据分布方案做出来了,陈铭看了之后说两天内能上线。整个修复流程跑下来,从发现问题到解决问题,一共不到四十八小时。
但修复的过程让他意识到一件事:他在t厂解决的问题越来越小,越来越具体,越来越像是在维护一个已经跑通的系统。四个点的准确率波动,找出来,修掉,上线,结束。下一个月还会有新的波动,再找出来,再修掉,再上线,再结束。每一次修复都像是在给一堵墙补灰,墙还在,灰也还在,但补灰这件事本身不会让墙变高。
而他在晨枫快餐解决的问题不一样。从流程优化到选址扩张,每解决一个问题就打开一扇新的门。门后面不是更多的维护,是更大的空间。
周五晚上他坐在店里,看林浩出菜、小吴收银、小芳收盘子。这个场景他已经看了四个月了,但今天看的感觉不一样。四个月前他坐在角落那张桌子上看这些数字的时候,心里想的是这家店能不能活下去。现在他想的是这家店能长多大。
林浩从厨房里探出头来,看了他一眼。今天翻台率多少?
还没看。
林浩点了一下头,缩回厨房去了。灶台上的火还开着,油烟从排气扇里抽出去,在门框上方形成一道透明的热浪。小吴在收银台后面给一个客人找零,硬币在托盘里叮叮当当响。小芳端着一摞盘子从用餐区走过,盘子里还剩着一点米饭和汤汁,她走得很快,脚步声在地板上哒哒地响。
林晨拿出手机,打开投资账户看了一眼。余额四百五十万。加上t厂的工资和晨枫快餐的分红,他的月收入已经超过了二十万。投资系统在自动运行,每个月稳定贡献十五到二十万。第四个月的净利润预计也能到十万左右。钱不再是问题了。
但时间是个问题。他每天在t厂工作八到十个小时,晚上看晨枫的数据,周末去店里。两条线并行跑了四个月,他的精力还撑得住,但他知道这不是长久之计。要么t厂让步,要么晨枫让步。两条线同时跑,总有一天会有一根弦断掉。
他没有做出决定。这个念头只是在他脑子里生了根,还没长出叶子。
那天晚上他回到家,苏婉在客厅里批改作业。茶几上摊着一叠作文本,红笔放在旁边,笔帽已经套上了但还没合紧。她批改的时候习惯把笔帽套在笔尾上,这样不容易丢。
他走进去倒了杯水,在她旁边坐下来。
今天怎么样?苏婉头也没抬。
好。翻台率四点一。
苏婉嗯了一声,继续批改。她翻了一页,在作文上面画了一个红色的圈,写了几个字的批语。林晨看了一眼,是一篇写秋天的作文,写得不怎么样,但苏婉的批语还是鼓励性的。
我在想一件事。林晨说。
什么事?
如果有一天我辞了t厂的工作,全职做晨枫。你觉得怎么样?
苏婉的笔停了一秒。她抬头看了林晨一眼,然后低头继续批改。
你自己决定。她说,现在家里不缺钱。做你想做的事。
林晨看着她批改作文的侧脸。她没有追问细节,也没有问万一失败了怎么办。她只说了一句话,跟两年前他失业那天晚上说的话一样。她自己决定。她从来不替他做决定,也从来不拦他。
他端着水杯站起来,走进卧室。卧室里很安静,只有客厅里传来苏婉翻本子的沙沙声。他坐在床边,把水杯放在床头柜上,看着窗帘外面鹏城的夜景。远处写字楼的一排排灯还亮着,像棋盘上的格子。
他没有再想下去了。但那颗种子已经在了。
周六他去了店里。上午十点到,店里已经在准备午高峰了。林浩在厨房里切菜,砧板上摆着切好的胡萝卜丝和青椒条,刀工整齐,像机器切的一样。他切菜的时候肩膀微微晃动,节奏很稳,刀落下去的声音像节拍器。小吴在收银台后面整理今天的零钱,阿伟在门口摆放桌椅,小芳在冰箱里拿出一盒一盒的备菜放到灶台旁边。
林晨坐在角落的那张桌子旁边,打开笔记本电脑。他先看了一遍晨枫快餐的周数据:翻台率四点一,日均营收比上周涨了百分之五,外卖订单占比从百分之二十五涨到了百分之二十七,新增会员八十三个。每一个数字都在往好的方向走。
他又打开了会员系统的后台,看了一眼活跃用户的分布。百分之六十的活跃用户是科技园里的程序员,周边写字楼和居民各占百分之二十。会员复购率百分之七十二,比上个月又涨了两个点。
林枫从外面走进来,手里拎着一袋水果,看到林晨就走了过来。
今天怎么这么早?林枫问。
想数据的事。
林枫把水果放到收银台上,在他对面坐下来。什么数据?
会员系统的活跃用户分布。科技园的用户占了百分之六十,周边写字楼和居民各占百分之二十。
科技园的流量够稳定,但周边的渗透率还不够高。林枫说,如果开第二家店,选址在科技园南区的话,可以吃到那边新搬进来的几家公司。
林晨看了他一眼。你也觉得可以开第二家了?
数据在往好的方向走。现在不开,等别人占了位置就晚了。林枫站起来去洗水果了。
林晨把电脑合上,靠在椅背上看了一会儿厨房里林浩忙碌的背影。灶台上的火在跳,锅铲碰铁锅的声音叮叮当当,抽油烟机在嗡嗡响,备料台上阿伟切菜的刀声一快一慢地配着节拍。林浩的月收入现在大概两万六,比他刚来的时候翻了一倍。小吴和阿伟的工资也涨了,小芳是新来的,还在试用期。每个人都在这家店里找到了自己的位置。
中午的客流高峰来了。林晨站起来帮林浩端了两桌菜,又帮小芳收了三桌盘子。他端盘子的时候动作很快,比小芳还利索。一个客人抬头看了他一眼,可能以为他是店里的员工,也可能没注意到他。
午高峰过后,店里安静下来。林晨坐在角落那张桌子上,又打开了电脑。他新建了一个文档,在标题栏打了两个字:。然后他把文档关掉了。
他靠在椅背上,看着厨房的方向。林浩正在清洗午高峰用过的灶台,动作很熟练,抹布在不锈钢台面上擦过去,留下一道一道的水痕,水痕在灯光下闪了一下就蒸发了。小吴在收银台后面算今天的流水,手指在计算器上哒哒哒地按。阿伟把外卖箱叠起来放在门口,小芳把收来的盘子码好放进洗碗机里。
这些人在他看不到的时候也能把店跑起来。这个认知让他在椅背上换了一个姿势,靠得更深了一些。四个月前他需要盯着每一个环节,现在他只需要看数据就够了。
他站起来,走到收银台旁边看了一眼小吴算出来的流水。中午两个小时的营收比上周同一时段涨了百分之八,主要涨在外卖订单上。他点了一下头,走回角落那张桌子,把电脑合上了。
那天晚上回到家,苏婉已经把乐乐哄睡了。她坐在客厅沙发上看手机,看到林晨进门,放下手机看了他一眼。
今天店里怎么样?
好。翻台率四点一。
你昨天跟我说的那件事,苏婉顿了一下,辞了t厂全职做晨枫那件事。你想好了吗?
还没想好。只是在想。
苏婉嗯了一声。你想好了再跟我说。
她拿起手机继续看,像是这件事就这么过去了。客厅的灯光照在她侧脸上,睫毛的影子落在屏幕上。林晨站在玄关换鞋,看着她在沙发上蜷着腿看手机的样子。她不需要算数字,也不需要做对比。她只需要一句话:你自己决定。
他换了鞋走进客厅,在她旁边坐下来,拿起遥控器换了一个台。电视里在播一部老电影,黑白的,他没看过。苏婉看了一眼,说:这个不好看。他把台换回去了。
那天晚上他躺在床上想了一会儿。苏婉问的那句话还在脑子里转——做什么的时候开心。答案他已经有了,但什么时候行动,他还想不清楚。
他翻了个身,把被子拉到肩膀上。鹏城九月的空调开得有点低,他伸手把温度调高了两度,闭上了眼睛。
第328章 和妻子商量
苏婉说完那句话之后,林晨以为这个话题暂时结束了。
但他错了。第二天早上他出门的时候,苏婉在门口递给他一杯水。她刚起床,头发还没扎好,散在肩膀上,眼角有一点没睡好的痕迹。
你昨晚没睡好。她说。
怎么知道?
你翻了好几次身。以前只有面试前一晚才这样。
林晨接过水杯喝了一口。他确实没睡好。脑子里一直在转数字:t厂的年薪、晨枫的分红、辞职之后的现金流和回本周期。这些数字在脑子里转了一整夜,像一台停不下来的服务器。
我在想辞不辞职的事。他说。
我知道。苏婉站在门口,把头发拢到一边,随手扎了一个低马尾,你不用跟我说数字。你自己算得比我清楚。
那你有什么想法?
苏婉想了一下。她把林晨递回来的水杯放在鞋柜上,靠在门框上看着他。
你从t厂辞职之后,每天的八到十个小时空出来,你想做什么?
全职做晨枫。开第二家店,升级会员系统。
我不是问你要做什么。苏婉说,我是问你做什么的时候开心。
林晨看着她。这个问题他没想过。他想过收益和风险,想过现金流和回本周期,但他没想过开不开心。
在t厂开会的时候,开心吗?苏婉问。
技术问题解决的时候开心。协调会不开心,跟其他部门吵架不开心。
在晨枫看数据的时候呢?
开心。
苏婉笑了一下,不是那种很大的笑,嘴角动了一下。那就行了。
她转身进厨房做早饭去了。林晨站在门口,水杯还拿在手里,看着她走进去的背影。她没有说,也没有说。她只问了一个问题:做什么的时候开心。
这个问题他不需要再想了。答案很清楚。
他喝完杯子里的水,把杯子放在厨房的台面上,换鞋出门。地铁上他站在门边,一只手拉着扶手,另一只手插在裤袋里。旁边有人在打电话谈项目,声音不大,断断续续地飘过来。他听了一会儿,全是资源分配和排期协调的事,跟昨天他的协调会一模一样。
到了公司,他坐到办公桌前,打开电脑。两块屏幕亮起来,左边是FinGpt的运行日志,右边是晨枫快餐的后台数据。他先看了FinGpt的日志,一切正常,没有异常。然后他切到晨枫的后台,翻台率四点二,比昨天又涨了一点。他盯着这个数字看了几秒,把窗口最小化,打开了邮箱。
邮箱里有十八封未读邮件。他一封一封地回,大部分是协调和排期的事。技术方面的邮件只有两封,都是陈铭发来的,他回了收到,看。其余的全是跟其他部门对接的:产品那边要接口文档的时间节点,市场那边要活动排期的确认,法务那边要合规审查的补充材料。
他回了四十分钟邮件,揉了一下太阳穴,站起来去倒了一杯咖啡。咖啡机在走廊尽头,他端着杯子走过去的时候路过会议室,里面正在开一个他不需要参加的会,几个产品经理在白板上画流程图,声音从玻璃墙里透出来,听不太清楚。
他端着咖啡回到办公室,坐下来。电脑屏幕上的晨枫后台还亮着,翻台率四点二。他看了一眼FinGpt的日志,也一切正常。两套系统都在跑,都不需要他做什么。
他靠在椅背上,看着天花板。天花板上有一道细细的裂缝,从灯的位置一直延伸到墙角。他不知道这道裂缝是什么时候出现的,可能搬进来的时候就有,也可能刚出现不久。他盯着裂缝看了一会儿,又低头看屏幕。
下午三点又有一个协调会。这次是人事部门和财务部门的联合会议,讨论新财年的预算分配方案。林晨坐在会议桌的一端,听了半个小时的人事汇报和财务汇报,然后在白板上写了几个数字,把预算方案敲定了。
散会之后他在会议室里多坐了一分钟,看着白板上他刚写的几个数字。笔迹还没干透,蓝墨水在白板光面上微微反光。预算分配方案其实很简单,人事要加人,财务要控成本,他在中间找一个平衡点。这种事情他做得越来越熟练,但越来越没有感觉。他站起来擦掉白板上的字,走回办公室。
回到办公室之后他又打开晨枫的数据扫了一眼。会员新增数、外卖订单占比、回头客比例,每一项都在往好的方向走。他关掉数据,切回FinGpt的后台。
五点半他准时关了电脑,走出t厂的大门。鹏城十月的天空开始有点凉了,风从海边吹过来,带着一点咸味。路边的行道树叶子开始发黄,有几片落在人行道上。他站在门口的台阶上深吸了一口气,往地铁站走。
那天晚上他回到家,苏婉正在检查乐乐的作业。乐乐趴在桌上写数学题,铅笔在纸上沙沙地响,苏婉坐在旁边看语文书,手里拿着一支红笔,偶尔在乐乐的作业本上画一个勾。
林晨换了鞋走进来,在乐乐头上摸了一下,乐乐头也没抬。
爸爸,九乘七等于六十三对吗?
乐乐继续写。苏婉抬头看了林晨一眼,没说话。她看到了他的表情,比早上出门的时候松了一些。
林晨在沙发上坐下来,拿出手机看了一眼晨枫的数据。今天的翻台率四点二,比昨天高。他又看了一眼投资账户,余额四百五十五万,这个月又多了十几万。他把手机放在茶几上,闭上眼睛靠在沙发背上。
乐乐写完作业跑过来,在他旁边坐下来。爸爸,你今天上班开心吗?
林晨睁开眼睛。怎么了?
妈妈说你昨天没睡好,是因为上班不开心。
林晨看了一眼苏婉。苏婉在收拾乐乐的书包,没有看他,嘴角有一点弧度。
上班有开心的时候,也有不开心的时候。林晨说。
那你不开心的时候想什么?
想你妈妈做的红烧肉。
乐乐笑了一下,从沙发上跳下去跑进房间了。苏婉收拾完书包,走到沙发旁边,在他旁边坐下来。
你想好了?她问。
想好了。
苏婉点了一下头,没有再问。她伸手拿过茶几上的遥控器,打开电视,换了一个台。电视里在播一部综艺节目,她看了两分钟,换了一个台,在播新闻,又换了一个台,在播一部电视剧。她把遥控器放下,起身去厨房给乐乐切了一盘水果。
林晨坐在沙发上,看着电视里的人物走来走去,没有看进去。明天还是照常上班,照常开会,照常回邮件。但今天做的这个决定,像一颗钉子钉在了墙上,取不下来了。
晚饭是苏婉做的。清炒西兰花和排骨汤,乐乐吃了一碗饭加半碗汤。吃完饭林晨帮苏婉收拾碗筷,苏婉在厨房里洗碗,他站在旁边擦碗,跟平时一样。流水声在厨房里响着,苏婉把洗好的碗递给他,他擦干放进碗柜。
你打算什么时候跟陈博士说?苏婉问。
再等一段时间。事业群刚合并,我马上走不好。
等多久?
至少把v4.1的迭代做完,把团队稳定下来。一两个月吧。
苏婉没接话,把洗好的碗摞成一摞放进碗柜里。碗碰碗的声音很轻,像是在确认什么。
苏婉嗯了一声,把最后一个碗递给他。他擦干放进碗柜,关上柜门。柜门合上的时候发出一声轻响,像是什么事情落了定。
那你这两个月怎么办?苏婉问,一边上班一边想辞职的事,会不会分心?
不会。该做的事还是得做完。
苏婉点了一下头,把围裙解下来挂在钩子上。乐乐下个月的家长会你去还是我去?
我去吧。那天我下午没有会。
苏婉走出厨房,在客厅里叫乐乐出来吃水果。
林晨站在厨房里,看了一眼窗外。鹏城的夜色已经沉下来了,楼下小区里的路灯亮着,有人在遛狗。他转身走出厨房,在沙发上坐下来,拿起手机扫了一眼晨枫的数据。翻台率四点二,回头客比例百分之七十二,外卖订单占比百分之二十七。每一个数字都在往好的方向走。
第329章 投资收益稳定
十月份的第一个周末,深圳的早晨还带着夏天的余热。林晨六点半醒过来,窗帘缝隙里漏进一道白光,空调的嗡嗡声低低地响着。苏婉睡在旁边,呼吸均匀,被子盖到下巴。他轻手轻脚下了床,光脚踩在木地板上,地板的凉意从脚底传上来。他走到客厅,把乐乐昨晚看的《十万个为什么》从沙发上挪开,遥控器从茶几和沙发之间的缝隙里捡出来放到茶几上。几支彩色铅笔散落在地,他弯腰归拢到笔筒里。
乐乐的作业本摊在餐桌的一角,上面的数学题已经做完了,最后几道应用题旁边打着红勾。林晨看了一眼最后一道题的答案,九乘七等于六十三,写对了。他翻开作业本的前几页,字迹工整,错误不多,老师画的圈圈加起来只有三四个。乐乐的字比上学期好看了不少,横平竖直,规规矩矩的。他把作业本合上,放回乐乐的书包里。
他走到书桌前坐下来,打开笔记本电脑。开机画面跳过去之后,先登录了投资账户。页面加载了三秒,数字跳出来。
余额:五百零三万八千七百块。
他盯着这个数字看了几秒。上个月是四百八十万出头,这个月又多了二十多万。FinGpt v4在后台自动运行,月收益率稳定在百分之四左右,夏普比率二点一,最大回撤控制在百分之八以内。系统自动调仓、自动止损,他每天只需要看一眼关键指标,确认没有异常就行。
他把投资账户的月度报表导出来,拖进表格软件里做了一张折线图。从最初投入的五万块到现在的五百多万,两年半的时间,收益率超过一百倍。折线图上那条线从左下角爬到右上角,中间有过回撤。去年十月那次黑天鹅事件单日亏损一万二,去年十二月有一次百分之三的回撤。但整体趋势向上,折线图的末端已经突破了五百万的刻度线。
他拉了一下鼠标,把时间轴从两年半缩短到最近三个月。七、八、九三个月的收益曲线平滑上升,没有明显的波动。FinGpt v4的三层风控机制在起作用:第一层是仓位控制,单笔交易不超过总资金的百分之十;第二层是止损线,回撤达到设定值自动平仓;第三层是对冲机制,A股多头和期货空头互相平衡。三层机制叠在一起,把最大回撤压到了百分之八以内。
他又把时间轴拉长到两年半的全局视图,扫了一眼那条从五万到五百多万的曲线。曲线的形状像一把慢慢拉开的弓,前半年几乎是平的,从二十万之后开始明显上扬。那是FinGpt从v1升级到v2的阶段,模型学会了更多的市场模式。从v2到v3的时候曲线又陡了一截,v4之后变得平稳而持续,像一条匀速上升的斜线。
他切到投资系统的后台日志看了一眼。FinGpt v4昨天自动执行了几笔交易,A股和期货的对冲仓位各一笔,外加一笔可转债套利。全部盈利,合计收益三万八千多块。今天系统没有新的交易信号,资金池在等待中,界面上显示idle,资金曲线是一条平直的横线。他把日志窗口最小化,又打开了另一个监控面板,扫了一眼各策略的运行状态。多头策略运行正常,空头对冲策略运行正常,套利策略运行正常,三盏绿灯亮着。
他关掉投资系统的后台,又打开了晨枫快餐的数据看板。现在是早上七点十分,店里还没开门,昨天的一周数据汇总已经出来了:日均营收五千八百,翻台率四点一,回头客占比百分之六十八,外卖占比百分之二十三。
他拉了一下上周的客流分布图。周一到周五比较平稳,周六周日有两个峰值,午餐时段翻台率能到五点二。外卖订单集中在下午两点到四点之间,那段时间堂食客人少了,但写字楼里的下午茶单子涌进来。他把几个异常数据点圈出来:周三午餐时段翻台率掉到了三点二,查了一下原因,是那天暴雨,写字楼的客户没出来。周四晚餐时段外卖占比突然升到百分之三十五,他扫了一眼天气记录,那天也是雨天,堂食客户转向了外卖。
店里的运行跟投资系统一样稳定。林浩在灶台上出菜,小吴在收银台打单,其他人各就各位。一台机器在t厂的机房里跑FinGpt,另一台在科技园中区一百二十平米的小店里出快餐。两台都在自动运行,都不需要他时时刻刻盯着。他只需要每天看一眼关键指标,确认数字在正常范围内,然后去做别的事。
他合上电脑,起身走进厨房。
苏婉已经在了,站在灶台旁边给乐乐装午饭的饭盒。她把番茄炒蛋盛进格子里,又夹了一小份青菜进去,米饭压得实实的。盖子扣上去的时候发出轻微的咔哒声。她在饭盒外面套了一个保温袋,放进乐乐的书包侧袋里,拉链拉到顶。
林晨倒了杯水,在餐桌旁边坐下来。水是昨天烧的凉白开,现在只有微温。他喝了一口,放下杯子。
投资账户这个月又涨了。
苏婉手上的动作没停。涨了多少?
七万出头。
苏婉了一声。她已经对投资账户的数字脱敏了。从最初的五万到五十万的时候她会惊讶,从五十万到两百万的时候她会说。现在到了五百多万,她的反应跟看到乐乐考了九十分一样:点一下头,继续做手里的事。
加上t厂的工资和晨枫的分红,这个月总收入大概二十五万。林晨算了一下,投资二十多万,t厂工资到手四万多,分红两万多。
二十多万加四万加两万多,二十五万出头,数字对得上。
苏婉把饭盒的拉链拉到底,抬头看了他一眼。你跟乐乐说一声,八点出门。
她转身去叫乐乐起床。林晨听到卧室里传来乐乐哼哼唧唧的声音,然后是苏婉温和但不容商量的语气:起来了,七点半了。
乐乐从房间里出来的时候头发还翘着,一只手拎着书包,另一只手在揉眼睛。他走到餐桌旁边,扫了一眼桌上的水杯,拿起来喝了一口。水杯上印着一只小恐龙,是苏婉去年给他买的。,拿起来喝了一口。
这是凉的吧。乐乐皱了皱鼻子。
嗯,让妈妈给你倒热的。林晨说。
苏婉已经从厨房出来了,手里端着一杯温水递给乐乐。然后她蹲下来给乐乐系鞋带,嘴里念叨着:今天体育课,鞋带系紧一点,不然跑着跑着就散了。
乐乐把温水喝完,把杯子放回桌上。妈妈,我书包重不重?
苏婉拎了一下。还好,中午记得把饭盒里的菜吃完,别只吃饭。
知道了。
林晨坐在餐桌旁边看着这一幕。两年前他失业的那个月,苏婉也是这样每天早上给乐乐装饭盒、系鞋带、送他上学。那时候他坐在同一张餐桌旁边看投简历的邮箱,一封回复都没有。现在他坐在同一个位置,投资账户五百多万,月入二十多万。
日子还是一样的。起床,上班,看数据,回家,吃饭,睡觉。苏婉还是每天早上给乐乐装饭盒的那个人,乐乐还是那个写完数学题就跑过来说九乘七等于六十三对不对的小孩。只是餐桌桌面上多了一道乐乐用铅笔划的线,苏婉说擦了好几次没擦掉,后来就随它去了。
苏婉把乐乐送到门口,回头看了林晨一眼:你今天周会几点?
九点半。
那你还早。
乐乐背着书包在门口换鞋,抬头冲林晨喊了一声:爸爸,九乘七等于六十三对不对?
那我走了!门关上了,苏婉带乐乐出门的脚步声在楼道里渐渐远去。
林晨坐在空荡荡的客厅里,水杯里的水还冒着微弱的热气。他扫了一眼手机上的时间,七点四十五。他拿起车钥匙,开门出去。
楼下的小区院子里有几棵芒果树,十月还是绿的,叶子被早风吹得沙沙响。他的车停在b2车位上,挡风玻璃上落了几片树叶。地下车库的灯管有一盏在闪,白光忽明忽暗地跳着。他发动引擎,倒车出位,汇入科技园中区早晨的车流里。
深南大道上的车还不多,红绿灯一个接一个地闪过去。他把车窗开了一条缝,十月的风灌进来,带着一点桂花的味道。路边有人在跑步,穿着荧光绿的背心,耳机线在胸前晃来晃去。他看了一眼后视镜,变道,左转,上了科苑路。
等红灯的时候他看了一眼手机。钉钉群里训练营的学员已经在发早打卡了,消息数从昨晚的四百多条涨到了四百八十多条。他没有点开,把手机放回中控台上。绿灯亮了,他踩下油门,车往前滑出去。t厂的周会在九点半,他得先到。
车拐进t厂的停车场,他的专属车位在b2层靠电梯最近的位置。他熄了火,拔下钥匙,走进电梯。电梯里的镜面映出他的脸,三十多岁,头发剪得很短,眼角没有明显的皱纹。他看了一眼镜子里的自己,没有多想,出了电梯,刷卡进办公室。
第330章 社会责任
十月的一个周六,林晨在店里整理数据。晨枫快餐上午的客流刚过高峰,厨房里的炒锅声渐渐小了下去,排风扇还在嗡嗡地转。油烟味从出餐口飘出来,混着酸菜鱼套餐的酸辣香气。他坐在角落里的小桌子旁,笔记本电脑上的数据看板还亮着。桌面上放着一杯凉了的茶,他早上泡的,现在忘了喝。
手机震了一下。
微信弹出来一条消息,来自他两年前建的一个群:AI转型交流群。
当初建这个群的时候只有十几个人,都是他在线上社区里认识的同行,正在转型学AI。两年过去了,群里有三百多人,大部分是三十多岁、被裁之后想转行的前程序员。群里的消息他平时不怎么看了,每天几百条,大部分是互相推招聘链接或者转发行业新闻。但今天这条消息他看到了,因为发消息的人@了群主。
消息是一个叫老陈的人发的:各位,有没有人知道哪家公司还在招AI工程师?我投了两个月简历了,面试了三家,都因为年龄被拒了。
林晨看着这条消息,手指在屏幕上停了几秒。
他认识老陈。半年前老陈在群里问过python学框架的顺序,林晨回过他一句先学基础再碰框架。老陈后来私聊过他几次,每次都是带着具体问题来问的,不是那种伸手就要资料的人。四十岁出头,之前在某互联网公司做Java架构师,去年年底被优化了。
林晨没有立刻回复。他放下手机,走到出餐口看了一眼。上午的备料还剩一些,小刘正在擦台面,林浩在灶台后面刷锅,水龙头开到最大,哗哗的声音盖过了手机提示音。阿伟从冷库那边走过来,手里拎着一箱生菜,冲林晨点了一下头。
上午客流怎么样?林晨问。
比上周六多了十几单,阿伟说,那个新上的酸菜鱼套餐点的人挺多。
林晨回到角落的小桌子旁,重新拿起手机。群里已经有几个人在回复老陈了。有人发了招聘网站的链接,有人说我这边可以帮忙内推,还有人安慰他别灰心继续投。
老陈回了一句:谢谢大家,我继续投。
后面跟了一排抱拳和加油的表情。
林晨在输入框里打了一行字,又删掉了。他想了想,重新打了一行:
老陈,你现在的技术栈是什么?学AI多久了?
老陈的回复很快:python学了半年,pytorch三个月,做过两个项目。之前做Java后端,十年经验。
十年Java后端。四十岁出头。投了两个月简历,面试三家,全部因为年龄被拒。
林晨看着这几行字,想起两年前自己的处境。三十五岁,被裁,简历投了一百多份,面试了七八家,处处碰壁。那时候他也是这个群里发消息的人,问着同样的问题,收着同样的安慰和招聘链接。
他花了九个月的时间从零到拿到t厂的offer。九个月里几乎没有收入,全家靠苏婉的工资撑着。苏婉那段时间没说过一句抱怨的话,每天早上照常出门上班,晚上回来照常做饭、给乐乐辅导作业。但林晨知道她在看银行卡余额的时候,眉头会比平时皱得更紧一点。有一次他半夜起来上厕所,看到苏婉的手机亮着,屏幕上是银行App的界面,余额那一栏的数字比上个月又少了一些。她看到他醒了,赶紧锁屏,翻了个身假装睡着。
三十多岁被裁之后重新开始,需要的不只是学习能力。在没有收入的情况下,还能坐在电脑前面写代码,这件事本身就很难。
他在群里发了一段话:
AI转型这条路我走过。九个月没收入,全职学习。技术栈从零到拿到offer,用了半年。我可以把我当时的学习路径和项目经验整理出来,分享给大家。如果有人需要一对一指导,我可以每周抽两个小时做线上答疑。免费的。
发出去之后,他看着屏幕等了几秒。
群里的消息先是安静了两三秒,然后刷屏了。
林总!真的吗?
太感谢了!
我报名!
这个必须报名!
林总大佬!
消息一条接一条地往上滚,林晨没有逐条看。他往下滑了滑,看到老陈发了一条:谢谢林总。我一定好好学。
林晨退出群聊,把手机扣在桌上。
厨房里林浩已经刷完锅了,正在擦灶台。不锈钢灶面被他擦得发亮,抹布叠成四折一道一道地擦过去。小刘从出餐口探过头来:老板,中午的食材还够,不用补货。
知道了。林晨应了一声。
他重新拿起手机,打开备忘录。手指在屏幕上打了一行字:AI转型训练营,初步计划。
然后他又加了几行:第一期100人,三个月,线上答疑每周一次,免费。
他没有继续往下写。这个念头不是今天才有的。两年前被裁的那天他坐在家里看邮箱,脑子里就闪过这个想法:如果有一天他走通了这条路,他要把路标留下来,让后面的人少走弯路。
现在路走通了。路标该立了。
他站起来,走到店门口看了看外面的天气。十月的天还是蓝的,科技园中区的写字楼在阳光下泛着白光。门口的招牌晨枫快餐四个字被晒得有点褪色了,下次得找人来重新刷一下。马路对面那家奶茶店又换了招牌,这次是绿色的底白色的字,门口排着十几个人的队。他看了一会儿,转身回到店里。十月的阳光照在玻璃门上,拉出一条亮线。
下午一点半,午餐高峰过了。林晨让小刘先去休息,自己坐在出餐口旁边看手机。群里的消息已经超过两百条了,他把报名表单的链接置顶,然后开始写训练营的方案。
他写得很慢,每写一段就停下来想一想。学习路径的顺序他记得很清楚,因为每一步都是他自己走过的。但他不确定别人的节奏是不是跟他一样,有些地方他卡了两个月才想通,也许别人只需要两周。他在这些地方加了注释,标明此处容易卡壳,建议多花时间。
写到下午三点,店里已经没什么客人了。午后的阳光从门口照进来,在地板上画出一个长方形的光斑。林浩坐在灶台旁边喝了一杯凉茶,阿伟在备料室清点食材,小刘靠在出餐口的柱子上刷手机。林晨把方案的第一版存了档,合上电脑。
他确认了一下手机上的时间,离晚餐高峰还有三个小时。他拿起车钥匙,出了店门,开车回家。
到家的时候苏婉在客厅里改作业。她听到门响,抬头看了一眼。
回来了?店里不忙?
下午人少。
苏婉看了一眼他脸上的表情。有什么事?
没什么大事。林晨换了拖鞋,走到书桌前坐下,群里有个四十多岁的人,投了两个月简历,面试了三家都被拒了。我想做一个免费训练营,帮那些转型的人。
免费的?
苏婉想了一下。你时间够吗?
每周抽两个小时,应该可以。
那就做吧。苏婉说完低头继续改作业,改了两笔又抬头看了他一眼,不过你别把自己搞太累了,t厂和店里已经够忙了。
知道。
林晨打开电脑,继续写方案。苏婉的笔在纸上沙沙地响,乐乐的房间传来动画片的声音,隐约能听到片头曲的旋律。窗外的天色暗了一点,十月的傍晚来得比夏天早。对面楼上有几户人家的灯亮了,橘黄色的光从窗户里透出来。
他写方案的时候脑子里一直在想那个群里的消息。四十岁,十年Java后端,投了两个月简历面试了三家全被拒。两年前他也是这样,简历投出去石沉大海,面试的时候面试官看着他的年龄叹气。那条路他走过,每一步有多难他都知道。
他把方案写到一半,停下来看了一眼群里的报名数据。报名表单还没发出去,但他已经能猜到报名人数不会少。三百多人的群,至少有三分之一是认真在学AI的,这里面至少有一半会报名。
他继续写。方案的核心内容三块:基础阶段、框架阶段、项目阶段。每块内容他都列了具体的学习资源和时间安排,验收标准写在每一块的末尾。基础阶段要能独立完成python的数据处理脚本,框架阶段要能搭建和训练一个简单的模型,项目阶段要能做出一个可以写进简历的完整项目。
写完的时候已经是晚上十点了。乐乐已经睡了,苏婉在卧室里看书。林晨把方案从头到尾看了一遍,改了几个措辞,存了档。
他关掉电脑,走进卧室。苏婉抬头看了他一眼。写完了?
嗯,初稿。
早点睡。
他躺下来,看了一眼天花板,两分钟后睡着了。
那天晚上林晨在训练营的群里回复了最后一条消息,关掉手机。苏婉在客厅里批改作业,乐乐已经睡了。他在沙发上坐了一会儿,想着训练营第一期的课程大纲还要怎么优化。群里的报名数据还在涨,开课时间定在下个月初,学员的热情已经超出他的预期。他把几个共性问题在备忘录上列了出来,打算第一堂课先从这些痛点讲起。
第331章 开设训练营
林晨花了两个晚上的时间把AI转型训练营的方案写完。
第一个晚上他坐在书桌前,打开一个空白文档,从学习路径开始写。python基础两周,数学基础两周,机器学习算法三周,深度学习框架两周。他把每个阶段对应的学习资源列了上去:哪本书值得读,哪个视频课程讲得清楚。这些他不需要查资料,全是自己走过的路,每个阶段花了多少时间、哪些地方卡过壳,他脑子里都记着。
写到中间他停了一下,翻开自己两年前的学习笔记看了看。那时候他用一个txt文件记学习进度,每一行都是具体的数据:某月某日学到哪一章,跑通哪个模型,loss降到多少。没有一句感悟,全是数字和事实。他按照这个结构把方案里的验收标准也写成了数据化的:基础阶段要能独立完成python数据处理脚本,框架阶段要能搭建并训练一个简单模型,项目阶段要做出一个能跑通且有Github地址的完整项目。
第二个晚上他把项目实战部分写完。从学习路径到项目落地,中间需要一块跳板。他当年用的是量化交易项目,但不是每个人都适合做量化。他又加了一个NLp文本分类方向和一个计算机视觉方向,每个方向对应不同的岗位需求,做完了可以直接写进简历。
方案写完之后他看了一眼字数:四千多字。不长,但每个字都有用。他存了文档,看了一眼时间,凌晨一点半。书房外面很安静,只有客厅方向传来苏婉翻书的声音。她已经睡了又醒了,还是一直没睡,他不确定。他把台灯调暗了一点,合上电脑。
他在微信群里发了招募贴:AI转型训练营第一期,免费,限100人,每周线上答疑一次,为期三个月。报名链接在下面。
链接发出后两个小时,报名人数超过了一百人。他关掉表单。一百人已经是他能带的上限了。每周两个小时乘以一百人的问题量,再加上t厂的工作和晨枫的数据,他的时间已经拉满了。
他看了一眼报名表上的数据。学历分布:本科占百分之六十五,硕士占百分之二十五,大专及以下占百分之十。年龄分布:三十到三十五岁占百分之四十五,三十五到四十岁占百分之三十,四十岁以上占百分之十五,三十岁以下只有百分之十。大部分人跟他当年一样,中年被裁,想转行学AI,不知道从哪里开始。他把这些数据导出来,存了一份到电脑上,又拉了一个简单的饼图。
苏婉在客厅里看电视,听到他在房间里敲键盘的频率变高了,探头进来问了一句:在忙什么?
建了个训练营,帮人学AI。
免费的?
苏婉点了点头,没再说什么。她去厨房倒了一杯温水端过来放在他桌上,回客厅去了。林晨看着桌上的水杯,杯壁上有一层薄薄的水雾。他喝了一口,继续整理学员数据。
技术背景方面,纯后端开发的占了一半以上,剩下的分布在数据分析、测试、运维等方向。
他建了一个钉钉群,把一百个人拉进来,然后发了一段话:
这个训练营不是教你从零变成AI专家的。三个月做不到这件事。我能做的是帮你缩短摸索的时间:哪些该学,哪些可以先跳过。路还是要你自己走。
群里的回复很快:明白了林总。收到。谢谢林总。
也有人问:林总,训练营的节奏是怎样的?每天有固定任务吗?
林晨回了一句:每周一个阶段,每个阶段有学习任务和验收标准。线上答疑每周一次,平时在群里提问。
收到。
第一次线上答疑安排在周六下午两点。林晨坐在家里的书桌前,打开了钉钉的视频会议。一百个人的头像排列在屏幕上,大部分是黑色的,关了摄像头。只有二十多个人开了摄像头,能看到各种各样的场景:穿着格子衬衫坐在电脑前面的、在出租屋小桌旁捧着笔记本的。
林晨没有做ppt,也没有准备讲稿。他打开了共享屏幕,上面是他两年前的学习路径图。从python基础到机器学习算法,再到深度学习框架,最后到项目实战落地。每一步的学习时间和踩过的坑都标在上面。路径图是他用Excel画的,线条和方框都很朴素,没有配色方案,没有任何设计感,但逻辑清晰,一眼就能看懂。
这是我当时的学习路径。他指着屏幕说,从零到拿到t厂的offer,用了九个月。你们可以更快,因为我已经帮你们排了序,哪些先学、哪些可以跳过。
他花了四十分钟讲完学习路径,然后开放提问。
问题很快刷上来。数学基础要不要从线性代数开始学?面试的时候项目经验怎么写?他一个一个回答,每个回答控制在两分钟以内。他的风格跟在公司开会一样:直接给方法,不讲道理,不绕弯子。有一个学员在聊天框里打了一行字:林总,训练营的资料包什么时候发?林晨回了一句:明天。先看学习路径,资料包只是辅助。
有一个学员问了一个问题:年龄真的是问题吗?
屏幕上安静了两秒。
林晨想了一下。面试官看的是你的项目经验和解决问题的能力。你改变不了年龄,但你可以改变简历上写的东西。三个月之后你的简历上应该有一个完整的AI项目,而不是只有十年Java后端。
钉钉群里的消息刷了一排:收到。明白了。谢谢林总。屏幕上那个问问题的学员头像亮了一下,又暗了,像是点了点头。
线上答疑结束后他关掉电脑,看了一眼时间。两个半小时,比他预计的多了一个小时。嗓子有点哑,他起身去厨房倒了杯水,凉白开顺着喉咙滑下去,舒服了一些。
苏婉在客厅里改作业。她抬头看了他一眼:讲完了?
讲了两个半小时?
问题比预想的多。林晨端着水杯在沙发上坐下来。
苏婉笑了一下,低头继续改作业。你嗓子都哑了,喝点热水。
已经喝了。
他靠在沙发上休息了几分钟,然后起身回到书桌前,打开钉钉群。学员们已经在讨论今天答疑的内容了,有人把他的学习路径截图发到群里,有人整理了一份笔记。消息数两百多条,他看了一遍,把几个共性问题记下来:数学基础部分问的人最多,框架选择也有人犹豫,面试准备是大家最焦虑的环节。
这些数据他会用来调整下一次答疑的内容。
他把共性问题整理成了一张表格,按出现频率排序。排在第一位的是数学基础,三十七个人问了跟线性代数和概率论相关的问题。第二位的是框架选择,pytorch还是tensorFlow。第三位的是项目经验怎么写进简历。他把表格保存,又建了一个新的文件夹,叫第二期答疑提纲。
第二天他在t厂上班的时候,手机上的钉钉群一直在响。中午吃饭的时候他看了一眼消息数,已经四百多条了。学员们在讨论学习路径,分享资源,互相解答问题。李敏已经把她做的思维导图发到了群里,下面跟了二十多条回复。
林晨没有参与讨论。他关掉手机,继续写下午要交的代码。t厂的办公楼在科技园南区的写字楼里,二十三楼,窗外能看到深圳湾的海面。他敲了一会儿代码,又瞟了一眼手机,钉钉群的消息数涨到了四百六十多条。
下午三点有个部门周会,他汇报了FinGpt v4的最新数据。周会结束后他回到工位,打开钉钉群扫了一眼,然后关掉了。他不打算在群里参与太多讨论,答疑时间是答疑时间,其他时间他得做自己的事。
晚上回到家,苏婉正在厨房炒菜。乐乐趴在餐桌上写作业,抬头瞥了一眼林晨:爸爸,一百减三十七等于多少?
六十三。
哦,我算的也是六十三。乐乐低头继续写。
林晨在餐桌旁边坐下来,打开手机扫了一眼钉钉群。消息数五百多了。他把几个需要回复的私聊过了一遍,然后打开备忘录,把明天的答疑重点写下来:数学基础要加一节专门讲概率论,框架选择建议直接上手pytorch,面试准备放到项目阶段再讲。
他合上手机,走到厨房门口。苏婉正在把炒好的菜往盘子里盛,西红柿炒蛋的香味飘过来。
训练营还行吧?苏婉问。
还行。学员比我想的积极。
那就好。苏婉把盘子端到桌上,吃饭了。
林晨坐下来吃饭的时候,手机又响了。他瞥了一眼,是训练营群里的消息,有人把今天的答疑内容整理成了一份文档分享出来了。他点开看了一下,整理得挺完整,连他随口说的数学基础先补概率论都记下来了。他在群里回了一句:这份整理得不错。
林晨叫了一声乐乐,三个人坐下来吃饭。西红柿炒蛋,清炒时蔬,一锅白米饭。乐乐一边吃一边讲学校里的事,说体育课跑了八百米,说同桌借了他的橡皮没还。苏婉听着,偶尔插一句橡皮要回来了吗。林晨吃完了饭,帮苏婉收碗,乐乐继续写作业。
他瞟了一眼时间,八点半。离睡觉还有两个多小时。他坐回书桌前,打开电脑,开始整理下一次答疑的提纲。
整理到一半,钉钉群又弹出一条消息。一个叫王志远的学员发了一段话:林总,四十岁学AI还有机会吗?我python只学了两个月,基础很差。林晨看了一下他的资料,四十岁,项目经理,十年代码经验但已经停了五年。他打了几个字又删了,重新打了一句:面试官看的是你能做什么,不是你多大。三个月之后你的简历上应该有一个完整的AI项目。他想了想,又加了一句:先把python基础过一遍,每天至少四个小时。
消息发出去之后,群里安静了几秒。然后王志远回了一个字:收到。
训练营的名字是他随便起的,AI转型训练营。没有花哨的口号,没有励志的故事。一群人在学一条他走过的路,他走在前面,帮他们标出哪里有坑。
第332章 学员的故事
训练营开始两周之后,林晨发现了一个规律。钉钉群里最活跃的十个人,不一定是最快学会的,但一定是最肯花时间的。
他做了一个简单的统计:每天打卡学习时长超过四小时的有二十三人,两到四小时的有四十一人,低于两小时的有三十多人。低于两小时的那批人大多在第二周就退出了。他们没有主动退群,只是不再回复消息、不再提交作业,头像渐渐变成灰色。钉钉群里的活跃人数从一百降到了七十。林晨把退出的人名单单独拉了一个表,看了两遍,没有特别突出的特征,就是时间投入不够。
留下的七十人里,有几个让林晨印象深刻的。
一个叫赵刚,三十六岁,之前在一家跨境电商公司做后端开发。被裁之后在家待了三个月,然后进了训练营。他在群里问的问题最多,而且每次都带着代码截图来问。他问的是我这样做为什么不对,说明他真的在写代码,不是在看视频假装学习。林晨翻了一下他的作业提交记录,每天学习时间超过六小时,提交的代码量是群里第二多的。他的代码风格偏工程化,函数命名规范,注释写在关键逻辑的地方,看得出是做了十年Java后端留下来的习惯。
另一个叫李敏,三十二岁,之前是数据分析岗,想转AI工程方向。她是群里唯一一个把林晨的学习路径做成了思维导图的人。每一步学什么、用什么资源,全画在一张图上,发到群里分享。林晨看了那张思维导图,结构比他自己写的方案还清楚。节点之间的逻辑关系标注得明明白白,连他当年踩过的坑都标了红色警告标记。他给李敏发了一条私聊:思维导图做得不错,我下次答疑可以引用吗?李敏秒回:当然可以,林总。
还有一个叫王志远,四十岁,之前是某互联网公司的项目经理,管过二十多人的团队。他的技术基础最薄弱。python只学了两个月,连矩阵乘法都要重新看视频学。但他的执行力最强。每天早上六点起来学代码,学到八点半出门送孩子上学,晚上九点回家继续学到十二点。他的作业质量不是最好的,但每次都交,从不缺席。林晨翻了一下他的提交记录,十四天的作业一天没落,每天的提交时间都在晚上十一点到十二点之间。
林晨在第二次线上答疑的时候回答了王志远的一个问题:四十岁学AI还有机会吗?
他看着屏幕上王志远的头像,停了两秒。头像是一张穿着深蓝色衬衫的证件照,表情严肃,头发梳得很整齐。
面试官看的是你能做什么,不是你多大。三个月之后你的简历上应该有一个完整的AI项目。
王志远在群里回了一句:收到。
简短,没有多余的话。林晨看了一眼他的学号,一百个人里年纪最大的那个,也是最沉默的那个。他的作业从来不问为什么,只问怎么做。代码提交的时候注释很少,但逻辑是对的。
两周的训练营之后,林晨做了一次摸底测试。一百分的试卷,最高分九十二,最低分三十一,平均分六十七。赵刚拿了八十八分,李敏拿了九十一分,王志远拿了六十五分。
六十五分不算好,但也不差。对于一个四十岁、python只学了两个月的人来说,六十五分意味着他在用每天六小时的学习时间追赶别人两三年的积累。追赶的速度比林晨当年还快。
周六上午,他坐在书桌前整理测试结果。把每个学员的分数拉了一个表格出来,按学习时长和分数做了一个散点图。大部分数据点落在正相关区域内,学习时间越长分数越高。但有几个异常值:有人学了六个小时只拿了四十几分,有人学了两个小时拿了七十多分。他在这些异常值旁边加了备注,准备下次答疑的时候单独聊。
他还把试卷里的错题分布拉了一张图。概率论相关的题错的人最多,占错题总数的百分之三十八。其次是反向传播的计算题,错的人占百分之二十七。面试场景题反而错得不多,只有百分之十五。这些数据他存了下来,下一次答疑要调整重点。
苏婉端了一杯水过来,放在他桌上。
又在看训练营的东西?
嗯,摸底测试的成绩出来了。
怎么样?
大部分人在及格线以上。有几个学得很快的。
苏婉看了一眼屏幕上的散点图。那个四十岁的呢?
六十五分。
还行吧?
还行。比我想的好。林晨把表格往下拉了拉,指了一下王志远的那一行数据,你看,他的学习时长是最长的之一,分数在中游偏上。说明他的投入产出比还行,只是基础太弱,需要更多时间。
苏婉点了点头,没再问。她拿走他桌上的空杯子,回厨房去了。林晨听到厨房里水龙头打开的声音,然后是苏婉洗水果的动静。乐乐在客厅里看动画片,声音开得不大,隐约能听到片头曲的旋律。
林晨在手机备忘录上记了一行字:第三周开始项目实战阶段,赵刚和李敏分到同一组做量化交易项目,王志远单独跟一个NLp文本分类项目。
NLp文本分类的门槛比量化交易低,数据集公开,模型结构简单,适合用来打基础。王志远需要从更基础的开始练手,先把这个项目做通了,再考虑往更复杂的方向走。
他在备忘录里又加了几行:数学基础加一节概率论,框架部分重点推pytorch,项目阶段按岗位需求分组。
训练营的第三个周末,他在钉钉群里发了一段话:从下周开始进入项目实战阶段。每个人选一个项目方向,三个月内完成一个可以写进简历的项目。完成标准:能跑通、有Github地址。
群里又刷了一排消息。收到。终于要做项目了!林总,量化交易方向还可以报名吗?林晨没有逐条回复。他打开文档开始整理项目方向的参考列表。这份列表跟当年他自己学AI时做的项目列表类似,但更精简,每个项目都对应一个具体的岗位需求,做完了可以直接写进简历。量化交易项目对应金融科技岗,NLp文本分类对应搜索推荐岗,计算机视觉对应自动驾驶岗。他把每个项目的数据集、模型架构、验收指标都列了上去。
写了一半的时候他停下来,扫了一眼钉钉群里的问题。有人在问项目方向怎么选,有人在问量化交易需要什么数学基础,王志远发了一条:林总,NLp文本分类的项目用什么数据集?
林晨回了一句:Imdb影评分类,公开数据集,适合入门。
收到。
他继续写列表。写到晚上十一点,列表整理完了,一共十二个项目方向,每个方向都附了详细的技术栈和验收指标。他把列表发到群里,然后确认了一下时间。钉钉群的消息数是四百七十三条。他看了一眼,关了手机,走进卧室。
苏婉已经睡了,脸朝着墙那边,被子拉到肩膀。乐乐的房间门关着,里面没有声音。他躺下来,看了一会儿天花板,然后翻了个身,两分钟后睡着了。
第二天早上六点,他照常醒来。客厅里安安静静的,苏婉还在睡,乐乐的房间也没有动静。他走到书桌前,打开电脑,确认了一下投资账户的数字。一切正常,FinGpt v4在自动运行,没有异常。昨天的收益三千四百块,资金曲线继续向上。
手机上的钉钉群已经有新消息了。赵刚在群里发了一段代码,问有没有人能帮忙看一下为什么loss不收敛。下面已经有三个人回复了,李敏的回复最详细,附了一张学习率调整的示意图,标注了关键参数的调优方向。王志远没有说话,但他的作业提交记录显示今天凌晨五点他提交了第三周的第二次作业。
林晨看了一眼王志远的作业。代码跑通了,逻辑基本正确,只有一处变量命名不规范,把feature写成了feautre,拼写错误。他在作业下面留了一句评语:跑通了,变量命名注意一下规范。
然后他合上电脑,去厨房给乐乐热牛奶。厨房的窗户外面天还黑着,楼下的小区路灯亮着暖黄色的光。他把牛奶倒进锅里开小火,看着牛奶表面慢慢起了一层细密的泡泡。
苏婉的闹钟响了,卧室里传来她翻身的声音。林晨把牛奶从锅里倒出来,放到餐桌上。乐乐的饭盒还在冰箱里,他拿出来,把昨晚苏婉准备的菜装进去。
又是新的一天了。
那天晚上林晨在训练营的群里发了一条消息:第二期报名下周开始。消息发出之后五分钟,群里就有十几个回复,有人问时间,有人问费用,有人问能不能旁听。他一个一个回了。回完之后他看了一眼时间,十一点了。苏婉已经睡了,乐乐的房间灯也灭了,客厅的加湿器嗡嗡地响着,窗外远处传来一声汽车鸣笛。他关掉手机,躺下来,想着第二期的课程表应该怎么排。
第333章 用心教学
训练营进入项目实战阶段之后,林晨每周的线上答疑从两小时变成了三小时。
学员们的问题变了。之前问的是线性代数怎么学python哪个框架好用,现在问的是模型收敛不了怎么办特征工程应该怎么做。问题变具体了,说明他们真的在动手写代码了。
周六晚上八点,林晨打开钉钉视频会议。二十多个人已经在线上等着了,聊天框里刷着林总好今晚讲什么。林晨没有寒暄,直接打开了共享屏幕,上面是一份学员提交的训练日志。
赵刚,你这个loss曲线我看了一下。第二个epoch之后开始震荡,你学习率设的多少?
屏幕那头传来赵刚的声音,带着一点紧张:0.01。
降到0.001,再跑一轮看看。跑完把训练集和验证集的loss曲线都画出来,截个图发群里。
赵刚照做了。他花了大概五分钟调参数,重新训练了一轮。新的loss曲线出现在群聊里,从之前的锯齿状震荡变成了平滑的下降曲线。他在群里打了一行字:好了,收敛了。谢谢林总。
林晨扫了一眼群里的消息,没有回复感谢,直接点了下一个学员的名字。
刘洋,你的项目做到哪了?
特征提取做完了,但是模型效果不太好,准确率只有71%。
你特征怎么选的?相关性分析做了吗?
没做。
先做相关性分析,把相关系数低于0.01的特征去掉,再跑一遍。
刘洋花了十分钟做完特征筛选,重新训练之后准确率从71%涨到了78%。他在群里发了一个竖起大拇指的表情。
林晨往下翻学员的代码提交记录,看到一个叫周涛的学员提交了一个新版本。他点开看了一眼,特征工程的代码写得很规整,注释也清楚,数据清洗的步骤一步一步都有标注。他在群里艾特了周涛:你的特征工程写得不错,可以当模板给其他学员参考。
周涛回了一句:谢谢林总。
这种教学方式跟他带团队的时候一样。他不会手把手教你写代码,但他会告诉你调试的方向。学员问为什么模型不收敛,他不会从数学原理讲起,只会说先看学习率,再看数据分布,然后让你自己跑一遍。
线上答疑进行到一半的时候,一个学员问了一个关于反向传播的问题。林晨打字回答说不清楚,干脆开了一块白板,从链式法则开始画。他画了三层网络的结构图,标出每一层的梯度方向,用不同颜色的笔标注了梯度消失和梯度爆炸的区域。
梯度消失的根源在激活函数。用ReLU替换Sigmoid,大部分情况就能解决。如果还不行,考虑残差连接。
他讲这部分的时候语速比平时快,但每个步骤都讲得很清楚。群里有人在同步截图,有人说记笔记记不过来。林晨看了一眼聊天框,说了一句:课后我会把白板的截图发到群里。现在先听。
答疑结束的时候已经十点半了。林晨关掉视频会议,揉了揉眼睛。钉钉群里还有十几条未回复的消息,都是学员下午发的问题。他一条一条看,能一两句回答的就直接回,需要看代码的就让他们把代码贴到共享文档里。
有一个学员晚上十一点还在群里问问题,林晨回了一句:先睡,明天再看。然后他关掉手机,去厨房倒了一杯水。
陈铭有一次在t厂的茶水间碰到他。那是个周三的下午,林晨刚从会议室出来,手里端着一杯黑咖啡,靠在茶水间的吧台边上刷手机。陈铭走过去接热水,瞥了一眼他的屏幕,上面是钉钉群的消息列表,密密麻麻的消息全是学员发的代码截图。
你最近周末都在忙什么?陈铭问了一句。我看你钉钉经常在线。
在线上带几个人学AI。
免费的?
免费的。
陈铭点了一下头,没有再问。他端着水杯站在窗边,看了一眼楼下的停车场。两年前他们面试的时候,林晨的简历上写着从零到拿到offer用了九个月。陈铭当时就记住了这个人。
需要帮忙吗?陈铭问。
暂时不用。人还不多,我一个人能应付。
陈铭喝完水,把杯子放回吧台上。有需要跟我说。
林晨嗯了一声,继续刷手机。
张雨也知道了训练营的事。她在一次周会上跟林晨说:林总,我能不能也去讲一节课?数据工程的方向我可以讲。
林晨想了一下。可以。下周六的答疑你来讲数据清洗和特征工程,我讲模型训练。一人一半时间。
张雨准备了一整周。她做了五年数据工程师,从数据采集到特征构建,每一步都踩过坑。周六那天她打开共享屏幕,从数据缺失值的处理开始讲起。她讲得很细,每个步骤都配合着真实的代码示例,连缺失值的类型都分了两类:随机缺失和非随机缺失,每种类型的处理方式不同。
随机缺失你可以看它跟其他特征的关系来决定怎么补,非随机缺失你得重新想数据采集的方式。她一边说一边在Jupyter Notebook里运行代码,输出结果实时显示在屏幕上。
有学员在聊天框里问:张老师,数据清洗要做到什么程度才算够?
张雨回答:把清洗后的数据喂给模型,效果比清洗之前好,就够了。不要为了清洗而清洗。数据是给模型吃的,模型说好吃就行。
那节课之后,群里好几个人留言说张雨讲的数据清洗比网上的教程清楚。有个学员发了条消息:张老师讲的data cleaning那一段,比我在网上看的所有教程都明白。
林晨在群里回了一句:她做了五年数据工程,讲这个最合适。
周姐也加入了训练营,不过她不讲技术。她讲职业规划,教大家怎么写简历、怎么跟hR谈薪资。这些内容在网上搜不到,但恰恰是决定学员能不能拿到offer的关键。
周姐第一次上课就开了视频。她穿着一件深灰色的西装外套,背景是一面白墙,看起来像在给客户做提案。她的语气也很像在谈商务:你们技术学得再好,面试表现不行也拿不到offer。今天我就教你们怎么把自己的技术能力包装成面试官想看的东西。
她讲到写简历的时候,举了一个例子:你们很多人简历上写负责模型训练,这句话等于没写。你要写什么模型、什么数据集、效果提升了多少。用数字说话,面试官一看就知道你做了什么。
她把一个学员的简历投影到屏幕上,从上到下改了一遍。原来的简历写着参与AI项目开发,她改成独立完成LStm模型训练,在xxx数据集上准确率达到92%,比基线模型提升15%。改完之后她问:看出区别了吗?同样的经历,两种写法,面试官看到的是完全不同的两个人。
聊天框里刷了一排学到了。周姐没有停顿,接着讲薪资谈判的技巧。她说话的速度很快,但逻辑清晰,每个要点都配合着具体的案例。讲到薪资谈判的时候,她分享了一个策略:hR问你期望薪资的时候,不要先说数字。你先问这个岗位的薪资范围,然后在范围的上限再往上加10%到15%,给自己留谈判空间。
林晨没有参加周姐的课,但他在群里看了学员的课后笔记。笔记写得很详细,从简历的格式到薪资谈判的话术都记了下来。他在备忘录上写了一行:周姐职业规划课,学员反馈8.7分,下次继续安排。
训练营花的时间越来越多。从每周两小时变成三小时,再到四小时。有时候晚上九点林晨还在钉钉群里回复学员的问题,学员at他,他看到了就回。有一个周三晚上,一个学员在群里问梯度消失的数学推导,林晨打字说不清楚,直接开了语音通话,从链式法则讲到反向传播,中间还画了几个图,讲了半个小时。
那天苏婉在客厅批改学生的作文。她听到书房里传来林晨的声音,隔着门听不太清,但能听出来他在讲数学,偶尔会停顿一下,大概是在画图。她没有推门进去,继续批改作文。桌上的红笔旁边放着一摞还没批完的作文本,最上面一本写的是关于的议论文,字迹歪歪扭扭的,但段落结构还算完整。
半个小时后,林晨的声音停了。又过了两分钟,他推开书房的门走出来,看见苏婉还坐在沙发上批作文。
苏婉抬头看了他一眼,起身去厨房倒了一杯温水端过来。林晨接过杯子靠在厨房门框上喝了一口,水有点烫,他吹了吹又喝了一口。
你比在公司开会还认真。苏婉说。
在公司开会是为了拿工资。林晨说,他们是真的想学。
苏婉嗯了一声,把空杯子接过来放进水槽里,回到客厅继续批改作业。
林晨站了一会儿,走进书房。电脑屏幕上还开着钉钉群,最后一条消息是那个学员发的:谢谢林总,我懂了。他关掉钉钉,打开晨枫快餐的数据看板,看了一眼今天的营收数字。然后他关上电脑,去客厅把苏婉批改完的作文摞在一起放到茶几边上。
苏婉抬头看了他一眼。你还帮我收东西。
顺手。林晨说完,去洗了手,进卧室躺下了。苏婉在客厅又批了十分钟作文,才关灯走进卧室。
第334章 学员的成功
三个月的训练营在十二月底结束了。
结营那天林晨没有搞什么仪式,没有发奖状,没有搞毕业典礼。他只是在钉钉群里发了一份结营问卷,让大家填一下学习成果和就业情况。问卷发出去之后,群里安静了大概十分钟,然后消息开始一条一条地弹出来。
填完了,感谢林总!已提交,这三个月学到的东西比我之前一年学的都多。填好了,希望第二期还能参加。
林晨等了一天,让所有学员都有时间填完。第二天晚上他把问卷收回来,坐在书房里一个一个看。一百个学员里有七十三人完成了项目,四十二人拿到了面试机会,三十一人最终拿到了offer。他在备忘录上记了一行数据:第一期训练营,100人报名,73人完成项目,31人拿到offer,成功率31%。
offer的薪资分布从十五K到三十五K不等,平均二十二K。他把薪资分布图画了一个柱状图看了一眼,大部分集中在十八K到二十五K之间,跟两年前他刚入行时的水平差不多。这些人从传统开发转型到AI方向,起薪低一点正常,但方向是对的。
结营前一周,林晨安排了一次项目展示。每个完成项目的学员上台讲十五分钟,台下的学员打分。展示那天下午,林晨在钉钉群里发了一条消息:下午两点开始,每人十五分钟,讲项目不讲代码。赵刚第一个上台,讲的是特征工程案例。他用了张雨课上讲的流程,但把缺失值处理的阈值从零点三调到零点二五,测试集上的效果提升了零点八个百分点。讲到一半有学员举手问他为什么选这个阈值,赵刚停了两秒,然后说:跑了三组对比实验,这一组在验证集上表现最好。林晨在后排点了一下头。李敏的项目展示最工整,每一页的逻辑链都清楚,数据图表的标注对齐到像素级别,台下有人小声说了句也太细了。王志远的项目讲得最实在,没有花哨的图表,只有一步步的业务逻辑推导。林晨在评分表上给他的实用性打了最高分。
赵刚是训练营第二个月就拿到offer的。一家做智能风控的创业公司,给了月薪二十八K,比他之前做后端的薪资还高了一点。拿到offer那天他在群里发了一条消息:感谢林总!感谢训练营的所有人!我入职了!后面跟了一串感叹号,群里刷了好几排的表情包。
林晨在群里回了一句:恭喜。好好干。
赵刚入职之后还在群里分享过一次经验。他说面试的时候被问到特征工程,他直接把张雨课上讲的数据清洗流程讲了一遍,从缺失值处理到异常值检测到特征分箱,每一步都说得很清楚。面试官听完之后说了一句:比很多有两年经验的人讲得都明白。赵刚把这段经历写成文字发到群里的时候,加了三个感叹号。群里有人回复学到了,有人说下次面试我也这样讲。
赵刚在群里艾特了张雨:张老师,你讲的那些真的有用。
张雨回了一个微笑的表情包,没有多说。她正在t厂的工位上处理一份数据质量报告,看到消息之后点了一下,继续写她的SqL了。
李敏拿到的是一家大厂的数据工程师岗位,月薪三十K。她是训练营里学得最扎实的人之一,笔记做得比谁都认真,每周的作业都是最早提交的。拿到offer之后她做了一版新的思维导图发到群里,内容是面试准备的流程图。导图的分支很清晰,每个节点都有具体的操作步骤,简历怎么写、项目怎么讲,一看就是做数据的人做的。
她在导图下面写了一行字:感谢训练营,这份导图送给后面的人用。
林晨看了导图,点了一个赞。他又扫了一眼导图的内容,发现有几个节点的标注不够清晰,但他没有提修改意见。这是学员自己做的,好不好用她们自己会判断。
王志远的offer来得最晚。他在训练营结束后又花了两个月才拿到offer,一家中型互联网公司的AI应用工程师,月薪十八K。十八K比他之前做项目经理的薪资低了不少,但他没有犹豫就接了。他投简历的那两个月,每天早上六点起床改简历,白天投递、等回复,晚上继续学代码。面试被拒了三次,第四次才拿到这个岗位。他在群里发了一条消息:四十岁重新开始,十八K只是起点。
群里有人回了一句加油,有人说王哥牛,还有人说等我四十岁的时候也希望有这个勇气。王志远在群里回了一个握拳的表情,没有再说话。
林晨看到这条消息的时候正在看晨枫快餐的数据。他停下手里的活,在群里回了一句:起点不重要,方向重要。加油。
然后他继续看数据。晨枫快餐十二月份的营收十四万二千,净利润八万一千。比上个月降了一些,冬天是淡季,科技园有几家公司年底搬走了,中午的订单量比十一月降了百分之八,晚上的订单量降了百分之三。他看了一下出菜量的分布图,整体趋势还算稳定。第二家店的选址还没有定下来,他打算等过完年再推进。
那天晚上他回到家的时候已经八点多了。苏婉在客厅里看手机,期末考试刚结束,她难得有一点清闲的时间,靠在沙发上刷短视频。
你群里那个四十岁的人拿到offer了?苏婉抬头看了他一眼。
拿到了。
什么公司?
中型互联网,AI应用工程师。
薪资呢?
十八K。
苏婉想了一下。比他之前低吧?
低。但他没犹豫就接了。
苏婉嗯了一声,继续看手机。她知道他这三个月花在训练营上的时间,周末答疑、晚上回消息、帮学员改代码。就像他知道她花在学生上的时间一样,周末备课、晚上批作文、写评语。两个人做的都是看不见回报的事情,但他们都选择了做。
林晨换了拖鞋走进书房,打开电脑。他先看了晨枫快餐的数据看板,确认一下十二月份的利润趋势图。然后他打开了一个新的文档,开始写训练营第二期的招募方案。
标题打了一行:AI转型训练营第二期,免费,限200人,每周线上答疑一次,为期三个月。
他停了一下,把限200人改成了限250人。第一期一百人里只有三十一个人拿到offer,成功率不够高。人多了,分母变大,但如果有好的助教体系,成功率应该能提上去。
他想了想,加了一个助教的名额。从第一期毕业的学员里选五个人做助教,每人负责四十到五十个学员的日常答疑。赵刚负责特征工程和数据清洗方向,李敏负责学习路径规划,还有另外三个成绩最好的学员分别负责模型训练、项目部署和面试辅导。他心里已经有了人选。这样他每周只需要讲两个小时的核心内容,剩下的问题由助教解答。
他还在方案里加了一项面试模拟。第一期学员反馈里提到最多的一个问题是面试的时候不知道怎么讲项目,光会做不行,还得会讲。他打算每周五晚上安排一对一的模拟面试,问的问题跟他当年面试t厂时被问到的差不多。
写完方案之后他看了一眼时间,十一点半。苏婉已经洗完澡在卧室里看手机了。他保存了文档,关上电脑,走过去看了一眼苏婉手机上的屏幕。
还在看期末的成绩?他问。
嗯。有几个学生这学期进步挺大的。苏婉翻了一下手机,给他看了一个学生的作文。你看,这个学生上学期写什么都写不出来,这学期已经能写出完整的议论文了。
林晨看了一眼作文,内容是写一件让自己坚持的事情,文笔还比较稚嫩,但结构完整,论点清晰。他点了点头。教得好。
苏婉笑了一下,关了手机。睡吧。
林晨关了灯,闭上眼睛。他脑子里还在想第二期训练营的方案,助教培训怎么做,课程内容怎么调整,面试模拟的题目怎么设计。想了大概十分钟,他翻了个身,睡着了。
第二天早上七点,林晨的闹钟响了。他起床洗漱,看了一眼手机。钉钉群里有一条赵刚发的消息,时间是凌晨两点:今天第一天上班,有点紧张。
下面有七八条回复,都是其他学员发的加油和鼓励。林晨没有回复,他放下手机去厨房煮咖啡了。
苏婉从卧室走出来的时候,咖啡的香味已经飘到客厅了。她从冰箱里拿了牛奶,倒了一杯递给林晨。
第二期什么时候开始?苏婉问。
过完年。二月中旬。
助教选好了?
差不多了。五个名额,从第一期毕业的学员里选。
苏婉嗯了一声,开始做早饭。煎蛋在锅里滋滋地响,她翻了一下,撒了一点盐。
林晨端着咖啡走到书房,打开电脑,把昨晚写的方案又看了一遍。然后在助教名单那一栏填上了五个名字:赵刚、李敏、周涛、孙丽、陈峰。他检查了一遍方案的内容,确认没有问题,保存了文档。
窗外的阳光照进来,落在桌面上。林晨喝了一口咖啡,打开晨枫快餐的数据看板,开始看一月份的营收预测。
第335章 影响力扩大
训练营第一期结束后,赵刚在知乎上写了一篇文章。标题是《35岁被裁,9个月自学AI转型成功,月薪从18K到28K》。他写了自己被裁员之后的焦虑、自学AI的过程、在训练营里学到的东西,还有最后拿到offer的经历。文章不长,三千多字,但每个细节都很真实。他写自己第一个月连python的环境都配不好,第二个月看数学公式看得头昏脑涨,第三个月才终于跑通了第一个模型。他没有写太多感慨,就是把过程老老实实地记了下来。
文章发出去之后三天,阅读量破了十万。评论区一半人说他吹牛,另一半人问他要训练营的链接。赵刚把截图发到群里的时候,消息刷了满屏。
十万加了!赵哥厉害!这流量也太猛了吧。评论区有人骂你吹牛,别理他们。
赵刚在群里说了一句:我写的都是真的,不信的我也没办法。
林晨看了文章,在群里给赵刚发了一条消息:在文章最后加一句:训练营是免费的,第二期正在报名,链接在评论区。加完之后把链接发我确认一下。
赵刚改好了发过来,林晨看了一眼,没有问题,就不管了。
但互联网的传播速度比他想的快。文章被几个技术社区转载了,V2Ex上有人转了全文,掘金上有人做了摘要,微博上有人讨论中年转型到底可不可能。话题的阅读量也上去了,有人搜到了林晨的名字,在评论区问这个训练营的林总是做什么的。
有个科技媒体的记者通过知乎私信找到了林晨的微信,发了一段很长的自我介绍,说自己是某某科技的记者,想做一个关于中年人AI转型的深度报道,问林晨能不能接受采访。
记者发了一段话:林总,您的故事很有传播价值,我们可以做一期深度报道,让更多人看到AI转型的可能性。
林晨回了一句:谢谢关注。训练营是免费的,不需要宣传。
记者又发了几条消息,说可以做一个视频采访,也可以只写文字稿,不影响训练营的运营。林晨没有再回。他不想把训练营变成流量生意。第一期一百个人,他一个人带了三个月,每天晚上回消息到十一点,周末答疑四个小时。这种事一旦跟流量挂钩,味道就变了。
但拒绝采访不代表拒绝传播。训练营第二期的报名链接在赵刚的文章评论区挂了三天,报名人数就突破了两百人。林晨不得不把上限从两百提到两百五十。他加了五个助教,都是从第一期毕业的学员。赵刚是其中之一,还有李敏,另外三个人是项目成绩最好的。
五个助教建了一个单独的群,林晨在群里给他们开了一次会。你们每人负责四十到五十个学员的日常答疑。技术问题能答的直接答,答不了的截图发给我,我来回。每周三晚上我们开一次助教会,碰一下学员的进度。
赵刚在群里问:林总,助教有补贴吗?
没有。林晨回了一句。训练营是免费的,助教也是免费的。你们从训练营学到了东西,现在帮后面的人一把。
赵刚回了一个。
第二期的课程内容做了调整。林晨把第一期的数据调出来看了一遍,发现数学基础部分的完成率最高,达到了百分之八十九,但项目实战部分的完成率只有百分之七十三。他据此把数学基础压缩了两周,把项目实战增加了一周。
他还加了一个新的模块:面试模拟。每周五晚上,他跟学员做一对一的模拟面试,每次二十分钟。问的问题跟他当年面试t厂时被问到的差不多:模型选型的思路、特征工程怎么做的、过拟合怎么处理的。他不会给标准答案,但他会给具体的改进意见。回答得太笼统的,他会追问细节;回答得太理论化的,他会要求举一个实际项目的例子。
有一个学员在模拟面试的时候被问到你做过的项目里最大的技术挑战是什么,支支吾吾说了半天也没说出重点。林晨在面试结束后跟他说:你要讲具体的问题、具体的解决方案、具体的效果。面试官不想听你复盘心路历程,他想听你解决过什么问题。
这些模拟面试的录音他没有公开,但学员们在群里互相分享笔记。有人把林晨的问题和回答整理成了一份文档,在群里传阅,标题叫面试宝典。林晨在群里看到了,只说了一句:面试没有宝典,只有准备。
然后他把文档的链接删了。
第二期进行到第二个月的时候,林晨在t厂收到了一封内部邮件。发件人是人力资源部,标题是关于内部技术分享会的安排。邮件里列了一排日期和主题,其中一行的主题是AI量化交易系统实战,演讲人写的是林晨的名字。
他看了一眼日历。分享会安排在周五下午,正好跟训练营的线上答疑时间冲突了。他回复了一封邮件:分享会时间可以,但需要安排在周三下午。
人力那边很快回了邮件,同意了。
周三下午两点,林晨走进t厂的大会议室。投影仪已经打开了,屏幕上显示着他的ppt第一页:AI量化交易系统实战。会议室里坐了五十多个人,把座位都占满了,还有几个人站在门口靠着墙。陈铭和张雨坐在前排,周姐坐在角落里,手里拿着一杯咖啡。
林晨没有做开场白,直接开始讲。他从LStm模型讲起,讲到特征工程的选择、风控系统的设计,最后讲到FinGpt v4的架构。每个部分都配合着实际的代码和回测数据,不是理论推导,是真正跑过的结果。
讲到特征工程的时候,他打开了一个Jupyter Notebook,当场跑了一段代码。输出结果显示在屏幕上,准确率从基线的百分之七十二提升到百分之八十九。台下的几个人拿出手机拍照,陈铭在笔记本上写了什么。
讲到一个小时的时候,台下有人举手提问:林总,强化学习做仓位管理的时候,reward function怎么设计的?
林晨回答:用夏普比率做基础,加一个最大回撤惩罚项。回撤超过15%直接扣reward,不需要复杂的设计,越简单越稳定。
提问的人点了点头,记了两笔。
又有人问:林总,FinGpt v4跟v3比,最大的改进在哪里?
推理速度。v4的推理时间是v3的三分之一,延迟从120毫秒降到了40毫秒。在实盘交易里,延迟就是钱。
台下几个人发出了低声的惊叹。
分享会结束后,有三个工程师走过来加他微信。他们没有问分享会的内容,问的是训练营的事情。
林总,听说你在外面带了一个AI转型的训练营?
免费的,钉钉群。林晨把链接发给他们,没有多说。
其中一个工程师看了一眼链接,问:现在还能报名吗?
第二期已经满了,第三期可能要等几个月。
那人点了点头,保存了链接。
陈铭也走过来,拍了拍林晨的肩膀。讲得不错。你这分享会的干货比外面几千块钱的培训课程都多。
林晨收了一下投影仪的线。外面那些课程是卖课的,我这是内部分享,不一样。
陈铭笑了一下,没有再说什么。
那天晚上八点,林晨准时上线参加训练营的答疑。他刚关掉t厂的工作电脑,打开钉钉视频会议,二十五个助教和学员已经在线上了。左下角的小窗口显示赵刚正在解答一个学员关于数据预处理的问题,其他四个助教也在各自的分组里忙活着。
答疑进行到一半的时候,一个新学员举手提问。是个年轻的声音,听起来有些紧张:林总,你觉得AI转型最难的环节是什么?
林晨想了一下。
最难的环节?他重复了一遍这个问题,然后说:写第一行代码。很多人想了三个月都没动手写,一直在看教程、看视频、看别人的经验帖。你只要开始写了,后面的事情都可以解决。遇到bug就debug,遇到不懂的就查文档。不写代码,看再多教程也没用。
群里安静了几秒钟,然后聊天框里刷了一排。他没有再看。他关掉钉钉,打开晨枫快餐的数据看板,看了一眼今天的出菜量。
出菜量比昨天多了十二份。他看了一下是哪个时间段增长的,中午的订单量比平时多了百分之八。他在备忘录上记了一行:2月第三周,午市订单+8%,观察是否持续。然后他看了一下这周的利润趋势线,整体是往上走的。
苏婉从卧室走出来,看了他一眼。今天怎么这么早结束?
答疑只讲了一个半小时,剩下的问题助教解答了。
苏婉嗯了一声,去厨房倒了一杯水。她经过书房的时候看了一眼林晨的屏幕,上面是晨枫快餐的数据看板,不是钉钉群。
第二期比第一期省心了吧?苏婉把水杯递给他。
有助教了,确实省了不少时间。但学员多了,总的问题量还是大的。
苏婉点了点头,没有再问。她回客厅继续看手机,林晨继续看数据看板。书房里很安静,只有键盘敲击的声音和窗外偶尔传来的汽车喇叭声。林晨看完了今天的数据,关上电脑,去客厅把苏婉放在茶几上的水杯端到厨房洗了。
第336章 出书邀请
十二月底的一个工作日,林晨坐在t厂的工位上。屏幕上并排开着两个窗口,左边是投资系统的数据看板,右边是钉钉群里训练营学员的提问。他刚回完一条关于转行学AI需要数学基础吗的消息,指尖刚离开键盘,右上角弹出一封新邮件的提醒。
他点开邮件。发件人叫周敏,启明出版的一名编辑。邮件标题写着关于出版一本AI转型类图书的邀请。内容不长,说她最近在知乎上看到了赵刚那篇文章以及后续的讨论帖,对林晨从失业到转型AI的完整经历很感兴趣,想邀请他写一本面向大众的书。邮件最后留了手机号,说如果方便可以电话聊。
林晨把邮件从头到尾看了两遍。手指悬在键盘上方,停了几秒,然后收回来。他没有回复,也没有关掉邮件窗口。他靠在椅背上,目光从屏幕移到桌角那杯凉透了的咖啡上。咖啡是早上九点泡的,现在已经下午三点了,他一口都没喝。
他把邮件标记了一个星标,然后切回了钉钉群。但邮件的内容在他脑子里没走,像一段运行不了的代码,卡在那里。周敏在邮件里提到的赵刚那篇文章,他已经忘了具体写了什么,但知乎上那个讨论帖他还记得。有人问他从失业到转型AI花了多长时间,他回了四个字:九个月。后来那四个字被转发了上百次。
写书这件事他从来没想过。t厂的工作和晨枫快餐都要盯着,训练营和投资系统也不能放下。这些事已经把他晚上的时间占得差不多了,再加一条线进来,睡眠都不够。
但他也没有立刻回绝。他拿起手机,把邮件截图发给了苏婉。什么都没加,只把截图发了过去。
苏婉的回复来得很快。只有两个字:
林晨看着屏幕上这两个字,没有回复。他把手机放在桌上,继续处理钉钉群里的事。但这个字在他脑子里待了一整天,像一段甩不掉的代码。
下午五点,他关掉电脑准备下班。走出公司大门的时候,鹏城十二月的阳光还有点暖。他站在路边等公交,又看了一眼手机。苏婉没有再发消息。他把手机揣回口袋,上了公交车,找了个靠窗的位置坐下。三年前他被裁的时候也坐过这条线路,那时候他手里攥着离职协议,不知道接下来怎么办。现在他手里攥着手机,脑子里想的是写不写。
公交车经过鹏城cbd的时候,窗外的写字楼玻璃幕墙反射着夕阳的光。他看到一栋写字楼的二十三层还亮着灯,那是他每天上班的地方。再过几个小时,那层灯也会灭掉。林晨靠在座椅上,想了一下写书这件事到底意味着什么。他手机备忘录里存了上百条碎片化的笔记,钉钉群里翻不到头的聊天记录里有大量散乱的经验分享。这些东西如果只是一堆碎片段,帮不了后面的人。写成书,至少有一个结构在那。
他打开手机备忘录,翻了一下之前存的那几百条笔记。最早的一条是两年前写的,那天他刚被裁,在地铁上随手记了一句话:今天离职。两个字,没有感叹号,没有句号,像一行没有写完的代码。后面跟着的几百条,有学python时卡住的报错信息,有跑通第一个模型时的loss值,有面试前一天晚上写下的三个要点。每一条都短得像代码注释,但每一条都对应着一个具体的时间点和场景。他往下翻了几页,停在一行字上:面试t厂,紧张,前一晚没睡好。那是两年前的事了,但他记得那天的每一个细节。
晚上回到家,苏婉在厨房炒菜。厨房门开着,葱姜爆锅的味道飘出来。林晨换了拖鞋走到门口,靠在门框上。
你真觉得我应该写?
苏婉头也没回:你自己想不想写?
不确定。
那就是想写。不想的人不会犹豫。
锅里的菜翻了一下,发出刺啦一声响。苏婉把火调小了一点,转过头来看了他一眼:你训练营那些东西,全存在手机备忘录和钉钉聊天记录里,你自己找都费劲。写成书至少有个结构,后面的人也能用。
我哪有时间。
你晚上十点到十二点在干什么?
有时候在刷手机。
那就是有时间。
林晨没接话。苏婉把菜盛出来,端到餐桌上。她走回厨房拿碗的时候,路过他身边拍了一下他的肩膀:写吧。你不是喜欢把事情理清楚吗?写书就是理清楚。
林晨坐下来吃饭,筷子夹了一口菜,嚼了两下说:内容我自己定,版税按标准走。
当然。
不能让我写鸡汤。
苏婉坐下来,给自己夹了一块豆腐:你写不了鸡汤。你的文字干得像技术白皮书。市面上鸡汤够多了,不缺你这一碗。
林晨没忍住笑了一下。苏婉也笑了,说:所以你写的东西反而有人看。干巴巴的,但管用。
林晨想了一下。他确实不擅长抒情,但他擅长把复杂的东西讲清楚。面试的时候他跟面试官讲项目,面试官说他讲得比大部分候选人明白。训练营的学员也说他讲的内容比网上的教程容易懂。如果写书也是同样的逻辑,把复杂的东西用简单的方式讲清楚,那他也许能写。
我试试。他说。
苏婉嗯了一声,站起来去盛饭。
名字的事呢?
什么名字?
书里用化名。公司名和项目名都不用真的。
随你。读者看的是内容,不是名字。
苏婉站起来去厨房端汤。林晨看着她的背影,想起了两年前他刚被裁的那几天。那时候他也是坐在餐桌旁边,不过那时候桌上没有菜,只有一纸离职协议。苏婉那时候也没多说什么,就一句你自己决定。现在又是这样。她从来不推他,也不拦他。她只在他犹豫的时候轻轻推一把。
第二天上班,林晨给周敏回了邮件:可以写。内容由我定,版税按标准走。公司名和项目名用化名处理。
周敏当天下午就回了邮件:条件全部接受。书名暂定《35岁程序员的AI逆袭》,您看如何?
林晨看到两个字,皱了一下眉。他不觉得自己逆袭了什么。他只是换了一条路走而已。但这个书名虽然直白,一眼就能让人看懂是讲什么的。他打字回复:书名先用这个,后面如果想到更好的再改。
周敏隔了十分钟又发了一封邮件,内容比第一封长。她列了三个方向供他参考:第一个是技术路径,按时间线写学习过程;第二个是职业转型,按岗位变迁写经历;第三个是混合式,既有技术路径也有个人故事。她建议选第三个,说读者的痛点不只是怎么学AI,还有学了之后怎么活。林晨看了一下,第三个方向跟他想的结构差不多。他回了一个字:
邮件发出去之后,他打开手机备忘录,新建了一个文件夹,叫。他往里面写了第一条笔记:第一章:被裁。然后又加了一条:第二章:学AI。再写一条:第三章:第一份AI工作。写到第五章的时候他停下来了,书不能只写成功的事,还得写踩过的坑、犯过的错。他在第五章后面加了一个括号,写上:失败案例也要写。
三条笔记,三个标题,像三条分支从一个起点分出去。他保存了备忘录,锁了手机屏幕。屏幕黑下去的瞬间,他看到屏幕上自己的倒影。
那天晚上他去晨枫快餐看了一眼。林枫正好在收银台后面整理报表,看到他进来,说:十月份的数出来了。营收十五万八,净利润九万三。比上个月低一点,国庆放假写字楼空了一周。
林晨看了一眼报表上的数字,点了点头:正常波动。
林枫把报表收起来,说:你最近在忙什么?群里看你晚上回复慢了。
有人找我写书。
写书?林枫抬起头看了他一眼,什么书?
AI转型的。一个出版社编辑看到知乎上的帖子,想让我写。
能赚钱吗?
版税按标准走,卖得多就赚,卖得少就当练笔。
那行。林枫没有多问,继续整理报表。他做事的风格跟林晨一样,给够信息就行,不追问细节。
林晨站了一会儿,看了一眼厨房里林浩的背影。林浩正在灶台前颠勺,动作干脆利落,油烟在他肩膀上方散开。他没有告诉林浩写书的事。林浩对这种事没有兴趣。他感兴趣的是今天用了多少斤土豆丝,备料误差控制在百分之几。每个人关注的东西不一样。
小吴在收银台后面看手机,看到林晨进来的时候抬了一下头:今天的翻台率四点一,比昨天高。
知道了。林晨看了一眼收银台上的数据看板。四点一的翻台率,加上外卖订单,今天的总营收应该不错。他目光落在厨房方向,林浩已经把灶台擦干净了,正准备走。
出了店门,夜风迎面吹过来,带着一点烤肉的油味。林晨站在门口深吸了一口气,掏出手机瞥了一眼。钉钉群里有两条新的学员提问,他回了一条,另一条标记了待回复。然后他打开备忘录,在那个文件夹下面又加了一行:写书的时间,晚上十点到十二点,雷打不动。
他锁了手机,往停车场走。路上他算了一下,每天两个小时,一个月六十个小时,三个月一百八十个小时。按他写技术文档的速度,一个小时能出一千字,一百八十个小时就是十八万字。但书不是技术文档,速度会慢很多。打个对折,九万字。够一本书了。
他发动车子,把写书的事暂时推到脑子后面。今晚还有训练营的答疑要准备,明天t厂还有个部门会要开。日程表排得满满的,但他把写书的时间钉死了:晚上十点到十二点。钉死了就不动了,跟钉在白板上的备料数一样。
但备忘录里那个的文件夹已经建好了,就像两年前他在地铁上建了一个叫学AI的文件夹一样。文件夹建好了,事情就开始了。
第337章 写书的过程
写书这件事的难度超出了林晨的预期。
他以为写书跟写技术文档差不多。逻辑理清楚就行,跟写FinGpt的技术白皮书一样。他以前那种东西一晚上能出两千字,因为全是他脑子里的东西,不需要额外的素材。但书不是技术文档。文档写给工程师看,书写给普通人看。他写了前两章之后发现,自己写的东西读起来像产品说明书,满篇是算法名称和模型架构,没有人味。
苏婉看了初稿之后只说了一句话:你在写ppt还是在讲故事?
林晨把前两章重读了一遍,没反驳。确实像ppt。每一段都在讲道理和列要点,像在给领导做汇报。他删掉了前两章,从零开始重写。
重写的第一章从被裁那天下午开始。他坐在地铁上,看着窗外,手里攥着离职协议,不知道回家怎么跟苏婉说。他没有写我感到焦虑和迷茫。他写的是地铁到站的时候我站起来,发现手心是湿的,离职协议的纸角被我攥出了褶皱。
这种写法不是他习惯的。他的习惯是列要点和摆数据。但苏婉教了他一个方法:你不用写你感受到了什么。你写你当时做了什么。你坐在地铁上手心出汗,攥着纸,这就是感受。读者自己能体会到,不需要你替他总结。
林晨想了一下,觉得这个逻辑跟写代码有相似的地方。代码也是用行为描述状态,不是直接声明状态。你写如果温度大于三十度则打开空调,不是写现在很热。他开始用这个思路来写。
第一章花了两个星期才写完。他推翻了前两个版本,第三个版本才算过了自己这一关。第一天他写了八百字,第二天全部删掉重来。第三天他换了一个开头,从地铁上的那个画面切入,终于写出了他想要的感觉。开头变成了这样:被裁那天下午我坐在地铁上,看着车窗外的鹏城cbd,手里攥着hR给的那份离职协议。地铁到站的时候我站起来,发现手心是湿的,纸角被我攥出了褶皱。
苏婉看完这个版本,把稿子放在茶几上说:这才像你。
什么意思?
少说话,多做事。你写的东西也是这样。没有废话。
林晨觉得这不算表扬,但他接受了。他开始写第二章。
第二章写的是学python的那段日子。他翻出两年前的学习笔记,看着那些记录每天进度的条目。某月某日,跑通了第一个爬虫脚本。某月某日,pandas的dataFrame搞明白了,groupby花了三个小时才弄懂。某月某日,第一次用matplotlib画了一张图,图上的标签全是乱码,查了两个小时才发现是字体设置的问题。
这些细节他一条一条写进第二章里。不是感悟,不是心得,是具体的日期、具体的报错、具体花了多长时间解决。苏婉看完第二章之后说:这段比第一章好。有细节。
第一章也有细节。
第一章的细节是你写出来的。第二章的细节是自己冒出来的。区别在语气。
他没完全听懂,但他记住了。后面写的时候,他尽量让细节自己冒出来,而不是刻意往里塞。
后面几章写起来稍微快了一些,但每章都需要反复修改。他的节奏是固定的:第一天写初稿,第二天改一遍,第三天给苏婉看,第四天根据她的反馈再改。有时候一章要改三遍才能过关。
苏婉的反馈永远只有一句话。她说这段好的时候,林晨知道这段不用改了。她说这段太干了的时候,林晨知道要加细节。她说看不懂的时候,林晨知道要换个说法。
有一次她看完一章之后说:这段关于投资系统的内容,我看了三遍才看懂。
哪里看不懂?
你在解释模型的时候,用的是给工程师看的语言。你得换成给普通人看的语言。
怎么换?
打个比方。别说基于LStm的时序预测根据过去的数据走势来判断接下来的方向。普通人不懂LStm,但他懂和接下来
林晨照着改了。改完之后自己看了一遍,意思没变,但确实更容易看懂了。他开始用这个思路写后面的章节:别人接收多少才是关键,不在于你说了多少。
还有一次,苏婉看完一段关于他面试t厂的经历之后,把稿子放在桌上说:这段太顺了。
哪里太顺?
你写面试通过了,然后入职了。中间没有波折。但我知道你当时紧张得要命,你前一天晚上在客厅走来走去走到凌晨两点。
那是私事,不用写进去。
读者想看的就是这种东西。不是你的成功,是你成功之前的不确定。
林晨想了一下,回去加了一段:面试前一晚他坐在阳台上抽烟,抽了四根,手机上有三个未读消息他都没看。苏婉看完之后说,他才接着往下写。
最难写的是关于失业的那段经历。
他写到自己投了一百多份简历只收到三个面试邀请的时候,手指在键盘上停了十几秒。他写面试官看了一眼简历上的出生年份,皱了一下眉,说三十五岁?的时候,胸口闷了一下。
那天晚上苏婉坐在旁边看书,注意到他停下了。她没有问他在想什么,只是说:写不下去就跳过。
有些细节当时没有记录,现在靠回忆来补。回忆这种东西不准确。
那就写你能想起来的。想不起来的跳过。
他跳过了一些细节,保留了一些画面。面试官皱眉的那个瞬间。深夜坐在沙发上盯着邮箱刷新的页面。苏婉在厨房做饭的时候他坐在客厅沙发上,听到锅铲碰到铁锅的声音,手边放着一杯已经凉透了的茶。
还有一个画面他犹豫了很久要不要写。被裁之后的第一个周末,他一个人坐在家里,打开电脑想学点东西,但盯着屏幕看了半个小时一个字没写。苏婉出门买菜之前问了一句要不要带什么回来,他说不用。苏婉走后他关上电脑,在沙发上坐了四十分钟,什么也没干。这段他最后还是写了,用了一句话:被裁之后的第一个周末,我在沙发上坐了四十分钟,什么也没做。
这些画面组合在一起,他没加任何评论。
写完这段的时候是凌晨一点。他保存了文档,关掉电脑,走到阳台上站了一会儿。鹏城的夜风有点凉,楼下有几辆车开过去,远处写字楼的灯还亮着。他站了三分钟,回屋睡觉。
书的后半部分写起来顺畅了。学习AI的过程和开发投资系统的逻辑,他写起来得心应手。面试t厂的经历和入职之后的成长也一样。这些部分他像在写技术文档,因为他有详细的学习笔记可以参考,投资系统的代码记录也能查阅。
唯一让他犹豫的是关于晨枫快餐的章节。这本书的核心是AI转型,不是餐饮创业。他不想把快餐店的内容写太多,但苏婉看完了初稿之后说:转型不只是换行业。你用技术思维开快餐店,出餐时间的压缩和翻台率的计算,这些跟AI无关,但跟转型有关。
他想了想,写了一小段关于技术思维如何帮助我开一家快餐店的内容。篇幅不长,但他把核心的东西写进去了:流程优化和数据驱动。
苏婉是这本书最重要的读者。她不是技术出身,看不懂模型和算法,但她能看懂一个人在困境里的动作。她的判断标准只有一条:她看的时候走神了,就说明这段写得不行;她看的时候想往下翻,就说明这段过关了。
有时候她看完一章之后,把稿子放在桌上说这段好,林晨就知道不用改了。有时候她说这段太干了,林晨就回去加细节。有一次她说这段让我想起你那时候的样子,林晨看了她一眼,没有说话,但把那段又改了一遍。改完之后苏婉再看,说。
三个月的晚上和周末。加上编辑审稿的两周和修改的三周。四月中旬,书稿最终定稿。
编辑周敏在电话里说:林老师,书稿我们看完了,整体质量很好。有几个小地方需要调整,我发邮件给你。
叫我林晨就行,不用叫老师。
好的林晨。修改意见不多,大概需要两三周。
林晨花了三周改完。改完之后他把文档发给周敏,周敏回了一个,过了一周说定稿了,准备下厂印刷。
书出版那天是四月二十三号。林晨没有去出版社参加什么发布会,也没有在朋友圈发消息。他只是收到了周敏发来的一条微信:书已经上架了,各大电商平台都能买到。
苏婉在网上下单了一本。三天后快递到了,她拆开包装,把书放在茶几上,封面朝上。
林晨下班回来,看到茶几上那本书。白底黑字,35岁程序员的AI逆袭七个字印在正中间,底下是作者名。他拿起来翻了一下,翻开第一页看了两行,合上了。
怎么了?苏婉从厨房探出头。
写得不够好。
哪本书不是这样。
乐乐从房间跑出来,看到茶几上的书,拿起来翻了几页。她看不太懂里面的内容,但看到了封面上爸爸的名字。
爸爸写的书?
我能带去学校给同学看吗?
随便。
乐乐抱着书跑回房间了。客厅安静下来。林晨坐到沙发上,拿出手机翻了翻训练营的钉钉群。有人已经在讨论这本书了,有人说终于出书了,有人问哪里能买到。他把手机放下,看了一眼茶几上被乐乐拿走之后留下的空白。
书不是写给自己看的。这一点他清楚。
写书的进度比他预想的快。每天两小时,一周能写五千到六千字。按照这个速度,三个月能完成初稿。编辑说不用急,但他自己有节奏,就像写代码一样,每天推进一点,不停也不赶。苏婉偶尔会翻他的草稿看,看完之后说一句这段像技术文档不像书,他就删掉重写。他把当天的草稿存好,关掉文档,看了一眼时间。十一点了。苏婉在旁边已经睡了,呼吸声很轻。他关掉台灯,躺下来。明天还要写,后天也要写,每天推进一点。
第338章 餐厅第五个月
写书的同时,晨枫快餐的第五个月也在运转。
十一月份的营收数据出来了。林枫把报表打印了一份,放在收银台后面的架子上。十六万五千的营收,净利润十万二。比十月份涨了一截,国庆假期的影响过去了,写字楼的客流完全恢复,外卖订单也比上个月多了两成。林枫在报表空白处写了一行字:十一月恢复增长,外卖占比提升至27%。
他把报表拍了照片发到三人群里。林晨回复了。林浩没有回复,但他扫了一眼数字,然后继续切菜。
林晨在电子表格上更新了第五个月的数据。五个月累计净利润已经过了四十万,五十万的投资回了八成。他拉了一条回本预测线,如果下个月的净利润能稳住十万以上,六到七个月就能回本。比他最初预估的七个月快了一点。
回望上个月,国庆那一周确实难熬。写字楼里大半公司放假,中午的客流从平时的一百二十多人掉到了四十多个。后厨只有林浩和阿伟两个人,出菜速度反而快了,因为客人少。林浩站在灶台前,听着抽油烟机嗡嗡地转,锅里的油温刚好。他颠了一下锅,回锅肉在空中翻了个面,落回锅里的时候溅出几滴油。他擦了一下灶台边上的油渍,转头看了一眼空了大半的堂食区。
那天中午的营收只有一千二百块。他记在心里,没说出来。
阿伟在旁边备菜,手脚比平时慢了。忙的时候动作快,闲的时候反而慢。林浩看了他一眼,没说什么。他端起炒好的回锅肉递到出餐口,小吴站在收银台后面玩手机,店里只有三桌客人,出餐口的灯亮着但没人来端菜。
国庆那七天,林浩每天早上六点半到店,晚上十点走。没有休息日。他不需要休息日,他在厨房里比在出租屋里自在。出租屋只有一张床和一个电磁炉,厨房有灶台、有食材、有他熟悉的一切。他每天到店的第一件事是检查冰箱里的备料,第二件事是烧水泡米,第三件事是把案板上的刀磨一遍。这三件事做完,厨房就开始了一天的运转。
国庆最后一天,十月七号,客流开始恢复。写字楼的电梯间有人了,中午的堂食回到了七八十人的水平。林浩站在灶台前,锅铲的节奏比前几天快了,阿伟在旁边备菜也跟上了速度。两个人配合了一个暑假和三个月的秋天,默契已经不需要说话来维持。林浩颠锅的时候,阿伟已经把下一份的食材放在了灶台旁边。
节后第一周,客流完全回来了。中午十二点准时有一波穿工服的人涌进晨枫快餐的门。林浩站在灶台前,锅铲没停过。林枫在收银台后面看着中午的客流,在手机上记了一笔:节后第一周日均营收恢复到五千以上。
十一月的数据比十月好了不少。营收十六万五,净利润十万二。会员充值余额突破了六万,外卖日均订单稳定在三十单以上。晨枫快餐的财务状况从保本运营变成了稳定盈利。
林枫把数据整理好之后在群里发了一段话:第五个月结束。保本运营阶段正式过了。
林晨回了一个。
林浩还是没回。他看到了消息,扫了一眼数字,然后继续炒菜。
十一月的利润分红方案林枫算得很清楚。净利润十万二,留百分之四十预备金四万零八百。剩下六万一千二百按股权分配:林晨占百分之六十分三万六千七百二十,林枫占百分之二十五分一万五千三百,林浩占百分之十五分九千一百八十。
加上每月八千的薪资,林浩这个月的总收入是一万七千一百八十。加上前几个月的分红和薪资,他累计收入超过了九万块。他站在灶台前面想了一会儿,然后低头把鱼香肉丝的肉丝切短了两毫米。他不知道为什么要这样做,只是切着切着手就动了。
林浩没有把这些数字挂在嘴上。他的手机里有一个记账的文件夹,每个月的分红截图和薪资到账记录存在里面。他从来不跟林晨提钱的数字,也不跟林枫说想加薪。每个月薪资和分红到账之后,他做的第一件事是给老家转五千块,给他在东莞打工时借住的朋友的老婆,帮她交孩子的学费。第二件事是把剩下的钱存进银行。
他从来不跟任何人说这件事。但苏婉知道。
前两天苏婉跟林晨聊天的时候提了一句:林浩每个月给老家转钱,你知道吗?
知道。
他从来不提。
他不是会提的人。
苏婉没再说什么。林晨也没再说什么。
那天晚上林晨在电子表格上更新了一个数字:林浩累计收入9万。他在备注栏里写了一句:每月给老家转5000,帮朋友孩子交学费。他把这个备注标了黄色底色,提醒自己这是林浩的固定支出。
第五个月末的一个晚上,打烊之后,林浩在厨房里收拾。灶台擦了两遍,油烟机的滤网拆下来泡进碱水里。地上的水渍也拖干净了。
做完这些之后,他在备料台前面站了一会儿,看着空荡荡的厨房出神。
他在想一件事:如果第二家店开起来,他不可能同时在两家店做主厨。他需要培养一个人。
他转头看了看阿伟。阿伟正蹲在水槽边洗最后一批碗,手上的动作比三个月前快了不止一倍。刀功也稳了,切土豆丝不用再返工,切葱姜的速度跟上了出菜的节奏。但独立出菜还做不到。阿伟现在能独立完成的菜只有五道,剩下的五道还要林浩手把手地盯着。
林浩走到阿伟旁边,看了一眼他洗碗的手。阿伟的手比三个月前粗糙了不少,指关节上有几道细小的刀痕,虎口处有一块结了痂的烫伤。那块烫伤是上个月炒水煮肉片的时候油溅上去的,阿伟当时嘶了一声,手缩回去,但锅里的肉还在灶上,他忍着疼把那一锅出了菜。林浩当时看到了,没说什么,只是在阿伟出完菜之后递了一瓶烫伤膏过去。
阿伟接过烫伤膏的时候说了一句:谢谢浩哥。
林浩点了点头,继续炒下一道菜。
现在那块烫伤已经结痂了,新的皮在痂下面长出来。阿伟的手虽然粗糙了,但动作比三个月前稳了不少。林浩看了几秒,走回灶台前面,翻开笔记本。
他在笔记本上写了一行字:阿伟出菜训练。然后写:从回锅肉和宫保鸡丁开始,这两道他已经会了,但要稳。等这两道稳了,再教鱼香肉丝和麻婆豆腐。最后是水煮肉片和糖醋排骨。三个月之后,如果阿伟能独立出六道菜,第二家店就有厨师了。
他看了一遍这行字,合上笔记本。把灶台最后擦了一遍,关灯走了。
第二天中午,林浩在出菜的间隙把阿伟叫到了备料台旁边。他从冰箱里拿出一块五花肉,放在砧板上。
你来出一份回锅肉。我在旁边看。
阿伟愣了一下。以前林浩都是手把手地教,切一步他跟一步。让他独立出菜,这是第一次。
从头到尾?阿伟问。
从头到尾。
阿伟拿起刀,把五花肉片成薄片。刀落下去的前三片厚薄不匀,第四片开始稳了。他切完五花肉,开火,倒油,下肉。翻炒的手法比三个月前熟练了很多,但他颠锅的力度偏大,有两片肉飞出锅沿落在了灶台上。他慌了一下,伸手去捡,林浩挡住了他的手。
别捡。记着这个力度。
阿伟收了手,把锅里剩下的肉出了锅。蒜苗下晚了十秒,颜色有点发黄。豆瓣酱的量也多了一点,酱色偏深。但整道菜的结构是对的,味道能吃。
林浩端起盘子看了一眼。下次蒜苗提前备好放在手边,油温七成的时候就下锅。颠锅的力度减三成,肉飞出去一片就少一片。
阿伟点了一下头。他低头看了看盘子里的回锅肉,蒜苗确实偏黄了,但他知道下次怎么改。
出门的时候他瞥了一眼手机上的时间,九点四十七分。公交站最后一班车十点半,来得及。他推开后门走进深圳十一月夜晚的风里。风有点凉了,不像夏天那样闷热,他拉了一下外套的拉链,往公交站的方向走。
身后店里的灯也灭了。他走到公交站,最后一班车还有十来分钟。站台上只有他一个人,路灯把他的影子拉得很长。他掏出手机确认了一下时间,九点五十二分。然后他把手机放回口袋,抬头看了一眼深圳十一月的夜空。天空很暗,看不到星星,只有远处写字楼顶上的红色航空灯在一闪一闪。站台上等车的人陆陆续续来了几个,都是附近写字楼的加班族,穿着薄外套低头看手机。没有人说话,站台上只有风声和远处车流的嗡嗡声。公交车来了。他上了车,在最后一排靠窗的位置坐下,把头靠在窗玻璃上。车厢里很安静,只有发动机的低鸣和偶尔报站的声音。他想着阿伟的训练计划,想着第二家店的厨师问题,想着明天的备料量。这些事情在他脑子里一个一个地过,像他每天在灶台前出菜的顺序一样,不用想就排好了。车窗外路灯一盏一盏地晃过去,他闭上了眼睛。想着想着就快睡着了,公交车晃了一下,他又醒了过来。瞥了一眼手机,快到站了。
第339章 考察第二家店
十一月的第二个周末,林晨七点半就起了床。
他刷完牙走出房间的时候,客厅的窗帘还拉着,灰蒙蒙的光从缝隙里透进来。苏婉已经出门了,厨房台面上放着一个保温杯和一盒三明治,旁边压了张纸条,上面写着四个字:记得吃早饭。林晨把三明治拆开咬了两口,又喝了一杯温水,拿上手机出了门。楼梯间里还弥漫着邻居家煎鸡蛋的味道,他下楼的时候把领口往上拉了拉,十一月的早晨已经有了凉意。
林枫的车已经停在小区门口了。银灰色的卡罗拉,引擎盖上有一层薄薄的露水,后视镜上还挂着水珠。林晨拉开副驾驶车门坐进去的时候,闻到一股速溶咖啡的味道。仪表盘上搁着半杯咖啡,杯壁上印着便利店的标志,杯口冒着细细的热气。
林枫在看一本黑色封皮的笔记本,纸页上贴了几张彩色便利贴,分别标了三个铺位的数据。他听到车门关上的声音,抬头看了林晨一眼,合上笔记本发动了车。
三个候选铺位,都在南区。林枫把车汇入主路的早高峰车流,上个月我去了两趟,数据记在笔记本上。先看第一个,我最看好的那个。
从科技园中区到南区开车要二十分钟。滨海大道沿着一排新建的写字楼延伸,右手边能看到鹏城湾的海面,灰蓝色的水在早晨的光线下显得有些沉闷。路上车不多,林枫开得稳,大部分时间在并线超车。林晨靠在副驾驶座位上看手机,屏幕上是他昨晚做的一份表格,南区候选铺位的各项数据排成了几列。他滑了几下屏幕,把第一家店最近一个月的日均营收数据调出来看了一遍,又切到南区的人流量统计表,两个数据对照着看了两遍,然后把手机锁了屏。
车子在创新南路的路边停了下来。林枫推开车门的时候说了一句:就这里。
铺位的卷帘门半开着,里面灰蒙蒙的。林枫掏出钥匙把门全拉开,金属摩擦的声音在空旷的铺位里回响了一下,惊起一只不知道从哪里飞进来的麻雀。推门进去的时候,一股空置铺位特有的灰尘味扑面而来,混杂着上一家店残留的油烟味。
铺位比第一家的面积小了二十五平米,九十五平米,但格局更方正。进门就是用餐区,地面还是上一家店留下的浅灰色瓷砖,踩上去鞋底发出轻微的咯吱声。几处砖缝里有干涸的油渍,但整体磨损不严重。厨房在铺位的后半部分,中间的玻璃隔断轨道还嵌在地面上,金属轨道上落了一层灰,用手指一抹就露出亮面的铝材。
林晨没有急着听林枫介绍。他从门口开始,沿着四面墙慢慢走了一圈。铺位的面宽有八米多,进深十一米半。天花板的高度足够,不用额外吊顶。右手边的墙面中部有一根已经装好的排烟管道,从天花板的位置直通外墙,管道接口处有轻微的锈迹。他用指关节敲了两下,声音闷实,没有空洞的感觉。
排烟管道能用。林晨把手收回来,在裤腿上蹭了蹭灰。
上一家是湘菜馆,管道直径够粗,不用换。林枫翻开笔记本,贴了红色便利贴的那一页写着密密麻麻的数字。租金两万四一个月,比中区便宜一千。押金三个月,七万二。
林晨走到铺位后半部分。厨房区域的地面有明显的油渍痕迹,排烟口的位置在天花板偏右,和第一家店的布局几乎对称。他蹲下来看了看隔断轨道的接口,用手指按了按,没有松动。站起来的时候又看了一眼厨房的进深,在心里比划了一下灶台和备料台的位置。
格局比第一家好。林晨朝厨房方向看了一眼,出餐口开在这里,客人拿餐走几步就能到最近的桌子。第一家店的出餐口离门口太远,高峰期端菜的人要在过道里挤。
林枫在笔记本上找到对应的位置,用笔划了一条线标出出餐口的位置。装修预算我让施工队报了初步价。排烟管道不用动,水电需要改但工程量小,加两个插座、改一个排水口就行。粗算十五万。
设备呢?
灶需要新买一口。第二口可以从第一家店调过来,那口灶用了三个月,状态还好。冰柜和备料台要新买,出餐台和操作台也要新买。林枫一根手指一根手指地数完,粗算十万。周转金五万。加上押金,总投入大概三十七万。
林晨掏出手机,打开计算器应用。他的拇指在屏幕上点了几下,然后停了一下。三十七万的投资,按第一家店的模型来算:日均五千三左右,月营收大概十六万,净利润九到十万。回本周期四到五个月。
但第二家店的数据得往下调。林晨锁了手机屏幕,南区人流量比中区少百分之十五,客单价可能也低一两块。保守估计日均四千五,月营收十三万五,净利润六万左右。回本周期拉到六到七个月。
林枫点了一下头。他的计算跟林晨的差不多。笔记本那一页的右下角写着一个数字:6.2。那是他自己估算的回本月数。
还有一个问题。林晨走出铺位,站在门口的台阶上看对面的便利店。便利店的招牌亮着灯,门口堆了几箱矿泉水,一个冰柜摆在门旁边,玻璃门上贴着24小时营业的告示。中午的时候人流量会被便利店分流。买饮料的人进了便利店,不一定再出来找快餐店。
林枫走到他旁边,也看向便利店。十一点刚过,有个穿深蓝色工装的年轻人推开了便利店的门,买了一瓶水出来,站在门口拧开盖子喝了两口,然后往写字楼的方向走了。便利店的饭团和便当没有竞争力,口味差。买饮料的人很多会同时找地方吃饭,便利店坐不下,最后还是出来找快餐店。
林晨在门口站了一会儿。十一点出头,陆陆续续有人从写字楼大门出来。他默数了三分钟,经过铺位门口的有四十七个人,进便利店的有十一个,剩下的散向不同的方向。四十七个人里,大概有二十多个是出来找午饭的。
走,看另外两个。林晨退回车里。
第二个铺位在创新南路另一头,六十八平米,租金一万八。面积太小,厨房只能放两口灶,用餐区最多摆四张桌子。林晨在门口站了五秒钟就摇了头。铺位的格局也不理想,进门就是一条窄过道,过道尽头才是用餐区,客人进来之后视线被堵了一半。林枫也没有多说话,在笔记本上贴蓝色便利贴的那一页打了个叉。
第三个铺位面积够,九十二平米,租金两万三。但位置偏,从地铁口走过来要拐两个弯,过了两栋写字楼才能到。林晨站在门口数了五分钟,经过门口的人只有第一个铺位的三分之一。写字楼的阴影把铺位门口遮了大半,连阳光都照不进来。林枫翻到贴黄色便利贴的那一页,把数据写上去的时候摇了下头。
回到车里已经下午一点半了。林枫把车窗摇下来一条缝,点了一根烟。烟雾从窗缝里飘出去,被午后的风扯散。
第一个。林枫把烟灰弹了弹。
我也觉得第一个。但不急。林晨靠在座椅上,看着挡风玻璃外面的路,等第四个月的营收数据出来再定。如果第四个月净利润稳在十万以上,就开。如果回落到八万以下,再等一个月。数据比直觉重要。
那我先把装修方案细化。林枫把烟按灭在车载烟灰缸里,方案做出来就等。人的问题解决了,装修就不会拖后腿。
林晨发动了车。车子从创新南路出来右转上了滨海大道。路边的行道树刚剪过枝,阳光从树冠的缝隙里漏下来,打在挡风玻璃上晃了几下。
阿伟能独立出菜吗?林枫忽然问了一句。
林浩在教他。三个月的训练计划,第一个月刚结束。
三个月够吗?
如果他能学会六道菜,第二家店就有厨师。如果学不会,就再等等。不急。
林枫嗯了一声,把笔记本从口袋里又掏出来,翻到最后一页写了一行字。写完他靠回座椅上,看着窗外。
装修方案下周给你。林枫说。
林晨嗯了一声,把车开上科苑路,往科技园中区的方向走。中控台上的时钟显示一点五十二分。下午还有一趟要去第一家店盯着,晚上的备料清单要核对,明天的食材采购单还差两项没填完。车子经过科技园中区那栋熟悉的写字楼时,他看了一眼第一家店的方向,灯箱还没亮,要到下午五点才会开灯。
回到店里之后,林枫在笔记本上把南区铺位的信息重新整理了一遍。面积、租金、人流量、竞争情况,每一项都列了数字。他把笔记本合上,放进口袋,看了林晨一眼。林晨知道他在等什么。但第二家店的事不急,第一家店的数据还要再跑两个月。
第340章 复制模式
十二月初的一个工作日,林晨到店的时间比平时晚了四十分钟。
公司年底有个系统优化项目要收尾,他连着加了三天班,代码写到凌晨两点才合上电脑。早上闹钟响的时候他关了又赖了五分钟,最后还是起来了。出门的时候外面刚下过一场小雨,人行道上还有积水,他踩着积水走了十分钟到地铁站。推开晨枫快餐玻璃门的时候,一股热气扑面而来,厨房里传来一阵锅铲碰撞的声音,还有阿伟压低嗓门喊的声音。
林晨在门口站了一会儿,没有往里走。他从口袋里掏出手机,打开一个电子表格,找到标注了阿伟训练进度的工作表。表格里列着几列数据:菜名、训练天数、稳定性评分、出品时间、备注。
阿伟的独立出菜训练进入了第二个月。
第一个月的成果写在表格里:回锅肉稳定性评分九分,宫保鸡丁稳定性评分七分半。回锅肉是阿伟的强项,五花肉煸油的火候他掌握得很准,林浩只教了两遍他就能独立出品了。出品的时候肉皮微卷、边缘带焦,跟林浩做的几乎看不出区别。宫保鸡丁稍微难一些,花生米的出锅时机他拿捏了三次才找到感觉。第一次花生米炸过了,表面发黑;第二次出锅太早,咬起来有生味;第三次的时候林浩尝了一口,点了一下头,没说话。
第二个月要学的是鱼香肉丝和麻婆豆腐。这两道菜是晨枫快餐点单率最高的,技术难度也是最大的。鱼香肉丝的调味比例要求精确,一勺酱油配半勺醋,糖的量多一撮少一撮味道就不对。麻婆豆腐的手法更复杂,豆腐下锅后要推不能搅,力道稍大豆腐就碎成渣,力道太轻又入不了味。
林浩教阿伟的方式很简洁。先做一遍给阿伟看,动作不快但每一步都很清楚,翻锅、下料、调味、出锅,每个环节之间停顿半秒,让阿伟看清楚手势。做完把盘子往台面上一推,让阿伟自己做。阿伟做完端过来,林浩尝一口,指出问题,然后阿伟再做一遍。
林浩不会像罗师傅那样解释你看这个火候。他只会说再来一遍,或者在阿伟做错的时候说一两个字:糖多了翻炒快了。阿伟一开始被这种教法搞得有点紧张,每次端菜过去的时候手都有点僵,但练了两个星期之后他发现这种干脆的方式反而让他学得更快。不用记一堆道理,只要记住哪个动作错了、怎么改就行了。
十二月中旬的一个傍晚,林晨在店里看着阿伟出了三份鱼香肉丝。
第一份,味道跟林浩做的有一点点差距,调味汁收得稍微过了,肉丝的边缘有点发干。阿伟自己尝了一口,皱了下眉头。第二份,好了一些,调味汁的比例接近了,但出锅时间晚了五秒,肉丝表面少了那层亮光。第三份,阿伟在出锅前尝了一下汤汁,皱了皱眉头,然后往锅里加了半勺水,翻了一下,才装盘。这一份的味道和品相都接近了林浩的水平。
林晨在电子表格上给鱼香肉丝打了八分。
麻婆豆腐还在练。阿伟推豆腐的时候手腕不够稳,用了指尖的力量而不是手腕,导致豆腐碎了两次。第一次碎了之后他把碎豆腐拨到一边,重新切了一块;第二次碎了之后他停了两秒钟,深呼吸了一下,然后拿起第三块豆腐。林浩看了之后没有骂他,只是说了一句:推的时候手腕用力,不要用指尖。
阿伟点了一下头,回到灶台前面继续练。他在备料台上摆了一排嫩豆腐,一块一块地推,用腕力而不是指力。推到第三块的时候豆腐终于没有碎,表面完整地滑过锅底,裹上了一层红油。他松了口气,拿毛巾擦了一下额头上的汗。
林晨在一边观察了阿伟的出菜过程。电子表格上的数据一行一行地更新:鱼香肉丝稳定性评分八分,回锅肉九分,宫保鸡丁七分半,麻婆豆腐暂不评分。他在备注栏里写了一句:阿伟手腕力量需加强,豆腐推法有进步。
阿伟能在两个月内稳定出六道菜,第二家店就有主厨了。林晨跟林浩说。
林浩在灶台旁边站着,手里拿着一把锅铲,铲面上还沾着一点油星。他看了一眼阿伟的方向,想了一下。六道菜不够。他说。
为什么?
第二家店十道菜都要有。林浩把锅铲放回架子上,阿伟出六道,还要一个副手。
小刘可以吗?
小刘能做出餐台的活和备菜。林浩停了一下,上灶炒菜还早。
林晨在电子表格上调出了第二家店的模型。他一边看一边想,然后说:方案调整一下。阿伟主厨出六道菜,剩下四道由新招的副厨负责,你在两家店之间督导。
林浩没有立刻回答。他在灶台前面站了一会儿,目光落在备料台上的那排豆腐上。阿伟正在用铲子把碎掉的豆腐渣拨到垃圾桶里,动作有点用力。林浩看了一会儿,然后说:菜单不用十道全一样。
怎么调?
减两道慢菜。林浩拿起抹布擦了擦手,加两道快菜。
哪两道减?
水煮肉片和麻婆豆腐。
换什么?
西红柿炒蛋和土豆丝。林浩把抹布叠好放回原位,快菜,副厨也能做。
林晨在电子表格上调了第二家店的模型。菜单从十道全部相同调整为八道相同加两道快菜替换,出餐时间从平均五分钟压缩到四分半,翻台率预估从三点五提升到四点零。他看了一会儿数字,点了一下头。
方案可行。他合上电脑,但前提是阿伟在两个月内能稳定出六道菜。
林浩点了一下头。他走回灶台前面,拿起那本笔记本,在明天的备料清单后面加了一行字:阿伟训练第三个月,水煮肉片和糖醋排骨。写完他把笔记本合上放进口袋,走到水槽前面洗了手。
那天晚上十点,店里最后一个客人走了之后,林枫坐在用餐区的角落算第二家店的投资预算。他面前摊着一张A4纸,上面是装修方案的明细清单,每一项费用都用黑色水笔标了数字,旁边用红笔打了钩表示已确认。
装修方案他已经做完了。比第一家店简洁,排烟管道不用改,水电只动了两个点位,厨房布局跟第一家一模一样,灶台和备料台的位置都没变。用餐区少了五平米,只放六张桌子,但每张桌子之间的间距比第一家宽了十公分。第一家店的用餐区他留了一个教训,桌子太挤了,小芳收盘子的时候总得侧着身子,高峰期客人起身让道也不方便。
林枫按照第一家店的经验把每一项费用列了出来。材料费和人工费加起来十八万,设备和零散费用十七万,总预算三十五万。比第一家店的五十万少了十五万,主要因为面积小了,加上排烟管道现成和设备部分共用,省了不少钱。
三十五万。林枫把预算表推到林晨面前,用手指敲了敲桌面,加上五万周转金,总投入四十万。
林晨看了一眼预算表。数字列得清清楚楚,每一项都有出处,他在心里验算了一遍,对得上。
股权结构跟第一家一样?林晨问。
一样。林枫从口袋里掏出另一张折好的纸,上面写着股权分配的草稿。林晨二十四万占百分之六十,林枫十万占百分之二十五,林浩技术入股加六万占百分之十五。林浩的六万从第一家的分红里扣,不用再掏现金。
林晨点了一下头。他在电子表格上加了一张新表,标题是第二家店投资回报预测模型。面积九十五平米,租金两万四,营收预估十三万到十五万,净利润预估六万到八万,回本周期五到七个月。每个数字他都跟林枫核对了一遍,林枫在旁边看着,偶尔指一下屏幕说这里应该调高或者调低。
等阿伟能独立出菜了就开。林晨合上电脑。
林枫把预算表折起来放进口袋。两个人走出店门的时候,十点半的科技园中区已经安静下来了。路灯在人行道上投下橘黄色的光圈,远处有家酒吧还亮着灯,门口摆了两张户外桌椅。
林枫回头看了一眼灯箱。晨枫快餐四个字在夜色里亮着白光,灯箱的边角有一小片漆掉了,露出底下的铝板。他看了一秒钟,然后转身跟林晨一起走向停车场。
回到第一家店之后,林枫在笔记本上写了一行字:复制模型。下面列了几个要点:菜单复制、供应链复制、管理流程复制、装修风格微调。他把笔记本合上,看了一眼厨房。林浩在灶台前面颠锅,阿伟在旁边备料,两个人配合得很顺。灶台上的火苗映在不锈钢墙面上,油星偶尔蹦出来在空中划过一道亮光。小芳在收银台后面整理会员卡,把今天新办的五张卡按编号排好。如果第二家店也能这样顺,扩张就不是问题。
第341章 第二家店开业
一月十五号,晨枫快餐的第二家店在科技园南区正式开业。
装修花了十八天。林枫带着他的施工队从第一天进场到最后一天撤出,每天早上七点到晚上十点,中间没有休息过一天。他瘦了一圈,下巴的轮廓比之前明显了,衣服穿在身上显得松了一点,锁骨的位置凸出来一块。但装修方案落地得很干净,第一家店的教训他都记在笔记本上,每一条都改了过来。
用餐区只放了六张桌子,每张桌子之间的间距比第一家店宽了十公分。第一家店桌子太挤,小芳收盘子的时候总得侧着身子,高峰期客人起身让道也不方便。厨房的布局跟第一家一模一样,灶台和备料台的位置都没变,出餐口开在靠过道的一侧,方便传菜。排烟管道不用改,水电只动了两个点位,省了三天工期。灯换了新的,比第一家店的亮一个档位,照得用餐区的浅灰色地面和原木色桌面反着干净的光。
开业当天没有打折。林晨算过,第二家店不需要用打折来吸引客人。第一家店已经在这个区域有了口碑,第二家店开在南区的消息在会员系统里群发了一遍,当天来的客人里有一半是第一家的老顾客。打折只会拉低客单价,对后续的定价没有好处。他在电子表格里做了一个对比模型:打折七天的营收和利润,和不打折七天的营收和利润。数字很清楚,不打折的方案更优。
上午十点半,店里的灯全部打开了。阿伟站在厨房里,穿着跟林浩一样的白色厨师服,头上戴着帽子。他深呼吸了一下,把灶台上的调料瓶重新摆了一遍,酱油在左、醋在右、糖和盐并排靠后。副厨是个新招的小伙子,叫阿强,二十二岁,在一家小饭馆干过两年,能出简单的快菜。林浩花了两个星期教他出西红柿炒蛋和土豆丝,出品稳定但速度还偏慢,高峰期容易手忙脚乱。
收银台后面站的是小玲,二十六岁,之前在一家连锁奶茶店做收银。她手脚快,嘴巴甜,第一天上班就把菜单背了七成。看到客人进门就笑了:您好,欢迎光临晨枫快餐!
林浩在用餐区靠墙的位置站着,双手抱在胸前。第二家店开业的第一天,他过来督导,但不插手。
十一点的时候,林浩把厨房里里外外又走了一遍。冷柜的温度对不对,备料台上的菜码得齐不齐,出餐口的灯亮不亮,他一项一项地查。第一家店开业的时候他没经验,备料台离灶台太远,高峰期跑来跑去浪费时间。第二家店他把备料台挪到了灶台右手边,一伸手就能够到。阿伟跟在他后面看了两圈,把他的检查路线记在心里。林浩没教他怎么检查,但阿伟知道,这种事看一遍比说十遍管用。
小玲在收银台后面把菜单又过了一遍,把每道菜的价格默念了两遍。她第一天上班,紧张是正常的。林浩走到收银台旁边,把快捷键的操作流程指给她看了一遍:点单按菜品分类选,改数量按加减,付款扫二维码直接出小票。小玲点了两下,界面比她之前用的奶茶店系统简单。
中午十一点五十,第一个客人推门进来。
是个老面孔,穿格子衫的那个。林晨在第一家店的收银系统里见过他的会员记录,姓张,每周来三四次,固定点回锅肉。他进门之后先看了一眼菜单,发现少了水煮肉片和麻婆豆腐,多了西红柿炒蛋和酸辣土豆丝。眉头皱了一下,然后又松开了。
水煮肉片呢?他问。
小玲愣了一下。她第一天上班,对菜单还没那么熟,但反应很快:这家店暂时没有水煮肉片,您可以试试回锅肉或者糖醋排骨。
老张点了回锅肉加一碗饭。三分钟后菜端上来了,盘子里的回锅肉煸得微微发焦,肉皮卷曲,和林浩做的风格很像。他吃了一口,抬头朝厨房方向瞟了一眼。灶台后面站着的是阿伟。他认出了阿伟的脸,但没说什么,继续低头吃饭。
中午十二点一过,人开始多了。
写字楼里出来吃午饭的白领陆陆续续走进来,六张桌子很快就坐满了。小玲在收银台后面忙得脚不沾地,一边点单一边出小票,手指在小屏幕上点得飞快。厨房里也开始忙了,阿伟站在主灶前面,左手颠锅右手拿铲,节奏跟在第一家店的时候差不多。副厨阿强在旁边出快菜,西红柿炒蛋和土豆丝轮着来,速度比平时慢了一点但没出错。
十二点二十分出了一个小问题。
阿伟在出第四份鱼香肉丝的时候手抖了一下。灶台的火力比第一家店的猛了一点,他习惯性地用了第一家店的旋钮刻度来控制火候,结果油温过了。肉丝出锅的时候边缘偏焦了一点,调味汁的颜色也比正常深了一个色号。阿伟自己尝了一口,皱了下眉,把那份菜放到了备菜台上。
林浩在用餐区靠墙的位置看着。他没有走上前去,只是在旁边站了三十秒。
然后他走进厨房。
林浩没有说话。他从备料台的抽屉里拿了一条白色胶带和一支记号笔,在胶带上标出了几个火力档位,然后把胶带贴在灶台的旋钮上。阿伟看了一眼新的刻度标记,点了一下头,继续出菜。后面出的一份鱼香肉丝,火候就对了。
下午一点,客流高峰开始退去。厨房里的节奏慢了下来,阿伟把备菜台上那份偏焦的鱼香肉丝倒了,重新出了一份放在保温柜里备用。阿强在旁边洗碗,动作比中午快了不少。
两点到五点是空档期。林浩在厨房里教阿强出了三遍酸辣土豆丝,从切土豆丝开始教起。阿强切土豆的速度比林浩慢一半,但粗细还算均匀。林浩站在旁边计时,第一遍四分半,第二遍四分钟,第三遍三分四十秒。他在笔记本上记下:阿强,土豆丝,出菜速度从4分30秒降至3分40秒,仍需提速。阿强擦了一下额头的汗,问林浩能不能休息五分钟。林浩说可以,阿强靠在备料台边上喝了口水,眼睛盯着灶台上的卡片,嘴里默念着调料的克数。
十二点到一点的最高峰期,第二家店出了六十二份菜。阿伟独立出了三十八份,副厨出了二十四份。出餐时间平均五分十秒,比第一家店慢了三十秒。翻台率三点五次,比第一家店低了一点七次。
下午两点,客流彻底退了下去。阿伟把灶台上的灶眼关了两个,只留一个保温。他走到厨房门口,靠着门框站了一会儿,额头上全是汗,厨师服的领口湿了一圈。
林晨坐在用餐区的一张桌子旁边,面前摆着笔记本电脑。屏幕上是今天开业的数据汇总:营收三千二百块,客单价五十一点六元。比预期低了五百块,开业第一天的人流量不如预计。
林枫从外面走了进来,手里拿着一杯冰美式。他扫了一眼林晨电脑上的数字,在对面坐下来,把冰美式放在桌上。
比预期低。林晨说。
开业第一天,正常的。林枫喝了一口咖啡,杯壁上的冰块发出细碎的碰撞声,明天会好起来。
晚上九点半,最后一位客人走了之后,三个人坐在用餐区算账。第一家店今天的营收是五千六百,第二家店三千二百。林枫把两家的数据分别记在笔记本的不同页面上,字迹比平时小了一些,大概是累了。
小玲把收银系统的流水导出来,递给林晨。林晨看了一眼,今天总共出了一百四十二份菜,其中回锅肉三十八份,鱼香肉丝二十九份,西红柿炒蛋二十二份。第二家店的菜品结构跟第一家不一样,单人套餐的点单率比预想的高,特别是酸辣土豆丝,十八份,占了快百分之十三。他在表格里标了一个备注:第二家店单人套餐占比高,酸豆角炒饭可以考虑加进菜单。
林浩站起来走进厨房,把灶台上的白色胶带撕下来。胶带被油溅湿了,字迹有点模糊。他重新写了一条,用记号笔把几个火力档位标清楚,贴回旋钮上。贴完他站直身子,目光落在阿伟的备料台上,把砧板上歪了的抹布叠了一下放回原位。
明天六点。林浩跟阿伟说了一句。
阿伟点了一下头。他正在把调料瓶重新摆回架子上,动作比中午的时候慢了不少。
林枫把笔记本合上,放进口袋。他看了一眼窗外的夜色,路灯的光照在人行道上,偶尔有加班的人从写字楼出来,低着头走路。创新南路的行道树比中区的高一些,风吹过来的时候树叶发出沙沙的响声。
小玲已经把收银系统关了,在旁边等着。她是最后一个走的,走之前把桌椅擦了一遍,把地上的纸巾和筷子套扫进垃圾桶。林晨看了一眼她收拾的台面,干干净净,收银台上的小票也整理好了,按时间顺序排成一摞。第一天上班能做到这个程度,算不错了。
第二天,第二家店的营收是三千八百。第三天冲过了四千。到了第一周周末,日均营收稳定在了四千五百块。比第一家店同期低了一点,但差距在缩小。
林晨把每天的数据输进电子表格,看着那条曲线从三千二慢慢爬到了四千五。他在表格的备注栏里写了一句:第二家店营收趋势正常,预计第二周日均可达五千。
一周之后,他把两家店的开业数据做了一张对比表。第一家店开业第一天的翻台率四点二次,第二家店三点五次。第一家店开业第一天的客单价五十四元,第二家店五十一点六元。数字差了一个档次,但趋势是一样的,都是前低后高,第三天开始爬升。他在对比表的底部写了一行字:第二家店复制第一家店的模式,数据偏差在预期范围内。
第342章 管理挑战
两家店同时运营的第三天,问题来了。
凌晨五点,天还没全亮。第一家店后厨的灯已经亮了,林浩站在灶台前面,砧板上的蒜苗切成了均匀的段,生姜切成了薄厚一致的片。他做了三年,手上的肌肉记忆比任何菜谱都准。刀落在砧板上的声音又快又稳,每一下的间距几乎一样。切完最后一块生姜,他看了一眼墙上的挂钟,五点四十分,比平时慢了五分钟。
因为今天他还要去第二家店。
第二家店开业才三天,后厨的节奏还没磨合出来。阿伟能独立出五道菜,剩下五道还需要林浩盯着。昨天林浩在第一家店忙晚市的时候,第二家店的副厨把回锅肉的豆瓣酱多放了半勺,客人皱了一下眉没说什么,但林浩后来听阿伟提了一嘴,心里记下了。
他解下围裙,走到后门,推上林枫专门买的那辆电动车。深蓝色的车身上还贴着第一家店的外卖贴纸,后座上加了一个保温箱支架,用来在两家店之间带急用的食材。从第一家店到第二家店,单程十五分钟,经过两个红绿灯,拐一个弯,穿过一条巷子就到了。林浩每天要在两家店之间跑两到三个来回,中午高峰期一定在第二家店,晚高峰看情况分配。
第二家店的后厨比第一家小一些。灶台排列一样,但过道窄了半米,两个人同时转身的时候要侧着走。排烟管道的声音也比第一家大,油烟抽得不那么干净,灶台上总有一层薄薄的油渍。水龙头的水压也不够,洗碗的时候要多冲两遍才能冲干净。阿伟正在切洋葱,刀法比三个月前利落了不少,但跟林浩比还是慢。洋葱丝切到一半,他抬头看见林浩走进来。
洋葱丝再细一倍。林浩站在旁边扫了一眼。
阿伟了一声,手里的刀放慢了速度,开始调整切法。洋葱丝从三毫米变成了不到两毫米,林浩点了一下头,没再说话。他走到灶台前面,检查了一下油温和灶具,然后转身去看备料台上的调料罐。豆瓣酱和生抽摆在固定位置,醋在最右边。位置是对的,但量不太对,豆瓣酱的罐子只剩三分之一了,昨天应该补的。
豆瓣酱没补。林浩说。
阿伟停下刀。我忘了,光顾着切菜了。
林浩没说话,从库存架上拿了一罐新的豆瓣酱放在灶台旁边。然后他走到备料台最里面,检查了一下其他调料的存量。醋还够两天,白糖够三天。他在手机备忘录上记了两行字:豆瓣酱已补,醋两天后补。
检查完调料,林浩又看了一遍备料台上的食材。猪肉切好了,码在保鲜盒里;蒜苗泡在水里,还差一刀;土豆丝是副厨切的,粗细不太均匀,但勉强能用。他拿起菜刀,把几根过粗的土豆丝重新切了一遍,然后放下刀,瞟了一眼时间。六点十分,距离中午高峰期还有五个多小时,但备料的工作必须现在做完,因为下午他没有时间回来补。
中午十一点半,第一波客人进来了。点单机开始出票,厨房里立刻忙起来。林浩站在出菜口,阿伟在灶台上炒菜,副厨在旁边打配合。阿伟能独立出五道菜,这几道他已经练了三个月,味道跟林浩做的差距不大。剩下五道需要副厨配合,副厨是个二十出头的年轻人,手脚勤快但经验不够,土豆丝有时候粗细不均,蒜苗有时候切得太长。
高峰期出菜的速度还行。四十分钟里出了三十七份,跟第一家店差不多。但林浩注意到阿伟出回锅肉的时候,倒酱料的手停了一下,然后凭感觉往锅里倒。酱料入锅的量比标准多了一点,林浩在出菜口看到了客人皱了一下眉。那是一位穿灰色夹克的中年男人,吃了一口回锅肉之后筷子顿了一下,然后继续吃完了那盘菜,没说什么,但表情不太对。
他走进厨房跟阿伟说了一句:酱料用定量勺。
阿伟看了一眼灶台旁边的调味料。之前他都是凭手感放,现在林浩让他用定量勺。他在备料台上找了一把小号量勺,舀了一平勺豆瓣酱,倒进碗里看了看量,跟他以前凭手感放的差不多,但更稳。他用定量勺重新做了一份回锅肉,起锅前尝了一口,味道跟林浩做的一样。
以后所有调料都用定量勺。林浩说。
阿伟点了一下头。他在笔记本上写了一行字:回锅肉豆瓣酱一平勺。写完之后他又翻了一页,在下面加了一行:麻婆豆腐花椒粉半勺。他把自己能想到的调料用量也量化了,一条一条写在笔记本上,字迹歪歪扭扭但数字清楚。
下午两点,高峰期过了。厨房里只剩下灶台上残留的油烟味和排气扇的嗡嗡声。林浩站在备料台前面,把十道菜所有需要量化的调料在脑子里过了一遍。豆瓣酱和花椒的比例,每道菜都不一样,每道菜都需要一个标准。他以前在第一家店靠手感就能把调料放准,但第二家店不能靠手感,必须靠工具。定量勺是个开始,但光有定量勺还不够,还得让阿伟和副厨知道每道菜放多少。
他掏出手机给林晨发了一条消息:定量勺可行。做卡片?
林晨回了一个字:
当天晚上,林浩回第一家店之前,在第二家店后厨的墙上贴了一张手写的纸条。纸条上歪歪扭扭地写着回锅肉调料定量表:豆瓣酱一平勺,生抽半勺,白糖三分之一勺。字迹不好看,但数字清楚。阿伟看了一眼纸条,又瞟了一眼灶台上的定量勺,自己又在笔记本上加了两行字。
两天后,林晨带了一叠过塑的卡片过来。A5尺寸,防油防水的塑料套,每一道菜一张卡片。正面是菜名和出餐时间,背面是调料用量和烹饪步骤。十道菜,十张卡片,全部贴在灶台旁边的墙面上。阿伟出菜的时候扫一眼就能看到所有参数,不用凭感觉,不用记数据。
林枫下午来第二家店扫了一眼灶台旁边的卡片,伸手翻了两张。卡片上是林晨的手写体,字迹工整,每一步都标了序号,每个调料用量都精确到勺。他翻到干煸四季豆那张卡片的背面,看到油温要求写着七成热,油面微微冒烟,下面还画了一个小箭头指向备注:四季豆必须炸透,否则有豆腥味。
跟t厂的代码规范一样。林枫说。
流程就是流程。林晨把最后一张卡片贴上墙,拍了拍手上的灰。他转过身,目光落在阿伟灶台旁边的卡片排列上,又扫了一眼备料台上的定量勺。卡片和定量勺配合在一起,阿伟出菜的时候看卡片拿勺,一平勺下去,调料用量就不会出错。
阿伟站在灶台前试了一遍。左手拿定量勺,右手拿锅铲,面前是菜谱卡片。看卡片,拿定量勺,下调料,出锅。整个流程比以前流畅了不少,出菜时间从七分钟缩短到了五分半。阿伟自己在笔记本上又加了一行字:五分半出菜,比之前快一分半。
林浩在出菜口看了一遍。阿伟出的回锅肉,颜色对了,味道对了,酱料的量刚好。他又看了一遍副厨出的麻婆豆腐,花椒的量也对了,没有以前那种时多时少的问题。标准化的效果比他预想的要好,至少在调料这个环节上,阿伟不再需要凭手感了。
标准化解决了一部分问题,但两家店之间的沟通还是靠林浩来回跑。他不在的时候,第二家店出了状况只能打电话。高峰期打电话不方便,有时候一个电话打进来,林浩正在出菜,接不了。等他回拨过去,问题已经过去了。阿伟有一次在出菜的时候碰到了灶台上的调料罐,一罐花椒油洒了半罐,他不知道库存还够不够用,只能等到林浩来的时候再补。还有一次副厨把一锅水煮肉片煮过了头,出餐时间多等了三分钟,客人等不及走了,阿伟想跟林浩说但电话一直占线。
林晨在小程序上加了新功能:两家店的订单和库存数据实时同步。他用了两个晚上的时间,在第一家店和第二家店各放了一台ipad,登录同一个管理后台。出菜速度和库存量在一个界面上显示,营业额和会员数据也在同一个面板上。林浩在任何一家店都能看到另一家店的实时数据。
第二家店出问题,这边能看到。林浩看着ipad上的数据面板,手指划了一下屏幕。面板左边是第一家店的数据,右边是第二家店的数据,中间是两家店的汇总。数字每三十秒刷新一次,出菜速度和库存量全部实时更新。
看数据不如看人。林晨站在旁边说了一句,你每天至少在第二家店待两个小时,剩下时间阿伟自己撑。
林浩想了一下,点了一下头。他把ipad放回支架上,看了一眼时间,下午四点十分,第一家店的晚市备料该开始了。他拿起钥匙,走出第二家店的后门,骑上电动车,往第一家店的方向去了。
电动车在非机动车道上跑着,风把围裙的下摆吹起来。林浩的脑子里没有想什么宏大的计划,他在想的是今晚第二家店的备料够不够,明天早上去第一家店备料的时候能不能顺便把第二家店的量也备出来,定量勺的方案能不能从调料扩展到油温和火候。
十五分钟后,他到了第一家店。灶台上下午备的料已经摆好了,林浩换上围裙,站到灶台前面,开始出晚市的菜。
第一家店的厨房比第二家店宽敞,过道够两个人并排走,排烟管道的声音低沉平稳,灶台上的油渍已经被晚市的阿姨擦干净了。林浩站在灶台前面,手里拿着锅铲,看着点单机出的一张张小票。回锅肉、鱼香肉丝、麻婆豆腐,每一道菜他都做了三年,闭着眼睛都能出。但他今天多了一个心思:如果阿伟在第二家店也能像他一样,闭着眼睛就能出菜,那他就不需要每天在两家店之间跑三个来回了。
标准化是第一步,但不是最后一步。他还需要更多的卡片、更多的定量勺、更多的标准。油温的标准、火候的标准、出餐时间的标准,每一样都要量化,每一样都要写下来。他在心里默默记了一笔,等这个月的营收出来之后,看看能不能给第二家店再配一个熟手。
灶台上的油温升到了七成,林浩下了第一份回锅肉的肉,锅里炸出噼啪的声音。他看了一眼墙上的钟,晚高峰开始了。
第343章 数字化管理
林晨用了一个周末的时间,把晨枫快餐的管理系统从Excel搬到了一个真正的系统里。
周五晚上十点,第一家店打烊之后,林晨坐在后面的小仓库里,面前是一台笔记本电脑和两罐红牛。屏幕上是VS code的界面,左边是python代码,右边是mySqL的数据库表。他敲了四个小时的代码,从订单管理模块开始写。python和FastApI搭后端,mySqL存数据,小程序做前端,没有用任何复杂的框架,每一步都是为快餐店的实际需求设计的。数据库的表结构他画了三版,第一版太复杂,第二版缺了几个字段,第三版才定下来。每张表对应一个业务模块,订单表、库存表、排班表、财务表,四张表,干干净净。
订单管理是最先上线的功能。两家店的订单数据通过小程序实时同步,林浩在任何一家店都能看到另一家店的出菜情况。第二家店的平均出菜时间从面板上能看到,如果出菜时间突然从五分钟变成八分钟,数字旁边会出现一个红色的标记。林晨在代码里设了一个阈值:出菜时间超过七分钟就标红,超过十分钟就弹窗提醒。他试了几次,阈值调到七分钟正好,太低会误报,太高会漏报。
第二家店出菜慢了,这边有提示。林浩看着ipad上的界面说。
看数据不如看人。林晨补了一句,但数据能告诉你什么时候该去看人。
林浩没说话,手指在ipad上划了两下,把第二家店的出菜时间面板放大了。屏幕上显示的是过去两个小时每道菜的出菜时间曲线,回锅肉的平均出菜时间从六分钟变成了五分半,鱼香肉丝稳定在五分钟。数字不会骗人,但数字也不能替他站在灶台前面。
库存管理模块是林晨从FinGpt的代码里改出来的。他把金融数据接口换成了食材数据接口,把策略信号换成了补货提醒。系统每天晚上自动统计两家店的食材消耗量,计算出每种食材的安全库存线。任何一种食材低于两天用量的时候,林枫的手机上会收到一条提醒。林晨把库存预警的阈值设成了两天用量,太短容易断货,太长容易浪费,两天是个平衡点。
林枫看了一眼手机上的提醒。猪肉还剩四十斤,明天要去拉货了。
系统会自动提醒你。林晨说。
我知道,但它提醒的时候,我已经在路上了。林枫把手机揣回口袋。他每天凌晨四点出门拉货,系统的提醒对他来说更像是一个确认,而不是预警。不过有总比没有强,至少他不用再在脑子里算库存了。以前他每天睡前要在脑子里过一遍第二天的食材需求,猪肉还够几天、蔬菜还够几天、调料还够几天,现在这些数字全在系统里,他只需要看一眼手机就行。
员工排班模块是最简单的。一个日历界面,每个员工标上上班时间,两家店的排班在同一张表上。谁在哪家店,颜色标注清楚。排班冲突的时候界面会弹出黄色提示,林浩不用再在脑子里算谁今天在哪里。林晨在排班逻辑里加了一个规则:每家店至少要有一个能出全部十道菜的人,如果排班结果导致某家店没有熟手,系统会自动标红。
以前排班靠脑子想。林浩扫了一眼日历界面,现在看颜色就行。
财务报表模块林晨花的时间最少。林枫的手写报表已经很详细了,他只需要把数据从纸上搬到系统里。日报和周报自动生成,营收和净利润、翻台率和回头客占比,这些数据以前林枫要花一个小时算,现在系统五秒钟出结果。林晨在报表里加了一个同比环比的计算,每天跟昨天比,每周跟上周比,每个月跟上个月比,数据的变化趋势一目了然。
系统上线的第一天是个周一。林枫拿着ipad坐在第一家店的角落里,从中午十一点看到下午两点。他没说话,只是在屏幕上点来点去,看每一个模块的数据。订单模块和库存模块他各点开看了两遍,排班模块和财务模块各看了一遍。他特别仔细地看了库存预警的那一栏,猪肉、蔬菜、调料的剩余量和安全库存线全部标成了绿色和黄色,没有红色,说明一切正常。
跟你t厂的系统有什么区别?林枫终于开口了。
没区别。逻辑一样,数据不一样。林晨坐在对面,手里端着一杯水。
林枫想了一下。那这个系统能不能算出来哪个菜最赚钱?
林晨拿过ipad,点了两下屏幕,调出一张表格。十道菜的毛利率排名从高到低排列,鱼香肉丝排第一,毛利率百分之七十四。水煮肉片排最后,毛利率百分之五十八,食材成本高,第二家店已经不上这道菜了。干煸四季豆的毛利率百分之七十一,但单价低,每份的绝对利润只有八块钱。
你把单价和毛利放在一起看。林枫说。
林晨把表格切换成另一个维度:每道菜的每小时利润贡献。鱼香肉丝每小时能出十二份,每份利润七块三,每小时利润贡献八十七块六。水煮肉片每小时只能出八份,出餐时间长,每份利润七块五,每小时利润贡献六十块。这两个菜的毛利率差了十六个百分点,但每小时利润贡献只差了二十七块,因为鱼香肉丝出餐快,同一时间能出更多份。
鱼香肉丝比水煮肉片赚钱。林枫看了一眼数字,得出了结论。
水煮肉片是招牌。林晨说,它拉客流。没有水煮肉片,客人不会来。
林枫点了一下头。他管了十几年材料采购,有些东西不能只看单价。贵的不一定亏,便宜的不一定赚,关键看它在整个结构里起什么作用。
林晨在系统里加了一个维度:综合利润指数。毛利率和出餐速度加权计算,再乘以点单率,得出每道菜的综合贡献值。鱼香肉丝排第一,回锅肉排第二,麻婆豆腐排第三。
这三道菜的排名跟营收排名几乎一样。林枫看了看表格。
利润结构是稳定的。林晨合上笔记本电脑,招牌菜拉人,利润菜赚钱,结构没问题。
林枫在ipad上又划了两下,扫了一眼财务模块的月度数据。两家店合计月营收二十八万,净利润十五万出头。这些数字以前是他用计算器一笔一笔敲出来的,现在系统自动生成,五秒钟就出来了。他把ipad放在桌上,看了一眼窗外。第一家店的门口排着三四个客人,外卖骑手在旁边等着取餐,一切都在正常运转。
以前月底算账要算到凌晨两点。林枫把ipad推到一边,手指在桌面上敲了两下,现在点一下就出来了。
你以前算的是什么?
营收、成本、毛利、净利润,四个数。现在系统里十几个维度,我以前想都不敢想。
林晨没接话。他看着林枫在桌面上敲的手指,知道这是他在思考的习惯。林枫管了十几年的材料采购,对数字的敏感是天生的。系统给他的不是新东西,只是把他脑子里一直在算的东西变成了看得见的数据。
系统上线一周后,两家店的数据同步变得流畅了。林浩不需要每天在两家店之间跑三个来回,他只在第二家店待两个小时,剩下的时间在第一家店。两家店的出菜速度和库存量全部在ipad上一目了然,哪边出了问题,数据面板上最先反映出来。
阿伟也习惯了看卡片出菜。每天早上备料的时候,他会按照卡片上的用量提前称好调料,用小塑料盒分装,每道菜一盒,贴上标签。出菜的时候拿一盒倒进锅里,不用再凭手感,也不用再看卡片。出菜时间稳定在五分半,跟林浩在的时候一样。副厨也慢慢习惯了,虽然他出的那几道菜还没有完全标准化,但有了卡片和定量勺,至少不会再出大偏差。
有一天下着雨,林枫的手机在凌晨四点收到了一条库存预警。大蒜的库存低于两天用量,系统自动推了一条提醒。他看了一眼,马上打电话给第二家店,让阿伟把备用的大蒜从第一家店的冷柜里拿一部分带过去。中午他拉货的时候多进了五斤大蒜,系统里的库存线又变回了绿色。第二天林晨在系统里加了一个功能:当某种食材触发预警时,自动在两家店之间做一次库存调拨建议。如果第一家店有富余、第二家店缺货,系统会提示从第一家店调货。这个功能上线之后,断货的情况再也没有出现过。
林枫在笔记本上记了一行字:系统上线一周,两家店出菜效率持平,库存损耗降3%。
你这是把t厂的系统搬到了快餐店。林枫说。
林晨没否认。他收起笔记本电脑,瞟了一眼时间,站起来往门口走。明天还有一堆数据要调,库存模块的安全库存线需要根据两周的实际消耗重新校准,排班模块要加一个换班申请的功能。他推开门走进夜色里,脑子里已经在想明天要改的代码了。
系统上线第二周,林晨又加了一个模块:会员分析。两家店的会员数据汇总在一张表上,按消费频次分了三档,每月来四次以上的标绿色,两到四次的标黄色,一次以下的标红色。绿色会员占百分之三十五,贡献了百分之六十的营收。这个数字跟他在t厂做用户分析时看到的规律一样,百分之二十的用户贡献百分之八十的价值。快餐店也一样。
系统上线一个月之后,林晨在电子表格上加了一行数据:管理效率提升百分之十五。他算的是林浩每天在两家店之间跑的时间。以前他每天要跑两到三个来回,现在只需要跑一个来回,省出来的时间他用来做菜品研发和培训阿伟。库存损耗也降了三个百分点,以前每周总有几斤蔬菜因为备多了卖不完而扔掉,现在系统根据历史数据自动调整备料量,浪费少了很多。林晨在电子表格的最后一行写了一行字:数字化不是目的,效率才是。然后他合上电脑,看了一眼时间,十点了。
第344章 供应链优化
两家店同时采购之后,林枫的进货量翻了一倍。
以前他每天凌晨四点开车去海吉星拉一车菜,皮卡后斗装得满满当当,猪肉压在蔬菜上面,调料用塑料袋裹好塞在缝隙里。一趟够了,回来卸货进冰柜,上午十点前全部处理完。每天一百斤猪肉、三筐蔬菜、十来斤调料,皮卡后斗装个七八成满,开起来稳稳当当。
现在一车装不下两家的量了。
他试过一次拉两家的货,皮卡后斗堆到了护栏上面,用绳子绑了两道,开到半路差点翻。从那以后他分两趟跑:凌晨四点一趟拉第一家店的量,早上六点一趟拉第二家店的量。中间两个小时在市场里等档口把第二家店的量备好,坐在皮卡驾驶室里打盹,手机闹钟设到五点五十。两趟加起来要跑八十分钟的路,加上等货的时间,一早上四个小时就没了。油费也多了一倍,以前一箱油跑一个星期,现在只能跑四天。
这样不行。林枫在第一家店的复盘会上说了一句,两趟跑浪费时间,也浪费油。一趟来回四十分钟,两趟就是一小时二十分钟,加上等货的时间,一早上四个小时没了。
解决方案是集中采购。两家店的食材需求合在一起之后,猪肉从每天一百斤变成了两百斤,蔬菜从三筐变成了六筐。量翻倍之后,他有了跟供应商谈价格的筹码。调料的进货频率也从一周一次变成了三天一次,豆瓣酱和花椒的用量翻了一倍。
他给潮汕老板打了一个电话。
猪肉每天两百斤,能不能锁价?
电话那头沉默了两秒。潮汕老板做了十几年猪肉批发,两百斤的量在批发市场算小单,但对他的档口来说,一个稳定的大客户比十个散客值钱。每天两百斤,一个月六千斤,这个量可以锁。
锁价可以,一个月一签,每月最低采购量六千斤。
行。价格呢?
以前比市场均价高百分之五,现在量大,我给你市场均价。不涨价了。
林枫挂了电话,在笔记本上算了一笔账。以前猪肉的成本是市场均价加百分之五,现在变成了市场均价。一天两百斤乘以市场均价的百分之五,算下来每天省六十块左右,一个月一千八百块。他在笔记本上写了两行字:猪肉锁价市场均价,月省1800。
这个数字他看了两遍,确认没有算错。他在建筑工地管了十几年材料采购,算账是基本功,一块砖差一分钱,一万块砖就差一百块。猪肉也是一样的道理,每斤省几毛钱,两百斤就是几十块,一个月就是上千块。
蔬菜那边他也做了同样的谈判。平湖海吉星的叶菜档口老板以前给他的价格是市场均价加百分之三,现在量翻倍之后,他拿到了市场均价减百分之二的折扣。叶菜档口老板在电话里犹豫了一下,但每天六筐的量让他松了口。
量大我就给你均价减两个点。叶菜档口老板在电话里说,但你得保证每周至少拿六筐。
没问题。林枫说。
他又算了一笔账:蔬菜每天省四十块,一个月一千二。在笔记本上写:叶菜锁价均价减2%,月省1200。
挂完叶菜档口老板的电话,林枫没有急着收手机。他看着通讯录里的另一个号码,是郫县豆瓣酱在深圳的经销商。以前他一家店的量太小,走批发商拿货,十二块一斤,量大了才能跟厂家谈直供。现在两家店的豆瓣酱用量翻了一倍,他有底气打了这个电话。
我这边现在每个月要拿六十斤豆瓣酱,能不能厂家直供?
经销商报了一个价:厂家直供九块五一斤。
一斤省两块五。林枫在心里算了一下,一个月下来又省七百八十块。他在笔记本上写:豆瓣酱直供9.5元/斤,月省780。
猪肉省一千八,蔬菜省一千二。这两项加起来就是三千。调料直供再省七百八十,每个月总共省三千七百八十块。
比多卖一百份菜还赚。林枫把笔记本合上,在封面上写了一个数字:3780。
这个数字他看了一分钟。以前一家店的时候,他每天凌晨四点出门拉货,跟档口老板讨价还价半天,省下来的都是几毛几块的零头。现在两家店的量摆在这里,他不用再跟小档口磨嘴皮子了,数字说话。
第二天凌晨四点,林枫开着皮卡去海吉星拉货。这一次他只跑一趟,皮卡后斗装了两家店的量,堆得满满当当但没有超过护栏。猪肉两百斤,蔬菜六筐,调料三天一进货。他把货拉回第一家店,卸货、分拣、进冰柜,整个过程比以前两趟跑快了一个多小时。
回到店里之后,他给两家店各分了一半的货。第一家店的货直接进冰柜,第二家店的货装在保温箱里,等林浩中午骑电动车过来的时候带过去。保温箱是林枫上周新买的,四个大号泡沫箱加盖,能装一百斤货,中间隔了冰袋保鲜。从第一家店到第二家店骑电动车十五分钟,菜在箱子里不会坏。分货的时候他看了一眼系统里的库存数据,猪肉的消耗量和安全库存线全部标成了绿色,没有红色预警。以前这些数字全在他脑子里,现在全在系统里,他只需要看一眼就行。
他分货的动作比以前快了不少。以前一家店的时候,所有货往一个冰柜里塞就行,现在要按清单分拣。猪肉一百斤一家,各装一个保温袋;蔬菜三筐一家,叶菜和根茎分开码;调料按品类用塑料袋装好,每袋贴上标签,写着哪家店用。他用了二十分钟就把两家店的货分完了,比第一趟分货的时候快了十分钟。分完货他洗了手,在分货记录上打了勾,标了时间。
林晨在电子表格上更新了成本数据。食材成本占比从百分之二十六点七下降到百分之二十四点八。他切了一张表给林枫看:以前卖一份鱼香肉丝赚七块三,现在赚七块八。五毛钱的差距乘以一百份菜,一天多五十块,一个月多一千五。
他又点开成本对比模块。猪肉的进价从市场均价加百分之五变成了市场均价,每斤省了八毛到一块二,视当日市场行情浮动。蔬菜从均价加百分之三变成了均价减百分之二,每天省四十块左右。豆瓣酱从十二块一斤变成了九块五,每个月省七百八十。三项加起来每个月省三千七百八十块,一年就是四万五。他在备注栏里加了一句:第三家店开起来之后,采购量再翻一倍,这个数字还会涨。
成本降一个点,利润多一个点。林晨看着表格说。
林枫点头。他管了十几年材料采购,量大了才有话语权。以前一家店的量只能跟小档口谈,现在两家店的量可以跟厂家和经销商谈直供。
他把所有供应商的联系方式整理成了一张表,存在手机备忘录里。每个供应商后面标了锁价期限和最低采购量。猪肉和蔬菜两个品类的供应商各有两家,价格和条件全部标清楚。他还在表的底部加了一行备注:下次谈判筹码=两家店月采购量。
第三家店开的时候,量再翻一倍,价格还能再降。林枫说。
林晨看了他一眼。第三家店还早。先把两家店稳住。
林枫没有反驳。他合上笔记本,站起来往门口走。走到门口的时候回头说了一句:猪肉今天涨了两块,我跟潮汕老板确认了,锁价到下个月。
林晨回了一个字:
林枫推门走了。外面深圳的夜风从门缝里吹进来,带着一点海水的咸味。林晨看了一眼系统里的供应商数据表,把林枫刚确认的锁价信息更新进去。猪肉锁价有效期到下个月底,蔬菜锁价有效期还有三周,豆瓣酱直供合同半年一签。每一项的到期时间都标了颜色,绿色是安全,黄色是快到期,红色是已过期。现在全部是绿色。
他切到库存预警页面看了一眼。两家店的日均消耗数据已经跑了二十天,猪肉的安全库存线设在了日消耗量的百分之一百二十,蔬菜的设在了百分之一百一十。二十天下来,猪肉没有触发过一次红色预警,蔬菜只在国庆假期第一天触发过一次,因为备料量按工作日算的,假日客流少但备料没减。林晨在日志里加了一条备注:假日备料量减两成。
他关掉系统,打开手机看了一眼时间,十点了。明天t厂还有一个技术评审会,他需要看一遍陈铭发来的技术方案草稿。他把手机放回口袋,站起来关灯锁门。
供应链的事不是一天能做完的。林枫用了三个月才把第一家店的供应商稳定下来,第二家店开了之后又用了一个月重新谈价格。每一分钱的节省都是跑出来的、谈出来的、算出来的。林晨在系统里又加了一个页面,标题是供应商评分表,每个供应商后面列了三个指标:价格、稳定性、配合度。潮汕老板的稳定性打了满分,叶菜档口老板的配合度扣了一分,有一次送来的菜里有几棵发黄的叶菜,林枫退了回去,对方二话没说换了新的。豆瓣酱经销商的评分全部是满分,直供的货质量稳定,配送也准时。
凌晨三点四十五分,闹钟还没响,林枫已经醒了。他穿上外套,检查了一下车钥匙和手机,推开门走进凌晨的冷风里。皮卡停在店门口,后斗是空的,等会儿要装满两家店一天的量。他坐进驾驶室,发动引擎,车灯照亮了空无一人的街道。皮卡驶上主路,他看了一眼后视镜,后斗是空的,但很快就会装满。量越大,价越低,利润越薄的时候,每一分钱的节省都是真金白银。他在心里算了一下明天的采购清单,猪肉两百斤、蔬菜六筐、豆瓣酱三天一进。每一个数字他都不需要看笔记,已经刻在脑子里了。皮卡在凌晨的街道上跑着,车灯照亮前方两百米的路。
第345章 月利润20万
月底最后一天,林枫在第一家店的办公室里等打印。
针式打印机嗡嗡响着,吐出两张A4纸,上面是两家店这个月的完整运营数据。他拿起报表看了一眼,从抽屉里摸出红笔,在几个关键数字下面画了线。打印机还在吐第三张,是会员数据的明细,他伸手扯下来,跟前面两张摞在一起。
林晨推门进来的时候,林枫正把两张报表并排摆在桌面上。第一家店的报表在左,第二家店的在右,两张纸之间的距离刚好是一个拳头的宽度。林枫站在桌边没坐,左手拿着红笔,右手端着半杯凉掉的美式咖啡。咖啡是早上八点泡的,现在下午三点了,杯子摸上去已经完全凉了。
林枫下巴朝对面的椅子点了点。
林晨拉开椅子坐下,目光先落在左边那张表上。第一家店,月营收十六万八千,净利润九万七千。日均出菜四百八十份,翻台率四点二,会员充值新增两万八千。这些数字他昨晚在手机推送的日报里已经看过了,但报表上的数字排在一起,视觉冲击不一样。九万七的净利润,比第一个完整月又涨了一万出头。
第二家店呢?林晨的目光移到右边。
你看。林枫用红笔在第二家店的营收数字下面画了一道杠,十一万二。
第二家店才开满一个月,月营收十一万二千,净利润五万八千。日均出菜三百二十份,翻台率三点五,会员充值新增一万四千。加上第一家店的净利润九万七千,两家店合计净利润十五万五千。但林枫的预测是,第二家店下个月能稳定在七万以上,两家店合计月利润有望冲到二十万。林枫在翻台率旁边标了个向上的箭头,又在日均出菜旁边写了个字。
第二家店第二周日均过了四千五,第三周稳定在五千以上。林枫放下红笔,把咖啡杯推到一边,我之前预估第二家店首月营收十万左右,实际跑了十一万二,超了一万二。南区那边的客群比中区散,午市时间长,但晚市比中区多两成。下个月如果第二家店净利润能稳在七万以上,两家店加起来月利润就二十万了。
林晨在手机上打开电子表格,开始输入数据。两家店合计月营收二十八万,净利润十五万五千。加上会员充值余额新增的四万二(预收款,不算营收),总流水三十二万出头。他在表格里加了几个公式,投资回报预测的列自动算出了结果:两家店总投资九十万,回本周期五到六个月。如果第二家店下个月营收再涨一成,净利润冲到二十万,回本能提前到五个月以内。
五个月回本。林晨把手机转过来给林枫看。
林枫扫了一眼屏幕上的数字,点了点头。他拿起红笔,在报表空白处写了几个字:翻台率三点五→四点零。写完他抬头看林晨。
第二家店的翻台率如果从三点五提到四点零,净利润还能再多一万。下个月目标,两家店合计月营收三十万,净利润十八万以上。林枫说。
翻台率怎么提?林晨问。
午市缩短出菜时间,从八分钟压到六分钟。翻台快了,同样的时段能多跑一轮。林枫说完,从文件夹里抽出一张手写的排班调整表,第二家店午市加两个人,出菜口加一个打包位。人力成本每月多四千,但多跑一轮能多出八千到一万营收。
林晨看了几秒钟排班表,没有提异议。投入产出比算得过来,加两个人换一轮翻台,值。
食材锁价呢?林晨问。
猪肉今天十九块三,比上周涨了五毛。我打算先锁两周的量,看看下个月初能不能降。蔬菜走日采,锁不住。大米和食用油已经跟供应商谈了季度价,锁到三月底。林枫翻出微信聊天记录给林晨看,鸡蛋的价格有点波动,年后可能涨,我盯着。
食用油锁了多少?林晨问。
大豆油锁了三个月的量,每桶比市场价低两块二。菜籽油只锁了一个月,供应商说年后可能调整价格。林枫翻了翻手机上的记录,调料走的是月度协议,酱油醋味精都在合同价里,波动不大。
林晨点了下头。锁价这块林枫管得细,他不需要多问。
两个人又看了十几分钟报表。林枫把两家店的成本一项一项拆开来讲,人工和食材的占比最高,加起来超过六成,房租和水电紧随其后,会员折扣和平台抽成各占一截。每一项的占比都标在报表旁边,红笔画的圈和箭头密密麻麻。林晨在电子表格上把几个关键参数调了一下,回本周期的数字跳动了一下,从五点八个月变成了五点三个月。
人力成本那块还有压缩空间吗?林晨问。
第一家店目前六个人,第二家店目前五个人。林枫在报表上指了一下,下个月第二家店加两个人,人力成本涨四千,但翻台率提上来之后多出的营收能覆盖。第一家店暂时不加人,六个人跑得动。
林晨在表格上更新了人力成本的参数,回本周期还是五点三个月,没有变化。他看了林枫一眼,林枫点了下头,两个人对数据没有异议。
林浩推门进来的时候,两个人正在合计下个月的采购方案。林浩手里拿着一沓出库单和明天的备料计划,看到桌上摊开的两张运营报表,脚步顿了一下。
浩子,这个月数据出来了。林枫把报表递给他。
林浩接过去,目光从第一家店的净利润看到第二家店的净利润。他的手指在十五万五这个合计数字上停了两秒。两家店合计净利润十五万五,他占百分之十五的分红,两万三千二百五十。加上每月八千的薪资,他这个月的总收入三万一千二百五十。
三万出头。
这个数字比他在东莞电子厂一年的工资还多。
他把报表放在桌上,拿出手机截了个屏,存进一个叫收支记录的文件夹里。然后他打开备忘录,敲了几行字:第一家店净利九万七,第二家店净利五万八,合计十五万五。分红两万三千二百五十,薪资八千,总收入三万一千二百五十。字打完之后他把手机锁屏,揣回口袋。
明天猪肉什么价?林浩问林枫。
十九块三,比上周涨了五毛。林枫翻出微信聊天记录给他看。
锁不锁?
先锁两周。林枫说。
林浩点了下头,拿起备料计划转身走了出去。走到门口他停了一下,回头瞥了一眼桌上那两张报表,然后推门进了厨房。
厨房里灶台已经擦干净了,案板上码着明天要用的葱姜蒜,冷柜里的库存他下午已经盘过一遍。他从口袋里掏出手机,把明天的备料清单又看了一遍,然后拿起笔在备货单上猪肉那一栏旁边写了锁两周三个字。写完他把笔插回围裙口袋,打开冷柜又盘了一遍明天的蔬菜库存。白菜还剩三十斤,够用。土豆剩五十斤,够用。蒜苗只剩八斤,明天要多采十斤。
他关上冷柜,把备货单贴在冰箱门上。冷柜门上已经贴了好几张纸了,明天的备货单盖住了前天的,前天的盖住了大前天的。他没有撕掉旧的,新的直接贴上去,贴到最后冷柜门上叠了四五层纸。他瞥了一眼最底下那张,是上周的备货单,上面的字迹已经模糊了。
他洗了手,开始准备晚上的菜。他从冷柜里拿出一块五花肉,用刀背在皮上刮了两下,然后放进温水里泡着。排骨也拿了一份出来,加了一勺料酒和两片姜腌上。糖醋汁他调得比平时浓了半勺,打算晚上做糖醋排骨。
那天晚上三个人在店里吃饭。林浩做的回锅肉和炝炒莲白,外加一锅糖醋排骨。排骨收汁的时候火开得大了点,表面积了一层亮糖色,筷子一碰就分开,骨肉分离。林枫从冷柜里摸出三瓶啤酒,用开瓶器撬开,一瓶递给林晨,一瓶自己拿,一瓶放在林浩手边。林浩平时不怎么喝酒,但今天他把瓶子拿起来喝了一口。啤酒冰过,入喉的时候凉了一下。
两家店了。林枫举起酒瓶。
林晨伸手跟他碰了一下。林浩没碰,又喝了一口酒,然后夹了一块回锅肉嚼着。
三个人坐在用完的餐区里,头顶的灯管还是亮的,白色光照在桌面上,把空盘子和酒瓶的影子压得很短。厨房的灶台已经凉了,排风罩的声音也停了。外面夜风吹进来,带着深圳二月的一丝凉意。林枫把酒瓶放在桌上,手指在瓶身上敲了几下。
两家店月利润二十万。再开两家就四十万。他说。
先稳住这两家。林晨说。
我知道。林枫喝了口酒,下个月把第二家店的翻台率提上来,午市出菜时间压到六分钟,加两个工位。
第二家店的人员培训跟得上吗?林晨问。
浩子在盯。林枫看了一眼厨房的方向,阿伟的进步比预期快,回锅肉已经能独立出了,宫保鸡丁还差点火候。下个月如果阿伟能再过两道菜,第二家店就不用浩子两头跑了。
林晨点了下头。
他看了一眼手机上刚更新的电子表格,回本周期那一列显示的数字是五点三个月。如果下个月的数据按林枫的方案跑,回本周期能压到五个月以内。
林浩在旁边一直没说话。他吃完了碗里的饭,把碗筷收进水槽,开水龙头冲了一下,碗放在沥水架上。他从厨房出来的时候手里拿着备料单,看了一眼两个人还在聊,就点了下头,推门出去了。
门口的灯箱还亮着。晨枫快餐四个字映在夜色里,白光落在他肩膀上。他站在门口掏出手机,屏幕亮起来,上面是明天要备的料和出菜计划。他把手机锁了,抬眼看了一眼对面街的方向。两公里外的南区写字楼底商,第二家店的灯箱也亮着,同样的白光从那边映过来,隔了两条街的距离,还能看见一点亮。
第346章 财富的感受
周六下午,林晨坐在书房里看投资账户。
笔记本电脑放在书桌上,屏幕上是过去两年半的净值曲线。从最初的五万到现在的五百一十万,曲线从左下角爬到右上角,中间有几个回撤的小坑,去年十月那根阴线最明显,跌了百分之八之后又花了三周爬回来。他看了一会儿曲线,拉到最右边,最新的净值数字停留在五百万出头的位置。他把鼠标移到回撤最大的那个点上,停了两秒,然后移开了。
他关掉净值曲线,打开t厂的工资条。这个月薪水涨到了七万,扣完税到手大约四万二。他在电子表格里填了一行数据,把各项收入分类录入。t厂工资税后四万二,投资系统收益这个月大约二十万出头,晨枫快餐分红十万左右。三项加起来,这个月总收入三十四万出头。
他又翻到支出那一页。房贷五万零六百,日常开销两万左右,乐乐的学费和兴趣班一万出头。月支出合计八万,月结余二十六万。他看着结余那一列的数字,手指在触控板上滑了一下,切换到下一张工作表。投资系统的监控面板上,四个策略全部在正常区间,没有触发任何风控信号。他把面板关掉,合上电脑。
苏婉推门进来的时候,他刚好把笔记本电脑的盖子合上。
还没弄完?苏婉把一杯温水放在他手边。
弄完了。林晨说。
苏婉在床边坐下来,从床头柜上拿起一堆衣服开始叠。她叠到乐乐的校服的时候多瞥了一眼领口的标签,看有没有洗脱。以前她叠衣服的时候会算一下这个月的水电费有没有超,现在不算了。每个月看一眼银行卡余额就够了,不需要逐项拆开算。
乐乐的编程课下周续费,一学期四千八。苏婉边叠边说。
林晨说。
钢琴也该续了,一年两万四。
苏婉把叠好的衣服放进衣柜,又从抽屉里翻出乐乐的课表看了一眼。周六上午编程,下午英语,周日下午钢琴。以前只能选一门,她跟林晨商量了半天选了编程。现在三门都报了,费用加起来在月支出里占一小块,不需要专门做预算。她把课表放回抽屉,继续叠衣服。
叠到最后一件的时候,苏婉从乐乐的校裤口袋里翻出一张皱巴巴的小纸条,上面画着一个机器人和几行歪歪扭扭的字。她扫了一眼,是乐乐在编程课上画的流程图,起始框、判断框、输出框,画得不太规整,但逻辑是对的。她把纸条折好,放回校裤口袋里,把裤子叠好放进衣柜。
乐乐的编程老师说他逻辑感不错。苏婉说。
林晨说。
乐乐从客厅跑进来,手里拿着一个乐高积木拼的小汽车。
爸爸你看!他把小汽车举到林晨面前。
不错。林晨瞥了一眼。
这是我自己拼的!乐乐说,轮子会转!
他把小汽车放在书桌上推了一下,小汽车滑了半米,撞到笔记本电脑停住了。
嗯,看到了。林晨把小汽车拿起来递回给他。
乐乐接过去,又跑出去了。客厅里传来积木倒地的声音,然后是乐乐一声,接着是重新拼的窸窣声。他不知道家里每个月进账多少,不知道爸爸的投资账户已经超过五百万,不知道浩哥哥现在每个月挣多少。他只知道周六上午去学编程,周日下午去学钢琴。编程课他喜欢,钢琴课是妈妈让学的,他问过妈妈能不能只学编程,妈妈说再学一门音乐也好。他就没再问。
林晨站起来走到客厅。茶几上放着乐乐的编程课教材,旁边是苏婉批改到一半的作业本,红笔夹在第十七页。电视柜上放着三张缴费回执,编程课、英语课和钢琴课,苏婉已经交完了,回执用回形针别在一起,压在遥控器底下。
他从茶几旁边走过去,在阳台站了一会儿。楼下小区的路上有人在遛狗,有人在跑步,遛金毛的那个人每天下午四点都会出现,风雨无阻。林晨看了一会儿,转身回了书房。
他打开手机看了一眼晨枫快餐今天的数据推送。第一家店今日营收五千六,第二家店今日营收三千八。两家店都正常运转,没有异常。他把推送关掉,手机放在桌上。书房里很安静,外面传来乐乐在客厅拼积木的声音,偶尔还有苏婉翻书页的沙沙声。
林浩这个月收到了三万三千的到账通知。薪资八千是月初发的,分红两万五是月底发的。他在手机备忘录里记了一行:二月,薪资八千,分红两万五,合计三万三。
然后他打开微信,给家里转了两万块。
转账的时候他没有犹豫。老家的房子住了快二十年了,屋顶的瓦片碎了好几块,下雨天漏水漏到灶台上,他妈拿盆接着,一接就是好几年。他跟他妈视频的时候说过要寄钱回去修,他妈说不用,他说修吧,就挂了。
两万块转完,他截了个图存进收支记录的文件夹。然后他又转了一千块,备注写的是给爸买件棉袄。
他妈收到钱之后打了个电话过来,说了几句,声音有点抖。林浩接了电话,听她说完,说了一句该修就修,就挂了。
挂了电话之后他在厨房里站了一会儿,看着冷柜上的备料清单发了一会儿呆。然后他打开冷柜,把明天要用的猪肉拿出来解冻,关上冷柜门的时候他看了一眼手机屏幕,微信上他妈发了一条消息:钱收到了,你在外面照顾好自己。他看了两秒,把手机锁了,继续备料。
林枫是后来听林浩他妈说的。林浩他妈给林枫打了个电话,问深圳是不是挣得多,林浩是不是干得挺好。林枫说干得挺好,你放心。挂了电话之后林枫在微信上给林晨发了一条消息:林浩给家里寄了两万修房子。
林晨回了一个字:
林枫这个月也办了一件事。他去建筑公司办了离职。
手续办得很顺利。hR在系统里点了几下,打了离职证明,让他签了个字。他在这家公司干了十一年,从月薪三千干到月薪一万五,管过的大小项目有二十多个。走的时候没有欢送会,因为项目停了好几个,他走了公司反而少发一份工资。
他回到工位收拾东西。抽屉里有一个计算器、两支笔、一盒回形针,全扔进了垃圾桶。文件柜里的项目日志他翻了翻,最后几页还是空白的,他撕下来塞进口袋,把本子也扔了。办公桌上没什么私人物品,一个水杯、一副老花镜、一把卷尺,装进一个塑料袋就装完了。他把水杯洗了洗,放在水池边上,没带走。十一年,最后装走的只有这几样东西。
走出写字楼的时候是下午四点,太阳还挂在西边。他站在楼下的台阶上把离职证明叠了两折放进钱包,然后拿出手机看了一眼晨枫快餐的数据面板。第一家店午市出菜时间七分十二秒,第二家店七分四十八秒。都还行,但还有压缩空间。
他把手机锁了,叫了个车,目的地是晨枫快餐第二家店。车开到半路的时候,他在手机备忘录里写了一行字:全职投入。以后每天的精力只有一件事。
到了第二家店,他推门进去。林浩正在厨房里备料,听到门响回头瞥了一眼,继续切肉。林枫在收银台旁边坐下来,打开笔记本电脑,把离职证明拍了张照存进文件夹,然后开始做下个月的采购计划。两家店的食材锁价、排班调整、翻台率目标,一个一个列在表格里。
林浩从厨房出来倒水的时候,看了一眼林枫电脑屏幕上的表格。
你不在公司了?林浩问。
今天办完的。林枫说。
林浩点了下头,端着水杯回了厨房。林枫看着他的背影,在表格上又加了一行字:林浩出菜稳定,阿伟出菜合格,老刘需加强。
晚上,林晨在书房里更新了电子表格。家庭月收入汇总那一栏的数据:t厂薪资税后四万二,投资系统收益约二十万,晨枫快餐分红约十万。合计约三十四万。月支出:房贷五万零六百,日常开销两万,乐乐学费和兴趣班一万。合计约八万。月结余约二十六万。
他存完表格关上电脑,走到客厅。苏婉在沙发上看书,乐乐在自己房间里拼乐高。茶几上放着三张缴费回执的回形针,苏婉已经交完了,回执压在遥控器底下。
林晨在苏婉旁边坐下来。苏婉翻了一页书,没有抬头。
明天我去看一下那个新地段。林晨说。
苏婉说。
客厅里很安静。乐乐从房间里跑出来倒了杯水,又跑回去了。阳台外面的路灯亮着,照在小区的树上,树叶晃了一下。
苏婉把书合上,放在茶几上。她看的还是那本小说,封面卷了边,是在楼下书店花二十块买的。她看书很快,一个月能看三四本,以前买书要在网上比价,现在直接在楼下买,省下来的时间比省下来的钱值钱。她拿起遥控器换了两个台,停在一个纪录片频道上,画面里是大片的麦田,风吹过去,麦浪起伏。
那天晚上林晨在电子表格上加了一行备注:家庭月收入34万,月支出8万,结余26万。他看着这个数字想了一会儿,然后关掉了表格。他走到客厅,苏婉在沙发上翻手机,乐乐已经睡了。他在沙发上坐下来,拿起遥控器换了两个台,什么也没看进去。他放下遥控器,靠在沙发背上闭了一会儿眼睛。
两年前他坐在这张沙发上的时候,手机上还装着招聘软件,投出去的简历一封回复都没有。现在手机上的招聘软件已经删了,换成了投资系统的监控面板和晨枫快餐的数据看板。同样的沙发,同样的客厅,同样的窗外路灯。不一样的是银行账户上的数字,和苏婉叠衣服时不再算水电费的那种安静。两年前他连乐乐的编程课都要犹豫,现在三门课一起报,眼都不眨一下。钱没有改变生活的方式,但改变了做选择时的速度。
第347章 林浩的蜕变
林浩给老家寄了两万块这件事,林晨是后来才知道的。
那天林晨刚从t厂下班,在车里接了林枫的电话。林枫说起第二家店下个月的采购计划,猪肉锁了两周的价格,鸡蛋年后可能要涨,聊到最后加了一句:林浩给他爸妈寄了钱,把老家的房子修了修,换了屋顶的瓦片和厨房的灶台。
林晨没有追问。他知道林浩的性格,做了就做了,不会拿出来说。两万块对林浩来说不算小数目,但也不到承受不了的程度。他每月的薪资加分红三万出头,寄两万回去还不到一个月的收入。
但林晨更在意的是林浩这三个月的变化。
三个月前林浩还在酒店做案板。那时候他每天的工作就是切菜、备料、听罗师傅的话。罗师傅说切肉丝他就切肉丝,说换砧板他就换砧板,说出餐了他就把盘子端到出餐口。他很少主动做决定,很少跟人聊天。休息的时候他坐在后厨的塑料凳上刷手机,刷完一条划下一条,一刷就是半个小时。他的世界就灶台到出餐口那么大,每天在这几步路之间来回转。
现在他的世界不一样了。
早上六点半,林浩已经在第一家店的厨房里了。天还没亮透,路灯的光从后门的小窗照进来,照在不锈钢的备料台上,台面泛着一层冷光。他把冷柜里的存货盘了一遍,在备料单上把缺的几样东西圈出来。猪肉今天要备四十斤,比昨天多五斤,因为明天是周一,午市的客流通常比周日多一成。他在备料单上写了猪五花40斤+5,然后发给了供应商。
发完消息他开始洗菜。白菜一筐,先摘外层的叶子,再从中间切开,洗净之后沥干水分码在备料盒里。土豆削皮之后泡在水里防止氧化,切之前再捞出来。蒜苗摘去根部和老叶,切成四厘米的段。这些动作他每天重复,已经不需要思考,手自己就知道下一步该干什么。
七点十五分,阿伟到了。林浩把备料单递给他,指了指上面的数字。
今天备这些。林浩说。
好,浩哥。阿伟接过去看了一眼,五花比昨天多五斤?
周一客流多一成。林浩说完,转身开始切肉。
他切肉的动作跟三个月前不一样了。以前在酒店的时候他切肉是埋头切,切完就走,不抬头不看人。现在他切肉的时候眼睛会扫一圈厨房,看阿伟的刀工稳不稳,看冷柜门有没有关紧,看出餐口那边有没有备好的盘子。他的手比以前快了,但节奏比以前稳了。不需要看火候就能判断油温,不需要尝就能知道味道对不对。有新来的帮厨问他在哪学的这套手艺,他没搭理,继续切肉。
八点十分,第一家店的午市备料全部就绪。林浩把围裙上的油渍擦了一下,换了一双干的手套,骑上电动车往第二家店去。二月的早晨风还带着凉意,他套了一件薄外套,骑到半路的时候风吹得他眯了一下眼。单程十五分钟,他闭着眼都能骑到,这条路他每天跑两到三个来回。到了第二家店,他先检查冷柜的库存,再看午市的出菜准备。
南区店的客群跟中区店不一样。中区店周边是写字楼和产业园,白领多,午饭时间集中,翻台靠快。南区店周边是商住混合区,小公司多,午饭时间拉得长,从十一点半到一点半都有人,但单人客单价比中区低两到三块。林浩在开业第二周就发现了这个差异,他在南区店的菜单上加了一道酸豆角炒饭,定价十八块,专门针对单人用餐。林晨在数据上看了一下,酸豆角炒饭的点单率确实比预期高,利润率也不错,每份毛利能到十一块。
浩哥,酸豆角今天备多少?第二家店的副厨老刘问他。
八斤。林浩说,昨天用了七斤半,今天多备半斤。
老刘点了点头,转身去冷柜拿了。
林浩在第二家店盯了午市的出菜。十一点半第一批客人进来,他站在灶台旁边看老刘出菜。老刘的手速还行,但翻锅的时候手腕偶尔会抖,导致收汁不均匀。林浩没有当场说,等午市高峰过了之后,他才走到老刘旁边。
翻锅的时候手腕别抖。林浩说,收汁才能匀。
老刘试了几次,确实好了。他看了林浩一眼,没多问,继续干活。
午市结束之后林浩在后厨的角落坐了五分钟。他掏出手机扫了一眼两家店的实时数据:第一家店午市出菜三百一十份,平均出菜时间七分半;第二家店午市出菜二百二十份,平均出菜时间八分钟。第二家店的出菜时间还是偏慢,老刘的翻锅速度需要再提一提。他把手机锁了,从冷柜里拿了一瓶水喝了两口,然后站起来开始备晚市的料。
下午两点,林浩骑电动车回第一家店。路上他瞟了一眼手机,两家店的实时数据面板上,今日出菜数量、库存量和会员数据都在正常范围内。他把手机收回口袋,拐进巷子的时候差点蹭到一辆三轮车,他打了一下喇叭,三轮车让开了。
回到第一家店,阿伟正在备晚市的料。林浩走过去扫了一眼备料台,阿伟的刀工比上个月稳了,土豆丝切得粗细均匀,葱花的长度也基本一致。他在阿伟旁边站了一会儿,看他把一整块鸡胸肉片成薄片,刀法比上周流畅了不少。
不错。林浩说。
阿伟咧了一下嘴,继续切。
林浩从口袋里掏出一个巴掌大的笔记本,翻到一页新的,开始写。他写的全是数据:阿伟刀工评估,鸡胸片薄,合格。土豆丝粗细,合格。出菜速度,午市平均七分半,比上周快了二十秒。他写完合上笔记本,放回口袋。
这个笔记本是三个月前他开始记的。里面记的全是数据和参数。每道菜的标准做法、火候参数、调味比例、常见错误和修正方法。他写这些是为了给阿伟参考。第二家店需要主厨,阿伟是唯一的人选。林浩不可能永远在两家店之间跑,阿伟必须能独立出菜。所以他得把阿伟教会,有计划地教。
他给阿伟排了一个三个月的训练计划。第一个月从回锅肉开始,到宫保鸡丁,再到麻婆豆腐,三道菜一道一道过关。第二个月加糖醋排骨和酸豆角炒肉末,再加鱼香肉丝。第三个月加水煮肉片和干锅花菜。每道菜都有标准做法和标准时间。阿伟每出一道菜,林浩都会在笔记本上记下来,合格画勾,不合格画叉,旁边写清楚问题在哪。
上周阿伟独立出了回锅肉,从下锅到出餐用了九分钟。林浩在笔记本上记下:回锅肉,独立出菜,九分钟,及格。味道偏咸半勺,下次盐减一克。他把这条记录给阿伟看了,阿伟说记住了,下次调。
上个月他把笔记本上的内容整理了一遍,做成了贴在灶台旁边的标准菜谱卡片。每张卡片A4纸大小,过塑了贴在墙上,出菜的时候抬头就能看到。卡片上的内容很简单:食材配比、调味克数、火候时间、出菜标准。没有一句多余的话。
浩哥,你怎么想到要写这些卡片的?阿伟有一天问他。
怕忘了。林浩只说了两个字。
阿伟当时没再问。但他后来慢慢明白了,这些卡片是给他看的。浩哥不在灶台前的时候,他得有东西可查。
林浩开始做以前不会做的事。
比如主动跟林枫谈猪肉锁价。以前这种事都是林枫做的,但现在林浩会问一句猪肉今天什么价,如果价格波动大了他会建议林枫提前锁量。他每天早上盘冷柜的时候都会看一眼猪肉的进价,连续看了两周之后他发现了一个规律:每周二和周五的价格通常比其他日子低一到两毛。他把这个规律告诉了林枫,林枫调整了采购时间,把大批量的猪肉采购集中在周二和周五,一个月下来省了将近两千块。
比如在菜单上加新菜。他在第二家店开业之后发现南区客人对酸豆角炒肉末的点单率比中区高,他建议在南区店加一道酸豆角炒饭作为单人套餐,定价十八块。林晨在数据上看了一下,酸豆角炒饭的点单率确实比预期高,利润率也不错。
比如他开始主动跟供应商谈价格。以前他只管做菜,买菜的事都是林枫管的。但他发现有些蔬菜的品质不稳定,特别是蒜苗和小米辣,好供应商和差供应商的货差很多。他跟林枫说了两次之后,林枫换了一家供应商,菜品的退货率降了一半。
昨天他做了一件让林晨意外的事。他主动提出调整第二家店的午市出菜流程。以前第二家店的午市出菜流程是照搬第一家店的,但南区店的客群不一样,午市时间长但翻台慢,他建议把打包出餐口和堂食出餐口分开,打包的走侧窗口,堂食的走正窗口。林枫在白板上画了两个流程图对比了一下,发现林浩的方案能让出菜效率提升大约百分之十五。
你怎么想到的?林枫问。
看出来的。林浩说。
林枫看了他一眼,没多问。他在流程图上标了几个参数,然后把白板擦了,写上下周试运行。
林晨在电子表格上加了一行备注:林浩独立管理能力评估,通过。他可以在林浩不在的情况下维持一家店的正常运营。下一阶段目标:培养第二个主厨。
晚上九点,店里最后几桌客人走了。林浩收拾完厨房,把灶台擦干净,冷柜盘了一遍,把明天的备料计划写好。他从冷柜里把明天要用的猪肉拿出来解冻,在备货单上蒜苗那一栏旁边加了个多备五斤的备注。他把备货单贴在冰箱门上,洗了手,关了后厨的灯。
他走到门口的时候掏出手机看了一眼时间。九点二十。
门口的灯箱还亮着。他站在门口,抬头看了一眼灯箱上晨枫快餐四个字,然后低头看了一眼手机。微信上有一条林枫发来的消息:明天猪肉锁价,十九块三,锁两周。
林浩回了两个字:知道了。
他把手机收进口袋,推门走了。街上已经没什么人了,路灯把他的影子拉得很长。他走了几步,回头看了一眼灯箱。白光照在路面上,他的影子被灯箱的轮廓切成了一个方块。远处南区店的灯箱也亮着,隔了两公里还能看见那一点白光。
他骑上电动车,往第二家店的方向去了。明天早上六点半,那边的冷柜也要盘一遍。
第348章 林浩订婚
林浩要订婚这件事,是林枫在电话里告诉林晨的。
林浩谈了个对象,在餐饮圈干的,想订婚。林枫的语气没有起伏,像在报一个食材价格。
林晨握着手机站在t厂的走廊里,窗外的天空灰蒙蒙的,快下雨了。他了一声,等林枫继续说。
女孩叫周小敏,在福田一家川菜馆做前厅经理,二十三岁。家里是湖南的,父母在深圳打工,她初中毕业就出来干活了。林枫停了一下,人我见过,实在,不浮。
林晨没有追问是什么意思。林枫看人看十几年了,他说实在,就是实在。
什么时候订婚?
想在下个月。问你有没有时间。
电话挂了之后,林晨站在走廊上想了一会儿。林浩今年二十四岁,比他进t厂的时候还小一岁。二十四岁订婚,在鹏城算早的,但在他们老家不算早。老家那个小县城,二十四岁没对象的男青年,过年回家连相亲都排不上号。
他想了一下林浩这几年的变化。从东莞电子厂的流水线工人,到厨师学校的学生,到五星级酒店的案板,再到晨枫快餐的主厨。两年半的时间,一个人可以从月薪四千二的流水线工人变成月入三万出头的合伙人。这个变化比投资账户里的数字增长更让他觉得踏实。
他回到工位上,在电子表格里加了一行备注:林浩订婚——待确认日期和预算。然后他把手机放回桌上,打开了FinGpt的代码。代码在屏幕上一行一行地滚过去,他看了几行就切回了晨枫快餐的运营数据面板。两家店的实时数据在屏幕上跳动,午市营收已经在五千以上了。他看了一会儿,又切回了代码。
周末林晨去店里看了一次。
第二家店的晚高峰刚过,厨房里还留着灶火余温和油烟味。排气扇嗡嗡地转着,把最后一层热气抽走。林浩在厨房里收拾灶台,手里攥着一块湿抹布,从灶台边缘一路擦到出餐口的边沿。他抬头看了林晨一眼,继续擦灶台边上的油渍。
听说你要订婚了。林晨站在厨房门口说。
林浩没停手,了一声。
什么时候的事?
去年冬天。林浩把抹布拧了一下,水滴进水槽里。她以前在我们对面那家川菜馆干过。
林晨想起来了。第一家店刚开业的时候,对面有一家川菜馆,后来因为经营不善关了。那时候林浩偶尔会提到对面那家店的出菜速度和翻台率,原来是有关注的人。
怎么认识的?
林浩把抹布挂回钩子上,拉下围裙的拉链。她来吃饭。点了一份鱼香肉丝,说好吃。
就这些?林晨等着他说更多。但林浩已经走到备料台前,翻开笔记本看明天的备料清单了。
阿伟从冷库那边走过来,看到林晨,叫了一声。然后他凑到林晨旁边,压低声音说:浩哥跟小敏姐是去年十二月认识的,一开始就是来吃饭,后来加了微信,再后来就在一起了。
你怎么知道的?
浩哥让她帮我们调试过前厅的流程。阿伟说,她以前在前厅管排班,我们第二家店开的时候浩哥想参考一下别人的排班方式,就去找她聊了一次。聊完之后两个人就开始约会了。
林晨没说话。林浩做事的方式跟他很像,不声不响,做了再说。
小敏姐人挺好的。阿伟加了一句,上次来店里帮忙,把前厅的动线重新排了一遍,出菜速度提了至少百分之十。
林晨心里有数了。一个做前厅管理的人,一个做厨房管理的人,两个人在一起不是偶然。厨房管菜品和出菜速度,前厅管客户体验和翻台率。这两件事在一家快餐店里是互相咬合的齿轮,做厨房的人和做前厅的人在一起,天然就有共同语言。
订婚的日期定在了下个月的第二个周六。
林枫在家庭群里发了一条消息:林浩订婚,周六中午在南区店办。家里人能来的都来。
消息发出去之后,群里安静了三十秒。然后林晨的妈妈发了一个字,后面跟了三个感叹号。苏婉发了一个笑脸。林晨的弟弟林旭发了一句。
林浩在群里没有说话。
林晨给林浩打了一个电话。彩礼的事跟你爸商量了吗?
商量了。林浩的声音很平,她说不用彩礼。
她说的还是她家说的?
她家也同意。她爸说,两个人在一起过好日子就行,不搞那些虚的。
林晨想了想,这事不简单。在深圳的打工人圈子里,订婚不谈彩礼的家庭不多。要么是女方家真的开明,要么是女方家觉得林浩的条件不需要彩礼来补。不管哪种,都说明周小敏的家庭是个讲实际的人家。
婚房的事呢?
她自己有租房。订婚之后我们打算先住在她那边,等以后再买房。
林晨沉默了几秒。他没有说我可以帮你们出首付,也没有说租房也行。他只说了一句:行。有事跟我说。
知道了。
电话挂了之后,苏婉从书房走出来。她看了林晨一眼:林浩的事?
嗯。订婚。
苏婉点点头,没有追问细节。她走到厨房倒了杯水,回来的时候说了一句:他把日子过好了,就是最好的事。
林晨没有接话。他打开手机,在电子表格上加了一行备注:林浩订婚预算待确认。然后他把手机锁屏放回桌上。他想起两年前在东莞电子厂见林浩的那个冬天,林浩穿着蓝色工服,站在流水线旁边,眼睛里没有光。现在林浩要订婚了。有些变化不需要用数字去衡量。
订婚前的那个周末,林晨和苏婉去见了周小敏。
地点是林浩选的,一家南山区的湘菜馆。馆子不大,门口挂了一块木招牌,漆已经有些斑驳了。走进去是六张木桌,墙上贴着菜单,用红笔标了几个招牌菜。中午的客人不多,只有两桌人在吃,空气里飘着剁椒和豆豉的气味。林浩提前半小时到了,站在门口等他们。他穿了一件新衬衫,灰色,领口扣子扣到最上面一颗。
周小敏比林浩先到一步。她个子不高,圆脸,短发别在耳朵后面,笑起来有两个酒窝。她穿着一件深蓝色的连衣裙,脚上是一双平底凉鞋。没有化妆,也没有戴什么首饰。
小敏,这是我叔,这是我婶。林浩介绍的时候用了和,这是他们老家的叫法。
周小敏叫了一声和,然后拉开椅子让他们坐下。动作很自然,像是做了很多年前厅管理的人,知道怎么在不声不响之间把事情安排好。
苏婉看着她,笑了一下。别紧张,我们就是吃顿饭。
周小敏点头。我不紧张。
点菜的时候周小敏没有客气。她翻了菜单,点了四个菜:一个剁椒鱼头、一个酸豆角炒肉末、一个清炒时蔬、一个手撕包菜。点完之后她看了一眼林浩,林浩微微点了一下头。
你做川菜的,怎么点湘菜?苏婉问。
湘菜我也熟。周小敏说,在川菜馆干了三年,但我是湖南人,湘菜才是本行。
这话说得干脆。林晨看了她一眼,觉得这个姑娘跟他印象里的那种南方小姑娘不太一样。她说话不绕弯,不做作,点菜的时候既不刻意点最贵的也不故意点最便宜的,而是点了刚好够四个人吃的量。
四个菜上来之后,林浩先尝了一口剁椒鱼头,然后看了一眼周小敏。周小敏也尝了一口,说了一句:鱼头不够鲜,应该是冻的。
林浩点了一下头。
苏婉夹了一口酸豆角炒肉末,说:这个味儿跟你做的差不多。
周小敏笑了一下:酸豆角是我教他的。他以前只会川菜那一套,酸豆角的做法是湘菜的。
林浩没有接话,在专心吃菜。
林晨观察了周小敏一顿饭的时间。她吃饭快,说话少,夹菜的时候先给苏婉和林晨夹,然后才给自己夹。她在川菜馆做前厅经理,管人管事管流程,这种职业习惯已经变成了她的本能。她不是那种需要别人照顾的人,她是那种自己能照顾好自己还能顺手照顾别人的人。
跟林浩很像。
吃完饭之后,苏婉和周小敏去洗手间。林晨和林浩站在餐馆门口等。
她不错。林晨说。
林浩没有笑,也没有不好意思。他说了一句:她比我厉害。前厅的事她全懂,排班、动线、客户管理、投诉处理,全懂。我只会做菜。
你不止会做菜。
林浩看了他一眼,没有反驳。他把手插进口袋里,看着马路对面的一棵行道树。深圳的行道树一年四季都是绿的,叶子在风里晃来晃去。
婚房的事你别操心。林浩说,我们自己能搞定。
林晨没有接这句。他知道林浩说能搞定的时候是真的能搞定。从东莞到深圳,从四千二到三万出头,林浩从来没有说过他搞不定的事。
苏婉和周小敏从洗手间出来的时候,两个人已经聊到了培训员工的话题上。周小敏在说她怎么教新来的服务员记住桌号和菜单,苏婉在说她学校新来的实习生连打印机都不会用。两个人笑得挺开心。
回去的路上,苏婉在车里说了一句:这姑娘实在。
她跟林浩搭。
林晨把车启动了,汇入滨海大道的车流里。车窗外面的路灯一盏接一盏地亮起来,深圳的傍晚总是这样,天还没全黑灯就亮了。他想起刚才周小敏点菜的那个场景。四个菜,不多不少,没有浪费也没有寒酸。这种分寸感不是装出来的,是过日子过出来的。她在川菜馆管了三年的前厅,见过太多铺张浪费的客人和抠抠搜搜的客人,知道四个人吃饭该点多少菜、该花多少钱。这种人在快餐店里能活下来,在婚姻里也能活下来。
林浩找到了一个跟他一样实在的人。这件事比月利润多少万、投资账户多少万都让他觉得安心。
到家之后他打开电子表格,在林浩那一栏后面加了一行:未婚妻周小敏,23岁,前厅管理经验三年。
然后他关掉了表格,去客厅陪乐乐下了一盘棋。
第349章 订婚宴
订婚宴办在南区店,时间是周六中午。
林浩从前一天晚上就开始准备。他把第二天要用的食材全部过了一遍,从冷库里拿出一早就让林枫从海吉星订的鲈鱼和基围虾,又检查了一遍干料的保质期。花椒还剩半袋,够用;豆瓣酱开封三天了,味道还在峰值区;干辣椒是上周新进的,颜色正。
你订婚,用得着自己备料吗?阿伟在旁边看林浩一袋一袋地清点。
林浩没抬头,
阿伟想了一下,明白了。浩哥订婚,来的都是家里人。家里人吃饭,浩哥要亲自做。他不会让任何一道菜出问题。
备料清单上有十二道菜。六道川菜、三道湘菜、两道粤菜、一道凉菜。川菜是林浩的本行,湘菜是周小敏的口味,粤菜是给不辣的人准备的,凉菜是开胃用。
浩哥,我来帮你切配。阿伟挽起袖子准备动手。
不用。你把前厅收拾干净就行。林浩把鲈鱼放进保鲜柜,前厅的事让小敏也看看,以后两家店的前厅归她管。
阿伟愣了一下。浩哥从来没有说过让谁管什么,他都是自己做。但今天他松了口,让周小敏看前厅的事。这不是订婚才说的话,是已经想好了才说的话。
周六上午十点,林枫第一个到。
他穿了一件深灰色的polo衫,头发比平时梳得整齐一些。手里提着一个红色纸袋,里面装的是两瓶红酒和一条烟。
烟不用。林浩在厨房里喊了一句。
林枫没有理他,把纸袋放在了吧台上。他走到厨房门口瞟了一眼,林浩正在片鲈鱼。刀法比半年前快了不少,鱼肉在刀下一片一片地分开,薄厚均匀,每一片几乎一样。
别把鱼做老了。林枫说了一句就转身去前厅了。
他检查了一遍前厅的桌椅摆放。八张桌子拼成了一张长桌,铺了红色桌布,桌上摆了十副碗筷。椅子不够,他又从库房搬了两把折叠椅出来。
周小敏十点半到的。她穿了一件红色的连衣裙,头发扎了一个马尾,耳朵上戴了一对小小的银耳环。她进门先看了一眼前厅的布局,然后走到厨房门口。
桌椅不用拼成长桌。她跟林浩说,家里人吃饭,两桌更方便说话。大的那桌坐长辈,小桌坐年轻人。
林浩想了一下,
他叫阿伟把拼好的长桌拆成两张,一张六人桌、一张四人桌。周小敏又调了一下桌上的碗筷——大桌的碗筷摆得正式一些,小桌的碗筷随意一些。
她比你会排前厅。林枫在旁边跟林浩说。
林浩在切菜,没抬头。知道。
十一点,家里人陆续到了。
林晨和苏婉带着乐乐第一个到。乐乐穿着校服,手里拿了一副棋,他以为订婚宴上有时间下棋。苏婉把棋收走了,跟他说今天吃菜,不下棋。
小敏姐姐好。乐乐跟周小敏打了个招呼。他以前在店里见过周小敏几次,已经认识。
周小敏蹲下来跟乐乐平视,乐乐,今天有你想吃的糖醋排骨。
乐乐的眼睛亮了一下。
林晨的妈妈第二个到。她从老家坐高铁来的,背了一个布包,里面装了两条红围巾和一盒老家的腊肉。她进门看到林浩站在厨房门口,愣了几秒才认出来。林浩比上次见面瘦了一些,但也精神了一些。
林浩叫了一声。
他妈点了点头,把红围巾拿出来,一条递给林浩,一条递给周小敏。老家规矩,订婚要戴红。
周小敏接过围巾的时候手抖了一下,然后稳住了。她把围巾叠好放在旁边的椅子上。
林旭最后一个到。他从广州坐高铁过来的,进门的时候满头是汗。他比林晨矮半头,脸圆,说话快,笑起来声音大。
哥!嫂子!浩子要订婚了?林旭的声音从前厅传到厨房。
林浩在厨房里翻了一下锅,没有回应。周小敏从厨房门口探出头来叫了一声。
林旭看了看周小敏,扭头跟林晨说:嫂子,浩子眼光不错啊。
苏婉笑了一下。林晨在旁边没说话,帮林枫把最后一副碗筷摆好。
十二点整,林浩开始出菜。
第一道是凉菜——凉拌鸡丝。鸡丝切得极细,红油和花椒油的比例刚好,花生碎撒在上面,香菜切得碎,拌在一起香味从碗边飘出来。
第二道是鱼香肉丝。这是晨枫快餐的招牌菜,但今天的鱼香肉丝跟店里的不一样。店里的是快炒快出,追求翻台率;今天的是慢火慢炒,每一根肉丝都裹满了酱汁,笋丝和木耳丝的口感脆嫩,不是快餐版能比的。
第三道是水煮鱼片。用的是今天早上现杀的鲈鱼,鱼片薄如纸,在滚烫的红油里烫了二十秒就捞出来,铺在豆芽和白菜上面,最后浇一勺滚油。油浇下去的时候,辣椒和花椒的香味在整间店里炸开了。
林枫开了一瓶红酒,给每个人倒了半杯。他举杯的时候说了一句:林浩,好好过。
林浩端起杯子,喝了一口。他把杯子放下之后,端起第四道菜走出了厨房。
第四道是剁椒鱼头。这道菜是周小敏教他的湘菜。鱼头对半劈开,铺满了红色的剁椒,蒸了八分钟出锅。剁椒的辣和鱼头的鲜混在一起,蒸气从盘子里冒出来。
周小敏尝了一口,没有说话。她看着林浩,嘴角微微弯了一下。
大桌上的长辈们吃得很认真。林晨的妈妈吃了一口鱼香肉丝,点了点头。她没有说或者,她只是多吃了几口,然后把碗里的饭吃完了。这是她表达满意的方式。
林旭倒是毫不客气,一边吃一边评价。他说水煮鱼片的辣度比川菜馆的正,剁椒鱼头的蒸时间刚刚好,糖醋排骨的酸甜比例比他上次在酒楼吃的好。
你就知道吃。林晨说了一句。
浩子做的菜好吃嘛。林旭又夹了一块排骨。
乐乐坐在小桌上,面前放了一碗糖醋排骨。他一块接一块地吃,吃到第三块的时候嘴角全是酱汁。苏婉给他擦了擦嘴,他说妈妈我还要。
吃到一半的时候,林旭问了一个问题。
浩子,你以后怎么打算的?就开快餐店?
林浩在厨房里切完了最后一道菜的备料,走出来端菜。他把清炒时蔬放在桌上,然后回答了一句:先把两家店做好。
两家店以后呢?开第三家?
看情况。
林枫接过话:第二家店才开了两个月,不着急。
林旭点头,又夹了一块鱼。他嚼了两口,忽然说了一句:我们公司楼下也有一家快餐店,味道比这个差远了,但生意也好。快餐这东西,位置对了就能赚钱。
林晨看了一眼林旭。林旭在深圳一家小公司做销售,月薪六七千,不温不火。他说位置对了就能赚钱的时候,语气里有一种对这两个字的渴望。
位置只是一半。林晨说,另一半是菜品和流程。
那浩子不是全有了吗?林旭笑了一下,厨艺好,流程也好,还有你跟枫哥管着。
林浩没有接这个话。他走进厨房,把最后一道菜端了出来。
是甜品。一碗银耳红枣汤,炖了两个小时,银耳已经软烂到入口即化的程度,红枣的甜味渗进了汤里。
这什么?林旭问。
银耳汤。林浩把碗放在桌上,我妈以前做的。
林晨的妈妈听到这句话,抬头看了一眼林浩。林浩已经转身回了厨房,背对着前厅。她端起碗喝了一口,然后低头慢慢喝完了整碗。
饭后,林晨帮林枫收拾前厅。周小敏把两桌的碗筷收拾到后厨的水池里,跟阿伟一起洗。林浩在厨房里把剩下的食材分类放回冷库。
苏婉带着乐乐在门口等。乐乐吃饱了之后犯困,靠在苏婉腿上快要睡着了。
林旭从洗手间出来,走到林晨旁边,帮着把椅子放回原位。他一边搬椅子一边说:哥,浩子现在厉害了啊。有自己的店,有自己的手艺,还有老婆。
比我在深圳混得强多了。林旭说这句话的时候语气是认真的,不是开玩笑。
林晨没有接话。他知道林旭这几年过得不太顺。大专毕业之后做了几年销售,攒不下什么钱。老家县城的房子是林晨帮忙出了首付的,月供一直是他自己在还,每个月三千多,占了他工资的一半。
小宇最近怎么样?林晨问了一句。小宇是林旭的儿子,今年二十一岁,大专学的计算机,刚毕业。
在找工作的阶段。林旭搬完最后一把椅子,拍了拍手上的灰,学的是计算机,但技术不行。投了好几个开发岗的简历,都没过。
他想做什么?
他自己也说不清楚。林旭叹了口气,编程学得一般,但他人缘好,喜欢跟人打交道。我说让他去做销售,他不愿意。
林晨想了一下。一个学计算机但技术不精、喜欢跟人打交道的年轻人。这个画像他见过很多次,在t厂的面试里、在智研的简历库里、在科技园的咖啡厅里。
让他来深圳试试。林晨说。
林旭愣了一下。来深圳?
先来再说。
林旭没有立刻回答。他目光落在正在厨房里擦灶台的林浩身上,又看了一眼正在洗碗的周小敏,最后扫了一眼正在前厅收桌布的林枫。
他说了一个字。
林晨把最后一张桌布叠好,放回柜子里。厨房里传来了水龙头关上的声音,然后是周小敏跟阿伟说话的声音。林浩的脚步声从厨房走出来,他换了一件干净的外套,手里拿着一个红包。
他把红包递给周小敏。
订婚戒指。他说。
周小敏接过红包,打开看了一眼。里面是一张纸条,写着一行字:周六下午三点,周大福。
周小敏笑了。这是今天她第一次笑出声。
林浩也笑了。这是林晨认识他以来,第一次看到他笑得这么自然。不是因为签了合同,不是因为出了好菜,不是因为月利润又涨了。就是笑,因为开心。
林晨站在前厅,看着他们两个,没有说话。苏婉从门口走进来,把乐乐递给林晨抱着,自己走到周小敏旁边,跟她说了一句什么。两个人一起笑了起来。
林枫从后厨走出来,看到这一幕,拍了拍林浩的肩膀。没有说话。
门外,阳光照在晨枫快餐的灯箱上。灯没有亮,但灯箱上的字在阳光下面清清楚楚。
第350章 家族的荣耀
小宇来深圳的那天是个工作日。
林旭把他送到了深圳北站,自己坐高铁回了广州。临走之前他在家庭群里发了一句:小宇到了,麻烦哥照顾。
林晨去北站接的他。小宇背着双肩包,拖了一个行李箱,穿了一件格子衬衫和牛仔裤。他比林旭高,瘦,脸上还带着刚从学校出来的那种茫然。
小宇。林晨在出站口叫了他一声。
大伯。小宇叫了一声,声音不大。他叫林晨,这是老家的叫法。林晨比他爸大两岁,但辈分是大伯。
林晨接过他的行李箱放上车后备箱,开车上了南坪快速。车里有空调冷气,小宇坐在副驾驶上没有说话,看着窗外的高楼一栋一栋地往后退。
你爸说你学的是计算机。林晨开了一句头。
小宇点了一下头。大专,计算机应用技术。
编程怎么样?
小宇沉默了几秒。学过Java、python、前端三件套。但都不太精。做课设的时候能跑通,自己写项目就抓瞎。
这个回答很诚实。林晨在t厂面试过不少这样的人,学历是计算机相关,但代码写不好,逻辑理不清。他们不是不聪明,是没找到方向。
你自己想做什么?
小宇想了一会儿。我也不太确定。编程我不太喜欢,天天对着屏幕写代码,写不出来的时候很烦躁。但我喜欢跟人聊天,在学校的时候组织过活动,管过社团的公众号,也帮老师对接过几个校企合作的项目。
林晨没有接话。他在想小宇适合什么位置。
从晨枫快餐的角度看,店里需要两种人:一种是在厨房里埋头做事的,像林浩和阿伟;另一种是在前厅管人管流程的,像周小敏。小宇的画像更偏后者,但他没有餐饮经验,也没有前厅管理的经验。把他放到店里从零学起,不是不行,但浪费了他学计算机的底子。
从t厂的角度看,他技术不够进开发岗,但可以做运营或者项目管理。可林晨不会把亲戚安排到自己部门,这是底线。
还有第三条路。
你先在店里住几天,看看环境。林晨说。
小宇点了点头。
小宇在南区店住了三天。
他睡在店里二楼的小隔间里,那是以前林枫装修的时候隔出来的储物间,后来收拾了一下放了一张折叠床。每天早上五点半,他听到林浩起来备料的声音就跟着起来。他不会做饭,就站在旁边看。看了三天,他把林浩的出菜流程记了个大概。
浩哥,你每天切菜要多久?小宇在第三天早上问了一句。
一个小时。林浩在切莴笋,刀起刀落的速度很稳。
我能学吗?
林浩看了他一眼。能。但学了也不一定用得上。
小宇想了一下,觉得有道理。他不是来当厨师的,他只是想看看这家店到底在干什么。
三天里他还跟着周小敏看了前厅的运营。周小敏教他怎么用点单系统、怎么看翻台率、怎么处理客人的投诉。小宇学得快,记性也好,周小敏说一遍他就能记住。
小宇,你觉得这套系统好用吗?周小敏指着ipad上的管理界面问他。
小宇划了两下屏幕。功能够用,但界面太丑了。图标对不上操作逻辑,新手上手要摸索半天。
周小敏笑了一下。这个是林晨写的。
小宇缩了一下脖子,不敢再说了。
第四天晚上,林晨来店里开月度复盘会。
月度复盘会是他定下的规矩。每个月第一周的周六晚上,三个人加上阿伟和周小敏,在店里坐在一起看数据。第一家店和第二家店的营收、成本、毛利、翻台率、会员数据全部过一遍。有问题的找问题,没问题的看趋势。
小宇旁听了整场。
他在旁边看林晨操作ipad上的管理系统,看林枫用红笔在报表上画圈,看林浩点头或摇头回答关于出菜速度的问题。他看不懂全部的数据,但他能看懂一件事:这两家店不是靠手艺撑着的,是靠系统撑着的。从采购到备料到出菜到收银到会员,每一步都有流程和数据。
复盘会结束后,小宇跟林晨走回住处。两个人走在科技园中区的路上,路灯光落在人行道上。
大伯,我想问个事。小宇开口了。
你们这套管理系统,是你自己写的?
前端用的小程序?
嗯。后端是python,数据库mySqL。
小宇想了一会儿。我能学吗?不是学写代码,是学怎么把一家店从零到一做起来。
林晨放慢了脚步。他没有立刻回答。
小宇继续说:我这几天在店里看,发现每一步都有标准。备料有标准的量,出菜有标准的时间,采购有标准的流程。但这些东西不是一开始就有的,是从第一家店开到现在,一步一步试出来的。我想学的不是怎么切菜或者怎么收银,我想学的是怎么建一套这样的体系。
林晨停了下来,看着小宇。
这小子说话比林浩多,但思路是清楚的。他不是在找一份工作,他在找一个方向。他的计算机底子不够做开发,但他能看到这件事。他看到的不只是菜怎么炒,而是流程怎么搭、数据怎么用、人怎么管。
你想做运营。林晨说。
小宇想了一下。算是吧。但不是纯运营。我想做那种把技术跟管理连在一起的事。你的管理系统是写给店用的,我能学会怎么用,但我也想学会怎么改进它。让它更好用。
你学了三天就看出了系统界面的问题。林晨说。
小宇不好意思地笑了一下。那是我嘴快了。
嘴快不是坏事。林晨继续走,做运营的人,嘴不快不行。你得发现问题、说出来、然后解决问题。技术可以学,但发现问题这个能力很难教。
小宇跟上了林晨的步子。那我能留下来吗?
能。但不是现在。
小宇愣了一下。
林晨解释:你先去学三个月的基础。前厅两个月,后厨一个月。不是让你当服务员或者厨师,是让你知道这家店的每一个环节是怎么运转的。三个月之后,如果你还能说出刚才那些话,我给你安排一个正式的岗位。
什么岗位?
运营助理。协助周小敏管前厅和会员系统,协助林枫管采购和成本,协助我管数据和流程。三个方向都接触,找到你最能做的那个。
小宇想了两秒。
林晨回头看了一眼他。你不用这么快回答好。想清楚再答应。
我想清楚了。小宇的声音比刚才大了一点。我不想回老家做销售,也不想在广州的小公司混日子。我想在深圳做点事。
林晨没有再说什么。两个人走回了小区门口,林晨刷卡进了门禁,小宇跟在后面。
那天晚上林晨在家里书房坐了很久。
他在电子表格上加了一行:小宇,运营助理,试用期三个月,前厅两个月加后厨一个月,月薪五千。
然后他给林旭发了一条消息:小宇留下来学三个月,你放心。
林旭回了一个谢了哥,后面跟了一个双手合十的表情。
苏婉端了一杯水进来,放在桌上。她看了一眼电子表格上的内容,没有说什么。她把乐乐明天要穿的校服叠好放在椅子上,然后走出了书房。
林晨关掉电子表格,打开手机看了一下投资系统的数据。今天A股市场小幅回调,投资系统的策略自动减仓了百分之三,账户回撤了千分之四。他没有做任何操作,系统在自动运行。
他又打开晨枫快餐的管理系统,看了一眼今天的数据。第一家店营收六千八,第二家店营收五千三,合计一万二千一。加上会员充值的三千二,总流水一万五出头。这是工作日的正常水平,周末会再高一些。
两家店的月营收稳定在二十八万左右,净利润十五万到十六万之间。回本周期在六到七个月。第三家店如果开起来,净利润可以冲到二十万以上。
但他不急着开第三家店。第二家店才运营两个月,流程还没有完全跑通。阿伟的出菜速度还在提升中,周小敏的前厅管理刚上手,小宇还在学习阶段。贸然开第三家店,不是扩张,是稀释。
他关掉了手机,关了灯,走出书房。客厅里苏婉在沙发上看手机,乐乐已经睡了。
小宇这孩子还行。林晨在沙发上坐下来。
你喜欢他的什么?苏婉问。
他能看出系统界面有问题。只看了三天。
苏婉笑了一下。像你。
不像我。他比我更会说。
那也好。苏婉把手机放下,会说的人,做不了技术,但做得了管理。
林晨没有接话。他想起了林浩刚到深圳的时候,那时候林浩话更少,每天就是在厨房里切菜、炒菜、擦灶台。现在林浩能管两家店的出菜、能做菜品研发、能培养副厨。变化不是一夜之间发生的,是日复一日做出来的。
小宇也会变。三个月之后他可能还是那个看不出眉目的年轻人,也可能变成一个能管前厅、能看数据、能提问题的人。这取决于他自己。
林晨不打算替他决定什么。他能做的是给一个机会,剩下的靠小宇自己走。
客厅的灯暗了。苏婉去卧室了,林晨在沙发上坐了一会儿,然后也站起来往卧室走。
路过书房门口的时候他停了一下。书房里的电脑屏幕还亮着,投资系统的实时行情在上面跳动。他走进去把屏幕关了。
客厅外面很安静。鹏城湾的夜从窗户透进来,远处有几盏灯还亮着。楼下保安室的灯也是亮的。这个城市的灯永远不全部熄灭,总有人在加班、在赶路、在准备明天的备料。
林晨回到卧室,苏婉已经睡了。他把手机放在床头柜上,看到了家庭群里的最后一条消息。是林浩发的,只有两个字:谢谢。
那是林浩在群里说的第一句话。
林晨看完之后把手机翻过来扣在柜子上,闭了眼。明天早上五点半,林浩会准时起来备料。七点开门,十一点迎来午高峰,下午两点半收午市,五点备晚市的料,十点打烊。每一天都是这样。
每一天都是这样,但每一天都不一样。第一家店是这样开起来的,第二家店也是这样开起来的。第三家店、第四家店、第五家店,都会是这样开起来的。一个人接着一个人,一家店接着一家店,一步一步走。
过年的时候林晨一家回了趟老家。
腊月二十九开车出发,高速上堵了两个小时,乐乐在后排睡着了,苏婉靠在副驾驶上闭眼休息。林晨握着方向盘,看着前面一串红色的尾灯,把车速压到三十迈,一格一格地往前挪。到了县城已经是傍晚,天黑透了,路灯照着路两边贴了春联的门面。
老家还是那个样子。镇上的主干道新铺了柏油,但两边的店铺换了招牌,以前卖五金的改成了奶茶店,以前卖农资的改成了快递站。林晨家的老房子在镇子东头,三层自建房,外墙瓷砖是十几年前贴的,有几块掉了,露出灰色的水泥。
他妈站在门口等。穿了件新棉袄,深红色的,袖口还带着标签上的线头。看到车开过来,她往前走了两步,又停住了。乐乐从车上跳下来喊奶奶,她蹲下去抱了一下,手在乐乐背上拍了两下,站起来的时候眼眶红了一圈。
年夜饭是林晨他妈做的,六菜一汤,鱼是必须有的,年年有余。林枫比他们早到了一天,坐在客厅里泡茶,他爸坐在旁边看电视,声音开得很大。林浩没回来,他在店里盯除夕的晚餐档,下午发了条消息说过年好,配了一张厨房的照片,灶台上火光通红。
吃饭的时候亲戚来了几个。二叔端着一箱酒进门,大伯家的堂姐带了孩子过来,三婶拎了一袋自己灌的香肠。八个人挤在客厅的圆桌旁边,椅子不够,从厨房搬了两把塑料凳。
二叔倒了杯酒,举起来对着林晨说:林家出息了。你在大厂当总监,浩子在深圳开了店,枫子也全职干了。你爸你妈以前在镇上,谁能想到两兄弟在外面都立住了。
林晨端起杯子碰了一下,没多说话。
堂姐在旁边接了一句:晨哥现在年薪过百万了吧?上次听我妈说的。
没那么多。林晨说。
谦虚了。二叔又喝了一口,你们家这一房,在镇上没人不竖大拇指的。浩子那个店,我上次去深圳还去吃了一回,味道确实好。
他妈在旁边笑了一下,没接话。她给每个人的碗里夹菜,乐乐的碗里堆了最高,鱼、虾、排骨,每样都夹了两块。乐乐扒拉了一下碗里的菜,皱了一下鼻子,小声跟苏婉说:妈妈,奶奶给我夹太多了。苏婉轻轻拍了他一下,让他别说话,好好吃。
吃完饭二叔和堂姐他们走了,屋里安静下来。林晨帮他妈收碗,他妈把剩菜分成几盒放冰箱,动作利索,跟在店里收拾收盘子似的。她洗碗的时候林晨站在旁边擦碗,跟在店里一样。
妈,你棉袄是新买的?
你寄回来的钱买的。他妈手上的碗没停,你爸那件也是。
林晨嗯了一声,把擦好的碗放进碗柜里。
他妈把最后一个碗洗完,关了水龙头,站在水池前面没动。她看了一眼窗外,镇上的路灯亮着,远处有人放烟花,红的绿的在天上炸开。她把围裙解下来,走到阳台上站了一会儿,看烟花看了两分钟,才回来关灯睡觉。
林家的人,从老家的县城走到深圳的科技园,走了两代人。林枫管了十几年的工地,林浩在东莞的流水线上干了两年,林旭在广州的小公司做了几年销售。他们不是一步登天的,他们是一步一步走到现在的。
家族的荣耀不是什么了不起的大事。它就是一家店一家店地开,一个人一个人地带,一道菜一道菜地炒。然后回头看的时候,发现已经走了这么远了。
第351章 书籍出版
书是在四月底上架的。
那天是个周四,林晨在t厂开完部门周会回到工位,手机上多了一条微信消息。周敏发来的:林晨,书已经上架了,京东、当当、天猫都有。ISbN和链接我发你邮箱了。
他点开邮件看了一眼,链接、书号、封面图,一应俱全。他把链接复制到浏览器,打开京东的页面。白底封面,35岁程序员的AI逆袭几个黑字印在正中间,下面是他的名字。页面右侧有购买按钮,底下已经有两条评论,一条是出版社的编辑发的,一条是一个读者发的,只有四个字:期待已久。
林晨看了两秒,关掉页面,继续处理工作邮件。
苏婉在网上下了三单。一本寄到家里,一本寄到她学校,一本寄到林晨的t厂。三天后快递到了,她拆开家里的那本,翻了两页,合上,放在茶几上。跟上次一样,封面朝上。她没有拍照,没有发朋友圈,只是把书放好,然后去厨房洗菜了。
林晨下班回来看到茶几上的书,拿起来翻了翻。书比他想的薄,排版之后不到两百页。他翻开目录,从到第一份AI工作投资系统开一家快餐店,章节标题跟他备忘录里写的一模一样,只是编辑把几个措辞改得更规范了一些。他又翻到关于失业那一段,那段他写了很久的文字,印在纸上只有五行。他看了两遍,合上书,放回茶几。
苏婉端着一盘菜从厨房出来,看了他一眼:看了?
看了。
怎么样?
还行。
苏婉笑了一下,没追问。她了解林晨说是什么意思——不是不好,是他永远觉得可以更好。
上架第一天,林晨没有看销量数据。他不知道去哪里看。周敏发了一张图到微信上,是一个折线图,上架24小时的销量曲线。起点是零,到晚上十一点的时候停在一千四百本。林晨看了一眼这个数字,没有概念。一千四百本算多还是算少,他不知道。
周敏在图下面发了一条消息:首日1400本,超过预期了。技术类新书首日一般只有几百本。
林晨回了一个。
第二天,一千八百本。第三天,两千三百本。第四天是周五,两千九百本。周末两天数据跳了一下,周六四千一,周日三千六。周敏说周末的数据通常会高一些,因为技术人群的阅读习惯偏周末。
林晨没有每天盯着数据看。他在t厂有工作要做,晨枫快餐的月度数据要看,投资系统的日常监控不能停。书卖多卖少不是他能控制的事,他只管写完了,剩下的交给出版社。
但赵刚不这么想。
赵刚在训练营的钉钉群里发了一条消息:林总的书上架了!大家去支持一下!后面附了京东和当当的链接。
群里一下子炸了。
林总出书了?!就是那个《35岁程序员的AI逆袭》吗?我前天在知乎上看到的!已经买了,等快递到。林总牛逼!必须买,林总的经验值这个价。
林晨在群里看到了,发了一条:书的链接不要在群里推,想看的自己去找。训练营是训练营,书是书。
群里安静了几秒。赵刚回了一个,其他人也跟着回了。林晨把群消息设成免打扰,继续处理t厂的工作。
上架一周的时候,周敏打了一个电话过来。
林晨,有个好消息。周敏的声音比平时高了半个调,上架一周卖了本。
林晨手里正端着咖啡杯,听到这个数字的时候停了一下。
一万本?
对,一万出头。这个数据在技术类新书里非常少见。一般技术类新书首月能卖三千本就算不错了,你一周就破万了。
林晨没有说话。他把咖啡杯放在桌上,靠在椅背上想了一会儿。一万本意味着有一万个人在看他写的东西。一万个人里有的是程序员,有的是想转行的中年人,有的是在校学生,有的是刚被裁员正在焦虑的人。他们会看到他被裁那天在地铁上手心出汗的画面,会看到他学python时pandas的groupby花了三个小时才弄懂的记录,会看到他面试前一晚在阳台上抽了四根烟的那个段落。
现在京东技术类新书畅销榜排名第七。周敏继续说,当当那边排名第十二。两个平台的评分都是4.8以上。评论里提到最多的是和两个词。
林晨了一声。
周敏等了几秒,以为他会说点什么,但林晨只是嗯了一声,没有其他反应。她笑了:你不激动吗?
写了就写了,卖多少是市场的事。
行吧。周敏的语气带着一点无奈,我把详细的销售报告发你邮箱。另外,有几家媒体想做采访,你要不要考虑一下?
采访不做。林晨说。他之前拒绝过科技媒体的采访,这次也一样。训练营是免费的,书也不是为了出名。如果有人看了书觉得有帮助,那是书本身的作用,不是我的作用。
周敏没有再坚持。好,我替你推了。
挂了电话之后,林晨在工位上坐了一会儿。窗外鹏城cbd的天际线在午后的阳光里泛着白光,远处几栋写字楼的玻璃幕墙反射着太阳。他看了一眼时间,下午两点十五分。FinGpt v4的训练任务在后台跑着,进度条显示78%。他切回代码窗口,继续写特征工程的逻辑。
但一万本这个数字在他脑子里没有马上走掉。
周末林晨去晨枫快餐南区店看了一圈。
中午的翻台率四点三,比上周高了零点二。林浩在厨房里炒菜,灶台前面油烟翻滚,他左手颠锅,右手拿勺舀调料,动作快得像在写代码——不,比写代码快多了。林浩的代码写得不好,但他的菜炒得好。每个人有每个人擅长的事。
周小敏在前厅忙得脚不沾地。午高峰的时候她一个人管八张桌子,点单、上菜、收台、结账,节奏比地铁换乘还紧凑。她穿着黑色的工作服,头发扎成马尾,在桌椅之间穿行的时候步子又快又稳,像一个在跑道上跑了很久的人。
小宇在收银台后面帮忙处理外卖订单。他来了快两周了,前厅的流程已经基本熟悉,点单系统的操作比周小敏还快——毕竟他学计算机的,ipad上的界面操作对他来说没有门槛。但他处理客人投诉的时候还是太年轻了,有客人说菜上慢了,他第一反应是解释而不是道歉。周小敏在旁边看他处理了两次,第三次他正要开口解释的时候,周小敏在旁边轻声说了一句:先道歉,再解释。
小宇顿了一下,然后对客人说:不好意思,让您久等了。客人脸色缓和了,小宇松了口气,回头看了周小敏一眼。周小敏没有看他,已经在收拾旁边那桌的碗筷了。
林晨站在门口看了一会儿,没有进去打扰。他站在门外的人行道上,透过玻璃看厨房里林浩的背影、前厅周小敏穿梭的身影、收银台后面小宇操作ipad的样子。三个人的节奏在中午的高峰期咬合在一起,像一个运行中的系统,每个模块在各自的时间片里完成各自的任务,最后在出餐口汇合。
他看了一会儿,掏出手机在备忘录上记了一行:小宇——客人投诉处理需要加强,建议周小敏单独培训。
然后他走进店里,在角落找了个位置坐下来。
林浩从厨房里探出头来,看到他,喊了一声:哥,你来了。吃点什么?
随便来一份。
林浩缩回去了,三分钟后端了一碗酸菜鱼出来。鱼片切得薄厚均匀,汤面上漂着红油和香菜,热气裹着酸辣味冲上来。林晨夹了一块鱼肉,嚼了两口。味道跟以前一样稳定,甚至比上次来的时候更入味了一点。
汤底调了?林晨问。
加了一点点陈皮。林浩说完就回了厨房,午高峰还没结束,他走的时候顺手擦了一把灶台边上的油渍。
林晨把酸菜鱼吃完了,碗底的汤也喝了大半。他放下筷子,看了一眼手机。钉钉群里有几条新消息,他扫了一眼,没有需要立刻回复的。微信上有一条周敏发的消息,是京东技术类畅销榜的截图,排名已经从第七升到了第四。
他看了两秒,把手机放回桌上。
周一上班的时候,陈铭走过来在他工位旁边站了一下。
你出书了?陈铭手里拿着一杯美式,靠在隔板上。
你怎么知道的?
知乎上在讨论。有人贴了链接,说是t厂某个总监写的。虽然用的是化名,但时间线对得上。陈铭笑了一下,35岁被裁,9个月自学AI转型,现在在大厂做部门总监。全鹏城能对上这个描述的没几个人。
林晨没有接话。他在书里用了化名处理,公司名和项目名都换了。但时间线确实没法完全模糊,写的是他自己的经历,总有一些痕迹能对得上。
写得怎么样?陈铭问。
一般。
陈铭笑了一下,没有追问。他看了一眼林晨屏幕上正在跑的训练日志,说了句FinGpt v4跑完了吗就回自己工位了。
但这件事在t厂内部传开了。不是大范围的那种,是那种技术圈子里口口相传的方式。有人在内网的匿名区发了一个帖子,标题是推荐一本书《35岁程序员的AI逆袭》,帖子下面有二十几条回复,大部分人说买了或者准备买,有两条回复说书里的经历跟咱公司某个大佬好像啊,然后被管理员删了。
林晨没有去看那个帖子。是张雨告诉他的。
林总,内网有人推荐你的书。张雨在钉钉上给他发了一条消息。
我知道了。不用管。
好的。张雨没有再说什么。她最近在帮林晨处理FinGpt v4的数据清洗工作,每天要在标注平台上盯六个小时。她比林晨小六岁,做事比林晨还细,标注错误的召回率能做到百分之九十五以上。林晨有时候觉得她比他更适合做质量把控,他看数据看的是趋势,她看数据看的是每一个异常点。
上架第二周,书的销量继续涨。
周敏发来了新的数据:累计销量一万八千本。京东技术类畅销榜排名第三,当当网总榜排名第四十七。评论数从几条涨到了两百多条,评分稳定在4.8分。
林晨看了一下评论区的长评。有一条评论他看了两遍:
我今年33岁,上个月刚被裁员。拿到离职协议的时候手在发抖,跟书里第一章写的一模一样。我本来想直接翻到后面看成功经验的,但看了第一章就走不动了。他写的不是成功经验,是一个人在最差的时候还愿意站起来走的那几步路。我现在就在走那几步。
还有一条:
书里关于学AI的章节是我见过最实用的。没有一句废话,全是步骤和细节。pandas的groupby花了三个小时才弄懂那段我看了三遍,因为我也花了三个小时。
再往下翻,有一条只有两行字的评论:
买给我老公看的。他35岁,被裁了三个月,每天在家不说话。我不知道书里写了什么,但他看完之后开始学python了。谢谢作者。
林晨看完这条评论,把手机屏幕锁了。
他坐在书房的椅子上,看着窗外。小区楼下有人在遛狗,跟上周一样,那个人每天下午四点都准时出现。远处的鹏城湾在夕阳下发着光,几栋高楼的影子拉得很长。
苏婉推门进来,手里拿着一杯水。
在看评论?苏婉把水放在他手边。
哪条让你看了两遍?
林晨没有回答。他把手机放在桌上,端起水杯喝了一口。苏婉没有追问,她走到书架旁边,从最上面那层把那本书拿下来。书脊朝外,跟其他书挤在一起,不仔细看分不出来是哪本。
你知道这本书最值钱的地方是什么吗?苏婉把书放回去,转过来看着他。
什么?
不是技术。技术三年就过时了。苏婉靠在书架边上,是你写被裁之后那四十分钟的那句话。你在沙发上坐了四十分钟什么也没做。这句话会让每一个被裁的人觉得他不是一个人。
林晨想了一下。他没有说对或者不对。他端着水杯看了一眼窗外,夕阳已经快落下去了,鹏城湾的水面从金色变成暗灰色,远处的几栋写字楼开始亮灯。
他想起自己在地铁上攥着离职协议的那个下午。手心是湿的,纸角被攥出了褶皱。如果当时有人递给他一本这样的书,他会在地铁上翻开吗?他不确定。也许会,也许不会。但至少那本书会在他手里,而不是在某个书架的角落里积灰。
一万个人买了这本书。一万个人里有多少人正在经历他当年经历的事,他不知道。但他知道,如果其中哪怕只有一个人因为这本书开始写第一行代码,或者在被裁之后的第一个周末没有在沙发上坐四十分钟什么都不做,那这本书就不是白写的。
他放下水杯,打开电脑。FinGpt v4的训练进度到了92%。他切回代码窗口,继续写。
书房里很安静。键盘的敲击声一下一下地响着,跟窗外远处的车流声混在一起。苏婉走出了书房,轻轻把门带上。客厅里传来乐乐在拼积木的声音,积木块碰到一起发出细碎的咔哒声。
林晨敲了一会儿代码,停下来,在备忘录上记了一行字:书的版税问一下周敏,如果到账了,捐一部分给训练营做助教补贴。
然后他继续写代码。
那天晚上,林晨在书房里关掉电脑之后,看了一眼手机。知乎上关于这本书的讨论帖已经有三千多条回复了。有人分析书里的技术路线图,有人讨论三十五岁到底算不算晚,有人分享了类似的转型经历。帖子下面还有人贴了训练营的链接,不知道是谁发的,不是赵刚,也不是林晨。
他把手机放下,走出了书房。客厅里苏婉在沙发上翻手机,乐乐已经睡了。茶几上那本书还在原来的位置,封面朝上,旁边压着苏婉的茶杯。
林晨在苏婉旁边坐下来,拿起遥控器换了两个台,停在一个新闻频道上,画面里是某个城市的夜景,霓虹灯在水面上倒映出一片彩色。
版税到账了你知道吗?苏婉说。
还没。
周敏发消息说快了。按一万八千本的销量算,版税大概十几万。
林晨嗯了一声。
你打算怎么用?
捐一部分给训练营做助教补贴。剩下的存着。
苏婉没有接话。她知道林晨不会把版税当成收入来依赖。跟投资收益和t厂的工资比,版税只是一个小数字。但这个数字的意义不在于大小,在于它是一万个人用真金白银投的票。
电视上的新闻换了一条,讲的是AI行业的人才缺口。主持人说,未来五年AI相关岗位的需求量将达到两百万,但目前市场上的合格人才不足五十万。画面切到一个程序员在电脑前写代码的背影,灯光照在键盘上,手指在敲击。
林晨看了两秒,换了一个台。
他放下遥控器,靠在沙发背上。脑子里在想明天t厂要开的部门会,FinGpt v4的训练跑完之后要做的模型评估,晨枫快餐这个月的利润趋势是往上还是持平,小宇的第二周学习进度怎么样。这些事一件一件排着队,跟代码里的函数调用一样,按顺序执行,不能跳过,也不能并发。
苏婉把手机放下,看了一眼茶几上那本书。
你有没有想过,这本书会改变什么?
不会改变什么。林晨说。一本书改变不了什么。它只是让一些人知道,有人走过这条路。走不走还是自己的事。
苏婉没有反驳。她把茶杯端起来喝了一口,茶叶已经泡得没有味道了。她站起来去厨房倒掉茶渣,重新泡了一杯。
林晨看着她走向厨房的背影,想起了两年多前他刚被裁的时候。那时候他们也是坐在客厅里,他看着苏婉的背影在厨房里忙碌,手边放着一杯已经凉透了的茶。现在的茶几上也有茶杯,但茶是新的,杯子是温的。他站起来,走到书房门口,回头看了一眼茶几上那本书的封面。
35岁程序员的AI逆袭。
七个黑字印在白底上,没有图案,没有腰封,干干净净的。跟他的人一样。
他关了书房的灯,走进卧室。苏婉已经躺下了,侧身看着手机屏幕。他在她旁边躺下来,闭上眼睛。
明天早上六点半的闹钟。t厂的部门会九点开始。晨枫快餐的午市数据下午两点推送。FinGpt v4的训练预计明天下午跑完。小宇的前厅培训第三周明天开始。训练营第三期的报名链接还没发。
日程表排得满满的,但他知道明天会有一件新的事:周敏说有两家出版社发来了合作邀请,想谈第二本书的方向。
他没有立刻回复周敏的消息。他翻了个身,把手机放在床头柜上。屏幕暗下去之前,他看到了微信上的一条新消息提醒。
是一个陌生头像,备注名是一串他不认识的字。消息只有一行:
林总,我看了你的书。我现在32岁,刚被裁。我能加入你的训练营吗?
第352章 读者反馈
周敏是在周五下午发的邮件。
邮件标题写着读者来信整理(第一批),正文只有三行字:林晨,书上市三周了,陆续收到不少读者来信。我挑了一些有代表性的整理在附件里,你有空看看。另外,深圳书城那边有初步接触,我下周再跟你聊。
林晨点开附件。一个pdF文件,二十三页,每一页是一封读者来信的扫描件或者截图。有些是手写的,字迹歪歪扭扭;有些是打字打的,格式工整;还有几条是从京东评论区截下来的长评。
他本来打算扫一眼就关掉,但看完了第一封之后停不下来了。
第一封信是一个三十四岁的男人写的。他自称姓陈,在深圳一家中型互联网公司做后端开发,去年公司裁员被优化了。信写得很长,有四页,但核心内容只有几句话:他被裁之后投了八十多份简历,只收到两个面试邀请,都没过。他在家里躺了两个月,每天刷招聘网站刷到凌晨三点,越刷越焦虑。后来在京东上看到林晨的书,买回来一个晚上看完,第二天就开始学python。
你的书里有一段写你学pandas的groupby花了三个小时才弄懂。我以前觉得只有我这么笨,看了才知道不是。我现在学pandas也卡在groupby,但我知道这个坎是可以过去的,因为你过去过。
林晨看到这句话的时候,手指在鼠标上停了一下。他想起自己两年前坐在出租屋的桌前,对着屏幕上那行报错信息一遍一遍改代码的场景。那时候没有人告诉他这个坎可以过去。他是自己硬着头皮过去的。现在有人因为知道他过去过了这个坎,觉得自己也能过去。
这封信的最后一行写着:谢谢你让我知道我不是一个人。
林晨把这一页往下翻。
第二封信是一个二十七岁的女生写的。她在邮件里说自己是做运营的,不是程序员,但一直想转数据分析。她看了书之后报了一个线上课程,现在在学SqL。
你书里写面试前一晚在阳台上抽了四根烟。我面试的时候也紧张得要死,但我想你抽了四根烟也去了,我为什么不试试。我就去了,虽然没过,但至少我去了。
林晨看完这句话,把鼠标放下了。他靠在椅背上,看着屏幕上那封邮件。窗外的天已经暗了,鹏城cbd的写字楼亮着零散的灯。他坐了几秒,又拿起鼠标往下翻。
第三封是一个四十岁的男人写的。他做了十八年测试,去年被裁之后找不到工作。信不长,只有半页纸,最后一句是:我看了你的书,准备转方向。四十岁不晚吧?
林晨看着四十岁不晚吧这五个字,没有马上翻下一页。他想了一下,然后在这封邮件上标了一个星标。不是因为他要回复这封信——他没有打算回任何一封——而是因为他想记住这五个字。
第四封是一个刚毕业的年轻人写的。他说自己学历不好,双非本科,投了大厂简历全部石沉大海。他看了书之后没有转方向,而是开始重新整理自己的项目经验。
你书里写投了一百多份简历只收到三个面试。我之前觉得我投了五十份没回音是天要亡我,看完才明白这是正常概率。不是我不行,是这个阶段就是这样的。我现在还在投,投到第一百份之前我不会停。
第五封是一个三十六岁的女人写的。她是全职妈妈,之前做过三年行政,生完孩子之后一直在家。她看了书之后开始自学Excel的数据分析功能,准备重新找工作。
我不是程序员,你的书有一半我看不懂。但我看懂了你被裁之后坐在沙发上那四十分钟。我在家带孩子的三年里,每天都在沙发上坐四十分钟什么都不想做。你的书让我觉得这不是懒,是正常的。然后你站起来了,我也想试试站起来。
林晨看到沙发上那四十分钟的时候,手指在键盘上停了一下。那段话他写的时候犹豫了很久要不要写。苏婉看完之后说这段好,他才留了下来。他没想到,整本书里被引用最多的,不是AI学习路径,不是投资系统,不是面试技巧,而是他在沙发上坐了四十分钟那句话。
他把邮件往下翻。
第六封到第十五封的内容各有不同,但有一个共同的词反复出现:方向。
有人说看了你的书找到了方向,有人说你的经历让我重新看到了方向,还有人说方向比速度重要。最后一句话是他自己在签售会上写给一个读者的,但这个读者在来信里没有提签售会,说明他是在书里看到的——不对,书里没有这句话。林晨想了一下,才想起来这是他在签售会上写的,这个读者应该是在别的地方看到了这个引用。
第十六封是一张照片。一个中年男人拍了书的内页,在空白处写满了笔记。每一页的空白处都有字,有的地方写了两行,有的地方画了箭头,有的地方画了圈。照片只拍了一个对开页,但能看出整本书都被翻过了很多遍,书脊的折痕很深。
照片下面只有一行字:我把你的书当教材用。
林晨把这张照片看了两遍。他把书的内页写满笔记这件事不陌生——他自己以前看技术书的时候也会在空白处写批注。但他没有想到有人会这样对待他写的书。他写的不是教科书,是一个人的经历。但有人把它当教材用了。
第十七封是一个程序员写的,来自北京。他在信里说自己今年三十岁,在一家大厂做前端,最近部门要合并,他可能被转岗或者裁员。他看了书之后做了两件事:一是开始学python,二是把简历上的项目经验重新梳理了一遍。
你书里有一句话我记住了:不要等被裁了才想接下来做什么。我现在还没被裁,但我想提前做准备。谢谢你让我提前看到了这句话。
第十八封很短,只有三行:
林晨你好,我是一个产品经理,33岁,上海人。我看了你的书,没有马上开始学python。我想了很久,觉得问题不是学什么,而是我到底想做什么。你的书没有给我答案,但让我开始想这个问题了。谢谢。
林晨看完这封,在邮件上又标了一个星标。
他花了将近一个小时把二十三页的附件全部看完。看完之后他关掉邮件,坐在书房的椅子上没有动。
窗外鹏城的夜景铺展开来。远处的写字楼灯光稀稀落落,有几栋大楼还亮着,那是加班的人在赶项目。楼下小区的路灯照着人行道,有人遛狗经过,狗链子在地上拖出细碎的声响。
苏婉推门进来的时候,他正靠在椅背上盯着天花板。
在看什么?苏婉把一杯水放在他手边。
读者来信。周敏整理的。
多少封?
二十三封。
苏婉在旁边的椅子上坐下来。有让你看两遍的吗?
林晨想了一下。有三封。
哪三封?
一个四十岁做测试的被裁了,问晚不晚。一个全职妈妈,说看懂了沙发上的四十分钟。一个产品经理,说书没有给他答案,但让他开始想问题了。
苏婉没有接话。她端着水杯,看了一眼窗外,又看了一眼林晨。他脸上的表情跟平时没什么区别,但他的右手放在扶手上,手指在轻轻地敲。
她认识他太久了。他的手指在扶手上敲,说明他在想事情。不是焦虑,不是兴奋,是在想。她没有追问他在想什么,她把水杯放在桌上,站起来走了两步,又停住。
你打算回吗?
不回。
为什么?
不知道回什么。每封信都是别人的故事,我不应该去评价别人的故事。
苏婉想了一下。你可以不评价。你就告诉他们你看到了。
林晨没有立刻回答。他看了一眼桌上的水杯,端起来喝了一口。水已经有点凉了。
再想想。他说。
苏婉嗯了一声,走出书房。走到门口的时候她停了一下,但没有回头,轻声说了一句:沙发上四十分钟那段,你现在知道为什么要留了吧?
她走了。书房的门半开着,客厅里传来乐乐在拼积木的声音。林晨放下水杯,看了一眼电脑屏幕上已经关闭的邮件窗口。苏婉说的是对的。他当时犹豫要不要写那段,是因为觉得那是他最差的时候。但读者看那段不是在看他的差,是在看自己的差有人也经历过。
他没有打开邮件重新看。他把椅子转向窗户,看了一会儿鹏城的夜景。远处有一栋写字楼的二十三层还亮着灯,他以前也是那栋楼里加班的人之一。现在他不是了,但那层灯还是亮着的,换了别的加班的人。
周六上午,林晨去了南区店。
午市之前他照例看了一眼数据看板。翻台率四点五,比上周又高了零点二。周小敏在前厅跟小宇交代午市的注意事项,小宇在旁边拿ipad记。他的前厅培训已经进入第三周了,现在能独立处理大部分的客人点单和结账,但复杂的情况还是需要周小敏在旁边。
林浩在厨房里备料,灶台上已经码好了中午要用的配菜。林晨站在厨房门口看了一会儿,林浩的刀法比半年前又快了,切土豆丝的速度跟机器差不多,每一根的粗细几乎一样。
浩哥,今天中午备了多少份?林晨问。
一百二十份。昨天是一百一十五,今天多备了五份。林浩头也没抬,手里的刀继续在砧板上走。
备量够了。午市开始了我再来看。
林晨走出后厨,在店里绕了一圈。中午的阳光透过玻璃门照进来,地板上有一块亮斑。墙上的会员二维码贴纸被周小敏擦过,看起来比上个月新了一些。收银台旁边的展示架上摆着本周新推的套餐,价格和菜品名都写得清楚。
他走到门口,掏出手机看了一眼。微信上有一条新的好友申请,备注写的是读者,看了你的书想请教你一个问题。他没有通过,也没有拒绝,把消息放回了通知列表。
周敏在微信上发了一条消息:那封读者来信你看了吗?有不少人说想跟你当面聊聊。深圳书城那边有初步意向,想办一场线下活动。我下周跟你细说。
林晨回了一个。
他锁了手机,走进店里找了个角落坐下来。午饭时间还没到,店里只有他一个客人。周小敏在前厅擦桌子,小宇在收银台后面整理菜单。林浩在厨房里切完了最后一盆配菜,开始炒中午的第一份预制底料。厨房的排风扇嗡嗡响着,油烟从排风口飘出去,融进深圳中午的热风里。
林晨坐在角落里,脑子里还在想昨晚看的那二十三封来信。他不是被那些感谢的话打动了——他不太会被这种东西打动。他被打动的是那些具体的细节。一个八十多份简历的人,一个在沙发上坐了四十分钟的全职妈妈,一个四十岁问晚不晚的测试工程师。这些人的处境他太熟悉了,因为两年前他也是他们中的一个。
他想到那个四十岁的测试工程师。四十岁做测试做了十八年,被裁之后不知道往哪里转。书里写的是他三十五岁从后端转AI的路径,但四十岁的人走不了同样的路。年龄、精力、学习能力、家庭压力,每一个因素都不一样。他在书里写的那条路是走通了的,但走通不意味着适合所有人。那个四十岁的人看了书之后决定转方向,但转什么方向、怎么转、能不能转成,这些他书里没有答案。
他想了一下那个产品经理的信。你的书没有给我答案,但让我开始想这个问题了。这句话他标了星标,因为他觉得这是他写这本书真正起到的作用。不是给答案,是让人开始想问题。
周六下午,小宇在收银台后面处理午市的外卖订单。午高峰刚过,他的额头上有一层薄汗,但整个人比两周前稳了很多。上周有个客人投诉上菜慢,他没有解释,先道了歉,然后去厨房催了菜。周小敏在旁边看着,没有插手。
小宇,今天午市的客诉有几条?林晨在角落里问了一句。
两条。一条是上菜慢,已经处理了。一条是菜品口味不对,我让厨房重新做了一份。小宇翻了一下ipad上的记录。
处理得怎么样?
上菜慢那条,我先道了歉,然后给客人加了一份小菜。客人走了之后留了个好评。口味那条,是客人点错了辣度,厨房按正常辣度做的。我跟客人解释了一下,客人说下次会注意。
林晨点了一下头。比两周前好多了。两周前他处理投诉的时候第一反应是解释,现在第一反应是先道歉再解决问题。周小敏那句话他记住了。
午市结束后,林浩从厨房里出来,坐在前厅的椅子上休息。他手里拿着一瓶水,一口气喝了大半瓶。林晨走过去,在他旁边坐下来。
哥,你的书卖得怎么样?林浩问了一句。
还行。
还行是多少?
上架三周,两万多本了。
林浩点了一下头。他对两万多本这个数字没有概念,但他知道书卖得好,因为赵刚在群里发了消息。他看了一下林晨的表情,没有继续问。
你看了吗?林晨问。
看了一点。林浩说,看到你写学python那段,groupby那个,我就没看下去了。那段我太熟了,你教过我。
林晨笑了一下。林浩不常笑,但这次笑得很自然。
后面的呢?
后面还没看。最近太忙了,两家店的备料表要重新调整,阿伟的出菜速度提了但品控还得盯。等忙完了再看。
林晨没有催他。林浩不是读书的人,他能翻一点就已经说明这本书写得不全是技术。他站起来,拍了拍林浩的肩膀,走进厨房看了一眼午市的备料情况。阿伟在清理灶台,看到林晨进来,点了一下头。灶台擦得很干净,跟林浩的标准一样。
林晨从后厨出来,在门口站了一会儿。周六下午的科技园中区,路上的人不多。对面那栋写字楼的底层咖啡厅坐了几个人,有人在用电脑,有人在打电话。深圳午后的阳光很烈,照在人行道上白晃晃的。
他掏出手机,打开邮件,又看了一眼那个四十岁测试工程师的来信。最后那句话:四十岁不晚吧?
他把手机收起来,没有回复。
周日上午,林晨在家里处理t厂的工作。FinGpt v4的训练跑完了,评估报告需要他逐项审核。他坐在书房里,左边屏幕是评估报告的图表,右边屏幕是钉钉群里训练营学员的提问。他一边看报告一边回消息,两边同时进行,像以前在t厂同时处理三个需求一样。
处理到一半的时候,微信上弹了一条新消息。不是周敏,是一个陌生号码,头像是一张风景照。
林老师您好,我是看了您的书的读者,今年32岁,上个月被裁员了。我看到书后面有训练营的联系方式,想问一下第三期还招人吗?
这条消息跟他之前收到的那条几乎一模一样。上次是微信,这次又是一个人。三十二岁,被裁,想加入训练营。
他看了一眼这条消息,没有立刻回复。不是不想回,是他在想怎么回。训练营是免费的,第三期的报名还没开始,赵刚在做前期准备。但第三期能招多少人、什么时间开班、线上还是线下,这些都还没有定。
他想了一会儿,打了一段话发过去:第三期正在筹备中,具体时间还没定。你可以先关注钉钉群的公告,报名链接会在群里发。你是做什么方向的?
对方秒回:我是做运维的,干了四年,技术栈比较杂但都不精。最近在学python,跟着您的书学的。
林晨回了一句:先学基础。groupby那个坎多写几遍就过去了。
对方发了一个和一个加油的表情。
林晨把对话框关了。他靠在椅背上,看了一眼窗外。乐乐在客厅里写作业,铅笔在纸上沙沙地响。苏婉在厨房里洗菜,水龙头哗哗地流着。
他打开备忘录,在上面的文件夹下面记了两行:
第三期训练营,32岁运维,被裁一个月。 40岁测试,十八年经验,问晚不晚。
他把备忘录锁了。这两个人的信息他不一定会再打开看,但他想记下来。不是为了回复他们,是为了记住这些人是真的存在的。
周一上午在t厂开完部门会之后,张雨走过来问他:林总,您最近有没有时间?有几个模型调优的问题想跟您讨论一下。
下午三点。
好的。张雨拿着ipad走了。
林晨看着她的背影想了一下。张雨比他小六岁,做事比他细,数据标注的召回率能做到95%以上。她在t厂的发展路径是清晰的技术路线,不需要转型,不需要重新开始。但那二十三封信里的人不一样。他们的路径断了,或者从来没有清晰过。他写的那本书不是给张雨看的,是给那些路径断了的人看的。
他回到工位上,打开周敏发来的邮件,从头到尾又看了一遍。
这次他注意到几封之前没细看的信。有一封是一个在校研究生写的,说自己在学术方向和工业方向之间犹豫,看了书之后决定先去工业界实习试试。还有一封是一个四十五岁的项目经理写的,说他没有被裁,但一直在做重复的工作,看了书之后开始反思自己是不是也需要,不是转行业,而是转思维方式。
林晨看到转思维方式这几个字,停了一下。他写书的时候没有想过这本书会影响到一个四十五岁没有被裁的人。他以为读者都是跟他一样的人——被裁了、迷茫了、需要一条路。但看来这本书的读者比他想的更广。不只是程序员,不只是被裁的人,不只是想转AI方向的人。还有一些人只是在工作中遇到了瓶颈,在生活里走到了一个十字路口,需要一个声音告诉他们有人走过这条路。
他关掉邮件,打开投资系统的后台看了一眼今天的策略运行情况。A股小幅高开,系统自动加仓了2%,组合的日收益0.3%,符合预期。他关掉后台,切回t厂的代码编辑器,继续写特征工程的逻辑。
下午三点,张雨准时来讨论模型调优的问题。两个人在会议室里讨论了四十分钟,从学习率调整到正则化参数,最后确定了一套新的调优方案。张雨走的时候说了一句:林总,您的书我买了,还没看完,但前几章写得挺好的。
你不需要看。林晨说。
为什么?
你的路没有断。
张雨想了一下,点了一下头,拿着ipad走了。
晚上回到家,林晨在书房里坐着,没有开电脑。茶几上那本书还在原来的位置,白底黑字,封面朝上。苏婉在客厅里陪乐乐下棋,偶尔传来棋子落在棋盘上的声音。
他走进客厅,在沙发上坐下来。苏婉抬头看了他一眼。
那二十三封信看完了?
看完了。
有什么感觉?
林晨想了一下。觉得值得。
苏婉没有追问什么值得。她把棋子放下,看了一眼棋盘上乐乐摆的阵势,说:你的马被我吃了。
乐乐低头一看,发现马真的没了,皱了一下眉头。
苏婉站起来走到林晨旁边,在沙发上坐下来。她没有看林晨,看着棋盘说了一句:值得就好。
客厅里安静了几秒。乐乐在棋盘上走了一步,嘴里念叨着什么。苏婉靠在沙发上,手指在膝盖上轻轻敲了两下。
林晨看了一眼茶几上那本书。他想起那个在书页空白处写满笔记的人,想起那个四十岁问晚不晚的测试工程师,想起那个全职妈妈说看懂了沙发上的四十分钟。他想起自己在地铁上攥着离职协议的那个下午,想起在沙发上坐了四十分钟什么都没做的那个周末。那些画面现在不只是一段记忆了。它们被印在纸上,被一万多个人读过了,被一些人记住了,被一些人引用了,被一些人写在信里寄回来了。
他写的不是一本书。他写的是一个坐标系,让那些在相同坐标上的人知道自己不是一个人。
苏婉看了一眼他的侧脸,没有再说什么。她站起来去了厨房,过了一会儿端了两杯水出来,一杯放在林晨手边,一杯端回沙发。林晨拿起水杯喝了一口,看了一眼手机。周敏又发了一条消息:
深圳书城那边确认了,下周可以电话聊。他们想办一场签售会,读者见面会的形式。时间在六月第一个周六,场地他们出。你看一下有没有时间。
林晨看着这条消息想了一会儿。签售会。他要坐在一张桌子后面,给一个一个人签名。他不知道自己能不能跟那些人说什么有用的话。但他想起那个在扉页上写我也是35岁被裁的的年轻人,想起那个替儿子来拿签名的阿姨,想起那个四十岁问晚不晚的测试工程师。这些人读了书还不够,他们想来见他。
他给周敏回了两个字:有时间。
然后他放下手机,在沙发上靠了一会儿。窗外的路灯亮了,鹏城湾的水面在远处反射着灯光。楼下有人骑电动车经过,电机嗡嗡的声音在夜里听得很清楚。
苏婉在旁边看手机,忽然说了一句:你知道你这本书最值钱的地方是什么吗?
林晨转过头看她。上次她也问过同样的问题。上次他问了,她说是你写被裁之后那四十分钟的那句话。
这次他没有问。他等苏婉自己说。
苏婉没有重复上次的话。她换了一句:不是你写了什么。是你没有写的那些。
林晨想了一下。没有写的?
你没有写鸡汤,没有写方法论,没有写只要努力就能成功。你写的是你踩过的坑、犯过的错、走过的弯路。那些东西才是读者想看的。因为他们也在踩坑、犯错、走弯路。你写了自己最差的时候,他们才相信你后面写的那些。
林晨没有说话。他想起了苏婉在书稿阶段说的那些话。他说这段太干了,她就让他加细节。她说这段太顺了,他就回去加波折。她说看不懂,他就换个说法。书能写成现在的样子,苏婉的功劳至少占一半。
但他没有说这句话。有些话不用说。
乐乐下完了棋,跑过来说他赢了。苏婉看了一眼棋盘,说她让了三个子。乐乐说让了也是赢,苏婉笑了一下,去厨房做饭了。
林晨在沙发上坐了一会儿,拿起手机看了一眼时间。晚上七点一刻。他站起来走进书房,打开电脑。FinGpt v4的评估报告还差最后一部分没有看完,明天要跟张雨确认调优方案的细节。晨枫快餐这个月的利润数据还要再过一遍。训练营第三期的报名链接还没有做。
日程表排得满满的,但他知道下周会多一件事:跟深圳书城的人电话聊签售会的事。
他打开评估报告,继续看。
书房里很安静。键盘的敲击声一下一下地响着,跟窗外远处的车流声混在一起。客厅里传来乐乐拼积木的声音和苏婉做饭的锅铲声。茶几上那本书还在原来的位置,白底黑字,封面朝上。
一本书。二十三封来信。两万多个人买了这本书。他不知道他们每一个人的名字,但他知道他们每一个人都在找一条路。他写的不是地图,地图会过时。他写的是一个脚印,告诉后来的人:这里有人走过。
第353章 签售活动
周敏的电话是周三晚上打来的。
林晨,深圳书城想办一场签售会。下个月第一个周六,场地他们出,你出人就行。
林晨刚把乐乐哄上床,手机贴在耳朵上,另一只手还在帮乐乐掖被角。他走到客厅,在沙发上坐下来。
签售会?他重复了一下这个词,好像在确认自己听对了。
对。你这本书在技术类畅销榜上已经待了两周了,深圳书城那边主动来问的。他们说技术类图书能做到这个销量很少见,想做一场线下活动。
林晨想了一下。要做什么?
就坐在那,给读者签名。有人可能问你几句,你回答就行。场地布置、宣传、秩序维护,书城全包。你只要去。
我一个人去?
你可以带家属。签售会一般会安排两到三个小时,中间有休息。
林晨没有立刻答应。他看了一眼客厅的方向,苏婉在卧室里看手机,门缝透出一条细长的光。
我考虑一下。
周敏没有催他。你尽快给我回复,书城那边要排期。
挂了电话之后,林晨坐在沙发上想了一会儿。签售会这个词离他太远了,远到他从来没有想象过自己会跟它有关系。他是一个写代码的人,不是作家。写书是因为有人约稿,出了书是因为写完了就出了。他做这件事的逻辑跟他写FinGpt一样——有问题,解决,做完收工。至于书卖出去了多少本、在什么榜上排第几,他只看了一眼,没有再想。
但周敏说的读者想见你这句话,让他停了一下。
他想起了那条评论。买给我老公看的。他35岁,被裁了三个月,每天在家不说话。看完之后开始学python了。他还想起了那个给他发微信的32岁被裁的人。他最后加入了训练营第三期,在上周的线上答疑里问了一个关于数据清洗的问题,问得很具体,说明他已经开始动手写了。
这些人买了他的书,在他的书里看到了自己的影子。他们想见他,不是因为他是谁,而是因为他走过那条路,然后站住了。
他在沙发上坐了五分钟,然后走进卧室。
苏婉抬头看了他一眼。怎么了?
深圳书城想办一场签售会。
苏婉放下手机。你去不去?
你说了算。
苏婉笑了一下。什么叫我说了算。你自己想不想去?
林晨靠在床头想了两秒。有点不想。
为什么?
不知道跟人说什么。
苏婉把手机放在床头柜上,转过来看着他。你跟训练营两百多号人在线上说了三个月的话,到了线下反倒不知道说什么了?
林晨没有接话。
苏婉想了想,说:去吧。你不擅长说话,但你擅长回答问题。签售会不是让你演讲,是让你跟读者面对面。你该怎么回答就怎么回答,跟你在训练营答疑的时候一样。
林晨想了一下。训练营答疑他确实不紧张,因为问的人都是带着具体问题来的,他只需要把问题讲清楚就行。
苏婉嗯了一声,拿起手机继续看。林晨躺在床上,看了一眼天花板,然后给周敏回了一条消息:
签售会定在六月第一个周六,下午两点到五点。
周敏提前一周把流程发给了林晨。两点半开始签售,中间休息十五分钟,四点半结束。书城会准备两百本库存,不够的话现场调货。签售区在一楼大厅,座位排成两排,签售台后面是一张长桌和一把椅子,桌上摆一摞书和几支签字笔。背景板上印着书名和作者名,下面有一行小字:深圳书城·读者见面会。
林晨看完流程,把手机放下。
周六上午他照常去了晨枫快餐南区店。不是特意去看,是习惯。周六午市的客流比工作日多两成,林浩需要多备半成食材,周小敏要加排两张桌椅。林晨在店里站了一个小时,看了一眼出菜速度和翻台率,数据正常,就走了。
中午回家换了件衣服。他站在衣柜前看了一会儿,拿了一件深灰色的polo衫和一条深色的裤子。他不知道签售会该穿什么,但polo衫是他最常穿的衣服,领子不刻意,也不随意。苏婉从卧室出来看到他站在衣柜前面,走过去翻了一下他的衣柜。
穿那件藏青色的衬衫。苏婉指了指衣架左边那件。
不是太正式了?
签售会,稍微正式一点。你平时穿polo衫太随便了。
林晨把藏青色的衬衫拿下来,换上。苏婉站在旁边看了一眼,伸手把他领子翻出来的那一角摺好。
乐乐呢?
我妈去接了。今天周六,她在学校不用上课。
苏婉点了点头,去换衣服。她穿了一条深色的连衣裙,头发扎了一个低马尾。两个人出门前在门口碰了一下,苏婉看了他一眼,说了一句:走吧。
深圳书城在福田,从家里开车过去要二十分钟。
到了书城门口,林晨看到一楼大厅的入口处立了一块展板,上面印着他的书的封面和一句宣传语:35岁被裁,9个月自学AI转型——林晨读者见面会。展板旁边摆了两排围栏,围栏从入口一直延伸到大厅深处。围栏两侧有人排队,大约四五十人的样子。
林晨把车停在地下车库,跟苏婉一起从侧门进去。周敏已经在签售区等着了,她穿了一件白衬衫和一条西裤,手里拿着一份流程单。
来了?周敏看了一眼时间,两点十分,正好。两点半正式开始,你先在后台坐一会儿。
后台是一个小会议室,桌上摆了几瓶水和一盒纸巾。林晨坐下来,苏婉在他旁边坐下来。周敏把签售流程又说了一遍:先由书城的主持人做三分钟的开场,然后林晨说几句,接着开始签售。读者排队过来,每人可以签一本,想多签的看时间安排。
我说什么?林晨问。
周敏想了一下。随便说几句就行。感谢读者支持,分享一下写书的初衷。不用长,两三分钟。
林晨点了点头。他低头看了一眼桌面上的水杯,想了两秒。他没有准备稿子。他从来不做演讲稿,因为写代码不写稿,做分享不写稿,写书也不写大纲——他写书是按章节列提纲的,但那不叫稿,那叫结构。他脑子里有的是结构,没有的是修辞。
两点半,主持人上台了。一个三十岁左右的女主持人,穿着书城的工服,声音清亮。她拿着话筒做了简短的开场,介绍了书和作者,然后把话筒递给了林晨。
林晨站了起来。他走到签售台后面坐下来,面前摆着三支黑色签字笔和一摞书。话筒在桌上的支架上,他稍微调整了一下角度。
大家好。他开口了,声音比平时稍微低一点。我叫林晨。这本书写的是我自己的经历。没有什么特别想说的,就两点。第一,这本书不是鸡汤,该踩的坑我一个没少写。第二,书里写的方法不一定适合所有人,但至少是一条走通了的路。你们看了如果有用,我就很高兴了。谢谢。
他坐下来了。
台下安静了两秒,然后有人开始鼓掌。掌声不大,但持续了几秒。
签售正式开始了。
第一个走过来的是个年轻男人,二十五六岁的样子,穿着一件格子衬衫,手里拿着一本崭新的书。他把书翻开到扉页,递到林晨面前。
林老师,能帮我签个名吗?
叫我林晨就行。林晨接过书,在扉页上写了自己的名字。笔迹不算好看,但很清楚,一笔一画,跟写代码的风格一样,没有多余的笔画。
我是做后端的,在一家小公司干了三年,最近想转AI方向。看了你书里学python那段,我现在也在学。
学到哪了?
pandas刚看完,groupby那段卡了我两天。
林晨点了一下头。groupby是会卡,多写几遍就好了。别只看文档,拿一个实际的数据集自己跑。
年轻男人眼睛亮了一下。好的,谢谢!
他拿着书走了,后面的人往前挪了一步。
第二个人是个女人,三十岁出头,穿着一件灰色的西装外套,像是刚从公司赶过来的。她的书已经翻过了,有好几页折了角。
林晨老师,我特别想问您一个问题。她的声音有一点急,我今年三十一,做了五年产品经理,现在想转AI方向做数据分析。您觉得来得及吗?
林晨看着她,停了一秒。你做产品经理五年,数据分析应该不陌生。转行不是从零开始,你已经有基础了。别问来不来得及,先打开电脑写第一行代码。
女人愣了一下,然后点了点头。好。谢谢你。
林晨在扉页上签了名,把书递回去。女人接过去的时候手在书脊上停了一下,像是在想什么,然后她说了一句我会的,转身走了。
第三个人是个中年男人,四十岁上下,头发剪得很短,穿着一件洗得发白的polo衫。他把书放在桌上,没有翻开。
帮我签个名就行。他说。声音很平,没有表情。
林晨签了名,把书推回去。
中年男人拿起书,站了两秒没有走。然后他说了一句:我去年被裁的。三十八岁,做了十五年Java。
林晨抬头看了他一眼。
你的书我看了两遍。中年男人继续说,第一遍看完我躺在床上什么都没做。第二遍看完我打开电脑装了python。
然后呢?
现在在学。每天晚上学三个小时,学了两个星期了。
林晨点了一下头。两个星期还早。坚持三个月再看。
中年男人嘴角动了一下,没有笑出来,但他点了一下头。他拿着书走到一边,站在角落里翻了翻扉页上的签名,然后合上书,走了。
苏婉站在签售区旁边的过道上,看着一个一个读者走过来又走过去。她注意到排队的队伍比预想的长。周敏说准备了两百本库存,但排队的人已经有六七十个了,后面还有人陆续进来。书城的工作人员从仓库又搬了两箱书出来,码在签售台旁边。
林晨没有注意到队伍有多长。他面前始终有一个人站着,递书、签名、说话、离开,然后下一个人补上来。他签一本大约需要半分钟,如果对方多说几句就要一分钟。他一直保持着同样的节奏,签完一本抬头看下一个人,接过书,签字,递回去。有人跟他说谢谢,有人跟他握手,有人拍照,他都配合,但不会多做什么。
第三十个人的时候,他换了一支笔。原来的那支笔芯软了,签字的笔迹变粗了。他拿起第二支笔继续签。
第四十个人是一个戴眼镜的年轻人,看起来是学生。他递过来的书扉页上有两行手写的字:感谢林晨老师的书,让我在迷茫中看到了一条路。他请林晨在下面签名。
林晨看了一眼那两行字,签了自己的名字,然后在旁边加了一句:路是走出来的,不是看出来的。
年轻人看到那句话,眼睛睁大了一点。他连说了两声谢谢,拿着书走到旁边,翻开又看了一遍那句话。
第五十个人的时候,队伍还在延长。周敏走到林晨旁边,轻声问了一句:要不要休息一下?
林晨摇了摇头。不用。
苏婉从旁边递了一瓶水过来。林晨接过喝了一口,放在桌上,继续签。
下午三点半的时候,签售区外面的队伍拐了一个弯,从一楼大厅排到了门口。
书城的工作人员走过来跟周敏说了一句什么,周敏表情变了变,走到林晨旁边。
人比预想的多。周敏压低声音说,现在排队的大概有两百人了。库存可能不够。
林晨抬头看了一眼队伍。从签售台往远处看,人头攒动,围栏两侧全是人。有人拿着书排队,有人拿着手机在看,有几个人的书明显是旧的,翻痕很重,说明不是今天才买的。
库存还有多少?
大概还剩六十本。
够了就签,不够就只签自带的。
周敏点了一下头,去找书城的工作人员协调了。
林晨继续签。第五十一个人是个三十出头的男人,穿着一件深蓝色外套,手里拿着一本已经翻旧了的书,封面有些卷边。
这本书我买了两本。男人说,一本放家里看,一本放公司翻。公司那本已经被我翻烂了。
林晨看了他一眼,签了名。
我有个问题想问你。男人没有马上走,你现在还写代码吗?
当总监了还写?
当总监了更要写。不写代码的总监,带不了技术团队。
男人想了一下,点了一下头,拿着书走了。
后面一个是个年轻女孩,看起来刚毕业不久。她把书递过来的时候手有点抖。
林老师,我也在学AI,但我数学不好,看公式就头疼。你书里写你学数学的时候也很痛苦,我看了好多遍。
现在还头疼吗?
还是头疼。但我知道头疼是正常的了。她说这话的时候笑了一下,笑得有点不好意思。
林晨在扉页上签了名,然后写了一句:数学不好不是问题,不用数学的时候才是问题。
女孩接过书,看到那句话,站了三秒,然后鞠了一个躬,走了。
签售会原本安排到四点半结束,但队伍还在延长。周敏跟书城的人商量了一下,决定延长到五点。
林晨从两点半签到了四点半,签了八十多本。他的右手食指和中指之间夹笔的位置已经开始有点酸了,但他没有停。每签一本他都会看一眼对方,听对方说一句话,然后签字。有些人签完就走了,有些人会多聊几句,有些人什么也不说,只是把书递过来,签完拿走。他都对得上来,没有漏掉任何人。
第一百个人走过来的时候,林晨换了第三支笔。
第五十个之后的人开始出现一种变化。
前面的人大多是技术圈的——程序员、产品经理、数据分析师,问的问题都很具体,什么框架好学、什么模型入门快、转行有没有年龄门槛。但从五十几号开始,队伍里出现了一些不像技术圈的人。
有个四十多岁的女人,穿着一件碎花衬衫,手里拿着一本塑料袋包着的书,书角还用透明胶粘过。她走到签售台前面,把书放在桌上,没有翻开。
帮我签个名。她说。口音是湖南的。
林晨签了名,把书推回去。
女人接过书,看了一眼签名,然后说:我是帮我儿子买的。他今年三十三,在东莞的工厂上班,上个月厂里裁员了。他在家看了你的书,说要学什么AI。我不懂AI是什么,但他说想试试。我就来帮你签个名,回去给他。
林晨看了她一眼。她的手上茧很重,指甲修得很短,是做活的手。
你儿子学多久了?
刚学了一个星期。他说很苦,但他说书里写你也很苦,你坚持下来了。
林晨在书签完名的旁边又加了一句:坚持本身就是答案。
女人看到那句话,嘴动了一下,像是想说谢谢但没说出来。她点了一下头,把书放进塑料袋里,转身走了。
又有一个五十多岁的男人走过来,头发花白,穿着一件深蓝色的夹克,衣服洗得很干净但领口已经起球了。他的书是新的,没有翻过的痕迹,扉页干干净净。
林老师。他叫了一声,声音不大。
您叫我林晨就行。
男人点了一下头。我替我儿子来的。他在广州,走不开。他是做前端的,干了八年,去年被裁了。他看了你的书之后报了一个培训班,现在在学后端。
前端转后端?
对。他说前后端都会了,找工作容易一点。
林晨在扉页上签了名,想了一下,又写了一句:方向比速度重要。
男人接过书,看了两秒那句手写的话,然后小心地把书合上,像拿着一件易碎的东西一样揣进夹克内侧的口袋里。
谢谢你。他说,然后转身走了。
林晨看着他离开的背影。他的步子不快,背微微弓着,走路的时候右手一直按着夹克的口袋,像是在确认那本书还在。
后面的人还在排队。一个、两个、三个。有人是为自己来的,有人是替别人来的。有人拿着翻旧的书,有人拿着崭新的书。有人问技术问题,有人只说一句谢谢你的书。
林晨一直坐在那把椅子上,从两点半到五点十分。中间只站起来喝了两次水,去了趟洗手间。他的右手从第三支笔换回了第一支——第二支和第三支的笔芯也写软了,第一支放了一会儿反而恢复了一点弹性。
签到最后几本的时候,天已经暗了。深圳书城外面的路灯亮了起来,透过大厅的玻璃门照进来,打在签售台的桌面上。最后一个读者是个穿黑色卫衣的年轻人,他递过来一本书,扉页上有一行铅笔字,写的是:我也是35岁被裁的。
林晨签了名,没有加任何话。他把书递回去,看了年轻人一眼。年轻人接过书,站在那里看了两秒签名,然后抬起头,说了一句:我会站起来的。
林晨点了一下头。
年轻人转身走了。
签售会结束了。
周敏过来收桌上的东西。签字笔用了三支,水瓶喝了两个,桌上还剩下几本没有签完的库存书。
今天签了多少本?林晨站起来问。
一百八十三本。周敏看了一下记录,加上自带的,大概有两百多。比预期多了不少。
林晨活动了一下右手,指关节有点僵。他从签售台后面走出来,站在大厅里看了一眼。围栏已经撤了,书城的工作人员在打扫地面,几把椅子被叠起来推到墙边。读者都走了,大厅空了,地面上的脚印和塑料袋的碎屑是刚才那几个小时唯一的痕迹。
苏婉走过来,把一瓶没开封的水递给他。
手酸了?苏婉看了一眼他活动手指的动作。
有一点。
签了多少?
没数。
一百八十三。苏婉替他答了,周敏刚才说的。
林晨接过水,喝了一口。他看着空荡荡的大厅,没有说话。
苏婉站在他旁边,也没有说话。大厅外面的路灯亮着,照在玻璃门上,门的倒影映在地面上。书城外面的深圳大道上车流不息,周六傍晚的福田人来人往,没有人知道刚才这里面发生了什么。
林晨转身往出口走。走到门口的时候,他停了一下。门口的展板还立着,上面印着他的书的封面和那句宣传语。展板的边角被风吹得有点歪,书城的工作人员正准备把它搬走。
他看了一眼展板,没有多看,走出了书城大门。
地下车库里很安静。林晨把车发动,等苏婉系好安全带,慢慢驶出车位。车拐上深圳大道的时候,夕阳从西边斜照过来,把整条路染成了金色。前面一辆公交车的车身上贴着一则广告,广告的内容他没看清,但广告旁边有一行字他看到了:学AI,不晚。
他把视线收回来,看前面的路。苏婉坐在副驾驶上,翻着手机。她把一条消息递给林晨看。
赵刚在群里发了照片。苏婉说。
林晨瞟了一眼屏幕。赵刚拍了一张签售会现场的照片,配了一句话:林总今天在深圳书城签售,排队的人从大厅排到了门口。
群里有人在刷消息:林总牛逼!这本书真的改变了我的职业方向。下个月能不能来上海?
林晨收回视线,看前面的路。
你今天说了什么?苏婉问。
什么?
签售会开场的时候,你说了什么?
林晨想了一下。说了两句。不是鸡汤,该踩的坑一个没少写。书里的方法不一定适合所有人,但至少是一条走通了的路。
苏婉点了一下头。挺好的。
哪里好?
苏婉把手机收起来,看了一眼窗外。短的才是真的。长的是练过的。
林晨没有接话。车在深圳大道上开着,夕阳在后视镜里越来越低,最后沉进了远处的楼群之间。路灯一盏一盏亮了起来,跟每天一样。
他开了一会儿,忽然说了一句:有一个阿姨,替她儿子来的。她儿子在东莞被裁了。
苏婉转过头看了他一眼。
还有一个中年男人,替他在广州的儿子来的。他说他儿子看了书之后报了培训班。
苏婉没有说话,只是听着。
还有一个女人,三十一岁,产品经理,想转数据分析。林晨继续说,一个学生,在扉页上写了两行字请我签名。一个三十八岁的,被裁了,现在每天学三小时python。
他一个一个说,像在清点什么。苏婉看着他,没有打断。
两百多个人。林晨说完最后一句,停了一下。两百多个人的故事。
车拐进了小区门口,减速带让车身颠了一下。林晨把车停进车位,熄了火。车里安静下来,只听到发动机冷却的滴答声。
他坐在驾驶座上,没有马上下车。他看着方向盘上的手,右手食指和中指之间还有一个浅浅的笔印,是签了三个多小时留下的痕迹。
苏婉也没有动。她坐在副驾驶上,看着林晨的侧脸。车库里只有他们这一盏灯,灯光照在前面的墙上,照出两个安静的影子。
你写的不是一本书。苏婉说。
林晨看了她一眼。
你写的是两百多个人正在走的路。
林晨没有回答。他把手从方向盘上收回来,推开车门,走了下去。苏婉跟着下了车,两个人往电梯口走。
电梯里只有他们两个人。林晨按下楼层按钮,电梯门关上的时候,他看了一眼不锈钢门板上映出的自己的脸。脸上没有特别的表情,跟每天下班回来的时候一样。只是右手微微攥着,食指和中指之间的笔印还没有完全消。
到家之后,乐乐已经从苏婉妈妈那边接回来了,在客厅里写作业。苏婉去厨房热饭,林晨换了拖鞋,走到茶几旁边。
茶几上那本书还在原来的位置。白底黑字,封面朝上。
他走过去,把书翻到最后一页。最后一行是他自己写的那句话——不是印的,是他写完书稿的时候加在最后一页的。苏婉当时说最后一句太干了,他想了一下,改成现在这句:所有走过的弯路都是必经之路。
他合上书,放回原处。然后他走进书房,打开电脑。FinGpt v4的训练已经跑完了,评估报告在桌面上等着他。他点开报告,开始看数据。
书房里很安静。键盘的敲击声一下一下响着,跟平时一样。楼下偶尔有车经过,灯光从窗帘缝隙里透进来,在天花板上画一条横线,又消失了。
苏婉端着饭进来的时候,看到他还在看数据。
先吃饭。
嗯,马上。
苏婉把饭放在他手边,看了一眼屏幕上密密麻麻的数字和图表,没有多问。她走出书房,去客厅叫乐乐洗手吃饭。
林晨关掉评估报告,打开手机看了一眼微信。周敏发了一条消息:今天的签售会数据我整理好了,明天发你。还有,有好几个读者问什么时候办第二场。上海和北京都有人问。
他想了一下,没有回这条消息。
他打开备忘录,在今天的日期下面记了一行字:
签售会,183本,两百多人。有一个替儿子来的阿姨,一个替儿子来的大叔。还有一个人在扉页上写我也是35岁被裁的。
他把备忘录锁了,放下手机,走出书房去吃饭。
客厅里,乐乐正在跟苏婉说他今天在学校的事。苏婉在旁边听着,偶尔嗯一声。电视开着但没人看,声音调得很低。餐桌上的三副碗筷已经摆好了,饭在电饭煲里保温,菜是苏婉热好的两荤一素。
林晨在餐桌前坐下来,拿起筷子。
苏婉看了他一眼。手还酸吗?
不酸了。
乐乐抬起头看了他一眼。爸爸今天去哪里了?
去签书了。
签什么书?
就是爸爸写的那本书。
乐乐想了一下。就是茶几上那本白白的?
乐乐点了一下头,继续吃饭。在他看来,爸爸写了一本书和爸爸写了一段代码是差不多的事情——都是爸爸坐在电脑前面敲键盘,敲完了就有一件东西出来了。至于那件东西是什么、有什么用,他还不太懂。
林晨夹了一块红烧肉放在乐乐碗里。乐乐说了一声谢谢,继续扒饭。
窗外的路灯亮着。鹏城湾的夜色从窗外透进来,远处有几盏灯还亮着,楼下保安室的灯也是亮的。
吃完饭之后,林晨帮苏婉收碗。苏婉洗碗的时候他站在旁边擦碗,跟在店里一样。苏婉洗一个,他擦一个,两个人的节奏配合得很默契。
下周六北京有一场。苏婉说。
我知道。周敏跟我说了。
你去吗?
林晨把擦好的碗放进碗柜里,想了一下。
苏婉嗯了一声,继续洗碗。
水龙头哗哗地响着,碗碟碰在一起的声音轻轻的。林晨站在水池旁边,看着水流冲过碗底的弧形。他想起今天签售会上那个中年男人的手,洗得发白的polo衫,夹克内侧口袋里小心翼翼揣着的那本书。
他不知道那个在广州学后端的年轻人现在学到了哪里。也不知道那个在东莞开始学python的人写了多少行代码。他只知道这些人今天站在他面前,拿了一本书,说了一句话,然后走了。
他们会不会坚持下去,他不知道。就像他当年坐在地铁上攥着离职协议的时候,也不知道自己会不会坚持下去一样。
他把手里的碗擦干,放进碗柜。
苏婉关了水龙头,把围裙解下来。
两个人走出了厨房。客厅里乐乐在写作业,铅笔在纸上沙沙地响。林晨走过去看了一眼乐乐的本子,上面有一道数学题写了一半,乐乐的字歪歪扭扭的,但步骤是对的。
他拍了拍乐乐的肩膀,走进书房,关上了门。
电脑屏幕上,FinGpt v4的评估报告还在等着他。他坐下来,开始看第二遍。
书房外面很安静。鹏城的夜从窗户透进来,远处有几辆车在路上开过,灯光一闪一闪的。
一百八十三本书。两百多个人。每一个人的故事他都记不住,但每一个人的脸他看了一眼。
就像他写书的时候一样,他没有写谁的名字,但他写的是所有人的故事。
第354章 媒体专访
电话是周敏打来的。
那天林晨在t厂开完项目周会,刚回到工位上准备看FinGpt v4的评估报告,手机震了两下。他扫了一眼来电显示,是周敏的号码。
林晨,央视财经频道想采访你。
林晨的手停了一下。他刚拿起的水杯悬在半空中,过了两秒才放回桌上。
什么?
央视财经频道。《职场转型录》那个栏目,你听过吗?他们的编导看了你的书,觉得你的经历很适合做一期专题。
林晨知道《职场转型录》。那是一档专门讲职场人转型故事的节目,每周六晚上播,时长十五分钟。他之前在电视上看过几期,讲的是一个做外贸的转行做直播电商,还有一个煤矿工人转行做心理咨询师。节目的风格比较沉稳,不像某些综艺那样煽情,更多是让当事人自己讲述。
怎么找到你的?
书的封底有你的简介,虽然用了化名,但他们查到了训练营的公众号。编导先联系了出版社,出版社转给我,我又核实了一下他们栏目的资质。
林晨想了几秒。我之前不是说不做采访吗?
我知道,但这次不一样。周敏的语气比平时认真,之前找你的都是科技媒体,问的都是技术路线、AI前景那些,本质上是在借你的故事做流量。但央视财经不是。他们的编导跟我聊了四十分钟,问的全是具体的事:你被裁那天是什么心情、你怎么跟家人说的、你学AI的9个月是怎么熬过来的。她不是想做一篇爆款文章,她是真的想讲一个人的故事。
林晨没有立刻回答。
周敏继续说:而且你想想,这本书卖了快四万本了,评论区最多的关键词是。你的故事如果能上央视,看到的人不是四万,是四百万甚至四千万。那些正在被裁、正在迷茫、正在考虑要不要学AI的人,他们可能不会买一本书,但他们会在周六晚上看十五分钟的电视。
林晨靠在椅背上,看着窗外。鹏城cbd的天际线在午后阳光里泛着白光,远处几栋写字楼的玻璃幕墙反射着太阳。他想起知乎上那条评论——买给我老公看的,他35岁,被裁了三个月,每天在家不说话。看完之后开始学python了。
如果那个人的老公不是在书店看到这本书,而是在电视上看到这个故事呢?
你把编导的联系方式给我。林晨说。
三天后,林晨在t厂楼下的一家星巴克见到了央视的编导。
编导叫刘佳,三十出头,短发,穿一件深蓝色的西装外套,里面是白t恤,手边放着一个帆布包。她比林晨早到了十分钟,已经在角落的位置坐好,面前摊开一个笔记本,上面用不同颜色的笔写满了字。
林总,你好。刘佳站起来,伸出手。
叫我林晨就行。林晨坐下来,点了一杯美式。
刘佳没有急着进入正题。她先聊了两句天气,然后问林晨从公司过来远不远,开车还是坐地铁。林晨说开车,她点了点头,在笔记本上划了一笔。
《职场转型录》不做成功学。刘佳翻开笔记本,我们关注的是人在转型过程中的真实状态——焦虑、挣扎、失败,再到坚持和突破。观众想看的是一个人怎么走过来的,不是他走完之后有多风光。
林晨点了一下头。这跟我写书的想法一致。
所以我不会问你成功之后有什么感想刘佳看着他,我会问你被裁那天晚上你跟你老婆说了什么,你学AI的第一个月有多少次想放弃。
可以。但我有一个要求——不提t厂的名字,不提薪资,不提投资账户的数字。
刘佳在笔记本上记了一笔。公司用某头部科技公司代替,薪资用区间。可以。
那天下午两个人聊了两个小时。刘佳问了三十六个问题,从你被裁的那天是什么天气你现在最想对三年前的自己说什么。林晨回答了大部分,有几个问题他回答的时候手指在桌上轻轻敲了两下——那是在t厂开会时养成的习惯,想事情的时候手指会动。
聊完之后刘佳合上笔记本。正式录制安排在下周五,到你家和公司各拍一段。方便吗?
家里可以。公司需要报备。
她站起来,把帆布包背上,说了一句:林晨,我做过三十多期节目,你是我见过最不焦虑的被采访人。
不是不焦虑。林晨说,是焦虑完了。
正式录制的那个周五,深圳下了一场小雨。
早上八点,摄制组到了林晨家。一辆商务车,三个人:刘佳、摄像老张、录音小吴。他们带了两个箱子,一个装摄像机和镜头,另一个装灯光和收音设备。
苏婉提前请了半天假。她八点不到就起来了,把客厅收拾了一遍,茶几上放了一盘水果和几个杯子。乐乐还不知道今天要干什么,只看到家里来了几个陌生人,抱着他的奥特曼站在卧室门口探头探脑。
这是谁?乐乐小声问苏婉。
是来采访爸爸的叔叔阿姨。
采访是什么?
就是有人问爸爸问题,爸爸回答。
乐乐想了一下,抱着奥特曼回了卧室,轻轻关上门。他今年七岁了,已经知道大人在说正事的时候他不该在旁边吵。
拍摄从客厅开始。刘佳让林晨坐在沙发上,对面放了一个小台灯补光。摄像老张在旁边架好机器,录音小吴在林晨的领口别了一个小麦克风。
不用紧张,就当聊天。刘佳坐在对面的椅子上,手里拿着一个本子。
我不紧张。林晨确实不紧张。他在t厂做过很多次项目汇报,面对几十个人讲ppt的时候比这紧张多了。
前半段的拍摄在家里完成。刘佳问的问题跟上次在星巴克聊的差不多,但换了一些角度。她让林晨站在阳台上拍了一段,窗外是鹏城湾的远景,远处有几艘货船在水面上移动。她让苏婉也出了一段,苏婉坐在沙发上,手边放着一杯茶。
你老公被裁的那天晚上,你是什么感受?刘佳问。
苏婉想了一下。第一反应不是担心钱,是担心他。他那时候坐在沙发上一句话不说,我从来没见过他那个样子。我知道他需要时间,所以我就没有催他。
你当时相信他能走出来吗?
苏婉说得很干脆,他这个人,决定做的事一定会做完。他决定学AI,我就知道他一定能学会。时间长短的问题。
苏婉的回答比林晨的更有力。刘佳在笔记本上画了一个圈,林晨从她的角度看到了那个圈,不知道是什么意思。
乐乐在卧室里待了四十分钟,终于忍不住跑出来了。他看到爸爸面前有一个亮着红灯的摄像机,很好奇,走过去站在摄像机旁边看。摄像老张没有停机,镜头里多了一个小男孩的脑袋,从画面右边探进来,又缩回去。
这段能用。刘佳看完回放后说。
中午摄制组在小区门口的便利店买了盒饭,在车里吃完。下午一点半到了t厂,在林晨的部门会议室拍了一段。会议室不大,长桌能坐十个人,白板上还留着上午开会的流程图,林晨没有擦掉。
这段林晨讲的是AI技术。刘佳让他在白板上画了一幅图,从传统编程到大模型应用的转型路径,用最简单的方式讲清楚。林晨拿着白板笔,画了三个方框,写了几个关键词:传统开发、数据驱动、模型赋能。他在方框之间画了箭头,标注了学习曲线能力跃迁。
你说的这些,一个35岁的程序员能学会吗?刘佳问。
林晨放下笔,不是因为他们不够聪明,是因为传统编程的思维跟AI的思维方式不一样。写代码是告诉计算机怎么做,做AI是让计算机自己学会怎么做。这个思维转变比学任何一门语言都难,但一旦转过来了,后面就是体力活。
体力活?
对。学python的语法是体力活,调模型的参数是体力活,清洗数据更是体力活。最难的是第一个月,你什么都不懂,每一步都走得很慢。但到了第二个月、第三个月,速度会越来越快。就像跑步,前两公里最累,后面反而容易了。
下午三点半拍完了。摄像老张开始收设备,录音小吴在检查录音文件。刘佳坐在会议室的椅子上翻笔记,偶尔抬头看一眼窗外。
林晨,你有没有什么想补充的?她问。
林晨想了一下。有一件事我一直没说。
你说。
我学AI的第三个月,有一天晚上在阳台上抽了四根烟。那四根烟抽完之后我做了两个决定:第一,第二天把烟戒了;第二,无论如何要学完。
为什么想戒烟?
因为我发现焦虑的时候抽烟只会更焦虑。烟不能帮你解决问题,只能帮你把问题推迟十五分钟。
刘佳把这个细节记了下来。她站起来,跟林晨握了一下手。
节目下周六播出,我会把链接发给你。
节目播出的那天是周六晚上八点十五分。
林晨一开始没打算看。那天他带着乐乐去科技馆待了一个下午,回来的时候在车里堵了四十分钟,到家已经六点半了。苏婉做了饭,三个人吃了,乐乐去客厅看动画片,苏婉在厨房收拾碗筷。
林晨坐在沙发上刷手机,八点十分的时候看到周敏在微信上发了一条消息:快看!央视财经!
他拿起遥控器换到央视财经频道,画面上正在播一段广告。八点十五分,广告结束,屏幕左下角出现了《职场转型录》的标题。
开头是一段深圳cbd的航拍,镜头从平安金融中心滑过,切到一条写字楼的走廊,办公室里有人低头敲键盘。旁白的声音很沉稳,没有配乐,只有环境音。
2024年,中国互联网行业经历了前所未有的大调整。数以万计的从业者面临转型,35岁的程序员林晨就是其中之一。
画面切到林晨坐在家里的沙发上,旁边是苏婉。乐乐从画面右边探了一下头,又缩回去了。这段是那天拍摄时的意外捕捉,刘佳说这段能用,果然用了。
接下来的十五分钟,节目按照时间线展开:被裁、自学、面试、入职、写书、开快餐店。每个阶段都有林晨的讲述,穿插着画面——家里阳台的远景、t厂会议室的白板图、晨枫快餐南区店的午高峰。林浩在厨房里颠锅的镜头给了三秒,周小敏在前厅穿梭的镜头给了两秒,小宇在收银台后面操作ipad的镜头只闪了一下。
节目最后一段是林晨在阳台上拍的。
你觉得你的故事对其他人意味着什么?刘佳的声音在画外。
林晨想了想,说:我不觉得我的故事对别人有什么特殊的意义。每个人被裁之后的处境不一样,家庭条件不一样,能用的资源不一样。我能做的是把我的过程写出来、说出来,让别人知道有这么一个人走过这条路。走不走、怎么走,是他们自己的事。
画面定格在林晨站在阳台上的背影上,远处是鹏城湾的夜景。旁白说了一句收尾的话,林晨没有仔细听。
片尾字幕出来的时候,乐乐从卧室跑出来问:爸爸你上电视了?
你好酷。乐乐说完就跑回卧室继续玩积木了。苏婉从厨房走出来,在沙发上坐下来,看了一眼电视上的字幕,没有说什么。
反响是林晨没想到的。
节目播出当晚,林晨的手机就开始震。微信、钉钉、短信,通知一个接一个地跳出来。
首先是训练营的钉钉群。赵刚发了一条消息:林总上央视了!!!后面跟了十几个感叹号,然后是二十多条回复,全是、太强了林总是真的猛。林晨在群里发了一条:不要在群里讨论这个,专注学习。群安静了五秒,然后有人回了一个的表情包。
其次是书的相关数据。周敏在九点半发了一条微信:京东实时排名跳了,从第47名直接到了第12名。当当那边也在涨。这波流量至少能持续一周。
林晨看了一眼没有回。
最让他意外的是微信通讯录里的变化。从周六晚上到周日中午,他收到了四十多条好友申请。有的是同行,写看了节目想认识一下;有的是被裁的程序员,写我也是35岁被裁的,想请教你一些问题;有的是创业者,写你的快餐店模式很有意思,想交流一下;还有几个是媒体,写想做个后续采访。
林晨没有全部通过。他把同行和被裁的程序员的申请通过了,创业者的通过了一半,媒体的全部拒绝了。通过的好友申请里,有一个备注写了很长一段话:林晨你好,我今年36岁,在杭州做Java开发,上个月被裁了。看了你的节目之后我买了一本你的书,从第一章开始看。我现在还没看完,但我已经开始在b站上学python了。我不知道我能不能像你一样转型成功,但我想试试。
林晨看完这条申请,点了通过,然后回了一句话:坚持第一个月。第一个月最难。
对方秒回:
周一上班的时候,t厂的氛围有点不一样。
林晨走进办公区的时候,有几个同事站起来朝他看了一眼,有人朝他竖了一下大拇指,有人笑着打了一声招呼。他没有刻意回应,走到工位上坐下,打开电脑。
陈铭端着咖啡走过来。你周六上央视了?
你怎么知道的?
我妈看的央视财经,刚好看到。她给我打电话说你们公司有个叫林晨的上电视了,我还以为她搞错了。
林晨笑了一下,没有接话。
张雨在钉钉上发了一条消息:林总,今天有几个记者打电话到公司前台想采访你,我都帮你推了。
谢谢。
不客气。另外,赵刚说第三期训练营的报名人数在周六晚上突然涨了三百人,他问要不要临时扩招。
林晨想了一下。不扩招。人太多了教不过来。让赵刚把多出来的人排到第四期。
好的。
节目的后续影响在接下来的一周里持续发酵。
周敏在周三发了一份详细的数据报告。节目播出后一周,《35岁程序员的AI逆袭》累计销量从三万八千本涨到了五万六千本,京东技术类畅销榜排名从第七升到了第二。当当的总榜排名从第四十七升到了第十九。评论区新增了一千多条评论,评分稳定在4.9分。
评论区的画风也变了。之前评论的大多是技术圈的人,讨论的是书里的技术路线和实操细节。节目播出之后,评论里出现了大量非技术背景的人。有做销售的、做行政的、做工厂主管的,甚至有一个卡车司机留了一条:我不懂代码,但我看懂了你说的那句话——最难的是第一个月。
林晨把这条评论看了两遍。
周敏在数据报告的最后附了一段话:央视财经那期节目的播放量已经超过五百万了。b站上有搬运版,播放量三百万。微博相关话题阅读量八千万。我建议趁这波热度做一轮新书签售,覆盖北上广深四个城市。你考虑一下。
林晨回了一句:签售可以,但只做深圳一场。
周敏没有再追问。她了解林晨。
周五晚上,林晨在书房里看投资系统的数据。A股本周小幅震荡,系统自动做了两次调仓,账户净值比上周涨了百分之一点三。他看了一眼就没再管,关掉投资系统的页面,打开了邮箱。
邮箱里有一封新邮件,发件人是一个他不认识的地址。标题是感谢你——一个36岁Java开发者的信。
他点开看了。
信很长,两千多字。写信的人叫王磊,36岁,杭州某互联网公司的Java开发,上个月被裁。信里写了他在公司待了七年,最后一天收拾东西的时候手在抖,回家之后在沙发上坐了一个小时什么也没做。他说他看了央视的节目之后去买了书,从第一章开始看,看到林晨写在沙发上坐了四十分钟的时候哭了。他说他现在已经开始学python了,虽然进度很慢,但他每天都在学。
信的最后一段是:我不知道我能不能像你一样走出来。但至少我现在每天早上起来的时候,第一个念头不是今天不要学了,而是今天学点什么。谢谢你让我知道这条路有人走过。
林晨看完这封信,坐在书房里没有动。
窗外鹏城湾的夜景在黑暗里铺开,远处几栋写字楼的灯还亮着,有人还在加班。楼下小区的路灯在行道树上投下斑驳的影子,一个遛狗的人走过,狗在路沿上嗅了嗅,被人拉走了。
苏婉推门进来,手里端着一杯温水。她看到林晨盯着屏幕,走过去看了一眼。
怎么了?
一封信。林晨的声音很轻。
苏婉没有问信的内容。她把水杯放在桌上,在他肩膀上轻轻拍了两下,然后走出了书房。
林晨把邮件关掉,打开备忘录。他记了两行字:
第一行:训练营第三期下周开课,关注学员进度,重点看中年转行群体。
第二行:那个叫王磊的人,如果他在杭州,帮联系一下杭州的AI社群。
他关掉备忘录,关掉电脑。走出书房的时候在走廊里停了一下,看了一眼茶几上那本书。五万六千个人买了这本书。他不知道他们是谁,在哪里,在经历什么。但他知道他们每个人手里都有一本,跟那封信的主人一样,正在翻某一页。
客厅里苏婉在看电视,乐乐已经睡了。窗外鹏城湾的水面在月光下泛着银白色的光。这个城市永远不会完全安静下来,总有人在走夜路,总有人在坐下来歇一歇之后重新站起来。
林晨在沙发上坐下来。苏婉看了他一眼,没有说话,把遥控器放在茶几上。
电视里在播一条新闻。画面是一个工厂的车间,工人在流水线上忙碌,旁边的字幕写着:AI时代的就业转型:挑战与机遇并存。
林晨看了一眼,把频道换了。
他坐在沙发上想了一会儿事情,然后拿起手机。微信上有一条新消息,是那个36岁Java开发者王磊发的,只有两个字:
在学。
林晨看着这两个字,把手机放在了沙发上。
第355章 T厂的抉择
央视采访播出的那天是个周六。
林晨是在店里看到手机推送的。周敏发了条消息过来,只有一个链接,后面跟了三个感叹号。他点开看了几秒,画面是他坐在t厂会议室里的侧脸,底下打了一行字幕,写的是从裁员到总监,35岁程序员的逆袭之路。他把手机锁了,没看完。
苏婉看了。她是在学校办公室的电脑上看的,画面比手机清楚,声音也清楚。主持人问他被裁之后最难的是什么,他说最难的不是没有收入,是没有方向。苏婉听到这句话的时候正在批改作文,手里的红笔停了一秒,然后在作文本上画了一个勾,继续往下批。
乐乐在学校也听说了。同学拿着手机给他看,说你爸爸上电视了。乐乐看了两眼,说我爸爸不喜欢上电视,然后把手机还回去了。
采访播出之后的一周,周敏发来了好几条消息。有媒体想做后续报道,有平台想请他做线上分享,有一家出版社谈第二本书的方向。林晨只回了周敏一条:后续报道不做,线上分享不做,第二本书的事你先跟出版社谈方向。
他在t厂的工位上回了这条消息,然后关掉微信窗口,切回FinGpt的代码。
时间一晃,从夏天走到了年底。
十二月第一个周五的部门周会上,陈博士迟到了五分钟。
他走进来的时候手里拿着一杯咖啡,不是平时那种速溶的,是外面买的,纸杯上印着一家连锁咖啡的logo。他坐下来,喝了一口,把杯子放在桌上,看着会议室里的十二个人。
公司要做战略调整。陈博士说。
会议室里安静了。陈博士说话从来不打铺垫,这五分钟迟到也不是因为堵车,而是在楼上跟Vp开完一个会。林晨看到他手里的咖啡不是平时那种,就知道今天有变化。
大模型事业群的定位要调整。从应用驱动转向平台驱动。陈博士在白板上写了两个字:平台。以后我们的目标是给业务线提供底层能力,而不是自己做应用。FinGpt要从产品变成基础设施。
陈铭坐在林晨右边,手里的笔在笔记本上顿了一下。张雨在左边,屏幕上的数据看板还亮着,她的手从键盘上移开了。周姐坐在角落里,手里的合同文件放下了,抬头看着陈博士。
这意味着什么?林晨问。
意味着我们的业务线要收缩。应用层的团队要砍掉一半,转去做平台支撑。陈博士放下咖啡杯,杯底在桌面上磕了一声。技术团队保留,商务团队压缩。FinGpt v4是最后一代面向客户的产品,之后不再做独立的c端产品。
那商务团队的客户怎么办?周姐问。
存量客户转给产品运营部门维护。新客户不追了。
会议室里又安静了几秒。周姐没有追问,她低头在合同文件的空白处写了几个字,笔尖在纸上划过的声音很轻。
团队整合的方案下周出。陈博士说完,站起来拿着咖啡走了。
林晨坐在椅子上没动。他看着白板上两个字,陈博士的笔迹很重,最后一笔的收尾拖出了一条长长的痕迹,像是白板上的一个刀口。
平台驱动意味着什么?意味着FinGpt不再是一个独立的产品,而是变成一个能力层,给公司其他业务线调用。做产品有用户反馈、有迭代节奏、有成就感,做平台只有接口文档和排期表。他花了三年时间从零搭建的团队、跑通的产品、打下的市场,现在要收缩、压缩、变成后台的一个服务。
他站起来回了办公室。
两块屏幕亮着,左边是FinGpt的运行日志,右边是晨枫快餐的后台数据。他站在办公桌前面,没有坐下来。视线从左边扫到右边,又从右边扫回左边。左边是他在t厂三年的时间,右边是他在晨枫快餐三年的时间。两条线并排跑着,左边的线要弯了,右边的线还在往上走。
他坐下来,打开邮箱。二十三封未读,其中十五封需要他回复。他一封一封地看。陈铭发来的技术方案评审,他回了。周姐转来的客户续约函,他转给了产品运营部门。人事部门的组织架构调整通知,他扫了一眼日期,下周三之前要完成团队人力的重新分配。
他关掉邮箱,打开晨枫快餐的后台。今天的翻台率四点三,会员新增一百一十二人,外卖订单占比百分之二十九。每一条数据都是往上走的。他盯着屏幕看了几秒,把窗口最小化,切回FinGpt。
下午三点,产品运营部门的老李来找他。
老李推门进来,手里拿着一叠打印的文件,上面用红笔圈了好几处。他在林晨对面坐下来,把文件放在桌上。
林总,商务团队压缩之后,FinGpt的存量客户要转给我们。我需要你给我一份完整的接口文档和迁移方案。
林晨看了一眼文件上的红圈,是三份客户的技术对接需求,每一份都有不同程度的定制化要求。
什么时候要?
下周五之前。
你提前两天,下周三给你。
老李站起来,走到门口又回过头来。林总,FinGpt转平台之后,之前商务签的那些定制化需求,产品运营不一定接得住。有些客户可能会丢。
我知道。林晨说。
老李点了一下头走了。
林晨看着桌上那叠文件,没有翻开。他靠在椅背上,视线落在窗外。鹏城湾的水面在下午的阳光下泛着白光,远处的货轮在缓慢移动。他看了几秒,把视线收回来,打开文档模板,开始写接口文档。
写接口文档是一件他做了无数次的事。从第一行到最后一行,从参数定义到错误码,从调用示例到版本兼容性说明,每一步都有模板,每一个字段都有规范。他写了半小时,停下来揉了一下太阳穴。这不是他想做的事。但这是他现在必须做的事。
晚上回家,苏婉已经做好了饭。
桌上是清炒菜心和红烧排骨。排骨的颜色偏深,酱油放多了一点,但肉炖得烂,筷子一碰就脱骨。乐乐在旁边写作业,铅笔在纸上沙沙地响,写两笔就抬头看一眼妈妈有没有在看他。
今天怎么样?苏婉把碗筷摆好。
公司战略调整了。林晨换鞋进门,把包放在柜子上。FinGpt从产品转平台,商务团队要压缩。
苏婉的手在碗上停了一下。你的位置呢?
总监的位置还在。但做的事不一样了。
苏婉没有追问。她把排骨往林晨碗里夹了两块,又给乐乐夹了一块。乐乐埋头吃饭,嘴边沾了一粒米饭,没发现。
吃完饭林晨帮苏婉收碗。苏婉洗碗,他站在旁边擦。流水声在厨房里响着,跟以前每一次一样。苏婉把洗好的碗递给他,他擦干放进碗柜。
你说做的事不一样了,具体怎么不一样?苏婉问。
之前是做产品,有自己的用户、自己的数据、自己的迭代节奏。现在变成做平台,给其他业务线提供服务。就像你从一个写书的变成一个写工具书的。工具书有用,但写工具书跟写书的感觉不一样。
苏婉把最后一个碗递给他,他擦干放进碗柜,关上柜门。
那你现在想做什么?苏婉问。
林晨没有回答。他关了厨房的灯,走到客厅,在沙发上坐下来。苏婉擦完手走出来,在他旁边坐下。
客厅的灯光暖着,乐乐在房间里写作业的声音隐约传来。茶几上放着那本《35岁程序员的AI逆袭》,苏婉前几天看完之后放在那里的,书签夹在第七章。林晨看了一眼书脊,把视线移开。
我在t厂三年了。林晨说。
苏婉嗯了一声。
三年,从高级工程师做到总监,管五十个人的团队。现在团队要压缩,业务要收缩。不是公司不行了,是方向变了。大模型这个赛道从去年开始就不一样了,做c端产品的人越来越多,竞争越来越凶,公司不想在c端卷了,转去做平台。
平台不好吗?
平台没有不好。但做平台不是我想做的事。林晨看着茶几上那本书的侧面。我在t厂做的事,从第一天到现在,维护的成分越来越重,建设的成分越来越轻。刚来的时候做模型、搭系统、看数据、优化策略,每一步都是新的。现在呢?开协调会、回邮件、写接口文档、做人力调整。技术决策越来越少,行政决策越来越多。
苏婉没有说话,等他继续。
晨枫那边不一样。林晨说。每解决一个问题就打开一扇门。从流程优化到选址扩张到供应链管理,每一步都是新的。我在t厂做的事是在给一堵墙补灰,墙还在,灰也还在,但补灰这件事不会让墙变高。
苏婉转过头来看着他。你是不是已经想好了?
还没有。林晨说。但我已经在想了。
苏婉点了点头,没有追问。她把茶几上那本书拿起来,翻到第七章的书签位置,看了一眼,合上,放回原处。
你想好了再跟我说。她说。
第二天是周六,林晨去了南区店。
午高峰刚过,店里还有两桌客人在收尾。林浩在厨房里备晚市的料,灶台上砧板、菜刀、调料罐摆得整整齐齐。周小敏在前厅擦桌子,动作利索,抹布从桌面划过去,不留水渍。小宇在收银台后面整理今天的流水,手指在ipad上划得很快。
林晨在角落坐下来,打开笔记本电脑。他先看了一遍两家店的数据:第一家店月营收十七万二,净利润十万出头;第二家店月营收十二万八,净利润七万三。两家店合计月利润十七万三,加上投资系统的被动收入和t厂的工资,他的月收入已经超过了三十万。
他关掉数据窗口,新建了一个文档。文档标题他打了几个字又删掉,打了又删掉,最后只留了四个字:离职测算。
他在文档里列了一张表。左边是收入,右边是支出。t厂的年薪一百一十万,加上年终奖和股票,税后到手大约七十万。晨枫快餐两家店月利润十七万三,年化两百零八万。投资账户五百多万,月收益在十五到二十万之间,年化两百万上下。三块加起来,年入五百万左右。
如果辞掉t厂,年薪那一百一十万就没有了。但晨枫快餐可以全职做,扩张速度会加快。现在他每个周末去店里看数据、调流程、做决策,平时靠林枫盯运营、林浩盯出菜、周小敏盯前厅。三个人各管一摊,运转得还行,但缺一个总控的人。如果他能全职投入,第三家店可以提前半年开出来。
他在文档里加了一行:第三家店提前半年=多赚至少五十万。
然后他又加了一行:全职做晨枫=失去t厂的平台和资源=失去FinGpt的技术迭代能力=失去一个随时在更新的技术视野。
这两行并排放在文档里,左边是钱,右边是不只是钱的东西。
他盯着这两行看了半分钟,把文档关掉了。
林枫从外面走进来,手里拎着一袋水果。看到林晨就走了过来,把水果放在桌上,在他对面坐下来。
今天怎么这么早?林枫问。
想点事。
什么事?
林晨没有接话。他看了一眼厨房的方向,林浩正在切莴笋,刀起刀落,节奏很稳。小宇在收银台后面核对外卖订单,眉头微微皱着,手指在屏幕上划。周小敏在整理前厅的餐具,把筷子和勺子一双一双码进收纳盒里。
你觉得晨枫现在缺什么?林晨问。
林枫想了一下。缺一个全职管事的人。
你觉得你能全职管吗?
我管得了运营,管不了数据和系统。你写的那套管理软件,我到现在只会用,不会改。出了问题还是得你远程看。第三家店如果开起来,三家店的数据流和供应链要重新整合,我搞不定。
林晨点了点头。这个判断跟他自己想的一样。林枫管人管事管采购,是强项。但系统搭建、数据分析、流程优化这些事,最终还是要他来做。兼职做和全职做,差距不是一个量级。
如果我不在t厂了呢?林晨问。
林枫看了他一眼。你想辞了?
在想。还没决定。
林枫没有追问。他站起来去洗水果了,洗完之后把苹果削了皮,切成块,放在盘子里端回桌上。他坐下来,叉了一块苹果吃,嚼了两口。
你要是辞了,我们得重新算一遍账。林枫说。你的工资没了,但你的时间多了。时间能换多少钱,你自己算。我管不了这个。
我算过了。林晨说。少了t厂的年薪,但全职做晨枫,扩张速度至少快一倍。再加上投资账户的被动收入,现金流不是问题。
那就不是钱的事。林枫说。
对。不是钱的事。
林枫又叉了一块苹果,嚼了两口,把果核放在盘子里。那你犹豫什么?
林晨看着厨房里林浩的背影。林浩把切好的莴笋装进保鲜盒,码进冷柜,动作利落,跟写代码的mit一样干净。他关上冷柜门,在备料单上打了勾,转身去备下一道菜的料。
我犹豫的是,林晨说,在t厂做的这三年的东西,是不是说放下就能放下。
林枫听完,把叉子放在盘子里。他没有接话。他不是技术人,听不懂FinGpt和平台驱动的区别。但他听懂了另一件事:林晨不是在算一笔经济账,他是在算一笔人生账。
林晨合上笔记本电脑,站起来。我去厨房看看。
他走进厨房,林浩正在备料台前面切豆角。刀落下去的声音很均匀,每一下的间隔一样长。
哥,今天的翻台率怎么样?林浩头也不抬地问。
四点三。
比昨天高零点一。林浩把切好的豆角推到一边,开始切下一批。南区店的客群比中区年轻,翻台率还有提升空间。
林晨在旁边站了一会儿,看林浩的刀工。三年前林浩刚到深圳的时候,刀都拿不稳。现在他切豆角的节奏像一个运转良好的函数,输入、处理、输出,每一刀都精准。
浩子,林晨开口,你觉得晨枫还能做多大?
林浩停了一下刀,回头看了他一眼。什么意思?
你觉得晨枫现在到头了吗?两家店,月利润二十万,够了?
林浩想了几秒钟,又转回去继续切豆角。不够。他说。来吃的人每天都在排队,午高峰翻台翻不过来,外卖骑手挤在门口等出餐。这不是到头了,是还有空间没做出来。
如果开第三家店呢?
第三家店要人。林浩头也不抬地说。现在两家店我已经跑不过来了,阿伟能出六道菜,但还有三道菜不够稳。周小敏管前厅没问题,但她管不了数据。小宇学得快,但他才来了两周。第三家店开出来,至少还要一个主厨、一个前厅主管、一个懂系统的人。
懂系统的人,林晨重复了一下。
你写的那个管理系统。林浩把最后一刀切下去,把刀放下,转过来看着他。改一个参数要找你,出个bug要找你,月底拉数据还是要找你。你在t厂上班的时候我们远程对接,虽然也行,但你每次来店里的时候效率最高。如果你不在t厂了,天天在店里,这个效率差距你自己算。
林晨没有接话。林浩说完这段话,转过身去开始洗案板,水龙头开得很大,水声在厨房里哗哗响。他洗完案板,又把灶台擦了一遍,抹布在不锈钢台面上擦出一条一条的水痕。
林晨站在旁边,看了他几秒,走出厨房。
晚上回到家,乐乐已经睡了。
苏婉在客厅里看书,是一本教辅书,她在备课。客厅的灯只开了一盏,暖黄色的光落在书页上。她听到林晨进门,抬起头看了一眼,又低下去继续看。
林晨换鞋进屋,走到沙发旁边坐下来。他坐了一会儿,从口袋里掏出手机,打开电子表格。屏幕上的数字在暖黄色灯光下微微发亮:两家店月利润十七万三,投资账户月收益十八万,t厂月工资九万二。总月收入超过四十五万。如果减去t厂的工资,月收入还有三十六万。加上如果全职做晨枫、加快扩张带来的增量,年收入不低于五百万。
他关掉手机,看着天花板。
苏婉放下书,看了他一眼。算完了?
算完了。
结论呢?
结论是,钱不是问题。
苏婉把书合上,放在茶几上。那你还在犹豫什么?
林晨想了一下。两件事。第一,在t厂做的这三年,FinGpt从零到现在,是我的技术积累。如果离开了,这些积累就停在一个时间切片上,不会再往前了。第二,t厂的平台给我看问题的视角不一样。五十个人的团队、上亿级的数据、每天跑的模型,这些资源我自己没有。
但是你现在在t厂做的事已经不让你开心了。苏婉说。
这句话像一根针刺了一下。林晨转头看她,她没有看他,只是平静地把书拿起来,翻到刚才看的那一页。
你怎么知道?
你每天回来写代码的时候是开心的,开会回来的时候是不开心的。这个我从三年前就知道了。
林晨没有说话。
客厅里很安静,只有书页翻动的声音和远处隐约的车流声。乐乐房间里传来他翻身的声音,被子窸窣了一下,然后又安静了。
苏婉。林晨开口。
如果我辞职,你会不会觉得我在冒险?
苏婉把书放下来,看着他。你现在投资账户五百多万,两家快餐店月利润十七万,月被动收入超过三十万。辞掉一份年薪一百万的工作,叫冒险?
从t厂总监到全职做快餐,听起来像是降级。
听起来像不像降级不重要。苏婉说。重要的是你在t厂每天开会回邮件写接口文档的时候不开心,在晨枫看数据调流程出方案的时候开心。你三年前自己说的——做什么的时候开心。
林晨看着她。苏婉把书放在腿上,靠在沙发背上。
而且,苏婉说,你在t厂做的事,是在给别人的墙补灰。你在晨枫做的事,是在盖自己的房子。这不一样。
林晨没有接话。他靠在沙发背上,看着天花板。天花板上有一道细细的裂缝,从灯的位置延伸到墙角。这道裂缝他三年前搬进来的时候就看到了,一直没修。每天经过客厅的时候他都会瞥见这道裂缝,但从来没有人提醒他去修,他也从来没有修。它就那样待在那里,不影响生活,不影响任何事,但它确实在那里。
他站起来,走到书房。
电脑还开着,FinGpt的后台在左边屏幕上亮着,运行日志最后一条是下午五点的,一切正常。他在右边屏幕上重新打开了刚才在店里新建的那个文档,标题还是四个字:离职测算。
他把光标放在标题后面,敲了一行字:
如果走,什么时候走?
他想了几秒,又删掉这行字。光标在空白处闪了两下。他重新打了一行:
先做完v4的交接,再走。
他看着这行字,手指放在键盘上没有动。过了大概十秒,他又在下面加了一行:
但一定要走。
他存了文档,关掉电脑,走出书房。客厅的灯已经关了,苏婉去卧室了,乐乐的房间也暗了。他站在客厅中间,看着茶几上那本书的轮廓。月光从窗帘缝隙透进来,照在书封上,35岁程序员的AI逆袭几个字模模糊糊的,像一道远处的路标。
他走向卧室。苏婉已经侧身躺着,面朝墙壁。他躺下来,看着她的背影。
苏婉。他轻声说。
我决定了。等v4交接完,就辞职。
苏婉没有转过身来。她的声音从枕头那边传过来,很轻,很稳。
我知道。
林晨看着她的后背。她穿着一件灰色棉t恤,肩胛骨在薄薄的布料下面微微突出来。他想起三年前他们坐在老房子的客厅里核算账单的那个夜晚,她也是这样侧身躺着,背对着他,手里攥着一支笔和一张写满数字的纸。那时候他们只有三十万存款和一屁股房贷,她说的也是这两个字。
我知道。
他伸手把她露在外面的被子角掖了掖,闭上了眼睛。
明天是周日,他要去南区店看数据,看小宇的第三周前厅培训进展,看林浩的新菜品研发,看林枫的锁价方案。后天是周一,t厂的部门会,陈博士要公布团队整合的方案。他要站在会议室里,面对十二个人,告诉他们平台转型意味着什么,哪些人要转岗,哪些人要离开。
但他已经不在意了。
他的脑子里在转的是另一件事:第三家店的选址在南山科技园南区,那里有三栋新交付的写字楼,入驻率已经过了六成,周边两公里内没有一家像样的快餐店。林枫上周去看过那个位置,发了一张照片给他,120平,月租三万五,临街,有外摆位。
他翻了个身,把被子拉到肩膀上。鹏城十二月的夜风从窗缝里渗进来,空调的温度刚好。远处鹏城湾的水面上有几盏渔火在晃动,像很远很远的地方在亮着灯。
他闭上眼睛之前看了最后一眼手机。晨枫快餐的后台数据还在跑,翻台率四点三,会员新增一百一十二人,外卖订单占比百分之二十九。每一条数据都在往上走。
他把手机放在床头柜上,屏幕暗了下去。
明天早上五点半,林浩会准时起来备料。七点开门,十一点午高峰,下午两点收午市,五点备晚市的料,十点打烊。每一天都是这样。
但每一天不会永远是这样。
第356章 餐厅第三家
周六早上八点,林晨开车到了福田cbd。
他把车停在中心城地下一层的停车场里,从b2出口上到地面。五月的鹏城已经很热了,阳光从写字楼之间的缝隙里照下来,打在人行道的地砖上,白晃晃的。他戴了一副墨镜,沿着中心路往北走,手里拿着一瓶矿泉水,边走边看两边的商铺。
这是他第三次来cbd看铺位了。前两次是林枫自己来的,这次他亲自走一趟。
cbd跟科技园不一样。科技园中区是程序员扎堆的地方,午高峰的人流集中在十一点半到一点之间,吃完就散,节奏快,翻台率高,人均三十到三十五。南区的客群更散一些,午市时间长,晚市比中区多两成。这两家店跑了大半年,模型已经跑通了,数据也稳了。但cbd的客群完全是另一个东西。
他站在中心路和福华路的交叉口,数了三分钟的人流。一百二十七个人经过,穿正装的占了一半以上,女性比例比科技园高出二十个百分点。路边的连锁快餐店有三家,两家是连锁品牌,一家是日式便利店。三家的门口都排了队,最长的有七八个人。
林晨在手机备忘录上记了一行:cbd午高峰人流量是科技园中区的1.8倍,但竞品密度更高,客单价也更高。他走到一家连锁快餐店的门口看了一眼菜单,最便宜的套餐三十八,最贵的六十五。他看了一眼出餐口,四个餐位同时出餐,从点单到取餐大概五分钟。
五分钟出餐,三十八到六十五的价位。他在备忘录上写,这个价位段我们能做,而且能做得更好。
林枫的电动车已经停在前面两百米的地方了。林晨走过去的时候,林枫正蹲在一个铺位门口,用卷尺量门面的宽度。银灰色的卷尺拉出来,一米一米地数。门面宽度四米八,进深十五米,面积七十二平米。
太小了。林晨站在他身后说。
林枫把卷尺收起来,站起来。这个是第三个候选。前两个你看了吗?
看了。第一个在购物公园地铁站出口,六十平米,租金六万八。太小,租金还贵。第二个在会展中心旁边,九十五平米,租金五万五。位置偏,从地铁口走过来要八分钟。
林枫从口袋里掏出笔记本,翻到夹了红色便利贴的那一页。上面密密麻麻写了六组数据,每一组对应一个候选铺位。面积、租金、人流量、竞品数量、预估翻台率,全部用红笔标了数字。六个铺位里,有三个他直接画了叉。
cbd的铺位不好找。林枫合上笔记本,好位置的租金太贵,租金便宜的没人流。跟科技园不一样,科技园是午市一条线,cbd是午市加晚市加周末三条线。人流量大,但分流也严重。
所以定位不能跟科技园一样。林晨往铺位里面看了一眼。里面是空的,上一家租户留了几面隔断墙,天花板的灯还是亮的,白光照在地砖上反射出冷光。科技园是快餐逻辑,人均三十到三十五,翻台率四点五以上。cbd要做中端,人均五十到六十。菜品要有变化,不能只靠十道菜打天下。
林枫点了一下头。他管了这么久的采购和成本,人均从三十跳到五十意味着什么,他比谁都清楚。食材成本要涨,装修标准要涨,服务标准也要涨。但毛利率不一定涨,因为cbd的租金比科技园贵一倍以上。
走,去看看你最看好的那个。林晨说。
林枫最看好的铺位在福华路和民田路的交叉口。
位置比前几个都好。铺位在两栋写字楼的底商,对面是一个中型商场,左边五十米是地铁站的二号出口,右边是一排高端住宅的门面。面积一百一十平米,比第一家店大了十五平米,比第二家店大了十五平米。格局方正,进门是门厅,往里走是用餐区,后面是厨房,中间用玻璃隔断隔开。
但租金也贵。每月四万八。
林晨站在铺位门口,没有进去。他先看外面的环境。左边是星巴克,右边是一家日式拉面店,斜对面是一家轻食沙拉店。三家的门口都有人在等位,星巴克的队伍排到了门外。他看了一眼手表,上午十点四十,离午高峰还有五十分钟,但已经有零星的人开始往写字楼里走了。
这个位置的午高峰人流,我测过三次。林枫翻出笔记本上的数据,工作日十一点半到一点半,经过门口的人流平均四百五十人每小时。是科技园中区的两倍。但这里面有多少会进快餐店,不好算。cbd的人吃午饭的选择更多。
林晨走进铺位。上一家租户是一家高端简餐,装修痕迹还在。地面铺了灰色瓷砖,天花板的灯管是新换的,厨房区域的排烟管道直径够粗,从天花板直通外墙。他敲了两下排烟管道,声音闷实。走到厨房区域,看了一下进深和宽度。厨房的面积比科技园两家店都大,能放三口灶。
三口灶。林晨在心里比划了一下,出菜速度能提百分之三十。高峰期同时出三份,翻台速度也能跟上。
他又走到用餐区,看了一下格局。一百一十平米的铺位,如果用餐区占七十平米,能放八到十张桌子。比科技园的两家店多两到三张桌子,但每张桌子的间距要拉大,cbd的客人对空间的要求更高。算下来,用餐区最多放九张桌子,四人桌六张,两人桌三张,最多同时接待三十人。
人均五十到六十,翻台率如果做到四点零,午市两个半小时的营收大概在六千到七千。林晨在手机上按了几个数字,加上晚市,全天营收能到一万二到一万五。月营收三十五万到四十万。
毛利呢?林枫问。
食材成本按百分之三十五算,比科技园高五个点。cbd的食材品质要提,不能用科技园的供应链。租金四万八,人力成本算八到九个人,加起来月成本大概二十万出头。净利润十五万到二十万。
林枫用红笔在笔记本上写了一行:预估月营收35-40万,净利润15-20万,回本周期4-5个月。
但他没有画圈,也没有打叉。他在那行字旁边写了一个问号。
风险比前两家大。林枫说,cbd的租金贵一倍,人力成本也高。如果翻台率做不到四点零,净利润直接腰斩。而且cbd的客群挑剔,菜品不好吃,他们不会来第二次。
所以菜品要变。林晨走出铺位,站在门口看对面的商场。科技园那十道菜不能直接搬到cbd来。白领的口味跟程序员不一样。程序员要的是快、饱、辣,cbd要的是品质、选择、体面。同样是回锅肉,科技园的做法可以重油重盐,cbd要减油减盐,摆盘要讲究。
林枫听完了,在笔记本上记了一行:菜品调整,减油减盐,增加轻食选项。
还有一点。林晨转过来看林枫,cbd的客人不只吃午饭。晚市和周末都要做。科技园的晚市只有三成营收,cbd的晚市至少占四成,周末还能再吃一成。这个模型的逻辑跟科技园不一样。
林枫点了一下头。他做了一辈子工程,最懂的就是不同地基上的房子不能套同一个图纸。科技园的模型是快餐模型,靠翻台率和出餐速度赚钱。cbd要做的是中端模型,靠客单价和全天运营赚钱。两个模型的目标函数不一样,参数也不一样。
两个人站在铺位门口又看了十分钟。十一点出头,从写字楼里出来吃午饭的人开始多了。林晨数了一下,三分钟内经过铺位门口的有六十二个人,其中三十多个看了铺位一眼。铺位现在空着,卷帘门半拉下来,但位置在路口,显眼。
回去算一下。林晨说。
回到第一家店已经是下午一点半了。
林浩正在厨房里出午高峰的菜,灶台上的油烟翻滚着,他左手颠锅右手拿铲,动作没有停顿。阿伟在旁边出快菜,出菜速度稳定在五分钟一份。小宇站在收银台后面,手指在ipad上点得飞快,把点单数据录入系统。他的速度比周小敏还快,但遇到客人问菜品推荐的时候还会愣一下,不知道该怎么介绍。
林晨走进来,在角落的桌子旁坐下来。林浩从厨房探出头看了一眼,点了下头,又缩回去了。午高峰还没结束,他没空出来。
小宇从收银台后面走过来,端了一杯水放在林晨面前。
大伯,你看铺位怎么样?
还在比。林晨喝了一口水,你最近在店里觉得怎么样?
小宇想了一下。前厅的东西基本都学会了。点单、收银、处理投诉,周姐教了我很多。但我发现一个问题。
我们两家店的菜单太简单了。十道菜,没有变化。科技园的客人吃三个月还能接受,但cbd的客人肯定不行。他们每天吃午饭,一周至少换三次口味。如果我们开cbd的店,菜单要扩充,至少十五到二十道。
林晨看了他一眼。
小宇是在店里待了快三个月之后说这番话的。前厅两个月,后厨一个月,他每个岗位都轮了一遍。他不是在乱说,他有数据。
你怎么知道的?
我在系统里看了数据。小宇拿出手机,调出晨枫管理系统的界面。两家店的会员复购率,第一个月百分之七十二,第三个月降到了百分之五十八。回落了十四个百分点。客人不是不满意,是吃腻了。十道菜的选择太少了。
林晨没有说话。他把小宇的手机拿过来看了一眼,屏幕上是他自己写的系统里导出的数据表。复购率的曲线确实在往下走,虽然幅度不大,但趋势是明确的。十道菜够支撑一家快餐店,但撑不住客人的新鲜感。
你继续说。
cbd的店,我觉得应该分三个时段。小宇的手指在屏幕上划了一下,午市主打套餐,三十八到四十八的价位,两荤一素一汤,出餐快,适合白领午休时间紧。下午茶时段做轻食和饮品,二十到三十的价位,填补午市和晚市之间的空档。晚市做单点,五六十的价位,菜品品质要上去,摆盘要讲究。三个时段三个模型,用同一批食材,但呈现方式不一样。
林晨放下手机,看着小宇。
三个月前这小子从高铁上下来的时候,还背着双肩包一脸茫然地说编程我不太喜欢。现在他站在收银台后面,用系统数据在说菜单策略。
你的数据是从哪里看的?林晨问。
我每天晚上会看一遍系统里的日报。小宇说,前厅和后厨的数据我都看。翻台率、出餐速度、点单频次、会员复购率。周姐只看营收和翻台率,但我觉得复购率和点单频次更重要。复购率决定了客人会不会再来,点单频次决定了客人点什么菜。
林晨点了一下头。他想起自己三年前刚开第一家店的时候,也是这样看数据。数据不会骗人,但数据也不能替你做决定。数据告诉你问题在哪里,解决方式要靠人。
你去叫林枫过来。林晨说。
林枫从后厨出来的时候,手里还拿着半根黄瓜。他在厨房里一边备料一边想cbd的方案,黄瓜是顺手拿来啃的。他在林晨对面坐下来,把黄瓜放在桌上。
小宇说的菜单扩充,你怎么看?林晨问。
林枫想了两秒。菜单扩充我能接受,但供应链要跟上。科技园的十道菜,食材采购是固定路线,每天拉一趟就够了。如果扩充到十五到二十道,食材种类多了,采购成本会涨,库存管理也复杂。
这个我想过了。林晨拿出手机,打开电子表格。cbd的店用科技园的供应链做基础配送,但轻食和晚市的食材单独采购。蔬菜和肉类走日采,调料和干货走周采。成本会涨百分之十五左右,但客单价从三十五提到五十,毛利率能覆盖。
林枫看了一眼表格上的数字。人力呢?cbd至少要八个人。科技园两家店加起来十一人,cbd再加八个,人力成本要涨不少。
八个人。林晨在表格上填了一个数字。前台三个人,后厨四个人,加一个店长。店长我打算让小宇做。
林枫抬头看了林晨一眼。小宇?他才来三个月。
三个月够不够,看他自己的表现。林晨看了一眼收银台后面小宇的背影,他今天说出来的东西,你三个月前说不出来。
林枫没有反驳。他想了一下,在笔记本上写了一行字:cbd店人力8人,店长候选人小宇。
但我不会现在就让他做店长。林晨补充了一句,先做副店长,跟着周小敏再学两个月。如果cbd的店能跑通,再提。
林枫嗯了一声,把黄瓜拿起来又啃了一口。
装修预算呢?林枫问。
cbd的装修不能跟科技园一样。林晨说,科技园是快餐逻辑,干净利落就行。cbd要有调性。不是搞高端装修,是让白领觉得坐在这里吃午饭不丢人。桌子用原木色,椅子用深灰色,灯用暖光。墙面留一面白墙,挂一两幅画。不花大钱,但有质感。
装修预算多少?
二十五万。林晨报了个数。比科技园第一家贵十万。地板、灯光、桌椅都要升级。厨房设备可以复用一部分,但cbd的灶要新的,三口灶加配套设备,十万左右。加上押金和周转金,总投入大概六十万。
林枫在笔记本上写完最后一行数字,把笔记本合上。他看了一眼窗外,科技园中区的午高峰已经过去了,路面上安静了不少。
六十万,月营收三十五到四十万,净利润十五到二十万。林枫把笔记本揣进口袋,回本三到四个月。比前两家快。
前提是翻台率能做到四点零,且人均五十以上。林晨把手机锁屏,任何一个参数掉下来,回本周期都会拉长。
两个人在店里坐了二十分钟,把cbd铺位的所有数据过了一遍。林枫的笔记本上新增了两页密密麻麻的数字,红色便利贴贴了四张,分别标着午市模型晚市模型轻食方案供应链调整。林晨在手机上的电子表格里加了三组参数,每一组对应一种营业场景,回本周期的数字从三个月到六个月不等。
装修方案我下周给你。林枫站起来,把黄瓜尾扔进垃圾桶。cbd的装修不能套科技园的模板,我得重新量。
嗯。下周五之前给我,我安排跟房东签约。
林枫点了一下头,走出店门。他的电动车停在路边,后备箱里塞着卷尺和笔记本。他骑上车,往cbd的方向去了。他要在晚高峰之前再去量一遍铺位,看看晚市的客流到底是什么样。
晚上八点,林晨在家里书房打开电脑。
投资系统的监控面板在屏幕右侧运行着,A股的数据跳着小幅波动的数字。他没有看,注意力全在左边打开的晨枫管理系统上。cbd新店的数据模型他建了三个版本:保守版日均营收一万,中性版日均一万二,乐观版日均一万五。三个版本的回本周期分别是五个月、四个月和三个月。
他在中性版的模型里调了几个参数。人均消费从五十五提到五十八,翻台率从四点零提到四点二,人力成本从八人减到七人半(店长兼前台)。净利润从十五万涨到了十七万五,回本周期从四个月缩短到三点五个月。
他盯着屏幕看了一会儿,把人均消费又改回了五十五。
不能太乐观。cbd的客群虽然消费力高,但选择也多。同一条街上有三家快餐店、两家日料店、一家轻食店、一家星巴克。晨枫快餐进去,要跟七家店抢同一批客人。靠什么抢?靠味道、靠速度、靠性价比。五十到六十的价位,在cbd能吃到回锅肉级别的现炒菜,还能在三五分钟出餐,这个组合是晨枫的护城河。
他把模型保存了,关掉电脑,走出书房。
客厅里苏婉在看电视,乐乐已经睡了。林晨在沙发上坐下来,接过苏婉递来的水杯。
cbd的店能做吗?苏婉问。她听林晨提过cbd的事。
能做。但不像科技园那么简单。林晨靠在沙发背上。科技园是快餐逻辑,翻台率是命脉。cbd是中端逻辑,客单价是命脉。两个模型的参数不一样,运营方式也不一样。
你让小宇去做?
先做副店长。林晨停了一下,他今天提了一个三时段的运营方案。午市套餐、下午茶轻食、晚市单点。他说出来的时候我在想,这小子三个月前还在厨房里看林浩切菜。
苏婉笑了一下。你当时不也是这样吗?被裁了三个月就学了AI。有些人就是需要被推一把。
林晨没有接话。他想起了自己被裁的那个下午,在地铁上攥着离职协议,手心出了汗。那是三年前的事了。三年前他什么都没有,只有三十万存款和一份离职协议。现在他有两家店、一个投资系统、一个部门总监的职位,还有一个站在收银台后面看数据的侄子。
手机响了一下。是林浩发来的消息。
哥,cbd的菜单我想好了。先出十二道,保留科技园的六道,加六道新菜。新菜我明天试做,你周末来吃。
林晨看了一眼消息,回了一个字:
然后他又打开系统看了一眼今天的数据。第一家店营收七千二,第二家店营收五千八,合计一万三千。比上周同期涨了百分之四。翻台率两家店都在四点零以上,出餐速度稳定在五分钟以内。
他把手机锁了屏,放在茶几上。
苏婉去厨房倒了一杯水回来,看了一眼林晨的神情。
你在想什么?
在想cbd的店开起来之后,三家店合计月营收能到多少。林晨说。科技园两家店现在月营收二十八万,cbd如果做到三十五万,三家店合计六十三万。净利润二十五到三十万。
苏婉没有接数字的话。她靠在沙发上,看了一眼客厅窗外的夜景。远处鹏城湾的水面映着灯光,几栋写字楼的灯火还在亮着。
你有没有想过,开第三家店的时候,你就不只是开一家快餐店了。苏婉说。
什么意思?
你第一家店是快餐,第二家店也是快餐。但第三家店是cbd的中端定位。从快餐到中端,不是多开一家店的事,是在做品牌升级。你不再是那个只卖三十块钱快餐的人了。
林晨想了一下。苏婉说得对。三家店,三个定位,三个模型。科技园南区是快餐模型,科技园中区是快餐模型,cbd是中端模型。如果cbd的店跑通了,以后还会有第四家、第五家,每一家都可能是不一样的模型。他不是在复制快餐店,他是在建一套能跑不同模型的系统。
品牌的事等cbd的店跑通再说。林晨说。先把数据跑出来。
苏婉没有再说什么。她端起水杯喝了一口,继续看电视。
林晨靠在沙发上,脑子里的数字还在跳。六十万的总投入,三到四个月的回本周期,七个人的人力配置,十五道菜的菜单,三时段的运营方案。这些数字在他脑子里排着队,像代码里的函数调用一样,一个接一个地执行。
他的手机又响了一下。这次是林枫发来的,只有一行字:
刚从cbd回来。晚市的人流比我想的多。这个铺位可以拿。
林晨看完之后把手机翻过来扣在沙发上。
三家店了。
他闭上眼睛,脑子里浮现出两年多前第一次走进科技园中区那间空铺位的画面。那时候铺位里满是灰尘,排烟管道锈迹斑斑,林枫拿着卷尺在量面积,他站在门口数人流量,阳光照在他的墨镜上。
现在他站在cbd的路口数人流量,林枫拿着卷尺量面积,小宇站在收银台后面看数据。人多了,铺位大了,租金贵了,定位变了。但做事的方式没有变——数人流量,量面积,算模型,做决定。
他睁开眼,从沙发上站起来。
我去书房把cbd的模型再调一遍。他说。
苏婉嗯了一声,目光没有离开电视。
林晨走进书房,关上门,打开电脑。屏幕上晨枫管理系统的界面亮了起来,三家店的模型参数在表格里排成三列。第一列是科技园中区,第二列是科技园南区,第三列是cbd。第三列的数字还是空白的,等着他一个一个填进去。
他开始填。
租金、面积、人力、翻台率、人均消费、食材成本、毛利率、净利润、回本周期。每一个数字都是他在铺位门口站着数出来的,在电子表格上算出来的,在脑子里推演过三遍的。
填到最后,回本周期的数字跳了一下:3.7个月。
他盯着这个数字看了两秒,然后在旁边加了一行字:保守估计4.5个月。
做决策的时候永远看保守版。这是他写代码的时候学到的——永远假设最坏的情况,然后在最坏的情况下还能跑得通,那这个决策就是对的。
他保存了模型,关掉电脑。书房里安静下来,只有窗外远处传来的车流声。
明天他要去见房东,谈租金和租期。林枫会带着装修方案过来。小宇会继续在收银台后面看数据。林浩会继续在灶台前面出菜。每个人都有自己的位置,每个人都在做自己的事。
三家店。第三个模型。第三个开始。
第357章 品牌升级
cbd的店签了合同。
房东是个四十来岁的女人,穿着一件亚麻衬衫,手腕上戴着一块小表。她坐在中介公司的会议室里,翻着合同条款,翻了两遍,抬头看了林晨一眼。你就是那个写书的?
林晨点了一下头。
我老公买了你那本。房东把合同翻到最后一页,在签名的位置写了自己的名字,他说写得还行。
签完字出来,林枫把合同复印件折好揣进口袋。两个人站在福华路的路口,五月的阳光从两栋写字楼的间隙里照下来,打在人行道的灰白色地砖上,热气蒸腾。
装修方案后天给你。林枫说。
这次我想换一个风格。林枫翻开笔记本,把夹着蓝色便利贴的那一页给林晨看。上面画了一个简单的平面图,旁边写了几行小字:原木色桌面保留,椅面换成深灰布艺,灯具从白光换成暖光,墙面留一面白墙做品牌展示区。科技园两家店是快餐逻辑,亮、白、干净,出餐快、翻台快。cbd不一样。cbd的人中午吃饭也要体面,灯光不能太亮,桌椅不能太硬,坐下要有坐得住的感觉。
林晨看了一眼平面图,没有意见。林枫做装修做了二十多年,第一家店的布局是他量出来的,第二家店的出餐口是他改的,他对空间的理解比林晨深。林晨负责数据和模型,林枫负责空间和质感,两个人各管一段。
品牌展示区做什么?林晨问。
林枫愣了一下。还没想。你想放什么?
林晨没有回答。他站在路口看了一眼铺位的方向,那个七十二天之后会变成晨枫快餐第三家店的空铺位,卷帘门拉着,门口的地面砖缝里长了一小撮草。他转身往停车场走,走了两步停下来。
你有没有觉得我们少了一个东西?林晨说。
什么东西?
名字。
林枫没有听明白。晨枫快餐不是名字吗?
晨枫快餐是店名,不是品牌名。林晨转过来看着他。你去商场里看,星巴克不叫星巴克咖啡店,叫星巴克。喜茶不叫喜茶奶茶店,叫喜茶。店名是告诉别人你是干什么的,品牌名是让别人记住你。我们三家店了,别人提起我们的时候说的是科技园那家快餐店,不是。
林枫想了一下。你是说商标?
不只是商标。林晨从口袋里掏出手机,打开晨枫管理系统的界面。三家店的数据排在三列,第一列中区店,第二列南区店,第三列cbd店还是空白。他往下滑,看了一眼会员系统的数据。三家店合计会员一千四百二十三人,会员复购率百分之五十八,但在会员昵称那一栏里,备注五花八门——有写中区老顾客的,有写南区上班的的,有写每天中午来的。没有一个统一的称呼。
三家店了。林晨把手机收起来,不是一家店加一家店再加一家店,是三根手指捏在一起才是一只手。从现在开始,不管是中区、南区还是cbd,别人提起的时候应该只有一个名字。
林枫站在他旁边,手里还捏着那个蓝色便利贴。他想了两秒,说了一句:那商标要赶紧注册。我之前帮一个工地注册过建筑类别的,流程不复杂,但时间长,至少要半年以上。
你知道在哪个类别注册?
餐饮是第四十三类。林枫说,住宿和餐饮服务。我查过。
林晨看了他一眼。这个堂哥做了一辈子工程,脑子里装的不是钢筋水泥就是预算报表,现在开始查商标分类了。
四十三类只是基础的。林晨说,还有第二十九类,食品;第三十类,方便食品;第三十五类,广告销售;第四十四类,餐饮管理。四个类别一起注册,防止别人抢注。
四个类别一起注册,费用不少。
多少钱?
一个类别注册费三百,四个类别一千二。如果找代理公司,加代理费大概三千到五千。
林晨在手机备忘录上记了一行:商标注册,四个类别,找代理。
他收起手机,往停车场走。走了几步又停下来,回过头看林枫。
商标注册了之后,还有一个事要做。
什么?
VI。
VI是林枫提出来的,但不是林枫做的。
林枫提出来的时候是在第二天晚上,三个人在第一家店的厨房里吃晚饭。林浩做了三个菜——回锅肉、酸辣土豆丝、西红柿炒蛋,跟菜单上的一模一样,但他给自己多加了一碟泡菜,是那天早上从坛子里捞出来的。酸味刚正,没有甜味,萝卜皮切得薄,咬下去脆。
VI是什么?林浩夹了一块回锅肉问。
视觉识别。林晨用筷子在桌面上画了一个圆,就是你看到星巴克的绿色美人鱼,不用看字就知道是星巴克。看到麦当劳的黄色拱门,不用看字就知道是麦当劳。这就是VI。颜色、字体、Logo、店面风格,所有东西统一,让客人一眼就能认出你。
林浩想了一下。我们现在的门头不是统一的吗?中区店和南区店的招牌都是晨枫快餐四个字,白底红字。
白底红字是招牌,不是VI。林晨放下筷子。招牌只是告诉你这家店叫什么。VI是让别人看到你的颜色、你的字体、你的Logo,不需要看到名字,就知道你是晨枫。
那我们现在有VI吗?
没有。林晨说。中区店的门头是林枫自己设计的,白底红字,正方体字。南区店也是白底红字,但字体不一样,中区用的是黑体,南区用的是宋体。两家店的颜色也不完全一样,中区偏暖白,南区偏冷白。两家店的菜单排版也不一样,中区是竖版,南区是横版。你说它们是同一家店,但客人看不出来。
林枫在旁边听着,没有反驳。中区店的门头是他做的,南区店的门头也是他做的,做的时候没有想太多,觉得白底红字清楚就行。两家店的字体不一样是因为找的打印店不一样,一家用的是默认黑体,另一家老板说宋体更精神,他也没多想就用了。
cbd的店不能这样。林晨继续说。三家店了,从现在开始,所有东西都要统一。门头的颜色、字体、大小。菜单的排版、字号、间距。店内的灯光明度、桌椅的款式和摆放。员工的工服颜色和胸牌样式。从进店到出店,客人看到的每一样东西都要长一样。
林浩把泡菜碟往林晨那边推了一下。那Logo呢?我们现在的Logo就是晨枫快餐四个字。
Logo要重新设计。林晨说。四个字太长了,做招牌行,做Logo不行。Logo要短,要好看,要让人一眼记住。
你想叫什么?
晨枫林晨说。两个字,简短,好记。晨是早晨,枫是枫叶。早晨的枫叶,有朝气。
林浩在手机上搜了一下晨枫商标,出来一堆结果。他翻了两页,说:商标注册要查重名。如果已经有人注册了第四十三类,我们就不能用这个名字。
先查。林晨说。
商标查重是第二天做的。
林晨找了一家知识产权代理公司,对方发来一份查重报告。第四十三类餐饮住宿下面,两个字已经被注册了——但注册的公司在湖南,经营范围是中餐馆,跟深圳的快餐没有冲突。代理公司的法务说,虽然类别相同,但经营范围有差异,可以尝试注册,成功率大概在百分之七十左右。如果加急办理,注册周期可以缩短到八个月。
百分之七十不够。林晨看着报告上的数字说。
代理的法务在电话那头停了一下。林先生,商标注册没有百分之百的。审查员对相似经营范围的判定有一定主观空间,我们能做的就是把材料准备充分,提高通过率。
第四十三类注册之外,第二十九类、第三十类、第三十五类、第四十四类也要同时注册。林晨翻了一下手里的分类表,这四个类别的有没有被注册?
法务查了两分钟。第二十九类和第三十类没有被注册。第三十五类有近似商标,第四十四类没有。
那五个类别一起注册。第四十三类如果被驳回,做异议答辩。其他四个类别走正常流程。
五类同时注册,加上代理费,总费用大约一万五。
可以。林晨说完挂了电话。
他在备忘录上把商标注册的进度标了一下:第四十三类存在冲突,需做异议准备;其他四个类别正常推进。然后他在备忘录下面加了一行:VI设计找谁做?
他想了两个人选。第一个是t厂的设计部门,但他否了。t厂的设计师做的是互联网产品的UI,不是餐饮品牌的VI,审美逻辑不一样。第二个是赵刚推荐的一个人,叫陈雪,做平面设计的,在一家品牌公司干过三年,去年刚出来自己做工作室,专做小品牌的全案设计。
林晨加了陈雪的微信,发了一条消息过去:你好,我是林晨,想做一家快餐品牌的VI设计。方便聊聊吗?
陈雪的回复很快:林晨老师?写《35岁程序员的AI逆袭》的那位?
林晨看到这条消息的时候愣了一下。他想了两秒,回了一句:
陈雪发了一个微笑的表情,然后说:方便的,什么时候见面聊?
见面是周三晚上,在第一家店的用餐区。
陈雪准时到了。她三十岁出头,穿着一件黑色卫衣和牛仔裤,背一个帆布包,包里装着一台笔记本电脑和一本A4大小的速写本。她走进店里的时候先看了一圈门头、灯箱、菜单、桌椅,然后走到收银台前看了一眼小宇的工服和胸牌,最后在角落的桌子旁坐下来,把速写本翻开。
林晨坐在她对面,林枫坐在旁边。林浩在厨房里出菜,不参与这部分的讨论。
我先说一下需求。林晨没有寒暄,直接进入正题。我们现在有两家店在运营,第三家店在下个月开业。三家店都是快餐,但定位不一样——中区偏程序员,南区偏白领,cbd偏中端。我需要一套VI系统,让三家店看起来是同一个品牌,但各自有各自的调性。
陈雪点了一下头,在速写本上画了一个三角形,三个角分别标了、、cbd你的意思是,品牌是统一的,但调性是有层次的。
林晨说。就像一个产品线,有基础版、标准版和pro版。三个版本长一样,但配置不同。客人走进任何一家店,第一眼就知道这是晨枫。但中区店的人知道这是基础版,南区店的人知道这是标准版,cbd店的人知道这是pro版。
陈雪在三角形中间写了一个词:品牌内核。
品牌内核是什么?她问。
林晨想了两秒。工程师做餐饮。
陈雪的笔在纸上停了一下。工程师做餐饮?
林晨说。我们不是传统餐饮人。我是写代码的,我堂哥是做工程的,我侄子是学厨出身的。我们三家店的核心竞争力不是味道——味道谁都能做——是效率、数据和标准化。客人来晨枫不是因为我们的回锅肉比别人好吃多少,是因为我们的出餐速度快、菜品稳定、数据驱动的菜单优化让客人觉得每次来都不会踩雷。这是工程师的思维,也是晨枫跟别的快餐不一样的地方。
陈雪在速写本上写了两行字:品牌内核=工程师做餐饮。差异化=效率+稳定+数据驱动。
颜色呢?陈雪问。你有偏好的颜色吗?
林枫在旁边插了一句:科技园两家店现在用的是红色。
红色是招牌的颜色,不是品牌色。林晨说。红色太重了,快餐可以用,但cbd的中端定位不适合大面积红色。我想用一个偏冷的颜色。蓝色?不行,太多科技公司用蓝色了。绿色?绿色代表健康,可以,但太浅的绿色没有质感。
陈雪在速写本上画了几个色块。她翻了两页,指着其中一个色块说:你看看这个。
色块是一种偏深的绿色,比草绿深一点,比墨绿浅一点,有点像枫叶刚长出来时的颜色,带着一点灰调。
这叫晨枫绿。陈雪说。偏深的绿,带一点灰调。不是那种鲜亮的翠绿,也不是暗沉的墨绿,中间的位置。既不跳,也不闷。放在快餐店里显得干净,放在中端店里显得有质感。
林晨看了一眼色块,没有立刻表态。他拿出手机拍了一张照片,打开晨枫管理系统的后台,把色块跟中区店和南区店的实景照片拼在一起看了一下。绿色跟白墙搭在一起不突兀,跟原木色桌面放在一起有层次感,跟深灰色椅子并在一起显得稳重。
可以。他说。
陈雪在色块旁边写了一个备注:主色——晨枫绿,pantone 555c,cmYK(100,10,50,40)。
辅助色呢?她问。
灰色。林枫说。他在旁边听了一路,这句话是他插的第一句有建设性的话。灰色是工程最常用的颜色。混凝土、钢筋、石材,全都是灰色。灰色不代表无聊,灰色代表扎实。
陈雪在速写本上又画了一个色块。深灰色,比黑色浅两个色号,沉稳、干净。她在旁边写:辅助色——枫岩灰。
字体呢?林晨问。
你现在的门头用的是黑体和宋体,不统一。陈雪翻到下一页,VI字体建议用一款无衬线字体,横平竖直,笔画粗细均匀,不带装饰。快餐的字体要简洁、有力、可识别。我推荐思源黑体,免费商用,笔画方正,跟的品牌调性匹配——工程师、效率、标准化。
Logo呢?
陈雪翻到速写本的最后几页。上面画了三四个草图,是用铅笔快速勾出来的,线条不规整,但结构清晰。第一个是一片枫叶的轮廓,里面嵌了一个字。第二个是两个字的变体设计,字的上半部分变成了一片枫叶。第三个是纯粹的几何图形——一个六边形,里面有一片简化的枫叶剪影。
这是初步的草稿。陈雪指着第三个说,我个人倾向第三个。六边形代表工程、结构、稳定。枫叶代表品牌名。两个元素合在一起,既是Logo,也是品牌理念的视觉表达。
林晨看了一会儿,指了一下第三个。这个。
林枫也凑过来看了一眼。六边形好。像螺丝,像螺母,像工程图上的标注。
陈雪在第三个草图旁边打了一个勾,然后合上速写本。初稿我三天后给你。包含Logo设计、色彩规范、字体规范、菜单排版、门头方案、工服设计、胸牌样式、外卖包装设计。总费用一万二。
可以。林晨说。
陈雪把速写本装进帆布包,站起来准备走。她走到门口的时候回头看了一眼店里的门头——白底红字,正方体,晨枫快餐四个字在日光灯下亮着。她看了一秒,没有说什么,推门出去了。
林枫去厨房里端了一碗酸辣粉出来,放在林晨面前。一万二做一套VI,贵不贵?
不贵。林晨拿起筷子,VI是一次性投入,但品牌价值是长期资产。我们做三家店的时候不做VI,开到十家的时候再想做,成本是现在的十倍。
林枫嗯了一声,把筷子掰开,夹了一块粉条放进嘴里。
商标注册的事你别管了,我来跟进。林晨说。VI设计你跟陈雪对接,她是专业做这个的,你把你的装修方案跟她对一下,门头、灯箱、菜单架这些视觉元素要统一。
我知道。林枫把碗里的粉条吃完了,站起来往厨房走。走了两步回过头来,说了一句:你说的对,三根手指捏在一起才是一只手。
他进了厨房。林晨坐在用餐区把酸辣粉吃完,然后打开手机看了一眼cbd店的数据模型。三个版本的回本周期排在屏幕上:保守版5个月,中性版3.7个月,乐观版3个月。他在中性版的参数旁边又加了一列:VI设计完成后,品牌辨识度提升,预估客流增加10%-15%。
他把手机锁屏,筷子放在碗上,碗推到桌角。
酸辣粉的味道还留在嘴里,酸、辣、咸,跟菜单上的一模一样。
三天后,陈雪把VI初稿发了过来。
林晨在书房里打开电脑,一个pdF文件,二十六页。第一页是Logo——六边形边框,内部是一片简化的枫叶剪影,下方是两个字,思源黑体,晨枫绿。整个Logo没有多余的笔画,干净,方正,跟林晨想的一样。
第二页是色彩规范。主色晨枫绿,辅助色枫岩灰,点缀色暖白。三种颜色的cmYK值、RGb值、十六进制色值全部标好,旁边附了在不同材质上的效果对比——门头灯箱用晨枫绿底白字,菜单用白底晨枫绿字,工服用晨枫绿底枫岩灰字。
第三页是字体规范。标题用思源黑体bold,正文用思源黑体Regular,数字用dIN pro。所有字体都是免费商用,不需要额外授权费。
第四页到第十页是Logo在不同场景下的应用。门头、灯箱、菜单、外卖袋、打包盒、工服胸牌、名片、微信公众号头图。每一个场景都有效果图,标注了尺寸、间距、对齐方式。门头的效果图是一个六边形Logo在左侧,晨枫快餐四个思源黑体在右侧,晨枫绿底白字,灯箱发光均匀,没有死角。
林晨一页一页地看完,二十六页,每一页都看了。看完之后他没有说好或者不好。他打开微信,给陈雪发了一条消息:Logo的枫叶剪影再简化一下,现在线条偏多了。六边形边框加粗0.5个点。字体没问题。颜色oK。
陈雪回复了一个,然后说:门头的晨枫快餐四个字,要不要考虑只留两个字?
林晨想了一下。
晨枫
他放下手机,靠在椅背上。书房里很安静,窗外鹏城湾的水面在夜色里看不到了,只有远处几栋写字楼的灯火在亮着。苏婉在客厅看电视,声音调得很低。乐乐已经睡了。
他闭上眼睛,脑子里浮现出三家店的画面。中区店、南区店、cbd店。三家店不同的位置、不同的客群、不同的模型,但门头上都挂着同一个六边形Logo,同一个晨枫绿底白字,同一个两个字。
三家店。同一个名字。同一套颜色。同一个Logo。
品牌。
他睁开眼,在备忘录上写了两行:
商标注册——五类同时申请,代理费用一万五。 VI设计——陈雪工作室,总费用一万二。
两笔加起来两万七。三家店合计投入超过一百二十万,两万七的品牌费用只占百分之二点二五。
他在两行字下面又写了一行:
cbd店开业后,三家店统一更换VI。中区店和南区店门头、菜单、工服、外卖包装同步更换。预计费用一万八。
写完之后他看了一眼窗外。写字楼的灯火跟每天晚上一样,一格一格地亮着,有人在加班,有人在开会,有人在写代码。他以前也是那些灯里的一格。现在他坐在书房里,做的是另一件事。
他关掉备忘录,打开晨枫管理系统的后台。三家店的数据在屏幕上排成三列,第一列中区店,第二列南区店,第三列cbd店的参数还是空白。但品牌那一栏,三个店共享同一个值。
晨枫。
两个字,六边形,晨枫绿。
他看了一会儿,把电脑合上,走出书房。
苏婉靠在沙发上翻手机,电视开着但没人看。林晨在她旁边坐下来,把手机递给她看。
VI初稿。他指了一下屏幕。
苏婉接过手机,一页一页地翻。翻到Logo那一页,她停了两秒,看了一眼六边形的枫叶剪影。
绿色的?她问。
晨枫绿。
苏婉看了一下颜色。好看。不土。
不土是什么标准?
就是不像快餐店。苏婉把手机还给他,像一家有品味的店。
林晨没有接话。他靠在沙发上,看了一眼茶几。茶几上还是那本《35岁程序员的AI逆袭》,白底黑字,封面朝上,旁边压着苏婉的茶杯。
品牌升级的事我跟林枫说了。林晨说。VI设计他来对接,商标注册我来跟进。cbd店开业之后,三家店统一换VI。
苏婉嗯了一声,继续翻手机。
你说我之前回避了。林晨忽然说。
苏婉抬头看了他一眼。什么?
上次你说,开第三家店不是多开一家店的事,是在做品牌升级。我当时说等cbd店跑通再说。
苏婉把手机放下,看着他。你现在不用等了?
不用等了。林晨说。商标注册要八个月。VI设计要半个月。换VI要两个月。等我什么都跑通了再做,黄花菜都凉了。品牌不是等出来的,是做出来的。三家店就是一个起点,十家店就是一条线,一百家店就是一个面。品牌要从第一家店就种下去,等长出芽再浇水就晚了。
苏婉看着他,没有说话。她看了一眼手机屏幕上还亮着的VI初稿,晨枫绿在暖色灯光下显得沉静,不像快餐店的红黄配色那样吵,倒像一杯放凉了的绿茶。
那就做。苏婉说。
林晨点了一下头。他把手机放在茶几上,VI初稿的Logo还亮着。六边形,枫叶,晨枫绿。三个元素拼在一起,像一行代码的第一行——简洁、规范、可扩展。
他站起来,往书房走。走到门口回过头,苏婉还在沙发上,手机屏幕上的光照在她脸上。
周敏说明天有家媒体想采访。林晨说。
你去吗?
不去。
苏婉笑了一下。你永远说不去。
书是书,品牌是品牌。两件事。
他走进书房,关上门。门关上的时候,客厅里的电视还在响着,声音很低,像背景白噪音。他坐到电脑前,打开晨枫管理系统的后台,在品牌管理那一栏里点了一个新建按钮。
品牌名称:晨枫。
品牌类别:快餐/中端餐饮。
注册状态:申请中。
VI状态:设计中。
他填完最后一行,按了保存。屏幕上跳出一条确认提示:品牌信息已保存。
他看了一眼提示,关掉弹窗。
三家店了。名字有了,颜色有了,Logo有了。从今天开始,不再是一个人开了一家店又开了一家店再加了一家店。
是一个品牌。
他站起来,走到窗前。鹏城湾的夜色在窗外铺展开来,远处有几盏灯在亮着,不知道是写字楼的还是住宅的。他看了一会儿,回到电脑前,打开了cbd店的数据模型。
保守版回本5个月。中性版3.7个月。乐观版3个月。
他在中性版的参数旁边又加了一列,标题是:品牌效应——预估提升10%-15%。
数字跳了一下。回本周期从3.7个月变成了3.4个月。
他盯着这个数字看了两秒。然后在旁边加了一行字:
保守估计4个月。
做决策的时候永远看保守版。
他保存了模型,关掉电脑。书房里安静下来,只有窗外远处的车流声。
明天他要去代理公司签商标注册的委托书。后天林枫会带着装修方案过来。下周陈雪会出VI终稿。下周小宇开始做cbd店的副店长培训。下周林浩会试做六道新菜。
每个人都在做自己的事。
品牌不是一个Logo或者一个颜色。品牌是所有人做的事加在一起,然后被一个名字记住。
晨枫。
他关了书房的灯。
第358章 中央厨房
商标注册的委托书签完那天,林晨在回家的路上接到了林枫的电话。
中区店今天出了一件小事。林枫在电话里说。
什么事?
回锅肉的酱料。中午出餐的时候,阿伟调的酱料偏咸了。不是大问题,但口感跟之前不一样。有两个老顾客跟我提了,说今天的回锅肉味道不对。
林晨握着方向盘,没有说话。
我尝了一下,确实偏咸。林枫继续说,阿伟说他是按你给的配比调的,但今天酱油的批次换了,同样的量,出来的咸度不一样。他没注意到。
后来呢?
后来林浩发现之后调了一下,下午出餐就正常了。但这件事说明一个问题——现在三家店的酱料都是林浩一个人调的。中区店的酱料是林浩每周调一次分装送过去,南区店的也是。cbd店刚开,酱料也是林浩送过去的。三家店的所有酱料,全靠林浩一个人。他哪天生病了、请假了、忙不过来了,三家店的味道就断了。
林晨把车停在小区的地下车库,熄了火,但没有下车。
你是想说中央厨房的事。他说。
林枫的声音在电话里很稳。三家店了,林浩一个人盯酱料和底料,这不是长久之计。我今天看了一下,光是酱料、底料、腌料这三样,林浩每周要花两个下午的时间调。加上备料、出菜、带新人,他一周的时间排得满满当当。cbd店的新菜也是他在研发,但他哪有精力?
林晨靠在座椅上,看着车库顶上的消防管道。灰色的管道在白色灯光下显得很整齐,每隔三米有一个喷淋头,像一排等距排列的节点。
我之前在t厂做系统架构的时候,他说,有一个原则叫单点故障。一个系统里如果有一个节点是所有数据的必经之路,那这个节点挂了,整个系统就挂了。林浩现在就是这个单点故障。
那怎么办?
消除单点故障只有两个办法。林晨说。第一个办法是冗余——再培养一个人能调酱料,两个人互为备份。但酱料不是代码,写一份文档出来照着做就行。酱料的口感取决于人的手感和经验,培养一个能调出跟林浩一样酱料的人,至少要半年。第二个办法是集中——把酱料、底料、腌料的调配集中到一个地方做,做好之后配送到三家店。门店不需要再自己调酱料,只需要接收半成品,加热出菜。
电话那头安静了两秒。
你说的集中,就是中央厨房。林枫说。
林枫没有马上说话。林晨听到了电话那头有翻纸的声音,大概是林枫在翻笔记本。
我之前想过这个问题。林枫说。两家店的时候还能靠林浩跑,三家店已经有点吃力了。如果以后开第四家、第五家,林浩更跑不过来。但中央厨房不是小事,投入大、周期长、管理复杂。你现在还在t厂上班,能分出精力来管吗?
林晨想了一下。我现在确实分不出太多精力。但中央厨房这件事不是今天想做明天就能做好的,需要一个规划的过程。我先提出来,你心里有个数。等时机到了,我们再正式推进。
林枫说。我先留意一下龙岗那边的仓库,看看有没有合适的。
不用急。林晨说。先把数据跑稳。中央厨房的前提是三家店的数据都稳了,需求明确,才能做。
他挂了电话,下车,走进电梯。电梯里的广告屏在播一条房产中介的广告,画面是一套精装修的三居室,价格标着六百八十万起。他看了一眼就移开了视线。
回到家,苏婉在客厅里批改作文。乐乐已经睡了,卧室的门半开着,台灯的微光从门缝里透出来。
林晨换了鞋走进来,在沙发上坐下来。苏婉抬头看了他一眼,继续批改。
商标注册委托书签了。林晨说。
多少钱?
五类一起注册,加代理费,一共一万五。
苏婉嗯了一声,在作文本上画了一个红圈。
林枫今天跟我说了一件事。林晨说。中区店的回锅肉酱料偏咸了。
苏婉手里的红笔停了一下。偏咸?
阿伟调的酱料,因为酱油批次不同,出来的咸度不一样。林浩发现之后调了,下午恢复正常。但这件事说明一个问题——三家店的酱料全靠林浩一个人。他是单点故障。
苏婉把红笔放下,看着他。你打算怎么办?
中央厨房。林晨说。把酱料、底料、腌料的调配集中到一个地方做,做好之后配送到三家店。门店只负责加热出菜,不需要再自己调。
苏婉想了一下。这跟开第四家店不一样。中央厨房是做供应链。
我知道。
供应链的风险比开店大。苏婉说。开店,一家亏了关掉就行。供应链,中央厨房一出问题,三家店同时断供。酱料断了,三家店的回锅肉全部出不了。底料断了,三家店的酸菜鱼全部出不了。你把鸡蛋放在一个篮子里,这个篮子翻了,一只鸡蛋都不剩。
林晨点了一下头。苏婉说的跟他想的一样。单点故障从林浩一个人身上转移到了中央厨房一个点上,风险没有消除,只是转移了。但有一个本质的区别——林浩是一个人,人会生病、会请假、会离职,单点故障是必然的。中央厨房是一个系统,系统可以做冗余、可以做备份、可以做应急预案。系统的故障率比人低,而且系统出了问题可以修,人出了问题只能等。
你说得对。他说。中央厨房是单点,但系统的单点可以加冗余。林浩的单点是人的单点,人的单点加不了冗余。
苏婉没有反驳。她把作文本翻到下一页,看了一行,画了一个勾。
你打算什么时候做?
不急。林晨说。先规划。中央厨房的投入不是小数目,要做选址、做预算、做设备清单、做改造方案。这些事不着急做,但可以提前想。
苏婉嗯了一声,继续批改作文。林晨靠在沙发上,看着天花板。天花板上那道裂缝还在,从灯的位置延伸到墙角。他看了几秒,把视线移开。
周六上午,林晨去了南区店。
他不是来看数据的,数据在手机上就能看。他来看林浩出菜。
午高峰还没到,厨房里在做备料。林浩站在案板前切肉丝,刀起刀落的节奏很稳,每一刀的间距几乎一样。他面前码着三堆肉丝,一堆偏粗,一堆中等,一堆偏细。偏粗的是中区店要的,中区的客群喜欢大口吃肉;中等的是南区店的;偏细的是cbd店的,cbd的客群注重口感,细丝更容易入味。
三堆肉丝,三个标准。一个厨师,三个店。
林晨站在厨房门口看了五分钟。林浩没有注意到他,全神贯注地切完最后一刀,把刀放下,拿毛巾擦了擦手。他抬头才看到林晨。
哥,你来了。
我来看一下备料。林晨走进厨房,看了一眼案板上的三堆肉丝。三家的肉丝都是你切的?
酱料也是我调的,底料也是我配的,腌料也是我腌的。林浩说完,自己苦笑了一下。每天光备料就要花三个小时。三家店的酱料配方虽然一样,但量不一样,中区店一桶酱料用五天,南区店用四天,cbd店用三天。每家的分装、标注、送货车次都不一样。
他走到冷柜旁边,拉开门。冷柜里码着十几个保鲜盒,每个盒子上贴着标签,写着中区回锅肉酱南区酸菜鱼底cbd宫保鸡丁腌料,下面是日期和保质期。
你看。林浩指着保鲜盒,这些全是这周要送出去的。中区店周二送一次、周五送一次。南区店周三送一次、周六送一次。cbd店周一送一次、周四送一次。每周七天,我有四天在备酱料和底料,剩下的时间出菜、研发新菜、带新人。
林晨看着冷柜里的保鲜盒,一个一个地数。十七个。十七个保鲜盒,分属三家店、四种酱料、三种底料、两种腌料。每一个盒子上都有林浩手写的标签,字迹工整,日期清晰。
你每周花多少时间在酱料和底料上?林晨问。
不算调配时间,光分装和配送,每周至少十个小时。林浩关上冷柜门。加上调配的时间,每周十五到二十个小时。
林晨在心里算了一下。林浩每周工作六天,每天十到十二个小时,一周总工时六十到七十二小时。其中十五到二十个小时用在酱料和底料上,占总工时的四分之一。这四分之一的时间,如果用中央厨房来做,可以被流程化和标准化,释放出林浩的时间和精力。
如果有一天你不在呢?林晨问。
林浩愣了一下。你什么意思?
我是说,如果你有一天生病了、请假了、或者忙不过来了。三家店的酱料和底料怎么办?
林浩想了几秒。可以让阿伟顶。阿伟现在能调酱料了,但口感差一点。调出来不是我那个味道,老顾客能尝出来。
所以现在三家店的味道,全系在你一个人身上。
林浩没有说话。他靠在案板上,看着冷柜上的标签。那些标签是他一笔一笔写上去的,每个字都认得清,每个日期都对得上。但如果他哪天写不了了,这些标签就没了。
我知道你想说什么。林浩开口了。你想说中央厨房。
你怎么知道?
林枫跟我说了。林浩把毛巾搭在肩上,拿起水壶灌了一口水。他说三家店的酱料全靠我一个人,单点故障,得想办法。我说你说得对,但我不想做流水线。
林晨看着他。为什么?
林浩放下水壶,走到案板前。案板上还码着三堆肉丝,他伸手把最细的那堆拨了一下,肉丝在案板上散开,几根掉到了地上。
因为灶上的火是活的。他说。同样一道回锅肉,我调的酱料今天和明天可能有细微的差别。今天酱油咸一点,我多加半勺糖;明天豆瓣酱鲜一点,我少加一点生抽。这些微调是我在灶台上凭手感做的,不是按配方表称出来的。如果变成中央厨房统一调配,每一份酱料的配比都要精确到克,那我灶台上的手感就没有了。
林晨听完了,没有立刻反驳。
他走到冷柜旁边,拉开门,从里面拿出一个保鲜盒。盒子上写着中区回锅肉酱,日期是昨天。他打开盖子,用手指蘸了一点酱料放在舌尖上。
咸,微甜,豆瓣的鲜味很足,后味有一点点辣。
好吃吗?林浩问。
好吃。林晨说。但你有没有想过一个问题——你现在调的每一份酱料,味道都不完全一样。中区店和南区店的酱料,配比是一样的,但因为分装的时间不同、保存的温度不同、发酵的时间不同,出来的味道有细微的差别。这些差别你自己能尝出来,老顾客也能尝出来。但你有没有问过那些第一次来吃的人,他们尝出来了吗?
林浩想了一下。第一次来的人,尝不出来。
对。第一次来的人,他们脑子里没有标准。他们不知道今天的回锅肉跟你昨天做的有什么区别,他们只知道这碗回锅肉好不好吃。但老顾客脑子里有标准。他们知道你的回锅肉应该是什么味道,如果偏了,他们能尝出来。
所以你的意思是——
所以你的手感和微调,不是不需要了,是换了一种方式。林晨把保鲜盒放回冷柜,关上门。中央厨房做的不是消灭你的手感,是把你的手感变成标准。酱料的配比按你定的标准来,但最后的微调留给你。你在中央厨房定标准、做品控、试味,确保每一份半成品出库之前都跟你亲手做的一样。门店只负责加热出菜,不需要再自己调酱料。你的时间从每周十五到二十个小时的酱料调配里释放出来,去做更重要的——新菜研发、标准制定、人员培训。
林浩站在案板前,没有说话。他看着案板上那三堆肉丝,偏粗的、中等的、偏细的,三个标准,一个厨师。
我再想想。他说。
不急。林晨说。中央厨房的事我只是提出来,还没定。你先想,想好了再跟我说。
他走出厨房的时候,回头看了一眼。林浩站在案板前,手里拿着毛巾,看着冷柜上的标签发呆。那些标签在灯光下微微反光,字迹工整,日期清晰,像一个厨师最骄傲的作品。
但他也知道,这些标签不是长久之计。三家店已经让林浩每周花十五到二十个小时在酱料和底料上,如果开第四家店呢?第五家呢?时间不是无限的,人的精力也不是无限的。中央厨房不是消灭厨师的手艺,而是把厨师的手艺从一个人的身上变成一套流程,让流程替人做那些重复的事,让人的时间和精力去做只有人才能做的事。
下午两点,午高峰结束了。
林晨坐在南区店的小办公室里,面前摊着三家店本周的数据报表。中区店翻台率四点二,南区店三点八,cbd店三点六。三家店的会员复购率都在百分之五十五以上,但cbd店的新客占比最高,达到百分之四十二。这说明cbd的客群还在培养期,很多人是第一次来。
他在报表空白处写了几行字:
酱料调配:林浩每周15-20小时,占四分之一工时。 单点故障:三家店全系一人。 解决方案:中央厨房集中调配+配送。 前提:三家店数据稳定,需求明确。
他把笔放在桌上,靠在椅背上。脑子里在算一笔账。三家店每月的食材采购成本大约三十万,其中酱料、底料、腌料占比约百分之十五,也就是四万五。如果中央厨房统一调配,食材可以集中采购,采购成本至少降一成,也就是每月省四千五。加上配送效率提升、损耗降低、人工释放,总节省每月大约一万到一万五。
一万到一万五的节省,对月营收一百万的三家店来说不多。但中央厨房的意义不是省钱,是保证品质。三家店的酱料由一个人调配,意味着三家店的口味全系在一个人身上。这个风险不是一万到一万五能衡量的。
他打开手机,在备忘录上新建了一个文件夹,命名:中央厨房项目。
文件夹里先建了六个文档:选址评估、改造方案、设备清单、预算表、运营方案、进度计划。六个文档全是空白的,只有标题。
他没有开始写。中央厨房是一件大事,不是今天想做明天就能做的。选址要跑,预算要算,设备要选,改造要审,这些都需要时间。但有些事不需要时间,只需要一个决定。
他在运营方案的文档里打了一行字:
核心目标:三家店半成品统一配送,保证口味一致,降低单点故障风险。
然后他在下面又加了一行:
前提条件:林浩同意。
他知道林浩不会马上同意。厨师的手感是十几年练出来的,不是一份文档能替代的。但中央厨房不是替代林浩的手感,是把林浩的手感变成标准,让标准替人做重复的事。
他关掉手机,走出办公室。前厅已经收拾好了,桌椅码得整整齐齐,地拖得干干净净。周小敏在收银台后面整理会员卡,阿伟在厨房里洗碗。林浩不在厨房,他的电动车停在门口,后座上绑着一个保温箱,里面装着明天中区店要用的酱料和底料。
林晨站在门口,看着林浩的电动车。保温箱的盖子没有盖严,露出一个保鲜盒的一角,上面写着中区回锅肉酱。
他看了一会儿,转身走了。
晚上回家,苏婉在客厅里等他。
桌上放着一杯水,旁边是一张打印的纸。林晨走进来的时候,苏婉把纸递给他。
这是什么?他问。
我帮你查的。苏婉说。深圳做中央厨房的连锁快餐,我查了五家。蜜姐快餐、老碗会、农耕记、面点王、嘉旺。五家里面有三家做了中央厨房,两家没有。做了的三家,门店数量分别是八家、十二家和十五家。没做的两家,门店数量是三家和五家。
林晨拿起纸看了一眼。苏婉把五家连锁快餐的数据整理成了一张表格,每家的门店数量、中央厨房面积、投资额、配送半径、运营时间全部列了出来。
你的意思是,三家店做中央厨房,太早了?他问。
我没有说太早。苏婉说。我是说,你看这三家做了中央厨房的,门店最少的是八家。也就是说,他们是在八家店以上才开始做中央厨房的。你现在只有三家店,就考虑做中央厨房,比行业平均早了两到三倍。
林晨看了一眼表格上的数字。蜜姐快餐,八家门店,中央厨房一千二百平米,投资一百八十万。老碗会,十二家门店,中央厨房一千五百平米,投资两百二十万。农耕记,十五家门店,中央厨房两千平米,投资三百万。
但这三家做中央厨房的时候,门店数量也不是从一开始就有八家、十二家的。林晨说。他们是从一家、两家、三家慢慢开起来的。中央厨房也不是一下子建起来的,是从小到大逐步扩容的。我现在三家店考虑做中央厨房,不是要一步到位,是先搭一个框架,让三家店的酱料和底料有一个集中的出口。等门店数量上去了,中央厨房再跟着扩容。
苏婉没有反驳。她看了一眼表格上的数字,然后把纸收回来。
我只是在提醒你。她说。中央厨房不是开一家店,投进去的钱是沉没成本。店亏了可以关,中央厨房投了就退不回来。而且中央厨房是供应链逻辑,不是零售逻辑。零售的逻辑是卖一份赚一份,供应链的逻辑是规模效应——规模上去了才赚钱,规模上不去就是亏。你现在三家店,规模够不够支撑一个中央厨房?
够不够要看怎么算。林晨说。如果只算酱料、底料、腌料这三样,三家店的需求已经够一条半成品线跑起来了。加上切配、腌制、预加工这些预处理环节,需求更大。中央厨房不是给三家店用的,是给五到十家店用的。现在做,是提前布局。
苏婉看了他几秒。她知道林晨一旦开始用提前布局这个词,说明他已经做了决定,只是在等一个时机。
你打算什么时候开始?她问。
先规划。等cbd店的数据跑稳了,三家店的模型都验证了,再正式启动。林晨说。现在先把选址、预算、设备清单这些前置工作做了,不花大钱,但心里有数。
苏婉点了一下头,没有再追问。她把打印纸折好放在茶几上,拿起遥控器换了一个台。
林晨坐在沙发上,看着茶几上那张折好的纸。纸上写着五家连锁快餐的数据,三家做了中央厨房,两家没做。做了的三家门店数量是八、十二、十五,没做的两家是三和五。他现在三家店,正好处在做了太早、不做风险大的中间地带。
他拿起手机,打开备忘录里中央厨房项目的文件夹。六个文档还是空白的,只有运营方案里打了两行字。他在运营方案下面又加了一行:
关键问题:三家店的规模是否足够支撑中央厨房?
答案:不是现在够不够,是未来够不够。
他保存了备忘录,锁了屏幕。手机屏幕暗下去,映出他的脸。
中央厨房这件事,他不是现在就做。但也不是不做。他要做的是——先把所有的想法定下来,把数据算清楚,把选址跑明白,把设备列出来。等时机到了,拍板就是一秒钟的事。
决策可以慢,准备不能停。
他站起来,往书房走。走到门口的时候回头看了苏婉一眼。苏婉在看电视,屏幕上的光照在她脸上,忽明忽暗。
苏婉。他说。
谢谢。
苏婉没有转头。谢什么?
谢你查的那些数据。
苏婉嗯了一声,目光没有离开电视。
林晨走进书房,关上门。电脑屏幕亮着,晨枫管理系统的后台在屏幕上运行着,三家店的数据排在三列。他在系统里新建了一个模块,命名:中央厨房。
模块里是空白的。但模块已经在那里了,像一个刚建好的数据库表,字段定义好了,数据还没有填充。
他盯着空白的模块看了一会儿,然后开始往里面填字段。
场地面积、租金、改造预算、设备预算、人力成本、配送半径、半成品品类、出库频次、品控标准、应急预案。
每一个字段都是一个问题,每一个问题都需要一个答案。
他没有急着填答案。他只是在字段名称的旁边加了一行备注:
待定。
一个一个的,像一排还没有赋值的变量,等着有人来给它们赋值。
他知道那个人会是他自己。只是不是今天。
第359章 投资中央厨房
周六早上七点,林晨开车到龙岗。
工业区在深惠公路旁边,从科技园开过来要四十分钟。他六点半出门,路上车少,七点十分就到了。林枫的电动车已经停在路边了,后座上绑着一个黑色的双肩包,里面装着卷尺、笔记本和一瓶矿泉水。
这是他们第三次来看这个仓库。
前两次是林枫自己来的。第一次看完他拍了六张照片发过来,只写了一句话:面积够,位置偏。第二次他带了一个做装修的朋友一起看,看完之后消息多了一点:层高四米五,配电够,排污要改。租金可以谈。
林晨把车停在路边,走过去。仓库的铁门半开着,门口的地面有几道裂缝,缝隙里长着杂草。铁门上的锈迹很重,推开的时候发出一声尖响,像指甲划过黑板。他皱了一下眉头,走进去。
仓库内部比他想象的要大。一千零三十平米,层高四米五,地面是水泥的,有几处坑洼。天花板是铁皮搭的,中间一排日光灯管,亮了三分之二,还有三分之一没亮。靠墙的一侧有一排铁架子,锈迹斑斑,是上一个租户留下的。另一侧有一个小办公室,门开着,里面只有一张桌子和一把椅子,桌上放着一个烟灰缸,烟灰缸里还有半截烟头。
一千零三十平米,月租四万五。林枫从办公室走出来,手里拿着一叠打印的资料。比上次看的那个便宜八千,但位置远十五分钟车程。配送的话,从这儿到科技园中区三十五分钟,到南区四十分钟,到cbd五十分钟。早高峰可能再加十分钟。
林晨没有接资料。他站在仓库中间,环顾四周。日光灯的光打在水泥地面上,白晃晃的,有些刺眼。他走到靠墙的位置,用手指摸了一下铁架子。锈很重,一摸就掉渣。
这些架子要拆。他说。
拆架子加清运,大概六千块。林枫翻了一下资料。我之前问过一个清场队,他们报了价。
林晨点了一下头,继续往里走。他走到仓库最里面,那里有一扇侧门,侧门外是一个小院子,大概八十平米,可以做临时堆放区。院子的一面墙是隔壁厂房的外墙,另一面是铁栅栏,栅栏外面是一条窄路,可以走小货车。
侧门够不够出货车?林晨问。
四米二的厢式货车能进来。再大的不行,转弯半径不够。林枫说。但四米二够了,我们用不了大车。
林晨在侧门旁边站了几秒,看了看出车的动线。从侧门进来右转是仓库的主通道,宽度大约六米。如果在这条通道两边摆操作台,中间留四米给货车和推车通行,动线是通的。但出车的时候要倒车,倒车距离大概十五米,不宽裕。
出车动线要改。林晨说。侧门要加宽,至少四米五。院子里的铁栅栏往里移一米,让货车有转弯空间。
林枫在笔记本上记了:侧门加宽至4.5米,铁栅栏内移1米。
林晨又走回仓库中间,站在日光灯下面。他抬起头看天花板,铁皮的接缝处有几道水渍,是之前下雨渗的。水渍不大,但如果不处理,夏天暴雨的时候会漏。
天花板要补。铁皮的接缝处打防水胶,再加一层保温棉。深圳的夏天仓库里不装空调能热到四十度,加保温棉能把温度降五到八度。中央厨房对温度有要求,预处理区不能超过二十五度。
保温棉加防水,大概三万。林枫说。空调呢?
空调后面再说。林晨继续往另一个方向走。
他走到仓库的东北角,那里有一个排污口。他蹲下来看了一眼,排污管道是pVc的,管径一百一十毫米。他站起来,走到洗手间的位置看了一眼。洗手间很小,一个蹲位,一个洗手台。不够。
洗手间要扩建。至少两个蹲位加一个洗手台,另外加一个更衣室和一个淋浴间。中央厨房的卫生要求比餐厅高,员工进去之前要换工作服、洗手消毒。没有更衣室过不了审。
林枫又记了一行:洗手间扩建,增加更衣室、淋浴间。
消防呢?林晨问。
消防我查过了。工业仓库改商用,消防要重新报审。喷淋、烟感、灭火器、消防通道,全部要按新标准来。消防改造大概要十万到十五万。
加上之前的清场、侧门、天花板、保温棉、洗手间,改造预算多少?
林枫翻了一下资料。硬装改造加消防,三十五万到四十万。
林晨在心里算了一下。一千零三十平米的仓库,月租四万五,押三付一就是十八万。硬装改造三十五万到四十万。这两块加起来五十三万到五十八万。
还没算设备。
他走到仓库的另一头,在水泥地面上用脚画了一条线。
这是加工区的位置。他说。从这头到那头,大概六百平米,分成四个区。预处理区、烹饪区、冷却区、包装区。预处理区要不锈钢操作台、洗菜池、切菜台。烹饪区要六眼灶、蒸柜、炸炉。冷却区要速冷柜和冷库。包装区要真空包装机和封口机。
他一边说一边在水泥地上画,像在白板上画系统架构图。四条线把六百平米分成四个方块,每个方块里标注了设备名称和数量。
冷库要两间。他接着说。一间冷藏,零到四度,存放半成品和新鲜食材。一间冷冻,零下十八度,存放冷冻品和速冻半成品。两间冷库加起来至少六十平米。
林枫在笔记本上飞快地记着。他写了半页纸,停下来问了一句:冷库的设备呢?
冷库设备单独算。压缩机组、冷风机、保温板,一整套下来大概十二万到十五万。看品牌,国产的便宜,进口的贵。我建议冷库用进口的,压缩机组用国产的就行。
为什么?
冷库的保温板和门是消耗品,国产的用三年就老化,进口的能用七到八年。压缩机组可以后期换,坏了换一台就行。但保温板一老化,冷库就废了,整个要拆掉重做。
林枫点了一下头,在笔记本上标了一个重点符号。
林晨画完加工区的动线,又走到另一头。这头大概三百平米,他画了一条竖线,分成左右两块。
左边是仓储区,右边是办公区。他说。仓储区放干货、调料、包装材料。办公区做一个小办公室、一个会议室、一个品控室。品控室必须有,每天出品的半成品要抽样检测,留样四十八小时。
品控室要什么设备?
恒温培养箱、水分测定仪、温度计、ph试纸、样品柜。不贵,两三万搞定。但品控室的装修要按食品级标准来,不锈钢台面、易清洁墙面、紫外线消毒灯。
林枫把这两三万加到笔记本上,又在旁边写了一个括号:品控必须过审。
他写完之后抬头看林晨。你把加工区和仓储区的位置定得这么快,是不是在脑子里已经过了一遍了?
林晨没有回答。他站在仓库中间,看着水泥地面上用脚画出来的线和字。日光灯的光从头顶照下来,那些线歪歪扭扭的,但逻辑是清晰的。从食材入库到半成品出库,每一步的动线都没有交叉,没有回流。这跟写代码的架构是一样的——数据流向必须是单向的,不能有环,不能有交叉,否则系统就会出bug。
他在t厂做架构设计的时候,也是这样。先画数据流向图,再定模块边界,最后才是写代码。中央厨房的逻辑是一样的,只是数据变成了食材,代码变成了菜品,服务器变成了灶台和冷库。
走,去看看隔壁。林晨说。
隔壁是一个五金厂的仓库,跟他们看的这个仓库只隔了一面墙。林枫之前打听过,隔壁的租金比这边便宜两千块,但面积只有八百平米,层高三米八,配电也不够。林晨看了一圈就出来了。
隔壁不行。他对林枫说。层高太低,配电不够。我们需要的电力至少两百千瓦,六眼灶、冷库压缩机组、空调、照明加起来,两百千瓦是底线。
这边够吗?
够。我看了配电箱,六百安的空气开关,对应大约三百千瓦的容量。留一百千瓦的余量,够了。
林枫在笔记本上写:配电满足,300kw容量,留100kw余量。
两个人走出仓库,站在路边。五月的太阳已经升起来了,照在深惠公路上,路面反射着白光。几辆大货车从面前开过,带起一阵灰尘和柴油味。
租金还能谈吗?林晨问。
我跟房东见过两次了。他要四万五,我报了四万。他说可以谈到四万二,但押金不能少,三个月。
四万二可以接受。林晨说。租期呢?
他签了三年,我说要五年。他说三年可以,五年要加租金。
签五年。林晨说。三年太短。中央厨房的设备投入大,三年回不了本。五年还有得赚。第五年的租金可以在第三年的基础上涨百分之五,不超过市场价。
林枫在笔记本上写:月租4.2万,押三付一,租期5年,第3年涨5%。
他把笔记本合上,从双肩包里摸出矿泉水,拧开盖子喝了一口。
设备预算多少?他问。
林晨站在路边,看着对面一排铁皮厂房。他皱了一下眉,像是在算一道心算题。
加工设备分几块。他说。灶具是最大的一块。六眼灶两台,一台炒灶一台汤灶,加上蒸柜、炸炉、打荷台,加起来八万到十万。冷库设备,两间,十二万到十五万。预处理区设备,操作台、洗菜池、切菜机、绞肉机,加起来五万。包装区设备,真空包装机、封口机、标签打印机,三万。空调系统,十匹到十五匹的商用空调,五万到八万。品控室设备,三万。再加上不锈钢排水沟、防滑地砖、紫外线灯、灭蝇灯、更衣室消毒设备,杂项加起来五万到八万。
他停了一下,把数字在心里过了一遍。
设备总计四十万到四十九万。取中间值,四十五万。加上硬装改造四十万,押金十三万,首月租金四万二。总计一百零二万二。
一百零二万?林枫抬起头。
这是最低预算。林晨说。如果要做得稳,设备买好一点的,改造做细一点,再加十五万的安全垫。总计一百一十七万到一百二十万。
林枫在笔记本上写完最后一行数字,把笔帽盖上。他看了一眼笔记本上的内容,密密麻麻写了五页。红笔画圈的有七处,打问号的有三处,重点符号有两个。
一百二十万。他重复了一下这个数字。加上前面三家店投入的一百多万,晨枫的总投入要到两百多万了。
不是两百多万。林晨说。是两百万。中央厨房这一块,总投入两百万。
林枫看着他。两百万?你刚才算的不是一百二十万吗?
一百二十万是最低配置。两百万是做连锁的配置。林晨把矿泉水瓶子放在路边,双手插在口袋里。最低配置只够三家店用,跑起来之后就不够了。如果要开第五家、第六家、第十家店,中央厨房的产能要提前留出来。冷库要多建一间,灶具要加一台,包装线要加一条。这些现在不加,以后加的成本更高,因为要停产改造。
你的意思是,一步到位?
不是一步到位,是留好扩展位。林晨说。跟写代码一样,你不可能一开始就把所有功能都做了,但你要把接口留好。冷库多建一间,多花八万,但这间冷库以后可以多服务五家店。多一台灶具,多花四万,但这台灶具以后可以多出三到五家店的半成品。这些钱现在花,比以后停产改造再花要划算得多。
林枫想了几秒钟。他做了一辈子工程,最懂的就是这个道理。现在多花一百万,看起来贵,但总成本比以后再改要低。
那你算过两百万的明细吗?他问。
算过。林晨从口袋里掏出手机,打开一个电子表格。昨晚在家里算的。
他把手机递给林枫。屏幕上是一个详细的预算表,从仓库租金到设备采购,从硬装改造到消防审批,从人力成本到流动资金,每一项都列了三个数字:最低配置、标准配置、扩展配置。
林枫看了两分钟。他的目光从最低配置扫到扩展配置,在几个关键数字上停了一下:冷库从两间变成三间,灶具从两台变成三台,包装线从一条变成两条,空调从十匹变成二十匹。
标准配置一百五十万,扩展配置两百万。他念了一下。你的意思是做扩展配置?
做标准配置先跑起来,留好扩展位。后面开新店的时候再逐步升级到两百万。林晨收回手机。不是一口气花两百万,是分阶段花。
林枫把笔记本收进双肩包,拉上拉链。他看了一眼对面那排铁皮厂房,又看了一眼路边的货车。几辆面包车从面前开过,车身上贴着各个快餐品牌的外卖贴纸。
两百万的投入,林枫说,我跟你怎么分?
一人一半。林晨说。
林枫没有接话。他站在路边,看着对面那排厂房。阳光照在他脸上,他的表情很平静,但眼角有几道很深的皱纹,那是工地上晒出来的。他今年三十八岁,在建筑工地干了十多年,从施工员做到项目经理,去年辞职全职加入晨枫。他的积蓄不算多,但也不算少。一百多万还是拿得出来的。
你出一百万,我出一百万?他确认了一下。
股权怎么算?
中央厨房的股权单独算。你百分之五十,我百分之五十。跟餐厅的股权不一样,餐厅我占百分之六十。但中央厨房是基础设施,两个人扛,风险也是两个人扛。
林枫想了一下。那林浩呢?
林浩不参与中央厨房的投入。他的股权在餐厅,餐厅向中央厨房采购半成品,按内部价走。中央厨房的利润独立核算,你我都占百分之五十。
内部价怎么定?
半成品的内部价定在市场价的七折。林晨说。比市场价低三成,但比成本价高两成。中央厨房有利润空间,餐厅也能省采购成本。两边都有动力。
林枫在笔记本上写了一行:中央厨房股权50/50,内部价市场价7折。
他写完之后,把笔记本收起来,从包里又拿出一瓶矿泉水递给林晨。林晨接过来拧开盖子喝了一口。
我回去跟我老婆商量一下。林枫说。一百万不是小数目。
应该的。林晨说。我也要跟苏婉说。
两个人站在路边,看着面前那个一千平米的仓库。铁门半开着,日光灯的光从里面透出来,照在门口的水泥地上。门旁边的墙上贴着一张招租广告,纸已经发黄了,上面的电话号码被雨水糊得看不清。
还有一件事。林晨说。中央厨房建起来之后,谁来管?
你想让谁管?
你管运营和采购,林浩管出菜标准,这没问题。但中央厨房的日常运营——排班、备料、出货、品控、物流——需要一个专职的人来管。你三个人现在三家店已经跑不过来了,再加一个中央厨房,你跑不动。
招人?
招一个中央厨房主管。做过食品加工厂的优先,懂中央厨房流程的更好。薪资开到一万二到一万五。
林枫想了一下。我认识一个人,之前在一家连锁快餐的中央厨房做过两年,后来跳出来自己干了。干得还行,就是人有点闷。
闷不闷没关系,能干活就行。约他下周来聊聊。
林枫点了一下头,在笔记本上写了一个名字和一个电话号码。
下午两点,林晨开车回科技园。
在车上他给苏婉发了一条消息:晚上聊个事。苏婉回了一个字:
到了第一家店,午高峰已经过了。林浩在厨房里备明天的料,阿伟在旁边切菜。周小敏在前厅整理桌椅,把椅子一把一把翻下来扣在桌面上,方便晚上拖地。小宇在收银台后面整理会员数据,ipad上的数据表排成一排。
林晨在角落坐下来,打开笔记本电脑。他先看了一遍三家店的数据,然后新建了一个文档,标题是四个字:中央厨房。
他花了半个小时把上午在仓库里用脚画的布局图画成了电子版。预处理区六百平米,仓储区两百平米,办公和品控区一百平米,通道和公共区一百三十平米。每个区域的设备清单、数量、预算,全部列了表格。标准配置的总投入跳了一下:一百五十三万。
他又加了一行:扩展预留预算四十七万。总计两百万。
然后他新建了第二个文档,标题是:出资方案。
中央厨房总投入两百万。他出一百万,林枫出一百万。两个人各占百分之五十的股权。中央厨房独立核算,半成品按市场价七折供给三家餐厅。中央厨房的利润来自两部分:一是内部差价,即半成品售价与成本之间的差额;二是未来对外供货,如果中央厨房的产能有富余,可以给其他小餐厅供货,开辟第二条营收线。
他在文档里算了第二笔账。中央厨房满产运营之后,每天能出三家店所需半成品的百分之一百二十到百分之一百五十。多出来的百分之一百二十到百分之一百五十的产能,可以供给第四家到第六家店。如果再往上走,扩展配置的两百万投入到位,产能可以覆盖十家店。
十家店的半成品全部由中央厨房统一配送。统一采购、统一加工、统一口味、统一标准。每一家店出的菜味道一模一样,就像同一个函数在不同节点上跑出来的结果一样。
他盯着屏幕上的数字看了一会儿,把文档保存了。
晚上回家,苏婉已经做好了饭。
桌上是西红柿炒蛋和清蒸鲈鱼。鱼蒸得刚好,筷子拨开鱼身,肉是一片一片的,没有碎。乐乐在旁边吃饭,边吃边看平板上的动画片。
什么事?苏婉问。
林晨把手机上的电子表格递给她。苏婉擦了擦手,接过来看了一遍。她的目光在总投入那一行停了两秒,然后又看了一遍,把手机还给他。
两百万?她说。
两百万。我跟林枫一人一百万。中央厨房独立核算,股权五五分。
苏婉把筷子放下来,看着林晨。你现在投资账户上有多少?
五百多万。
拿一百万出来,投资账户还有四百多万。加上t厂的工资、三家店的分红,每个月进账三十多万。拿一百万出来不影响什么。
林晨点了一下头。苏婉算账从来都比他快。
但你有没有想过,苏婉说,中央厨房建起来之后,你就不只是开快餐店了。你是在做供应链。供应链的逻辑跟开店完全不一样。开店是卖菜给客人,供应链是卖半成品给门店。门店可以亏,供应链不能亏。门店亏了一家还能关,供应链一亏就是全线断供。
我知道。林晨说。所以中央厨房的品控我打算让林浩盯。出菜标准是他定的,半成品的标准也由他定。他比谁都清楚一道菜从食材到出品每一步应该是什么样子。
那林浩同意吗?
还没跟他说。
苏婉没有再追问。她把鱼翻了一面,夹了一块肉给乐乐,又夹了一块给林晨。
吃完饭,林晨帮苏婉收碗。乐乐回房间写作业去了。苏婉在厨房洗碗,林晨站在旁边擦碗。
我明天跟林浩谈。林晨说。
你想好了怎么谈?
想好了。
苏婉把最后一个碗递给他,他擦干放进碗柜,关上柜门。水龙头关了,厨房安静下来,只有窗外传来的车流声。
林浩可能会不同意。苏婉说。
为什么?
因为他是厨师。苏婉看着他说。厨师最在意的是什么?是每一道菜出锅那一刻的火候、味道、口感。这是手艺人的骄傲。中央厨房做的第一件事是什么?是把厨师的手艺变成标准化的半成品。你让林浩把他每一道菜的标准交出来,变成流水线上的参数,他心里会舒服吗?
林晨没有说话。他站在厨房里,手里拿着抹布,看着窗外的夜景。
苏婉说得对。他早就想到了这一点,但他没有说出来。林浩是一个厨师,不是一个工程师。工程师喜欢标准化,因为标准化意味着可控、可复制、可扩展。但厨师不喜欢标准化。厨师喜欢的是灶台上的那一把火,是锅里的那一点盐,是出锅的那一瞬间。这些是标准化的天敌。
但连锁化的核心就是标准化。没有标准化,就没有连锁。十家店出十种味道,那不叫连锁,那叫加盟店。中央厨房的意义在于把从的身上剥离出来,变成的一部分。流程可以被复制,人不能。
他擦完最后一个碗,把抹布挂在钩子上。
我会跟他说的。他对苏婉说。不标准化的东西做不大,他心里清楚。
第二天是周日。林晨去了南区店。
午高峰的时候他没进去,站在门外看了半个小时。出餐口排着五个外卖骑手,手里举着手机,屏幕上是蓝色的接单页面。厨房里林浩在颠锅,油烟从排烟罩下面翻出来,火光在灶台上闪。阿伟在旁边出快菜,出菜的速度稳定在五分钟一份。周小敏在前厅跑来跑去,把菜端到桌上,把空盘子收走。
林晨看完之后走了进去。
林浩正在厨房里擦灶台,看到他进来,把抹布搭在肩上。
今天翻台率多少?
四点一。林浩说。比昨天低零点二。有几个客人说菜品吃腻了,问有没有新菜。
嗯。这个我后面再说。林晨在厨房旁边的凳子上坐下来。我今天找你说另外一件事。
林浩看着他,等他开口。
我要建中央厨房。
林浩没有立刻说话。他把抹布从肩上拿下来,叠了两叠,放在案板旁边。然后他靠在灶台上,双手抱在胸前。
中央厨房是什么意思?他问。
就是在一个地方统一做半成品,然后配送到三家店。以后每家店不需要从头开始做菜,只需要把半成品加热、调味、出菜。中央厨房负责切配、腌制、预加工、预烹饪。门店只负责最后一步。
那我的手艺呢?林浩问。
厨房里很安静。排烟罩的声音停了,只剩下冷柜压缩机的嗡嗡声。
林浩的问法很直接,但他的语气不是质问,是一种他自己都没想清楚的困惑。他学了三年厨艺,在五星酒店干过,拿了中级厨师证,现在三家店的出品全部是他定的标准。如果中央厨房统一做半成品,门店只是加热出菜,那他定标准的意义在哪里?他炒菜的手艺、他颠锅的火候、他尝盐的那一勺水——这些东西,半成品能保留多少?
你的手艺不会消失。林晨说。中央厨房不是取代你,是把你定下来的标准固定下来。回锅肉的酱料比例,宫保鸡丁的腌制时间,酸菜鱼的底料配比——这些标准都是你定的。中央厨房只是把这些标准从你一个人的手里,变成一个流程。流程不依赖任何一个人,但流程的制定者是你。
林浩想了一下。你的意思是,我以后不是在门店里炒菜,是在中央厨房里定标准?
对。你以后的角色不是每天颠锅出菜,是制定半成品的标准,培训中央厨房的加工人员,确保每一份半成品的味道跟你亲自做出来的一样。你是标准的制定者,不是标准的执行者。
林浩低下头,看着案板上码得整整齐齐的葱姜蒜。他伸手拨了一下蒜瓣,蒜瓣在案板上滚了两圈,碰到了菜刀的刀背。
我在门店里炒菜的时候,他说,火是活的。同样一道回锅肉,今天火大一点,肉片就焦一点,焦了就有锅气。明天火小一点,肉片就嫩一点,嫩了就滑口。这两道回锅肉味道不一样,但都是好吃的。你让我把标准定死了,每一份都是一样的味道,那就没有锅气了。
林晨听完,没有立刻反驳。
他站起来,走到案板旁边。案板上有一小碗调好的酱料,是林浩下午备的回锅肉酱。他用筷子尖蘸了一点,放在舌尖上尝了一下。咸,微甜,豆瓣的鲜味很足,后味有一点点辣。
这个酱料,比例是多少?
豆瓣酱三份,甜面酱一份半,生抽一份,料酒一份,白糖半份。林浩脱口而出。
每家店都是这个比例?
每家店都是我调的。我调完之后分装,送到三家店。
那如果中央厨房统一调呢?
味道不会变。酱料是可以标准化的。
你刚才说火候不能标准化。那酱料呢?
林浩沉默了两秒。酱料可以。
这就是标准化的边界。林晨说。能标准化的,坚决标准化。不能标准化的,保留给门店。中央厨房负责酱料、底料、腌制、预加工,这些是流程,可以复制。但最后一步——颠锅、收汁、出锅——还是由门店的厨师来做。你的手艺不是被取代,是被放大了。以前你的手艺只能覆盖三家店,以后能覆盖十家、二十家。但你制定的标准是底座,底座稳了,上面的手艺才能展开。
林浩想了一会儿。他伸手把案板上的蒜瓣捡起来,放回小碗里。
我再想想。他说。
林晨说。不急。中央厨房建起来还要两个月,你有时间想。
他走出厨房的时候,回头看了一眼。林浩站在灶台前面,手里拿着抹布,看着灶台上的火口发呆。排烟罩没有开,厨房里安静得只有冷柜压缩机的声音。
下午四点,林晨回到家里,打开电脑。
他新建了一个文件夹,命名:中央厨房项目。文件夹里有六个文件:仓库评估、改造方案、设备清单、预算表、出资方案、进度计划。
他把设备清单打开,开始一行一行地写。
六眼燃气炒灶,2台,单价1.8万,合计3.6万。 双头燃气汤灶,1台,单价1.2万,合计1.2万。 六层蒸柜,1台,单价0.9万,合计0.9万。 双缸电炸炉,1台,单价0.6万,合计0.6万。 不锈钢操作台,8台,单价0.15万,合计1.2万。 双星水池,4台,单价0.2万,合计0.8万。 切菜机,2台,单价0.3万,合计0.6万。 绞肉机,1台,单价0.25万,合计0.25万。 打荷台,3台,单价0.12万,合计0.36万。 ......
他一个一个地写,每个设备后面都标了品牌、型号、供应商、报价日期。有些设备他查了三家供应商的价格,取了中间值。有些设备他只查了一家,因为那家是深圳食品加工设备市场的头部供应商,价格差别不大。
写到最后,他加了一行备注:以上设备均为国产主流品牌,如需升级为进口品牌,预算上浮30%-50%。
然后他打开预算表,把设备清单的总价填进去。标准配置四十五万,扩展配置加上预留空间,总计六十五万。加上硬装改造四十万、押金十三万、首月租金四万二、消防改造十五万、空调系统八万、品控室三万、杂项八万、流动资金二十万——
总计两百万。
他盯着这个数字看了半分钟。然后他在下面加了一行字:
林晨:100万。林枫:100万。
他的手指放在键盘上,没有动。窗外鹏城的夜景在屏幕的反光里模模糊糊的,远处的写字楼亮着灯,像一排排没有感情的格子。
两百万。半年前他还在t厂写代码,两百万是一个数字。现在他要拿一百万出来建中央厨房,两百万就是一个决定。这个决定的风险不是一百万本身——他的投资账户有五百万,三家店月利润二十五万,这一百万即使全亏了也不会伤筋动骨。风险在于,中央厨房建起来之后,晨枫就从几家店变成了一个供应链。供应链的逻辑比开店复杂十倍,任何一环断了,全线停摆。
他保存了文档,关掉电脑。
手机响了一下。是林枫发来的消息。
我跟我老婆说了一百万的事。她说你拿主意就行,她不插手。
林晨回了一个字:
然后他又发了一条:明天我跟林浩谈。他可能不会马上同意。
林枫的回复很快:我知道。但这件事得做。
林晨把手机放在桌上,靠在沙发背上。客厅的灯没开,只有窗外的城市灯光透进来,在天花板上投下斑驳的光影。苏婉在卧室里备课,乐乐的房间亮着台灯的微光。
他闭上眼睛,脑子里浮现出那个一千平米的仓库。水泥地面、铁皮天花板、锈迹斑斑的铁架子、半开的铁门。那些用脚画出来的线和字还留在地上,可能已经被脚步踩模糊了。但布局在他脑子里是清晰的。预处理区、烹饪区、冷却区、包装区、仓储区、办公区、品控区。从食材入库到半成品出库,每一步的动线都是单向的,没有交叉,没有回流。
就像一段写得干净的代码。
他睁开眼睛,拿起手机,打开电子表格。在进度计划的文档里,他写下了第一行:
第1周:签合同,交押金,启动消防报审。
然后第二行,第三行,第四行。每一行对应一周,每一周对应一个任务。从消防报审到硬装改造,从设备采购到安装调试,从人员招聘到试运行。十二周,三个月。
三个月之后,中央厨房投产。第一批半成品从龙岗的一千平米仓库里送出来,坐上四米二的厢式货车,穿过深惠公路,送到科技园中区、科技园南区、福田cbd的三家门店。
那时候,晨枫就不再只是一家快餐店了。
它是一条线。从仓库到灶台,从灶台到餐桌,从餐桌到客人的嘴里。每一步都是标准的,每一步都是可控的,每一步都可以被复制。
他关掉手机,走进卧室。苏婉在台灯下备课,手里的红笔在作文本上画了一个勾。他躺下来,看着天花板。天花板上那道裂缝还在,从灯的位置延伸到墙角。他没有修它,也没有要修它的意思。
两百万。一百万是他的,一百万是林枫的。
这个决定他已经做了。剩下的只是执行。
而执行,是他最擅长的事。
第360章 招聘管理
中央厨房的仓库签了合同的第三天,林晨在第一家店的小办公室里见了一个人。
来的人叫陈志远,四十二岁,中等身材,穿着一件深蓝色polo衫,裤子是卡其色的工装裤,脚上蹬一双黑色劳保鞋。头发剪得很短,鬓角有零星白发。他坐在椅子上,腰板挺得很直,两只手放在膝盖上,手指粗短,指甲剪得很干净。
这是林枫推荐的人。在连锁快餐的中央厨房做过两年,后来跳出来自己干过一段时间,没干成,现在在做食品加工厂的品控主管。
我在味千拉面干了四年,从门店做到区域督导。陈志远说话的声音不大,但很清晰,每个字都吐得很稳。后来在永辉旗下的中央厨房做了两年品控经理,负责八家门店的半成品配送。去年出来自己做了个预制菜品牌,做了一年,资金断了,关了。现在在龙岗一家食品加工厂做品控主管。
林晨听完了,在笔记本上写了几个关键词:味千四年、区域督导、永辉中央厨房两年品控经理、自己创业一年、品控主管。
你在永辉的中央厨房做品控经理,管八家门店的半成品配送。八家门店的出库量是多少?
日均出库一千二百份半成品。蔬菜预处理占四成,肉类预处理占三成,酱料和底料占两成,包装半成品占一成。
配送时间呢?
凌晨四点出第一趟车,覆盖午市。上午十点出第二趟车,补充午市的增量。下午四点出第三趟车,覆盖晚市。三趟车,三趟出库,三趟配送。
出库的损耗率是多少?
蔬菜预处理损耗率百分之八到百分之十,肉类预处理损耗率百分之三到百分之五,酱料和底料损耗率百分之一以下。综合损耗率控制在百分之五以内。
林晨在笔记本上标了一个重点符号。百分之五的综合损耗率,比他预估的还要低两个点。
你做品控经理的时候,半成品的口味一致性怎么保证?
陈志远想了一下。品控的核心不是每一份都做到百分之百一样,是每一份都在一个可接受的误差范围内。我们当时定了三个标准:第一,每份半成品的配比误差不超过正负百分之三。第二,每批次半成品的口感评分不低于八点五分,十分制。第三,每批次留样四十八小时,以备抽检。
口感评分谁打?
品控团队打。三个人独立打分,取平均分。低于八分的那批次直接报废。
报废率呢?
月均报废率百分之一点二。
林晨又在笔记本上写了一行:报废率1.2%。
他放下笔,看了一眼陈志远。陈志远坐在椅子上,腰板还是那么直,两只手放在膝盖上,没有多余的动作。他的眼神很稳,说话的时候看着林晨的眼睛,不闪躲,也不冒犯。这种人在食品加工行业见过很多——做过一线,管过流程,吃过亏,也学过东西。
你自己创业做预制菜,为什么没做成?林晨问。
陈志远的表情没有变。两个原因。第一,资金不够。做预制菜需要冷库、生产线和冷链物流,前期投入至少一百五十万,我只筹到八十万,做到一半资金链断了。第二,渠道没打通。预制菜的b端客户是餐饮企业,c端客户是家庭消费者。我做的是c端,但c端的获客成本太高,冷链配送的最后一公里问题解决不了。
林晨在笔记本上写:资金不足、渠道未通。
你现在在食品加工厂做品控主管,月薪多少?
一万二。
如果来晨枫,月薪一万五,加绩效奖金。中央厨房的日常运营你来管,包括排班、备料、出库、品控、物流配送。林枫管采购和成本控制,林浩管出菜标准和半成品品控,你管流程执行和日常运营。三个人各管一段,我管战略。
陈志远想了两秒。我有一个问题。
晨枫现在三家店,中央厨房是新做的。新做的中央厨房,半成品配送量不会大,日均出库可能只有两三百份。这个量级的配送,一个人管就够了吧?为什么要招一个品控经理级别的来管?
因为我不只是要管现在三家店的配送。林晨说。中央厨房的产能要留余量。现在三家店,半年后可能五家店,一年后可能八家店。如果你只按三家店的量来管,半年后就得重新搭流程。我不要半年后重新来过的人,我要一次搭好、越跑越顺的人。
陈志远点了一下头。他听明白了。
还有一个问题。他说。中央厨房的品控标准谁定?
林浩定口味标准,你定流程标准。林晨说。口味标准是每份半成品应该是什么味道,流程标准是每份半成品应该经过哪些步骤才能达到那个味道。林浩管的是结果,你管的是过程。
如果过程没有问题,但结果跟林浩定的口味标准不一致呢?
那就停产出库,报废,查原因,改流程,直到结果达标。林晨说。品控的本质不是保证每一份都完美,是保证每一份都在可接受的误差范围内。你刚才说的正负百分之三的配比误差、八点五分的口感评分、百分之四十八小时的留样时间,这些标准我都认可。但这些标准要结合晨枫的实际情况做调整。林浩的酱料配比精度很高,但门店的加热流程还没有标准化。你来了之后,第一件事就是把门店的加热流程标准化。半成品做得再好,门店加热时间差三十秒,出来的味道就不一样。
陈志远在膝盖上敲了两下。这是他进办公室以来第一次有多余的动作。
加热流程标准化。他重复了一下。这个我之前在永辉做过。每份半成品配一张加热卡,卡片上写清楚微波加热几分钟、蒸箱加热几分钟、铁板加热几分钟。门店的厨师不需要知道怎么做,只需要按照卡片上的步骤做就行。
林晨说。你做的那套加热卡,我之前在永辉的系统里见过。简单、清晰、可执行。这是我要的人。
陈志远看了林晨一眼。他没有问你怎么见过永辉的系统,他只是微微点了一下头。
什么时候上班?他问。
下周一。
两个人站起来,握了一下手。陈志远的手掌很粗糙,是长期在厨房和加工车间里磨出来的。他走出办公室的时候回头看了一眼前厅,午高峰刚过,周小敏在整理桌椅,阿伟在厨房里洗碗。灯箱上的晨枫快餐四个字亮着,白光打在灰白色地砖上。
灯箱要换了。陈志远说了一句,然后推门走了。
林晨站在办公室门口,看着他的背影消失在人行道上。他低头在笔记本上写了一行:陈志远,下周一入职,月薪1.5万+绩效。
陈志远入职那天是个周一。
早上八点半,他穿着一件灰色工作服出现在第一家店的门口。工作服是他自己带的,左胸口绣着龙岗食品加工厂几个字,已经被洗得有些褪色。他手里拎着一个帆布包,里面装着笔记本、笔和一把温度计。
林枫在门口等他。两个人握了一下手,林枫把他带到小办公室,桌上放着一份晨枫管理系统的新账号和密码。
这是管理系统的账号。林枫说。三家店的数据你都能看到。日报、周报、月报,翻台率、出餐速度、食材损耗、会员复购率,全在里面。你先花两天时间把系统摸熟,把三家店的数据看一遍。周三跟我去龙岗看仓库。
陈志远点了一下头,坐下来,打开笔记本电脑,登录系统。
他花了两个小时把三家店的数据从头看到尾。中区店的翻台率稳定在四点零以上,出餐速度五分钟以内。南区店的翻台率三点八,出餐速度六分钟。cbd店的翻台率三点六,出餐速度七分钟。他在笔记本上写了三行字:
中区:翻台率4.0+,出餐5min,稳定。 南区:翻台率3.8,出餐6min,可优化。 cbd:翻台率3.6,出餐7min,需改进。
然后他看了一下食材损耗的数据。三家店的食材损耗率在百分之六到百分之八之间,比他在永辉的数据高了将近一倍。他在损耗率旁边标了一个重点符号。
中午吃饭的时候,他端着碗坐在用餐区角落,一边吃一边看前厅的动线。周小敏在收银台后面接单,手指在ipad上划得很快。外卖骑手从门口进来取餐,取餐口旁边贴着一张手写的纸条:午高峰出餐5分钟以内。他看了一眼自己的碗——回锅肉、炝炒莲白、一份米饭。回锅肉的酱料很足,肉片切得薄,裹着红油和豆瓣的香气。他夹了一片肉放在舌尖上,咸、微甜、微辣,后味有一点焦香。
他放下筷子,在笔记本上写了一行:回锅肉酱料配比稳定,口感8.5/10。
下午两点,林浩从厨房出来,看到角落里坐着的陈志远,走过去在他对面坐下来。
你就是新来的运营经理?林浩问。
陈志远。陈志远伸出手。
林浩握了一下。两个人对视了两秒。
我听林枫说了。林浩说。你在永辉做过中央厨房。
做过两年品控经理。
品控经理。林浩重复了一下。那你知不知道,回锅肉的酱料每份配比差零点五克,味道就不一样?
知道。陈志远说。正负百分之三的误差范围,是我之前定的标准。零点五克,如果总配比是五十克,误差是百分之一,在可接受范围内。如果总配比是十克,零点五克就是百分之五,超出范围了。
林浩看了他一眼。他原本想考考这个新来的人,没想到对方不仅知道答案,还知道怎么算。
你的酱料配比精度是多少?陈志远问。
我的精度?林浩想了一下。豆瓣酱三份,甜面酱一份半,生抽一份,料酒一份,白糖半份。每份的份量我用手感调的,误差大概在百分之二以内。
百分之二。陈志远在笔记本上记了一行。比我之前定的百分之三还低。你的手感很好。
林浩没有接这句夸奖。他站起来,回到厨房去了。
陈志远看着他的背影,在笔记本上又加了一行:林浩,出菜标准制定者,手感精度2%,需要标准化流程配合。
周三上午,林枫带着陈志远去龙岗看仓库。
林晨没有去,他在t厂开项目周会。陈志远和林枫坐林枫的电动车,从科技园骑到龙岗工业区,四十分钟。
仓库的铁门半开着,门口的地面有几道裂缝,缝隙里的杂草比上次来的时候长了。铁门上的锈迹更重了,推开的声音更响。陈志远走进去,环顾了一圈。
一千零三十平米。他站在仓库中间说。层高四米五,配电够。侧门可以出货车,但需要加宽。天花板有水渍,要补。洗手间要扩建,加更衣室和淋浴间。消防要重新报审。
林枫在旁边听着,没有插话。他之前来过两次,这些情况他都知道。他看陈志远,是想看看这个人能不能看出他没看出的东西。
陈志远走到仓库东北角,蹲下来看了一下排污口。排污管径一百一十毫米,够用。但排污口的位置偏了,预处理区的排水要绕半个仓库才能到排污口。建议在预处理区旁边加一个地沟排水,直接连到排污管。
他站起来,走到侧门旁边。侧门的宽度目测不到四米。四米二的厢式货车可以进来,但转弯半径不够。进出要倒车,倒车距离十五米,有安全隐患。建议侧门加宽到四米五,院子里的铁栅栏内移一米。
林枫在笔记本上记了:侧门加宽4.5米,铁栅栏内移1米,预处理区加地沟排水。这三条他之前都跟林晨对过,陈志远一遍就看出来了,而且多提了一条地沟排水。他合上笔记本,看了陈志远一眼。
你之前来过这里?他问。
没有。陈志远说。但中央厨房的布局逻辑都是一样的——入库、预处理、烹饪、冷却、包装、出库。动线必须是单向的,不能有交叉。这跟工厂的生产线是一样的,原料进来的地方和成品出去的地方不能在同一侧。你之前在白板上画过布局图吗?
画过。林枫说。林晨在地上画过一次,在电脑上画过一次。
我能看看电脑上的图吗?
林枫从双肩包里拿出笔记本电脑,打开林晨发来的布局图。预处理区六百平米、仓储区两百平米、办公和品控区一百平米、通道和公共区一百三十平米。每个区域的设备清单和动线标注都清清楚楚。
陈志远看了两分钟。他指着预处理区和烹饪区之间的通道说:这条通道太窄了。预处理完的食材要从这里推到烹饪区,如果同时有两辆推车相向而行,会堵。建议宽度从两米加到两米五。
他又指了包装区的位置。包装区离冷库太远了。半成品从冷却区出来要先过包装区,再进冷库,中间的动线有五十米。这段距离里温度控制是断层的,夏天深圳的仓库温度可以到三十五度以上,半成品在五十米的运输过程中温度会上升。建议把包装区和冷库紧挨着,缩短运输距离到十米以内。
林枫在笔记本上记了两条:通道宽度2m→2.5m,包装区紧贴冷库。
他记完之后抬头看陈志远。这个人四十二岁,穿着一双劳保鞋,站在一个空旷的铁皮仓库中间,指着布局图上的问题一条一条说出来。他说的问题,林晨在画图的时候没有考虑到。不是说林晨画得不好,而是林晨是从架构的角度画图——数据流向单向,模块边界清晰,逻辑干净。但中央厨房不是机房,食材不是数据,推车不是光纤。五十米的距离在数据流里是零延迟,但在实际仓库里是三十五度高温下的冷链断裂。
你说的这两条,我回去跟林晨对。林枫说。
陈志远点了一下头,继续在仓库里走。他走到天花板下面,抬头看了一下铁皮的接缝处。水渍还在。上次来看的时候就有,这次还在,说明漏水没有修。这个必须优先处理,铁皮屋顶漏水是食品加工的大忌。
他走到小办公室门口,探头看了一眼。办公室太小了,只能放一张桌子。中央厨房至少需要一个二十平米的办公室、一个十平米的品控室、一个八平米的更衣室。现在加起来不到十五平米。
林枫又记了一条:办公室+品控室+更衣室,总扩至40平米。
两个人在仓库里转了一个小时。陈志远提了十七条修改意见,林枫全部记在笔记本上。十七条里面,有七条是林晨之前已经考虑到的,有十条是新提出的。十条里面有两条是关键修改——通道加宽和包装区紧贴冷库——这两条直接影响动线安全和品控质量。
走出仓库的时候,陈志远站在铁门口回头看了一眼。日光灯的光从里面透出来,照在门口的水泥地上。他看了一秒,转过头来。
这个仓库能做。他说。但改造预算要加十五万。
为什么?
通道加宽要拆隔墙,包装区移位要改冷库位置,地沟排水要重新铺管,更衣室要扩建。这些加起来至少十五万。加上你之前算的三十五到四十万硬装改造,总改造预算五十到五十五万。
林枫在笔记本上写:改造预算35-40万→50-55万。
他合上笔记本,骑上电动车,载着陈志远回科技园。
周五晚上,三个人在第一家店的用餐区开会。
林晨、林枫、陈志远。林浩在厨房里出晚市的菜,不参与。周小敏收拾完前厅,在收银台后面整理数据。
这周陈志远看了三家店的数据,去了龙岗仓库,提了十七条修改意见。林晨开口。林枫,你说。
林枫翻开笔记本,把十七条意见一条一条念出来。念到通道加宽和包装区移位的时候,林晨的眉头微微皱了一下。
通道加宽我接受。两米确实窄了,推车会堵。他说。但包装区移位要改冷库位置,冷库的压缩机组和保温板已经定了,改位置要多花多少钱?
八万左右。林枫说。冷库拆了重装,压缩机组要移管路。
林晨想了两秒。八万可以接受。但改造预算从四十万涨到五十五万,总预算从两百万涨到两百一十五万。多出来的十五万从哪里出?
安全垫。林枫说。你之前算的安全垫是四十七万,现在压缩到三十二万。三十二万也够,但紧张了。
不压缩安全垫。林晨说。安全垫不能动。改造预算涨十五万,总预算涨到两百一十五万。多出来的十五万,我出七万五,林枫出七万五。
林枫看了一眼陈志远。陈志远的表情没有变化,他坐在椅子上,两只手放在膝盖上,腰板挺得很直。他来这里一周了,这是他第一次参加决策会议,但他没有说话。他知道自己的位置——他是来管流程的,不是来做决策的。
陈志远。林晨转向他。你这周看了三家店的数据,有什么想法?
陈志远坐直了一些。三个问题。
第一,三家店的食材损耗率偏高。百分之六到百分之八,比行业平均高两个点。如果中央厨房统一采购,集中预处理,损耗率可以压到百分之四以内。每年省下来的食材成本至少十五万。
林晨在笔记本上记了一行:食材损耗6-8%→4%,年省15万。
第二,三家店的出餐速度差异大。中区店五分钟,南区店六分钟,cbd店七分钟。差异的原因不是厨师的手速,是流程不统一。中区店出餐口在厨房左侧,南区店在右侧,cbd店在中间。动线不同,效率就不同。中央厨房的半成品如果配上加热卡,门店只需要按卡操作,出餐速度可以统一到五分钟以内。
林晨又记了一行:出餐速度统一5min以内。
第三,三家店的会员复购率在下降。中区店从百分之七十二降到百分之五十八,南区店从百分之六十九降到百分之五十五。下降的原因之前分析过,菜品单一。但如果中央厨房做半成品,可以快速扩充菜品。林浩研发的新菜可以在中央厨房做成半成品,配送到三家店。门店不需要增加厨师,只需要增加加热设备。菜品从十道扩到二十道,复购率可以止跌回升。
林晨记完最后一行,抬头看陈志远。
你说的三个问题,核心是一个——规模效应。他说。食材损耗、出餐速度、菜品扩充,三家店靠人做做不好,靠系统做就能做好。中央厨房就是那个系统。
陈志远点了一下头。对。中央厨房不是省钱的工具,是规模效应的引擎。三家店的时候引擎刚启动,效率提升不明显。但到五家店、八家店、十家店的时候,引擎的效率会指数级增长。
林晨在笔记本上画了一条线,从左到右,先平后升。三家店的时候线是平的,五家店的时候开始往上走,十家店的时候陡然上升。
他合上笔记本。改造预算加十五万,总预算两百一十五万。我出七万五,林枫出七万五。陈志远负责中央厨房的日常运营,林枫管采购和成本,林浩管出菜标准和半成品品控。我管战略。四个人各管一段,互不交叉。
他看了三个人一圈。林枫点了一下头。陈志远坐得更直了。
还有一件事。林晨说。从今天开始,陈志远参加每周的运营会议。三家店的数据他看,中央厨房的进度他跟。有什么问题直接跟我说,不用绕道。
陈志远第一次在会议上主动开口。林总,我有一个建议。
中央厨房投产之后,建议设一个品控抽查机制。不是我抽查门店,是门店抽查中央厨房。每家店的店长每周随机抽一份半成品,自己加热、品尝、打分。分数低于八分的,中央厨房那一批次全部复检。这个机制可以让门店对中央厨房有信任感,也可以让中央厨房保持品控的压力。
林晨想了两秒。可以。品控抽查机制纳入运营方案。
会议散了之后,林枫骑着电动车走了。陈志远站在门口,看了一眼灯箱上晨枫快餐四个字。灯箱的光照在他脸上,白晃晃的。
灯箱要换了。他又说了一次。
林晨站在他旁边,也看了一眼灯箱。下个月换。VI方案已经定了,新的灯箱在制作。
陈志远点了一下头。他没有再说什么,转身走向公交站。他住在龙岗,从科技园坐公交回去要四十分钟。他走的时候背挺得很直,劳保鞋踩在人行道上发出沉闷的声响。
林晨看着他的背影消失在路灯下面。然后他掏出手机,在备忘录上写了一行:
陈志远,品控抽查机制,门店抽查中央厨房,8分以下复检。
他保存了备忘录,锁了屏幕。手机屏幕暗下去,映出他的脸。
四个人。林晨管战略,林枫管采购和成本,林浩管出菜标准和半成品品控,陈志远管流程执行和日常运营。四个人的分工像一段代码的四个模块,模块之间有接口但没有重叠,数据流向清晰,边界明确。
他走进店里,关了灯。前厅的灯箱还亮着,晨枫快餐四个字在夜色里发光。他看了一眼灯箱,又看了一眼门头。
下个月,灯箱会换成新的。晨枫绿底白字,六边形枫叶Logo,思源黑体。三个字变成两个字。快餐两个字会消失,只留晨枫。
他锁了门,走向停车场。
手机在口袋里震了一下。是陈志远发来的消息。
林总,今天看了三家店的数据。有一个想法——中区店和南区店的午高峰出餐速度差一分钟,但翻台率差零点四。如果把南区店的出餐速度从六分钟压到五分钟,翻台率可以提零点二到零点三。按月营收算,每月多出八千到一万二。
林晨看完了这条消息,在屏幕上停了两秒。然后他回了一条:
明天上午十点,南区店,你跟我一起看午高峰的动线。
陈志远的回复很快:收到。
林晨把手机收进口袋。夜风吹过来,带着深圳五月特有的潮热。远处鹏城湾的水面映着灯光,几栋写字楼的灯火还亮着。
四个人了。之前是三个人——林晨、林枫、林浩。现在多了陈志远。四个人的分工像四个齿轮,咬合在一起,开始转动。
他开车回家。路上经过科技园中区,路过第一家店的门口。灯箱还亮着,白光照在人行道上。门口没有人了,但灯箱的光还在那里。
他看了一眼灯箱,没有停车,继续往前开。
下个月,灯箱会变成新的颜色。晨枫绿。六边形枫叶。两个字。
不将就。
第361章 月营收破百万
月底对账那天,林晨是在中央厨房的办公室里看的数字。
中央厨房还没正式投入使用,装修收尾的工作还在进行,但二楼隔出来的一间临时办公室已经能坐人了。水泥地,白墙,一张折叠桌,两把椅子,空调是刚装的,出风口还挂着塑料膜。林晨坐在折叠椅上,面前是笔记本电脑和一杯隔夜的茶。
他打开晨枫管理系统的后台,三家店的数据在屏幕上排成三列。
科技园中区店:月营收三十六万四千,净利润十四万二。 科技园南区店:月营收三十二万八千,净利润十二万九。 cbd店:月营收三十七万五千,净利润十五万六。
三家店合计月营收:一百零六万七千。 三家店合计净利润:四十二万七千。
林晨看着屏幕上的数字,手指在桌上敲了两下。
一百零六万。他之前做的中性预测模型是九十五万,乐观模型是一百一十万。实际数字落在了中性偏上的位置。cbd店的数据比他预估的好,翻台率做到了四点二,人均消费五十七,晚市营收占全天营收的百分之四十二——小宇的三时段模型跑通了。
他点开cbd店的明细数据看了一遍。午市套餐占了营收的百分之五十二,下午茶轻食占了百分之十一,晚市单点占了百分之三十七。下午茶的数据比预期低两个百分点,但晚市比预期高了三个百分点。这意味着cbd的白领不太愿意在下午买轻食,但愿意在晚上多花几十块钱吃一顿像样的饭。
林晨在笔记本上写了一行:下午茶时段需要调整,考虑砍掉或压缩,晚市加两道硬菜。
然后他算了一下分红。三家店的利润分配是林晨占百分之六十,林枫占百分之二十五,林浩占百分之十五。四十二万七的利润,他分二十五万六千。加上投资账户这个月的收益——他扫了一眼右侧屏幕上的监控面板,本月收益十九万三千。t厂月工资九万二。三块加起来,这个月的总收入超过了五十万。
他把笔记本合上,靠在椅背上。空调的冷风从头顶吹下来,他伸手调了一下出风口的方向。
门外传来脚步声。林枫推门进来,手里拿着一叠打印的采购单。他看到林晨盯着电脑屏幕,走过来站在后面看了一眼。
一百零六万?林枫说。
一百零六万七。
林枫把采购单放在折叠桌上,拉了另一把椅子坐下来。椅子是塑料的,坐下去发出咯吱一声。他看了一眼林晨笔记本上那行字,念出来:下午茶砍掉或压缩,晚市加两道硬菜。
cbd的下午茶数据不太行。林晨说。白领不太愿意在下午买轻食。但晚市的数据比预期好,客单价能推上去。
加什么硬菜?
让林浩想。他比我们懂。
林枫嗯了一声,从口袋里掏出笔记本,翻开cbd店那一页,用红笔把下午茶的预估营收从百分之十一划掉,写了一个百分之七,又在晚市旁边画了一个箭头,往上指。
中央厨房的设备调试还有两周。林枫说。调试完之后,三家店的食材统一从这个厨房配送。中区店的配送路线最短,二十分钟。南区店三十分钟。cbd店最远,四十五分钟。配送时间长了,蔬菜的新鲜度会受影响。
这个我算过。林晨在电脑上调出一个表格。cbd店的叶菜走日采,不从中央厨房走。中央厨房只配送半成品和调料。叶菜每天早上从cbd附近的菜市场直送,林浩已经联系好供应商了。
那肉类呢?
肉类走中央厨房。中央厨房统一处理、统一分装,冷链配送。比每家店单独采购便宜百分之十二。
林枫在笔记本上记了一行:中央厨房配送,叶菜日采直送,肉类统一处理配送。
三家店月营收过百万了。林枫把红笔收进口袋,看了一眼林晨。你算过分红没有?
算了。我分二十五万六。你分十万七。林浩分六万四。
林枫点了一下头,没有多说。他做工程出身的,对数字的敏感度不比林晨差。月营收一百万意味着什么,他很清楚。他在建筑公司干了十多年,经手的工程项目动辄上千万,但那是别人的钱。月营收一百万是自己的生意做到的数字,含金量不一样。
接下来呢?林枫问。
接下来要解决三个问题。林晨伸出三根手指。第一,中央厨房两周后要跑起来。三家店的食材配送要统一管理,采购成本要降下来。第二,cbd店的下午茶时段要调整,要么换打法,要么砍掉。第三,三家店的人事架构要理顺,周小敏管中区店和南区店的前厅,小宇管cbd店的全面运营。这三件事解决了,才能想第四家店的事。
你已经在想第四家了?
想不想的,数据在推着走。林晨把三根手指收回去。三家店月营收一百万,净利润四十万。照这个速度,中央厨房投入使用之后,净利润还能再涨五到八个点。因为采购成本降了,损耗降了,出品稳定性也提高了。
林枫站起来,走到门口又转回来。有个事跟你说。林浩昨天跟我提了一嘴,说周小敏最近在问他,能不能学做菜。
周小敏?林晨想了一下。她不是管前厅的吗?
她说想多学一门手艺。前厅的事她已经能独立管了,但后厨她没碰过。她觉得自己只会管前厅,如果以后店多了,她升不上去。
林晨想了两秒。让她学。但不是现在。等中央厨房跑稳了,让林浩带她一周。一周就够了,不需要她做主厨,但至少要知道出菜的流程和标准。
林枫拉开门,走了出去。
下午两点,林晨开车去cbd店。
cbd店已经开了三个多月了。午高峰刚过,店里还有三四桌客人在收尾。小宇站在收银台后面,正对着ipad上的数据发呆。他听到推门声,抬头看了一眼。
大伯。
今天翻台率多少?林晨在角落坐下。
四点二。小宇从收银台后面走出来,递了一杯水。比上周高了零点一。主要是一款新菜带起来的——林浩上周加的酸菜鱼,午市和晚市都点单率很高。
酸菜鱼的毛利率?
百分之五十八。比平均水平高三个点。小宇拿出手机调出数据。但出餐速度慢了四十秒。酸菜鱼的备料时间比其他菜多两分钟,午高峰的时候灶台压力大了。
备料流程能优化吗?
我跟林浩商量过了。中央厨房配送之后,酸菜鱼的半成品可以在中央厨房做好,鱼片提前腌制,酸菜提前炒好,到店里只需要加热和摆盘。出餐速度能从七分钟降到四分钟。
林晨点了一下头。小宇这三四个月的变化是肉眼可见的。四个月前他从高铁上下来的时候,还是个大专毕业不知道自己要干什么的年轻人。现在他站在cbd店收银台后面,说得出翻台率、毛利率、出餐速度、备料时间这些数据,还能主动跟主厨商量流程优化。
下午茶时段的数据你看了吗?林晨问。
小宇的表情变了一下。看了。比预期低。
什么原因?
我想过。小宇走到桌边,拉了一把椅子坐下来。cbd的下午茶跟科技园不一样。科技园的人中午出来吃饭,吃完就走,下午不会再来。但cbd的白领下午三点到四点会出来买咖啡,但他们买咖啡的习惯是去星巴克或者便利店,不习惯在快餐店买轻食。轻食这个定位在快餐店里很难成立。
你觉得应该怎么办?
砍掉轻食,改成饮品。小宇说。下午时段只做饮品,不需要后厨出力,不需要额外备料,一台咖啡机加一个吧台就行。饮品毛利百分之七十以上,比轻食高二十个点。而且cbd的人下午买咖啡是刚需,不习惯买轻食是习惯问题,不是我们的问题。
林晨看着他。这个四个月前还不知道自己要干什么的年轻人,现在在用毛利率和消费习惯分析一个时段的运营策略。
饮品用什么品牌?林晨问。
不搞加盟品牌。小宇说。自己研发。林浩做菜行,饮品我找了两家供应商试过,美式、拿铁、抹茶拿铁、冷萃。成本一杯不到五块,卖十八到二十二。用晨枫自己的杯子,上面印晨枫的logo。
林晨想了几秒。你写个方案给我。成本、设备、人力、预期营收、回本周期。下周五之前。
我明天给你。小宇说。
林晨站起来,拍了拍他的肩膀。小宇的肩膀比四个月前宽了一点,站姿也稳了一些。不是身体变宽了,是底气足了。
他走出cbd店,站在门口。福华路上下午的阳光斜斜地照过来,写字楼的玻璃幕墙反射出刺眼的光。他回头看了一眼店门,晨枫快餐四个字在招牌上亮着,旁边贴着小宇上周设计的冬季新品海报。海报用的是深红色底,白色字体,写着酸菜鱼·冬日限定。
他掏出手机,给林浩发了一条消息:
中央厨房的半成品方案什么时候能出?
林浩秒回:下周。
他又给苏婉发了一条:
今晚回来吃饭。
苏婉回了一个笑脸。
晚上吃饭的时候,乐乐在旁边写作业,苏婉做了清蒸鲈鱼和炒西兰花。林晨把手机放在桌上,屏幕亮着,晨枫管理系统的首页在上面显示。三家店的数据像三条线并排排列,每一条都在往上走。
今天跟林枫对完账了?苏婉把鱼肚子的肉夹到林晨碗里。
对完了。月营收一百零六万七。净利润四十二万七。
苏婉的筷子在空中停了一下。她对这个数字是有概念的。上个月两家店的净利润是十七万三,这个月加了cbd店,翻了两倍多。
你分红多少?
二十五万六。加上投资账户这个月的收益十九万三,t厂工资九万二。这个月总收入五十三万。
苏婉没有接话。她把西兰花夹到乐乐碗里,乐乐埋头写作业,没有听到。
餐饮收入超过工资了。林晨说。
这句话说出来的时候很平静,像是在说今天天气不错。但他知道这句话的分量。餐饮收入超过工资,意味着他可以不再依赖t厂的薪水生活。晨枫快餐已经从一个副业变成了一条可以独立支撑的线。
苏婉放下筷子,看了他一眼。你想好了?
林晨夹了一块鱼肉,嚼了两下。差不多了。v4的交接下个月结束。交接完我就提。
苏婉没有追问。她端起水杯喝了一口水,目光落在窗外。鹏城湾的夜色很安静,远处的灯火像星河倒映在水面上。
那中央厨房的事呢?苏婉问。
中央厨房两周后启用。启用之后采购成本降百分之十二,出品稳定性提升。三家店的净利润能再涨五到八个点。
那你全职做晨枫之后呢?
开第四家、第五家,然后第十家。林晨说。晨枫不能只在科技园和cbd。鹏城有这么多写字楼和商圈,需求是摆在那里的。
苏婉看着他。你越来越像做生意的人了。
林晨笑了一下。我本来就是做生意的人。在t厂写代码之前,也在做生意——只不过那时候做的生意是给别人写的。
他放下筷子,看着手机屏幕上那三条并排的数据线。科技园中区,科技园南区,cbd。三条线,三个模型,三种客群,三个团队。每一条线都在往上走,没有一条在掉。
一百零六万七。
这是晨枫快餐单月营收第一次突破一百万。三年前他在科技园中区那间满是灰尘的铺位里数人流量的时候,没有想到三年后会站在这里,看着屏幕上的七位数营收报表。
但他也没有特别激动。数字是结果,不是原因。原因是每天早上五点半林浩起来备料,原因是林枫拿着卷尺量铺位的面积,原因是小宇站在收银台后面看数据想方案,原因是灶台上的火一直在烧,厨房里的菜一直在出,门口的客人一直在排队。
他站起来,走到窗边。鹏城湾的水面上有几盏灯在亮,像很远很远的地方在等他。
手机响了一下。是小宇发来的消息,附带一份文件:
大伯,下午茶改饮品的方案我写好了。成本、设备、人力、预期营收、回本周期都写了。您看下。
林晨打开文件。第一页标题写着:cbd店下午茶时段饮品替代方案。下面是数据表格,每一行都有小宇自己算的数字。设备投入一万二,月营收预估三万二,净利润两万,回本周期三周。
他看完了,回了一条消息:明天店里谈。
然后他关掉手机,回到餐桌旁。苏婉已经在收拾碗筷了,乐乐的作业也写完了,正在看一本漫画书。
爸爸,你今天为什么这么开心?乐乐抬起头问。
林晨想了一下。因为今天有一个数字超过了一百万。
一百万是什么?乐乐歪着头。
是很多人一起努力的结果。
乐乐似懂非懂地点了点头,又低头看漫画了。
苏婉从厨房端了一盘切好的水果出来。她看了一眼林晨,嘴角微微翘起。
开心完了就帮我把碗洗了。
林晨站起来走向厨房。经过茶几的时候,他看了一眼手机。屏幕已经暗了,但三条数据线的轮廓还印在他的脑海里,像三条河流汇入大海之前最后的并行。
一百零六万七。
这只是开始。
第362章 辞职的决定
v4的最后一版代码提交之后,林晨在工位上坐了整整五分钟没有动。
屏幕上FinGpt的运行日志安静地跳动着,最后一行的时戳是下午四点十七分。cI/cd流水线自动触发了部署流程,进度条从百分之零缓慢地爬到了百分之百,绿色对勾跳了出来。他写了一个简单的提交信息:feat: v4 final release - handover plete。
翻译成中文就是:v4最终版发布,交接完成。
他关掉IdE,关掉文档窗口,关掉Slack,最后关掉邮件。二十三封未读邮件他一封都没有回。他站起来,把杯子里的隔夜茶倒进水槽,杯子洗干净放回架子上。椅子轻轻转了一下,他伸手扶住,没有让它继续转。
陈博士的办公室在走廊尽头。林晨走过去的时候,走廊上的灯有两盏没亮,天花板的灯管闪了一下又恢复。他的脚步声在空旷的走廊里回响,旁边工位上有几个人在低头敲代码,没有人抬头看他。
他敲了两下门。
进来。
陈博士坐在办公桌后面,面前摊着两份文件,手边放着一杯咖啡——这次不是外面买的纸杯咖啡,是办公室里速溶的那种,杯壁上还挂着没搅开的咖啡粉末。他看到林晨进来,把文件合上了。
林晨在陈博士对面坐下来。办公室的窗帘半拉着,下午的光从缝隙里透进来,打在地毯上形成一条窄窄的光带。陈博士的书架上除了技术书籍之外多了几本杂志,有一本《哈佛商业评论》,封面被翻卷了。
v4上线了。林晨说。
我看到了。部署很顺利。陈博士靠在椅背上,手指在桌面轻轻敲了两下。你找我,不是来聊部署的吧。
林晨没有铺垫。他在这间办公室里说过很多话——项目方案、技术架构、团队调整、数据异常——但今天要说的话不在这些类别里。
陈博,我想跟您谈一件事。林晨看着陈博士的眼睛。我决定辞职。
陈博士的手指停了。办公室里安静了三秒,只有空调出风口的嗡嗡声。
想好了?陈博士问。
想好了。
陈博士端起咖啡喝了一口,放下来。他的表情没有太大变化,但嘴角微微收紧了一下。林晨跟了他三年,知道这是他在消化信息时的习惯。
什么时候开始想的?
上个月。公司宣布FinGpt从产品转平台的那天。
陈博士点了一下头。他没有追问为什么那天才开始想。他比任何人都清楚那个宣布意味着什么。
你接下来做什么?
全职做餐饮。我有三家快餐店,月营收过百万。加上投资系统的收益,现金流没问题。
陈博士听了这个数字,没有表现出意外。三年前面试林晨的时候他就看出来了——这个人说数字的时候,不是在炫耀,是在摆事实。月营收过百万,说明餐饮这条线不是副业,是另一条主线。
你在t厂三年,从零搭起了FinGpt的团队。陈博士说。技术、产品、商务,每一步都是你在推。现在你走了,这个团队怎么接?
交接文档我上周就写完了。技术架构、数据流、模型版本、关键参数、已知问题和风险点,全部在里面。陈铭可以接技术线,周姐可以接商务线。
陈铭能接得住吗?
林晨说。陈铭的技术能力够,缺的是全局视角。但v4上线之后系统已经稳定了,短期不需要大的架构调整。他守得住。
陈博士沉默了一会儿。窗外的光带慢慢往右边移了两寸,下午的时间在无声地流逝。
林晨,陈博士开口,声音比刚才低了一些。你知道我三年前为什么面你吗?
林晨没有回答。
不是因为你的算法能力。算法强的人大厂一抓一把。是因为你那天说的那句话——AI的物理成本陈博士看着桌面上的咖啡杯。你说大多数人在堆算力,少数人在优化效率。你说好的系统不是靠硬件堆出来的,是在物理约束下找到最优解。
我记得。
这三年你做的FinGpt,从v1到v4,每一版都在降算力、提效率。别人做模型是堆GpU,你做模型是砍参数。砍到最后,v4用三分之一的算力跑出了跟v3一样的效果。这就是你三年前说的那句话的落地版。
林晨听着,没有插话。
你走了,FinGpt会继续跑。但它不会再有人用物理成本的视角去看问题了。陈博士把咖啡杯推到一边。这是你的损失,也是团队的损失。
林晨想了几秒。陈博,我在t厂做的这三年,是我技术成长最快的三年。这一点我很清楚。FinGpt从零到一,从模型到产品到平台,每一步都离不开您给的方向和资源。但您也看到了,FinGpt转平台之后,我能做的事在变少。不是技术做不了,是那种从零到一的创造感在消失。
而餐饮那边有?
林晨没有犹豫。每开一家店,从选址到装修到菜单到流程到数据模型,每一步都是新的。开第三家店的时候我发现,三家店的模型参数都不一样,我不能直接复制第一家店的方案去套第二家第三家。这种每一步都要重新建模的感觉,跟三年前做FinGpt v1的感觉一样。
陈博士听完,端起咖啡杯又放下了。咖啡已经凉了。
你什么时候提离职?
下周一。
离职期多久?
公司规定一个月。但交接工作v4上线之后基本完成了。如果不需要我留满一个月,两周也够。
陈博士想了一下。两周可以。但最后两周你别闲着。帮陈铭把技术架构的文档再过一遍,确保他能完全接手。
陈博士站起来,走到窗边。窗帘的缝隙里透进来的光照在他半边脸上。他看着窗外,鹏城湾的水面在下午的阳光下泛着白光。
林晨。他说。
你做的餐饮,叫什么来着?
晨枫快餐。
晨枫。陈博士念了一遍这个名字。枫是你堂哥,浩是你侄子。一家人做事。
陈博士转过身来,看着林晨。他的眼神里没有惋惜,没有劝留,但有一种林晨很少在他脸上看到的东西——是那种老师看着学生毕业时的表情,欣慰里带一点空。
我三年前面你的时候,你说你被裁了,很迷茫。我说你迷茫是因为你没有找到自己的战场。后来你在t厂找到了一个战场,打赢了。现在你要换一个战场,去打另一场仗。陈博士停了一下。这很好。一个人一辈子只打一场仗,太小了。
林晨听着。他知道陈博士不是在客气。这个从不在正式场合说场面话的人,此刻说的每一个字都是认真的。
但我有一个条件。陈博士回到桌前坐下。
什么条件?
你的投资系统,能不能把FinGpt的模型接进去?
林晨愣了一下。
不是要你的代码。陈博士摆了一下手。FinGpt转平台之后,金融场景是一个重要方向。你在投资系统里积累了大量的金融数据和交易信号,如果能把FinGpt的语言理解能力接进去,可以做研报分析、情绪指标、风险预警。你做不了产品,我帮你在平台上开一个接口。你用你的数据,我提供模型能力。不算正式合作,算技术交流。
林晨想了三秒。可以。接口文档我来写。
陈博士站起来,伸出右手。
林晨也站起来,握了一下。陈博士的手干燥温热,力度适中,跟三年前面他的时候一样。
林晨。
t厂的门永远开着。你什么时候想回来,来找我。
林晨点了一下头,转身走出了办公室。
走廊上的灯有两盏又灭了,天花板上的光线暗了一截。他走回自己的工位,坐下。屏幕已经锁屏了,黑屏上映出他自己的脸。他看着那张脸,三年的时间刻在上面——比三年前多了几道细纹,但眼神比三年前亮了。
他拿出手机,给苏婉发了一条消息:
谈完了。他同意了。两周后走。
苏婉回了一个字:
他又给林枫发了一条:
两周后我全职。中央厨房的事准备好了。
林枫秒回:知道了。
最后他给林浩发了一条:
v4上线了。交接完我就来店里。
林浩回了一个竖起大拇指的表情。
晚上回到家,乐乐已经睡了。苏婉在客厅里等他。茶几上放着两杯茶,一盏台灯亮着暖黄的光。
林晨换鞋进门,在沙发上坐下来。苏婉把茶杯推到他面前。
怎么样?
陈博士同意了。两周后离职。
苏婉端起茶杯喝了一口,没有说之类的话。她知道辞职不是一个值得庆祝的节点,而是一个选择的结果。选择的结果没有好坏,只有方向。
他怎么说?
他让我帮陈铭把技术文档再过一遍,确保他能完全接手。然后他提了一个条件——让我把投资系统接上FinGpt的模型,做金融场景的技术交流。
你答应了?
答应了。接口文档我来写。
苏婉点了一下头。她把茶杯放下,靠在沙发背上。
你现在什么感觉?她问。
林晨想了一下。松了一口气。不是开心,是松了一口气。就像跑完一场马拉松,过了终点线之后的那种感觉。不是兴奋,是终于完了的感觉。
那你后悔吗?
不后悔。他说得很快。三年前我进t厂的时候,什么都没有,只有一身技术和一个投资系统。现在我要离开t厂,有三年积累的技术视野,有一个跑通的团队管理经验,有三家快餐店,有一个投资系统,还有一本书。他停了一下。三年前我给t厂的东西比t厂给我的多。现在我要拿回属于我的时间了。
苏婉看着他。你说得好像在跟自己确认。
是在确认。林晨端起茶杯,喝了一口。茶已经有些凉了,苦味比温的时候更明显。三年前我进t厂是因为我需要一个平台验证自己的技术能力。现在这个验证完成了。FinGpt从v1做到v4,从零做到稳定。我需要验证的东西,验证完了。
那接下来的时间呢?
给晨枫。林晨放下茶杯。三家店月营收一百万,净利润四十万。中央厨房两周后启用。第四家店、第五家店、第十家店,这些事需要一个人全职盯。我兼职做了三年,够了。
苏婉没有再问。她伸手拿起茶几上那本《35岁程序员的AI逆袭》,翻了翻,合上放回原处。
你这本书的版税这个月到了多少?她问。
两万八。不多,但每月都有。
加上版税,加上投资收益,加上餐饮分红。你辞掉t厂之后,月收入还有多少?
林晨在脑子里算了一下。保守估计四十万。t厂的工资没了,但全职做晨枫,扩张速度加快,餐饮分红会增加。加上投资收益和版税,总收入可能比现在还高。
那你担心什么?
不担心钱。林晨说。担心的是离开t厂之后,技术视野会收窄。在t厂,每天接触的是最前沿的模型、最新的论文、最激烈的行业讨论。离开之后,这些信息不会自动送到我面前。
那你打算怎么办?
陈博士给的FinGpt接口是一个渠道。另外我打算保持技术社区的关注,每周抽时间看论文。不做深度研究,但保持信息输入。
苏婉没有评论这个计划。她只是把茶杯推到林晨面前,提醒他茶凉了。
林晨端起茶杯,把最后一口凉茶喝完。茶的苦味在舌根上留了一瞬,然后散开。
你真的想好了?苏婉最后问了一次。
想好了。
苏婉站起来,把两个茶杯收进厨房。水龙头打开又关上,碗碟碰撞的声音清脆。她擦干手走出来,在走廊的灯光下看了他一眼。
那明天帮我把阳台的灯修一下。一直闪。
林晨坐在沙发上,听着厨房里水龙头关上的声音。客厅安静下来,茶几上那本书的侧面在台灯的光线下投下一道窄窄的影子。书名被光线模糊了,只看得见几个字的轮廓。
他想起了三年前进t厂面试的那个下午。陈博士坐在对面,问他AI发展最大的阻碍是什么。他说了那句改变他职业生涯的话——物理成本。陈博士的眼睛亮了一下。那一刻他知道自己被录取了。
三年后的今天,他站在陈博士的办公室里说了另一句话——我要走了。陈博士的眼睛没有亮,但也没有暗。他只是点了一下头,像三年前面他的时候一样,平静、认真、不拖泥带水。
他站起来,走到窗边。鹏城湾的夜色在窗外铺开,水面上有几盏灯在晃动。远处t厂的办公楼还亮着,二十三楼的灯没有关——陈博士的办公室在二十三楼。他每次加完班出来,都会看一眼那扇窗。窗里的灯光像一个信号,告诉他有人在,方向在,他不是一个人在跑。
下周之后他就不需要再看那扇窗了。
他关上窗帘,回到卧室。苏婉已经躺下了,背对着他。他躺下来,看着她的后背。她穿着那件灰色棉t恤,跟三年前一样。三年前她也是这样侧身躺着,手里攥着一支笔和一张写满数字的纸。
那时候他们只有三十万存款和一屁股房贷。
现在他们有三家快餐店、一个投资系统、一本书,和一个刚做完的决定。
他闭上眼睛。
明天是周一。他要提交离职申请,开始两周的交接。然后他就要从一个打了两份工的人,变成一个只打一份工的人。
不一样的是,那一份工是他自己的。
第363章 离职
周一早上九点,林晨坐在工位上写离职邮件。
收件人是hR部门的主管王姐,抄送陈博士和部门Vp。邮件内容很简洁——因个人原因申请离职,最后工作日为两周后的周五,交接安排已与直属领导确认。他写完之后检查了一遍,没有错别字,语气克制但明确。光标在发送按钮上停了两秒,他按了下去。
邮件发出去了。
他靠在椅背上,盯着屏幕上的发送确认提示。绿色的小对勾跳了一下,消失了。就好像三年在这里的一切,最终都浓缩进了这一个小小的绿色对勾里。
十分钟后,王姐的电话打过来了。
林总,我收到你的邮件了。王姐的声音在电话里很平静,像是在确认一个普通的工作事项。您确定吗?
确定。
好的。我安排一下离职流程,下午给您发清单。
谢谢。
挂了电话,林晨站起来走到茶水间,给自己接了一杯水。茶水间的灯是白色的,照得水杯里的水也泛白。他端着水杯站在窗边,看着楼下的停车场。t厂的停车场在上班时间总是满的,一排排私家车在阳光下反光,像一片银灰色的海洋。
陈铭端着杯子走进来,看到林晨站在窗边,脚步顿了一下。
林总。
陈铭走到饮水机旁边接水,杯子放在出水口下面,水流的声音在安静的空间里很清晰。他接完水,没有马上走。
听说了。陈铭说。
架构文档我看过了。陈铭喝了一口水。写得很细。连模型训练的batch size都标了。
该标的都标了。你接手不会有问题。
陈铭点了一下头。他没有问林晨为什么走,也没有说挽留的话。陈铭跟了林晨两年,知道他做什么决定都是有原因的。他只是站在那里,端着水杯,安静了几秒。
林总,陈铭开口,你走了之后,FinGpt的团队会缩到十五人以下。平台的开发节奏会慢下来。
慢下来不一定是坏事。林晨说。产品阶段拼速度,平台阶段拼稳定。快不是目的,稳才是。
陈铭想了一下,点了一下头。我明白了。
他端着水杯走出茶水间。林晨听到他的脚步声在走廊里渐渐远去,然后安静下来。
消息在部门里传开的速度比邮件快。
下午一点,张雨从工位上走过来。她手里拿着一个文件夹,但看林晨的眼神不像是要谈工作。
林总,真的要走?
真的。
张雨在旁边的椅子上坐下来。她是团队里唯一的女生,也是数据方向最硬的人,从v1到v4的数据清洗和特征工程基本都是她做的。她看着林晨,嘴巴动了一下,像是想说什么,但最后只说了一句:
交接的事我能帮什么?
数据管道的文档你帮陈铭过一遍。有些参数是我写的,只有我清楚为什么那么设。你比陈铭更懂特征工程的逻辑,帮他把那几个关键参数的背景说明补上。
张雨站起来,走回自己的工位。走了几步又回过头来:欢送会的事你别管。我来安排。
林晨想说不用,但张雨已经转身走了。
下午三点,周姐从商务那边过来。她手里拿着三份客户续约函,放在林晨桌上。
这三份是下周到期的。周姐说。转给产品运营那边了,但我想跟你说一声。
谢谢。
周姐在门口站了一下。她在这个团队时间最短,但做事最利索,商务对接从没出过纰漏。
林总,她停了一下,外面都在说您去做餐饮了。
晨枫快餐?
你知道?
我知道。周姐笑了一下。cbd那家店我吃过两次。酸菜鱼不错。
林晨也笑了。下次来给你免单。
周姐点了一下头走了。
两周的时间过得比想象中快。
第一周他带着陈铭把FinGpt v4的技术架构走了一遍。从数据管道到特征工程,从模型训练到推理服务,从监控告警到灰度发布,每一个模块他都站在白板前画一遍架构图,讲一遍设计思路,然后让陈铭复述一次。陈铭复述的时候他会纠正一些细节——这个参数为什么设成0.001而不是0.01,那个阈值为什么是百分之五而不是百分之十。陈铭记笔记的速度很快,写完了会抬头看他一眼,确认自己理解对了。
周五下午,他跟张雨过了一遍数据管道的文档。张雨的笔记本上写满了密密麻麻的注释,每一条特征的处理逻辑、每一个窗口的滑窗大小、每一个异常值的检测阈值,全标了。他看了一眼,说:你比我写得好。
张雨没有笑。参数的背景说明我补完了。陈铭那边需要的我都发了。
第二周更安静了。他开始逐个跟团队里的人谈话。十二个人,每个人十五到二十分钟。有人问他为什么走,他说个人原因。有人问他去做什么,他说全职做自己的事。有人问他以后还能不能联系,他说随时可以。
十二个人里有三个人问了同样的问题:林总,你觉得我们接下来该怎么办?
林晨想了一下,给了同一个答案:做好手上的事。FinGpt的平台转型不是坏事,只是换了一种方式做事。做平台比做产品更需要耐心,但回报也更稳。
每个人听完都点了一下头。他知道他们听没听进去不全取决于他说什么,更取决于他们自己的处境和心态。他只能说到这一步。
周五下午五点,欢送会在二十三楼的小会议室里举行。
会议室的窗帘拉开了,夕阳从西面的落地窗涌进来,把整个房间染成暖橙色。桌上摆着蛋糕、水果和饮料,蛋糕上写着林总前程似锦几个字,是张雨去订的。气球是周姐买的,银色的,系在椅背上,风一吹就晃。
十二个人都到了。陈铭坐在最里面,手里端着一杯可乐,表情平静。张雨坐在他旁边,今天没有带笔记本。周姐站在门边,把灯关了一半,让夕阳的光多一点。其他几个人三三两两地站着或坐着,聊天声不大,但气氛不沉闷。
陈博士也来了。他站在角落里,手里端着一杯咖啡,没有讲话。
林晨走进来的时候,所有人一起鼓掌。掌声在会议室里响了几秒就停了,不大不小,刚刚好。
蛋糕是张雨订的。周姐说。气球是我买的。饮料是陈铭从茶水间搬来的。
谢谢。林晨看了一眼蛋糕上的字,笑了一下。
陈铭站起来,端着可乐走到林晨面前。林总,以后FinGpt的事我来顶。你放心。
我放心。林晨跟他碰了一下杯。可乐的气泡在杯壁上嗞嗞作响。
张雨也走过来,手里拿着一个小袋子。这是大家凑的。不成敬意。
林晨接过来打开。是一个机械键盘的键帽,银色的,上面刻了一个小写字母。FinGpt的首字母。
谢谢。他把键帽放回袋子里,装进口袋。
周姐没有送东西。她只是走过来,跟他握了一下手。林总,以后去晨枫吃饭,记得打折。
打骨折都行。
大家笑了一下。气氛轻松了一些。有人开始切蛋糕,有人去拿饮料,有人拍照。陈铭把可乐喝完了,又去接了一杯。张雨站在窗边看夕阳,偶尔回头跟人说两句。
欢送会持续了四十分钟。四十分钟里林晨跟每个人说了一遍再见。不是那种正式的告别,就是聊几句——最近项目怎么样、周末有什么安排、孩子上几年级了。他记得每个人的情况,因为这些人是他面试进来的、带起来的、从v1到v4一起走过来的。
四十分钟后,人群慢慢散了。会议室里剩下蛋糕盘子和几个银色气球,气球上印着t厂的logo,在暖橙色的光线下慢慢瘪下去。
陈博士从角落里走过来。他手里的咖啡杯已经空了。
走之前跟我上去一趟。陈博士说。
他们坐电梯上了二十三楼。
陈博士的办公室在走廊尽头。灯已经关了,但窗帘拉开着,夕阳把整个房间照得通亮。陈博士走到窗边,站在那里看了一眼鹏城湾。
三年前你来面试的时候,我就站在这扇窗前。陈博士说。那天你走了之后,我在这里站了十分钟。我在想,这个人说的物理成本,到底是随口一说还是真的想明白了。
后来呢?
后来你做v1的时候,我就在看了。v1用了一半的算力,跑出了跟竞品一样的效果。我知道你不是随口说的。
林晨站在他旁边,看着窗外的鹏城湾。水面在夕阳下变成了一片金红色,远处的货轮像一道黑色的线条,横在金红色的水面上。
今天你走,我也在这里站十分钟。陈博士转过身来,看着林晨。但我不需要再想什么了。你想明白了,我也想明白了。
他伸出手。不是握手的姿势,而是掌心朝上,像是在递什么东西。
t厂的门永远开着。陈博士说。你什么时候想回来,来找我。
林晨看着他伸出的手。他没有去握,而是也把手伸出来,掌心朝下,搭在陈博士的手掌上。不是握手,是搭手。像两个工程师在确认一件事的时候,把手搭在一起。
谢谢您,陈博。
不用谢。陈博士收回了手,转身走向门口。去吧。别迟到。
林晨在门口停了一下,回头看了一眼办公室。夕阳的光照在书架上,《哈佛商业评论》的封面翻卷了。咖啡杯还留在桌上,杯壁上的咖啡渍干了一半。
他走出办公室,坐电梯下楼。电梯门关上的时候,他看到二十三楼的楼层指示灯灭了。
走出t厂大楼的时候,天已经快黑了。
鹏城的天空在傍晚变成深蓝色,写字楼的灯光一盏一盏亮起来,像棋盘上的棋子被逐一摆上。他站在大楼门口,深吸了一口气。空气里有晚高峰的车流味,汽油和尾气混合在一起,不好闻,但很真实。
手机响了。是苏婉发来的消息。
结束了吗?
结束了。
回来吃饭。乐乐说要给你做一碗面。
林晨看着这条消息笑了一下。乐乐今年十岁,做面是他在学校学的,煮一碗方便面再加一个鸡蛋。上一次他吃乐乐做的面,还是半年前。
他回了一个字,把手机放进口袋。
走到停车场的时候,他又回头看了一眼t厂的大楼。大楼在夜色里亮着灯,二十三楼的窗户还亮着——陈博士还在。
他转身上车,发动引擎。车灯在夜色里亮起来,照在停车场的地面上,画出两个小小的光圈。
他开车汇入鹏城晚高峰的车流。导航提示前方两百米有拥堵,预计通过时间八分钟。他关掉导航,凭记忆走了一条小路。小路窄一点,但红绿灯少,比主路快五分钟。
这三年他走了无数遍这条路。早高峰来,晚高峰走,有时候加班到深夜,路上只有他和几个代驾司机。现在他不需要再走这条路了。
但他不觉得遗憾。
因为前面还有另一条路。那条路没有导航提示,没有固定车道,不知道会堵多久,也不知道能开多快。但那条路是他自己的。
他踩下油门,车子汇入主路。前方是鹏城湾的方向,远处的水面上有几盏渔火在亮。
手机又响了。是林枫发来的。
中央厨房明天正式启用。你来不来?
林晨回了一条:
第364章 新的身份
离职后的第一个早晨,林晨五点四十五就醒了。
不是因为闹钟。手机闹钟设在七点,是以前在t厂的时候定的。五点四十五是他身体里的生物钟——三年了,每天早上五点四十五到六点之间会自然醒。以前醒了要赶去公司,现在不需要了。但他还是醒了,躺在沙发上看着天花板发了一小会儿呆。
客厅的窗帘没有拉,外面的天还没亮透。鹏城的天空在清晨是灰蓝色的,云层很低,远处写字楼最高层的避雷针在灰蓝色的天幕上画出一根细线。他看着那根线,想起以前每个工作日早晨站在阳台上喝咖啡的时候,看到的也是这根线。那时候他在想FinGpt的数据管道有没有跑通,陈铭的代码review做了没有,上午十点的会议要讲什么。
现在他在想中央厨房的冷链设备昨天调试到几点了。
他起身,走到厨房。苏婉和乐乐还在睡,卧室的门关着,只有一条细细的光缝。他轻手轻脚地烧了一壶水,泡了一杯茶。茶是林浩上周从茶叶市场带回来的,大红袍,泡出来的颜色深琥珀,入口有点焙火的味道。他端着茶杯走到阳台,在躺椅上坐下来。
阳台的风是暖的,带着鹏城六月特有的潮气。六月中旬的清晨,太阳已经升得很高了,穿一件短袖就够了。他看着远处t厂的方向,二十三楼的灯应该还没有亮——那个时间从来没有早于七点半。他以前每次加班到深夜,下楼的时候都会看一眼那扇窗。现在他不需要看了。
手机震了一下。是林枫发来的消息。
中央厨房昨天调试到晚上十一点。冷链设备跑了一夜,温度稳定在零下十八度。你今天几点到?
林晨回:八点。
他放下手机,喝了一口茶。茶还是热的,焙火味在嘴里化开,留下一丝回甘。
这是离职后的第一天。不,不是离职后。是全职后的第一天。离职是一个从属的概念——从某个地方离开。全职是一个自主的概念——向某个方向走。他不是离开了t厂,他是走进了自己的人生。
这个想法在脑子里闪了一下就过去了。他不是那种喜欢跟自己谈哲学的人。他端着茶杯回到客厅,在沙发上坐下来,打开笔记本电脑。
晨枫管理系统的后台在屏幕上亮起来。三家店的数据还是昨天的——中区店营收七千三,南区店营收五千九,cbd店营收八千一。合计两万一千三。他看了一眼数据走势线,三条线都在正常区间内,没有异常波动。
他关掉数据窗口,新建了一个文档。文档标题他打了两秒:全职工作计划。
他在文档里列了六行。
第一行:中央厨房启用——食材统一配送,降本提效。 第二行:cbd店下午茶调整——饮品替代轻食,小宇方案落地。 第三行:第四家店选址——启动前期调研。 第五行:团队架构调整——周小敏学后厨,小宇升店长。 第六行:FinGpt接口——写投资系统对接文档。
六行字排在一起,看着不多,但每一行后面都牵着一串要做的事。中央厨房启用意味着三家店的采购流程要重写,供应商对接要重新梳理,出菜标准和品控要统一。cbd店的调整意味着小宇的饮品方案要从文档变成现实,设备采购、人员培训、菜单更新全部要落地。第四家店的选址意味着林枫又要开始跑,又要拿着卷尺去量面积,又要在笔记本上写红色的数字。
他盯着这六行看了半分钟,在最后一行下面又加了一行:
第七行:学习——每周至少看两篇论文,保持技术输入。
写完这一行他笑了一下。陈博士那天说的FinGpt接口的事,他还记得。投资系统接上FinGpt的模型能力,做研报分析和情绪指标——这件事不能因为离职就放下。他答应过陈博士的事,一件一件做,不拖。
他保存文档,关上电脑,去卫生间洗漱。
八点整,他到了中央厨房。
中央厨房在南山一个工业园里,离三家店的直线距离都在十五公里以内。一千平的场地,分成了四个区:冷库、加工区、包装区、配送区。冷库的温控面板显示零下十八度,冷链设备经过一夜的测试运行,温度曲线平稳,没有异常波动。
林枫站在加工区里,穿着白大褂,戴着口罩和发帽,手里拿着一份设备清单。他看到林晨进来,把清单递过去。
冷链设备昨晚跑了一夜,没有问题。加工区的四口灶和两台蒸柜今天试运行,排烟系统已经调过了。包装区的真空封装机昨晚也测了,封口效果稳定。配送区的路线我排了三趟,中区店最早出发,六点半送到;南区店七点;cbd店七点半。
林晨接过清单看了一遍。冷链设备、加工设备、包装设备、配送车辆,每一项后面都打了勾。他在心里算了一下——中央厨房启用之后,三家店的采购成本能降百分之十二,食材损耗能降百分之十五,出品稳定性能提升一个台阶。
人呢?林晨问。
加工区四个人,配送区两个人,加我一个管总的。总共七个人。三个人从店里调的,四个人新招的。新招的培训了两周,能用。
林浩那边呢?
他今天在cbd店。中央厨房启用之后,半成品的出菜标准他来定。每个菜品配几个半成品、怎么加热、怎么摆盘,他今天出方案。
林晨点了一下头。他在加工区走了一圈,摸了摸蒸柜的把手,敲了两下排烟管道。声音闷实,没有共振。他又走到冷库门口,推开厚重的保温门,零下十八度的冷气扑面而来。货架上已经摆了一部分食材,每层货架贴着标签——中区店、南区店、cbd店——分得清清楚楚。
标签系统可以。林晨说。
我设计的。林枫跟在后面说。每家店一个颜色,中区店蓝色,南区店绿色,cbd店橙色。配送的时候看颜色就行,不会搞混。
林晨从冷库出来,在加工区的白板前站下来。白板上写着今天的半成品出品计划:中区店六道半成品,南区店六道半成品,cbd店八道半成品(含cbd专用菜酸菜鱼的鱼片和汤底)。每一道半成品后面都标了出品数量和配送时间。
这个表谁填的?
林浩昨晚写的。林枫说。他备料的时候顺便填了,出菜标准和配送时间都标了。
林晨看着白板上的字迹。林浩的字不好看,歪歪扭扭的,但每一项数据都标得很清楚。三年前这个从东莞电子厂出来的年轻人连切菜都不会,现在他在白板上写半成品出品计划,每一道菜品的出品标准、配送时间、包装规格都写得明明白白。
他掏出手机拍了一张白板的照片,发给林浩。
出品标准看到了。今天cbd店的酸菜鱼走中央厨房半成品,你盯一下出餐速度。
林浩回了一个oK的手势。
上午十点,林晨开车去了cbd店。
cbd店的午高峰还没开始,店里只有两三桌客人在吃早午餐。小宇站在收银台后面,正对着ipad上的数据看。他看到林晨进来,放下ipad走了过来。
大伯,你来啦。
下午茶饮品方案准备得怎么样了?
小宇从收银台下面抽出一个文件夹。文件夹里是他写的方案——设备清单、成本预算、人力配置、预期营收、回本周期。他上周五晚上熬夜写完的,周末又改了两版。
林晨翻开看了一遍。设备投入一万二,包括半自动咖啡机一台、磨豆机一台、冷柜一台、吧台操作台一个。饮品菜单六款——美式、拿铁、抹茶拿铁、冷萃、柠檬茶、桂花拿铁。成本一杯不到五块,定价十八到二十二。月营收预估三万二,净利润两万,回本周期三周。
菜单是你定的?林晨问。
我试了三天。小宇从文件夹最后一页抽出一张纸。每款饮品我都自己做了,给店里的人试喝过。周姐说美式太苦,林浩说抹茶拿铁的抹茶粉可以换一个牌子。我改了两版,这是最终版。
林晨看了一眼试喝记录。每一款饮品后面都标了试喝人的名字和评分,满分五分。美式三点八分,拿铁四点二分,抹茶拿铁四点零分,冷萃四点五分,柠檬茶四点三分,桂花拿铁四点六分。
冷萃和桂花拿铁分数最高。
对。但美式和拿铁是引流款,不能砍。小宇说。cbd的咖啡消费以美式和拿铁为主,这两款占百分之六十的销量。冷萃和桂花拿铁是利润款,毛利高,走的是差异化。
林晨合上文件夹,看了小宇一眼。四个月前这个年轻人站在收银台后面还不知道怎么给客人推荐菜品,现在他能独立写一份饮品方案,里面有成本测算、菜单设计、试喝记录和定价策略。
方案通过。林晨说。下周一开始试运营。你负责。
小宇的眼睛亮了一下,但他没有马上笑。他点了一下头,把文件夹收回收银台下面。
还有一件事。林晨说。从今天开始,你的职位从副店长调为cbd店店长。周小敏负责中区店和南区店的前厅管理。
小宇愣了一下。店长?
你写的方案、你跑的数据、你做的试喝记录,够不够当一个店长,你自己心里清楚。
小宇想了两秒。我知道。我会做好。
不是做好,是做到位。林晨纠正他。做好是完成任务,做到位是超出预期。你现在管的不是两家店的前厅,是一家店的全面运营。人力、成本、菜品、投诉、数据,每一样你都要盯到。
明白了。
林晨拍了拍他的肩膀。小宇的肩膀比四个月前厚了一点——不是肌肉长了,是站姿稳了。站得稳的人,肩膀看起来就厚。
下午,林晨回到中央厨房。
加工区里四个人正在备料。林浩在旁边盯着出品标准,每一份半成品的重量、切法、调味都亲自过秤。配送区的两个人正在把贴好标签的保温箱搬上电动三轮车,每一箱上面标着颜色——蓝色中区店、绿色南区店、橙色cbd店。
林枫站在配送区门口,手里拿着今天的配送清单。
中区店六点半出发,七点之前送到。南区店七点出发,七点半送到。cbd店七点半出发,八点之前送到。三家店的半成品全部走冷链配送,叶菜走直送,林浩已经联系好了。
林晨看了一眼配送清单上的数字,在心里算了一下。今天的配送量是三家店的总备料量。如果明天开第四家店,配送量要增加百分之三十。配送时间也要重新排。
第四家店的事不急。林枫说。中央厨房今天第一天跑,先稳一周再说。
我知道。林晨看着配送区门口的那排保温箱。每一箱都贴着颜色标签,整整齐齐地码在三轮车上。蓝色的、绿色的、橙色的,三家店的食材分得清清楚楚,不会搞混。
他想起三年前第一家店开业的时候,食材采购是他骑着电动车去菜市场拉回来的。林枫在店里装修,林浩在厨房试菜,周小敏在前厅摆桌子。那时候没有中央厨房,没有冷链配送,没有颜色标签。只有一箱一箱的菜、一锅一锅的汤、一张一张的桌子。
现在有了中央厨房。有了冷链。有了颜色标签。有了管理系统。有了三家店月营收一百万。
他还有了一个新的身份。
不是t厂的总监,不是兼职的快餐店老板。是一个全职的餐饮人。
他站在中央厨房的门口,看着电动三轮车缓缓驶出工业园的大门。第一趟送中区店,第二趟送南区店,第三趟送cbd店。三轮车的尾灯在晨光里亮着,橙黄色的,像三盏小灯,一辆接一辆消失在路口。
他掏出手机,打开晨枫管理系统。三家店的实时数据在屏幕上排成三列,每一列的数字都在跳动。他看着那些跳动的数字,想起了以前坐在t厂工位上,左边看FinGpt的运行日志、右边看晨枫后台数据的那个自己。
现在他只需要看右边了。
左边那块屏幕,永远空着了。
他把手机收进口袋,转身走回中央厨房。加工区的排烟系统嗡嗡地响着,四口灶上的火烧得很旺,锅里翻滚着今天第一批半成品的底料。林浩站在灶台前面,左手颠锅右手拿铲,动作干净利落。
林浩头也不抬地说,第一锅底料出锅了。你来尝一下。
林晨走过去,拿起勺子舀了一口汤。汤的温度正好,味道比他在店里喝到的更浓——中央厨房的灶比店里的火力大,底料的浓度提了一个档次。
可以。他说。
林浩点了一下头,把锅里的汤倒进大桶里。两个工人立刻上前,用漏勺捞出一袋袋分装好的半成品,贴上标签,码进保温箱。
林晨站在旁边看了几秒,转身走出厨房。阳光从加工区的窗户照进来,打在他的白大褂上,暖洋洋的。
他的手机又响了一下。是苏婉发来的消息:
新身份第一天,感觉怎么样?
他站在阳光里,想了想,打了一行字:
跟昨天不一样。
不一样在哪里呢?他不知道怎么用一句话说清楚。也许是不用再看左边那块屏幕了。也许是不用再在t厂的走廊上走着看二十三楼的灯了。也许是站在中央厨房的门口看三轮车一辆一辆出发的时候,他知道每一辆车上的每一箱食材,都是他管的事了。
以前的身份是打两份工——一份给t厂,一份给自己。现在的身份是打一份工——全部给自己。
自由了。但责任更大了。
他收起手机,走回加工区。林浩在灶台前面出了第二锅底料,工人们在贴标签,林枫在门口检查三轮车的配送路线。阳光从窗户照进来,在加工区的地面上画出几道明亮的条纹。
这是全职后的第一天。早上五点四十五分醒来,八点到了中央厨房,十点去了cbd店,下午回到中央厨房。没有会议,没有邮件,没有代码review。只有食材、灶台、保温箱和颜色标签。
他脱下白大褂,叠好放在桌上。走出中央厨房的时候,回头看了一眼加工区。四个工人在灶台前忙碌,排烟系统嗡嗡地响着,林浩的刀声有节奏地响。
他想起三年前第一次走进科技园中区那间满是灰尘的铺位的时候,林枫拿着卷尺量面积,他站在门口数人流量。那时候他什么都没有,只有三十万存款和一个模糊的想法。
现在他有一千平米的中央厨房、三家店、一个管理系统、一个投资系统、一本书,和一个刚换的新身份。
他关上门,发动汽车。
导航提示前方两公里有拥堵。这一次他没有关掉导航。他没有着急赶路,也没有抄小路。
因为去哪里不着急了。他已经在路上了。
第365章 全职餐饮
全职第一周的周五,林晨开车跑了大半个鹏城。
早上七点从中央厨房出发,先到中区店看了一遍晨间的备料和出餐。林浩已经不在中区店了——他现在三个店轮转,上午在中央厨房盯半成品,中午去一家店盯午高峰出菜,下午回中央厨房备晚市的料。代替林浩在中区店后厨的是一个叫阿伟的年轻人,林浩的大徒弟,二十三岁,跟了林浩两年,出菜速度已经能跟上,但品控还差点意思。
林晨站在厨房门口看了五分钟。阿伟出的第一份回锅肉,颜色比林浩出的深了半个色号,酱汁收得不够干。他没有说话,拿出手机拍了一张照片,发给林浩。
回锅肉品控偏差。酱汁收干时间多加三十秒。
林浩回了一个字:
八点半他到了南区店。周小敏正在前厅做开店准备,擦桌子、摆餐具、检查收银系统。看到林晨进来,她停下手里的活,走过来。
林总,早。
早。中区店今天的备料到位了没有?
到了。六点四十五到的,比昨天早了十分钟。标签颜色没搞错,分区摆放也对了。
林晨点了一下头。他看了一眼前厅的布置——桌子擦得干净,餐具码得整齐,收银系统的屏幕亮着。这些都是周小敏在管的事。她在中区店和南区店之间轮转,管两家店的前厅运营。以前她只管一家,现在管两家,忙了很多,但没出过差错。
中区店和南区店的前厅,你觉得能再扩一家吗?林晨问。
周小敏想了一下。能。但需要再加两个人。我管两家店已经到极限了,再多一家,顾不过来。
人你选,我看。林晨说。从店里提拔,不从外面招。
九点半他到了cbd店。小宇正在吧台后面调试新到的半自动咖啡机。机器是前天到的,白色外壳,个头不大,但功能齐全。小宇花了两天时间研究说明书、调试参数、试做饮品,现在他出的拿铁拉花已经像模像样了。
明天开始试运营。小宇说。菜单就定那六款,定价十八到二十二。吧台的杯子和杯套昨天到了,印了晨枫的logo。
林晨看了一眼吧台上的纸杯。纸杯是白色的,侧面印着晨枫的绿色logo,下面一行小字:晨枫快餐·cbd店。简洁,干净,没有花哨的设计。
杯子是哪家供应商?
我在网上找的三家比了价。小宇拿出手机翻出聊天记录。第一家最便宜,但质量不行,杯壁太薄,热水一倒就软。第二家中等,质量可以但起订量太大,五千个起。第三家贵百分之十五,但质量最好,而且可以定制logo,起订量一千个。我选了第三家。
林晨看了一眼价格。一千个起订量,按现在的预估日均销量,大概能用多久?
二十天左右。
不够。林晨说。起订量谈一下,加到三千个。单价不变,或者降两个点。这样三个月不用补货,减少运营频次。
小宇想了一下。好。我今天下午就谈。
林晨在cbd店待了四十分钟,把吧台的动线、设备的摆放、出品的流程看了一遍。小宇的方案在纸面上是完整的,但实际落地之后有些细节需要调整——吧台太窄,咖啡机和冷柜之间只有六十公分的操作空间,做两杯饮品的时候会手肘打架。他让小宇重新量一下吧台的尺寸,把冷柜挪到吧台侧面,腾出更多操作空间。
中午十一点半,午高峰开始。
林晨没有坐在店里,而是站在cbd店门口的人行道上。他戴着一副墨镜,手里拿着矿泉水瓶,像一个普通的路人。来往的白领从他身边经过,没有人注意到他在数人流量。
十一点半到十二点半,经过cbd店门口的人流大约四百八十人。进店一百一十二人,转化率百分之二十三点三。这个数字比上周高了两个百分点——饮品吧台的存在感让路过的人多看了一眼,然后有人就走进了店里。
他走进店里,站在角落观察。小宇在吧台后面出饮品,动作已经比上周熟练了很多。一杯美式从接到订单到出杯,一分半钟。一杯拿铁两分钟。冷萃最快,倒杯即走,四十秒。吧台的出杯速度可以跟上午高峰的需求。
酸菜鱼的出餐速度也快了。中央厨房配送的半成品鱼片和汤底,到店里只需要加热和摆盘。从出餐到端上桌,四分钟。比之前快了两分半钟。
林晨在手机上记了一行:中央厨房半成品方案有效,午高峰出餐速度提升38%。
午高峰结束的时候,cbd店的营收达到了四千八百元。按这个速度,全天营收能到一万二到一万三。比上周同期涨了百分之十五。
他走出cbd店,在路边吃了碗面,然后开车去了南山。
下午两点,他在南山一个新开的商业区停了车。
这是他跑的第三个候选选址。前两个是上周看的,一个在蛇口,一个在前海。蛇口的铺位面积太小,只有八十平米,做快餐勉强可以,但做不出品牌感。前海的铺位位置不错,但租金太贵,月租七万二,按模型算回本周期要六个月以上。
南山的这个商业区是去年底才交付的。三栋写字楼,入驻率刚过五成,但已经能看到中午有人在楼下找吃的了。楼下的底商大部分还空着,只有几家连锁便利店和一个水果店开门营业。
林晨站在商业区入口,数了三分钟的人流。四十二个人经过,穿正装的占三成,便装的占七成。他打开手机备忘录,记了一行:南山科技园北区,人流密度中等偏低,入驻率五成,午高峰人流量待测。
他往里面走了一圈。底商的铺位有两间在招租,一间九十平米,一间一百二十平米。九十平米的租金三万二,一百二十平米的四万。他拍了照,发给林枫。
这两间你看看。明天来量一下。
林枫回:明天下午有空。
他继续在商业区里走。走了大约十分钟,看到一栋写字楼的侧门有一家面馆,门口排了七八个人。面馆的门面不大,六十平米左右,出餐速度很快,三分钟一碗。他站在旁边观察了五分钟,进店的人大约二十个,人均消费二十五到三十。
他拿出手机记了一行:竞品分析——面馆,60平,人均25-30,出餐3分钟,排队7-8人。竞品客单价偏低,晨枫定价45-50有空间。
离开南山的时候已经下午四点了。他开车回中央厨房,路上经过了科技园南区店。南区店的晚市准备开始了,周小敏在门口检查外摆区的桌椅。他没停车,从后视镜里看了一眼就开过去了。
回到中央厨房的时候,林浩正在备晚市的料。
加工区里的四口灶有两口在运作,一锅在煮底料,一锅在蒸半成品。空气里弥漫着花椒和辣椒的香味,混着八角和桂皮的甜味。林浩站在灶台前面,左手颠锅右手拿铲,动作比三年前不知道稳了多少倍。
哥,明天试运营的事准备好了没有?林浩问。他说的试运营是cbd店饮品吧台的试运营。
小宇说准备好了。吧台动线调整了,杯子供应商今天谈了,起订量从一千提到了三千。
饮品这块我不太懂。林浩说。但有一点我可以帮忙。吧台旁边可以加一个保温柜,出热饮的时候温度不容易散。cbd的冬天比科技园冷,白领端着一杯凉拿铁走三分钟就不好喝了。
这个想法可以。林晨在手机上记了一行。保温柜加到设备清单里。
林浩把锅里的底料倒出来,开始洗锅。水龙头的水声哗哗响着,他头也不抬地说:
哥,你全职之后跑选址跑得比以前快了。
时间多了。林晨说。以前每个周末跑一次,现在每天都能跑。
第四家店什么时候开?
选址定了再说。不着急。
林浩关掉水龙头,转过来看他。你嘴上说不要着急,但你这周跑了三个选址。我看得出来,你比我们任何人都急。
林晨没有反驳。他看着加工区里忙碌的工人,看着保温箱上贴着的三色标签,看着灶台上翻滚的底料。三年前他站在一间满是灰尘的铺位里数人流量的时候,没有想到三年后会站在一千平米的中央厨房里,管着三家店和七条配送路线。
急不急的不重要。他说。重要的是每一步走稳。
林浩嗯了一声,转回去继续备料。
晚上回家,苏婉在做饭。
乐乐在客厅写作业,铅笔在纸上沙沙响。厨房里飘出红烧肉的香味,苏婉围着围裙在灶台前忙活。
林晨换了鞋,走进厨房。苏婉看到他,把围裙解了一半。
第一天全职跑了一天?苏婉问。
跑了三家店和一个选址。林晨从冰箱里拿出一瓶水。cbd店的饮品吧台明天试运营,南山那边有个新开的商业区,人流还行,入驻率刚过五成,但有空间。
你看你的眼睛。苏婉笑了一下。比在t厂的时候还亮。
林晨摸了一下自己的脸,没觉得有什么不同。
在t厂的时候,每天看的是FinGpt的运行日志和部门的排期表。他说。现在每天看的是三家店的数据和选址的人流量。都是看数据,但感觉不一样。看FinGpt的数据是维护,看晨枫的数据是建设。维护是在一堵墙上补灰,建设是在地上起一栋楼。
苏婉没有接话。她把红烧肉盛出来,又炒了一个清炒菜心,端到桌上。
吃饭的时候,乐乐抬起头问了一个问题。
爸爸,你现在不去t厂上班了?
不去了。
为什么?
因为爸爸有自己的事要做。
乐乐想了想。做快餐?
对。做快餐。
那你可以每天来店里吗?
林晨笑了一下。可以。
乐乐低头继续吃饭,过了几秒又抬起头。爸爸,你以前在t厂的时候,每天回来都很晚。现在你能早点回来吗?
那你能帮我检查作业吗?
乐乐低头扒了两口饭,没有再说话。苏婉看了林晨一眼,嘴角微微翘起。
吃完饭,林晨帮乐乐检查了数学作业——有两道算术题做错了,他指出来让乐乐自己改。乐乐改完之后把作业本收进书包,抱着爸爸的胳膊在沙发上坐了一会儿,然后去刷牙洗脸睡觉了。
苏婉在厨房洗碗。林晨走过去,站在旁边擦碗。
全职第一天,感觉怎么样?苏婉问。
林晨想了一下。比在t厂的时候忙。但忙的东西不一样。在t厂的时候忙的是回邮件、开会、写文档。现在忙的是看数据、跑选址、调流程。每一样都是自己在做的事,不是在帮别人做的事。
不后悔?
不后悔。
苏婉把最后一个碗递给他,他擦干放进碗柜,关上柜门。
苏婉。
你说我做快餐,听起来像降级了。从t厂的总监到快餐店老板。
我没说过。
别人可能会这么说。
别人怎么说跟你有什么关系。苏婉把抹布挂起来,擦了擦手。你在t厂的时候,别人说你是总监。你现在做快餐,别人说你是老板。总监是给别人打工,老板是给自己做事。哪个是降级?
林晨想了一下,笑了。你说得对。
他走进书房,打开电脑。晨枫管理系统的后台在屏幕上亮着,三家店的数据在跳动。他把今天跑了三个选址的数据录进系统,新建了一个文件夹:第四家店选址。
文件夹里暂时只有三个文件:蛇口、前海、南山。每个文件里有面积、租金、人流量、竞品数量、预估营收。三个文件并排排列,像三间空铺位等他来量面积。
他点开南山那个文件,在备注栏里加了一行:
入驻率五成,还有增长空间。人流中等偏低,但周边三公里内没有像样的快餐店。如果能等半年让入驻率上来,这个位置有潜力。
他保存文件,关掉电脑。书房安静下来,窗外鹏城湾的夜色在远处铺开。
他站起来,走到窗边。远处的水面上有几盏灯在亮,像很远很远的地方在等他。他不知道那里有什么,但他知道,如果他想,他可以走过去。
三年前他站在科技园中区一间满是灰尘的铺位门口数人流量。那时候他什么都没有,只有三十万存款和一个模糊的想法。
现在他有三家店、一个中央厨房、一个管理系统、一个投资系统、一本书、一个全职的身份,和一个明确的方向。
三家店月营收一百万。净利润四十万。中央厨房刚刚启用。第四家店的选址在跑。第五家、第六家、第十家的模型在他脑子里排着队,像一行一行等他来写的代码。
他回到书房,打开电脑,新建了一个文档。文档标题他打了四个字:
扩张计划。
下面他列了一行:
第四家店——南山科技园北区——q1。 第五家店——待定——q2。 第六家店——待定——q3。 …… 第十家店——目标:鹏城区域品牌——年底前。
十行字排在一起。每行后面都牵着一串要做的事。选址、装修、人力、菜单、供应链、数据模型。每一家店都不一样,每一家店都需要重新建模。
他看着这十行字,想起了三年前第一次在电子表格里建模型的时候。那时候模型里只有一列数字——一家店的营收、成本、利润。现在模型里有三列,很快会有四列、五列、十列。
数字在变,但做事的方式没有变。数人流量、量面积、算模型、做决定。
他保存文档,关掉电脑。
书房里安静下来,只有窗外远处传来的车流声。他走到客厅,苏婉已经把灯关了,乐乐的房间也暗了。他在沙发上坐了一会儿,拿起茶几上那本《35岁程序员的AI逆袭》,翻到书签夹着的那一页,看了一眼,合上放回原处。
然后他走进卧室,躺下来。苏婉已经睡着了,背对着他,呼吸均匀。
他闭上眼睛之前看了最后一眼手机。晨枫管理系统的首页在屏幕上亮着,三家店的数据像三条线并排排列,每一条都在往上走。
他把手机放在床头柜上,屏幕暗了下去。
明天早上五点四十五,他还是会自然醒。但这一次,醒来之后不用赶去t厂的办公室,不用在走廊上看二十三楼的灯。
醒来之后去的地方,是他自己的中央厨房,他自己的店,他自己的生意。
从职场人到创业者。从打工到当老板。从给别人补灰到给自己盖楼。
身份换了。但做事的方式没有换。
数人流量。量面积。算模型。做决定。
一步一步来。
他把被子拉到肩膀上,闭上了眼睛。
第366章 第四、五家店
林晨辞职后的第一个周一,早上六点十五分就醒了。
不是闹钟叫醒的。是生物钟。在t厂三年,他每天六点半起床,七点出门,七点四十到公司。三年时间把这个节奏刻进了骨子里。现在不需要赶通勤了,但身体还是会在六点出头自动醒来。
他躺在床上看了一眼窗外。六月中旬的鹏城,天已经亮透了,窗帘缝里透进来的光打在天花板上,白晃晃的一片。苏婉还在旁边睡着,呼吸声均匀。他轻轻起身,走到书房。
书桌上还摊着昨晚看的选址资料。四份商铺的评估报告,每一份都标了红笔圈出的关键数据。
第四家店和第五家店要同时开。
这个决定是上周做出的。林枫当时站在中央厨房的临时办公室里,手里拿着选址资料,眉头皱得很紧。他说:两家店一起开,人手够吗?
林晨当时没有直接回答。他在白板上画了一张表,三列五排,把每家店的人力配置、食材供应、资金流向、管理架构全部列了一遍。画完之后他退后两步,看着白板上的数字。
他说。但前提是中央厨房要先跑起来。
中央厨房上周已经开始试运行了。半成品的配送从龙岗仓库出发,四米二的厢式货车每天凌晨四点出发,五点半之前把第一批半成品送到科技园中区店和南区店,六点之前送到cbd店。叶菜走日采直送,肉类和半成品走中央厨房。三家店的食材成本降了百分之十一,出品稳定性从百分之八十五提到百分之九十三。
林浩一开始是抵触中央厨房的。他觉得半成品会破坏菜品的锅气,让每一道菜变得千篇一律。但试运行两周之后,他改了口。原因是中央厨房统一处理了食材的初加工——洗菜、切配、腌制、预炒,这些步骤本来就不需要他在灶台上完成。以前这些活是他在厨房里带着阿伟一起做的,现在中央厨房的人做了,而且做得比他们更稳定。每份回锅肉的肉片厚度误差从正负两毫米缩到正负零点五毫米。每份酸菜鱼的鱼片重量误差从正负十五克缩到正负三克。
标准不是消灭手艺。林浩在试运行第三天的时候跟林晨说。标准是把重复的部分剥出来,让手艺人只做最后那一步。
林晨听完没说话,但他在心里点了一下头。这个道理他三年前就跟林浩讲过。林浩那时候不认同,现在自己想通了。有些道理不是别人讲了你就能懂的,要自己走一遍才能变成自己的。
第四家店的位置在南山科技园北区的科苑路。
科苑路跟中区隔了两条地铁线,客群不一样。中区是程序员扎堆,午高峰集中,翻台率高。北区是产业园和创业公司混合,午高峰没有中区那么集中,但晚市比中区多了三成。原因是北区的创业公司加班多,晚上七点到八点还有一波吃饭的人流,这波人流在南区和中区是没有的。
林枫第三次来看这个铺位的时候,带了一把红外测温仪。他蹲在铺位门口测了半个小时的地表温度——五月底的中午,地表温度四十七度,比中区的铺位高了三度。原因是北区没有行道树,太阳直晒。
这个铺位要加空调。林枫在笔记本上写了一行。室外温度高,室内制冷量要提。标准配置的十匹空调不够,至少十二匹。
铺位面积八十五平米,比中区店大了七平米,但格局不好。进门是一条窄走廊,走廊左边是厨房区域,右边是用餐区,用餐区的进深只有十米,摆六张四人桌加两张两人桌就满了。林晨在走廊里站了两分钟,用步子量了一下宽度——一米八。两个人并排走都挤。
格局不行。林晨说。走廊太窄,出餐和客人进出会冲突。
格局可以改。林枫翻出平面图,用红笔在走廊的位置画了一个叉。把厨房的墙往里推半米,走廊从一米八拓宽到两米三。厨房缩小六平米,但出餐动线顺畅了。
林晨算了一下。厨房缩小六平米,意味着灶台从三口减到两口。两口灶在高峰期能支撑三十个座位吗?他在脑子里跑了一遍出餐模型——两口灶同时出菜,单份出餐时间四分钟,午高峰两个半小时,最大出餐量九十个。三十个座位,翻台三次,需要出九十份菜。
刚好够。但没有余量。
两口灶不够。林晨说。加一台蒸柜。蒸柜不占灶台位,但能同时出蒸菜。回锅肉走灶台,蒸蛋走蒸柜,酸菜鱼走灶台,清蒸鲈鱼走蒸柜。两口灶加一台蒸柜,出餐量能提到一百二十份。
林枫在平面图上标了蒸柜的位置。他画了两分钟,拿起来给林晨看。灶台在左,蒸柜在右,中间留了一个操作通道。出餐口在走廊尽头,对着用餐区的入口。
就这样。林晨看了一眼平面图。租金呢?
月租三万八。比中区贵了八千,但位置比中区好。科苑路是北区的主干道,人流量不比中区少。
三万八可以接受。押金多少?
押三付一,十五万二。
林晨在手机备忘录上写了一行:第四家店,科苑路,85平米,月租3.8万,押三付一15.2万。
第五家店的位置在龙华民治。
这个选址是林枫力主的。林晨一开始不同意。龙华离科技园太远了,从龙岗中央厨房配送过去要一个小时,从科技园中区开车过去要四十分钟。配送距离长,成本高,出问题概率大。
但林枫拿出了数据。
他在龙华蹲了三天,每天从早上十点数到晚上九点。三天的人流量数据排成三列,每一列的数字都不低。龙华民治是深圳北部的居住和商业混合区,写字楼没有科技园多,但居民区密集,午市人流稳定,晚市人流比科技园高出三成,周末的人流是科技园的两倍。
我们四家店全是写字楼模型。林枫把数据摊在桌上,用红笔圈了三个数字。中区、南区、cbd、北区,全部靠写字楼午市吃饭。但写字楼有一个问题——周末没人。你看看中区的数据,周六营收只有工作日的百分之四十五,周日只有百分之三十八。四家店加起来,一周七天的营收曲线像过山车,周一到周五高,周六周日断崖式下跌。
林晨没有说话。他看着林枫的数据,心里在算。四家店如果全是写字楼模型,周末的营收会拖低整体坪效。五家店里面如果有两家是居住区模型,周末营收能补回来。
但龙华距离远。林晨说出了他最大的顾虑。中央厨房配送一个小时,冷链配送的成本是科技园的两倍。叶菜日采直送没有问题,但肉类和半成品走中央厨房的话,配送时效是硬伤。
所以第五家店不走中央厨房。林枫翻到下一页。第五家店设一个独立的厨房。林浩的徒弟可以负责出品,不需要中央厨房配送。等中央厨房的配送范围扩大了,或者第五家店周边开了第六家店,再接中央厨房。
林晨想了两秒。独立厨房意味着第五家店的运营成本会比其他四家高。食材单独采购,没有中央厨房的规模效应,成本至少高百分之十五。但独立厨房也有好处——出品完全由门店控制,不需要依赖中央厨房的配送节奏。
你算过独立厨房的成本吗?
算过。林枫翻出另一张纸。上面是手写的成本表,字迹歪歪扭扭但数字很清楚。食材成本比中央厨房配送高百分之十五,人力成本多两个人(多一个厨师多一个帮厨),月运营成本比同面积门店高两万二。但龙华的租金比科技园便宜——月租两万八,比中区便宜了一万二。
贵出来的成本被便宜的租金吃掉了。林枫说。加上周末和晚市的营收补回来,第五家店的净利润率跟中区店差不多。
林晨看着数据看了半分钟。然后他在手机备忘录上写了第五行:第五家店,龙华民治,80平米,月租2.8万,独立厨房。
周三下午,林晨在中央厨房的办公室里开了一个会。
参加的人有五个:林晨、林枫、林浩、小宇、周小敏。中央厨房的主管老赵也列席了。老赵是林枫介绍的,之前在一家连锁快餐的中央厨房做了两年,人闷,但活干得细。试运行这两周,半成品出品的合格率从第一天的百分之八十二提到了百分之九十五。
第四家和第五家店同时开。林晨站在白板前面,手里拿着马克笔。第四家在南山科苑路,第五家在龙华民治。开业时间定在七月中旬,留给装修和筹备的时间是一个月。
林浩在旁边听了一个开头,就皱了一下眉头。他不是反对开新店,他是担心人手。
两家店同时开,厨房人手从哪里来?林浩问。我现在手上能独立出菜的就阿伟一个人。加上中央厨房的三个加工员,满打满算能撑四家店。第五家店要独立厨房,至少要两个厨师、一个帮厨、一个配菜。这四个人从哪里来?
林晨说。
招人容易,上手难。林浩的语气很平,但内容不软。一个厨师从入职到能独立出菜,至少要三个月。快餐的出菜速度要求四到五分钟一份,这不是随便一个厨师能做到的。他要知道我们的菜品标准、出菜流程、备料节奏。这些东西不是你给他一份Sop他就能学会的,是要在灶台上练出来的。
林晨没有反驳。林浩说的是事实。三个月是从零培养一个快餐厨师的最短周期。他之前在系统里算过这个模型——如果要开到十家店,需要至少十五个能独立出菜的厨师,加上二十个前厅服务人员。现在只有五家店的量,厨师缺口至少七个,前厅缺口至少八个。
所以今天开这个会,不只是定开业时间。林晨在白板上写了两个字:培训。第四家和第五家店开业之前,我们要建一套培训体系。从招人到培训到考核到上岗,每一个环节都要标准化。不能再像以前一样,招来一个人就在店里跟林浩学一个月,学会了就上岗。这种模式开到三家店可以,开到五家店就扛不住了。
林枫在旁边点了点头。他是做工程的,最懂标准化。一栋楼建起来要施工图,一支队伍拉起来要训练手册。没有施工图就盖楼,迟早塌。没有训练手册就开人,迟早乱。
培训体系我负责搭框架。林晨在白板上画了一个流程图。招聘→面试→入职培训→岗位培训→考核→上岗。每一个环节都要有标准。面试问什么问题,入职培训讲什么内容,岗位培训多长时间,考核用什么指标,上岗之后谁来带。这些东西写下来,就是培训手册。
培训手册谁来写?小宇问。
我来写框架,林浩写菜品部分,周小敏写前厅部分。林晨在小宇的名字旁边画了一个箭头,指向。小宇负责考核。
小宇愣了一下。
对。你从收银到前厅到后厨都轮了一遍,你最清楚每一个岗位的要求是什么。考核不是考他们做菜好不好吃,是考他们能不能在四分钟之内出一份标准菜,能不能在前厅三分钟之内处理一个投诉,能不能在收银台五秒之内完成一笔点单。这些指标你来定。
小宇在笔记本上写了一行:考核指标体系。
开业时间呢?林枫问。七月中旬,一个月够吗?
林晨在白板上画了一个时间线。第一周:装修收尾+设备进场。第二周:人员招聘+入职培训。第三周:岗位培训+模拟运营。第四周:试营业+调整。七月中旬正式开业。
装修谁跟?林枫问。
宝安店你跟。林晨指着林枫。龙华店我安排老赵跟。老赵做过连锁店的装修,他知道厨房区域的动线要求。
老赵坐在角落里,听到自己的名字,抬了一下头,点了一下,又低下去了。
菜品呢?林浩问。第四家店和第五家店的菜单跟前面三家一样吗?
核心菜品一样。林晨在白板上画了一个圆,圆心写了核心菜品四个字。回锅肉、酸菜鱼、宫保鸡丁、西红柿炒蛋,这四道是每家店必须有的一致出品。其他菜品根据区域调整——北区加两道盖浇饭,龙华加两道煲仔菜。林浩,你下周之前把菜品调整方案给我。
供应链呢?林枫问。第四家店走中央厨房没问题,配送路线我算过了,龙岗到科苑路三十五分钟。但第五家店独立厨房,食材要单独采购。
第五家店的食材我联系了龙华本地的供应商。周小敏开口了。她从包里掏出一张打印的供应商清单,放在桌上。龙华民治菜市场有三家供应商可以日供蔬菜和肉类,价格比科技园便宜百分之五。调料和干货走中央厨房配送,一周送两次。我上周去谈了,三家都愿意做,月结三十天。
林晨看了一眼清单。三家供应商的名称、联系人、电话、报价、供货品类都列了,表格做得工整,信息齐全。他抬头看了周小敏一眼。
你什么时候去谈的?
上周。周小敏说。林枫叔说第五家店可能在龙华,我就去摸了一下供应商的底。
林晨没有多说什么。他在清单上签了字,递给林枫。
两家店同时开,压力最大的是人。林晨最后说。但人不能等,店也不能等。市场不会等你把所有条件都凑齐了再开。第四家和第五家店开业之后,晨枫在深圳就有五家店了。五家店是一个门槛——过了这个门槛,我们就不只是几家快餐店了,我们是一个区域品牌。
他把马克笔放回白板架上,看了一眼在座的五个人。
一个月。
晚上回到家,林晨在书房里打开了晨枫管理系统。
五家店的数据模型排成五列,前三列是已经运营的店,后两列是新建的空表。他在第四列填入了科苑路店的数据:面积85平米,月租3.8万,人力配置7人,预估翻台率3.8,预估人均42元,预估月营收38万,预估净利润14万。在第五列填入了龙华民治店的数据:面积80平米,月租2.8万,人力配置9人(独立厨房多两个人),预估翻台率3.5,预估人均35元,预估月营收28万,预估净利润10万。
五家店合计月营收预估:一百七十一万七千。
五家店合计净利润预估:六十六万七千。
他盯着这两个数字看了半分钟。然后他把第四列的翻台率从3.8改成了3.5,第五列的翻台率从3.5改成了3.2。保守估计。新店开业第一个月,翻台率不可能上来。
改完之后,净利润变成了五十七万三。
他保存了模型,靠在椅背上。
五家店。一年半前他还在科技园中区那间满是灰尘的铺位里数人流量,手里只有三十万存款和一份离职协议。一年半后的今天,他要同时开第四家和第五家店了。
手机响了。是林浩发来的消息。
哥,菜品调整方案我明早给你。北区加两道盖浇饭我有了,煲仔菜还要想一天。
林晨回了一个字:
然后他又发了一条:招人的事你明天开始。厨师招四个,帮厨招两个,前厅招六个。薪资标准跟之前一样,但加一条——入职后统一培训,培训期七天,培训期发底薪的百分之八十。
林浩回了一个竖起大拇指的表情。
林晨放下手机,走到窗边。鹏城湾的夜色跟往常一样,水面上的灯光倒映着远处写字楼的灯火。他看着那些灯火,忽然想起三年前刚被裁的那个夜晚,他也是这样站在窗边,看着外面的灯火,觉得自己被那些灯火排除在外了。
现在他站在同一扇窗前,看同样的灯火。但灯火里面不再有他的位置了。他的位置在科技园中区、科技园南区、cbd、科苑路、龙华民治。五个位置,五盏灯。
他转身回到书桌前,打开一个新的文档。标题写了四个字:
培训手册。
光标在标题下面一闪一闪地跳。他深吸一口气,开始写第一章。
第一章:入职流程。
第一条:新员工入职需完成以下步骤——面试、体检、入职培训、岗位培训、考核、上岗。
第二条:面试由店长或副店长主持,面试内容分三部分……
他写了半个小时,写到第十条的时候停下来,看了一眼窗外。写字楼的灯火灭了几盏,有人下班了。
他还不知道一个月后这两家店能不能顺利开业。他不知道培训体系能不能在一个月内跑通。他不知道四个新招的厨师能不能在七天内学会出菜。他不知道龙华民治的供应商会不会在关键时候掉链子。
但他知道一件事——五家店是一个门槛。跨过去了,晨枫就不只是几家快餐店了。
他回到键盘前,继续写。
第367章 招聘培训
招聘启事贴出去的第三天,林晨收到了四十七份简历。
他坐在中央厨房二楼的临时办公室里,面前摊着四十七份打印出来的简历。办公室的空调还在试运行,出风口偶尔滴两滴水,落在桌角的那摞纸上,晕开一个浅灰色的圆。他用纸巾擦了一下,把水渍擦干,然后开始分简历。
四十七份简历分成三摞。第一摞是厨师岗位,十六份。第二摞是前厅岗位,二十二份。第三摞是帮厨和配菜岗位,九份。
厨师那摞他先看的。十六份简历里面,有厨师证的有六份,做过快餐的有三份,做过正餐的有八份,什么都没做过的有一份——一个刚从厨师学校毕业的小伙子,二十岁,简历上只写了学校名字和毕业时间,工作经历一栏是空的。
林晨把这份简历单独抽出来,放在旁边。然后他拿起手机,给林浩发了一条消息:
厨师岗面试,你明天上午十点来中央厨房。
林浩秒回:
前厅那摞他翻了翻,大部分是二十到三十岁的女性,有做过餐饮服务的,有做过商超收银的,有做过奶茶店的,还有一个做过房产中介的。他把简历按年龄排了一下,二十五岁以下的放左边,二十五岁以上的放右边。左边十二份,右边十份。
他没有急着筛选。他把四十七份简历扫了一遍之后,做了一个决定——面试分三天进行,每天面十五到十六个人,每人面二十分钟。
面二十分钟够吗?小宇在旁边问。他坐在办公桌的另一边,面前也摊着一摞简历,手里拿着一支红笔,在简历上画圈。
前厅岗位够。林晨说。厨师岗位不够。厨师岗面试要加一个实操环节,让他们在厨房里做两道菜。二十分钟只能问基本情况和做菜经验,实操要另外安排时间。
实操谁看?
林浩看。林晨在简历上标了一个蓝色的箭头。厨师岗的面试分两部分,第一部分是我问他们基本情况和工作经验,第二部分是林浩看他们做菜。前厅岗位的面试分两部分,第一部分是我问,第二部分是你模拟场景。
小宇在笔记本上写了一行:面试=基础问询+实操/模拟场景。
模拟场景怎么搞?小宇问。
你扮演客人。林晨说。从进店到点单到用餐到买单,整个流程你走一遍,他们跟一遍。看他们的态度、反应速度、说话方式。如果中间你故意制造一个投诉场景——比如菜里有头发——看他们怎么处理。
小宇的笔停了一下。菜里有头发,我怎么说?
你不用说得多复杂。林晨想了两秒。就说一句:我的菜里有头发。然后看他们的反应。有的人会慌,有的人会道歉但不知道怎么办,有的人会直接叫店长。第三种人最好——他知道自己处理不了,会找能处理的人。前厅不需要每个人都能独当一面,需要每个人知道什么时候该找谁。
小宇在笔记本上写了一段话,写完之后看了一眼,用红笔圈了三个字:找对人。
第一天面试。
早上九点,第一个面试者到了。
是个女的,二十六岁,姓王,之前在一家连锁奶茶店做过两年店员。简历上写着熟悉前厅服务流程,了解饮品制作,但林晨看了一眼就知道这份简历是用模板套的——措辞跟网上下载的模板一模一样,只改了公司名字和日期。
你为什么想来晨枫?林晨问。
王小姐想了两秒。因为我喜欢餐饮行业。
你在奶茶店做了两年,为什么不在奶茶店继续做?
奶茶店晋升空间有限。我想找一个有发展空间的地方。
林晨没有接话。他在简历上写了一个发展空间,画了一个问号。然后他看了一眼小宇。小宇站起来,走到门口,又走回来。
模拟场景。小宇说。你现在走进了一家快餐店,我是服务员。请从进门开始。
王小姐愣了一下。她显然没有经历过这样的面试。但她很快调整过来,走到门口,推门进来,说了一句:你好,一个人。
小宇说:这边请。然后把她引到一张桌子旁边。
我们今天有午市套餐,三十八元两荤一素一汤,您看需要吗?
王小姐点头。我要一份。
小宇记了几笔,然后突然说:不好意思,您点的套餐里有一道菜今天卖完了。您能换一道吗?
王小姐想了一秒。那换一道吧。你们有什么推荐?
小宇在记录本上写了一行,递给林晨看。上面写的是:应变能力尚可,服务态度一般,推荐菜品时不主动。
林晨看完了,对小宇点了一下头。模拟场景结束。
面试持续了十五分钟。王小姐走了之后,林晨在简历上写了三行评语:
应变能力:中。 服务意识:中。 建议:可入职,需培训。
然后他叫下一个。
第二天面试的是厨师岗。
早上十点,林浩到了中央厨房。他穿着白色厨师服,头发剪得很短,领口扣得整整齐齐。灶台已经开好了火,砧板洗过了,刀具摆了三把——片刀、砍刀、剔骨刀。旁边的操作台上摆了四种食材:五花肉、鲈鱼、土豆、鸡蛋。
今天的实操做两道菜。林晨对面试者说。一道回锅肉,一道自选菜。回锅肉是必考菜,自选菜你从这四种食材里选一种做。时间三十分钟。
第一个面试者是个三十出头的男人,姓陈,之前在一家湘菜馆做了四年炒锅。简历上写着精通湘菜小炒,擅长爆炒类菜品,厨师证是中级。
小周站在灶台前,先看了一眼食材,然后开始备料。他的刀工很熟练,五花肉切薄片,每片的厚度误差在两毫米以内。林浩在旁边看了一眼,没有说话。
回锅肉开始炒了。小周的颠锅动作很标准,火候控制也不错。但他调味的时候放了一勺豆瓣酱,又放了一勺——林浩注意到他放了两勺豆瓣酱。晨枫的回锅肉标准是一勺半。
回锅肉出锅了。林浩尝了一口。味道偏咸,豆瓣酱的味盖过了肉香。
味道可以。林浩说。但你放豆瓣酱的时候放了两勺。
小周愣了一下。我习惯放两勺。
我们这里放一勺半。林浩的语气很平。你可以按你的习惯做,但如果你入职了,就要按我们的标准做。
小周点了一下头,但他的表情有一瞬间的不以为然。林浩看到了,但没有说。
自选菜他选了土豆——酸辣土豆丝。刀工依然很稳,出菜速度也快,从下锅到出锅三分钟。味道中规中矩。
林晨在简历上写:
技术:中上。 标准化意识:中下。 建议:可入职,但需要严格培训标准化出品。
第二个面试者是个二十五岁的小伙子,姓黄,从厨师学校毕业两年,在一家连锁快餐店做过一年。简历上没有厨师证,但写着熟悉快餐出菜流程,能在高峰期四分钟出一份菜。
黄师傅上台之后,第一件事不是拿刀,而是看了一眼灶台的布局。他看了一眼调料的位置、砧板的位置、盘子的位置,然后微微调整了一下调料罐的摆放——把豆瓣酱和生抽放在右手最顺手的位置,把盐和糖放在左手边。
林浩注意到了这个动作。
回锅肉开始做了。黄师傅的刀工不如小周,五花肉切得厚薄不均,有两片明显比其他的大。但他的炒菜动作很流畅——先炒肉片再放调料,火候控制偏稳,没有出现焦糊。调味的时候他放了一勺豆瓣酱,尝了一口,又加了半勺。
你为什么先放一勺再加半勺?林浩问。
因为每一批豆瓣酱的咸度不一样。黄师傅说。我之前那家店也是用豆瓣酱,但换了一个批次之后味道就变了。所以我习惯先放少一点,尝了再加。
林浩点了一下头。
回锅肉出锅了。林浩尝了一口。味道比小周的淡一点,但层次感更好——豆瓣酱的咸没有盖过肉香,后味有一丝甜。
你的回锅肉可以。林浩说。但你切肉的时候有两片厚薄不均。
黄师傅看了一眼砧板上的肉片,点了一下头。我注意到了。刀工是我的弱项,我会练。
林浩没有多说。他走到灶台前,拿起刀,从剩下的五花肉上切了五片。每片的厚度几乎一模一样。他把五片肉码在砧板上,让黄师傅看。
这是我们的标准。你练到这个程度,就过了。
黄师傅看了那五片肉两秒钟。然后他拿过刀,又切了五片。第一片太薄,第二片刚好,第三片偏厚,第四片刚好,第五片太薄。
明天继续练。林浩说。
第三天面试结束之后,林晨在办公室里整理结果。
四十七份简历,面试了四十三人(四人不来)。最终录用了十二人:厨师四人,帮厨两人,前厅六人。加上林浩推荐的阿伟从南区店调到宝安店做主厨,龙华店由林浩的大徒弟小陈负责,十二个新人刚好分到两家店。
但林晨没有立刻发录用通知。他在笔记本上写了一个流程图:
入职第一天:领取工服、胸牌、培训手册。参观门店。了解晨枫品牌故事。
入职第二天到第四天:岗位培训。厨师学习晨枫标准化菜品(回锅肉、酸菜鱼、宫保鸡丁、西红柿炒蛋等十道核心菜)。前厅学习服务流程(点单、收银、出餐、投诉处理)。
入职第五天到第七天:模拟运营。在门店里进行模拟营业,由老员工带教。
入职第八天:考核。厨师做四道核心菜,前厅走一遍完整服务流程。考核通过者上岗,不通过者延长培训。
他在流程图下面又写了一行:
培训手册——每个岗位一本。厨师手册、前厅手册、收银手册、卫生手册。下周完成初稿。
七天能把一个人培训到什么程度?苏婉在吃晚饭的时候问他。
林晨夹了一块鱼肉,嚼了两下。七天不能把一个新人培训成老员工。但七天能让他知道我们做事的标准是什么。知道标准之后,剩下的就是在灶台上练。
那培训手册呢?你写了多少了?
写了一半。入职流程写完了,厨师岗位培训写了一半。前厅和收银的部分小宇在写。
苏婉点了一下头,没有再问。她给乐乐夹了一块西兰花,乐乐在旁边写作业,头也没抬。
林晨放下筷子,看了一眼手机。小宇刚发来一份文件,标题是《前厅考核指标》。
他打开看了一眼。文件不长,三页,但结构很清晰。第一页是服务流程考核,从客人进门到客人出门,每一步都有评分标准。第二页是投诉处理考核,分三种场景——菜品问题、服务问题、等候时间问题,每种场景都有标准处理话术和处理流程。第三页是收银考核,点单速度、支付方式、会员推广,每一项都有数字指标。
他在文件末尾写了一行评语:框架清晰,指标合理。第三页的会员推广指标再加一条——每月会员新增不少于20人。
发回去之后,他靠在椅背上,看了一眼厨房的方向。苏婉在洗碗,水龙头哗哗响。乐乐在写数学作业,笔尖在纸上沙沙地划。
培训体系不是一本书。培训体系是一个人从进门到上手的过程。简历筛选、面试、实操、入职、培训、考核、上岗,每一步都是一道门槛。门槛不是拦人的,门槛是帮人的——帮他们知道标准在哪里,帮他们用最短的时间从一个陌生人变成一个能用的人。
他站起来,走到窗边。鹏城湾的夜色铺在窗外,远处的灯火跟往常一样。他看着那些灯火,想起林浩今天在灶台前切的那五片肉。
五片肉,每一片的厚度几乎一模一样。
那是三年灶台上的功夫。
但新的厨师没有三年。他们只有七天。七天之内要让他们知道,标准在哪里。
他回到书桌前,打开了培训手册的文档。光标在厨师岗位培训下面闪烁。他接着写。
第二条:回锅肉标准化出品流程。
2.1 食材:五花肉200克(误差±10克),蒜苗50克,郫县豆瓣酱15克,甜面酱10克……
他一个字一个字地写。每一个克数都是林浩在灶台上称过的。每一个步骤都是林浩在炒锅里做过无数遍的。他不是在写培训手册,他是在把一个人的手艺变成一个流程。
流程可以被复制。人不能。
第368章 徒弟计划
林浩是在灶台上把这个想法说出来的。
那天是培训手册写到第三天,林晨在中央厨房的办公室里写了半本手册,写到回锅肉标准化出品流程的第七个步骤时卡住了。第七个步骤是——回锅肉出锅前最后一步,大火收汁十秒,让酱汁挂在肉片上。林浩的写法是大火收汁十秒,翻锅两下,出锅。但林晨觉得这个描述不够精确——什么火算大火?翻锅两下的力度是多少?十秒是从什么时候开始算?
他拿着笔记本电脑走到楼下厨房,找林浩确认。
林浩正在灶台前备料。他一个人站在厨房里,周围是中央厨房的不锈钢操作台,头顶的灯管亮得晃眼。案板上码着一排排切好的食材,葱姜蒜装在小碗里,酱料罐排成一排,标签朝外,像一行整齐的代码。
收汁的标准怎么定?林晨把笔记本屏幕转过去给林浩看。大火收汁十秒,翻锅两下。这个描述太粗了。什么火算大火?
林浩看了一眼屏幕,把抹布搭在肩上,走到灶台前。他打开火,火焰从灶眼里窜出来,蓝色中带着一点黄,灶台上的温度开始上升。
大火是这样的。他指了一下火焰。你看,火焰的高度超过锅沿,但不超过锅耳。颜色蓝黄相间,不是纯蓝。纯蓝是猛火,蓝黄相间是大火。
林晨在笔记本上记了一行:大火标准——火焰超过锅沿但不超过锅耳,蓝黄相间。
翻锅两下的力度呢?
林浩往锅里倒了一点水,颠了一下锅。水在锅里翻了一个跟头,从锅底翻到锅沿,又落回来。
翻锅的力度不是用手臂甩的,是用腕力抖的。他放下锅,用右手比了一个动作。手腕往上抖一下,锅里的食材翻半圈。翻两下就是抖两下。力度是让肉片从锅底翻到锅中间,不要翻出锅沿。
林晨又记了一行:翻锅标准——腕力抖锅,食材翻半圈,不出锅沿。
那十秒从什么时候开始算?
从酱汁开始冒泡的时候开始。林浩走回案板旁,拿起一碗调好的酱料。酱料倒进锅里之后,会有一个先冒小泡再冒大泡的过程。小泡是水分在蒸发,大泡是酱汁开始收浓。从冒大泡的那一刻开始算十秒,到第十秒翻锅两下出锅。
林晨把笔记本合上,看着灶台上的火。火苗在安静地跳,蓝色中带一点黄,刚好超过锅沿。
你知道你刚才说了多少个标准吗?他问林浩。
不知道。
七个。林晨数了一下。火焰高度、火焰颜色、翻锅力度、翻锅幅度、翻锅次数、冒泡状态、收汁时间。一道回锅肉的最后一个步骤,就有七个标准。十道核心菜加起来,至少有七八十个标准。这些标准全部要写进培训手册里,新来的厨师要照着这些标准一步一步做。
林浩沉默了几秒。他走到案板旁边,拿起一把刀,在刀面上看了看自己的倒影。
他说。你有没有想过一个问题?
什么问题?
这些标准都是我定的。但我不可能一直在每一家店里。林浩转过来看他。五家店,我最多同时在两家。剩下的三家,谁来管出品?
林晨没有说话。他靠在厨房的门框上,看着林浩。
你的培训手册写得再细,新厨师学得再认真,他们也不是我。林浩的语气很平,不是抱怨,是在陈述事实。他们在灶台上练七天,能学会流程,但学不会判断。什么时候该大火什么时候该小火,什么时候酱汁收浓了什么时候还差一点,这些是靠鼻子闻、靠眼睛看、靠舌头尝的。手册上写不了这些。
所以你在担心什么?林晨问。
我担心的是——林浩把刀放回案板上,刀背磕在砧板边沿,发出一声脆响。五家店开起来之后,我不在的那三家店,回锅肉的味道可能跟我在的时候不一样。可能差一点,可能差很多。客人吃出来了,觉得晨枫不好吃了,下次不来了。我们用一年时间建立的口碑,可能因为一家店的出品下滑就毁了。
厨房里很安静。排烟罩没开,冷柜的压缩机嗡嗡地响。
林晨想了两分钟。他在t厂做架构的时候遇到过类似的问题——一个系统从一台服务器扩展到五台服务器,最难的不是增加硬件,是保证每一台服务器的输出完全一致。在代码的世界里,这个问题可以用负载均衡和一致性哈希解决。但在厨房里,负载均衡是厨师,一致性哈希是标准。厨师和标准之间有一个不可忽略的误差——人。
我有一个想法。林晨说。但你可能不一定同意。
你说。
你之前带了阿伟。阿伟现在能独立出菜,出品稳定性百分之八十五。你的标准是百分之九十五。中间差了十个点。
阿伟在我手下学了一年半。林浩说。一年半才到百分之八十五。
如果你不只是一个阿伟呢?林晨走到案板旁边,从碗架上拿了一个小碗,放在案板上。如果你有五个阿伟呢?
林浩看着他。什么意思?
徒弟计划。林晨说。你收五个徒弟,每个人跟在你身边学半年到一年。学成之后,每个人负责一家店的后厨出品。你不再每天颠锅,你变成了——他停了一下,找了一个词。出品总监。你定标准,徒弟执行标准。你在五家店之间巡查,纠正偏差,保证每一家店的出品跟你在的时候一样。
林浩没有立刻说话。他转过身去,把案板上的葱姜蒜碗重新摆了一遍。摆完之后,碗的标签全部朝外,像一排站好队的士兵。
五个徒弟。他重复了一下这个数字。我带阿伟用了一年半。带五个徒弟,每个人学半年到一年,我至少要同时带三到四个。
不需要同时带。林晨说。分批带。第一批收两个,三个月之后收第三个,半年之后收第四个,一年之后收第五个。每个徒弟跟你的时间不一样,但出师的标准一样——核心十道菜的出品稳定性达到百分之九十以上,才能独立负责一家店。
百分之九十。林浩想了一下。阿伟用了一年半才到百分之八十五。百分之九十是什么概念?十道菜里面有九道跟我做出来的一模一样。
那剩下的那一道呢?
剩下的那一道是可以接受的偏差。林晨说。回锅肉的酱汁差了零点五克,客人吃不出来。但如果你不在的时候回锅肉的酱汁差了五克,客人就吃出来了。百分之九十的意思是,九成菜品的味道跟我做出来的基本一样,一成菜品有细微偏差但不影响口感。
林浩低下头,看着案板上的碗。碗里是早上备好的葱姜蒜,蒜瓣的白皮在灯光下微微反光。他伸手拿起一个蒜瓣,用指甲在表面划了一下,划出一条浅浅的痕迹。
我带过阿伟一个人。他说。带一个人不难。每天在灶台上看着,他做错了我就纠正,他做好了我就放手。但带五个人的时候,我没办法每天盯着每一个人。我总会有不在的时候。我不在的时候,他们只能靠手册和自己的判断。
所以你才需要制定更细的标准。林晨说。收汁的标准不是大火收汁十秒,而是火焰超过锅沿但不超过锅耳,蓝黄相间,从酱汁冒大泡开始计时十秒,翻锅两下,腕力抖锅,食材翻半圈不出锅沿。你定的标准越细,你不在的时候他们出错的概率就越低。
林浩想了一会儿。他把蒜瓣放回碗里,转过身来看林晨。
我有一个条件。他说。
每个徒弟出师之前,必须在我的灶台上做过一千道菜。林浩伸出一只手,五根手指撑开。一千道是一个门槛。不到一千道,他的手不会稳定。炒菜跟写代码不一样,代码写一遍就能跑,菜要炒一千遍才能让手记住那个节奏。
林晨在心里算了一下。十道核心菜,每道炒一百遍,一共一千道。如果一天炒十道核心菜,大概需要一百天,也就是三个多月。如果一天炒二十道,需要五十多天,不到两个月。
三个半月。他说。每个徒弟跟你的时间至少三个半月。加上第一批和第二批的间隔,五个徒弟全部出师需要一年到一年半。
一年半。林浩说。你第四家和第五家店下个月开业,人手不够我先顶着。但一年半之后,五家店的出品必须由五个徒弟来负责。我不可能永远在灶台上颠锅。
你不会永远在灶台上颠锅。林晨说。你是出品总监。你的工作不是每天出菜,是每天看菜。
徒弟的选拔是从现有员工和面试者里面同时进行的。
林浩提了三个条件:第一,年龄在二十到三十岁之间,太小的手不稳,太大的脑子太硬。第二,有至少半年以上的厨房经验,纯新手不要。第三,能吃苦,不挑活。
十二个新录用的员工里面,有两个厨师符合条件。一个是之前面试时放了两勺豆瓣酱的小周,另一个是之前做连锁快餐的小杨。小周三十岁,有四年湘菜经验,手艺不错但标准化意识弱。小杨二十六岁,在连锁快餐店做了一年半,对标准化流程有概念,但手艺不够精细。
加上阿伟,现在有三个人选。
林浩还需要再找两个人。
外面招不到合适的。林浩在灶台前对林晨说。快餐行业的厨师大部分是在小馆子里做出来的,习惯不好改。连锁快餐出来的人标准化意识够,但手艺太机械,做出来的菜没有灵魂。
那你想怎么办?
林浩想了两秒。找老家的。
老家的?
我之前在厨师学校的时候,有几个同学现在还在东莞和广州的厨房里做。有的在五星酒店,有的在大排档。手艺不比我差,就是没有找到好平台。我联系他们,看有没有人愿意来。
林晨想了一下。可以。但来了之后还是走同样的流程——面试、实操、培训、考核。不能因为是你的同学就跳过标准。
我知道。林浩说。
三天后,林浩联系了两个老同学。一个叫小志,在东莞一家四星级酒店做了三年炒锅,手艺扎实,但酒店最近经营不好在裁员。一个叫小陈,在广州一家粤菜馆做了两年,擅长煲类和蒸菜,正好补龙华店的需求。
小志和小陈到深圳面试的那天是周六。林浩亲自在中央厨房的灶台上考他们,两道必考菜加一道自选菜。小志的回锅肉出品稳定性达到了百分之八十八,比小周高了三个点。小陈的自选菜做了一道清蒸鲈鱼——这道菜不在晨枫的核心菜单里,但林浩吃了一口之后说:这道菜可以加进龙华店的菜单。
五个徒弟的人选定下来了。
阿伟——第一批,跟林浩学了一年半,出品稳定性百分之八十五,负责科技园中区店后厨。
小周——第一批,有四年湘菜经验,出品稳定性待提升,目标三个月后达到百分之九十。
小杨——第二批,有连锁快餐经验,标准化意识好但手艺待加强,目标四个月后达到百分之九十。
小志——第二批,有四星级酒店经验,手艺扎实,目标三个月后达到百分之九十二。
小陈——第三批,有粤菜经验,擅长煲类和蒸菜,目标四个月后达到百分之九十。
五个人,五家店,五个灶台。林浩不再每天颠锅,他变成了五家店之间的纽带。每家店的出品标准由他定,每家店的出品偏差由他纠正,每家店的出品质量由他负责。
出品总监。林晨在晨枫管理系统里建了一个新的岗位,岗位名称就是这四个字。他在岗位描述里写了一行:
负责晨枫旗下所有门店的菜品标准化出品,包括但不限于:制定出品标准、培训厨师团队、巡查门店出品、纠正出品偏差、研发新菜品。
他写完之后看了一眼林浩。林浩站在厨房里,五个徒弟围着灶台,阿伟在切菜,小周在看手册,小杨在调酱料,小志在颠锅,小陈在蒸鱼。五个人同时在做不同的菜,但灶台上的节奏是一致的——备料、起火、下锅、调味、收汁、出锅。每个人的动作不一样,每个人的速度不一样,但每道菜出来的那一刻,厨房里弥漫的香气是一样的。
回锅肉的酱香。酸菜鱼的酸辣。宫保鸡丁的微辣。西红柿炒蛋的家常。清蒸鲈鱼的清鲜。
五种味道混在一起,像五种乐器在合奏。林浩站在中间,不是指挥家,是定音的人。他不用拿起任何一把乐器,但每一把乐器的音准都由他来校。
林晨关掉电脑,走到厨房门口。
从今天开始,他对五个徒弟说,你们每个人每天要做二十道核心菜。十道菜各做两遍。我会在系统里记录你们每天的出品分数。连续七天达到百分之九十以上的,可以提前出师。达不到百分之九十的,延长培训期。
五个徒弟点了点头。
林浩从灶台前转过身来,看了林晨一眼。他的眼神里没有抵触了——那个三个月前说火是活的的厨师,现在站在五个徒弟的中间,手里拿着一把刀,刀背磕在案板上,发出一声脆响。
开始。他说。
灶台上的火同时窜起来。五口灶,五团火焰,蓝色中带着一点黄,刚好超过锅沿。
第369章 品牌故事
陈雪把VI终稿发过来那天,林晨正在中央厨房的办公室里改培训手册的第四版。
手机震了一下,他看了一眼,是一个pdF文件,标题写着晨枫VI终稿_v3.0.pdf。他放下手里的笔记本,打开电脑上的pdF阅读器,一页一页地看。
终稿比初稿改了三版。Logo的枫叶剪影简化了两笔,线条更利落,像一片枫叶的轮廓而不是一片枫叶的写实画。六边形边框加粗了零点五个点,视觉上更扎实了。两个字用的是思源黑体bold,字间距拉开了一点,看起来不挤。颜色还是晨枫绿,但终稿在初稿的基础上加了一个色彩应用的详细规范——门头用晨枫绿底白字,菜单用白底晨枫绿字,工服用晨枫绿底枫岩灰字,外卖包装用晨枫绿底暖白字。每一种应用场景都有效果图,标注了色值、字号、间距。
他看了二十分钟,从头到尾。然后给陈雪发了一条消息:
终稿通过。设计费这周转给你。另外有一个新需求,你报个价。
陈雪秒回:什么需求?
品牌故事。
品牌故事这四个字,是林晨上周在洗澡的时候想到的。
那天晚上他站在淋浴下面,热水从头顶浇下来,脑子里在过第四家和第五家店的筹备进度。想着想着,他的思维跳到了一个问题上——五家店开起来之后,晨枫是什么?
不是在问晨枫做什么。晨枫做快餐,这个很清楚。他在问的是,晨枫在客人的心里是什么。中区店的客人知道晨枫是科技园那家快餐店,南区店的客人知道晨枫是南区那个出菜快的地方,cbd店的客人知道晨枫是白领中午吃饭的选择。但三个店的客人对晨枫的认知是碎片化的,没有人说晨枫是一个什么什么样的品牌。
品牌是什么?品牌不是一个Logo,不是一种颜色,不是一套字体。品牌是一个故事。星巴克卖的不是咖啡,是第三空间的故事。海底捞卖的不是火锅,是服务极致的故事。晨枫卖的是什么?
林晨站在淋浴下面想了两分钟,得出了四个字:工程师做餐饮。
但这四个字太干了。工程师做餐饮,翻译成人话是什么?是一个写了十年代码的人,用写代码的方式来做快餐。是用数据驱动菜单优化,是用标准化流程保证出品稳定,是用系统思维管理供应链。这些翻译成人话,就是一个故事——一个程序员的故事。
他从浴室出来的时候,苏婉在客厅看电视。他穿着浴袍走到苏婉旁边坐下来,头发还滴着水。
你在想什么?苏婉看了他一眼。头发都没擦干。
我在想一件事。林晨拿茶几上的纸巾擦了一下头发。我们五家店开起来之后,客人提起晨枫的时候会说什么?
说什么?
会说是那家快餐店,还是说那家什么什么
苏婉想了一下。你说的是品牌认知?
林晨把纸巾揉成一团扔进垃圾桶。现在三家店,客人的认知是碎片化的。中区店的人说科技园那家快餐,南区的人说南区出菜快的那家,cbd的人说中午去吃的那家。没有一个人说晨枫是一个什么样的品牌
那你想让客人怎么认知?
让客人说——哦,就是那家程序员开的快餐店。
苏婉看着他,嘴角动了一下。程序员开的快餐店?
对。从程序员到餐饮人。这是一个故事。林晨坐直了身子。我三年前是一个程序员,被裁了,转行做了餐饮。林枫是做工程的,林浩是从工厂出来的。我们三个人没有一个是餐饮出身,但我们用工程师的思维把快餐做起来了。标准化出品、数据驱动菜单、供应链优化、中央厨房配送——这些东西在餐饮行业不算新鲜,但我们做到了每一家店的出品都一样,每一道菜的味道都稳定,每一个客人的体验都可预期。这不是传统餐饮人能做到的事。传统餐饮人靠的是手艺和经验,我们靠的是标准和数据。
苏婉没有接话。她看了一眼电视,电视上在放一个综艺节目,几个明星在抢答问题。她把电视声音调低了。
你想把这个故事讲出去?她问。
不是讲出去。是把它变成品牌的一部分。林晨说。Logo、颜色、字体,这些是品牌的皮。品牌故事是品牌的骨头。没有骨头,皮撑不起来。客人走进晨枫,看到的不仅仅是门头上的六边形Logo和晨枫绿的颜色,还要知道这家店为什么叫晨枫,为什么一个程序员会来开快餐店,为什么这家店的出菜速度比别家快三十秒。这些知道,才是品牌。
苏婉看了他几秒。你说的有道理。但你想过没有,讲这个故事意味着什么?
意味着什么?
意味着你要把自己暴露出去。苏婉把遥控器放在茶几上。从程序员到餐饮人,这个故事的核心是你。被裁、转型、创业、开三家店、月营收过百万。这个故事讲出去,你就不是一个餐饮老板了,你是一个公众人物。公众人物有人喜欢,就有人不喜欢。有人觉得你的故事励志,就有人觉得你在炒作。你准备好了吗?
林晨没有立刻回答。他看着电视屏幕上那个综艺节目,明星们在笑,观众在鼓掌。电视的声音被调得很低,笑声变成了一种模模糊糊的背景噪音。
我不需要所有人都喜欢。他说。我需要的是,客人走进晨枫的时候,不只是为了吃一顿饭。他走进来,坐下来,看一眼菜单上那句从程序员到餐饮人,用数据驱动每一道菜,他会觉得这家店不一样。不是好吃不一样,是理念不一样。他下次再来的时候,不是为了那道回锅肉,而是为了这个理念。
那你打算怎么做?
品牌故事。林晨说。不是打广告,不是做营销,是讲一个真实的故事。我是谁,我们怎么开始的,我们怎么做到的。故事本身就够了。
陈雪的品牌故事方案三天后发过来了。
不是一份pdF,是一份word文档。林晨打开一看,里面只有三页,但每一页都写得很精炼。
第一页是品牌定位。陈雪画了一个金字塔,从底到顶分五层:
最底层:快餐产品(回锅肉、酸菜鱼、宫保鸡丁……) 第二层:产品差异化(出餐速度快、出品稳定、数据驱动菜单) 第三层:品牌理念(标准化+效率+品质) 第四层:品牌故事(从程序员到餐饮人,用工程师思维改造快餐) 最顶层:品牌愿景(让每一顿快餐都值得期待)
第二页是品牌故事大纲。陈雪写了三个版本:
版本A:创始人视角。三年前我是一个程序员,被裁了。失业之后我开了一家快餐店。我发现,写代码和做快餐有一个共同点——都是用标准化的流程解决复杂的问题。我用写代码的方式做快餐,用数据驱动菜单,用系统思维管理供应链,用中央厨房保证出品一致。三年后,我们有五家店,月营收超过一百万。
版本b:消费者视角。你有没有想过,为什么有些快餐店出菜快、味道好、每次来都一样?因为在你看不到的地方,有人用写代码的方式在做快餐。每一道菜的标准像一段代码,每一家店的运营像一个程序,每一条数据都在告诉厨师下一道菜应该怎么做。这不是传统快餐,这是工程师的快餐。
版本c:叙事视角。鹏城科技园有一家快餐店叫晨枫。它的创始人是一个程序员。三年前他被裁了,拿着三十万存款开了一家快餐店。他用写代码的方式做快餐——菜单是数据驱动的,出品是标准化的,供应链是系统化管理的。三年后,晨枫从一家店变成五家店,月营收从三万变成一百万。这不是一个创业故事,这是一个用工程师思维改造传统行业的故事。
林晨看完三个版本,在版本b旁边画了一个圈。
版本A太自夸了,版本c太客观了,版本b的角度最对——从消费者视角出发,回答为什么这家店不一样。
他在版本b旁边写了一行批注:这个版本的方向对,但措辞需要调整。工程师的快餐这个说法太硬了,普通客人听不懂。要翻译成人话。
然后他给陈雪打了一个电话。
版本b的方向对,但有两个问题。林晨在电话里说。第一,工程师的快餐这个说法太技术了,客人看不懂。要换一个更通俗的表达。第二,品牌故事不是一篇文案,是一个体系。我需要在菜单上有一句话,在外卖袋上有一句话,在店内的墙面上有一句话,在员工胸牌后面有一句话。这些话不一样,但核心是同一个。
核心是什么?陈雪问。
让每一顿快餐都值得期待。
陈雪在电话那头停了两秒。这句话好。但需要一个更具体的表达来支撑。值得期待是情感层面,客人还想知道为什么值得期待。
因为标准化。林晨说。因为每一道菜的味道都是一样的,每一次来的体验都是稳定的,每一个数据都在告诉厨师下一道菜应该怎么做。客人不需要知道背后的技术逻辑,但他需要知道,这家店跟他吃过的不一样。不一样在哪里?在于稳定。传统快餐的稳定靠人,晨枫的稳定靠标准。这句话翻译成人话就是——每一道菜,都是同一个标准。
陈雪在电话那头记了几笔。我重新写一版,后天给你。
后天陈雪发来的方案,林晨看了三遍。
菜单上那句话:每一道菜,都是同一个标准。
外卖袋上那句话:从灶台到你手中,每一步都有标准。
店内墙面上那句话:我们用写代码的方式做快餐。
员工胸牌后面那句话:标准出品,不留偏差。
四句话,四个场景,核心是同一个——标准化。
林晨在方案上签了字,给陈雪发了一条消息:通过。设计费和品牌故事策划费一起转。另外,菜单和外卖袋的排版你跟林枫对接,店内的墙面设计你出效果图,胸牌后面那句话我让小宇负责。
陈雪回了一个。
林晨把手机放下,靠在椅背上。办公室里很安静,空调的出风口在头顶嗡嗡地响,桌上还摊着培训手册的第四版打印稿,红笔圈了七八处需要修改的地方。
他看着电脑屏幕上的四句话,念了一遍。
每一道菜,都是同一个标准。
这十个字不是一句广告语。这十个字是林浩每天在灶台上做的事,是阿伟、小周、小杨、小志、小陈五个徒弟每天练一千道菜的原因,是中央厨房每天凌晨四点把半成品装上货车送出去的动力,是培训手册上那七八十个标准化步骤的总结。
这十个字是整个晨枫的骨头。
Logo是皮,颜色是皮,字体是皮。培训手册是肌肉,中央厨房是血管,五家店是骨架。品牌故事是骨头——没有骨头,皮包不住肉,肉挂不住骨架,骨架撑不起一个人。
他站起来,走到窗边。中央厨房的窗外是龙岗工业区的铁皮厂房,五月的阳光照在灰色的铁皮上,反射出一种闷热的光。远处有一辆货车正在倒车,倒车灯一闪一闪的,像心跳。
他想起了三年前在科技园中区数人流量的自己。那时候他站在铺位门口,戴着墨镜,手里拿着一瓶矿泉水,数的是经过门口的人。一百二十七个人。他记得那个数字。
现在他不需要站在门口数人流量了。晨枫管理系统里有每一家店的数据,客流、翻台率、点单频次、会员复购率,每一个数字都在告诉他,那些经过门口的人,有多少变成了进店的人,有多少进店的人变成了再来的人。
但数据只能告诉他是什么,不能告诉他为什么。
为什么要靠故事来讲。
他回到电脑前,打开晨枫管理系统的后台。品牌管理那一栏,他在品牌故事的位置写了一行:
品牌故事:从程序员到餐饮人。晨枫创始人林晨,三年前是一名软件工程师。被裁后,他用写代码的方式做快餐——数据驱动、标准化出品、系统管理。三年后,晨枫从一家店发展到五家店,月营收从不到十万到一百万。每一道菜,都是同一个标准。
他保存了这行字,关掉电脑。
明天中区店和南区店要统一更换VI。门头从白底红字变成晨枫绿底白字,菜单从横版变成竖版,工服从白色变成晨枫绿,胸牌后面加上那句话。cbd店的VI已经在开业的时候就用了新设计,宝安店和龙华店开业的时候直接用新VI。
五家店。同一个名字。同一套颜色。同一个Logo。同一个故事。
他走出办公室,下楼。中央厨房的灶台上,林浩正在教小周做回锅肉。灶台旁边立着一块新做的牌子,上面是陈雪设计的VI终稿——六边形边框,枫叶剪影,两个字,思源黑体,晨枫绿。
牌子上的光照在不锈钢操作台上,反射出一种沉稳的绿色。
林浩回过头来看了林晨一眼,没有说话。他转回去,继续教小周。小周在灶台前颠锅,火焰刚好超过锅沿,蓝色中带着一点黄。
林晨站在厨房门口看了一会儿。然后他转身走了出去。
走出中央厨房大门的时候,他回头看了一眼那块牌子。六边形,枫叶,晨枫绿。
从程序员到餐饮人。
这是他的故事。也是每一个走进晨枫的人会知道的故事。
第370章 媒体关注
林晨是在吃饭的时候看到那条推送的。
中午他在南区店吃午饭,林浩做了一碗酸辣粉端上来,他刚吃了两口,手机震了一下。他瞄了一眼屏幕,是赵刚在训练营群里转的一条链接,标题是:从大厂总监到快餐老板,这个程序员用算法开餐厅。
他点进去看了一眼。是一篇公众号文章,大概两千字,讲的是一个前大厂AI工程师辞职开快餐店的故事。文章没有提林晨的名字,用的是林先生,但写了晨枫快餐AI量化系统,懂行的人一看就知道是谁。文章下面的评论区已经有三百多条留言,大部分是太牛了想加盟之类的。
林晨把手机锁了,继续吃酸辣粉。
下午两点,周敏发来微信:林晨,有几家媒体想采访你。深圳商报、南方都市报、还有一个叫创业邦的公众号。你要不要接?
林晨回了一个字:看看。
周敏把三家的资料发过来。深圳商报想做一期关于中年转型的专题,采访对象包括林晨和另外两个转型成功的人。南方都市报想做新餐饮模式的深度报道,关注的是AI技术在餐饮中的应用。创业邦那篇更偏故事性,想写35岁被裁到创业成功的完整经历。
林晨看了一眼资料,想了五分钟,给周敏回了消息:南方都市报那篇可以接。另外两个算了。
周敏问为什么。
中年转型这个标签我不想要。每个人都在转型,我只是换了一条路。
那创业邦呢?
那篇写的是故事,我要的是事实。
周敏没有再追问。她跟南方都市报的记者约了时间。
记者姓王,三十出头,戴一副黑框眼镜,背一个帆布包。他到南区店的时候是下午四点,午市刚过,晚市还没开始。店里只有两桌客人在吃,林浩在厨房备晚市的料。
林晨坐在靠窗的位子,面前放了一杯美式。
王记者没有直接掏出录音笔。他先在店里走了一圈,拍了三张照片——厨房出餐口、菜单灯箱、门口的招牌。然后他坐下来,从帆布包里拿出一本笔记本,翻到空白页。
林总,我来了之前做了功课。王记者说,你之前在t厂做AI,管一个五十人的团队。辞职之后开了晨枫快餐,现在五家快餐店。网上有人说你用算法管理餐厅,我想看看是怎么个管法。
你先看。林晨把ipad递过去,屏幕上是晨枫快餐的管理系统后台。
王记者接过ipad,划了两下。他看到了实时营业额、翻台率、会员数据、库存预警、采购推荐这些模块。每个模块的数据都在实时更新,左下角有一个小小的绿色圆点在闪烁,表示系统在正常运行。
这是你自己写的?
用什么写的?
python后端,React前端,mySqL数据库。小程序用的是微信的开发框架。
王记者在笔记本上记了几笔。他划到采购推荐模块,点开看了一下。系统根据过去三十天的销售数据,自动推荐了明天的采购清单,包括每种食材的建议采购量和预期损耗率。
这个建议采购量是怎么算的?
加权移动平均。林晨说,最近七天的权重占百分之六十,最近三十天的权重占百分之四十。加上天气因素和节假日因素的修正。比如明天是周五,系统会自动把采购量上调百分之十五,因为周五的午市客流量比工作日高。
王记者抬头看了他一眼。你不觉得这些东西跟开餐厅没什么关系吗?
为什么没关系?采购精准了,损耗就低。损耗低,成本就低。成本低,定价就有空间。定价有空间,顾客就觉得划算。觉得划算就再来。这是一条链。
王记者又记了一笔。他继续划,看到了会员数据。系统显示会员复购率是百分之七十二,平均每月消费三次,客单价三十五元。
复购率百分之七十二,在快餐行业算高吗?
算高的。林晨说,行业平均大概百分之四十到五十。
你怎么做到的?
不是怎么做到的。是你让系统去看哪些人多久没来了,然后推一条消息给他们。消息的内容不是优惠券,是告诉他们这周有新菜。愿意来的人自然会来。
王记者合上笔记本,把ipad还给林晨。他在店里又走了一圈,这回是看后厨。林浩正在切莴笋,刀起刀落很稳。王记者站在厨房门口看了几秒,没有拍照。
你这个后厨跟别的快餐店有什么不一样?
林晨站起来,走到厨房门口。你看出餐口。
出餐口上方有一个小屏幕,显示的是当前订单的排队顺序和预计出餐时间。每个订单后面有一个倒计时,从下单开始算,过了八分钟就变黄,过了十二分钟就变红。
每单八分钟以内出餐。超过十二分钟的系统会自动记录,月底复盘的时候要看。
为什么是八分钟?
测过。快餐的黄金出餐时间是在六到八分钟。低于六分钟说明备料过剩,高于八分钟说明效率不够。八分钟是一个平衡点。
王记者没有继续问。他在笔记本上写了一段话,合上本子,说了一句:够了。我回去写稿,初稿发你确认。
林晨送他到门口。王记者走出去之前回头看了一眼店里的灯箱,上面写着晨枫快餐四个字,下面一行小字:用数据做好每一餐。
这句slogan是你写的?
王记者笑了一下。挺实在的。
稿子发过来是三天之后的事。
林晨坐在书房里看初稿。标题是算法炒菜:一个大厂AI工程师的快餐实验。正文三千多字,写了林晨的转型经历、晨枫的运营模式、系统的技术细节,还有一段关于中年人转型的社会现象分析。整篇稿子的调性是理性的,没有煽情,没有鸡汤。
林晨看完之后给周敏回了一条消息:可以。
稿子发表那天是周五。林晨在南区店看午市数据的时候,手机开始不停地震。他看了一眼,是赵刚在训练营群里转发了一条链接,后面跟了一串消息。
林总上南方都市报了!
这篇写得真好,没有鸡汤味。
算法炒菜哈哈哈哈,但确实是这么回事。
林总你那个出餐八分钟的数据我也要用!
林晨没有回消息。他切到微信朋友圈,发现已经有几个人转了那篇文章。他往下刷了几条,看到苏婉也转了,配了一句话:他写代码的时候我就知道他会做这件事。
他看了两秒,没有点赞,关掉微信。
那天下午的数据显示,南区店的午市营收比上周五高了百分之十八。晚市高了百分之二十二。新会员注册数翻了三倍。
林晨看了数据,没有说话。他把数据截图发给周小敏,让她安排加备晚市的料。然后他打开管理系统,看了一下库存预警。系统提示莴笋库存偏低,建议追加采购十五斤。他点了确认。
接下来的一周,事情开始失控。
周一,深圳商报的一个编辑给周敏打电话,说他们也想做一期报道,比南方都市报那篇更深入,想跟拍林晨的一天。
周二,一个叫深圳味道的美食公众号发了一篇探店文章,标题是科技园最好吃的快餐,老板居然是程序员。文章里配了十二张照片,从厨房到出餐口到菜单,拍得很用心。评论区第一条是:我去过这家店!鱼香肉丝真的好吃!
周三,一个抖音博主带着相机来了。他点了一份鱼香肉丝和一份回锅肉,在店里拍了十五分钟的视频。视频发出去之后,播放量三天破了五十万。
周四,林晨中午去店里的时候,发现门口排了二十多个人。他问周小敏怎么回事,周小敏说:抖音那个博主发了一条,说我们家的鱼香肉丝是他吃过最好吃的。
林晨站在门口看了三十秒,转身去了后厨。
林浩,午市鱼香肉丝的备料够不够?
林浩看了一眼备料台。够。但照这个速度,晚市可能不够。
加备。莴笋多切二十斤,猪肉多切十五斤。
林晨回到前厅,对周小敏说:今天午市如果排队超过二十分钟,就发号。让客人先回去,半小时后再来取。
周小敏点头。她已经在做了。门口放了一张小桌,上面摆了一叠号码牌和一瓶矿泉水。每个拿了号码的客人可以离开,等叫号的时候再回来。
这天午市的营收是平时的两倍半。晚市翻了三次台。到打烊的时候,林浩在厨房站了十一个小时,脚踝肿了一圈。
林晨晚上十点半到店里接他。
还行吗?
还行。林浩坐在备料台上,手里拿着一瓶矿泉水。明天备料再加百分之三十。
别加太多。备料加了卖不掉就是损耗。
我知道。加百分之三十是算过的。今天的新客里有百分之四十是看了抖音来的。这个流量不会一直持续,大概三到五天会回落。回落之后,留存率如果是百分之三十以上,就说明这些客人会变成回头客。
林晨看了他一眼。你什么时候学会算留存率了?
你那个管理系统里有。我每天都会看。
林晨没有再说话。他帮林浩把厨房收拾了一遍,关了灯,锁了门。两个人走到停车场,林浩上了周小敏的车,林晨上了自己的车。
开车回家的路上,林晨看了一眼手机。赵刚又发了一条消息:林总,今天又来了三家媒体想采访你。我帮你挡了。但有一个是央视财经频道的,你要不要考虑一下?
林晨把车停在红灯前,想了十秒钟。然后他打字回复:等我想想。
红灯变绿,他踩了油门。路两边的写字楼灯光一栋一栋地往后退,深圳的夜永远不完全黑。他把车窗摇下来一点,夜风吹进来,带着一点油烟和梧桐树叶的味道。
他想起三年前在这个城市开车的时候,车里只有沉默和焦虑。那时候他的世界只有简历、面试、房贷和不确定的未来。现在他的世界里多了鱼香肉丝的备料量、出餐八分钟的红线、会员复购率的百分比、和一个抖音博主带来的五十万播放量。
这些数字比三年前的那些数字让人踏实得多。
第371章 五家店稳定
月底对账的那天,林晨在中央厨房二楼的办公室里坐了一整个上午。
办公室已经不是三个月前那个水泥地白墙的临时办公室了。墙上贴了五家店的平面图,用不同颜色标了人流动线和出餐动线。书架上多了几本餐饮管理的书,但更多的是打印出来的数据报表,按月份装订成册,每一本侧面都手写了月份和店名。
晨枫管理系统的后台在笔记本电脑上开着。五家店的数据排成五列,像五条并行的河流,每一条都有自己的流量和水位。
科技园中区店:月营收四十一万三千,净利润十六万五。 科技园南区店:月营收三十八万七千,净利润十五万二。 cbd店:月营收四十二万八千,净利润十七万一。 宝安店:月营收四十一万五千,净利润十六万八。 龙华店:月营收三十五万七千,净利润十四万四。
五家店合计月营收:二百万。 五家店合计净利润:八十万。
林晨看着这个数字,手指在桌面上轻轻敲了两下。
两百万。三个月前他在这个办公室里看三家店的月营收首次破百万的时候,觉得那个数字已经很大了。现在五家店跑了两百万,反而觉得没有当初那么激动。他只是习惯了。数据跑稳了之后,增长就是一条斜向上的直线,每一天每一周每一月都在往上走,走得太稳了,稳到让你觉得这是理所当然的。
但他知道不是理所当然。
宝安店是第四家店,开业三个月了。龙华店是第五家店,开业才一个半月。两家新店的数据还没完全跑稳——宝安店的翻台率从开业第一个月的3.4涨到了4.1,龙华店从3.1涨到了3.7。涨是好事,但还没到中区店的4.5和cbd店的4.3。
他点开宝安店的明细看了一遍。午市套餐占营收百分之四十八,晚市单点占百分之三十九,饮品占百分之十三。午市的数据跑通了,但晚市比中区店和cbd店低了五个百分点。宝安的客群跟科技园和cbd不一样,白领比例低一些,居民比例高一些,晚市来得晚、走得也晚,七点半之后还有一波家庭客。
他在笔记本上写了一行:宝安店晚市加两道家庭菜,走量大、价格实惠、适合三人以上的桌。
然后点开龙华店的数据。龙华是五个区域里最偏的,人流量比其他四个区域低百分之十五。但租金也低,月租只有三万二,是五家店里最便宜的。净利润率百分之四十,反而是五家里最高的。低人流加低租金加低成本,等于一个更小但更健康的模型。
他在笔记本上又写了一行:龙华店模型健康,可以考虑复制到其他低租金区域。但翻台率还要再涨。
手机响了。是林枫发来的消息:我在楼下。
林晨合上笔记本,下楼。
中央厨房的一楼已经跟三个月前完全不一样了。
预处理区的六张不锈钢操作台排成两排,洗菜池的出水口接了净水器,切菜机和绞肉机放在角落的架子上,每天早上五点开始运转。烹饪区的三台灶同时开工的时候,油烟从排烟罩下面翻出来,被抽风系统吸走,整个厨房的空气循环三次才换一遍。冷却区的速冷柜嗡嗡响着,冷库的门上贴着手写的标签:冷藏0-4度,冷冻-18度。包装区的真空包装机和封口机在传送带旁边排好,林浩的两个徒弟正在往包装袋上贴日期标签。
林枫站在仓储区门口,手里拿着一叠配送单。他看到林晨下来,把配送单递过去。
今天的配送单。五家店,一共一百三十七项半成品,全部出完了。中区店最早走,五点二十发车。cbd店最晚,六点十分走。龙华店因为距离远,五点就走了。
林晨翻了一遍配送单,在几个数字上停了一下。龙华店今天的叶菜是四十二份,比昨天多了六份。
龙华店昨天叶菜卖完了,晚市最后一个小时有几桌客人点了叶菜没了,退单了三份。小志今天多报了六份。
小志是林浩的第四个徒弟,负责宝安店的后厨。二十四岁,跟了林浩半年,切菜的速度已经不输老手,但调味还差一点火候。林浩说他是手快心不细,出菜快但偶尔会忘放调料。
多报六份没问题。林晨把配送单还给林枫。叶菜多了可以打折出,少了就是退单。退单比浪费更伤客。
林枫点了一下头,把配送单折好揣进口袋。他今天穿了一件灰色的polo衫,袖口挽了两道,露出晒黑的小臂。在中央厨房待了三个月,他的肤色比在工地的时候还深了一截——不是因为晒太阳,是因为厨房里热,出汗多,在外面擦汗的时候紫外线就趁虚而入了。
林枫拉了一把折叠椅过来。
两个人坐在仓储区的纸箱上。纸箱里装的是干货——八角、桂皮、干辣椒、花椒,都是从四川供应商那边直发的,品质比深圳本地批发市场好两级,价格只贵百分之八。林晨算过这笔账,干货贵百分之八但出品稳定性高了百分之十五,因为品质波动小了,客人不会吃到两次味道不一样的回锅肉。
五家店的月报我看完了。林枫说。两百万。净利润八十万。跟你之前的中性预测差了不到三个百分点。
差在龙华店。林晨说。龙华店的翻台率还没跑起来,比预测低了零点三个点。但净利润率反而高了,因为租金低。低翻台加低租金,模型是通的,只是需要时间。
你说时间,多久能跑稳?
两个月。林晨说。龙华店现在的数据曲线是往上走的,但斜率还不够陡。两个月之后如果翻台率能到4.0以上,就可以考虑第六家了。
林枫在笔记本上写了两个月三个字,画了一个圈。
分红的事你算了没有?他问。
算了。林晨掏出手机,打开备忘录,翻到分红那一页。
五家店合计净利润八十万。利润分配是林晨百分之六十,林枫百分之二十五,林浩百分之十五。
林晨分红:四十八万。 林枫分红:二十万。 林浩分红:十二万。
林枫看了一眼这个数字,没有说话。他在建筑公司干了十多年,年薪最高的时候也就三十万。现在一个月分红二十万,比当年一年的收入还多。但他没有表现出任何激动,只是用红笔在笔记本上写了一行:月分红20万,累计投入已回收。
你累计投入了多少?林晨问。
第一家中区店投了十万。第二家南区店投了八万。第三家cbd店投了十二万。第四家宝安店投了八万。第五家龙华店投了六万。中央厨房投了一百万,后来又追加了七万五做冷链和设备升级。加起来一百五十一万五。
加上这个月的二十万分红,你累计收回了多少?
林枫翻了一下笔记本前面几页的记录。前几个月的分红加起来,大概六十多万。加上这个月的二十万,快九十万了。再过三个月,累计投入全部回收。
林晨点了一下头。三个月之后,分红就是纯赚。
林枫把笔记本合上,放在膝盖上。他看着仓储区对面那排码得整整齐齐的调料箱,沉默了几秒。
林浩的分红你跟他说了?
还没说。等他忙完这阵子再跟他说。
他最近怎么样?
还行。五个徒弟都在跑,他每天要在五家店之间转一圈。上午去中区店和南区店,下午去cbd店,晚上去宝安店和龙华店看一眼。一天跑五家店,光是路上就要两个小时。
他忙得过来吗?
忙得过来。但不能再加了。林晨说。五个徒弟是他能带的上限。再多一家店,他一个人盯不住。
那第六家呢?
第六家店的主厨,从五个徒弟里选一个出来独立负责。林浩只管出菜标准和中央厨房的半成品,不再每家店都跑了。
林枫想了一下。谁合适?
大徒弟阿伟最稳,但他适合做执行,不适合独当一面。二徒弟小周味觉最灵敏,但管理能力差。三徒弟小杨综合能力最好,但经验还不够。
那怎么办?
再等等。林晨说。让阿伟试一家。如果他能顶住,就让他独立负责第六家。如果不行,再换人。
两个人坐在仓储区的纸箱上,聊了半个小时。从配送路线聊到人力安排,从菜品调整聊到设备维护,从会员续费聊到外卖平台的抽成谈判。每一个话题都是具体的、琐碎的、跟数字有关的。林晨发现,自从全职做餐饮之后,他跟林枫的对话越来越像两个工地的包工头在算账。没有情怀,没有梦想,只有一行行的数字和一个个的问题。
在t厂的时候,他跟陈博士聊的是模型架构和数据管道,聊的是技术和方向。现在他跟林枫聊的是配送时间和翻台率,聊的是成本和利润。两个世界,两种语言,但底层的逻辑是一样的——找问题,定方案,执行,看数据,再调。
中午十二点,林晨开车去了cbd店。
cbd店正在午高峰。门口排了七八个人,收银台前面的小宇忙得脚不沾地。他一边在ipad上点单,一边回头喊厨房出菜号,一边还要跟排队的客人解释酸菜鱼今天有,大概等八分钟。
林晨没有进去。他站在门外二十米的地方,数了三分钟的人流。一百一十二个人经过,进来的人有二十三个,进店率百分之二十点五。比上个月高了零点八个百分点。饮品吧台旁边有四个人在等咖啡,出杯速度大概两分钟一杯。
小宇看到了他,从收银台后面走出来,把ipad递给旁边的服务员。
大伯。
今天翻台率多少?林晨问。
四点三。比昨天高了零点一。主要是新推的两道晚市家庭菜效果好,昨天晚市的客单价涨了八块钱。
哪两道?
铁板黑椒牛柳和干锅花菜。都是林浩上周试的新菜,走量大、价格实惠、适合三到四个人点。
毛利率?
黑椒牛柳百分之五十二,干锅花菜百分之六十一。综合毛利率百分之五十六。
林晨点了一下头。小宇现在说数字越来越自然了,不再像半年前那样要翻半天ipad才能找到。他的成长曲线跟中央厨房的产能曲线一样——前期慢,后期陡。
下午茶时段呢?
饮品替代轻食的方案跑通了。小宇从口袋里掏出一张折叠的纸,上面是这周的饮品销售数据。下午三点到五点的营收从之前的八千涨到了一万四。饮品毛利百分之七十,比轻食高了二十个点。但咖啡机的产能快到上限了,午高峰的时候要排队等,影响出杯速度。
加一台咖啡机。
我已经联系了供应商,报价一万五。双头半自动,出杯速度能快一倍。
批了。林晨说。
小宇笑了一下,把纸叠好放回口袋。
林晨看了一眼店里的情况。午高峰的客人坐得满满的,出餐口的服务员在快速出菜,厨房里灶火在响,排烟罩的抽风声嗡嗡嗡的。五家店里,cbd店的节奏最快,因为客流最大、翻台最高、品类最多。小宇站在这个节奏的中心,忙而不乱——点单、催菜、对账,每一件事都在他的节奏里,没有遗漏。
他想起半年前小宇刚来的时候。大专毕业,不知道自己要干什么,从高铁上下来的第一天就在店里帮忙端盘子。现在他是cbd店的店长,管着十二个人的团队,说得出翻台率、毛利率、出餐速度这些数字,还能自己写运营方案。
你最近有没有想过一件事?林晨问。
什么事?
你的角色是什么?
小宇愣了一下。店长?
副店长是职位,不是角色。林晨看着他。你的角色是五家店里唯一一个既懂前厅又懂数据的人。林浩管出品和中央厨房,林枫管采购和配送,我管战略和财务。前厅运营和数据监控,是你一个人在扛。
小宇没有说话。他站在店门口,阳光从玻璃门上照进来,打在他半边脸上。
五家店跑稳了之后,我需要你做一件事。林晨说。
什么事?
帮我盯第六家店。
小宇的眼睛动了一下。第六家?
龙华店跑稳之后,第六家店就要开了。到时候我要一个人在店里盯着,不是盯着出菜,是盯着运营。前厅、会员、数据、外卖平台、饮品时段、客户投诉——这些事需要一个既懂前厅又懂数据的人来做。
您是想让我去管第六家店?
不是管。是盯。林晨说。管是日常运营,盯是发现问题。你的强项不是管人,是看数据。数据里出了问题你能第一时间发现,然后告诉林浩调出品、告诉林枫调采购、告诉我调策略。这是你真正的角色。
小宇想了几秒。那cbd店呢?
cbd店找一个人来接你的位置。你培训他一个月,然后你去盯第六家。
小宇没有立刻回答。他看了一眼身后的店,午高峰的客人还在排队,出餐口的服务员在喊17号取餐,厨房里的火光在灶台上闪。
他说。
林晨拍了拍他的肩膀,走进店里。
下午三点,林晨回到中央厨房的办公室,打开电脑。
五家店的数据在屏幕上排成五列。他把数据导出到Excel里,做了一张趋势图。五条线从左下角往右上角走,斜率各不相同,但方向一致。中区店和cbd店的线最稳,像两条平行的铁轨。南区店的线微微波动,但整体趋势向上。宝安店的线在最近两个月突然变陡,说明晚市调整起效果了。龙华店的线最平,但也在往上走。
他在趋势图的下面写了几行字:
五家店月营收200万。净利润80万。利润率40%。 林晨分红48万。林枫分红20万。林浩分红12万。 中央厨房满产运营,配送成本比单店采购低12%。 龙华店翻台率3.7,预测两个月后到4.0。 第六家店选址待定。
他看着这几行字,想起了三年前在科技园中区那间满是灰尘的铺位里数人流量的时候。那时候他每天的收入是零,每天的支出是三千块。现在五家店一个月的净利润是八十万,他在五家店里走一圈就要开两个小时的车。
但数字不是重点。重点是这五家店的模型跑通了,每一个环节都有人盯,每一个数据都有人看,每一天的出菜都稳定。中央厨房在后面支撑着五家店的出品,林浩的半成品标准在前面保证着口味的一致性,小宇的数据监控在中间兜着底。
五家店。两条生产线——一条是中央厨房的半成品生产线,一条是门店的出菜生产线。两条线并行,五家店同时运转,每月两百万的营收像一条河,源源不断。
他关掉电脑,站起来。
窗外是龙岗工业区的铁皮厂房,远处的深惠公路上有几辆货车在跑。中央厨房的排烟管道在侧面墙上伸出去,末端弯了一个角度,像一根天线对着天空。
手机响了。是苏婉发来的消息。
今天数据怎么样?
林晨打字回复:两百万。净利润八十万。
苏婉回了一个数字:48。
他知道这个数字是什么意思。48万,是他这个月的分红。
他站在窗边,看着远处的公路。五年前他在t厂的工位上看窗外的时候,看到的是鹏城湾的水面和写字楼的灯光。现在他看到的是货车、铁皮厂房和排烟管道。风景变了,但他看风景的方式没变——先看数据,再想问题,最后做决定。
他回了一条消息:两个月后开第六家。
苏婉回了一个字:
他收起手机,走出办公室。楼下烹饪区的灶已经关了,林浩正在跟大徒弟阿伟讲明天半成品的备料要点。林浩的声音不大,但每个字都很清楚,像是在背一段他重复了一百遍的口诀。
回锅肉的酱料比例是三份豆瓣一份半甜面酱一份生抽一份料酒半份白糖。比例不能变,变一丁点味道就不对。你调完之后自己尝一口,味道偏淡不偏咸。偏淡可以加,偏咸就废了。
阿伟在旁边点头,手里拿着笔记本在记。
林晨站在楼梯口听了几秒,没有打断他们。他看了一眼手机上的时间,下午三点四十七分。五家店的数据已经跑稳了,中央厨房的产能还有余量,第六家店的选址还没开始,但模型已经建好了。
两百万不是终点。当他把第六家、第七家、第十家店加进去的时候,这条直线会变成一个面,这个面会变成一个网络,网络会变成一个系统。
他转身走回办公室,在电脑上新建了一个文件。文件名是四个字:第六家店。
第372章 投资账户增长
周三的晚上,林晨坐在书房里看投资账户。
书房是去年装修的时候从客厅隔出来的,八平米,一张桌子一把椅子,墙上贴着五家店的平面图和晨枫管理系统的数据看板。桌上有两台笔记本电脑,一台跑餐饮数据,一台跑投资系统。两台电脑的屏幕在暗下来的房间里发出冷白色的光。
投资系统的界面上,总资产的数字停在一个他三个月前不敢想的位置。
八百三十七万。
他盯着这个数字看了十秒,然后看了一遍账户总览,再看了一遍各子账户的明细,最后看了一遍本月的交易记录。数字没有错。
八百三十七万。三年十个月前,他往这个账户里投了二十万。那时候他刚被裁,身上背着房贷和一屁股不确定性,二十万是苏婉和他省下来的全部积蓄中能拿出来冒险的部分。他选了十五只股票,每一只都用自己写的模型跑过,每一步都像在悬崖边走钢丝。
三年十个月,二十万变成八百三十七万。四十倍。
他用计算器算了一遍这个倍数。八百三十七除以二十,等于四十一点八五。四十倍出头。
这个数字说出来,大部分人不会信。四十倍收益,三年十个月,年化收益率超过百分之两百。放到任何一个基金排行榜上,都是第一名的数字。但林晨知道,这个收益率不是线性的。第一年的收益最低,第二年开始加速,第三年才是真正的爆发期。模型和数据之间的关系不是直线,是指数。越到后面,数据越多,模型越准,信号越清晰,收益越陡。
他点开本月的收益明细看了一遍。
本月总收益:四十六万二千。
其中股票收益三十二万八千,期货收益十一万四千,其他收益两万。
股票收益的明细他一个一个看了。最大的单笔收益来自一只半导体股,买入价三十七块六,卖出价五十八块二,持仓两个月,收益率百分之五十四。这只股票是模型在两个月前发出的信号,他在三十七块八的位置建仓,中间加了一次仓,在五十七块到五十八块之间分三次卖出。模型给出的卖出信号在五十五块左右,他多拿了两块,是因为看到市场情绪还在往上推。多拿的两块是直觉,不是模型。但直觉只有在他有足够数据支撑的时候才敢用。
期货收益主要来自一单做空。模型在两周前发出做空信号,他在期货市场上做空了一单有色金属指数,持仓五天,收益率百分之十八。期货的杠杆比股票高,但他的仓位控制很严,单一期货品种的仓位从不超过总资产的百分之十。这一单做空赚了十一万四千,占本月总收益的四分之一。
其他收益两万,是版税。《35岁程序员的AI逆袭》这个月又卖了一千多本,加上之前累计的版税,每月稳定进账两万到三万。不多,但像一条细细的溪流,每个月都往账户里注入一点水。
他把交易记录翻到最开始。最早的一笔交易是2022年8月,他买入的第一只股票——一只新能源股,买入价二十三块四,持有三个月后在四十一块二卖出,收益率百分之七十五。那是模型发出的第一个信号,也是他第一次用自己写的量化系统做实盘交易。
他还记得那天晚上的感觉。卖出之后账户里多了三万七千块钱,他坐在电脑前看着那个数字,手心出了汗。那是一种很奇怪的感觉——他的模型在真实的市场里验证了。不是回测,不是模拟,是真实的、有风险的、有血有肉的验证。三万七千块钱的验证。
从那天开始,他知道这条路可以走。
他关掉交易记录,打开收益曲线图。三年十个月的收益曲线在屏幕上从左下角往右上角爬,像一座慢慢升起的山。前六个月几乎是一条水平线,从二十万涨到三十五万,斜率很平。第七个月到第十二个月开始加速,从三十五万涨到八十万。第二年从八十万涨到两百六十万,斜率明显变陡。第三年是爆发期,从两百六十万涨到了八百三十七万,曲线几乎是一条直线往右上角冲。
但这条线不是没有回撤。他在图上标注了三次大的回撤。第一次是第一年的第三个月,模型误判了一只股票的趋势,亏了四万二,账户从三十二万跌到二十七万八。那天他坐在电脑前盯着屏幕看了半个小时,像看着自己的孩子摔了一跤。他没有止损,因为他检查了模型,模型没有错,错的是市场——市场的反应比模型预测的慢了两周。他等了两周,股价回来了,最终在目标价位卖出,赚了百分之三十八。
第二次回撤是第二年的第八个月,一只重仓股因为政策利空跌了百分之十五,账户从一百八十万跌到一百五十三万。二十七万的回撤。那三天他几乎没有睡觉,每天凌晨三点起来看美股和期货市场的走势,用模型重新跑了一遍所有持仓的风险参数。最终他做了一个决定——不减仓,因为模型的信号没有改变。三天之后,股价反弹了百分之十二,他在反弹途中减了三成仓位,最终这笔交易的收益是负百分之三。没亏钱,但也没赚。
第三次回撤是今年一月份,市场整体回调,他的账户从七百二十万跌到六百五十万,七十万的回撤。这一次他没有慌。三年的数据和经验告诉他,七十万的回撤在八百多万的账户里只占百分之八点五,远低于他设定的百分之十五止损线。他甚至加了两笔仓,在市场恐慌的时候买入了模型给出强买入信号的股票。这两笔加仓在两个月之后赚了四十三万。
三次回撤,三次决策,三次验证。每一次他都用模型做决策,用数据做判断,用纪律做执行。模型是方向,数据是依据,纪律是底线。三者缺一不可。
他关掉收益曲线图,打开下个月的持仓规划。模型已经给出了下个月的信号,有八只股票进入了买入区间,两只股票需要减仓,一只期货品种的做空信号正在形成。他把信号一条一条看完,在笔记本上写了几行:
减仓:盛合科技,目标减仓30%,理由是估值偏高,模型信号转中性。 持有:新能源EtF,理由是趋势未变,模型信号维持看多。 关注:做空信号尚未确认,等下周数据再做决定。
写完之后他合上笔记本,靠在椅背上。书房的灯没有开,只有两台电脑的屏幕在发亮,光线照在天花板上,形成两块模糊的白色光斑。
三年十个月。二十万到八百三十七万。
他想起三年多前被裁的那个下午。hR把他叫到会议室,递给他一份离职协议,上面写着N+1的赔偿金数字。他签完字出来的时候,走廊上的灯在闪,像是在跟他打招呼。他回到工位,把杯子里的茶倒掉,杯子洗干净放回架子上。然后他走出那家跨境电商公司的办公楼,站在停车场里,看着鹏城湾的水面在夕阳下泛着金光。
那时候他不知道自己能走到哪里。他只有一个投资系统、二十万本金,和一堆不确定性。
现在他有了五家快餐店、一个中央厨房、一个跑通的投资系统、一本在版税上持续产生收益的书,和八百三十七万的资产。
他把投资账户的总资产截图保存在一个加密的文件夹里。文件夹的名字叫2022.08-2026.06。从2022年8月到现在,三年十个月。里面一张一张按月份排着,每一张都是月末的总资产数据。从二十万到八百三十七万,这些截图拼成了一条线。
他看了一眼时间。晚上十点半。
手机响了。是苏婉发来的消息。
还没睡?
在看书房。
看什么?
投资账户。
苏婉回了一条:多少?
八百三十七万。
苏婉没有立刻回复。过了一分钟,她发来一条语音。林晨点开,听到她的声音:
你还记得三年前你跟我说要拿二十万做投资的时候吗?我说可以,但有个条件——亏完了就收手。
林晨笑了一下,回了一条:亏完了早就收手了。
那你还记得你说的一句话吗?你说,如果这二十万能翻到一百万,你就知道这条路可以走。
林晨想了一下。他确实说过这句话。那是在他赚到第一个十万的时候,苏婉问他接下来怎么办,他说如果二十万能翻到一百万,就说明模型是有效的,路可以继续走。
记得。他回。
现在不是一百万了。八百三十七万。苏婉的语音又来了,声音里带着一丝笑意。你的路不只是可以走了。你的路已经跑起来了。
林晨坐在书房里,听着这条语音。苏婉的声音在安静的房间里很清晰,每一个字都像是从天花板上的光斑里掉下来的。
他回了一条:明天银行开门了,我把这个月的分红转到家庭账户。
苏婉回了一个字:
然后又发了一条:乐乐的学费下个月要交了。你顺便一起转。
知道了。
他放下手机,重新打开投资系统。下个月的持仓规划还开着,八只股票的买入信号在屏幕上排成一列,像八扇等他推开的门。
他关掉投资系统,关掉餐饮数据的电脑,把两台笔记本合上。书房的灯还是没开,两台电脑的指示灯在黑暗中闪着微弱的蓝光。
八百三十七万。
这个数字意味着什么?
意味着他可以不再为钱工作。意味着他可以选自己想做的事,而不是必须做的事。意味着苏婉不需要再算家用开支的每一分钱,意味着乐乐可以上他想上的学校,意味着林枫可以不用再算投入什么时候能收回。
但他知道,数字只是数字。三年前二十万的时候他在跑模型,三年后八百三十七万的时候他还是在跑模型。模型的参数在变,市场在变,信号在变,但他做决策的方式没变——看数据,想问题,做决定,执行,看结果,再调。
这是他最擅长的事——做决策。
他站起来,走出书房。客厅里苏婉在沙发上看手机,乐乐已经睡了,卧室的门关着。他走过去,在苏婉旁边坐下来。
看什么?他问。
看一套厨具。苏婉把手机屏幕转过来给他看。不粘锅的,一千二。太贵了。
林晨说。
苏婉看了他一眼。你今天看投资账户看飘了?
没有。林晨说。是旧锅该换了。底部都翘了。
苏婉笑了一下,把手机放下。她靠在沙发背上,看了一眼书房的方向。
投资账户的事,你打算怎么跟林枫和林浩说?
不说。林晨说。投资账户是我个人的事,跟晨枫没关系。他们不需要知道。
那分红的事呢?你每个月从投资账户里拿多少钱出来用?
现在每月收益大概三十到五十万。我只拿分红出来用,投资账户里的钱继续滚。
苏婉想了一下。那你算过没有,如果投资账户继续按现在的速度增长,三年后会到多少?
林晨没有立刻回答。他在脑子里跑了一遍模型。保守预测,年化收益率百分之八十,三年后大概在五千万到六千万。中性预测,年化收益率百分之一百二,三年后在一个亿左右。乐观预测他不想跑,因为乐观预测的数字大到没有意义。
保守估计,五千万左右。他说。
苏婉点了一下头。她没有追问他怎么算出来的,因为她知道他算出来的数字不会差太多。
那五家店呢?五家店的增速跟投资账户比起来……
五家店是现金流。林晨说。投资账户是资产增长。两件事的逻辑不一样。投资账户的收益不稳定,可能这个月赚五十万,下个月亏二十万。但五家店的利润是稳定的,每个月八十万,雷打不动。现金流是基本盘,资产增长是加速度。基本盘不稳,加速度再快也白搭。
苏婉听完没有再问。她拿起手机,把那套一千二的不粘锅加了购物车。
买了。她说。
林晨笑了一下,站起来去厨房倒了一杯水。经过书房门口的时候,他看了一眼里面黑暗的空间。两台电脑的指示灯已经灭了,只剩下路由器上一颗绿色的LEd在闪。
八百三十七万。四十倍。三年十个月。
这不是终点。下一个点在八百五十万,再下一个在九百万,再再下一个在一千万。
他端着水杯回到客厅,在苏婉旁边坐下来。苏婉已经把手机放下,在看电视上的综艺节目。节目里的嘉宾在笑,笑声从电视里传出来,在客厅的空气里散开。
林晨喝了一口水,把杯子放在茶几上。
明天我要去龙华店。他说。
去干什么?
看翻台率。3.7太低了,我要看看是什么原因。
你觉得是什么原因?
可能是位置偏,可能是菜品不对路,可能是午高峰出餐太慢。我要去蹲半天才知道。
苏婉没有再问。她转过头看了一眼林晨,又转回去看电视。
八百万。她忽然说了一句。
八百万。她重复了一遍。三年前你被裁的时候,身上只有二十万。
不是只有二十万。是有二十万可以用来冒险。林晨说。剩下的钱在房贷和家用里。
苏婉笑了一下。你总是把话说得比实际情况好听。
那是你的功劳。林晨说。你让我拿二十万出来的时候,说了亏完就收手。这句话比任何模型都重要。
苏婉没有接话。她把头靠在他肩膀上,继续看电视。
客厅很安静。电视的声音开得不大,节目里的笑声一阵一阵的。乐乐房间的门缝里透出一点灯光,他大概在看书。茶几上放着两杯水和一个遥控器。
第373章 高端餐厅计划
周五下午,林晨在中央厨房的办公室里跟林浩开了个会。
会上只有两个人。林浩坐在对面,手里拿着一杯茶,茶是中央厨房自己泡的,用的是便宜的铁观音,喝起来有点涩。林晨面前放着一杯白开水,杯壁上没有茶渍。
五家店的出品报告我看完了。林晨先开口。五家店的出品稳定性评分,中区店4.8,南区店4.7,cbd店4.8,宝安店4.5,龙华店4.3。龙华店扣分最多的是调味偏差,三次被客人反馈味道不一致。
林浩放下茶杯。小志的调味还差一点。我昨天去龙华店盯了一下午,给他示范了三遍回锅肉的酱料比例,他自己调了一遍,偏咸了。我让他倒掉重来,第二遍才过关。
他需要多久能独立调?
两个月。他手快,但味觉的记忆力不够。调了忘,忘了再调,循环往复。给他两个月,每天调三遍,应该能记住。
林晨在笔记本上写了一行:小志调味,两个月。然后他合上笔记本,看着林浩。
今天找你不是聊五家店的事。
林浩端起茶杯喝了一口,放下。他看到林晨的表情变了——一种他很少见到的表情,像是在想一件还没有想清楚的事。
我有一个想法。林晨说。但还没想透。先跟你说,你帮我判断一下。
你说。
我想再开一家店。
林浩没有惊讶。五家店跑稳了之后,开第六家店是迟早的事,这件事他们之前聊过。
第六家店?
不是第六家。林晨停了一下。是另一种店。
林浩看着他,等他说下去。
晨枫快餐的五家店,定位是快餐。人均三十五到六十,翻台率四点几,出餐速度五到七分钟,午高峰为主。这个模型跑通了,可以复制。第六家、第七家、第十家,都是这个模型。
但我想再开一种店。跟晨枫快餐完全不同的一种店。
林浩把茶杯放下,身体往前倾了一点。什么定位?
高端。林晨说。人均三百到五百。做正餐,每一道菜都有故事。菜单随季节换,客人坐下来吃两三个小时。
林浩没有说话。他坐在折叠椅上,双手放在膝盖上,手指微微收紧了一下。
林晨继续说:晨枫快餐做的是效率——用最少的资源做最多的事,每一秒都在计算,每一份食材都在控制成本。高端不一样。高端是你在五星酒店学到的东西——最好的食材,最好的味道,每一道菜让客人觉得值。
你为什么想开高端?林浩问。
品牌。林晨说。晨枫快餐五家店,月营收两百万,利润八十万。但晨枫快餐的品牌认知是什么?是性价比高、出餐快、味道还行。这个认知没有错,但它有一个天花板——快餐的天花板就是人均六十。你再怎么优化,人均六十就是上限了。要打破这个天花板,需要一个不一样的东西来拉升品牌。高端餐厅就是那个东西。
林浩端起茶杯喝了一口,没有说话。
还有你。林晨看着林浩。你在五星酒店干过,拿了中级厨师证,三年来自主创业做快餐,出品稳定性评分最高4.8。但你的能力不只是做快餐。你学的那些高级技法——分子料理的泡沫、低温慢煮的牛排、手工拉糖的甜点——在快餐里用不上。这些技法如果不用,久了会生疏。高端餐厅是你的练兵场,是你证明自己不只是一个快餐厨师的地方。
林浩的手指松开了。他靠回椅背上,目光从林晨脸上移开,看了一眼窗外。窗外的天空是灰蓝色的,远处深惠公路上有货车在跑。
还有护城河。林晨说。快餐的护城河是效率。谁都能做到效率,只要你把流程跑熟了、成本控好了、翻台率上去了。但高端的护城河是味道。味道是别人学不走的。你的回锅肉别人可以模仿,但你在五星酒店学到的那些技法、你三年来自研的那些酱料、你对火候的理解——这些是学不走的。高端餐厅的护城河比快餐深十倍。
林浩沉默了大约十秒。他站起来,走到窗边,又走回来,在椅子上坐下。
人均三百到五百。他重复了一遍这个数字。你算过成本吗?
算过。林晨从口袋里掏出手机,打开一个备忘录。高端餐厅的成本结构和快餐完全不同。快餐的食材成本占营收的百分之三十五到百分之四十,租金占百分之十五到百分之二十,人工占百分之二十到百分之二十五,利润率百分之三十到百分之四十。高端的食材成本占比更高,大概百分之四十到百分之四十五,但客单价高,所以绝对毛利更大。租金更高,可能在百分之二十到百分之二十五。人工也更高,因为要请更多有经验的人。利润率反而比快餐低,大概百分之二十到百分之二十五。
利润率比快餐低,为什么还要做?
因为品牌价值。林晨说。高端餐厅本身可能不赚钱,但它让晨枫的品牌值钱。你有没有注意过,奢侈品店里不只有包,还有丝巾、香水、首饰?这些东西单拿出来可能不赚钱,但它们让品牌从一个卖包的变成了一个卖生活方式的。高端餐厅就是晨枫的丝巾和香水。
林浩想了一下。你的意思是,高端餐厅不赚钱,但让晨枫的品牌从一个卖快餐的一个有好味道的
林晨说。晨枫快餐赚钱,但晨枫高端赚名。名就是品牌溢价。有了高端餐厅在前面扛品牌,快餐的客单价就可以往上走。现在快餐人均三十五到六十,有了高端品牌加持,可以推到四十五到七十。客单价涨十块钱,五家店一个月就多十万营收。
林浩点了一下头。他是厨师,不是商人。但他跟林晨共事三年,对数字的敏感度已经比三年前高了很多。客单价涨十块,五家店一个月多十万,这个账他算得过来。
但你说了三个原因。他开口。第二个原因是。你刚才说,高端餐厅是我的练兵场。那我问你,如果我去了高端餐厅,五家快餐店的出品谁管?
你的五个徒弟。林晨说。阿伟管中区店,小周管南区店,小杨管cbd店,小志管宝安店,老赵管龙华店。半成品的标准还是你定,中央厨房的出品还是你控。你每周巡店一次,尝味道,调参数。但你不需要每天在五家店之间跑了。
万一出品掉了呢?
掉了你再调。快餐的出品标准已经写进了中央厨房的流程里,不是靠你一个人在灶台前颠锅来保证的。你定标准,流程执行。流程比人稳。
林浩想了几秒。他伸手拿起茶杯,喝了一口,放下来。茶的涩味在他舌尖上停留了一瞬,然后散开。
人均三百到五百。他又说了一遍这个数字。你知道这意味着什么吗?
意味着什么?
意味着每一道菜都要有灵魂。林浩看着他的眼睛。快餐的菜是效率的菜,味道不能差,但也不需要多惊艳。人均三十五到六十的客人,对菜的期待是好吃、快、不贵。但人均三百到五百的客人,对菜的期待是。他花三百块来吃一顿饭,不是来填饱肚子的,是来找一种他没有体验过的东西。这个东西可能是味道,可能是摆盘,可能是食材的搭配,可能是上菜的节奏。总之,他走出你的店的时候,必须有一种的感觉。这个不是性价比,是体验。
林晨听完,没有说话。他看着林浩的眼睛,看到一种很认真的、很专注的光。这个光他见过——三年前林浩第一次走进科技园中区那间满是灰尘的铺位时,他看到的就是这种光。那时候林浩还是一个刚从五星酒店出来的厨师,手里有技术但不知道往哪里用。现在他手里的技术比三年前更纯熟,但用在快餐里只用到了三成。还有七成,在等一个舞台。
你能做到吗?林晨问。
林浩想了一下。不知道。但我愿意试。
这就够了。林晨说。
晚上,林晨回家跟苏婉说了这件事。
苏婉正在客厅里看乐乐写作业。乐乐的作业是写一篇关于我最喜欢的食物的小作文,写了三行就卡住了,趴在桌上咬笔头。
你最喜欢的食物是什么?苏婉问乐乐。
方便面。乐乐说。
苏婉看了林晨一眼。林晨走过去,蹲下来。
方便面不是食物,是方便。林晨说。你再想想。
那爸爸做的蛋炒饭。乐乐改口。
这个可以写。苏婉说。
乐乐低下头开始写。苏婉站起来,走到厨房。林晨跟在后面。
我想开一家高端餐厅。他在厨房门口说。
苏婉正在把洗好的葡萄从碗里拿出来,一颗一颗地往盘子里放。她听到这句话,手停了一下,又继续放。
什么定位?她问。
人均三百到五百。不是快餐,是正餐。粤菜川菜融合,林浩主厨。
苏婉把最后一颗葡萄放进盘子,端起来,转身看着他。
不赚钱吧。她说。
利润率大概百分之二十到百分之二十五。比快餐低十到十五个点。
那为什么要开?
为品牌。林晨把高端餐厅的逻辑讲了一遍——品牌拉升、客单价提升、林浩的能力发挥、护城河加深。
苏婉听完了,把盘子放在餐桌上。葡萄在白色的盘子里排成一圈,像一颗颗绿色的珠子。
你想过没有,苏婉说,高端餐厅和快餐是两种完全不同的生意。快餐的客人来你的店是为了快、便宜、味道稳定。高端餐厅的客人来你的店是为了体验、惊喜、故事。这两种客人的期待不一样,你服务的逻辑也不一样。你现在五家快餐店跑得很稳,是因为你的逻辑是效率逻辑。效率逻辑最怕的是什么?是分心。你开了一家高端餐厅,你的注意力会分散,五家快餐店的管理就会出现缝隙。
我让小宇盯。林晨说。小宇负责五家店的数据监控和问题发现,我负责战略和方向。日常运营不靠我,靠系统和人。
系统和人能管好快餐,但管不了高端。苏婉看着他。高端餐厅需要的是什么?是林浩的时间和你的注意力。林浩现在每天在五家店之间跑,你已经说了要让他从日常巡店里抽出来。但高端餐厅开起来之后,林浩要花多少时间在高端上?百分之五十?七十?他在高端上花的时间多了,在快餐上花的时间就少了。出品标准还是他定,但他定的标准需要人在灶台前执行。你的五个徒弟能执行到什么程度?4.8?4.5?4.3?如果出品掉了,客人的信任就掉了。快餐的客人是冲着稳定来的,稳定一旦丢了,人就走了。
林晨没有说话。苏婉的话像一盆冷水,把他脑子里那个高端餐厅的轮廓浇了一遍。轮廓还在,但边上的火苗被浇灭了。
我不是说你不能开。苏婉看他。我只是说,你要想清楚怎么分配注意力和资源。高端餐厅不是多开一家店那么简单,是多开一条线。两条线的逻辑不一样,跑两条线的人也不一样。你不能一个人跑两条线。
林浩跑高端。林晨说。我跑战略。
林浩跑高端没问题。但你呢?你跑战略,战略往哪跑?快餐往左走,高端往右走,你站在中间看哪边?
林晨想了几秒。我站在中间看数据。数据不会骗我。
苏婉笑了一下。不是嘲笑,是那种我老公就是这个样子的笑。
那就去开吧。她说。但有一条——高端餐厅的投资预算要单独核算,不能从快餐的利润里贴。快餐赚的钱是快餐的,高端花的是高端的。两条线要分清楚。
我知道。林晨说。
苏婉把盘子推向他。吃葡萄。想事情的时候嘴里吃点东西,不至于想歪。
林晨拿了一颗葡萄放进嘴里。葡萄很甜,皮薄肉厚,汁水在嘴里炸开。
选址想好了吗?苏婉问。
想好了。深圳湾。
租金多少?
还没谈。但深圳湾的租金不便宜。三百平左右的铺位,月租大概十万。
月租十万。苏婉在心里算了一下。加上装修、设备、人工,前期投入至少三百万。如果利润率只有百分之二十到百分之二十五,月营收要做到多少才能打平?
月营收做到五十万以上才能打平。按人均四百算,每天要一百二十五桌。三百平的面积,摆二十到二十五张桌子,翻台率要做到一点五到两。
高端餐厅的翻台率能做到一点五到两吗?
能做到。但需要时间。前三到六个月一定亏钱。
苏婉点了一下头。她没有再问了。她把葡萄盘子往林晨那边推了推,自己走了出去。
林晨坐在餐桌旁边,一颗一颗地吃葡萄。每吃一颗,他在脑子里过一遍高端餐厅的模型。选址、装修、菜品、定价、人力、营销、预期营收、回本周期。每一个参数都是一个变量,每一个变量都需要数据来支撑。
他吃到第八颗的时候,停下来了。
不是因为葡萄不好吃,是因为他想到了一件事。
林浩说每一道菜都要有灵魂。这句话他记住了。灵魂不是效率,灵魂是体验。效率是他的领域,灵魂是林浩的领域。他做数据,林浩做味道。他做模型,林浩做菜。两个人合在一起,才能把高端餐厅这件事做成。
他站起来,把葡萄盘子端回厨房。经过乐乐的房间时,他看到乐乐趴在桌上,小作文已经写了五行。第一行写的是:我最喜欢的食物是爸爸做的蛋炒饭。
他站在门口看了一秒,没有进去。
回到书房,他打开电脑,新建了一个文件。文件名是三个字:高端店。
他在文件的第一行写:定位——人均300-500,粤菜川菜融合,林浩主厨。
第二行写:目的——品牌拉升,非盈利导向。
第三行写:预算——待定。
第四行写:选址——深圳湾。
然后他停下来了。光标在深圳湾后面闪着,一明一暗,像在等他写下一个字。
他没有写下一个字。因为他还不知道深圳湾的哪个位置最合适。
他合上电脑,站起来。窗外的夜色很深,远处鹏城湾的水面上有几盏灯在晃动。那些灯光像是在问他:你确定吗?
他确定。
但确定和准备好是两件事。方向已经有了,执行还需要一步一步来。
第374章 选址高端商圈
周六上午十点,林晨开车去了深圳湾。
深圳湾是鹏城最贵的商圈之一。如果把鹏城的商圈按价格排一排,福田cbd排第二,南山科技园排第三,深圳湾排第一。第一的原因不是因为人最多——深圳湾的人流量不如cbd,不如科技园,甚至不如宝安——但深圳湾的人均消费全鹏城最高。来深圳湾消费的人,开的车、穿的衣服、吃的饭、喝的咖啡,每一样都比其他商圈贵百分之三十到百分之五十。
林晨把车停在深圳湾万象天地的地下停车场里,从b2出口上到地面。六月的鹏城已经热了,阳光从云层的缝隙里照下来,打在商业体的玻璃幕墙上反射出刺眼的白光。他戴了一副墨镜,沿着商业体的人行道往北走。
这是他第一次来深圳湾看铺位。之前的三次是林枫自己来的,拍了照片发过来,林晨在电脑上看了一遍。但高端餐厅不是快餐,不能只在电脑上看照片。高端餐厅的选址,要亲自站在那个位置上,感受空气的流动、光线的方向、人流的节奏和周围商铺的气质。
他站在商业体的正门入口,数了三分钟的人流。一百零三个人经过,穿着正装的大约占百分之四十,便装的百分之三十,休闲装的百分之三十。女性比例比cbd高,大约百分之五十五。推婴儿车的有七组,遛狗的有四组。这是一个偏生活化的商圈,不像cbd那么紧绷,但消费力比cbd还高。
他沿着商业体走了一圈。一楼是奢侈品和珠宝,LV、爱马仕、卡地亚的门面排成一排,玻璃橱窗里的包和表在灯光下发出柔润的光泽。二楼是轻奢和设计师品牌,人流量比一楼多了两成。三楼是餐饮,中餐、西餐、日料、东南亚菜排成一排,每家店的门口都有等位的椅子和一杯柠檬水。
他在三楼停下了。
三楼餐饮区的布局是一条L型动线,L的拐角处是一个中庭,中庭有一棵很大的绿植,叶子垂下来像一道帘子,把动线分成了两段。一段连接电梯厅和扶梯,是主要人流的方向。另一段延伸到L的末端,人流密度明显低了一截,但几家高端餐厅的门面都很安静,门口的等位区铺着木地板,放着深色的皮质沙发。
他走到L末端最里面的一家餐厅门口。是一家日料omakase,门面很窄,只有两米多宽,但进深很长,大约有二十米。门口没有等位区,只有一块木牌,上面写着仅限预约。
他站在门口数了三分钟。进出的客人只有四组,但每组都是两个人,穿着得体,说话声音很轻,走路的节奏慢。四组客人在门口停留的时间加起来不超过三十秒——他们预约了,到了就进去,不需要等位。
高端的客群不需要等位。林晨在笔记本上写了这一行。
林枫已经在商业体的北门等他了。
林枫今天穿了一件深蓝色的衬衫,比平时在中央厨房穿的polo衫正式了不少。他知道今天是来看高端商圈的铺位,不是来看工业区的仓库。场合不同,着装不同,这是他在建筑工地干了二十多年学到的规矩。
看了几个位置?林晨问。
四个。林枫从包里掏出笔记本,翻到夹了蓝色便利贴的那一页。上面密密麻麻写了四组数据,每一组对应一个候选铺位。面积、租金、人流量、周边业态、优劣势,全部用红笔标了重点。我上周来踩了三次,每次都在午高峰和晚高峰各待一个小时。
林晨看了一遍四个铺位的数据。
第一个:二楼,靠近扶梯,面积二百六十平,月租七万八。优势是人流大,劣势是面积不够,高端餐厅需要更大的空间做氛围。
第二个:三楼,L型动线中段,面积三百二十平,月租九万二。优势是位置在人流拐点,劣势是旁边是一家火锅店,油烟味重,高端餐厅跟火锅挨着做,气质冲突。
第三个:三楼,L型动线末端,面积三百平,月租十万。优势是安静、氛围好、旁边是一家omakase和一家法餐,业态匹配。劣势是人流密度低,只有走进来的人才能看到。
第四个:一楼侧门旁边,面积一百八十平,月租十二万。面积太小,直接排除。
林晨把笔记本还给林枫。走,去看第三个。
第三个铺位在三楼L型动线的最末端。
铺位门面宽度七米,进深四十二米,总面积三百平左右。上一家租户是一家粤式茶餐厅,做了两年没做下去,三个月前关了门。铺位现在是空的,卷帘门拉着,门口的地面砖缝里还有茶餐厅留下的油渍。
林枫拿出钥匙开锁,卷帘门拉上去的声音在安静的商业体里很响,像一声叹息。
铺位内部比林晨想象的好。层高四米二,比快餐店的三米二高了一截,空间感明显不同。地面是灰色瓷砖,保养得还可以,不需要全部敲掉。天花板的消防管道和空调管道都在,空调是新换的,出风口的方向可以调。厨房区域的排烟管道直径够粗,从天花板直通外墙,跟cbd店一样的配置。
但最让林晨在意的是铺位的气质。
三百平的空间,进深长,层高高,光线从门面一侧的大玻璃窗照进来,打在灰色地面上形成一道宽宽的光带。L型动线的末端意味着这里不是过路客会经过的地方,只有专门走进来的人才会到这里。这种目的性消费的动线,正好是高端餐厅需要的。高端餐厅的客人不是路过顺便进来的,是专门预约、专门走过来、专门坐下来的。
他走到铺位最里面,站了三十秒。安静。听不到商业体背景音乐的声音,听不到其他餐厅的出餐铃声,只有空调出风口的轻微嗡嗡声。这种安静在cbd和科技园是不存在的。快餐需要热闹,高端需要安静。三百平的安静空间,是深圳湾商业体三楼L型动线末端给他的礼物。
层高四米二。林枫在旁边报数据。比cbd店高了一米。层高高了,装修的时候可以做吊顶设计,灯光层次感更强。厨房面积大概八十平,比cbd店大了二十平,能放四口灶。排烟管道不需要改,空调不需要换。硬装改造比cbd店省一半。
月租十万。林晨站在光带里,看着天花板。三百平,月租十万,折合每平米月租三百三十三。cbd店一百一十平月租四万八,每平米月租四百三十六。深圳湾比cbd还便宜。
因为位置偏。林枫说。三楼末端不是所有客人都会走到的位置。商业体的租金定价是按人流量来的,L型末端的人流量只有中段的百分之四十到百分之五十。租金自然便宜。
但高端餐厅不需要路过客流。林晨说。高端餐厅需要的是目的性客流。客人预约了才来,不是路过才来。位置偏反而是优势——安静、私密、不被打扰。
林枫点了一下头。他做了二十年工程,对空间的理解比大多数人都深。位置偏不偏,不取决于地图上的坐标,取决于你做什么生意。做快餐,位置偏是劣势,因为快餐靠路过客流。做高端,位置偏是优势,因为高端靠口碑和预约。
林晨从铺位最里面走出来,站在门口。商业体三楼L型动线的末端,右边是那家日料omakase,左边十米是那家法餐,再往左是电梯厅和扶梯。这三家餐厅排在一起,形成了一个天然的高端餐饮区。客人来了这一片,知道这里是吃好东西的地方,不需要看招牌就知道。
旁边那家omakase的人均多少?林晨问。
八百到一千二。林枫翻了一下笔记本。法餐人均六百到八百。
我们定位三百到五百。
比他们低一半。林枫说。
林晨说。八百到一千二是omakase的价位,那种是极致体验,一顿饭吃两三个小时,十到十五道菜,每一道都是艺术品。三百到五百是我们的价位,一顿饭吃一个半到两个小时,六到八道菜,每一道都是好味道加好摆盘。我们不是在omakase的赛道上跟他们抢客人,我们是在他们下面开一层——那些觉得八百太贵但三百值得的客人,那些想体验高端但又不想花太多的人,就是我们的目标客群。
中间层。林枫说。
对。中间层。高端之下的中间层,比快餐高两档,比极致高端低一档。这个层目前鹏城很少有餐厅在做。要么是快餐,要么是omakase,中间是空的。
林枫在笔记本上写了一行:中间层定位,人均300-500,六到八道菜。
他写完之后抬头看林晨。装修预算你算了没有?
算了个大概。林晨从口袋里掏出手机,打开备忘录。三百平的铺位,高端装修。硬装包括吊顶、灯光、地面、墙面、厨房改造、卫生间改造、消防改造。软装包括家具、餐具、装饰画、绿植。设备包括灶具、冷库、烘焙设备、吧台设备。我初步估了一下,硬装两百万,软装一百二十万,设备八十万,杂项和流动资金一百万。总计五百万。
五百万?林枫的手停了一下。
五百万。林晨重复了一遍。快餐店的装修是效率逻辑,亮、白、干净,翻台快。高端餐厅的装修是体验逻辑,灯光暖、空间宽敞、座位舒适、坐得住。两种逻辑的装修成本差三到五倍。cbd店一百一十平花了三十万装修,折合每平米两千七。深圳湾三百平要花五百万装修,折合每平米一万七。差六倍。
林枫在笔记本上算了一下。每平米一万七的装修标准,在鹏城的高端餐厅里算什么水平?
中上。林晨说。鹏城最贵的高端餐厅装修标准是每平米三万到五万,那是omakase的级别。我们做每平米一万七,是中高端的档次。不极致奢华,但有质感。好钢用在刀刃上——灯光、座椅、餐具这三样要下本,其他的可以省。
灯光、座椅、餐具。林枫记下了这三样。你打算用什么风格?
新中式。林晨说。不是老式中式那种红木、雕花、屏风的风格,是现代中式的简洁。灰白底色加原木质感,灯光用暖黄,座椅用深色布艺或皮质,餐具用手作陶器。整体感觉是安静、干净、有质感。客人走进来不需要被金碧辉煌震撼,但坐下之后会觉得很舒服,每一处细节都是用心的。
林枫想了一下。新中式你做过吗?
没有。林晨说。但林浩在五星酒店干过。五星酒店的粤菜厅就是新中式的风格——灰白底色、原木质感、暖黄灯光。他比我懂。
那他同意了吗?
同意了。林晨说。昨天跟他聊了。他愿意试。
林枫合上笔记本,把便利贴折好放进口袋。他站在铺位门口,看着商业体三楼L型动线的方向。远处扶梯的灯光在动线的一端闪烁,近处omakase的木牌在灯光下静静立着。三楼的空气是安静的,偶尔有服务员的脚步声从远处传来,踩在木地板上,声音很轻。
我回去做装修方案。林枫说。三百平,新中式,灯光暖黄,座椅深色布艺或皮质,手作陶器餐具。预算五百万。我三天给你初步方案。
但有一件事我要跟你说。林枫转过来看着他。五百万的装修加上月租十万,前期投入至少六百万。这还不算设备、人工和前三个月的亏损。高端餐厅前三个月一定是亏的,月亏大概多少你算了没有?
算了。林晨说。月营收按保守估计三十万,月成本五十万,月亏二十万。前三个月亏六十万。加上装修五百万、设备八十万、押金三十万、流动资金一百万。总投入七百七十万。
七百七十万。林枫说。你出多少?
我出五百万。林浩出两百万。你出七十万。
林枫的眉头皱了一下。我出七十万?
中央厨房的投入你出了一百万,已经回收了大半。快餐五家店的分红你每月二十万,减去日常开销,你手上的现金流足够。但高端餐厅的风险比快餐高,我不建议你投太多。七十万是探路钱,先试一下。如果跑通了,再加。
那林浩出两百万,他出得起吗?
出得起。林晨说。林浩三年的分红加起来,手上的现金超过三百万。但他没有理财意识,钱都放在银行活期里。我让他拿两百万出来投高端餐厅,也是逼他去想钱怎么用的问题。他不能一辈子只当主厨,他要学会做股东。
林枫想了一下,在笔记本上写:林晨500万,林浩200万,林枫70万。然后他在下面写了一行:股权待定。
股权的事等方案出来再谈。林晨说。先把位置定下来。
位置你定了吗?
林晨站在铺位门口,回头看了一眼三百平的空空间。大玻璃窗的光线从外面照进来,在灰色地面上画了一道宽宽的光带。光带的尽头是厨房区域的排烟管道,管道在空中弯了一个角度,像一条安静的河流改了道。
定了。他说。就这里。
下午,林晨回到中央厨房,把今天的考察情况整理成文档。
深圳湾万象天地商业体三楼L型动线末端。面积300平,月租10万,层高4.2米。硬装改造预算200万,软装120万,设备80万,杂项和流动资金100万。总投入500万。加上前期亏损准备和押金,实际总投入770万。
他在文档的最后加了一行字:这个位置不是最热闹的,但是最安静的。安静是高端的底色。
然后他打开另一个文档,标题是:高端店装修方案需求。
灯光:暖黄,色温2700K-3000K,主灯+辅助灯+桌面灯三层设计。 座椅:深色布艺或皮质,坐高45cm,坐深50cm,扶手宽60cm。 餐具:手作陶器,每套不同,体现手工质感。 墙面:灰白底色,局部原木装饰板。 地面:灰色大板瓷砖,哑光面。 吊顶:简洁线条,不做过复杂造型,重点区域(入口、吧台、主墙面)做灯光设计。 厨房:80平,四口灶,冷库一间,烘焙区独立。 卫生间:两个独立卫生间,干湿分离,配手作洗手盆和暖光灯。
他写完之后,把文档发给林枫。林枫秒回了一条:收到。三天给你方案。
他又给林浩发了一条:铺位定了。深圳湾万象天地三楼。三百平,月租十万。回来我跟你聊装修风格的事。
林浩回了一个竖起大拇指的表情。
林晨把手机放下,靠在椅背上。中央厨房的排烟管道在楼上传来轻微的震动,灶具已经关了,但管道的余热还在散。他闭上眼睛,脑子里浮现出那个三百平的空空间。
大玻璃窗。暖黄灯光。深色座椅。手作陶器。安静的空间。六到八道菜。每一道都有灵魂。
故事的主角是林浩,舞台是深圳湾万象天地三楼末端那个三百平的安静空间。
他睁开眼睛,在笔记本上写了一行字:
菜名——待定。
菜名是最后的拼图。位置有了,预算有了,风格有了,人有了。只差菜。
他拿起手机,给林浩发了一条消息:从明天开始,你不用巡店了。把五家店交给五个徒弟,你专心做一件事——研发高端菜单。
林浩的回复很快:
就一个字。但林晨知道这个字的分量。林浩从明天开始,不再是一个每天在五家店之间跑的巡店主厨。他要变成一个研究者,一个创造者,一个在灶台前试验每一道菜的味道和摆盘的人。
三百平的空间在等他。六到八道菜在等他。三百到五百的人均价位在等他。
他站起来,走出办公室。楼下预处理区的灯还亮着,明天半成品的备料已经开始。林浩的大徒弟阿伟正在操作台前切胡萝卜,刀工干净利落,每一片都是均匀的薄圆片。
林晨在楼梯口站了一秒,看着阿伟的背影。阿伟不知道,从明天开始,他的师父林浩就要去做一件完全不同的事了。
两条线。两种逻辑。一个人跑不过来,但两个人可以。
第375章 新菜品研发
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第376章 团队搭建
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第377章 软开业
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第378章 新店口碑传播
软开业第二周,晨枫·雅的预约电话开始多了起来。
杨帆在前台接电话的时候,本子上记下了每一个来电的来源。第一天七个电话,三个是杨帆在瑞吉酒店时候的老客户,两个是深圳湾附近写字楼的商务人士,还有两个——是上一周来过的客人推荐来的。
推荐来的客人,一定要问清楚是谁推荐的。林晨在晨会上跟杨帆说。
我一直在问。杨帆翻开本子,七号桌那对中年夫妻,姓陈,是上周三来的那对年轻情侣推荐的。那对年轻情侣上周走的时候留了一句话,说这里的花椒和牛肋条比书好。陈先生说他太太看到朋友圈里有人转了这句话,专门来试试。
林晨听到比书好三个字,没有笑。他脑子里在算一笔账——一个客人的好评能带来几个新客人?如果转化率是二到三,那一周八个客人就能带来十六到二十四个新客人。但前提是,好评必须是真实的,不能掺水。
不做广告。林晨在当天的运营会上说。
林枫看着他。开业不做广告?
不做。林晨说,一个字都不做。不投朋友圈广告,不买点评的流量包,不请美食博主来探店。
为什么?
高端餐厅的广告是减分项。林晨说。你见过米其林三星投广告吗?没有。高端客人的信任不是靠广告建立的,是靠口碑。广告一投,客人的期待就会被拉高。期待拉高了,体验就容易打折。
他停了一下。而且我们现在还没准备好。菜品稳定了吗?出菜间隔还在四分半,目标四分钟。甜品菜单的位置调了,但还没验证新位置有没有效。服务流程跑通了没有?杨帆刚来两周,跟服务员的磨合还不够。在这种状态下投广告,等于告诉全深圳我来了,然后让他们来挑毛病。
林枫想了一下。那你怎么让客人来?
让来的客人帮我们说。林晨说。口碑传播的原理很简单——一个客人觉得好,他会告诉三个人。这三个人觉得好,每个人再告诉三个人。三轮传播之后,就是二十七个人。但前提是,每一步传播的转化率不能低于百分之六十。低于百分之六十,口碑就断了。
转化率怎么保证?
靠产品。林晨看了林浩一眼。产品不好,口碑就是负的。产品好,口碑就是正的。广告可以买流量,但买不了口碑。
林浩没有说话。他知道林晨说的就是他手里的菜。菜好,口碑就好。菜不好,什么都没用。
第二周,林晨做了一件事。
他在餐厅入口的侧面放了一个小的展示架,架子上放了两样东西——一本《35岁程序员的AI逆袭》,和一张小卡片。卡片上印着晨枫·雅的地址和电话,没有二维码,没有公众号,没有折扣信息。
这是什么意思?杨帆问。
来的客人如果认出了我的书,说明他们对我有认知。他们看到书和餐厅放在一起,会产生一个联想——这个开餐厅的人,是写书的那个人。这个联想比任何广告都有用,因为它是客人自己产生的。
那卡片呢?
卡片是给觉得好的客人拿走的。他们拿走卡片,说明他们想再来,或者想把这家店推荐给别人。卡片上只有地址和电话,没有折扣,没有优惠。来的人不是为了打折来的,是为了味道来的。
杨帆想了一下。你是在筛选客人。
林晨说,高端餐厅不缺客人,缺的是对的客人。对的客人来了会回头,不对的客人来了会投诉。我们现在的接待能力是每天三十个位子,每个位子只能给对的客人。
那怎么判断对不对?
不用判断。觉得好的自然会回来,觉得不好的自然不来了。我们只管做好产品和服务,筛选是自然发生的。
口碑传播的转折点发生在第二周的周五。
那天来了一个客人,四十多岁,穿了一件深灰色的西装,没有打领带。他一个人来的,坐在靠窗的位子,点了一杯白葡萄酒和三道菜——花椒和牛肋条、松露回锅肉、冰粉鹅肝。
杨帆注意到他点菜的方式很特别。他先看了酒单,选了酒,然后才看菜单。选菜的速度很快,三道菜不到两分钟就点完了。这说明他知道自己想吃什么,不是来试试的,是有备而来的。
这个人不像随便进来的。杨帆在跟林晨的微信里说。
林晨回了一个字:
杨帆没有客人的习惯——高端餐厅的前厅经理不会盯着客人看。但她在客人用餐的过程中留意了几个细节。
第一,他吃花椒和牛肋条的时候,停下来看了盘子里的肉。不是看摆盘,是看肉的纹理。这说明他在意食材。
第二,他喝白葡萄酒的时候,闻了一下酒杯里的香气,然后小口喝的。这是懂酒的人才会有的动作。
第三,他吃完最后一道冰粉鹅肝之后,把勺子放下来,靠在椅背上,闭了一下眼睛。只有吃到真正满意的东西,人才会闭眼。
他吃完之后,叫杨帆过去。
你们的主厨是谁?他问。
林浩。杨帆说。
林浩。他重复了一遍。之前在哪家酒店?
之前在深圳柏悦酒店。
他想了一下。柏悦的中餐主厨不是他。
他是从柏悦出来的,但不是主厨。现在是我们的主厨。
客人点了一下头。他没有再问,掏出手机扫了桌角的码——不是付款码,是晨枫·雅的预约码。他扫完之后,在手机上操作了一会儿,然后站起来,留了一句:下周三,八点。
杨帆看着他走出门,然后去收桌。桌上的盘子几乎全空了,只有花椒和牛肋条的盘底留着一点花椒油。白葡萄酒的杯子也空了。
她掏出手机,给林晨发了一条消息:刚才那个客人,下周三又来了。我猜他是做餐饮的,或者跟餐饮有关系的人。他的吃法太专业了。
林晨回了一个字:
那个客人叫陈建明。杨帆后来在朋友圈里搜到了他——深圳一家美食公众号的主编,号叫味觉地图,有十二万粉丝。
他不是来踩点的美食博主。林晨没有请他,也没有给他免单。他是自己来的,花了六百八十块钱,吃了三道菜,喝了一杯白葡萄酒。然后他走了,约了下一周再来。
三天后,味觉地图发了一篇文章。标题是:《深圳湾新开了一家餐厅,我去吃了两次》。
文章不长,一千五百字左右。没有华丽的形容词,没有夸张的感叹号。只是平实地写了三件事——食材的新鲜程度、味道的层次感、服务的分寸感。
其中有一段这样写:
花椒和牛肋条这道菜,我在深圳吃过至少十个版本。大多是花椒味浮在表面,一口麻一口腻。但晨枫·雅的版本不同,花椒味是从肉里面出来的,像是从油脂里渗出来的,不是淋上去的。吃第一口的时候我差点忽略了花椒的存在,吃到第二口,麻感才从舌根慢慢升起来。这种层次感,在人均三百的餐厅里不多见。
还有一段写服务:
这家店的服务让我想起一句话——好的服务是看不见的。从进门到点菜到上菜到结账,没有一个环节让我觉得被了。服务员不跪,不弯腰,不抢话,不推销。他们只是在那里,在你需要的时候出现,在你不需要的时候消失。这种服务分寸感,不是培训能教出来的,是管理者对这个词的理解。
文章最后写了一句:
我给这家店打四分(满分五分)。扣的一分是因为——他们还没有甜品菜单的独立版面。如果甜品也能做到主菜的水平,我愿意给五分。
林晨看完这篇文章,坐在办公室里沉默了三十秒。
然后他给杨帆发了一条消息:甜品菜单的独立版面,这周之内做出来。
杨帆回了一个。
他又给林浩发了一条消息:陈建明又约了周三。你准备一下。
林浩没有回文字,回了一个点头的小表情。
文章发出去之后的三天里,晨枫·雅的预约电话暴增。
周一到周三,每天接到的预约电话从七八个涨到了二十多个。杨帆的本子上记满了来源——有的是看了味觉地图的文章来的,有的是朋友推荐来的,有的是在深圳湾万象城逛街路过看到的招牌进来的。
但最多的一种来源,是朋友圈看到有人发了花椒和牛肋条的照片。
林晨看到这个数据的时候,愣了一下。
他们怎么拍的照片?他问杨帆。我们菜单上没有写欢迎拍照,也没有禁止拍照。
他们自己拍的。杨帆说,用手机拍,加了滤镜,发了朋友圈。有几个人还配了一段文字,大概意思是深圳终于有一家值得慢慢吃的餐厅了
林晨想了一下。不加滤镜的版本呢?
什么?
以后出菜的时候,摆盘要做到不加滤镜也好看。林晨说,让客人拍了就能发,不需要修图。这才是真的好看。
杨帆看了他一眼。你是在说菜品,还是在说做人?
林晨没有回答。
第二周结束的时候,林晨算了一下数据。
七天的营收:周一四千三,周二四千八,周三五千一,周五六千五,周六七千二,周日六千八。平均客单价八百七十。比第一周高了四十块。
预约第三周的客人已经排到了周三。按照目前的增长速度,第三周可能做到满座。
但林晨没有高兴。他在笔记本上写了几行字:
客单价上升四十块,说明高端客人的比例在增加。但需要确认是不是因为酒水占比提高了——如果是酒水提高了,菜品本身的价值感没有提升。
出菜间隔从四分半压缩到了四分钟。但第三道菜到第四道菜之间的间隔有时会拉长到五分钟,需要再调。
酸汤东星斑的点单率从第一周的百分之三十提高到了百分之四十五,说明陈建明的文章带动了这道菜的关注度。但点单率还是低于松露回锅肉和冰粉鹅肝,记忆点仍然不够。
口碑传播的速度超出了预期。如果第三周满座,需要提前考虑翻台和备菜的压力。
他把笔记本合上,看了一眼窗外。深圳湾的海面在夜色里看不见了,只有远处的灯光像碎金子一样散落在水面上。
口碑来了。但不能让它跑得太快。跑得太快的口碑,会把一个还没准备好的餐厅推到风口上。
第379章 米其林目标
周五晚上十点半,最后一桌客人走了。
林晨在厨房的小隔间里看数据。ipad上显示今天营收七千八,六桌客人,平均客单价一千三。这是开业以来客单价最高的一天,原因是有一桌客人点了两瓶红酒,酒水营收占了总营收的百分之三十八。
林晨在笔记本上画了一个圈,在圈旁边写了一行字:酒水占比过高,需要关注。
他正准备合上笔记本的时候,林浩端了一碗面走进来。面是清汤的,上面飘着几片葱花,没有肉,没有蛋。林浩自己的晚饭,从后厨的边角料里做的。
林浩把碗放在桌上,自己拉了一把折叠椅坐下来。
林晨看了一眼那碗面。你就吃这个?
忙的时候顾不上好好吃饭。林浩端起碗喝了一口汤。你今天找我什么事?
你知道米其林吗?
林浩的筷子停在半空。他放下碗,看着林晨。
米其林指南?
知道。林浩说。在柏悦的时候,每年米其林发布指南的那一天,厨房里所有人都在刷手机看结果。拿到星的餐厅,第二天订座电话会打爆。拿不到星的,有的主厨会辞职。
你觉得晨枫·雅有可能拿到米其林星吗?
林浩没有立刻回答。他把碗端起来,又喝了一口汤,放下。
你想拿米其林?他问。
不是我想拿。林晨说,是我们的餐厅需要拿。
为什么?
林晨把ipad转过来,让林浩看屏幕上的数据。这是开业三周的数据。第一周营收三万二,第二周四万八,第三周预计七万。增长很快,但增速在放缓。你猜第四周会怎样?
继续涨?
不一定。林晨说。口碑传播的第一波是最猛的。第一波过了之后,增速会自然回落。如果我们的产品没有持续升级,口碑就会停在第一波的水平。一个月后,来过的客人不会再来了。两个月后,口碑就断了。
你的意思是,需要一个新的增长点?
品牌制高点。林晨摇头。
他在笔记本上翻了一页,找到一张他前几天画的图。图很简单,是一个三角形。三角形的底边写着,中间写着,顶点写着米其林。
你看这个三角形。林晨指着底边,晨枫快餐五家店,月营收两百万,利润八十万。这是我们的基础。没有这个基础,高端餐厅活不了。他又指着中间,晨枫·雅是我们往上走的一步,从快餐到高端。但高端不是终点,高端只是一个跳板。最后他指着顶点,米其林才是终点。拿到米其林星,意味着我们的品牌从深圳湾的一家好餐厅变成了米其林认可的餐厅。这个认可不是我们给自己贴的标签,是行业给我们的。
林浩看着那个三角形,沉默了一阵。
米其林不是想拿就能拿的。他说。
我知道。林晨说。米其林的评价标准是五个维度——食材品质、烹饪技巧、味道的层次感、性价比、稳定性。这五个维度里,前三个是你的强项,第四个取决于定价策略,第五个取决于运营体系。
第五个是最难的。林浩说。稳定性不是一天两天能做到的。今天好明天差,米其林评审来了刚好碰到你差的那一天,你一年的努力就白费了。
所以我们需要建立一套体系。林晨说。从食材采购到备料到烹饪到出餐到服务,每一个环节都有标准,每一个标准都可以检查,每一次检查都有记录。快餐的标准化我们已经跑通了,高端的标准化原理一样,只是颗粒度更细。
林浩想了一下。你说的我理解。但我想问一个问题。
你问。
你到底是为了品牌拿米其林,还是为了我拿米其林?
林晨看着他,没有说话。
你之前跟我说过,开高端餐厅有三个原因。第一个是品牌,第二个是我,第三个是护城河。林浩的手指在桌面上敲了两下。如果是为了品牌拿米其林,那拿到星就行了,不需要追求几颗星。但如果是为了我,那你的目标应该是一星以上。因为一星是对餐厅的认可,两星以上才是对主厨的认可。
林晨想了几秒。他伸手在笔记本上划掉了米其林三个字,重新写了三个字——主厨星。
你说的对。他说。我确实是为了你。
林浩没有接话。他端起碗,把最后一口面吃完。
但我不确定我够格。他说。
我也不确定。林晨说。但你愿意试,这就够了。
第二天上午,林晨在中央厨房开了个会。
参加的人比以前多了两个——杨帆和徐鹏。加上林晨、林枫、林浩、小宇、周小敏,一共八个人,挤在中央厨房的会议室里。会议室只有十平米,八个人坐下来之后几乎没有走动的空间。
米其林的评审标准。林晨说,食材、技巧、味道、性价比、稳定。从今天开始,晨枫·雅的每一个运营动作都要对标这五个维度。
杨帆举手。性价比怎么对标?我们人均四百,对标谁?
不对标谁。林晨说。米其林的性价比不是比便宜,是比值不值。客人花四百块吃一顿饭,走出餐厅的时候觉得,性价比就是过关的。觉得或者,就是不达标。
那怎么衡量值不值杨帆问。
回头率。林晨在白板上写了一个公式:回头率=再次预约的客人数÷总客人数。第一个月的数据还太少,但从第二个月开始,我们要跟踪每一个客人的回头率。回头率超过百分之五十,说明性价比过关。低于百分之五十,就要找出问题在哪里。
小宇举手。食材呢?快餐的食材供应链和高端的食材供应链不一样。高端的食材要精,要少批量多频次,还要随季节变化。
这个我来管。林浩说。高端的食材采购不经过中央厨房,我直接跟供应商对接。每个季节的菜单会有调整,食材跟着菜单走。
技巧呢?周小敏问。
技巧就是我的事。林浩说。每一道菜的烹饪步骤、火候、时间、调味比例,都要写进标准手册。快餐的手册是流水线式的,高端的手册是创作式的。创作式不是没有标准,是标准更细。细到每一秒的火候,每一克的调味。
味道呢?
味道是结果。林浩说。食材对、技巧对、标准对,味道自然就对。味道不对,一定是前面哪一步出了问题。
最后一个。林晨指着白板上的。稳定是最难的。稳定意味着每一天的每一道菜都是同一个水平。不能今天好吃,明天一般。不能这个客人来好吃,那个客人来一般。不能评审来了好吃,评审走了就变回去。
怎么做到?林枫问。
不依赖。林晨说。
他看了一圈所有人的脸。快餐为什么稳定?因为快餐不依赖某一个人。林浩不在,阿伟也能出菜。阿伟不在,小志也能出菜。标准写好了,流程跑通了,谁来都一样。高端也要做到这样。林浩的菜不能只在林浩手上好,必须在阿伟和小陈手上也好。这就需要更细的标准和更多的训练。
林浩点了一下头。我懂。
从这周开始,林晨说,每一道菜都要做标准化手册。不是快餐那种一页纸的流程图,是每一步都有照片、参数和检验标准的完整手册。林浩负责写,阿伟和小陈负责试做。试做出来的菜和林浩做出来的菜之间的差别,要控制在百分之五以内。
百分之五以内?林浩皱了一下眉。这很难。
我知道很难。林晨说。但米其林的标准就是很难。如果容易,深圳就不只有一家米其林餐厅了。
会开完之后,林晨和林浩单独留了下来。
林晨把笔记本翻到一页,上面画了一个时间线。时间线的起点是现在,终点写着米其林评审。
你知道深圳有几家米其林餐厅吗?林晨问。
三家。林浩说。一家一星,两家必比登。必比登不算星。
对。只有一家一星。深圳不是上海,不是北京,米其林对深圳的评价一直比较严格。但这也是我们的机会——深圳的高端餐饮市场还没有被教育成熟,谁能先拿到星,谁就是这个市场的标杆。
你想什么时候拿?
两年。林晨说。两年之内,拿到米其林一星。
林浩看着他。两年够吗?
够不够不重要。林晨说。重要的是目标在那。没有目标,每天就是在转圈。有了目标,每天都是在往那个方向走。走一步算一步,走一步就离目标近一步。
林浩想了几秒。那这两年里,我需要什么?
你需要三样东西。林晨说。第一,最好的食材。我已经联系了三个高端食材供应商,下周开始送样品。第二,最好的设备。厨房里的灶和烤箱需要升级,我已经让林枫去看了。第三,最严格的标准。每一道菜、每一个步骤、每一个参数都要写下来、拍照、存档。以后不管谁来评审,我们拿出来的东西都是同一个水平。
还有一个。林浩说。
什么?
时间。林浩说。我需要时间。研发新菜的时间,试菜的时间,培训阿伟和小陈的时间。现在每天晚市结束已经十一点了,第二天中午又要开始备料。我每天只有上午八点到十一点这段时间可以用来做研发。三个小时不够。
林晨想了一下。上午的时间给你。从八点到十二点,四个小时。晚市的备料交给阿伟和小陈,你只负责出餐口最后把关。
那快餐那边呢?
快餐的出品由五个徒弟管,你每周巡店一次,只调味道不碰灶。中央厨房的半成品标准由小宇监控数据,有问题再找你。
林浩沉默了一会儿。你把我的时间全部给了高端,快餐那边不会出事吗?
不会。林晨说。因为快餐的体系已经跑通了。体系跑通了之后,人就不需要天天盯了。你以前每天跑五家店,是因为体系还没跑通。现在跑通了,你只需要每周看一次数据就行了。
万一数据掉了呢?
掉了你就回去调一次。但你不能再像以前那样每天五家店来回跑了,那样你的时间全部花在快餐上,高端永远起不来。
林浩低头看了一眼自己的手。虎口上的烫伤疤已经结了痂,颜色从红色变成了暗粉色。食指侧面的疤也在恢复中。
他说。两年。
两年。林晨伸出手。
林浩握了一下。力度比平时重了一点。
当天晚上,林晨回到家,苏婉在客厅里看书。
你今天看起来不一样。苏婉说。
哪里不一样?
比平时更安静。苏婉合上书。平时你回来会先看手机上的数据,今天你把手机放在口袋里没有掏出来。
林晨在沙发上坐下来。我今天跟林浩说了一个目标。
什么目标?
米其林一星。两年之内。
苏婉看着他,没有说话。她看了大概十秒,然后开口。
你知道深圳只有一家米其林一星餐厅吗?
知道。
你知道全中国有多少家米其林一星餐厅吗?
七十多家。
你知道多少家餐厅在争这个星吗?
不知道。林晨说。但我不在乎有多少家在争。我只在乎我们够不够格。够格了,星自然会来。不够格,争也没用。
苏婉想了一下。你觉得你们现在够格吗?
不够。林晨说。还差很远。但方向是对的。
什么方向?
从快餐到高端,从高端到米其林,从米其林到品牌制高点。林晨看着天花板。这是一条很长的路。快餐走了三年,高端走了三周,米其林要走两年。但每一步都是上一步的延伸,不是跳过去。
苏婉点了一下头。她没有说支持,也没有说反对。她只是站起来,去厨房倒了一杯水递给他。
两年。她说。两年之后呢?
两年之后再说。林晨接过水杯。先把这两年的路走完。
苏婉没有再问。她坐回沙发上,重新翻开书。林晨喝完水,把杯子放在茶几上,掏出手机开始看数据。
手机屏幕的光照在他的脸上,他看到今天的数据:六桌客人,平均客单价一千三,回头客占比百分之三十五。
他合上手机,闭上眼睛。米其林。一颗星。两年。
第380章 美食评论家
周一中午,杨帆给林晨发了一条消息:有一个叫赵维的人预约了周三晚上的位子。他留了一个手机号,但没有留备注。我搜了一下号码,发现他是《食尚》杂志的专栏作家。
林晨看到这条消息的时候正在中央厨房看快餐店的数据。他放下手机,想了一下,然后回了一条:正常接待,不搞特殊。
杨帆回了一个。
他之所以说不搞特殊,是因为他知道一个道理——美食评论家最讨厌的就是被特殊对待。你给他加菜、打折、换最好的位子,他吃出来的味道就不是普通客人吃出来的味道了。他写出来的文章就会变成被优待的体验,而不是真实的体验。而林晨要的恰恰是真实的体验。
周三晚上七点,赵维准时到了。
他比杨帆描述的还要普通。五十出头,头发灰白,穿了一件深蓝色的亚麻衬衫,脚上一双棕色乐福鞋。没有背包,没有相机,手里只拿了一部手机。他走进餐厅的时候,没有四处打量,直接走到前台,报了预约名字。
杨帆迎了他,引到一个靠角落的位子。这个位子不靠窗也不靠门,灯光偏暗,不容易被其他客人注意到。杨帆选这个位子是有原因的——美食评论家通常不喜欢坐在显眼的位置,因为他们不想被认出来。
您想先看点菜单还是酒单?杨帆问。
酒单。赵维说。
这是行家。先选酒再选菜,说明他心里已经有了搭配的逻辑。
徐鹏走过来递酒单。赵维翻开看了一遍,没有超过三十秒。他指了一款勃艮第的霞多丽。
这款酒配酸汤东星斑合适吗?他问徐鹏。
徐鹏想了一下。配酸汤东星斑稍重了一些。如果您点了酸汤东星斑,我建议配一款阿尔萨斯的雷司令,酸度更搭。霞多丽更配花椒和牛肋条。
赵维看了徐鹏一眼。那我就点霞多丽。但酸汤东星斑我也要点。你再给我推荐一款配酸汤的。
阿尔萨斯的雷司令,珍藏级,酸度更高,能托住酸汤的味道。
两瓶。
徐鹏点了一下头,转身去取酒。
赵维点了四道菜——花椒和牛肋条、酸汤东星斑、松露回锅肉、冰粉鹅肝。正好是晨枫·雅菜单上评价最高的四道。杨帆在后台看到这个点单,心里想:他做过功课。
第一道菜上来的时候,赵维没有立刻动筷子。他先看摆盘,看了大约十秒。然后拿起手机,拍了一张照片。拍完之后,他把手机翻过来扣在桌上。
这个动作让杨帆注意到了。一般人拍照是为了发朋友圈,拍完会立刻看效果、修图、发出去。但赵维拍完之后把手机扣在桌上,说明他拍照不是为了发社交媒体,是为了记录。记录和分享是两件事。
赵维夹起一块花椒和牛肋条,放进嘴里。他嚼了五下,停下来,又嚼了三下,然后咽下去。
他没有说话。拿起酒杯,喝了一口霞多丽。
然后他拿起手机,在备忘录里打了几个字。杨帆站在远处,看不清他写了什么。
第二道菜,酸汤东星斑。赵维吃了两口,停下来。他端起汤碗闻了一下,然后又喝了一口。这个动作不是普通客人的动作——普通客人不会端起汤碗闻。他在辨别汤底的成分。
杨帆在后台跟林晨说:他在闻汤。
林晨回了一条:让他闻。
第三道菜,松露回锅肉。赵维吃这道菜的时候放慢了速度。他先夹了一片回锅肉,没有蘸酱,原味吃了一口。然后夹了第二片,蘸了一点底下的酱汁,又吃了一口。最后他把黑松露片单独挑出来,放在舌头上,闭了一下眼。
杨帆看到他闭眼,想起上周那位陈建明也是这样——吃到真正满意的东西才会闭眼。但赵维的闭眼跟陈建明不一样。陈建明的闭眼是享受,赵维的闭眼是在品评。享受是放松的,品评是专注的。
第四道菜,冰粉鹅肝。赵维吃了一口鹅肝,停了两秒,然后吃了一口冰粉。他放下叉子,拿起酒杯,把雷司林的最后一口喝完。
然后他叫杨帆过来。
你们的冰粉是手搓的?他问。
是的。杨帆说。
用什么籽?
假酸浆籽。
赵维点了一下头。我吃出来了。假酸浆籽搓出来的冰粉气泡更细,口感更滑。市面上大部分冰粉用的是薛荔籽,气泡粗,口感偏硬。你们用的是假酸浆籽,成本高了两三倍,但口感好了不止两三倍。
杨帆没有接话。她知道赵维不是在等她回应,他是在确认一个细节。
赵维掏出手机,在备忘录上又打了几个字。然后把手机放进口袋,站起来。
买单。他说。
赵维走了之后,杨帆给林晨发了一条长消息:
赵维来了。点了四道菜两瓶酒,吃了两个小时。每道菜都拍照记录,在手机备忘录上打了字。他问了冰粉的原料,能分辨假酸浆籽和薛荔籽的区别。吃法专业,品评专注,不是普通食客。预计会写文章。
林晨回了一条:正常等。
他说的正常等,意思是不要主动去联系赵维,不要问他会怎么写,不要给他发消息问反馈。文章出来之后再看。
等了五天。
第六天的下午,杨帆在手机上刷到了赵维的文章。发在《食尚》杂志的微信公众号上,标题是:
《深圳湾的餐厅——评晨枫·雅》
杨帆把文章转发给了林晨。
林晨在办公室里,花了十五分钟把这篇文章读了两遍。
文章的开头写的是深圳。
深圳是一座快的城市。快到什么程度?你站在深圳湾万象城的门口,看往来的人流,十个人里有八个在走,两个在小跑。他们跑着去上班,跑着去开会,跑着去吃饭。吃饭也是快的——从坐下到吃完,三十分钟以内。吃完跑着去下一个地方。
但深圳湾最近开了一家餐厅。不是名字叫,是它让你慢下来。
林晨继续往下读。
赵维没有一上来就写菜。他先写了空间——进门的第一感觉不是,是。不是那种刻意的安静,没有背景音乐,没有香氛,只有海风从窗缝里透进来,和远处深圳湾大桥上的灯光。灯光很暗,暗到刚好能看清盘子里菜的颜色。这种暗不是为了遮掩什么,是为了让你把注意力放在食物上。
然后他写菜。
写花椒和牛肋条那一段,杨帆之前已经猜到了方向,但赵维写得比杨帆想象的更深:
花椒和牛肋条这道菜的关键不在于花椒,在于时间。和牛肋条低温慢煮六小时,纤维已经完全松散,入口即化不是夸张,是事实。但真正让这道菜跟别家不同的是花椒的下法——花椒油在收汁的最后一刻才下,不是一开始就放。这意味着花椒的麻感不是从表面来的,是从肉的油脂里渗透出来的。你吃第一口的时候感觉不到明显的花椒,吃到第三口,麻感才从舌根升起来,像一场迟到的约会。
写松露回锅肉那一段:
回锅肉是四川人的家常菜。把回锅肉做到高端餐厅的菜单上,是一件冒险的事——你的客人里有四川人,四川人对回锅肉有肌肉记忆,任何一点偏差他们都会吃出来。晨枫·雅的回锅肉用了伊比利亚五花肉,这本身不是创新,深圳至少有五家餐厅这么做过。但晨枫·雅的创新不在食材替换上,在于最后那一片黑松露。松露的香气和郫县豆瓣的酱香之间有一个奇妙的张力——它们不打架,但也不拥抱。就像两个性格截然不同的人坐在同一张桌子上,各自说话,偶尔交叉。这种张力是这道菜的灵魂。
写冰粉鹅肝:
冰粉鹅肝是整份菜单的收尾。鹅肝煎至五成熟,外焦里嫩,油脂饱满。冰粉是手搓的,用假酸浆籽而不是市面上常见的薛荔籽,气泡更细,口感更滑。这两个东西放在一起,一个热一个冷,一个油腻一个清甜,形成了强烈的对比。但对比不是目的,对比是为了让鹅肝的油腻在冰粉的清凉里被化解。吃完这道菜,你的嘴里不会留下鹅肝的厚重,只会留下冰粉的余味。这是一个聪明的结尾。
文章的最后一段,赵维写的是人:
我在这家餐厅吃完了四道菜两瓶酒,全程没有被推荐任何菜品之外的消费,没有看到任何形式的营销推广,甚至连一张传单都没有。买单的时候,服务员没有说欢迎下次再来,只是轻声说了一句。
两个字比欢迎下次再来好在哪里?好在不催你。欢迎下次再来的意思是你走了我等你回来,有一种商业上的急切。的意思是你慢慢来,我不急。
这是一家不急的餐厅。在一个处处着急的城市里,不急是一种态度。
林晨读完,把手机放在桌上。
他没有说话。他在想赵维写的那句话——不急是一种态度。
这句话说到了他心里。他开晨枫·雅的时候,想的就是不急。不做广告,不赶翻台,不催客人走。每一道菜慢慢做,每一桌客人慢慢吃。高端餐厅的利润不在翻台率上,在客单价和回头率上。翻台率越高,服务越赶,体验越差,回头率越低。所以高端餐厅要慢。
但赵维把这个写出来了。写成了两个字——。
赵维的文章发出去之后,效果比陈建明的味觉地图大了十倍。
不是因为赵维比陈建明有名——味觉地图有十二万粉丝,《食尚》杂志的公众号有三十万粉丝,差距没有十倍。真正的原因是,赵维的文章被三个人转了。
第一个人是深圳一家生活方式类KoL,粉丝八十万。她在转发的时候写了一段话:深圳终于有一家不需要排队打卡、只需要坐下来好好吃饭的餐厅了。
第二个人是深圳一家财经媒体的编辑。他转发的时候写了一段话:从程序员到餐厅老板,这个人做的事比他的书有意思。
第三个人是赵维自己朋友圈里的一个美食评论家,叫周哲,在广州做美食节目,粉丝四十万。他转发了赵维的文章,加了一句话:有机会去深圳试一下。
三条转发,让晨枫·雅的预约电话在四十八小时内打爆了。
杨帆在第四十八小时统计了数据:两天内接到预约电话一百二十三个,其中有效预约八十七个(剩下三十六个因为日期已满无法安排)。八十七个预约排到了五周以后。
林晨看到这个数据的时候,没有高兴。
他给杨帆打了一个电话。
从今天开始,预约不超过一个月。他说。
什么意思?
意思是,如果预约排到了一个月以后,就告诉客人暂时排满了,留下联系方式,等下个月再约。不让预约排到一个月以后。
为什么?客人排到一个月以后也愿意等啊。
因为一个月以后的事说不准。林晨说。客人今天预约了五周后的位子,五周后他可能出差、可能加班、可能忘了、可能不想来了。到时候他不来,位子空了,就是浪费。还不如让他下个月重新预约,那时候他想来的意愿是真实的,不是冲动。
杨帆想了一下。好。预约最多排一个月。
还有一件事。林晨说。赵维的文章里写了一个细节——冰粉用的是假酸浆籽。这个细节不要对外说。
为什么?
因为这是我们的供应链信息。假酸浆籽的市场供应量不大,如果被同行知道了,他们会去抢同一个供应商。我们的成本会上升,供应的稳定性会受影响。
杨帆停了一下。他写出来的时候,你有没有觉得不高兴?
没有。林晨说。他写的是事实,我没有理由不高兴。但事实不等于全部。他写出来的部分是对的,没写出来的部分是我们的护城河。
那天晚上,林晨坐在书房里,把赵维的文章又读了一遍。
他注意到一个细节——赵维没有写酸汤东星斑的具体品评。他写了花椒和牛肋条、松露回锅肉、冰粉鹅肝,但酸汤东星斑只提了一句也点了酸汤东星斑,没有展开。
这说明什么?
说明酸汤东星斑没有让赵维想写。
四道菜里,三道让赵维写出了有细节的品评,一道只提了名字。在美食评论家的笔下,不写就等于不值得写。
林晨在笔记本上翻到那一页,在酸汤东星斑——记忆点不够那行字下面,加了一行:赵维未展开品评——需要调整。
然后他给林浩发了一条消息:酸汤东星斑要改。赵维没写这道菜。
林浩回了两个字:收到。
十分钟后,林浩又发了一条:我下周出三个新版本。
林晨没有回。他合上笔记本,走到窗边。深圳湾的夜色很深,远处的灯光像碎金子一样散落在水面上。
赵维写了一篇文章,让晨枫·雅的预约排到了五周后。但赵维没有写的那部分,才是林晨真正要关注的东西。
好评可以把你推高,也可以让你看不清自己真正的问题在哪里。酸汤东星斑,该改还得改。
第381章 预约爆满
赵维的文章发出去之后的第二周,晨枫·雅的预约系统崩溃了。
不是技术上的崩溃,是逻辑上的崩溃。
杨帆的本子上写满了预约记录,每一行都是客人名字、人数、日期、联系电话和来源。两周之前,这个本子还是半满的,每天的预约只有七八条。现在每天有三四十条,而且还在涨。
我已经拒了至少一半的预约。杨帆在周三的运营会上说。拒的原因只有两种:要么是那天已经满了,要么是排到了一个月以后。
一天能接多少条新预约?林晨问。
目前的有效预约,一天大约十五到二十条。但我能确认的只有八到十条——剩下的客人虽然留了联系方式,但到那天未必会来。
林晨在笔记本上算了一下。餐厅一天的接待能力是三十个位子。午餐二十个,晚餐三十个。按百分之十五的空座率算,每天实际接待四十二人。一个月一千两百六十人。预约排一个月,意味着一千两百六十人里有相当一部分要等。
问题不是等,是等不到。杨帆说,很多客人打来电话的时候已经知道了——这家店一位难求。他们的心理预期是等一周到两周,不是一个月。如果告诉他们要等一个月,有一部分人会放弃。
放弃就放弃。林晨说。
杨帆看了他一眼。你确定?
确定。林晨说,一位难求不是坏事。一位难求说明需求大于供给。需求大于供给的时候,你做的第一件事不是扩大供给,而是保证品质。
扩大供给的诱惑是真实存在的。
林枫在周四的下午来找林晨,带了一张纸。纸上画了一个简单的平面图,是晨枫·雅现有的布局——八个两人桌、六个四人桌、两个六人桌,加上吧台的四个位子,总共三十个位子。
如果把吧台延长两米,可以加六个位子。林枫指着平面图说。如果把角落的两个六人桌换成四个两人桌,可以加两个位子。加起来是三十八个位子,比现在多八个。八个位子一天多接待十二到十五人,一个月多四百人。
林晨看了平面图,想了一下。
不行。他说。
为什么?
加位子看着简单,账算下来就不划算了。翻台时间得压缩——现在客人平均用餐两小时,加了位子,服务员会有意无意地催人走。赵维写的那个,催一次就没了。出餐压力也扛不住。林浩现在四分钟一道菜,压到三分钟,摆盘的精细度就下来了。摆盘一下来,体验打折,口碑跟着崩。一位难求变成一位不来,那才是真亏。
林枫把纸折起来收进口袋。你说得对。但你知道客人在怎么评价我们吗?
怎么评价?
有人在大众点评上写了一条评论,标题是好吃但约不到。打四分,扣的一分是因为预约太难。还有人在小红书上发帖子,说为了吃这顿饭等了三个星期
三个星期算什么。林晨说。我在t厂的时候,一个好的产品上线要等三个月。三个星期就吃到一顿好饭,已经很快了。
林枫笑了一下。你不是产品经理了。你是餐厅老板。客人的耐心不是三个月,是三天。三天约不到,他们就去找别家了。
让他们找别家。林晨说。能去找别家的客人,不是我们的目标客人。我们的目标客人是愿意等三周来吃一顿饭的人。只有这样的人,吃完了才会真心觉得值,才会真心帮我们传口碑。
那你打算一直一位难求下去?
阶段性的。林晨说,赵维的文章带来的流量是脉冲式的,第一波最猛,后面会逐渐回落。一个月之后,预约会稳定在一个合理的水平。我们要做的是在回落之前把品质做到极致,让来的客人在回落之后还愿意来。
那如果一个月之后预约还是爆满呢?
那就在品质稳定的前提下,考虑加位子。但不是现在。
周五晚上,林晨在餐厅盯着数据。
今天满座。三十个位子全部坐满,平均客单价九百二十,是开业以来最高的一天。酒水营收占百分之二十八,菜品营收占百分之七十二。酒水占比比上周低了十个百分点,说明菜品本身的价值感在提升。
九点半,最后一桌客人走了。林晨走进厨房,林浩正在擦灶台。
今天出了几道菜?林晨问。
三十个位子,点单总量一百二十三道,人均四点一道。林浩说。松露回锅肉点了二十二份,冰粉鹅肝二十八份,花椒和牛肋条二十份。酸汤东星斑只点了六份。
六份?林晨皱了一下眉。
嗯。我换了新版本,酸度调低了,东星斑换成了石斑,口感更好。但点单率还是上不去。
为什么?
因为菜单上它的排名在第三位,而前两位已经是松露回锅肉和花椒和牛肋条了。客人点了两道主菜之后,第三道通常会选甜品。酸汤东星斑的位置很尴尬——不够重,也不够轻。
林晨想了一下。那把酸汤东星斑换成别的。
换什么?
你定。林晨说。你的菜,你说了算。但有一条——替换的菜必须有记忆点。赵维没写酸汤东星斑,说明这道菜没有让人想写的欲望。新菜必须有。
林浩停下擦灶台的手,想了几秒。
我有一个想法。他说。陈皮鲍鱼。
之前品鉴的时候评过分,八分。比松露回锅肉低半分。
我知道。但那是因为陈皮鲍鱼的摆盘没有到位。陈皮粉洒在鲍鱼上面,视觉上太素了。如果换成把陈皮磨成汁,用汁画一个弧线,再放一片薄荷叶在上面,视觉冲击就出来了。
你可以试试。
我明天试。林浩重新开始擦灶台。试完之后让杨帆和服务员都尝一遍,如果她们也觉得好,下周换上。
预约爆满带来的不只是客人的增加,还有供应商的压力。
高端食材跟快餐食材不一样。快餐的食材可以大量采购、长期储存、集中配送。高端食材不行——高端食材要鲜,要精,要随买随用。
林浩每天早上八点跟供应商对接,确认当天和第二天的食材到货情况。花椒和牛肋条用的汉源贡椒,每周只进一次货,每次五公斤。冰粉鹅肝用的法式鹅肝,每周进两次,每次十块。松露回锅肉用的黑松露,随行就市,价格波动大,有时候一块松露的价格比三份回锅肉的售价还高。
松露的价格这周涨了百分之十五。林浩在周一的食材对接会上说。再涨下去,松露回锅肉的成本就要超标了。
那怎么办?林枫问。
两个方案。林浩说。第一,涨价。松露回锅肉从一百六十八涨到一百八十八,涨二十块。第二,减量。每份松露的用量从三克减到两克,价格不变。
减量影响味道吗?林晨问。
影响。林浩说。但不是致命的影响。两克松露和三克松露的差别,大部分客人吃不出来。只有特别敏感的客人能分辨。
那就减量。林晨说。不涨价。
为什么?
客人来吃的是回锅肉,松露只是锦上添花。回锅肉是锦,锦不好,添再多花也没用。减一克松露,客人吃不出来。涨二十块钱,客人一定知道。
林浩想了一下。好。减到两克。
但是,林晨加了一句,减量是暂时的。等松露的价格回落了,恢复到三克。我们不因为成本上涨就永久降低品质。成本涨了我们扛,成本降了客人享。这才叫高端。
预约爆满的第三个星期,林晨发现了一个问题。
回头客的比例在下降。
第一周的回头客比例是百分之三十五,第二周是百分之三十,第三周是百分之二十六。三个星期下降了九个百分点。
这不是一个小数字。如果回头率低于百分之二十五,意味着每四个客人里只有一个是第二次来。剩下的三个是新的。新的客人在赵维文章的红利期结束后会减少,如果回头率跟不上,营收就会断崖式下跌。
林晨把杨帆叫到办公室。
回头率为什么在降?他问。
杨帆想了一下。新客人太多了。赵维文章带来的流量把回头客的比例稀释了——以前每天六到八个客人里有两三个回头客,比例自然高;现在三十个客人里五六个人是回头客,分母大了,比例就低了。再加上预约太难,想回头的客人约不到,试两次就放弃了。
新客人多不用管,红利期过后自然会恢复。预约难才是问题。林晨说。预约满了不可怕,预约流程让回头客约不到才可怕。
怎么解决?
给回头客留位子。林晨说。每天三十个位子里,留五个给回头客。回头客预约不需要排号,直接安排最近的日期。新客预约排号,按顺序等。
怎么定义回头客?
来过两次以上的客人。
杨帆点了一下头。好。我更新预约流程。
周五的晚上,林晨坐在餐厅入口的长凳上,看着客人一个个走进来。
六点整,第一桌客人到了。是一对年轻夫妻,女的穿着一条白色的裙子,男的穿了一件polo衫。他们走到前台,报了名字。杨帆查了一下记录,然后微笑着把他们引到靠窗的位子。
六点十五,第二桌。三个商务人士,西装革履,一看就是来谈事的。杨帆把他们引到角落的位子——角落安静,适合谈事情。
六点半,第三桌。一个中年男人一个人来的,坐在吧台。他翻开酒单,看了两分钟,点了一杯红葡萄酒和三道菜。
林晨认识这个人。他上周来过,上周也坐吧台,也点红葡萄酒和三道菜。这是他的第二次来。
林晨站起来,走回办公室。他在笔记本上写了一行字:
回头客留位制度,每天5个。从明天开始执行。
然后他又写了一行:
一位难求不是目的,让对的客人再来才是目的。
合上笔记本。窗外的深圳湾大桥亮着灯,桥上的车一辆接一辆地开过去。每一辆车都在赶路,每一辆车里的人都想快点到。
但林晨不想快。他想慢。
慢,才能做好。慢,才能稳。慢,才能让每一位客人走出餐厅的时候,闭一下眼。
第382章 连锁管理公司
周六下午,林晨在中央厨房的会议室里开了一场会。
这场会他酝酿了两周。会议室坐了八个人——林晨、林枫、林浩、杨帆、徐鹏、周小敏、小宇,还有阿伟。八个人把十平米的会议室挤得满满的,空调开到了最低还是有人额头冒汗。
林晨没有先说话。他站起来,在白板上画了一个图。
图的左边是五家快餐店的名字——中区店、南区店、cbd店、宝安店、龙华店。图的右边是晨枫·雅。中间画了一个圆圈,圆圈里写着两个字。
我们现在有六家店。林晨指着白板说。五家快餐,一家高端。六家店在用两套完全不同的运营体系——快餐用中央厨房的标准流程,高端用林浩的个人标准。两套体系跑在同一个品牌下面,但互相之间没有打通。
他画了两条线,从五家快餐店连到中央厨房,又画了一条线从晨枫·雅连到林浩。
现在的问题是,他停了一下,六家店已经超出了我一个人能管的范围。快餐五家店的数据我每天还在看,但看和管是两回事。看是发现问题,管是解决问题。我现在能看,但管不过来。
高端这边呢?杨帆问。
高端这边更麻烦。林晨说,杨帆你管前厅,林浩管厨房,但你们俩之间的协调靠什么?靠嘴说。杨帆你跟林浩说今天有三桌客人点了陈皮鲍鱼,出菜间隔要调,林浩你说收到,然后呢?然后你俩各自记在各自的笔记本上,第二天对不上。
杨帆想了一下。确实有这个问题。昨天我跟他说的出菜节奏,今天他又按他自己的节奏来了。
所以,林晨在白板上的圆圈里写了四个字——管理公司。
我打算成立一家公司,叫晨枫餐饮管理有限公司。这家公司不开店,只做管理。六家店的采购、品控、人事、财务、品牌,全部由管理公司统一管。
会议室里安静了几秒。
林枫先开口。管理公司和店铺的关系是什么?
管理公司是母公司,每家店是子公司。林晨在白板上画了六个小圆圈,连到中间的大圆圈。六家店各自独立核算,但统一管理。管理公司收每家店营收的百分之五作为管理费,用来覆盖总部的人力、系统、培训、品牌推广等费用。
百分之五够吗?周小敏问。
现在够了。林晨说。六家店月营收加起来大约两百七十万。百分之五是十三万五。十三万五够养一个总部——我、林枫、你、小宇、阿伟,加上管理公司的行政和财务。等店数多了,管理费的比例可以降到百分之三到百分之四。
那高端餐厅呢?林浩问。高端餐厅的管理模式和快餐不一样。
不一样。林晨说。所以管理公司下面要设两条线——一条是快餐线,一条是高端线。两条线的管理逻辑不同,但共享管理公司的后台——采购、人事、财务、品牌。
他在白板上画了两条平行线,一条写着晨枫快餐,一条写着晨枫·雅。两条线从管理公司出发,分叉,各自延伸。
快餐线的负责人是我和林枫。高端线的负责人是林浩和杨帆。两条线之间不交叉,但数据是共享的。快餐线的营收、成本、利润、翻台率,高端线的营收、成本、利润、客单价,全部在管理公司的系统里看得到。
会开到一半的时候,小宇举了手。
管理公司成立之后,我的角色是什么?他问。
林晨看着他。你是管理公司的数据总监。
数据总监?小宇愣了一下。
对。六家店的数据以后全部由你负责监控。快餐线的出餐速度、翻台率、会员复购率、每道菜的点单率和损耗率,高端线的客单价、出菜间隔、回头客比例、酒水占比、每道菜的点单率和满意度——所有数据每天汇总到你这里,你做分析,出周报。发现问题报给我,不要等我来问。
小宇想了一下。这和现在做的事有什么区别?
区别在于,现在你只是看数据,报数据。以后你要在数据里发现问题,提出解决方案。林晨说。比如,龙华店的调味偏差你发现了,但你只是报给我龙华店调味偏差。以后你要报的是龙华店调味偏差,建议林浩去巡店一次,时间建议安排在周三午市之后。发现问题只是第一步,提出解决方案才是完整的一步。
小宇点了一下头。明白了。
还有,林晨转向林浩,管理公司成立之后,你的角色也要变。
林浩看着他,没有说话。
现在你是六家店的主厨——五家快餐加一家高端。快餐的出品标准是你定,但日常执行靠你的五个徒弟。高端的菜品是你做,但出菜节奏和阿伟配合。管理公司成立之后,你的角色从六家店的主厨晨枫的技术总监。技术总监不管六家店的日常出品,管的是标准。标准写好了,流程跑通了,日常出品交给徒弟和阿伟。你只做三件事——研发新菜、制定标准、培训新人。
林浩沉默了几秒。那高端的出菜呢?每天晚上的菜不是我出?
高端的核心菜品由你出。林晨说。但不是所有菜。阿伟已经跟你学了两个月摆盘和出餐节奏,陈皮鲍鱼和冰粉鹅肝他已经能独立出了。松露回锅肉和花椒和牛肋条还是你出。以后每道菜都做成标准手册,阿伟能出的菜交给阿伟,你不能出的才你出。
为什么?
因为你不能把高端餐厅的全部出菜压力都扛在自己身上。林晨说,你扛得住一天,扛不住一年。你生病了呢?你请假了呢?你不在的那天,高端的客人就不吃饭了?标准化不是取代你,是让你的能力可以被复制。复制得越多,你的时间就越值钱。
林浩想了一下。好。但我有一个条件。
什么条件?
新菜的研发由我完全说了算。你提方向,但菜品怎么做、用什么食材、怎么摆盘,由我定。
本来就是这样。林晨说。你做菜,我算账。这是我们从第一天就定好的规矩。
管理公司要做的头一件事,是把财务理顺。
之前六家店的财务是混在一起管的。快餐五家店的营收、成本、利润全部汇入一个账户,高端餐厅的营收也进了同一个账户。支出也是从一个账户里出——房租、食材、工资、水电、维修,全混在一起。
周小敏之前提过好几次要分开核算,但林晨一直没动。原因很简单——六家店混在一起的时候,林晨可以在快餐的利润里补贴高端的亏损,不需要单独批预算。但这个做法在店数少的时候可以,店数多了就不行。一家店亏了,不知道是哪家亏的,亏在哪里,为什么亏。
从下个月开始,林晨在会上宣布,六家店的财务全部独立核算。每家店有自己的损益表、资产负债表和现金流量表。管理公司收百分之五的管理费,剩余的利润归各店。快餐线和高端线之间不互相补贴。
那高端的亏损怎么办?林枫问。第一个月亏十五万,第二个月可能还亏。高端线没有利润,管理费也收不出来。
亏损由管理公司承担。林晨说。管理公司的资金来源是快餐线的管理费。第一个月,快餐五家店的总营收大约两百万,管理费百分之五,就是十万。高端亏损十五万,管理公司贴五万。第二个月如果高端亏损缩小到十万,管理公司刚好打平。第三个月如果高端开始盈利,管理公司就开始有结余。
如果第三个月还没盈利呢?杨帆问。
那管理公司就继续亏。林晨说。但亏损的节奏必须是递减的。第一个月亏十五万,第二个月亏十万,第三个月亏五万。如果亏损不是递减的,说明高端的模型有问题,要停下来复盘。
递减到什么时候打平?周小敏问。
三个月。林晨说。三个月之内打平。打平之后开始盈利。盈利之后的管理费从百分之五提到百分之八。
百分之八会不会太高了?林枫问。
不高。林晨说。行业平均是百分之六到百分之十。我们百分之五起步,是给店铺留利润空间。等高端线跑通了,整体利润上来了,管理费提到百分之八是合理的。
财务理顺之后,接下来是品牌规范。
林枫在会上拿出了一份文件,封面写着晨枫品牌管理手册(草案)。
这是我上周写的。林枫说。手册里有三个部分——视觉规范、服务规范、出品规范。
他翻开第一页,视觉规范。
快餐线和高端线的视觉系统完全分开。快餐线用的是红色和灰色的组合,字体是思源黑体,Logo是两个字加一个枫叶图形。高端线用的是深灰色和金色,字体是思源宋体,Logo是晨枫·雅三个字加一条细线。两条线的菜单、名片、打包袋、围裙、工牌,全部按照各自的标准来,不能混。
为什么不能混?小宇问。
因为品牌。林枫说。快餐的品牌认知是快、便宜、好吃。高端的品牌认知是慢、精致、值。如果快餐的打包袋上出现了高端的Logo,或者高端的服务员穿了快餐的围裙,客人的认知就会混乱。Logo不是品牌,客人心里的印象才是。印象一旦混乱了,重建比新建还难。
林晨在旁边点了一下头。这正是他想说的话。
林枫翻到第二页,服务规范。
快餐线的服务规范是三个字——快、准、稳。快是上菜快,准是点单准,稳是出品稳。高端线的服务规范也是三个字——但不一定是哪三个字。
你定。林晨说。
杨帆在旁边开口了。我有三个字。
所有人都看向她。
留、白、雅。杨帆说。留,是留白。服务不要过度,不要推销,不要催促。客人需要的时候出现,不需要的时候消失。白,是干净。桌面干净,餐具干净,空气干净,连说话的声音都要干净——不大声、不急促、不带情绪。雅,是优雅。从进门到出门,每一个环节都要让客人觉得舒服,不是被服务的舒服,是自己待着的舒服。
林晨想了一下。这三个字比我想的好。
不是我一个人的想法。杨帆说,是我在瑞吉酒店的时候总结的。高端服务做的是减法,不是加法。减掉多余的动作,减掉多余的客套,减掉多余的打扰。留下的才是好的。
林枫在白板上写了三个字:留、白、雅。然后在下面又写了三个字:快、准、稳。
两条线的服务规范,两套完全不同的逻辑。
财务和品牌定下来,还有一个缺口——人。
之前六家店加上中央厨房,总人数是四十七人——五家快餐店每家七人,高端餐厅十二人,中央厨房五人。管理公司成立之后,需要增加三个岗位:财务一人,行政一人,品牌运营一人。
财务我来找。周小敏说。我认识一个做餐饮财务的,之前在海底捞华南区做过成本核算。
行政呢?
行政可以在招聘网站上招。林枫说。要求不高,做过餐饮行政就行。
品牌运营呢?林晨问。
品牌运营我有一个想法。林枫说。不招全职,招兼职。品牌运营的工作量不大,主要是维护大众点评、小红书、微信公众号。这些事不需要一个全职的人来做,一周十个小时够了。找一个懂社交媒体的兼职,月薪三千到四千。
林晨想了一下。品牌运营先不招。我们自己管。大众点评我来看,小红书你来发,微信公众号周小敏来写。等量大了再招人。
会开完已经晚上八点。林晨让其他人先走,他一个人留在会议室里。
他坐在折叠椅上,看着白板上的图。六家店,两条线,一个管理公司。这是他从程序员转型做餐饮以来,画的最大的一个架构图。
在t厂的时候,他画的是系统架构图——服务器、数据库、负载均衡、缓存层、消息队列。每一层都有自己的逻辑,每一层之间的接口都有明确的定义。现在他画的是组织架构图——快餐线、高端线、管理公司、财务、行政、品牌。每一条线都有自己的逻辑,每一条线之间的接口也需要明确的定义。
管理公司和店铺之间的接口是什么?是管理费。店铺和管理公司之间的接口是什么?是数据。管理公司看得见每家店的数据,才能管得好。看不见数据,管理公司就是一个空壳。
他站起来,又看了白板一眼。管理公司能跑起来,说到底就两样东西——每店的数据必须透明,出品标准必须统一。快餐线和高端线是两套逻辑,但只要品牌不串,六家店就能管成一个整体。他合上笔记本,关了灯,走出会议室。中央厨房的走廊很安静,只有冷库的压缩机在嗡嗡响。他推开门,走到停车场,掏出车钥匙。
手机震了一下,是苏婉发来的消息:会开完了?
开完了。
结果怎么样?
管理公司成立。六家店统一管理,两条线独立运营。
听起来像你在t厂做的项目。苏婉回了一条。
林晨笑了一下。他发动车,开出了停车场。深圳湾的夜色从车窗外滑过去,摩天大楼的灯光在水面上拉成长长的线。
他想起在t厂的时候,每次做完一个系统架构设计,陈博士都会问他一个问题:这个架构能撑多大规模?
他当时的回答是:撑到下一个架构升级之前。
现在的答案也差不多。管理公司的架构能撑六家店,可能能撑十家店。但如果开到二十家、三十家,这个架构就要升级。不过那是以后的事。现在要做的,是把六家店管好。
车开到小区门口,他停了一下。手机又震了,是杨帆发来的消息:林总,今天有一个客人留了一段话。
什么话?
他说:我在深圳吃过很多餐厅,但只有你们家让我觉得时间是慢的。
林晨看了这条消息,想了一下,回了两个字:
记住。
他收起手机,把车开进地下车库。电梯里只有他一个人,他从b2按了17楼。电梯门合上的时候,他在电梯的镜面里看到了自己的脸。
三十八岁的脸。比三十五岁被裁的时候胖了一点,比在t厂写代码的时候黑了一点。额头上有两条纹路,是这两年操心操出来的。但眼睛比以前亮了,嘴角比以前松了。
管理公司。两条线。一个品牌。
他从程序员到餐饮人,用了三年。从一家快餐店到六家店,用了三年。从六家店到管理公司,用了三个月。
速度不快,但方向是对的。
电梯到了17楼。门开了,他走进走廊,掏出钥匙开门。苏婉在客厅里看书,乐乐已经睡了。客厅的灯很暗,暗到刚好能看清书上的字。
他换上拖鞋,走到沙发旁边坐下来。
你看起来没那么紧张了。苏婉说。
是吗?
嗯。之前你每天回来都要看半小时数据。今天你回来先喝了一杯水。
林晨低头看了看手里的水杯。他甚至不记得自己倒了水。
管理公司成立了。他说,六家店,两条线,一个品牌。
听起来像又开了一家公司。
不算又开了一家公司。林晨说,是把六家店的事串起来管。六家店是六个点,管理公司是串点的线。点没连成线的时候,每个店各管各的,信息不通,标准不一,问题也看不到。连成线之后,六个点就是一个整体。
苏婉合上书,看着他。你在t厂做系统架构的时候,是不是也是这样说的?
林晨想了一下。差不多。只不过那时候管的是服务器,现在管的是餐厅。服务器不会说话,餐厅会。
苏婉笑了一下。餐厅会说话?
客人说的话,就是餐厅在说话。林晨把水杯放在茶几上。今天有一个客人说,他在我们这里觉得时间是慢的。这句话比任何数据都有用。
为什么?
因为数据告诉你发生了什么,但客人的话告诉你为什么发生。客单价九百二,数据告诉你每个客人花了多少钱。但客人说时间是慢的,告诉你他为什么愿意花这么多钱。
苏婉看着他。你真的变了。
哪里变了?
以前你看数据,现在你看人。
林晨想了一下。数据也看,人也看。不矛盾。
苏婉站起来,关了客厅的灯。黑暗中只剩窗外的城市灯火。
早点睡。她说。明天还有六家店要管。
第383章 吸引投资
林晨是在一个周二下午接到那通电话的。
他当时正在中央厨房二楼的办公室里看晨枫·雅的首月数据。高端餐厅开业快两个月了,预约排到了三周以后,月营收四十八万,净利润刚转正——不多,三万出头。比起五家快餐店合计八十万的净利润,这三万像一根细细的线,但它是一个信号。高端餐厅的模型跑通了。
手机响的时候他没看,等响第二声才拿起来。屏幕上显示的是一个陌生号码,归属地北京。
林总您好,我是鼎峰资本的合伙人张明远。冒昧打扰了。
电话那头的声音很稳,带着北京人特有的那种慢悠悠的节奏感。林晨在脑子里过了一遍——鼎峰资本,听说过,做消费赛道的中型基金,管过几个餐饮项目的投资,出手不算大,但口碑还可以。
张总,您好。什么事?
是这样,我们最近在关注鹏城的餐饮赛道,看到了晨枫的报道和一些数据。说实话,从数据模型到中央厨房再到五家店加一家高端的布局,我们觉得这是一个很完整的商业故事。想跟您聊聊,看看有没有合作的机会。
林晨靠在椅背上,把手机换了只手。合作是指?
投资。我们初步估了一个估值范围,想当面跟您沟通。方便的话,我这周可以飞一趟深圳。
林晨没有立刻回答。他看了一眼电脑屏幕上的数据,然后看了一眼窗外。中央厨房的窗外是龙岗工业区灰色的铁皮屋顶,五月的阳光照在上面,反射出一种闷热的光。
可以见面聊聊。他说。但我先说清楚,见面对我来说只是聊天,不代表我要融资。
当然当然。张明远在电话那头笑了一下。见面嘛,先聊。
张明远是周四到的深圳。
他比林晨想象中年轻一些,四十出头,穿一件深蓝色的polo衫,灰裤子,棕色皮鞋,左手戴了一块浪琴。不是那种浑身logo的投资人,更像一个做实业的人。他带了一个助理,拎着一个黑色的公文包,包里装了厚厚一叠资料。
两人约在晨枫·雅见面。林晨选这个地方是有想法的——如果他要在自己的地盘上跟投资人聊天,那就在他看得见厨房、听得见出菜节奏的地方。
张明远进店的时候先看了一圈。他的视线从门口的指示牌划到吧台,从吧台划到墙面上的品牌语,再从墙面划到靠窗的位子。最后停在厨房出餐口上方那块小屏幕上——屏幕上显示着当前订单的排队顺序和预计出餐时间。
这个系统,是你自己写的?张明远指着屏幕问。
python?
后端python,前端React,数据库mySqL。
张明远点了一下头。他坐在靠窗的位子上,助理把资料从公文包里拿出来,摊在桌上。林晨看了一眼——最上面是一份行业分析报告,标题是《中国快餐连锁赛道2024-2026趋势研判》,第二份是鼎峰资本的投资案例集,第三份是一页A4纸的估值模型。
张明远没有急着翻资料。他先点了一杯美式,然后看着林晨说了一句:林总,我先说说我们为什么关注晨枫。
你说。
第一,数据驱动。你那个管理系统,我看了南方都市报那篇报道之后就一直想看实物。今天看到了,比我预期的更成熟。不是那种花钱买来的SaaS套件,是自己写的,写的人还在用,这个差别很大。
林晨没有接话。他叫服务员上了一壶茶,给自己倒了一杯。
第二,中央厨房加五家店的模型,是可复制的。五家店的出品一致性做到了,供应链理顺了,人培养出来了。再加五家店,理论上不需要重新走一遍从0到1的过程。
理论上。林晨重复了这两个字。
对,理论上。张明远笑了一下。但理论上的意思就是,我们也知道实际上没有这么简单。这也是我们想跟你聊的原因。
张明远让助理翻开第三份资料——那页A4纸的估值模型。上面写着一组数字:
晨枫餐饮管理公司 6家门店(5家快餐+1家高端) 年营收预估:2500万 年净利润预估:1000万 估值建议:5000万 投资方案:鼎峰出资1000万,占股20%
林晨看了一遍数字,又看了一遍,然后把纸放回桌上。
五千万估值。他说。
对。按年利润的5倍pE算,这个估值在餐饮赛道里不算高。张明远说。我们看过很多餐饮项目,有些估值开到利润的10倍甚至15倍。但我们做消费投资有一个原则——不追泡沫,给合理估值。五千万是合理估值。
林晨端起茶杯喝了一口,把杯子放回桌上。茶杯在桌面上发出一声轻响。
张总,我问你几个问题。
你问。
第一,这一千万,你希望我花在哪里?
扩张。开新店。你的模型已经跑通了,五家店的数据验证了模式。现在是该加速的时候。鹏城还有至少十个区域可以开店,深圳湾、前海、后海、坂田、光明,每个区域放一家店,你的年营收可以从两千五百万翻到五千万。
第二,如果我不扩张呢?
张明远停了一下。不扩张?
对。如果我就维持六家店,不开了。
那你的增长会停滞。投资人要的是增长,不是稳定。一个六家店的品牌,在投资人的眼里只是一个区域小连锁。但一个二十家店的品牌,就是一个可以讲故事的赛道龙头。
林晨在桌上轻轻敲了两下。他看了一眼窗外,深圳湾的海面在远处泛着光,天际线上有几只白色的鸟飞过。
张总,我再问你一个问题。
你说。
你投过多少餐饮项目?
张明远想了一下。七个。两个做火锅,一个做烧烤,两个做快餐连锁,一个做茶饮,一个做高端正餐。
成功了多少?
张明远没有立刻回答。他看了林晨一眼,然后伸手去拿桌上的美式咖啡,喝了一口。
两个火锅品牌跑出来了,一个已经开了八十家店。茶饮品牌还在烧钱,高端正餐在盈亏平衡线上挣扎。三个关了。
三个关了。林晨重复了一遍。关了之后呢?
关了就是关了。创始人还了部分钱,投资人认了亏。
关了的原因是什么?
扩张太快。张明远说这话的时候语气很平,像是在陈述一个他见过太多次的事实。三家店的时候模型很健康,拿到钱之后半年开了十家店,品控跟不上了,管理跟不上了,现金流断了。投资人追加了一轮,又撑了半年,最后还是关了。
林晨点了一下头。他把茶杯端起来又放下,没有喝。
张总,你的诚意我看到了。估值也合理,投资方案也清晰。但我暂时不需要这笔钱。
张明远看着他。是因为估值低?
不是。林晨说。是因为我不需要。
他站起来,走到吧台旁边拿了一叠纸巾回来。他把纸巾在桌上铺开,从口袋里掏出一支笔,在纸巾上画了几个数字。
六家店,月净利润八十万。五家快餐贡献七十七万,一家高端贡献三万。我的个人投资账户月收益三十到五十万,加上版税收入两到三万。算下来,我每个月可支配的现金是一百一十万到一百三十万。
他在纸巾上画了一个圆圈,把数字圈起来。
开一家新店的成本是多少?四十万。四十万包括装修、设备、押金和第一个月的运营资金。我一个月的现金流够开三家新店。我不需要投资人的钱来开店。
张明远看着纸巾上的数字,沉默了几秒。
你算得很清楚。
我本来就是靠算账吃饭的。
那你有没有想过,投资不只是钱的问题?张明远把身体往前倾了一下。投资带来的是资源、渠道、人脉。鼎峰投过七个餐饮项目,我们认识做供应链的人,认识做选址的人,认识做品牌的人。你拿我们的钱,不只是拿钱,是拿我们背后的整个网络。
林晨想了一下。我知道。但我现在的阶段,资源不是瓶颈。管理才是。
管理?
对。管理。林晨把笔放下,看着张明远。五家店的时候,我管得过来。我每周去每家店蹲半天,出品、服务、动线、成本,每一样我都能看到。十家店的时候呢?我每周只能去每家店蹲两个小时。二十家店的时候呢?我可能一个月才能去一次。到那个时候,不是钱能解决的问题,是管理的问题。管理跟不上,开多少家店都是给市场送钱。
张明远听完没有说话。他端起美式又喝了一口,放下杯子的时候手指在杯壁上轻轻敲了一下。
你的意思是,你现在不想扩张?
不急。时候没到。林晨说。五家快餐加一家高端,模型跑通了,利润是实的,现金流是稳的。我现在最应该做的是把六家店的运营做到极致,而不是急着开第七家。
那什么时候会考虑融资?
等管理跟得上的时候。
张明远点了一下头。他把纸巾上的数字看了一遍,折起来放进了公文包里。
林总,我回去之后会写一份正式的投资意向书。估值和方案不变,有效期六个月。你什么时候想好了,随时联系我。
林晨说。
他把张明远送到门口。两人握了手。张明远上车之前回头看了一眼晨枫·雅的招牌,灰色石墙上嵌着晨枫·雅三个字,鎏金的字体在下午的阳光里微微反光。
好餐厅。张明远说了一句,然后上了车。
晚上回家,林晨把今天的事跟苏婉说了。
苏婉正在厨房里给乐乐热牛奶。她把牛奶倒进锅里,开了小火,用木勺慢慢搅。她听完之后没有立刻说话。
你觉得他给的估值合理吗?她问。
合理。林晨坐在厨房的凳子上。五千万,按利润5倍pE算,在餐饮赛道是公允的。
那一千万呢?你真的不需要?
林晨想了一下。不是不需要。是不急。
苏婉把牛奶倒进杯子里,端给在客厅写作业的乐乐。她走回来,靠在厨房门框上。
你想过没有,她说,你现在拒绝了他,六个月之后你改主意了,他的价钱还会是五千万吗?到时候店多了利润涨了,估值肯定也涨。现在拿一千万,感觉是让了两成,可这钱要是帮你早开了三家店,多赚了——你说这两成让得值不值?
林晨看了她一眼。你什么时候学的这些?
你每天晚上在书房看投资数据,我偶尔瞄两眼。苏婉笑了一下。看多了就知道了。
你说的有道理。林晨说。但有一点你没算进去——时间成本。开三家新店需要三到四个月的筹备期,筹备期间管理精力会被分散,六家店的出品可能受影响。出品受影响,利润就会下滑。利润下滑,估值就会打折。到时候不是五千万,可能连四千万都不到。
所以你的结论是?
我的结论是——不急。林晨从凳子上站起来,走到客厅。乐乐趴在茶几上写数学作业,铅笔在纸上沙沙响。他摸了一下乐乐的头,走到窗边。
窗外是深圳的夜景。万家灯火从楼群间透出来,像一张巨大的网,每一盏灯都是一个故事。
他不急。他见过太多因为急而死掉的生意。他做过程序员,写过无数行代码,他知道一个道理——系统没有跑稳之前,不要加负载。五家店加一家高端,是这个系统的当前容量。在这个容量上跑稳了、跑通了、跑出数据了,再加负载才安全。
张明远的投资意向书,他放在了办公桌的抽屉里。他没扔。留着。等哪天管理跟得上了,他会打开抽屉拿出那张纸,拨通张明远的电话。
但不是现在。
他从窗边走回来,在沙发上坐下来。苏婉在旁边看电视,乐乐在写作业。客厅很安静,只有电视的声音和铅笔写字的声音。
手机响了。是林浩发来的消息。
哥,明天晨枫·雅的午市预约满了,晚市还有两个空位。备料怎么安排?
林晨回了一条:按满客备料。空位留做walk-in。
他放下手机,看了一眼茶几上摊开的笔记本。笔记本上写着一行字:
等管理跟得上的时候。
这行字下面,他又写了一行:
先把六家店做到极致。
第384章 稳健发展
拒绝张明远之后的那一周,林晨做了一件事——他把六家店的运营数据全部重新跑了一遍。
他不看月报。直接调日报。从开业第一天到昨天,每一家店每一天的营收、成本、翻台率、出餐时间、客诉数、会员新增数、退单数,全部拉出来,排成表格,用颜色标注异常值。红色低于目标,绿色高于目标,黄色在临界线上。
中区店的数据最稳。开业两年多,从第一天的三千块到现在日均一万三,翻台率从3.2涨到4.5,表格拉出来一片绿,几乎没红过。南区店也差不多——日均一万二,翻台率4.3,有两个月的周末偏低,是深圳下了暴雨,没法算。这两家是老店,稳得像钟摆。
cbd店的数据最好看,也最紧张。日均一万四,翻台率4.6,出餐时间六分五十秒——五家店里最快。cbd的客群是金融白领,午休就四十分钟,从点单到吃完一秒都多不出来。团队适应了这个节奏,出餐快翻台快利润高,但林晨清楚,这种紧绷的状态容不得半点差错。
宝安店在爬。翻台率从3.4涨到4.1,出餐从九分钟降到八分钟。趋势对,还有空间。
龙华店最特别。翻台率3.7,出餐八分半,日均一万出头——却是成本最低、利润率最高的一家。林晨去蹲过半天,发现不是运营的问题,是位置偏,不在主干道上,靠社区客群和外卖撑着。社区稳定但增长慢,外卖利润薄但能引流。他在笔记本上写了一行:龙华店,先稳客单价,翻台率不急。
然后是晨枫·雅。高端餐厅看的是另一套指标——客单价、预约等位、复购。晨枫·雅的客单价从六百涨到了八百三,预约从一周排到三周,复购率百分之四十二。深圳高端餐饮的平均复购率是二十五到三十,四十二远远高于平均。
但他没高兴。
他把复购率拆开:第一次来的客人,百分之三十五冲着南都那篇报道,百分之二十是朋友推荐,百分之十五路过。冲着报道来的复购率最低,只有二十八;朋友推荐的最高,百分之六十五。
这说明报道带来的流量是一次性的。好奇心驱动的消费不会持续。真正持续的是口碑。
他在笔记本上又写了一行:晨枫·雅的长期增长靠口碑,不靠报道。出品的保障是林浩和团队。
周六上午,林晨在中央厨房开了例会。
例会是每两周一次,六家店的店长加林浩、林枫、小宇、老赵,一共十一个人。中央厨房二楼的会议室挤得满满当当,有人坐椅子,有人坐塑料凳,有人靠墙站着。
林晨站在白板前面,手里拿了一支红色马克笔。白板上画了六个方框,每个方框代表一家店,方框里写着这家店的核心数据。
中区店,日均一万三,翻台4.5,出餐七分钟。他用红笔在方框上画了一个圈。稳。不用动。
南区店,日均一万二,翻台4.3,出餐七分半。稳。不用动。
cbd店,日均一万四,翻台4.6,出餐六分五十秒。快。但要盯——出餐快不代表可以放松,cbd的客群对品质要求最高,一旦出品下滑,翻脸比翻台还快。
宝安店,日均一万零五,翻台4.1,出餐八分钟。在爬。继续观察。
龙华店,日均一万出头,翻台3.7,出餐八分半。偏。但利润率最高,模型健康,不急。
晨枫·雅,客单八百三,复购四十二,预约排三周。好。但要保持。
他画完六个方框,在白板最上面写了一行字:
稳健发展,不追求快速扩张。
十一个人看着这行字,没有人说话。
林晨转过身来。上周有人问我,为什么不再开店。五家快餐加一家高端,数据跑通了,模式验证了,为什么不加速?
他停了一下。
因为数据跑通了不代表管理跑通了。五家店的时候,我每周去每家店蹲半天,出品、服务、动线、成本,每一样我都能看到。但开到十家店的时候呢?我每周只能去每家店蹲两个小时。开到二十家店的时候呢?我一个月才能去一次。到那个时候,就不是你管店了——店管你。
他拿红笔在稳健发展四个字下面画了一道线。
从今天开始,我的要求是开更好的店。六家店,每一家店的出品要比上个月好,服务要比上个月好,成本控制要比上个月好。不追数字,追质量。
林浩坐在角落里,手里拿着一杯水。他听到出品要比上个月好的时候,点了一下头。
出品总监。林晨看着他。你说说看出品的事。
林浩站起来,走到白板前面。他从林晨手里接过马克笔,在白板上画了一张表。表的第一列是五家快餐店的名字,第二列是每家店的出品稳定性分数。
中区店,阿伟负责,出品稳定性百分之九十二。他在中区店旁边写了一个数字。南区店,小周负责,百分之八十九。cbd店,小杨负责,百分之八十七。宝安店,小志负责,百分之九十一。龙华店,小陈负责,百分之八十八。
他放下马克笔,看了一圈。
五个徒弟,三个在百分之九十以下。目标是全部达到百分之九十以上。小周差一个点,小杨差三个点,小陈差两个点。
差在哪里?林晨问。
小周的问题是回锅肉的酱料。他习惯多放半勺豆瓣酱,我纠正了三次,还在放。不是故意的,是手比脑子快,碰到酱料罐手就多了半勺的量。
怎么解决?
换勺。林浩说。以前酱料罐旁边放的是大勺,他用大勺舀酱料的时候总是多舀半勺。我让老赵换了一批小勺,一勺刚好是标准量。他现在舀一勺就是一勺,不需要手抖那一下。
林晨点了一下头。换勺比纠正习惯快。这是工程师思维——不改变人,改变环境。让人在环境中自然做出正确的选择。
小杨的问题是宫保鸡丁的花生。他炸花生的时候火候偏大,花生出锅的时候颜色深了半度。不是炸糊了,但颜色偏深之后,花生的口感会从酥脆变成硬,跟嫩滑的鸡丁搭在一起有偏差。
怎么解决?
减十秒。他以前炸花生是一分二十秒出锅,现在改成一分十秒。十秒的差别,视觉上几乎看不出来,但口感能感觉到。我让他炸了三锅,一分十秒出锅的花生,颜色浅了半度,口感从硬变回酥脆。
小陈呢?
小陈的问题是清蒸鱼。林浩说。他是粤菜出身,蒸鱼的火候本来很好。但他现在蒸的是龙华店的鲈鱼,跟他在广州蒸的鱼大小不一样,时间要调整。广州的鱼大,蒸八分钟。龙华的鱼小,蒸六分半。他一开始还是按八分钟蒸,鱼过了。我让他看了一下蒸柜的时间表,他改过来了。
林晨听完没有说话。他看了一眼白板上五个徒弟的分数,用红笔在百分之八十九和百分之八十八旁边各画了一个向上的箭头。
目标:下个月,五个徒弟全部达到百分之九十以上。
能做到。林浩说。
例会开完之后,林枫没有走。
他坐在会议室的椅子上,看着白板上的数字。等所有人都走了,他才开口。
你不着急?
不急。林晨在收拾笔记本。
那鼎峰的投资呢?真不考虑?
暂不考虑。
林枫想了一下。我看了你画的那几个方框。五家店的数据确实稳,但你有没有想过,如果有人模仿我们怎么办?
模仿?
对。模仿。你的模式不是秘密——数据驱动、中央厨房、标准化出品、品牌故事。这些别人都可以学。如果有人学了你的模式,拿了投资人的钱,一年开二十家店,把市场占了,你怎么办?
林晨停下手中的动作,看了林枫一眼。
你觉得这种事会发生?
林枫说。餐饮行业没有护城河。配方可以偷,模式可以抄,人可以挖。你唯一的护城河是执行速度。如果你的执行速度比对手慢,别人就会用钱砸市场,用速度换规模,最后把你挤出去。
林晨没有立刻回答。他在白板前面站了几秒,然后从口袋里掏出红笔,在白板最下面写了一行字:
速度不是护城河。品质才是。
护城河不是开店速度。他说。护城河是复购率。中区店复购率百分之七十二,cbd店复购率百分之七十八,晨枫·雅复购率百分之四十二。这些数字不是钱能砸出来的。客人回来不是因为我开了更多的店,是因为他上次吃到的菜跟这一次一样好吃。如果我一年开二十家店,出品稳定性从百分之九十掉到百分之七十,复购率从百分之七十掉到百分之四十,那些被投资砸进来的新客来了一次就不会再来。
林枫听完了,没有反驳。他站起来,走到白板前面,看了一眼那行字。
我理解你的意思。但我还是想提醒你一件事。
你说。
你做过程序员。程序员有一个毛病——追求完美。代码写到自己满意了才上线,功能打磨到极致了才发布。但做生意不是写代码。代码可以晚一天上线,市场不会等你一天。你在这里稳扎稳打的时候,别人可能已经拿了钱冲进来了。
我知道。林晨说。但我也知道另一件事——跑得快的人不一定是跑得久的人。
林枫看了他两秒,点了一下头。行。你是cEo,你说了算。
他走出会议室的时候,在门口停了一下,回头说了一句:但如果你想通了,随时告诉我。我跟你一起。
林晨在空荡荡的会议室里坐了五分钟。白板上的六个方框还在,红笔写的稳健发展,不追求快速扩张还在,五个徒弟的出品稳定性分数还在。他看着这些数字,像看一段已经跑完的程序。程序跑通了,数据验证了,下一步不加新功能。优化现有代码。
他站起来,拿起板擦,把白板擦干净。然后重新画了六个方框,在每个方框下面写了一行新字:
中区店:目标——翻台率从4.5提到4.7 南区店:目标——出餐时间从7分半降到7分钟 cbd店:目标——会员复购率从78%提到80% 宝安店:目标——翻台率从4.1提到4.3 龙华店:目标——日均营收从1万提到1.2万 晨枫·雅:目标——客单价从830提到900
六个方框,六个目标。每一个都是在上个月的基础上加一点。不多,就是一点。但六个月之后,这些一点会加成一大步。
他擦完白板,把马克笔放回笔槽里,走出会议室。楼下厨房的灯还亮着,林浩在灶台前教小周做回锅肉。换过小勺的酱料罐摆在旁边,小周舀酱料的时候不再多那半勺了。
林晨在厨房门口站了一会儿。火焰从灶眼里窜出来,蓝色中带着一点黄,刚好超过锅沿。
他不急。写代码的时候他也不急。代码写急了会出bug,生意做急了也会出bug。区别是代码出了bug可以回滚,生意出了bug只能关店。
他转身走出了中央厨房。外面是深圳五月的傍晚,天还没黑,工业区灰色的铁皮屋顶在夕阳下泛着橘色的光。远处的路上有几辆货车在慢慢开,像一群不着急的人。
不急。
第385章 员工持股
林晨是在一个很普通的下午想到这件事的。
那天他在中央厨房的办公室里看五家店的月度人事报表。报表是周小敏做的,Excel表格,每一行是一个员工,列了入职时间、岗位、薪资、考勤、绩效评分。他看了一遍,发现一个数据——五家快餐店加晨枫·雅,一共六十八个员工,入职一年以上的有二十三个人,半年到一年的有三十一人,半年以下的有十四人。
离职率呢?他翻了一下去年的数据。去年全年的离职率是百分之二十三。行业平均是百分之四十五。
百分之二十三已经算低了,但他不满意。
他翻到离职员工的明细,看了一下离职原因。排第一的是回老家,占了百分之四十。排第二的是薪资不满意,占了百分之二十五。排第三的是发展空间有限,占了百分之二十。
回老家这个他管不了。但薪资不满意发展空间有限这两个,他能管。
他合上笔记本电脑,靠在椅背上想了一会儿。窗外的阳光透过百叶窗,在桌面上投下一排横条的光影。
二十三。五家店加上晨枫·雅,只有二十三个入职一年以上的核心员工。这二十三个人里,有五个店长、五个主厨(林浩的五个徒弟)、两个副店长、三个前厅主管、三个后厨帮手、三个中央厨房的人,加上老赵。
如果这二十三个人里走了五个,晨枫的运营就会出问题。走了十个,就会伤筋动骨。
他拿出手机,给林枫发了一条消息:明天下午有空吗?想跟你聊一件事。
林枫秒回:什么事?
员工的事。
好。明天下午两点,中央厨房?
林枫来得比约定时间早了十分钟。
他推门进来的时候,林晨正在白板上画一个组织架构图。六个方框代表六家店,每个方框下面画了竖线,连着几个小圆圈,每个小圆圈代表一个关键岗位。店长、主厨、前厅主管、副店长——这些小圆圈是整个架构的节点,抽掉任何一个,架构就会在某个局部塌下来。
画什么?林枫走近看了一眼。
画谁不能走。林晨放下笔。五家快餐店加一家高端,核心员工二十三个。这二十三个人里,走了任何一个都会影响运营。走了三个以上,数据就会下滑。
林枫在椅子上坐下来,看着白板上的图。
你想聊什么?加薪?
不完全是。林晨在林枫对面坐下来。加薪能解决百分之二十五的薪资不满意,但解决不了百分之二十的发展空间有限。一个员工拿了更高的薪水,但看不到自己在公司里的未来,他还是会走。
那你想怎么解决发展空间
给他股份。
林枫愣了一下。股份?
对。晨枫餐饮管理公司的股份。
林枫看着林晨,表情从愣变成了想。你是说,把公司的股份分给员工?
是让员工持股。拿出百分之十做持股平台,核心员工以约定价格购买,分三年解锁。三年内离职的,股份按原价回购;三年之后解锁完成的,股份就是他的。
林枫想了一会儿。百分之十的股份,按鼎峰给的估值五千万算,值五百万。你要拿出五百万的股份给员工?
这五百万买的是什么?林晨说。归属感。
他把笔记本电脑转过来,给林枫看一张表格。表格上列了二十三个核心员工的名字、岗位、入职时间、当前薪资和持股建议比例。
店长每人百分之零点八,五个店长一共百分之四。主厨每人百分之零点六,五个徒弟一共百分之三。前厅主管每人百分之零点四,三个主管一共百分之一点二。副店长每人百分之零点三,两个副店长百分之零点六。中央厨房的三个核心岗位每人百分之零点四,一共百分之一点二。
他指着最下面的合计。百分之十点零。
林枫一个一个名字看过去。五家店的店长——中区店的老赵、南区店的小李、cbd店的小陈(兼副主厨)、宝安店的小志、龙华店的小周。五个徒弟——阿伟、小周、小杨、小志、小陈。前厅主管、副店长、中央厨房的人,每一个名字他都认识,每张脸他都能对上号。
你想过没有,林枫说,这些人拿到股份之后会怎么想?
会想这是自己的店。林晨说。他炒的每一盘菜、迎的每一位客人、管的每一笔账,是为了自己。
那你有没有想过,拿到股份的人跟没拿到股份的人之间会怎么想?二十三个核心员工拿了股份,另外四十五个人没拿到。那四十五个人会不会觉得不公平?
林晨说。所以持股计划分两步走。第一步,核心员工百分之十。第二步,非核心员工做期权池——达到业绩目标后以约定价格购买股份的权利。期权池占百分之五,分四年解锁。
林枫看了一会儿表格,合上笔记本电脑。
你什么时候开始想这个的?
昨天看人事报表的时候。林晨说。离职率百分之二十三,行业平均百分之四十五,我们已经算好了。但百分之二十三里面,有将近一半是因为薪资和发展空间走的。这些人可以用钱留住。涨薪是成本,每年都在涨。持股是投资,只付一次。而且涨薪留的人可能会因为更高的薪水走,持股留的人走的时候要丢掉股份。
你算过账吗?
算过。林晨打开笔记本电脑的另一个表格。百分之十的股份,按五千万估值,值五百万。但这五百万不用掏现金,是股份出让。公司不需要掏钱,我个人的持股比例从百分之六十降到百分之五十四,你从百分之二十五降到百分之二十二点五,林浩从百分之十五降到百分之十三点五。
你的股份降了六个百分点。林枫看着他。你确定?
确定。林晨说。六个百分点换二十三个核心员工的归属感,值得。而且股份不是分掉了就没有了。持股平台有表决权委托机制,核心员工持有的是经济权益,不是管理权益。公司的决策权还是在我们手里。
林枫沉默了一会儿。他站起来,走到白板前面,看了一眼组织架构图。图上二十三个小圆圈连着六条竖线,每条竖线代表一家店。他伸手在小圆圈上点了一下。
老赵。他说。中区店的店长。四十多岁,从第一家店开业就在。工资从四千涨到八千,但他去年提过一次想回老家。他老婆在湖南做小生意,让他回去帮忙。他没走,是因为在晨枫干得顺心。但如果他真的想走呢?涨薪能留住吗?
不一定。林晨说。但持股能让她多想一步——走了,股份就没了。三年的等待期,三年的归属感建设。三年之后,走不走的问题就不存在了——她根本不想走了。
林枫转过来。林浩呢?他百分之十五降到百分之十三点五。他同意吗?
还没跟他说。但我觉得他会同意。林晨说。林浩不是在乎那一点五个百分点的人。他在乎的是他手下的五个徒弟能不能稳定。小周差点被别的店挖走了,上个月有人给他开了一万二的月薪,比我们现在高两千。他没走,是因为林浩。但如果有人开一万五呢?一万八呢?持股不是给他多两千块钱的事。是给他在晨枫的未来。
林枫想了两分钟。他在会议室里走了两圈,最后在窗边停下来。
我同意。他说。但有一个条件。
什么条件?
持股计划要签协议。法律文件要写清楚,退出机制、回购价格、解锁时间、表决权委托,每一条都要写明白。不能口头说,不能含糊。你是cEo,但你拿出来的百分之十是三个人的共同股份,不只是你一个人的。
我已经让律师在拟了。林晨说。
持股计划的宣导会是在下周三开的。
六十八个人挤在中央厨房二楼的大会议室里,坐不下,有人站在门口,有人坐在楼梯上。林晨站在白板前面,手里没有拿笔。他穿了一件深灰色的polo衫,袖子挽到手肘,看起来不像一个在开会的老板,更像一个在讲技术方案的工程师。
今天跟大家说一件事。他开口了。晨枫餐饮管理公司要做员工持股计划。
底下有人小声议论。老赵坐在第一排,小李站在他旁边,阿伟靠着墙,小周坐在角落里翻手机。
持股计划的具体方案是这样的。林晨在白板上写了几个数字。公司总股本的百分之十,做员工持股平台。核心员工二十三个人,每人可以按约定价格购买一定比例的股份。购买价格按公司估值的五折计算——也就是说,如果公司值五千万,你们用两千五百万的价格买到一千万的股份。
底下安静了两秒。有人掰手指算数,有人掏手机按计算器。
五折?角落里有人嘀咕了一声。那得多少钱?
店长百分之零点八,主厨百分之零点六,前厅主管百分之零点四。林晨在白板上写下三行数字。零点八按五千万估值算,值四十万。五折就是二十万。
二十万我们也拿不出啊。后排有人说。
分期。林晨说。从工资里扣,每个月扣百分之十,扣三年。店长每月大概扣八百。三年扣完,股份解锁,就是你的。三年之内离职的,已付的部分按原价加利息退给你,股份公司回购。
底下又是一阵议论。有人小声说每月八百还行,有人在算自己能被排到哪个比例。
林晨在白板上画了一条时间线。起点写着第0年,终点写着第3年,中间有三个节点,每个节点标着解锁1/3。
第一年解锁百分之三十三,第二年三十三,第三年三十四。全部解锁之后,你可以继续持有,也可以让公司按当时的估值回购。
他放下笔,看着底下六十八个人。三年后如果公司估值翻了一倍,你的股份也翻一倍。翻了三倍,你的股份也翻三倍。你不是在给老板打工——你是在给自己打工。
会议室里很安静。六十八个人看着白板上的数字和线条。没人鼓掌,也没人反对。有几个人的眼神变了。
老赵站起来。他声音不大,但很清楚。
林总,我算了一下。他说。店长百分之零点八,按五千万估值值四十万,五折二十万,分三年,每年六万七,每月扣八百。这个账对吗?
那如果三年后估值跌了呢?
有保底。林晨说。如果估值低于你买的时候,公司按你购买价加年化百分之五的利息回购。最坏的情况,你拿到的利息比银行高。
老赵点了一下头,坐下来。旁边有人凑过去小声问了句什么,老赵低声回了一句,那人若有所思。
小李举手。林总,服务员和帮厨呢?
核心员工持股,非核心员工期权。期权池百分之五,分四年解锁。方案下个月公布。
小李点点头。旁边一个帮厨用胳膊肘捅了他一下,压着声音问:那我们也能有?小李回头说了句下个月公布。
角落里,小周放下了手机。他看着白板上的数字,嘴唇动了一下。
林浩站在最后一排,靠着墙。他在看五个徒弟——阿伟在认真听,小杨低头记笔记,小陈举着手机拍照,小志在纸上画数字,小周在发呆。
林晨顺着林浩的视线看过去。
小周。
小周抬起头。
上个月有人给你开一万二的月薪,你没走。林晨的声音不大,但每个人都能听见。我知道。林浩也知道。你留下来不是因为薪水,是因为你觉得在晨枫能学到东西。持股不是给你加钱,是让你觉得晨枫也是你的。
小周低下头,看了一眼自己的手。那双手在灶台上翻了无数个锅,切了无数刀菜,在酱料罐旁边多舀了无数次半勺豆瓣酱。现在勺子换了小的,手还是那双手。
林晨转向所有人。
持股计划是约定。你们出时间、出精力、出技能,公司出股份、出平台、出未来。三年后你们手里的股份是你们自己的。你们不是在给林晨打工,不是在给林枫打工,不是在给林浩打工——你们是在给自己打工。
他说完,在白板上写了四个字:
晨枫,是家。
持股计划签字是在一周后。
二十三个核心员工里,二十一个签了。有两个没签——一个是宝安店的帮厨老周,他说明年想回老家,持股计划对他没有意义;另一个是中央厨房的配菜员小郑,她说手头紧,分期付款的压力太大。
林晨没有勉强。他在持股协议的最后加了一条:员工可以在计划开始后的任何时间选择加入,但一旦加入,三年的等待期从加入时间开始计算,不从计划启动时间开始算。
小周签了。他签字的时候手有一点抖。签完之后他把协议放进文件袋里,文件袋上面写着他的名字和持股比例——百分之零点六。
他看着那个数字,嘴唇动了一下。百分之零点六,按五千万估值算值三十万,五折十五万,分三年付,每年五万,每月扣工资百分之十,大概六百块。
六百块钱,买一个百分之零点六的未来。
他把文件袋放进背包里,走出会议室的时候,在门口停了一下。他回头看了一眼白板上的四个字——
晨枫,是家。
他嘴角动了一下,然后转身走了。
那天晚上,林晨在办公室里算了一笔账。持股计划让出的百分之十股份,相当于五百万的权益。这五百万不用掏现金,是未来的价值。如果公司估值翻一倍到一亿,这百分之十就值一千万。如果翻三倍到一亿五千万,这百分之十就值一千五百万。
但他知道,股份的价值不在于数字,在于人。二十一个人签了持股协议,意味着二十一个人在接下来的三年里不会离开晨枫。二十一个人的稳定性,撑住了六家店的运营。六家店的运营稳定,撑住了每个月两百万的营收和八十万的利润。
他用红笔在笔记本上画了一个等号:
百分之十的股份 = 二十一个人的三年 = 六家店的稳定 = 两百万的月营收。
这个等式比任何投资模型都简单,也比任何投资模型都可靠。
他合上笔记本,关了灯。办公室暗下来,窗外深圳的夜景亮着,万家灯火从远处透过来。
明天还有六家店要盯。中区店的翻台率要从4.5提到4.7,南区店的出餐时间要从七分半降到七分钟。
不急。一步一步来。
第386章 林浩的婚礼
林浩的婚期定在十月中旬。
不是林浩选的日子,是周小敏选的。她在手机上翻了一个月的黄历,把所有宜嫁娶的日子排出来,再跟店里六家店的排班表对照,最后选了十月十七号,周六。理由很实在——这个周六五家快餐店都不用备特别多的料,婚宴办完第二天还有时间休息,不耽误周一正常营业。
她选日子比排前厅班表还仔细。林浩在家庭群里发了一句。
周小敏回了一句:排班表排错了最多客诉,日子选错了要后悔一辈子。
林晨看到这条消息的时候正在中央厨房的办公室里看数据。他笑了一下,把手机放回桌上。这个姑娘确实适合管事,连结婚的日子都像排班一样严谨。
婚宴的地点没有悬念——晨枫·雅。
高端餐厅开业快半年了,是六家店里唯一一家不做快餐的店。三百平米,装修花了五百万,人均消费三百五到五百,每天只接待三十位客人,预约排到一个月以后。林浩每周去三次,做主厨出品,其余时间交给阿伟盯着。
把婚宴办在自家的高端餐厅,是林晨提的。林浩一开始不同意。他说在自己店里办婚宴,跟上班有什么区别?他办完婚宴还得检查后厨卫生。
你可以在你的店里结婚,也可以去外面的酒店结婚。林晨说,但在外面办,你管不了出品。在自己店里办,出品是你说了算。你选哪个?
林浩想了两秒。自己店里。
婚礼的准备从九月初就开始了。
周小敏一个人操持了百分之八十的事。她的执行力跟前厅管理能力一样强——列了一张Excel表,把婚宴的每一项工作拆成任务,标注了负责人、截止时间和完成状态。从请帖设计到桌椅布置到甜品选择,每一项都有进度条。
林浩负责出品。他花了两天时间定了菜单,一共十四道菜,从凉菜到甜品,川菜和湘菜各占四成,粤菜两成。凉菜是夫妻肺片和凉拌鸡丝,热菜是水煮牛肉、剁椒鱼头、清蒸石斑、宫保鸡丁、干锅花菜、铁板黑椒牛柳,汤是松茸炖鸡汤,主食是担担面和瑶柱蛋白炒饭,甜品是银耳红枣汤和杨枝甘露。
十四道菜?林晨看了菜单,数了一下。
十四道。林浩说,七道川菜、七道湘菜和粤菜。我跟小敏一人一半。
林晨没有再说什么。他看了一遍菜单,在心里过了一遍出菜节奏。十四道菜在高端餐厅里不算多,但婚宴的出菜时间跟平时不一样。平时是一桌一桌出,节奏可以慢。婚宴是十桌同时出,节奏要快。厨房要加两个人,出菜口要提前演练。
出菜节奏你排好了吗?
排了。林浩从口袋里掏出一张折了两折的纸,上面是他手写的出菜时间表。凉菜五分钟内出齐,热菜分三波——第一波水煮牛肉和剁椒鱼头同时出,间隔三分钟;第二波清蒸石斑和宫保鸡丁,间隔五分钟;第三波干锅花菜和铁板黑椒牛柳,间隔五分钟。汤在热菜第二波之后三分钟出。主食在汤之后五分钟出。甜品最后。
林晨看了一遍时间表,在两个时间节点上画了圈。清蒸石斑出菜之前要检查蒸柜温度,鱼上桌的时候鱼眼要凸出来。干锅花菜的上菜温度不能低于七十度,你准备几个干锅一起出?
四个干锅同时出。两个人翻锅,一个人看火候。
够不够?
够。干锅花菜是半成品,中央厨房配好了底料,店里只需要炒三分钟就出锅。四口干锅同时出,从翻锅到上桌不超过五分钟。
林晨点了一下头。他把时间表还给林浩,在笔记本上写了一行:婚宴出菜演练,提前两天。
婚礼前一周,苏婉带着乐乐去了晨枫·雅。
店里已经布置了大半。门口的灯箱换成了红色的字,大厅里摆了十张圆桌,每张桌子铺了红色桌布,桌上摆了喜糖和定制的小礼盒。舞台区搭了一个简单的花门,花是白色和粉色的玫瑰,搭配满天星和绿植。没有请婚庆公司,所有布置都是周小敏自己设计的。
小敏姐,这个花门是你做的?乐乐站在花门下面仰着头看。
周小敏蹲下来,跟乐乐平视,你觉得好看吗?
好看。但是为什么不用红玫瑰?结婚不是应该全是红色的吗?
周小敏笑了一下。红色太热闹了。白色和粉色更安静,适合吃饭的地方。
乐乐想了一下,点了点头。他虽然才十岁,但已经能听懂大人的意思了。
苏婉在旁边看了一圈布置,走到吧台前面停了一下。吧台上放了一排红酒杯,旁边是三瓶开了瓶醒的红酒。她拿起来看了一眼标签,放回去。
这些酒谁选的?
我选的。周小敏从花门旁边走过来,三款酒,一款配凉菜和头盘,一款配主菜,一款配甜品。第一款是新西兰的长相思,酸度够,配夫妻肺片和凉拌鸡丝刚好。第二款是波尔多的混酿,单宁中等,配水煮牛肉和剁椒鱼头。第三款是莫斯卡托,甜白,配银耳汤和杨枝甘露。
苏婉看了她一眼。你以前在川菜馆也管酒水?
不管。周小敏说,但结婚是一辈子的事,我不想让酒水拖后腿。这几款酒我提前一周买了回来,跟林浩一起试了三次才定的。
苏婉没有再问。她从包里掏出一个小盒子,递给周小敏。这是我跟林晨给你的。
周小敏打开盒子。里面是一条银色的项链,吊坠是一颗很小的星星。不是什么大牌,但做工很细致。
谢谢你,姐。周小敏把盒子合上,放在吧台下面。
别谢我。苏婉说,你嫁的是林浩,不是项链。
周小敏笑了一下,没有说话。
婚礼当天的天气很好。
十月中旬的鹏城,台风季已经过去了,天空很蓝,阳光透过晨枫·雅的落地玻璃照进来,把整间餐厅照得透亮。门口的字在阳光下面红得很正。
林浩穿了一身深灰色的西装,是他自己选的。没有领带,衬衫领口扣了最上面一颗,跟订婚那天一样。他站在花门旁边,脸上没有紧张,也没有兴奋,就是很平静。像他在厨房里等出菜一样平静。
周小敏穿了一身红色的旗袍,不是婚纱。这是她跟林浩商量过的——在自家餐厅办婚宴,穿婚纱在后厨走不方便,旗袍更实际。她头发挽了一个髻,耳朵上戴了一对小银耳环,脖子上是苏婉送的银星星项链。
两人站在花门下面的时候,乐乐从人群中挤了出来,手里拿了一个红包。红包是他自己折的,上面歪歪扭扭写了四个字:浩叔新婚。
浩叔,新婚快乐。乐乐把红包递给林浩。
林浩蹲下来接红包,打开看了一眼。里面是乐乐攒了三个月的零花钱——一百二十七块五毛。硬币和纸币混在一起,叠得整整齐齐。
林浩看了两秒,抬头看林晨。林晨站在人群后面,没有说话。
谢谢乐乐。林浩把红包合上,放进口袋里。没有退还,也没有推辞。他知道这是乐乐的心意,退回去反而是不尊重。
婚宴十二点准时开始。
十桌坐了八十多个人。林家这边来了十五个人——林晨的父母、林旭一家三口、二叔一家、大伯一家、三婶带了孩子。周家来了十二个人——周小敏的父母、她姐姐一家、她弟弟一个人。剩下的全是晨枫的人——林枫带了老婆和孩子、小宇、阿伟、二徒弟小周、三徒弟小杨、四徒弟小志、五徒弟小陈、中央厨房的老赵和他的两个帮手,还有五家店的店长和几个干得久的员工。
林浩的妈坐在主桌上,穿了一件新棉袄,深红色的,袖口的线头已经剪掉了。她看着站在花门下面的林浩和周小敏,嘴角一直在动,但说不出话。林浩的爸坐在旁边,手里攥着一个小红包,指节发白。
周小敏的妈比林浩的妈更安静。她穿了一件蓝色的上衣,头发整整齐齐地别在耳后,手放在膝盖上,从头到尾没有多余的动作。她看了一眼自己女儿身上的旗袍,又看了一眼林浩身上的西装,然后把目光收回来,落在自己面前的碗筷上。
林晨坐在主桌的另一边,苏婉在旁边,乐乐坐在苏婉腿边。乐乐今天穿了一件白衬衫和深蓝色的裤子,头发梳得很整齐。他手里还拿着自己折的那个红包壳,刚才给完钱之后把壳留了下来,说要当纪念。
林枫当了司仪。他站在花门旁边,手里拿了一张纸,上面是他自己写的流程。他没有请专业司仪,因为专业司仪会搞很多煽情的环节,林浩不喜欢。林浩说,结婚就是结婚,不需要别人来煽情。
林枫清了清嗓子,说了一句:林浩、周小敏,今天结婚。大家吃好喝好。
八十多个人笑了一下,然后鼓掌。
没有交杯酒,没有切蛋糕,没有抛花球。就是林浩和周小敏站在花门下面,对着所有人鞠了一躬。然后林浩转身进了厨房。
十四道菜从厨房里一道一道地端出来。
凉菜最先上。夫妻肺片和凉拌鸡丝,两道凉菜摆在每桌的正中间,红油和花椒的香气在空气里弥漫开。林浩在厨房里亲自切的肺片和鸡丝,薄厚均匀,每片都带着红油的光泽。
然后是第一波热菜。水煮牛肉和剁椒鱼头同时出。水煮牛肉的辣油是滚烫的,浇在牛肉片上的时候滋滋响,辣椒和花椒的香味在整间餐厅里炸开。剁椒鱼头是林浩的拿手,鱼头对半劈开,铺满红色剁椒,蒸了八分钟出锅,鱼肉白嫩,剁椒鲜辣。
十桌的客人同时动筷子。林浩在后厨看着出菜口,每一道菜端出去的时候他都要自己检查一遍。摆盘、温度、分量,每一项都不能出差错。
这是他自己的婚宴。他不在别的地方结婚,不在酒店、不在教堂、不在任何他管不了出品的地方结婚。他在自己亲手打造的厨房里,用自己最拿手的菜,请最亲近的人吃一顿饭。
第二波热菜出来的时候,大厅里的声音明显变大了。清蒸石斑的蒸气从盘子里冒出来,鱼眼微微凸出,证明火候正好。宫保鸡丁的花生是刚炸的,咬下去嘎嘣脆,鸡丁嫩滑,干辣椒的香气裹着糖醋的底味。
第三波热菜是干锅花菜和铁板黑椒牛柳。干锅花菜的锅气很足,花菜边缘微微焦黄,五花肉片炒出了油脂。铁板黑椒牛柳上桌的时候铁板还在嗞嗞响,黑椒的辛辣味在空气里飘散。
汤是松茸炖鸡汤。松茸是林枫从云南直供的,鸡汤炖了四个小时,清澈得像水,但喝一口全是鲜味。
主食是担担面和瑶柱蛋白炒饭。担担面一人一小碗,面条筋道,芝麻酱和红油的比例刚好,花生碎撒在上面。瑶柱蛋白炒饭是粤菜做法,蛋白炒得细碎,瑶柱鲜香,米粒分明。
甜品最后上。银耳红枣汤是林浩妈以前做的那个味道,银耳炖到软烂,入口即化。杨枝甘露是周小敏的拿手,芒果的甜和柚子的酸搭在一起,西米q弹。
十四道菜上完,用了四十五分钟。出菜节奏跟计划的时间表差了不到两分钟。
吃到一半的时候,林浩从厨房里出来了。
他已经脱了围裙,换了洗手。他走到主桌旁边,先给他妈碗里夹了一块鱼,然后给周小敏的妈碗里夹了一块牛肉。两个妈各自看着碗里的菜,没有说话。
林浩的妈吃了一口鱼,点了一下头。周小敏的妈吃了一口牛肉,也说了一句。这是她们今天的全部评价。她们不是那种会夸人的母亲,她们是用吃完整碗饭来表示满意的人。
林旭在旁边吃得很欢。他一边夹菜一边跟旁边的堂姐说:浩子做的菜比我上次吃的还好,这水平开五星酒店都够了。
堂姐笑了一下:你以后多来吃就行了。
那不行。林旭摇头,这是高端餐厅,人均三百五,我吃不起。
你浩哥结婚你都不来捧场?
我来了我来了。林旭又夹了一块牛柳,就是这菜确实好吃。
乐乐坐在小桌上,面前是周小敏特意给他做的一份糖醋排骨和一碗担担面。他吃得很认真,排骨啃完一根又一根,面吃了一整碗。苏婉在旁边给他擦嘴,他头也不抬地说:妈妈,浩叔做的面比店里的好吃。
苏婉小声说:因为浩叔今天是专门给你做的。
乐乐想了一下,把最后一根排骨啃干净,抬头对厨房方向喊了一句:谢谢浩叔!
厨房里没有人回应。林浩已经回到灶台前了,他在检查下一波出菜的备料。即使是在自己的婚宴上,他也没有离开后厨超过五分钟。
饭后,林晨被林枫推到了花门下面。
你得说两句。林枫说。
我没准备。林晨说。
不用准备,说两句就行。你是他哥。
林晨站在花门下面,看着面前十桌的人。灯光暖黄色,照在每张脸上。林浩站在周小敏旁边,两人并排,林浩的手插在裤子口袋里,周小敏的手挽着林浩的胳膊。乐乐坐在小桌上,面前是一碗吃了一半的银耳汤。
林晨看了一圈,开口了。
林浩。他叫了一声。
林浩抬起头。
你记得三年前冬天,我在东莞的电子厂找到你的时候,你是什么样吗?
林浩没有说话。他知道那个冬天。他穿着蓝色工服,站在流水线旁边,一天干十二个小时,月薪四千二。他眼睛里没有光,手上的动作重复了一万遍,像一台不需要思考的机器。
你那时候跟我说,你想学做饭。林晨继续说,你说你在电子厂吃腻了盒饭,想做点好吃的给自己吃。
有几个在座的人笑了一下。林浩没有笑。他妈也没有笑。她低着头,看着面前空了一半的碗。
然后你去了厨师学校。然后你去了五星酒店。然后你做了晨枫的主厨。然后你有了五家店、一个中央厨房、五个徒弟。然后你遇到了小敏。然后你今天结婚了。
林晨停了一下。大厅里很安静。
我不知道该说什么。他说,我就想说——你做得好。
林浩的嘴角动了一下。他伸手搂了一下周小敏的肩膀,没有说话。
周小敏低了一下头,然后抬起来,笑了一下。
乐乐在小桌上举起手。我也要说!
林晨回头看了一眼乐乐。乐乐站了起来,端着碗银耳汤,大声说:祝浩叔和小敏姐姐永远幸福!
全厅的人都笑了。林浩也笑了,这一次笑得比订婚那天更自然。
林晨走回座位的时候,苏婉在旁边轻轻握了一下他的手。他看了一眼苏婉,没有说话。
他想起三年前那个冬天,在东莞的电子厂里看到林浩的第一眼。那时候林浩站在流水线旁边,手上的动作不停,眼睛看着传送带上的零件,目光没有焦点。
现在林浩站在花门下面,身边是周小敏,手里攥着乐乐给的那个红包。他的眼睛里有光了。灶火的光,安安静静的,暖的。
婚宴到下午三点结束。客人陆续离开,林浩站在门口跟每一个人握手道别。周小敏在旁边,一个一个叫名字,一个一个说谢谢。
林晨帮着收拾桌椅。他搬了两张圆桌回到原位,把桌布叠好放进布袋里。乐乐在旁边帮着收喜糖盒子,把没吃完的喜糖一颗一颗捡起来,放进口袋里。
爸爸,浩叔以后会一直开心吗?乐乐问。
林晨把最后一张椅子放回原位,看了一眼站在门口的林浩。林浩正侧着头听周小敏说什么,嘴角微微弯着。
会的。林晨说。
晚上八点,婚宴全部收场。
厨房收拾干净,桌椅归位,地板拖了三遍。花门没有拆,周小敏说留到明天再拆。
林浩坐在后厨的备料台旁边,手里拿着一杯白水,看了一眼手机上的时间。八点十五分。
周小敏走进来,在他旁边坐下。她换回了便装,头发散了下来,银星星的项链还挂在脖子上。
累了?她问。
不累。林浩说。出菜比平时轻松。
周小敏笑了一下。因为今天不用赶时间。
林浩想了一下,觉得她说得对。平时在店里,午高峰出菜是跟时间赛跑,每一分钟都卡着点。今天婚宴的出菜节奏是提前排好的,每道菜之间留了足够的间隔,他可以从容地把每一道菜做到最好。
你以后每年今天都给我做一顿饭。周小敏说。
十四道菜。
林浩看了她一眼。十四道太多了,做八道。
成交。周小敏站起来,把杯子放回吧台上。明天早上几点的料?
五点半。
我帮你。
林浩看着她走回前厅的背影,嘴角弯了一下。然后他站起来,走到冷库前面,开始检查明天的备料清单。
婚宴结束了。明天早上五点半,五家店的半成品要准时出库。日子还要过,菜还要炒,店还要开。
他把备料清单翻到下一页。在清单的最后一行,他加了一行备注:明天起,两人份早餐。
第387章 传承的意义
林浩的婚宴结束后的第二天,林家在晨枫·雅包了一个小厅,请两家人一起吃了一顿早饭。
不是什么正式的安排。是林浩的妈前一天晚上说的,明天早上一家人一起吃个饭。周小敏在旁边说,那就在店里吃,我让厨房准备。林浩说,不用准备,我自己做。
第二天早上八点,林浩站在厨房里做早餐的时候,林晨站在厨房门口看了他一会儿。
林浩穿了一身便装,灰色t恤和黑色运动裤,围裙还是那条用了两年多的蓝白格子围裙,左下角有一小块洗不掉的油渍。他正在煎鸡蛋,两只手各执一口锅,左边的锅煎溏心蛋,右边的锅煎太阳蛋。溏心蛋是给妈做的——妈喜欢溏心的,蛋黄要流,蛋白不能焦。太阳蛋是给周小敏的妈做的——亲家母不喜欢流心蛋黄,要全熟但不能老。
灶台上的火不大,蓝色中带着一点黄。林浩翻锅的动作很轻,鸡蛋在锅里翻了一个面,蛋白朝下蛋黄朝上,油花滋滋响。
林晨看了一会儿,转身去了前厅。
前厅的小厅里摆了两张圆桌。林浩的爸妈坐在一张桌旁,林旭一家三口坐在另一张。林枫带了老婆和孩子,坐在靠窗的位子。苏婉带着乐乐坐在林晨旁边。周小敏的爸妈来得晚一些,周小敏扶着她妈进来的时候,她妈手里拎着一个红色的塑料袋,里面装的是从老家带来的红薯干。
小敏说你们这里有红薯,但我说我们老家的红薯干跟这边的不一样。她妈把塑料袋放在桌上,声音不大,但说得很认真。你们尝尝。
林浩的妈站起来接过塑料袋,看了一眼里面的红薯干,说了一句:这个好,我老家也做这个。
两个妈对视了一下,笑了。
早餐是林浩一个人做的。八菜一汤,但不是婚宴那种规格,是家常菜。清粥四碗——白粥两碗、小米粥一碗、南瓜粥一碗。小菜六碟——酱黄瓜、腐乳、咸蛋、花生米、酸豆角、拌海带丝。热菜四道——葱油拌面、煎饺、蛋炒饭、蒸肠粉。汤一道——番茄蛋花汤。
菜不多,但每一样都做得细致。葱油拌面的葱油是现熬的,小葱在油里炸到微焦,焦香和油香混在一起,面条筋道,酱汁挂在面上。煎饺是林浩自己包的,皮薄馅足,底部煎得焦黄,一口咬下去汤汁迸出来。蛋炒饭用的是隔夜的冷饭,蛋花炒得碎,米粒分明,每一粒都裹着蛋香。蒸肠粉是周小敏做的,米浆在蒸盘上摊薄,蒸两分钟出锅,淋酱油,撒葱花,滑嫩得像豆腐。
乐乐坐在小桌上,面前是一碗白粥和一碟酱黄瓜。他吃了一口粥,抬头对苏婉说:妈妈,粥好甜。
那是米的甜味。苏婉说。你浩叔熬粥的时候放了很少的水,米多水少,粥就甜。
乐乐想了一下,又吃了一口。然后他把酱黄瓜夹起来,在粥里蘸了蘸,再放到嘴里。
好吃。他说。
苏婉笑了一下,没有说话。
林晨坐在大桌旁,面前是一碗小米粥和一碟花生米。他吃得很慢,一口粥一口花生米,像在数数一样。他看了一眼对面——林浩的妈在喝白粥,她喝粥的速度比所有人都快,三口喝完一碗,然后去添第二碗。林浩的爸在吃蛋炒饭,他吃蛋炒饭的时候不说话,眼睛盯着碗,筷子一夹一口,节奏很稳。
周小敏的妈吃的是南瓜粥,她吃得很慢,每一口都在嘴里含一会儿。她旁边的周小敏在给她夹菜,夹一块煎饺放在她碗里,她看了煎饺一眼,用筷子夹起来咬了一口,然后点了点头。
林浩在厨房里忙着出菜,周小敏在厨房和前厅之间穿梭,一道菜一道菜地端。林枫在旁边帮忙,他端不了菜——他端菜的手不稳——但他负责倒茶和收碗。
吃完早餐,两家人坐在小厅里喝茶。林浩的妈和周小敏的妈坐在沙发上,两个人从红薯干聊到了老家的菜地,从菜地聊到了养鸡,从养鸡聊到了过年要杀几只鸡。林浩的爸坐在旁边听,偶尔插一句我们那边的鸡比你们那边的大。周小敏的爸不说话,他在看窗外的深圳湾,看了很久,然后说了一句:深圳的海真大。
林旭在旁边笑了一下。叔,那不是海,是湾。海在那边。他指了指更远的地方。
差不多。周小敏的爸说。都是水。
上午十点,两家人在晨枫·雅门口拍了一张合影。
照片是林枫拍的。他让所有人站在门口的招牌下面,晨枫·雅三个字刚好在头顶。林浩和周小敏站在中间,林浩的妈站在林浩左边,周小敏的妈站在周小敏右边。两个爸站在最外侧。林晨和苏婉站在后排,乐乐站在苏婉前面。林旭一家三口站在林晨旁边,林枫的老婆和孩子站在另一边。
拍照的时候,乐乐突然说了一句:浩叔,你今天没有穿西装。
林浩低头看了一下自己的t恤。穿西装做饭不方便。
那你昨天为什么要穿?
因为昨天是结婚。林浩说。
那今天是什么?
今天是过日子。周小敏在旁边接了一句。
乐乐想了一下,点了点头。过日子不用穿西装。
所有人笑了。林枫按下快门的时候,所有人都在笑。
下午,两家人陆续离开了。林浩的爸妈坐林旭的车回老家,周小敏的爸妈坐周小敏弟弟的车去深圳北站。林浩和周小敏站在店门口送人,周小敏的眼眶红了一圈,但她没有哭。她是在后厨切菜的时候偷偷红了一圈,切完菜出来的时候眼睛已经恢复正常了。
店里安静下来之后,林晨和林枫坐在小厅里喝茶。苏婉带乐乐去了旁边的商场买文具——乐乐明天要上学,作业还没写完。
茶喝到第二壶,林枫开口了。
哥,你昨天在婚宴上说的那段话,妈回去之后一直在念。
哪段话?
就是你说的,几年前林浩还在迷茫那段。
林晨端着茶杯的手停了一下。他没有说话。
妈说,她没想到你还记得那时候的林浩。林枫的声音低了下来。她说她一直以为你不了解林浩。你在大厂做程序员,林浩在电子厂打工,两个世界的人。她觉得你帮林浩是因为他是你侄儿,不是因为你知道他是什么样的人。
林晨把茶杯放回桌上。我不是因为他是我侄儿才帮他的。
我知道。但妈不知道。林枫说。你昨天说的那段话,让她知道了。
林晨没有接话。他看着窗外,深圳湾的海面在下午的阳光下泛着银光,几只白色的鸟从海面上掠过。
林浩在电子厂那会儿,我去看过他一次。林晨说。那是冬天,东莞的冬天阴冷阴冷的。我在工厂门口等了十分钟,林浩穿着蓝色工服出来,手上全是机油,指甲缝里是黑的。他看到我的时候笑了一下,说哥你怎么来了。我说过来看看你。他带我进了工厂食堂,给我打了一份饭,饭里只有两片肉。他把自己的肉夹到我碗里,我说我不吃,他说你吃吧我天天吃。
林枫没有说话。
那时候他眼睛里没有光。林晨继续说。手上的动作是重复的,一天重复几千次,不需要思考,也不需要判断。他的脑子比手闲得多,但脑子闲着比手闲着更难受。他知道自己在浪费时间,但他不知道怎么离开。他不是不想走,是看不到路。
后来你给他指了路。
不是我指的。林晨说。是他自己走的。我只是告诉了他有几条路可以走,他选了厨师。从他进厨师学校那天开始,每一步都是他自己走的。切菜、颠锅、考厨师证、进五星酒店、出来做晨枫的主厨、带五个徒弟、做到出品总监。这些事我一件都没有帮他做。
林枫想了一下。但如果没有你,他连路都看不到。
林晨说。所以我昨天说那段话,不是因为他是我侄儿。是觉得——人有时候需要有人帮他看到路。看到路之后怎么走,是他自己的事。但得先看到。
他停了一下。
训练营、那本书、持股计划。说到底都是同一件事。
林枫看着他,没有马上接话。过了一会儿才说:但你有没有想过,谁来帮你看到路?
林晨想了两秒。苏婉。
还有呢?
还有我爸。林晨说。我当年被裁的时候,是他说的那句话——回来就行,家还在。那句话比任何模型都管用。
林枫没有再问。他站起来,把茶壶里的剩茶倒掉,重新烧了一壶水。
客厅很安静。水壶里的水在慢慢变热,发出细微的咕嘟声。窗外的阳光从百叶窗的缝隙里透进来,在桌面上画出一道道横线。
林晨靠在椅背上,看着桌面上的光影。三年前在东莞电子厂门口,冷风从铁门缝里灌进来。林浩穿着蓝色工服站在流水线旁边,眼睛里没有光。现在他站在花门下面,身边是周小敏。眼睛里有光了。
水壶里的水开了。蒸汽从壶嘴冒出来,像一股细小的白烟。
林枫倒了两杯新茶,递给林晨一杯。
他说。
我觉得持股计划是对的。
林晨看了他一眼。你昨天不是说你确定
昨天是在算账。林枫说。今天是在看人。
他把茶杯端起来,喝了一口。茶是热的,热气从杯口冒出来,模糊了他的视线一秒。
你帮林浩看到了路。现在你在帮晨枫的二十三个人看到路。
林晨没有说话。他端着茶杯,看了一眼窗外。深圳湾的海面在远处静静地铺开,阳光照在水面上,像无数细碎的金子。
他想起了一件事。
前天晚上,婚宴结束之后,他在收拾桌椅的时候,乐乐跑过来说了一句话。乐乐说:爸爸,浩叔以后会一直开心吗?
他当时说了什么来着?
会的。
他说了。
但他现在想改一个答案。会的。因为他找到了自己的路。
第388章 乐乐的成长
乐乐十岁了。
四年级开学那天,他背着书包站在学校门口,回头看了一眼苏婉。苏婉朝他挥了挥手,他点了一下头,转身走进了校门。书包比去年大了一圈,里面装了新课本、新文具盒、一个水壶和一本他偷偷塞进去的编程书。
苏婉看着他走进校门的背影,在微信上给林晨发了一条消息:他又把那本编程书带去了。
林晨回了一个字:
乐乐对编程的兴趣,是从去年暑假开始的。
那时候林晨在书房里跑模型,ipad上显示着一条条信号线——买入、卖出、持仓、止损,每一条线都在实时更新。乐乐从门缝里探进一个脑袋,看了两分钟,问了一句:爸爸,这些线是什么?
是股票的走势。林晨说。
股票是什么?
是一种投资。你买了一家公司的股票,就是买了这家公司的一小块。公司赚钱了,你的股票就值钱了。
乐乐想了一下。那你怎么知道哪家公司会赚钱?
看数据。林晨指了指ipad上的图表。这些线是数据画出来的。有些数据说明这家公司在变好,有些数据说明这家公司在变差。我写了一个程序来分析这些数据,程序会告诉我要买还是卖。
程序?你自己写的?
乐乐又想了一下。我能学写程序吗?
林晨看了他一眼。乐乐站在书房门口,书包还没放下,校服领子歪了,头发被风吹得有点乱。他的眼睛很亮,是真正在想事情的时候才会有的那种亮。
可以。林晨说。但有一个条件。
什么条件?
先写完暑假作业。
乐乐了一声,转身就跑。苏婉在客厅里叫了一句:先洗手!他没有听见。
那个暑假,乐乐用了一个月的时间看完了林晨给他买的一本《Scratch编程入门》。Scratch是麻省理工学院开发的儿童编程语言,用积木块拖拽的方式学编程逻辑,不需要打字,只需要把不同颜色的模块拼在一起。乐乐花了三天时间搞懂了循环,一周搞懂了条件判断,两周搞懂了变量。一个月后,他在Scratch上做了一个小游戏——一只小猫在屏幕上跑来跑去,碰到边缘就反弹,碰到苹果就加分,碰到炸弹就减分。
游戏做好的那天晚上,乐乐抱着ipad跑到林晨面前。爸爸你看!我做了一个游戏!
林晨放下手上的笔记本,接过ipad看了一遍。小猫跑得很流畅,碰撞检测做得没有bug,分数的计算也正确。他点了一下重新开始,游戏重新运行,还是流畅。
你怎么做碰撞检测的?他问。
就是判断小猫的坐标和苹果的坐标有没有重叠。乐乐说。重叠了就是碰到了,碰到就加分。炸弹也一样。
林晨看了他三秒。你怎么知道坐标重叠的?
你那本书上写的。乐乐指了指书架上那本《Scratch编程入门》。第四章第三节,碰撞检测。我看了三遍才看懂。
林晨把ipad还给乐乐,没有说话。他在心里算了一下——四年级的孩子,一个月看完一本编程入门书,做了一个有碰撞检测的小游戏,逻辑没有bug。这个速度不算快,但也不慢。更重要的是,他是自己看懂的,没有让林晨教。
你接下来想做什么?林晨问。
我想做一个小猫跑迷宫的游戏。乐乐说。但是迷宫比小猫跑来跑去复杂,我还没想好怎么做。
你先想。想不明白再来问我。
乐乐抱着ipad跑回了自己的房间。苏婉从厨房出来,看了一眼乐乐的背影,又看了一眼林晨。
你让他学编程?
他自己要学的。
他才十岁。
十岁可以学了。林晨说。我当年学编程也是十岁左右,在学校的电脑房里看同学写bASIc,回家之后自己在纸上画流程图。
苏婉没有再说什么。她回到厨房,继续做饭。
四年级上学期,乐乐在学校的表现一直很稳。语文中上,数学上等,英语中等偏上。苏婉每次开家长会回来都说,乐乐的语文老师说他作文写得好,数学老师说他解题快但有时候跳步骤,英语老师说他发音准但词汇量不够。
林晨对这些评价没有太在意。他在意的是另一件事——乐乐放学之后做什么。
每天下午四点半放学回家,乐乐的第一件事是写作业。写完作业大概五点半,然后他会在自己的房间里待到七点吃晚饭。这一个半小时,他有时候看书,有时候画画,有时候玩ipad上的游戏。但从暑假之后,这一个半小时里的游戏时间逐渐被编程时间替代了。
有一天林晨路过乐乐的房间,看到他坐在书桌前,ipad上不是Scratch而是python的教程页面。他停下来看了一会儿。
乐乐在学python。
不是林晨教的,是他自己找的。他在Scratch上做了三个游戏之后,觉得积木块拖拽的方式太限制了——他想做更复杂的东西,但Scratch的模块不够用。于是他在ipad上搜编程怎么学,搜到了一个python入门教程,就开始看了。
林晨站在门口看了五分钟。乐乐的ipad上是一个编程教学网站,白色的背景上写着黑色的代码。他看得很认真,一边看一边在纸上抄代码。抄完一段代码之后,他在ipad的编程模拟器里运行了一遍,屏幕上出现了一行字:hello, world!
乐乐没有笑。他盯着那行字看了两秒,然后继续看下一段。
林晨走开了。他没有打扰乐乐。
十月底,学校发了一个通知——鹏城市青少年编程竞赛,面向全市小学四年级以上学生,分为Scratch组和python组。竞赛包括初赛(线上答题)和决赛(现场编程),决赛前三名有奖杯和证书。
乐乐回家的时候把通知拍了下来,发给林晨看。
爸爸,我想参加这个比赛。
你想报哪个组?
python组。
林晨想了一下。python组是四年级以上的,你的python学了多久?
两个月。
两个月。林晨重复了一遍。你知道python组的决赛题目是什么水平吗?
不知道。乐乐说。但我看了一下去年的初赛题目,大部分我能做。
林晨拿过ipad,打开了竞赛官网的历年题目。去年的python组初赛是二十道选择题和五道编程题,选择题考的是编程基础——变量、循环、条件判断、函数定义、列表操作。编程题考的是逻辑——用python写一个程序,解决一个具体问题。
他看了一遍题目,然后看了一遍乐乐。
你做一下去年的初赛题。
现在?
现在。
乐乐坐在书桌前,花了四十分钟做完了去年的初赛题。选择题全对,编程题做了四道,第五道做了一半——他卡在一个列表排序的问题上,不知道python的sort函数可以传key参数。
林晨看了一遍他的答案,在最后一道题旁边写了一行:sort(key=lambda x: x[1])。
这个是什么意思?乐乐问。
sort是python的排序函数。你传一个key参数进去,告诉它按照什么规则排序。lambda是一个匿名函数,x是列表里的元素,x[1]是按照元素的第二个值排序。
乐乐看了两遍,然后在纸上把这一行抄了下来。
我记住了。他说。
初赛在十一月中旬。乐乐报了python组,跟学校另外三个同学一起在计算机教室里答题。初赛是线上的,两个小时,二十道选择题加五道编程题。
考完出来的时候,乐乐的表情很平静。苏婉在校门口接他,问他考得怎么样,他说。
还行是什么意思?苏婉问。
就是有几道题不太确定,但大部分都做出来了。
初赛成绩一周后公布。乐乐在鹏城赛区的python组排名第七,总共有四十二个参赛者。前十五名进入决赛。
苏婉在微信上跟林晨说:他进了决赛。
林晨回了一条:
然后他又发了一条:决赛之前,每天晚上我陪他练一个小时。
苏婉回了一个字:
从那天开始,每天晚上八点到九点,林晨坐在乐乐旁边,陪他练编程。不是教他写代码,是陪他做题。林晨从网上找了几套编程竞赛的模拟题,每天一套,乐乐做完之后两个人一起看答案,讨论哪一步可以优化、哪一步可以简化。
有一天晚上,乐乐在做一道关于字符串处理的题目。题目要求把一个句子里的单词反转——比如hello worldworld hello。乐乐的做法是把句子用空格切分成列表,然后把列表倒序,再用空格连接起来。三行代码,逻辑正确。
林晨看了一眼,说:你的做法是对的。但你有没有想过另一种方式?
什么方式?
不用split,用循环做。
乐乐想了一分钟。他在纸上画了一个流程图——从字符串的末尾开始往前遍历,遇到空格就截取一个单词,然后把单词加到结果里。他用python写了一遍,代码比split的版本长了一倍。
为什么要用循环做?乐乐问。split一行就搞定了。
因为不是所有编程语言都有split。林晨说。也不是所有问题都有现成的函数可以调用。你现在学的python,有很多内置函数帮你省事。但如果你以后学c语言、学汇编、学更底层的东西,这些函数都不存在。你需要自己写。理解原理比记住函数更重要。
乐乐想了一下,点了点头。他把循环版本的代码又看了一遍,然后在笔记本上写了一行:
原理比函数重要。
决赛在十二月初。地点是鹏城科技馆的三楼会议室,四十个孩子坐在四十台电脑前面,每人两个半小时,五道编程题。
林晨和苏婉在科技馆外面等。苏婉坐在长椅上看手机,林晨站在窗边,看着科技馆的大门。
你紧张吗?苏婉问。
不紧张。林晨说。他学到什么程度就发挥到什么程度。竞赛只是检验,不是目的。
苏婉笑了一下。你说话越来越像教练了。
我本来就不是教练。林晨说。我只是一个陪他做题的家长。
两个半小时后,科技馆的大门打开了。四十个孩子陆陆续续走出来。乐乐是倒数第五个出来的。他走出来的时候表情很认真,不像考完了的样子,更像在回想什么。
怎么样?苏婉迎上去。
最后一道题没做完。乐乐说。是关于递归的,我递归写到第三层就搞不清楚了。
那其他四道呢?
做完了。第三道题我用了循环做,没有用split。
苏婉看了林晨一眼。林晨嘴角动了一下,但没有笑出声。
决赛成绩在两周后公布。
乐乐在python组决赛中获得了第三名。五道题他做完了四道,最后一道递归题做了一半。总分四百二十分,比第一名少了四十五分,比第二名少了二十分。
奖杯是鹏城市教育局发的,铜的,不大,放在乐乐书桌上刚好。证书是一张A4纸,上面写着鹏城市青少年编程竞赛python组第三名,下面盖了教育局的红章。
乐乐把奖杯和证书拿回家的那天晚上,他把两样东西放在书桌正中间,然后坐在椅子上看了很久。
苏婉在门口看了一眼,转身去厨房做了一桌菜。有乐乐最爱吃的糖醋排骨、可乐鸡翅、西红柿炒蛋、清炒时蔬和一碗紫菜蛋花汤。
吃饭的时候,乐乐没有提奖杯的事。他吃了两块排骨,一碗米饭,喝了半碗汤,然后说了一句:爸爸,第三名说明我还有好多不会的。
林晨看着他。你觉得你不会的是什么?
递归。乐乐说。还有排序的高级算法。还有数据结构。我到现在只学了列表和字典,队列和栈还没学。
你打算怎么学?
你能不能教我?
林晨想了一下。我可以教你。但有一个条件。
什么条件?
数学先学好。林晨说。编程的本质是数学。排序的本质是比较,递归的本质是归纳,数据结构的本质是抽象。你数学基础不扎实,编程学到后面会遇到天花板。你现在数学成绩中上,但还不够。要把数学从中上变成上等,再来学更深的编程。
乐乐想了一下。那我数学怎么学?
先把学校的内容学好,然后我给你找一本数学思维训练的书,每天做两道题。编程课继续,但节奏放慢,一周两次,一次一个小时。剩下的时间用来学数学。
乐乐说。他低头吃了一块排骨,然后又抬起头来。
爸爸。
谢谢你们。
苏婉在旁边愣了一下。乐乐从来没有说过谢谢,不是不懂礼貌,是他这个年龄的孩子不习惯对父母说谢谢。
谢什么?苏婉问。
谢谢你们让我学编程。乐乐说。我们班有个同学也想学编程,但他爸妈不让,说编程影响学习。你们没有不让我学。
林晨看了苏婉一眼。苏婉的眼睛红了一圈,但她忍住了,端起汤碗喝了一口。
你只要不影响学习就行。苏婉说。
不会的。乐乐说。数学老师说我的成绩这学期进步了。
林晨没有说话。他看着乐乐面前那个铜奖杯,奖杯在灯光下泛着暗金色的光。奖杯不大,但放在十岁孩子的书桌上,刚好。
那天晚上,乐乐睡了之后,林晨在书房里坐了一会儿。他打开电脑,在乐乐的编程学习记录里加了一行:
2026年12月 鹏城市青少年编程竞赛python组第三名 下一步:数学基础强化 + 数据结构入门
他看着这行字,想起了自己十岁的时候。那时候他在学校的电脑房里看同学写bASIc,回家之后在纸上画流程图。没有人教他,没有ipad,没有编程竞赛,更没有铜奖杯。他只是在一个阴差阳错的瞬间看到了一条路,然后自己走了上去。
现在乐乐也看到了一条路。这条路是乐乐自己找到的。林晨只是在他走的时候,在旁边陪了一段。
这段路才刚开始。
第389章 父子对话
那天是周六下午。
乐乐坐在客厅的地板上,ipad摊在面前,上面是一个python编程界面。他正在做一道关于栈的练习题——给定一个字符串,判断其中的括号是否匹配。左括号进栈,右括号出栈,最后栈为空则匹配,否则不匹配。
他写了五分钟,代码运行成功,测试用例全部通过。他抬起头,正好林晨从书房出来倒水。
爸爸,我做完了。乐乐举起ipad给林晨看。
林晨接过ipad看了一遍代码。逻辑正确,栈的使用规范,变量命名清晰——别人一眼就能看懂的命名。
不错。他把ipad还给乐乐,在沙发上坐下来。
乐乐把ipad放在地上,靠在沙发边,仰着头看林晨。
爸爸。
我长大也要做AI吗?
林晨端着水杯的手停了一下。乐乐的眼睛很亮——跟平时做完编程题的那种亮不一样,带着期待和一点点不确定。
为什么问这个?林晨说。
因为我们班同学都知道你做AI了。乐乐说。上次你上南方都市报的时候,我们老师还在班上说了。她说林晨同学的爸爸是做AI的,然后全班都看着我。后来王浩问我,你长大是不是也要做AI,我说我不知道。
你说不知道?
嗯。因为我真的不知道。乐乐的脚在地板上晃了一下。我做编程题的时候觉得很好玩,但我不确定我是不是想做AI。AI是什么?是像你一样写投资模型吗?还是像t厂的工程师一样做产品?还是像老师说的那种机器人?
林晨把水杯放在茶几上。他想了一下该怎么回答这个问题。
AI是一种工具。他说。就像算盘是一种工具,计算器是一种工具,电脑也是一种工具。做AI的人,是在用工具解决问题——用什么工具,取决于要解决什么问题。
那你在解决什么问题?
我用AI解决投资的问题。林晨说。用数据预测股票的走势,用模型判断买卖的时机。这个问题,有人用经验解决,有人用直觉解决,我只是用了一种更精确的方式。
乐乐想了一下。那AI是不是很厉害?
AI很厉害。林晨说。但AI有它的边界。它可以帮你算得快、算得准,但做决定的始终是人。
那你为什么要做投资?是因为AI吗?
不是。林晨说。是因为投资本身。AI是工具,投资才是我做的事。就像你现在用python做编程题,python是工具,解题才是你做的事。你用python解题,和我用AI做投资,逻辑是一样的。
乐乐又想了一下。他把腿收起来,抱着膝盖,下巴搁在膝盖上。
那我长大可以不做AI吗?
当然可以。
那我做什么?
林晨看着乐乐的眼睛。那双眼睛很亮,但亮的方式在变化——在变深。
做你喜欢的事。林晨说。
我喜欢编程。乐乐说。但我也喜欢数学。我还喜欢看蚂蚁。
林晨笑了一下。看蚂蚁?
嗯。我在学校操场上看过蚂蚁搬家。它们排成一排走,每一只蚂蚁都知道往哪里走,不撞车也不掉队。我觉得很厉害。
你觉得蚂蚁厉害,还是编程厉害?
乐乐想了两秒。都厉害。蚂蚁不用编程就能排队,编程是让人也能像蚂蚁一样排队。
林晨看了乐乐一会儿。这个回答比他预期的要好。十岁的孩子能把蚂蚁的排队行为和编程的逻辑联系起来,他在观察,在联想,在找模式。
你说得对。林晨说。蚂蚁不需要编程,因为它们天生就知道怎么排队。但人不行,人需要规则才能排队。编程就是给计算机定规则,让它按照规则做事。你做编程题的时候,就是在定规则。
那我是不是喜欢定规则?
可能是。林晨说。但你也可能喜欢别的。你现在十岁,你不需要知道自己一辈子要做什么。你需要知道的是——你现在喜欢什么,你擅长什么,你想在哪个方向多走几步。
乐乐松开抱着膝盖的手,两条腿伸直放在地板上。
爸爸,你小时候知道自己要做什么吗?
不知道。林晨说。我小时候喜欢数学,但不知道数学能做什么。后来喜欢电脑,但不知道电脑能做什么。再后来喜欢写代码,但不知道写代码能做什么。每一步都是先喜欢,再学,再发现新的喜欢。一步一步走到现在。
那你是从什么时候开始知道的?
林晨想了一下。大概是从被裁的那一年开始。
被裁?就是你以前说的那个公司不要你了?
林晨说。我被裁的时候三十五岁。在那之前,我做了十年程序员,知道怎么写代码,但不知道自己为什么要写代码。被裁之后,我有时间想这个问题了。我想了很久,才想明白——我写代码,是因为我想解决问题。代码是工具,解决问题才是我的事。
那你现在解决问题了吗?
解决了一些。林晨说。我用代码解决了投资的问题,用投资解决了钱的问题,用钱解决了开餐厅的问题,用餐厅解决了林浩的问题。每一个问题解决之后,又会出现新的问题。问题不会消失,但解决问题的能力会越来越强。
乐乐听完没有说话。他在看茶几上林晨的水杯,杯子里的水面很平,像一面镜子。
爸爸。他过了一会儿又开口了。
你说做喜欢的事。但万一我以后不喜欢编程了呢?
林晨端起水杯喝了一口。那就做别的。
但编程不是白学了吗?
不会白学。林晨说。你学编程真正得到的,不是语法和关键字。你学到的是一种思维方式——把一个大问题拆成小问题,把小问题一个一个解决,然后把所有小问题的答案拼成大问题的答案。这种思维方式,你做任何事都用得到。
做看蚂蚁也用得到吗?
用得到。林晨说。你看蚂蚁搬家的时候,是不是先看一只蚂蚁往哪里走,再看第二只往哪里走,再看很多只往哪里走?然后你发现它们走的方向是一样的,速度是一样的,间距是一样的。你在找规律。找规律就是拆问题——把一个复杂的行为拆成简单的规则。
乐乐的眼睛亮了一下。对!就是找规律!
对。编程也是找规律。你做编程题的时候,先看题目在问什么,再想怎么拆,然后一步一步写代码,最后运行看结果。找规律、拆问题、写规则、看结果。这四步,你做任何事都用得到。
乐乐点了一下头。他在地板上伸了个懒腰,然后爬起来坐在沙发上,靠在林晨旁边。
爸爸。
你说做喜欢的事,但还要有一技之长。什么是一技之长?
林晨想了一下。乐乐今天的问题比平时多,而且问得越来越深。他不敷衍。十岁的孩子能问出这种问题,说明他在思考。
一技之长就是一件事你做得比大多数人好。他说。林浩的一技之长是做菜,他能做的菜比大多数人做得好吃。我的一技之长是写代码,我写的代码比大多数人写得好。你的一技之长现在还不确定,但编程可能是其中一个方向。
那我怎么知道我做得比大多数人好?
你不需要跟大多数人比。林晨说。你跟昨天的自己比。今天的你比昨天的你多会了一道题,多理解了一个概念,多写了一段没有bug的代码,你就比昨天好了一点。好一点就够了。
乐乐想了一下,把头靠在沙发靠背上,看着天花板。
那永远保持学习呢?
你从哪里听到的?
你的书里。乐乐说。你那本《35岁程序员的AI逆袭》,我在书架上看到了,翻了几页,有一章的标题是永远保持学习
林晨笑了一下。你看懂了吗?
看不懂。乐乐老实说。字我都认识,但连起来不知道在说什么。我只是觉得那句话很厉害——永远保持学习。永远是很长时间的意思吧?
对。永远是很长时间。
那你怎么做到永远保持学习?
林晨想了三秒。这个问题不好回答。答案需要用十岁的孩子能理解的方式说出来。
你记得你学Scratch的时候吗?他说。
记得。我做了一个小猫跑来跑去的游戏。
你做那个游戏的时候,碰到过做不出来的情况吗?
碰到过。乐乐说。小猫碰到苹果之后分数不加,我查了半天才发现是碰撞检测的坐标写反了。
你查了半天,然后修好了。这个过程——碰到问题,查资料,思考,修好——就是学习。坐在教室里听课是学习,自己碰到问题想办法解决,也是学习。
那永远保持学习的意思就是,碰到问题的时候不要放弃,要自己想办法解决?
林晨说。但还有一层意思。永远保持学习,不只是说遇到问题才学。是说在你没有遇到问题的时候,也要学。你今天做了一道栈的练习题,学到了栈的用法。明天没有练习题的时候,你也可以自己找一道题来做。是你自己想做。这个叫永远。
乐乐沉默了几秒。他把腿收起来,下巴搁在膝盖上,眼睛看着茶几上的水杯。
爸爸,我觉得你说的这些话我大概能听懂一半。他说。
哪一半?
做喜欢的事,我能听懂。一技之长,我也能听懂。永远保持学习,我只能听懂一半。
哪一半听不懂?
永远。乐乐说。永远是很长时间。我不知道我能坚持多长时间。
林晨看着乐乐的脸。十岁的脸,眉毛淡淡的,下巴尖尖的,眼睛很亮。
你不需要永远。林晨说。你只需要今天。今天你做了栈的练习题,你学到了东西。明天你再做一道,又学到一点。后天再做一道,又学到一点。你不需要想,你只需要想。永远太长了,今天够短了。短的东西才好坚持。
乐乐想了一下,然后点了一下头。他站起来,从地上拿起ipad,走到林晨旁边,把ipad放在茶几上。
那我今天的练习题做完了。明天再做一道。
然后我还要做数学。乐乐看了一眼苏婉在厨房的方向。妈妈说我数学要先做两道应用题再出去玩。
那你去做吧。
乐乐抱着ipad跑回了自己的房间。他跑了两步,又停下来,回头看了一眼林晨。
爸爸。
你说的那句话,我记住了。
哪句?
做你喜欢的事,但要有一技之长,永远保持学习。
他说完转身跑了。客厅里只剩下林晨一个人坐在沙发上,茶几上的水杯还在,水面很平,像一面镜子。
苏婉从厨房端了一盘水果出来,看到林晨一个人坐在沙发上发呆。
你们聊什么了?她把水果放在茶几上。
聊他的将来。林晨说。
他才十岁。
十岁可以聊了。林晨说。十岁的人已经会问问题了。问问题的人,需要答案。哪怕答案不完整,他需要一个方向。
苏婉在旁边坐下来,拿起一个苹果开始削皮。你给他什么方向了?
做喜欢的事。一技之长。永远保持学习。
苏婉把苹果皮削成一条长线,没有断。这是你自己的方向。
林晨说。我只是告诉他,方向是有的。走哪条路,他自己选。
苏婉把削好的苹果切成四块,放在盘子里。她拿起一块递给林晨。
你有没有想过,他可能不走你的路,也不走编程的路?
想过。林晨说。他可能走任何路。他可能去学生物,因为他喜欢看蚂蚁。他可能去学建筑,因为他喜欢搭积木。他可能去学音乐,因为他喜欢听节奏。我不知道他最后会走哪条路。但我知道一件事。
什么?
不管他走哪条路,他都知道怎么找方向。林晨接过苹果咬了一口。知道怎么找方向的人,不会迷路。
苏婉看了他一眼,没有说话。她拿起另一块苹果,靠在沙发背上,慢慢地吃。
客厅很安静。乐乐房间里传来ipad的声音,他在做数学题。厨房里的烤箱在烤面包,面包的香味从门缝里飘出来,混着苹果的味道。
林晨坐在沙发上,吃着苹果,看着窗外。深圳的下午很亮,阳光从落地窗透进来,在地板上画出一块一块的光。
他想起自己十岁的时候,坐在学校的电脑房里,看着屏幕上那行hello, world!闪了一下就消失了。那时候他不知道自己要做什么,但他知道自己在做一件让自己开心的事。
乐乐现在也在做一件让自己开心的事。
他在做。他知道方向是有的。这就够了。
苏婉吃完苹果,把果核扔进垃圾桶。她站起来的时候,看了一眼乐乐房间的方向。
他数学做了几道了?
不知道。林晨说。让他自己安排。
好吧。苏婉走回厨房。经过林晨旁边的时候,她停了一下,低声说了一句。
你是个好爸爸。
林晨没有回答。他咬了一口苹果,看着窗外。
窗外的阳光照在地板上,亮得很。
第390章 教育投资
乐乐编程竞赛拿第三名的消息,是在一个周三的晚饭桌上说出来的。
消息是苏婉带来的。她给乐乐夹菜的时候,对林晨说了一句:你们学校家长群有人发了竞赛名单,乐乐第三名。
乐乐埋头吃排骨,没有抬头。第三名不够好——第一名才值得在饭桌上说。
林晨看了乐乐一眼,没有在饭桌上展开这个话题。他只说了一句:吃完饭来书房。
乐乐扒了两口饭,把碗放下,跑进了书房。
书房的灯还亮着。林晨在电脑上跑完了今天的模型,ipad上的信号线已经收成了历史数据。他把ipad合上,示意乐乐坐在旁边的椅子上。
你的编程竞赛拿了第三名。林晨说。
乐乐坐在椅子上,脚够不到地面,两条腿悬在空中晃了一下。
你自己觉得怎么样?
不够好。递归没做出来,排序的高级算法也不熟。乐乐说。第三名说明我前面还有两个人比我厉害。
林晨看着乐乐。十岁的孩子说前面还有两个人比我厉害的时候,语气平静。这种冷静是在做题的过程中慢慢磨出来的——每一道做不出来的题都是一面镜子,照出你还不会的东西。
你说得对。林晨说。前面还有两个人。但你知道你跟他们差在哪里吗?
差在递归和数据结构。乐乐说。
对。递归是一种思维习惯,数据结构是一种工具储备。你现在有思维习惯,但工具储备不够。你的python语法没问题,但你在数据结构和算法上的训练不够。
那怎么办?
找老师。
乐乐抬头看林晨。找什么老师?
编程老师。数学老师。英语老师。
英语也要学?
英语必须学。林晨说。全世界最好的编程教材是英文的,最权威的算法竞赛是英文的,最前沿的AI论文是英文的。你以后要学更深的编程,英文是基础。你现在的英语成绩是中等偏上,不够。
乐乐想了一下。那我要上三个补习班?
不是补习班。林晨说。找最好的老师,一对一地学。
林晨第二天就开始找老师了。
编程老师的人选来得最快。他本身就是做编程出身的,圈内认识的人够多。他在微信上发了三条消息,分别给了三个人——赵刚、训练营里的一个前学员叫刘明、还有一个在深圳做少儿编程教育的创业者叫王涛。
赵刚回了消息:你要给乐乐找编程老师?你自己教不就行了?
林晨回了一条:我能教他语法和算法,但教不了竞赛思维。竞赛思维是练出来的。我需要一个人带着他刷题,帮他在遇到瓶颈的时候推一把。
赵刚想了想,推荐了一个人——清华计算机系毕业的,现在在深圳一家科技公司做算法工程师,叫陈远。陈远参加过Acm国际大学生程序设计竞赛,拿过亚太区银牌,竞赛经验丰富。赵刚说他以前在训练营听过林晨的课,对林晨很尊重,应该愿意接这个活。
林晨给陈远打了一个电话。电话响了三声就接了,说明对方没有在开会。
陈远你好,我是林晨。赵刚推荐的你。
林老师!陈远的声音明显比刚才高了半个调。我知道您!我以前在您的训练营学过AI入门课程!
嗯,赵刚跟我说了。林晨说。我有一个事想跟你聊。我儿子今年十岁,四年级,学python两个月,拿了市编程竞赛第三名。我想找一个老师带他继续学,重点放在数据结构和算法上。你有兴趣吗?
电话那头沉默了两秒。林老师的儿子?十岁?python两个月就拿了第三名?
对。但他递归和数据结构不行,决赛最后一道题没做出来。
我理解。陈远说。递归是很多初学者的门槛。十岁的孩子能到这个水平已经很好了,但不能停在语法层面。下一步应该是系统学习数据结构和基础算法——链表、栈、队列、树、排序、搜索、递归、动态规划入门。这些是竞赛的基础,也是以后做AI和工程的基础。
你说的这些我同意。林晨说。但我有一个要求——不要教他刷题技巧,教他思维方法。刷题技巧是为了竞赛拿名次,思维方法是为了以后做任何事都能用。竞赛只是手段。
我理解。陈远说。我会从原理出发,让他理解每一个数据结构为什么是这样设计的,每一个算法为什么是这样工作的。理解了原理,题自然就会做了。
两人约了周六下午见面。林晨让陈远来家里,他想看看陈远跟乐乐的互动。
数学老师是苏婉找的。
苏婉的方法跟林晨不一样。林晨是找人推荐,苏婉是上网查资料。她在家长论坛上翻了三天帖子,看了二十多个数学思维训练班的评价,最后锁定了一个叫思维工坊的机构。
思维工坊的创始人叫孙莉,以前是深圳外国语学校的数学老师,教了十五年书,后来辞职出来做数学思维教育。她的理念跟林晨不谋而合——教思维方法,不教解题技巧;教怎么拆问题,不教怎么猜答案。
苏婉带乐乐去试了一次课。孙莉给乐乐出了三道题,难度递增。第一道是简单的逻辑推理,乐乐两分钟做完了。第二道是数列找规律,乐乐想了五分钟,用排除法找到了答案。第三道是一道开放性的问题——如果一个池塘里的荷花每天翻一倍,30天长满池塘,那长到一半是第几天?乐乐想了两分钟,说:第29天。
孙莉看了一下乐乐。你怎么算的?
每天翻一倍,所以前一天就是一半。30天长满,前一天就是29天。
孙莉点了一下头。她在笔记本上写了几个字,然后对苏婉说:这个孩子的逻辑思维不错,但数学基础还可以再扎实。他的直觉很好,但推理的过程有时候跳步骤。需要训练他把直觉变成严密的推导。
苏婉把孙莉的评价转述给林晨。林晨听完说了一句:跟我们数学老师说他的一样——解题快但跳步骤。
那就对了。苏婉说。跳步骤说明他脑子快但手不够稳。孙老师的方法是让他把每一步推导都写出来,不能跳。写出来才能检查,检查才能发现错误。
行。约了什么时间?
每周六上午九点到十一点。
跟编程课不冲突?
不冲突。编程课约的是周六下午两点到三点半。
林晨点了一下头。周六上午数学,下午编程,中间有两个半小时的空档。这个节奏可以。
英语老师费了些周折。
林晨的要求比较特殊。他不要那种教语法和阅读理解的应试英语老师,他要找一个教用英语学东西的老师。乐乐学英语是为了以后能看懂英文编程教材和AI论文,考试分数是次要的。
他在一个教育社群里发了需求,三天后收到了一个回复。回复的人叫张琳,在美国读了两年计算机硕士,回国后在一家外企做技术翻译,同时兼做少儿英语一对一教学。她的特点是用项目制教学——带着学生用英语做一个项目,在项目过程中自然学会英语。
林晨约了张琳在一家咖啡馆见面。张琳三十出头,戴一副银色边框的眼镜,穿一件深蓝色的卫衣,背一个双肩包,看起来像刚从大学校园里出来的研究生。
你的需求我理解了。张琳看了一眼林晨发来的消息。应用英语,不是应试。孩子学编程,需要看英文教材和英文文档,需要用英语搜索编程问题的答案。
林晨说。他现在看英文编程教程的时候,很多技术术语看不懂。我需要一个老师带他用英语学编程,在学编程的过程中自然学会英语。
这个方法叫cLIL——content and Language Integrated Learning,内容与语言整合学习。张琳说。用语言学内容。比如我会带他看一段英文的python教程,教程里有编程术语,编程术语在上下文中自然被理解,不需要单独背单词。
林晨说。但有一个前提——不能让他觉得是在学英语。十岁的孩子不喜欢被安排,他喜欢自己选择。你要让他觉得他就是在学编程。
张琳笑了一下。我教过的孩子都以为我是在教编程。他们用英语看完一段教程之后,做完了一个项目,开心得不行。他们不知道自己在这个过程中学会了几十个英文单词和三四个语法结构。
什么时候能开始?
下周三晚上七点到八点半。每周一次,每次一个半小时。
三个老师的课,加上乐乐正常的学校课程和作业,时间安排是这样的:
周一到周五:正常上学 + 课后作业。 周六上午九点到十一点:数学思维课,孙莉老师,一对一。 周六下午两点到三点半:编程课,陈远老师,一对一。 周三晚上七点到八点半:英语项目课,张琳老师,一对一。
林晨把这个时间安排写在一张A4纸上,贴在乐乐书桌旁边的墙上。纸的最上面写着一行字:
学习安排(试行)
试行两个字是苏婉加的。她看到这张纸的时候,指了指两个字,对林晨说:先试一个月。如果乐乐觉得太累或者不喜欢,我们再调整。
不会太累。林晨说。数学课一周一次,编程课一周一次,英语课一周一次。加起来一周三个半小时。他现在每天放学后在ipad上玩的时间都不止三个半小时。
我担心的是压力。苏婉说。三个老师,三套课,三套作业。他十岁。
我知道他十岁。林晨说。但我也知道他喜欢这些。数学课是练思维,编程课是练逻辑,英语课是练工具。三样加在一起是三把钥匙。
苏婉没有再说话。她看了一眼乐乐的房间,房门半开着,乐乐坐在书桌前,正在ipad上做一道编程题。他的背微微弓着,手指在屏幕上划来划去,嘴里念念有词,像在跟代码吵架。
他做编程题的时候专注吗?林晨问。
专注。苏婉说。能坐一个半小时不动。
那就对了。林晨说。一个十岁的孩子能坐一个半小时专注做一件事,说明他是自己想做的。三个老师在帮他把他想做的事做得更好。
苏婉想了一下,点了点头。她拿起笔,在A4纸的旁边加了一行小字:
如果乐乐说不想学了,就停下来。
第一节课是周六上午的数学课。
孙莉老师准时在九点到了。她带了一个帆布包,里面装着一叠A4纸和一盒彩色笔。A4纸上印的是她设计的数学思维题,从简单到困难,分五个等级。
乐乐坐在书桌前,看着那叠纸,表情有点紧张。
别紧张。孙莉把第一张纸递给他。我们今天不做难题。先做一道简单的。
第一道题是一个图形推理题——给出三个图形,找出规律,画出第四个图形。乐乐看了一眼,拿起笔就画了。三十秒画完。
你怎么想的?孙莉问。
第一个图形旋转九十度是第二个,第二个旋转九十度是第三个,第三个旋转九十度就是第四个。
孙莉点了一下头。她把第二张纸递过来。这道题比第一道难——换成了数列推理。给出一个数列:1, 4, 9, 16, 25, ?,问下一个数是什么。
乐乐看了一眼。三十六。
怎么算的?
这些数是1的平方、2的平方、3的平方、4的平方、5的平方。下一个就是6的平方,三十六。
孙莉在笔记本上写了一行字:直觉好,但推导过程需要规范。
接下来的一个小时,孙莉带着乐乐做了八道题。每一道题做完之后,她都会让乐乐把推导过程完整地写出来——不能跳步骤,不能只写答案,每一步都要有理有据。
乐乐一开始有点不适应。他习惯于在脑子里跳两步然后直接写答案,但孙莉要求他把跳过的步骤补回来。
你的答案是错的吗?孙莉问。
不是。乐乐说。答案是对的。
答案是对的,但过程是不完整的。孙莉说。考试的时候你跳步骤,老师可能不扣分。但思考的时候你跳步骤,你就在跳过理解。理解靠的是过程——你能算出答案是三十六,但你能解释为什么是三十六吗?
因为三十六是六的平方。
为什么六的平方是三十六?
因为六乘以六等于三十六。
为什么这个数列是平方数?
乐乐想了一下。因为第一个数是一,等于一的平方。第二个数是四,等于二的平方。第三个数是九,等于三的平方。规律是第n个数等于n的平方。
孙莉说。你看,你刚才说这些数是平方数的时候,你心里是知道为什么的。但你说出来的只有结论,没有过程。把你心里知道的事情说出来,就是推导。
乐乐点了一下头。他在第二道题的旁边写了一行字:
规律:第n个数 = n2
数学课结束之后,乐乐走出书房,到客厅喝水。苏婉在厨房里做饭,从厨房门口探出头来。
怎么样?
还行。乐乐说。老师让我把每一步都写出来,不能跳。
你觉得呢?
有点烦。乐乐喝了一口水。但好像也没那么烦。因为我心里知道为什么,只是懒得写。现在写了之后,确实清楚一些。
苏婉笑了一下,没有再问。
周六下午两点的编程课。
陈远准时到了。他比照片上看起来年轻一些,二十六七岁的样子,穿了一件黑色的t恤,上面印着一段代码——是python的hello world程序。
乐乐看到他t恤上的代码,笑了一下。
你也穿代码衣服。乐乐说。
程序员都这样。陈远笑了一下。他在书桌对面坐下,从背包里拿出一台笔记本电脑。今天我们先聊一聊,不上课。你跟我说说你学编程的过程,从最开始到现在。
乐乐用了十分钟讲完了自己学编程的经历——从Scratch到python,从小猫跑来跑去到编程竞赛第三名。陈远听的时候在笔记本上记了几笔,偶尔点一下头。
你最后一道递归题没做出来。陈远说。
乐乐说。递归我写到第三层就搞不清楚了。
你知道递归的本质是什么吗?
乐乐想了想。就是一个函数调用自己?
对,但不完整。陈远说。递归的本质是归纳。你把一个大问题拆成一个相同但更小的问题,然后反复拆,直到拆到一个你已知答案的最小问题。你做数学的时候学过归纳法吗?
乐乐摇头。
没关系。陈远在纸上写了一个例子。假设你要算5的阶乘。5的阶乘等于5乘以4的阶乘。4的阶乘等于4乘以3的阶乘。3的阶乘等于3乘以2的阶乘。2的阶乘等于2乘以1的阶乘。1的阶乘等于1。这就是递归——每一步都依赖于前一步,直到遇到一个已知答案。
乐乐看着纸上的例子,眼睛动了几下。他在脑子里把每一步都过了一遍。
所以递归就是一层一层往前推,推到最前面那层就知道了?他说。
陈远说。你在做栈的练习题的时候,左括号进栈、右括号出栈,最后看栈是不是空的。栈的思想和递归的思想是相通的——都是后进先出。你做了栈的题,理解了后进先出,递归就只是一步之遥。
乐乐的眼睛亮了一下。原来栈和递归是通的!
陈远笑了。对。这就是我说的——理解原理比记住函数重要。你理解了栈,你就理解了递归。你理解了递归,你就理解了树。你理解了树,你就理解了图。数据结构是一棵知识树,根是数组,干是链表和栈,枝是树和图。你从根往上爬,每一步都是相通的。
他在纸上画了一棵树,每个节点写着一个数据结构。数组在最下面,链表在左枝,栈在右枝,再往上是树和图。
乐乐看着这棵树,沉默了五秒。
我以前觉得数据结构很难。他说。看了你这个图,原来它们是一棵树。
陈远说。数据结构是一棵树。算法是爬树的方法。你学会了一种爬法,就能爬到更高的节点。
周三晚上的英语课。
张琳准时到了。她带了一个ipad,上面打开了一个英文网站——Khan Academy的编程教程。
今天我们做一个项目。张琳说。这个项目是英文的,但我不教你英文。我教你怎么用英文完成这个项目。
乐乐看着ipad上的英文界面,眉头皱了一下。
这些单词有些我不认识。他说。
没关系。张琳说。你不认识的时候,先看上下文。上下文能帮你猜出百分之六十的单词意思。猜不出来的,再来问我。
乐乐点了一下头。他开始看第一段英文教程。教程讲的是如何用JavaScript画一个圆。乐乐看了一会儿,指着一个单词问:draw是什么意思?
你猜。张琳说。
乐乐看了看上下文——draw a circle on the canvas。前面是canvas,后面是circle。circle是圆,canvas是画布,那draw就是把圆放到画布上。
乐乐说。draw a circle就是在画布上画一个圆。
张琳说。
乐乐继续看。他看了十分钟,看完了整段教程。教程里有十五个英文单词他不认识,但他通过上下文猜出了十二个,剩下三个问了张琳。
张琳在笔记本上记了这三个单词:radius(半径)、coordinate(坐标)、property(属性)。
这三个词是编程里的常用词。张琳说。你今天在上下文里学到了它们,不需要背。下次再看到的时候,你会想起来。
乐乐点了一下头。他按照教程的步骤,在编辑器里写了一段代码。代码运行之后,屏幕上出现了一个蓝色的圆。
他看着那个圆,笑了一下。
我刚才用英语写了一个圆。他说。
张琳也笑了。你不仅写了圆,你还学了十五个英文单词。
乐乐想了一下。但我没觉得我在学英语。
那就对了。张琳说。
一个月后,苏婉在A4纸上旁边的那行小字旁边,加了一行:
试行通过。继续。
乐乐的时间表没有变——周六上午数学,下午编程,周三晚上英语。但他每天放学后做作业的时间从五点半到六点变成了五点半到五点五十。作业没变少,他做得更快了——数学课练了思维之后,解题速度提高了;英语课学了技术词汇之后,看英文编程教程的速度也提高了。
林晨每个月给三个老师的课加起来是一万二。数学四千,编程四千,英语四千。加上乐乐学校的学费、课外书的钱和偶尔的竞赛报名费,每个月花在乐乐教育上的钱大概在一万五左右。
一万五一个月,一年十八万。这笔钱对林晨不构成压力。投资账户每月收益三十万以上,餐饮分红每月四十八万,版税每月两三万。乐乐的教育投入在他总收入的占比不到百分之二。
但林晨算的账不一样。他算的是时间。三个老师,三套课,三套作业,乐乐每周花在学习上的额外时间是四个半小时。这四个半小时在主动思考、主动解决问题、主动学习。
有一天晚上,林晨路过乐乐的房间,看到他坐在书桌前,面前摊着数学思维题。题目是孙莉出的——一个关于逻辑推理的题目,乐乐写了一半,卡住了。他没有叫林晨帮忙,而是把题目重新读了一遍,在纸上画了一个表格,把条件一个一个填进去,然后看表格推导答案。
他花了十五分钟,推导出来了。
林晨站在门口看了十五分钟,没有进去打扰。
他回到书房,在乐乐的编程学习记录里加了一行:
2027年1月 教育投入正式启动 数学:孙莉老师,一对一,练思维,不跳步骤 编程:陈远老师,一对一,练算法,理解原理 英语:张琳老师,一对一,项目制,用英语学编程
三个月后看效果。
他合上笔记本,关了灯。窗外的深圳夜景在黑暗中亮着,像一张铺开的地图,每一盏灯是一个故事。
乐乐的故事才刚开始。
第391章 父母的养老
腊月二十八,林晨开车去了火车站。
他到的时候,火车还没到。站台上人挤人,大包小包的行李堆在过道里,空气里混着泡面味和汗味。他在出口处站了十分钟,手机响了一声——他妈发的:到了,在3号车厢门口等你。
三分钟后,他看到父母从出站口走出来。
他爸走在前面,穿一件深蓝色的棉袄,领口露出里面灰色毛衣的边。左手提着一个编织袋,里面鼓鼓囊囊的,大概装着老家的腊肉和干菜。他妈走在后面,背一个双肩包,步子比以前慢了,下台阶的时候扶了一下栏杆。
林晨快步走过去,先接了他爸手里的编织袋。爸,我提。
他爸松手的时候,林晨注意到他的手背上有几道新的裂纹。冬天干,老年人的皮肤撑不住,裂口像干涸的河床一样往外翻。林晨看了一眼,没有说什么。
他又接过他妈的双肩包,顺手扶了一下她的胳膊。
我自己走得动。他妈拍了一下他的手背,但脚步还是靠着他走。林晨没有松手,一直扶着她走到停车场。
到了停车场,林晨把行李放进后备箱。编织袋很重,他提的时候沉了一下——他妈至少塞了十斤腊肉。他没问为什么带这么多,他知道他妈觉得深圳的腊肉没有老家的香。
车上,他妈坐在后排,安全带拉了两次才扣上。她偏瘦,安全带从肩膀滑到脖子边上,林晨伸手帮她调整了一下。
妈,扣好了。
他爸坐在副驾驶,上车第一件事是调座椅靠背。他的腰不好,坐久了会酸,但从来不说。林晨看到他调了一个很斜的角度,心里算了一下——从老家到深圳的高铁要五个小时,他爸在硬座上坐了五个小时。
爸,以后坐高铁来,别坐普通车了。
高铁贵。
我买票。
你买也贵。
林晨没有再说。他知道他爸的不是心疼钱,是心疼他的钱。在他们眼里,儿子赚再多钱也是辛苦钱,不能乱花。
车开上高速,深圳湾的方向有海风从车窗缝里钻进来。他妈靠在后排座椅上,看着窗外的高楼一栋一栋地过。
深圳楼真多。她自言自语。
妈,你在深圳住了快三年了,还觉得楼多?
三年也看不完。他妈说,跟你住了两年,后来搬回去一年,今年又来。每次来都觉得楼更多了。楼多了,人也就多了,人多就热闹。老家街上过了八点就没人了,这里十点还亮着灯。
林晨听出她话里的意思。两年前他买大平层的时候,把父母接过深圳住了一段时间。后来他妈说住不惯,要回老家,他爸也跟着走了。走的时候他妈说你忙你的,我们在老家挺好的。林晨没有强留。
但这次不一样。这次是林晨主动打电话,说爸妈,过来住,不走了。他妈在电话里沉默了五秒,然后说。
他爸全程没说话,只在挂电话之前说了一句你妈最近膝盖不好,下楼费劲。
林晨听懂了。老家的房子没有电梯,六楼。他妈膝盖不好,每天上下楼是硬撑。他爸嘴上不说,心里早就想搬了,但不好意思开口。
爸,妈,这次过来就不回去了。林晨看着前方的路说。
他爸没有接话。
他妈在后座轻声说了一句:你爸把老家那边的事都交代了。鸡给了隔壁老李,菜地让你二婶种,钥匙放在村委会。
林晨愣了一下。他没想到他爸走得这么决绝,连鸡都安排好了。
那边的房子呢?
锁了。他爸说,不卖。
嗯,不卖。林晨同意了。老家的房子是根,不能断。
到了家,电梯直上十八楼。
他妈站在门口,看着门牌号看了一会儿。门牌是林晨换的,上面写着1801,下面加了一行小字。他妈看到两个字,嘴角动了一下,没说话。
进门之后,他妈换了拖鞋,站在玄关往里看。客厅很大,落地窗对着深圳湾,下午的阳光从西边照进来,把整间客厅染成暖黄色。沙发上铺了一条新毯子,是苏婉专门买的——他妈不喜欢真皮沙发的凉,坐着不舒服。
这是你们住的房间。林晨推开次卧的门。房间靠右边的墙刷了一层淡淡的米黄色,是他特意让工人调的——纯白太冷,老人住着不舒服。
他妈走进去,看了一圈。房间不大不小,一张一米八的床,被褥是新的,枕头有两个——一个软的,一个硬的。窗户朝南,下午能晒到太阳。床头柜上放了一个老式的收音机,是他妈在老家听了十几年的牌子。
收音机是你买的?他妈问。
在网上找的同款。你那个太旧了,电池盖都合不上。
他妈摸了一下收音机,打开开关,调到老家那个频道。沙沙的电流声在房间里响了一会儿,然后跳出一段粤剧——深圳也能听到,只是信号不如老家清楚。她没有关,让声音继续响着。
他爸在房间里转了一圈,拉开了窗帘,又合上。打开衣柜,看了看里面的衣架,又关上。在床边坐了一下,又站起来,走到窗边往外看。
这楼高。他爸说。
十八楼。
底下的人看起来多小。
爸,你往下看别看太久。
他爸了一声,转身出了房间。
晚饭是苏婉做的。
六个菜——红烧排骨、清蒸鲈鱼、蒜蓉菜心、西红柿炒蛋、腊肉炒蒜苔、紫菜蛋花汤。腊肉是他妈从老家带来的,苏婉提前一天泡了,今天切成薄片,和蒜苔一起炒,油光发亮。
乐乐坐在他爷爷旁边,帮他爷爷夹菜。他已经十岁了,会用公筷,夹菜的时候手很稳,每一筷子都稳稳地放到爷爷碗里。
爷爷,吃排骨。
爷爷,吃鱼。
乐乐夹一块,爷爷吃一块。爷爷不太会用公筷,乐乐就直接用自己的筷子给他夹,苏婉看了一眼没有纠正。
他妈吃了几口腊肉炒蒜苔,点了点头。这个腊肉是今年腊月熏的,味道还行。
好吃。苏婉说,妈以后在这边做,厨房什么都有。
我做的没你好。他妈说。
不一样。您做的有家的味道。
他妈笑了一下,低头继续吃。她吃饭很慢,嚼得细,咽得慢。林晨注意到她只吃了小半碗饭就放下了筷子。
妈,多吃点。
饱了。
林晨看着她的碗,里面还剩半碗饭。他没有逼她多吃。他知道他妈的胃口不如从前了——以前她能吃两碗饭,现在半碗就饱了。人老了,消化慢,吃多了不舒服。
吃完饭,林晨帮着收拾碗筷。他妈站起来要帮忙洗碗,被苏婉拦住了。
妈,您刚来,歇着。我来。
我洗得动。
我知道您洗得动,但今天不用您洗。苏婉把围裙系好,站在水龙头前面,您去看看房间还缺什么,我明天去补。
他妈站在厨房门口看了一会儿,然后转身回了房间。
林晨端着一杯温水跟过去。他妈坐在床边,收音机还在响,调到了一个说书的频道,讲的是《三国演义》。她没有在听,只是在听声音。
妈,缺什么跟我说。
他妈接过水,喝了一口。你那个厨房灶台太高了,我够不着。
我明天让人调低。
不用调,我垫个凳子就行。
妈,我调。
他妈看了他一眼,没有再推辞。
还有,你那个花洒水太大,我肩膀受不了。
我换个小的。
你那个马桶太矮了,坐下去站起来费劲。
我加个马桶增高器。
他妈又看了他一眼。你这房子,什么都要改。
那就改。林晨说,改到你们舒服为止。
晚上十点,林晨去父母房间看了一眼。
他爸已经睡了,侧躺在床上,打了一声轻微的鼾。他妈还没睡,靠在床头听收音机。看到林晨进来,她把收音机的音量调小了。
妈,还不睡?
睡不着。换了床,要适应几天。
林晨在床边坐下来。妈,这次来就不走了。你跟爸就住在这里,我每天回来吃饭。
你那么忙,还每天回来?
我回来。林晨说,以前是我做得不好,让你们在老家住六楼,上下楼膝盖疼也不说。以后不回去了,就在深圳住。你们负责好好养老,其他的都不用管。
他妈看了他一眼,没有说话。收音机里的说书人正讲到刘关张桃园结义,声音在安静的房间里显得特别清脆。
过了好一会儿,他妈才开口:你小时候,我跟你爸在厂里上班,每天早上五点出门,晚上八点回来。你一个人在家吃饭、写作业、睡觉。我那时候想,等攒够了钱,一定让你过上好日子。
她停了一下,声音低了一点。后来你考上大学,毕业去了深圳,我跟你爸说,咱儿子出息了,不用我们操心了。再后来你失业,我跟你爸急得整晚睡不着——你不说,但我们知道。你每次打电话声音都不对,我们听得出来。
林晨没有接话。
现在好了。他妈说完这三个字,把收音机关了,拉了拉被子。你也别太累。赚钱重要,身体更重要。
我知道。
林晨走出房间,轻轻关上门。客厅的落地窗没有拉窗帘,深圳湾的夜景在外面铺开,万家灯火从近到远,一直延伸到海平面的尽头。
他站在窗前,看了一会儿外面的灯火。
他妈膝盖不好,他爸腰不好,老家的房子六楼没电梯。这些问题他以前知道,但知道和解决之间隔了一层东西——他们不说,他也就假装没问题。现在他们把鸡给了隔壁老李,菜地让二婶种,钥匙放在村委会。他们这次是真的不回去了。
手机震了一下。是林浩发来的:叔,叔叔阿姨到了吧?明天我过来看看他们。
林晨回了一个字:好。
然后他走进书房,翻开笔记本,把刚才他妈提到的几件事记了下来——灶台调低,花洒换小流量,马桶加增高器,卫生间装扶手和防滑垫。写完他把笔搁在桌上,又想了一下,在最后加了一行:每天回家吃晚饭。
他合上笔记本,关了灯。
第392章 父母的感慨
父母来深圳的第三天,林晨把要改的都改了。
厨房灶台调低了十五厘米,工人来的时候他爸站在旁边看,嘴上没说什么,但看到工人把原来的台面拆下来、换上新的低台面时,他伸手摸了一下新台面的边缘,像是在确认高度合不合适。
花洒换了小流量的,浴室加装了扶手和防滑垫,马桶加了增高器。他妈试了一下,从马桶上站起来的时候,比以前省力了不少。她在浴室里站了一会儿,用手按了按扶手的稳定性,摇了两下,扶手纹丝不动。她又踩了踩防滑垫,脚底下踏实了,没有打滑的感觉。然后她出来对林晨说:这个好。
就这么三个字。林晨听了,觉得比什么夸奖都管用。
乐乐这几天放学回来第一件事就是找爷爷奶奶。他拉着爷爷下象棋,他爸以前在老家天天跟隔壁老李下,到了深圳没人下,正闷得慌。乐乐的棋力不高,但愿意陪,输了也不恼,下一盘又来。他爸赢了就笑,输了也不急,两个人在客厅摆棋盘,能从下午四点下到六点半。
他妈不太下棋,但喜欢看苏婉做饭。她站在厨房门口,看苏婉洗菜、切菜、炒菜,偶尔说一句这个火大一点盐放早了不好。苏婉不嫌她烦,反而问她老家的做法。两个人一个做饭一个看,有时候还在厨房里聊起来——聊的都是家常,谁家的孩子考上了大学,谁家的儿媳妇会过日子,谁家的老人摔了一跤在医院住了半个月。
这天晚上,吃完饭,林晨帮着收碗。他妈在客厅看电视,他爸在阳台抽烟。林晨端了杯茶到阳台,在他爸旁边坐下来。
深圳的夜景从十八楼看下去,灯光连成片,像一张铺开的金色地毯。远处深圳湾的灯光在海面上碎了又碎,拼不回原样。海风不大,刚好够把烟味吹散。楼下的小区花园里,有人牵着狗散步,路灯把人和狗的影子拉得很长。
他爸抽了两口烟,把烟按灭在栏杆上的烟灰缸里。
爸,你不是戒了吗?
戒了。他爸说,你妈不让我抽。今天趁她看电视,抽一根。
林晨笑了一下,没有接话。
他爸看着远处的灯火,沉默了一会儿。
你小时候,家里穷。他爸说,声音不大,像是在自言自语。我跟你妈在厂里上班,一个月加起来不到三百块。你上学的学费是东借西凑的。有一次开学,学费还差五十块,你妈回娘家借了五十块,回来的时候天都黑了,她骑了二十里路的自行车。
林晨知道这件事。他妈说过,但没说过二十里路。
后来你考上大学,我跟你妈高兴得一夜没睡。他爸继续说,但是学费又不够。第一年的学费是五千多,我把家里养的两头猪卖了,还是差一千多。最后是你大伯借的。
我知道。林晨说。
你不知道。他爸转过来看他,你不知道那之后我去了工地。你妈一个人在家带你弟弟,我在工地搬了三个月的砖,才把那一千多块还上。
林晨没有说话。
你大学毕业来了深圳,我跟你妈说,咱儿子出息了,以后不用吃苦了。你进了那个大公司,工资一个月一万多,我跟你妈觉得,这辈子值了。
他爸停了一下,又点了一根烟。这次没有按灭,慢慢抽着。
然后你被裁了。
这三个字从他爸嘴里说出来,很轻,像一片叶子落在水面上。
那年你妈听说你失业,急得一个星期瘦了五斤。她嘴上说没事,说儿子有本事不怕找不到工作,但每天晚上翻来覆去睡不着。我有一次半夜起来上厕所,看见她坐在客厅里,灯没开,就那么坐着。我问她怎么了,她说做了一个梦,梦见你一个人在深圳的出租屋里吃泡面。
林晨的喉咙动了一下。他记得那段日子。他确实一个人吃过很多泡面,但他没有告诉过他妈。
后来你重新找到工作了,工资更高了。再后来你又自己创业了,开了餐厅。我们替你高兴,但也担心。创业哪有不担心的?你妈老念叨,说万一亏了怎么办。我说不会亏,你妈说你怎么知道不会亏。我说不出话。
他爸把烟抽完了,又按灭在烟灰缸里。
再后来你结婚了,有了乐乐。买了房子,开了那么多家店,还写了书。我跟你妈在老家,邻居都说你出息了。我们嘴上说没什么,心里高兴。但有时候也怕——怕你太累,怕你撑不住。你跟你妈一样,什么事都自己扛,不说。
林晨听他爸说这些,没有接话。他靠在阳台的栏杆上,看着远处的灯光。深圳的夜色很亮,亮到看不见星星,但他知道星星在云层上面。
他说。
你说的那些,我都记得。小时候你跟妈供我上学,我从来没忘。后来我被裁了,最难的时候,是你们在老家让我觉得还有根。我不是一个人。
他爸没有接话。
你们在这里住下来,我就安心了。林晨说,以后有什么不舒服,随时去医院,不用怕花钱。腿疼了看腿,腰疼了看腰,牙齿不好了就种牙。深圳的医疗条件比老家好,你们要好好用。
知道。他爸说,你也是,别太累。
我不累。
你不累,你妈累。她每天看你十一二点才回家,早上六点又走了,她嘴上不说,心里急。
林晨愣了一下。他以为他妈已经睡了,原来她一直在等他回来。
我以后早点回来。林晨说。
你别为了我们改。他爸说,你做你的事,我们看着你,就安心了。
第二天早上,林晨出门的时候,他妈已经起来了。
她在厨房里熬粥。灶台调低之后,她不用垫脚就能够到锅,比前几天顺手多了。粥是小米粥,加了几颗红枣,小火慢慢熬,厨房里弥漫着一股温热的甜味。
妈,你怎么起来这么早?
习惯了。在老家也是这个点起来。他妈把粥盛到碗里,又放了一碟自己腌的小咸菜。你吃完再走。
林晨看了一眼时间,还有二十分钟。他坐下来,喝了一碗粥。小米粥熬得稠,红枣软烂,入口很甜。小咸菜是老家的味道,萝卜干切得细细的,加了辣椒和蒜末,咸香下饭。
好吃。他说。
你小时候最爱吃这个。他妈坐对面看着他吃,自己没动筷子。那时候家里穷,买不起肉,就用咸菜配粥。你能吃三碗。
我现在还能吃三碗。
你现在吃不了三碗了。他妈笑了一下,皱纹挤在一起,眼睛眯成一条缝,你瘦了。
林晨低头看了看自己。他觉得自己没怎么变,但他妈说他瘦了,那一定是瘦了。在妈妈眼里,儿子永远是瘦的,需要多吃的。
吃完粥,他站起来准备走。他妈叫住他。
等一下。她走进房间,出来的时候手里拿了一个保温杯。路上喝。里面是枸杞红枣水。
林晨接过保温杯。杯子是新的,但水是热的,枸杞的香味从杯口飘出来。
妈,我到了给你打电话。
不用打。你忙你的。
林晨走到门口,回头看了一眼他妈。她站在厨房门口,围着围裙,手在围裙上擦了擦。阳光从窗户照进来,照在她花白的头发上,也照在她微微驼的背上。
谢谢你们一直支持我。
他妈愣了一下。她没有说谢什么这有什么好谢的,她只是站在那里,看着林晨,眼眶红了一圈。
去吧。她说,声音有点哑,别迟到了。
林晨出了门,在电梯里站了一会儿。电梯从十八楼往下走,数字一个一个跳——17、16、15、14。他看着数字跳,脑子里在想别的事情。
他想起三十五岁那年被裁的下午。他走出公司大楼,站在停车场里,看着夕阳落在深圳湾的水面上,金光闪闪。那时候他不知道明天在哪里,不知道房贷怎么还,不知道老婆孩子怎么养。他站在那里,像一个被格式化的硬盘,所有数据清空,不知道下一步该往哪里走。那天下午的风也是从海面上吹来的,和现在一样咸,但那时候他闻不出来。
后来他打电话回家,告诉他爸他被裁了。他爸在电话那头沉默了十秒,然后说:没事,回来。家里还有口饭吃。
他妈在另一通电话里说:你安心找工作,孩子我们帮你带。
那些年,每一通电话里他妈说的都是家里没事,你别操心,每一次挂电话之后他爸都会在微信上发一条消息——有时候是注意身体,有时候是别太累了,有时候就两个字。
他从来没有回过。父母的支持在他看来是理所应当的,不用谢。但今天早上,他妈站在厨房门口看着他走的时候,他忽然觉得应该说出来——让她知道他知道。
电梯到了一楼,门开了。林晨走出来,深圳的阳光很亮,照得他眯了一下眼睛。
他给林浩发了一条消息:下午来的时候带点水果,我妈爱吃草莓。
林浩回了一个oK的表情。
他又给苏婉发了一条:今晚早点回来,陪爸妈吃饭。
苏婉回了一个字:好。
他坐进车里,把保温杯放在杯架上,发动引擎。车开出小区的时候,他从后视镜里看了一眼十八楼的窗户。阳光照在落地玻璃上,反光太强,看不清里面。
但他知道他妈一定站在厨房门口,看着他的车走。
第393章 回馈社会
林晨决定成立助学基金,是在一个很普通的早上。
那天他六点出门,去中央厨房看备料情况。车开到半路,等红灯的时候,他看到路边有一个年轻人蹲在公交站牌下面,手里拿着一份简历,低着头看。简历的纸有点皱,像是折过又展开过。年轻人穿了一件不太合身的白衬衫,领口的扣子扣到了最上面那颗。
绿灯亮了,林晨踩下油门,车子往前走。但那个年轻人的样子在他脑子里停了一会儿——低着头看简历,领口扣到最上面,白衬衫不太合身。
他想到自己二十年前也是那个样子。不一样的是,他那时候没有简历,是打印出来一页一页塞到信箱里的。更早的时候,他连信箱都塞不起,是手抄的。
到了中央厨房,他一边看备料单一边想这件事。备料单上密密麻麻的数字,土豆多少斤、白菜多少斤、猪肉多少斤、鸡蛋多少箱。他看着这些数字,忽然想到一个问题——他现在的钱,够多少人一年的学费?
他没有算。他知道够很多。多到他不需要算。
上午十点,他给律师打了一个电话。
我想成立一个助学基金。他说。
律师叫周明,是林晨之前处理公司法律事务时认识的。专做公益基金这块,做过不少企业家的慈善项目。周明接了电话,约了下午见面。
下午两点,周明到了林晨的办公室。
办公室在中央厨房二楼,不大,十二平米,桌上堆着数据和报表。周明坐下来的时候,看了一眼墙上的平面图,上面标着五家快餐店和一家高端餐厅的位置。
林总,你想做什么方向的助学基金?周明问。
林晨想了一下。资助贫困学生学技术。
什么技术?
两种。一种学厨艺,一种学编程。
周明在笔记本上记下来。学厨艺的话,是资助去厨师学校?学编程呢,是资助参加培训班?
林晨说,我知道这两种,因为我身边有两个人——一个是学厨艺的,一个是学编程的。学厨艺的那个叫林浩,现在是我餐厅的主厨。学编程的是我自己。
周明抬头看了他一眼。
林浩,以前在东莞的电子厂流水线上班,一个月四千二。我资助他去学厨,现在他掌管六家店的后厨,月薪三万,结婚了,在深圳买了房。我自己,三十五岁被裁,在家学了半年AI,后来进了大厂,又自己创业,现在是晨枫餐饮的老板。
他顿了一下。
我们两个人,都是从最底层爬上来的。爬上来靠什么?靠学了一门技术。没有技术,林浩还在流水线上拧螺丝,我还在投简历被人嫌年纪大。所以我想做这个基金——不是给钱,是给技术。给钱花完了就没了,给技术能改变一辈子。
周明把这段话记下来,然后问了几个问题。
基金规模多大、首期投多少、资助标准怎么定、怎么筛选——这些实际问题,林晨一个个答。首期投入一百万,做好了再追加。资助标准不复杂:家庭年收入低于当地平均水平,有学习意愿,年龄十八到三十五。学费加基本生活费,每人每年一到三万。不直接给现金,学费付给学校,生活费按月打。不签还款协议,不要求回报。受助人将来愿意回馈,欢迎,不强制。
为什么不限年龄?周明问。
因为我被裁的时候三十五岁。林晨说,如果有人在我三十五岁的时候资助我学一门技术,我的人生会少走很多弯路。我不想让年龄成为门槛。
周明点了一下头,在笔记本上画了一个圈,在圈里写了不限年龄四个字。
基金叫什么名字?
林晨想了两秒。晨光。
晨光助学基金。
林晨说,天亮之前最暗,但天总会亮的。
接下来的一周,林晨和周明把基金的具体方案敲定了。
基金的注册地在深圳,挂靠在深圳市慈善总会下面,独立运营,专款专用。首期出资一百万,林晨个人出资,不募捐,不接受外部捐赠——至少第一阶段不接受。等基金跑通了,有了成熟的资助案例和退出机制,再考虑开放捐赠。
周明问为什么一开始不接受捐赠。林晨说:我不想让这件事变成公关。我不需要用别人的钱做我的名。我自己出,出了多少就是多少,做了什么就是什么,清清楚楚。
周明没有再问。
基金的筛选流程分三步。第一步,申请。申请人在线提交资料——身份证、家庭收入证明、学习计划书。第二步,审核。由基金的工作人员核实资料真实性,电话或视频面试,了解申请人的学习意愿和规划。第三步,资助。审核通过后,学费直接付给学校,生活费按月发放。
学习计划书是什么?周明问。
就是让申请人写一写,他想学什么,为什么想学,学完之后打算做什么。林晨说,我不需要他写得多好,但我要看到他有想法。有想法的人,学起来才有动力。没想法的人,给他钱他也学不进去。
你见过太多了?
我见过太多人被资助之后不珍惜的。林晨说,不是因为坏人多,是因为不是每个人都准备好改变了。资助只能帮准备好的人,帮不了不想改变的人。
周明把这个逻辑记下来,写进了基金章程。
基金章程一共十七条,林晨逐条看了。他看得慢,每一条都看两遍,有疑问的地方直接改。比如第八条,原写的是受助人应在完成学业后三年内回馈基金,林晨把改成了,又把三年内删了。他在旁边加了一行备注:回馈是自发的,不应有时间限制。
改完之后,他把章程交给周明。就这样,下周可以提交了。
周明收好文件,站起来准备走。走到门口的时候,他回过头来问了一句:林总,你为什么现在做这件事?你现在公司运转得好,投资也稳定,不缺名也不缺利。做基金对你来说,有什么意义?
林晨想了一下。你有没有在路边看到过蹲着看简历的年轻人?
周明愣了一下。什么?
早上六点多,公交站牌下面,蹲着看简历。白衬衫,领口扣到最上面。
周明想了一下。可能见过。
那个年轻人,跟我二十年前一样。林晨说,我只是比他早走了几步。我走过去了,他还没走过去。我做这个基金,不是要当什么慈善家。我只是想,如果有人在他蹲着看简历的时候,跟他说一声去学门技术吧,他可能就不用蹲了。
周明没有再问,点了点头,走了。
基金的注册用了两周时间。
这两周里,林晨做了一件事——他让团队在晨枫餐饮的公众号上发了一篇文章。
文章不是他写的,是苏婉帮他润色的。他写了一版草稿,苏婉看了之后说太干了,像写工作总结。他让苏婉改了一版,苏婉加了几个细节——林浩在电子厂流水线上的样子,林晨自己被裁那天下午在停车场站了十分钟的样子,乐乐拿出攒了三个月的零花钱给林浩当红包的样子。
文章的标题是:《天亮之前最暗,但天总会亮》。
文章不长,一千五百字左右。没有华丽辞藻,没有煽情段落,就是平实地讲了三件事:林浩怎么从电子厂走到厨房,林晨怎么从被裁走到创业,以及晨光助学基金想做什么。
文章的结尾写了一段话:
我们不救世,也救不了所有人。如果你愿意学一门技术,我们来出钱。就这么简单。
文章发出去之后,林晨没有看数据。他不在乎阅读量,不在乎点赞数,不在乎转发量。他在乎的是——有没有人看到这篇文章,然后点开申请链接。
第二天早上,周明给他打了一个电话。
林总,申请链接的访问量昨天晚上破了两万。到今天早上,已经收到了一百三十七份申请。
一百三十七份?林晨算了一下。比我预想的多。
你的文章被转发了三千多次。周明说,有很多评论,大部分是正面的。也有人说你在做秀。
做秀就做秀。林晨说,一百三十七个人填了申请,我如果能在里面找到二十个愿意学的人,把他们的路走通了,那这个秀就值了。
他挂了电话,打开电脑,开始看那一百三十七份申请。
他一份一份看。每一份申请的学习计划书他都看了。有人写得很认真,写了五百多字,从为什么想学厨艺到学完之后想做什么,一条一条列清楚。有人写得潦草,只有两行字:想学编程,赚更多钱。也有人写得很直白:我今年三十二岁,在工厂干了八年,不想再干了,但不知道学什么。
林晨在最后一份申请上停了很久。他看完之后,在旁边写了一行备注:安排面试。
然后他合上电脑,给林浩发了一条消息:下周开始面试申请人,你帮我看看学厨艺的那几个。
林浩回了两个字:收到。
林晨站起来,走到窗边。外面是深圳的正午,阳光白花花地照在写字楼的玻璃上,反射出一片刺眼的光。他看了一会儿,转身回到桌前,继续看下一份申请。
每一份申请的后面,都是一个蹲在公交站牌下面看简历的人。
第394章 资助学生
面试安排在周六上午,中央厨房二楼的会议室。
会议室平时是林晨开运营会用的,墙上挂着六家店的数据看板,桌上摆着投影仪和白板笔。今天白板上写了几个大字:晨光助学基金·第一批面试。
林晨八点半到的。他推开会议室的门,看到里面已经坐了六个人。四个男生两个女生,年纪从十九到三十二不等,都穿着干净但不太新的衣服。他们坐在长桌的两边,背挺得很直,手放在膝盖上,像是在等一场考试。有一个人穿了白衬衫,领口扣到最上面那颗——就是他。
林晨认出了他。不是那个具体的人,而是那种样子。白衬衫,领口扣到最上面,简历折过又展开,低着头看。他在公交站牌下面见过。
大家好。林晨推门进来,把外套挂在椅背上,坐下来,我是林晨。
六个人都站了起来。林晨示意他们坐下,然后看了一眼名单。今天是第一批面试,一共二十个人,分四批,每批五个。今天是第一批,来了六个——有一个多出来的,是看了文章之后自己跑过来的,没有在网上填申请。
多出来的那个人站在最后面,穿了一件深蓝色的工装夹克,袖口磨得发白,拉链拉到最上面。他手里没有简历,只有一张身份证。他的手插在口袋里,站在那里不像在等面试,倒像是站在厂门口等开工。旁边几个填过申请的人偶尔看他一眼,他也不看别人,就那么站着,目光落在会议室的白板上,一动不动。
你叫什么?林晨问他。
陈涛。他说,声音有点低。
没有填申请?
不会弄。网上那个表格我看了,不会填。他说这话的时候没有看林晨,而是看着桌面上的白板笔。声音不大,但没有含糊,每个字都咬得很清楚。
三十二。
在工厂干过?
陈涛点了一下头。干了八年。电子厂。
林晨在心里算了一下。三十二,干了八年,那就是二十四岁进的厂。二十四岁进厂,三十二岁想出来,中间隔了八年。八年够一个人从大学毕业到跳三次槽,也可以够一个人在流水线上拧八年的螺丝。
坐下吧。林晨说,等下一起面试。
面试的过程很简单。林晨不问学历,不问背景,只问三件事:你想学什么?为什么想学?学完之后打算做什么?
第一个面试的是一个叫张磊的男生,十九岁,高中毕业。他想学厨艺,因为他在老家的饭店打过工,觉得做饭有意思,但只会做几道家常菜,想去正经的厨师学校学。
你在饭店做什么?林晨问。
切菜。切了半年。
切了半年菜,想学什么?
想学炒菜。想当一个真正的厨师。
你怕不怕累?
不怕。张磊想了一下,我扛过半年的大包,早上五点起来搬菜,比切菜累多了。
林晨在名单上他的名字旁边画了一个圈。
第二个是一个叫王丽的女生,二十四岁,大专毕业。她想学编程,因为她在工厂做过质检,觉得工厂的工作太枯燥,想学一门技术转行。
你学过编程吗?
自学了一点。在网上看了python的教程,写了一个小程序,能自动把每天的质检数据生成报表。
你把程序给我看看。
王丽从包里掏出手机,打开一个Github的链接。林晨接过来,看了两分钟。代码写得粗糙,变量命名不规范,注释几乎没有,但逻辑是对的——能读数据、能处理、能生成图表。
你是看着教程写的?
一半看教程,一半自己查文档。
林晨把手机还给她。在名单上她的名字旁边画了一个圈。
第三个就是陈涛。
陈涛坐下的时候,双手放在膝盖上,手指有点粗,指节上有老茧——那是长期干体力活的痕迹。指甲剪得很短,手背上有两道淡疤,一道在食指根部,一道在虎口。他看林晨的眼神很直接,不闪躲,但也不冒犯,像是在等一个问题。
你想学什么?林晨问。
学厨艺。陈涛说。
为什么?
我在电子厂干了八年,每天做同样的事。早上七点上班,晚上八点下班,中间午休一小时。八年了,我闭着眼睛都能把零件装好。但我不想再闭着眼睛了。
他说完这段话,停了一下,像是在考虑要不要继续说。然后他继续了。
我看过一篇文章,说你们的主厨以前也在电子厂。我想跟他一样。
林晨看了他两秒。
你知道他在电子厂干了多久吗?
不知道。
半年。林晨说,他只干了半年就出来了。你干了八年。
陈涛没有说话。
八年和半年不一样。林晨说,他出来的时候才二十三,学什么都来得及。你三十二了,学厨艺要两到三年,出来三十四、三十五。你比他晚了十年,你确定还来得及?
确定。陈涛说,没有犹豫。
为什么?
因为我再不出来的话,这辈子就出不来了。
会议室里很安静。窗外传来一阵风声,吹动了墙上看板的一角,发出轻微的哗啦声。陈涛说完这句话之后没有低下头,也没有移开目光,就那么直直地看着林晨。
林晨看着他。陈涛的眼睛里没有激动,没有期待,甚至没有焦虑。只有一种很平静的坚决——像一块在河底沉了八年的石头,终于决定要浮上来了。不是被外力推上来的,是自己要上来的。
林晨在陈涛的名字旁边画了一个圈。
面试持续了三个小时。六个人面完,林晨画了四个圈。有两个没有画圈——一个说想学编程但没有任何基础,甚至连电脑都没怎么用过;另一个说想学厨艺但问他为什么的时候,他说因为听说厨师赚得多。
林晨没有拒绝他们,只是说:你们再想想,想好了再来。门一直开着。那两个人点了点头,站起来走了。其中一个走到门口的时候回头看了一眼会议室,像是在记住这个地方的样子,以后可能还会来。
面完之后,林晨走到楼下,在中央厨房的备料区站了一会儿。林浩正在检查明天的食材清单,看到林晨下来,放下手里的笔。
怎么样?林浩问。
四个通过。两个学厨艺,两个学编程。
那两个学厨艺的,什么时候来?
下个月。你带。
林浩看了他一眼。我带?
你以前也是从零开始的。林晨说,你知道从流水线到厨房这条路怎么走。你带他们,比任何厨师学校都管用。
林浩想了一下。行。但我要按我的方式来。
什么方式?
先切一个月菜。
林晨想了一下,明白他的意思。林浩当年也是从切菜开始的,切了三个月才碰灶台。这不是惩罚,是基本功。刀工、火候、节奏,每一样都得从最基础的地方练起来。切菜看着简单,但切得快、切得匀、切得不伤手,就是功夫。
林晨笑了一下。
第一批二十个受助人,面试用了两个周末。
每个周末面十个人,从上午九点面到下午五点,中间只休息了半小时吃盒饭。林晨问每个人的问题都一样——你想学什么,为什么想学,学完之后打算做什么。但他问的方式不一样,对有些人他追问细节,对有些人他只是听。他发现一个规律:说得越多的人,往往想得越少;说得越少的人,往往想得越多。陈涛是说得最少的一个,但他想得最多。
最终筛选出十个学厨艺的,十个学编程的。十个学厨艺的由林浩和他最得意的徒弟小周负责带,先在中央厨房从基础功练起,切菜、配菜、打荷,三个月之后根据能力分流到五家快餐店实习。十个学编程的由林晨的AI训练营团队负责培训,线上课程加线下辅导,学习周期四个月,学完之后推荐就业。
这是晨光助学基金的第一批资助学生。
名单定下来那天,林晨在办公室里把二十个人的资料看了一遍。每个人的学习计划书他都看了,每个人的面试记录他也看了。他在笔记本上写了一行字:
第一批,20人。学厨10人,学编程10人。三个月后看成效。
写完之后,他拿起手机,给陈涛发了一条消息:
陈涛,下周一到中央厨房报到。地址发你。到了先找林浩,他会安排你。记住他跟你说的话,他说的每一句都是经验。
三分钟后,陈涛回了一条:
收到。谢谢林总。
林晨把手机放下,没有回不客气。他在心里想:不需要谢。如果你学出来了,以后也有人蹲在公交站下面看简历的时候,你帮他就行了。
那天晚上,他回家吃饭。他妈做的菜——红烧肉、炒青菜、蒸蛋、紫菜汤。乐乐在旁边跟爷爷下棋,苏婉帮他妈端菜。
林晨吃了一口红烧肉,说:妈,你这红烧肉做得比以前好了。
当然好了。他妈说,你那个厨房里调料多,我用了两个你以前没用过的。
哪两个?
八角和桂皮。他妈说,以前在老家舍不得放,这里随便用。
林晨听出来了。他妈不是在说调料,是在说——在这里,她舍得放了。在老家,八角桂皮是省着用的,一包八角要用半年,桂皮掰一小块就收起来。在这里,调料就在架子上摆着,想用多少用多少。这不仅是钱的问题,是一种心态——不再紧着了。
他低头继续吃,没有再说话。饭桌上的灯很亮,照着一家人的脸。他爸在吃第二碗饭,乐乐赢了爷爷一局在高兴地拍手,苏婉给他妈夹了一块肉,他妈笑着推说够了够了。
窗外的深圳湾,灯光铺在水面上,像撒了一把碎金子。
第395章 行业影响
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第396章 纪录片拍摄
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第397章 纪录片播出
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第398章 米其林评审
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第399章 等待结果
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第400章 王者归来
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第401章 米其林揭晓
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第402章 一星荣耀
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第403章 庆功宴
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第404章 媒体轰动
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第405章 预约爆增
预约系统是在米其林公布后的第三天崩溃的。
不是比喻,是真的崩溃了。晨枫·雅的预约小程序在周三下午两点零七分宕机了,原因是同时访问的人数超过了服务器的承载上限。林晨当时在中央厨房的办公室里看报表,手机忽然震了十几下——全是杨帆发的消息。
林总,预约系统打不开了。
客人打电话来问,说小程序一直转圈。
已经有十几个人打电话到餐厅前台了。
怎么办?
林晨打开电脑,登录服务器后台。cpU使用率百分之百,内存使用率百分之九十二,数据库连接池满了。他看了三十秒,判断出问题——不是代码的问题,是流量的问题。预约小程序用的是他三年前写的那个框架,设计的时候最大并发量是五百。现在同时访问的人超过了两千。
他花了二十分钟重构了数据库连接池,加了负载均衡,把静态资源切到了cdN。二十分钟后,预约系统恢复了。他刷新了一下后台,看到了一个数字——待处理的预约申请:一千二百四十七个。
一千二百四十七个预约申请。晨枫·雅只有十二张桌子,每天只做两轮——午市一轮,晚市一轮。一天最多接待二十四桌客人。一千二百四十七个预约申请,意味着预约已经排到了五十二天之后。
林晨看着这个数字,没有高兴,也没有紧张。他在想一个问题——怎么处理这些预约。
他给杨帆打了一个电话。
系统恢复了。现在有一千二百四十七个预约申请。
杨帆在电话那头倒吸了一口气。一千二百四十七个?我们一天只能接二十四桌。
我知道。所以我们需要一个预约管理策略。
什么策略?
第一,不扩大接待量。十二张桌子,两轮,不变。第二,不涨价。第三,不设VIp通道。所有人按预约时间排队。
杨帆停了一下。那排到三个月后怎么办?
就排到三个月后。林晨说,三个月后的事,三个月后再说。
客人会不满意的。
让客人排队等的不高兴,总比让客人吃到差菜的不高兴要好。林晨说,如果为了满足更多人而降低品质,那些好不容易预约到的客人吃到的不是最好的菜,他们才会真正不高兴。
杨帆没有说话。林晨知道她在想什么——她在想那些打来电话的客人,那些在小程序上刷了半个小时的人,那些从外地专程飞来深圳却预约不到的人。杨帆是前厅经理,她的工作是让每一个走进餐厅的客人满意。现在有上千个客人进不来,她心里不舒服。
杨帆。林晨说。
你做得很好。预约排到三个月后,不是你的问题,是餐厅的问题。餐厅的问题是——它只有十二张桌子。十二张桌子能接待的客人是有限的,但林浩做的菜值得等。值得等的东西,等三个月不算久。
杨帆沉默了几秒。我知道了。
挂了电话,林晨靠在椅背上,看着电脑屏幕上的预约后台。一千二百四十七个预约申请,每一个都是一个真实的人——有人可能是看了抖音来的,有人可能是看了南方都市报来的,有人可能是朋友推荐的,有人可能是米其林指南的忠实读者。他们来自不同的地方,有不同的理由,但他们都想做同一件事——吃一顿林浩做的菜。
林晨想起了三年前。三年前他在科技园中区数人流量,站在铺位门口,戴着墨镜,手里拿着一瓶矿泉水,数经过门口的人。一百二十七个人。他记得那个数字。那时候他在想,这一百二十七个人里,有多少人会走进来。
现在他不需要数了。有一千二百四十七个人想走进来,但门只有一扇。
下午,林晨去了一趟晨枫·雅。
他到的时候是下午三点,午市已经结束了,晚市还没开始。杨帆在前台整理预约本——不是小程序上的预约,是电话预约。有些客人不习惯用小程序,直接打电话到前台。杨帆把每一个电话预约都记在一个本子上,本子是那种老式的硬壳笔记本,封面是黑色的,内页是横线纸。她已经记了半本了。
林总。杨帆看到他进来,把本子递过来。电话预约的有三百多个。我按时间顺序排好了。
林晨接过本子,翻了几页。每一页都写着客人的名字、电话、预约时间、人数、备注。备注栏里有各种各样的内容——结婚纪念日从北京专程飞来太太是米其林指南的忠实读者想给父亲过七十大寿。
他翻到一页,停住了。备注栏里写着:儿子得了白血病,化疗结束后想吃一顿好的。他说想看看米其林餐厅是什么样的。
林晨看着这行字,看了很久。
这个预约是什么时候的?
杨帆看了一眼。昨天下午。一个女的打来的,声音很轻,说话的时候一直在忍哭。
你给她排了什么时间?
我还没排。杨帆说,我不知道该怎么排。如果按顺序排,她要排到三个月后。但——她没有说下去。
林晨合上本子,还给杨帆。给她排下周三晚上。七点半。靠窗的位置。
但是下周三已经排满了——
从我的预留位里出。林晨说。晨枫·雅有三张桌子是预留位,不对外开放预约,留给林晨自己招待朋友或家人的。这三张桌子平时大部分时间是空的,因为林晨很少招待人。
杨帆点了一下头,在本子上记了一笔。
林晨在餐厅里走了一圈。午市刚结束,服务员正在换桌布。白色桌布从桌上抽下来,换上新的,四个角拉平,没有一丝褶皱。餐具重新摆好——白瓷盘在左,银刀叉在右,水晶杯在正前方。蜡烛换新的,花换新的。一切跟平时一样,不多也不少。
他走到后厨门口。林浩不在——林浩下午在中央厨房教徒弟。后厨里只有阿成在备料,他在切葱,刀起刀落,葱花均匀地落在案板上。
阿成。
阿成抬起头。林总。
下周三晚上,有一个特殊的客人。一个白血病的孩子,化疗刚结束,想来吃一顿好的。
阿成的手停了一下。孩子多大?
不知道。预约的是一个女的,应该是孩子的妈妈。
阿成沉默了几秒。然后他说了一句话:我给他做一道甜品。不是菜单上的。是我自己想的。
什么甜品?
还没想好。阿成说,但我会想好的。
林晨点了一下头,走出后厨。
晚上回到家,林晨把这件事告诉了苏婉。
苏婉正在叠衣服。她听完之后,把手里的一件衬衫叠好,放在沙发上,然后说了一句话:你做得对。
什么做得对?
把预留位给那个孩子。苏婉说,米其林一星是荣誉,但荣誉不是用来摆架子的。是用来做对的事的。
林晨没有说话。他坐在沙发上,看着苏婉叠衣服。苏婉叠衣服的方式很特别——她不是随便叠的,是先把衬衫的扣子全部扣好,然后翻过来,袖子往中间折,下摆往上折,最后翻回来,整整齐齐。每一件衬衫叠出来都是一样大小,像用尺子量过的。
婉儿。
你说那个孩子,化疗刚结束,身体那么虚弱,为什么想来吃一顿米其林?
苏婉停下手里的动作,想了一下。因为他想确认一件事。
什么事?
确认这个世界还有好东西。苏婉说,化疗的时候,他每天看到的都是针头、药水、白色的病房。那些东西让他觉得世界是苦的。他想吃一顿好的,想确认这个世界还有甜的、香的、好看的。他想确认,活着是值得的。
林晨看着苏婉。苏婉的眼睛在灯光下很亮,不是泪光,是一种很安静的光。
你怎么知道?他问。
因为我是老师。苏婉说,我教过生病的孩子。他们比健康的孩子更懂得什么是好的。因为他们失去过。
林晨伸出手,握住了苏婉的手。苏婉的手是温的,指尖有一点洗衣液的凉。她没有缩回去,就让他握着。
下周三,我们一起去。林晨说。
下周三晚上七点半,那对母子来了。
妈妈大概三十五六岁,穿了一件洗得发白的碎花连衣裙,头发扎成一个马尾,脸上没有化妆,眼睛下面有很深的黑眼圈。她牵着一个男孩,男孩大概七八岁,戴着一顶鸭舌帽——帽子下面没有头发,头皮是青色的。他很瘦,锁骨从t恤的领口里凸出来,像两根细细的树枝。但他的眼睛很亮,走进餐厅的时候,他抬头看了一眼吊灯,说了一句:好漂亮。
杨帆领他们坐到靠窗的位置。男孩坐在椅子上,脚够不到地面,在椅子下面晃来晃去。他看着桌上的餐具——白瓷盘、银刀叉、水晶杯——每一样都看得很仔细,像是在看博物馆里的展品。
妈妈,这个杯子是真的水晶吗?
应该是的。
水晶是不是很贵?
那我们小心一点,不要打碎了。
林晨站在角落里,听着这段对话。他没有走过去,只是站在那里,看着。
阿成从后厨端出了第一道菜——不是菜单上的任何一道菜,是一道他专门为这个男孩做的甜品。甜品装在一个白色的瓷碗里,碗底铺着一层芒果布丁,布丁上面放着一个冰淇淋球,冰淇淋球上面插着一根巧克力棒,巧克力棒上站着一只糖做的小熊。小熊是阿成自己捏的,用糖霜和食用色素,捏了一个下午。小熊的肚子圆滚滚的,耳朵竖着,嘴角往上翘,像是在笑。
阿成把甜品放在男孩面前。这是送你的。
男孩看着那只糖小熊,眼睛亮得像两颗星星。这是小熊!
对。它叫阿成熊。
为什么叫阿成熊?
因为做它的人叫阿成。
男孩笑了。他笑的时候,嘴角往上翘,跟那只糖小熊一模一样。他拿起勺子,小心翼翼地舀了一勺布丁,放进嘴里。布丁是芒果味的,甜中带一点酸,冰凉滑嫩。他嚼了两下,咽下去,然后说了一句话。
妈妈,这个好好吃。
他妈妈看着他,眼睛红了。不是哭,是眼眶红了,眼泪在眼眶里打转但没有掉下来。她伸手摸了一下男孩的脸,说了一句:好吃就多吃点。
男孩又舀了一勺,这次舀的是冰淇淋。冰淇淋是香草味的,奶香浓郁,在嘴里化开,凉意从舌尖蔓延到喉咙。他闭上眼睛,像是在感受那个凉意从嘴里一直流到肚子里。
妈妈,冰淇淋也是甜的。
比医院的药甜。
他妈妈的手停在半空。她看着男孩,嘴唇动了一下,但没有说出话来。她低下头,用桌布擦了一下眼睛。
林晨转过身,走进了后厨。
阿成站在灶台前,正在做下一道菜。他看到林晨进来,问了一句:他喜欢吗?
喜欢。林晨说,他说比医院的药甜。
阿成的手停了一下。然后他继续做菜,没有说话。但他做菜的动作比平时更轻了——放盐的时候少放了一点,颠锅的时候多颠了一下,摆盘的时候多停了两秒。
林晨站在后厨门口,看了一会儿,转身走了出去。
周五下午,央视财经频道的采访如约进行。
摄制组来了三个人——一个记者、一个摄像、一个灯光。他们把机器架在中央厨房的灶台前面,灯光打在林浩身上,把他的围裙照得发白。林浩站在灶台前,手不知道往哪放。他一会儿把手插在围裙口袋里,一会儿又拿出来,最后干脆拿起锅铲,开始切葱。
记者是个三十出头的女的,短发,说话很快。她让林浩一边做菜一边聊,说这样自然。林浩就一边切葱一边回答问题。
你是什么时候开始学做菜的?
三年前。
为什么想做菜?
林浩的刀停了一下。因为做菜的时候,我知道自己在做什么。
在电子厂的时候不知道吗?
在电子厂的时候,我闭着眼睛都能把零件装好。但装好了又怎么样?明天还是装同样的零件。做菜不一样——每一锅回锅肉都是新的。火候不一样,肉不一样,豆瓣酱的咸度不一样。你永远做不到完全一样,但你在努力接近一样。这个过程让我觉得——他停了一下,找了一个词。活着。
记者在本子上记了一笔。摄像把镜头推近,拍林浩切葱的手。刀起刀落,葱花均匀地落在案板上,每一片都一样大。
采访播出来是两周之后的事。林晨在电视上看了——林浩站在灶台前,围裙上沾着油渍,手里拿着锅铲,说做菜的时候,我知道自己在做什么。镜头切到他的手上,手指上有一层薄薄的茧子,是颠锅磨出来的。
苏婉在旁边说了一句:林浩上电视比你还自然。
林晨说:因为他说的都是真的。
第406章 品牌价值
米其林一星的效应,最先体现在数字上。
林晨是在周四早上看周报的时候发现的。他每周四早上会看上一周各家店的经营数据——营收、成本、利润、翻台率、客单价、会员复购率。这个习惯从第一家店开业就开始了,从来没有断过。
他先看的是中区店的数据。中区店上周的营收是十七万,比前一周增长了百分之四十二。他以为是数据出错了,刷新了一下页面——没错,十七万。中区店平时的周营收在十二万左右,好的时候到十四万。十七万是历史最高。
他接着看南区店。南区店上周营收十五万,增长百分之三十六。cbd店十八万,增长百分之三十八。宝安店十四万,增长百分之四十。龙华店十四万,增长百分之三十五。
五家快餐店,上周总营收七十八万。前一周是五十五万。增长了百分之四十二。
林晨看着这些数字,没有高兴,也没有惊讶。他在想一个问题——这个增长是可持续的,还是脉冲式的。
他打开会员数据。上周新注册会员三千二百人,是平时的四倍。新会员的来源渠道分布——百分之四十五来自抖音,百分之三十来自公众号,百分之十五来自朋友推荐,百分之十来自其他。他往下翻,看新会员的首单转化率——百分之七十八。也就是说,三千二百个新会员里,有两千五百人已经消费了至少一次。
他又看复购数据。新会员中,消费两次以上的占百分之二十三。这个数字比平时低——平时的新会员二次复购率在百分之三十五左右。这说明什么?说明很多人是冲着米其林的热度来的,吃完一次就走了,不一定会再来。
但百分之二十三的留存率,乘以三千二百人,是七百三十六人。这七百三十六人,是米其林一星带来的真正价值——不是流量,是留存。
林晨在笔记本上写了一行字:米其林效应:流量增长42%,留存率23%。短期看流量,长期看留存。
他合上笔记本,给林枫打了一个电话。
哥,你看上周的数据了吗?
看了。林枫说,五家店涨了四成。我在想一个问题。
什么问题?
我们要不要趁这个机会涨价?
林晨没有马上回答。他靠在椅背上,看着窗外。中央厨房的窗外是龙岗工业区的铁皮厂房,午前的阳光照在灰色的铁皮上,反射出一种闷热的光。
你觉得该涨吗?他问。
从商业角度,该涨。林枫说,米其林一星是品牌溢价。同样的回锅肉,以前卖二十八块,现在卖三十五块,客人不会觉得贵。因为他们吃的不是回锅肉,是米其林一星团队做的回锅肉。
然后呢?
然后利润会更高。五家店涨百分之二十的价,月利润能多出四十万。
林晨拿起桌上的笔,在指尖转了一圈。哥,你说得对。从商业角度,该涨。但有一个问题。
什么问题?
我们的客人是谁?
林枫停了一下。科技园的白领。
科技园的白领,月薪大概一万到两万。他们中午吃一顿饭的预算是二十五到三十五块。我们现在的客单价是三十五块,刚好在他们的预算上限。如果涨到四十二块,就超出了他们的预算。他们会怎么选?
他们会选更便宜的。
林晨说,他们会去隔壁的兰州拉面,或者楼下的沙县小吃。他们不是不喜欢我们的菜,是吃不起。米其林一星是好事,但如果因为米其林一星让原来的客人吃不起了,那米其林一星就不是好事。
林枫沉默了几秒。那你的意思是?
不涨价。林晨说,快餐店不涨价。五家店的价格维持不变。回锅肉二十八块,酸菜鱼三十二块,宫保鸡丁二十六块。跟米其林之前一样。
那米其林一星的价值怎么体现?
体现在别的地方。林晨说,不是体现在价格上,是体现在品牌上。客人走进晨枫快餐,知道这家店的背后有一个米其林一星团队。他花二十八块吃到的回锅肉,跟米其林餐厅里的回锅肉用的是同一个标准。这个认知本身就是价值。
但这个价值不直接产生利润。
它产生的是比利润更重要的东西——信任。林晨说,客人信任晨枫,不是因为晨枫便宜,是因为晨枫始终如一。米其林之前是这个价,米其林之后还是这个价。他不会觉得你在收割他。他会觉得你在尊重他。信任一旦建立起来,他不仅自己来,还会带朋友来,带家人来,带同事来。这种增长比涨价带来的增长更持久。
林枫在电话那头想了一会儿。你说得对。快餐店不涨价。但晨枫·雅呢?
晨枫·雅也不涨。林晨说,米其林之前人均五百,米其林之后还是人均五百。不是因为五百是合理的价格,是因为五百是我们定的价格。定了就不改。
你确定?
确定。
林枫没有再说什么。他了解林晨——林晨说的时候,就是真的确定了。
不涨价的决定,在内部引起了一些讨论。
周小敏是第一个提出疑问的。她在周五的晨会上说:林总,现在五家店门口每天排长队,供不应求。涨价是最合理的应对。为什么我们不涨?
林晨没有直接回答。他拿起桌上的菜单,翻到回锅肉那一页。这道菜我们卖二十八块。你觉得客人愿意花多少钱吃它?
周小敏想了一下。四十块?毕竟米其林一星。
对。四十块。林晨把菜单放下。但我们只收二十八块。那十二块的差额,客人会记住。下次他站在科技园楼下,左边是兰州拉面二十块,右边是我们二十八块。他会想——晨枫的回锅肉,米其林标准,二十八块。然后他走进来。
你的意思是,不涨价本身就是一种广告?
不是广告。是记忆。林晨说,广告会忘,记忆不会。
周小敏点了一下头。
杨帆也问了。她问的不是经济学问题,是实际操作问题。林总,不涨价的话,排队的人会越来越多。我们怎么处理排队?
发号。林晨说,排队超过二十分钟就发号。让客人先回去,半小时后再来取。如果半小时后还没排到,就送一张优惠券——不是打折券,是下次来可以免费加一个菜。
免费加菜?
对。不是打折。打折是降价,降价会让人觉得你的东西不值钱。免费加菜是赠送,赠送会让人觉得你大方。感觉不一样。
杨帆在本子上记了一笔。
林浩是唯一一个没有问的人。他听完林晨的决定之后,只说了一句话:不涨价是对的。
为什么?
涨价了有些人就吃不起了。林浩说,我不想那样。
林晨看着林浩。林浩说这句话的时候,正在切葱。刀起刀落,葱花均匀地落在案板上。他没有抬头,没有停下手里的动作,就像在说一件理所当然的事。
林晨想,这就是林浩。三年前他在电子厂装零件,月薪三千五。现在他是米其林一星主厨,收入翻了十倍不止。但他还是觉得,做菜是为了卖给想吃的人,不是为了卖给有钱人。
有些东西,钱改变不了。
不涨价的效果,在第二周就体现出来了。
中区店门口排队的人没有减少,反而更多了。不是因为米其林的热度还在,是因为口碑传开了——晨枫快餐不涨价,米其林一星团队做的回锅肉还是二十八块。这句话在科技园的微信群里传开了,在公司的茶水间里传开了,在中午的食堂里传开了。
林晨在中区店巡店的时候,听到两个客人在聊天。两个人都穿着科技园常见的格子衫,胸前挂着工牌,桌上各放着一盘回锅肉。
你听说了吗?这家店的老板拿了米其林一星。
听说了。但价格没涨。
对啊,回锅肉还是二十八。我上周来吃了一次,这周又来了一次。味道确实好。你不知道,我以前中午都去楼下那家湘菜馆,三十五一份小炒肉,肉还少。这里二十八,肉多,味道还稳定。
我也是。以前一个月来两三次,现在一周来两三次。我们组五个人,现在四个都在这吃。
林晨从他们身边走过去,没有说话。他走到出餐口,看了一眼厨房。阿伟正在炒回锅肉,灶火窜起来,肉片在锅里翻卷。
第二周的周报出来了。五家快餐店的总营收是八十一万,比第一周又涨了百分之三点八。新会员注册数回落到了一千二百人,但二次复购率从百分之二十三升到了百分之三十一。
林晨在笔记本上写了一行字:第二周:流量回落,留存上升。不涨价策略开始生效。
他又写了一行:不涨价。看留存。
他合上笔记本,靠在椅背上。窗外,龙岗工业区的铁皮厂房在午后的阳光里泛着灰色的光。远处有一辆货车正在倒车,倒车灯一闪一闪的,像心跳。
他想起三年前在科技园中区看铺位的时候,林枫问他:你觉得这个位置能赚钱吗?
他说:不知道。但我知道一件事——如果你把菜做好了,价格定合理了,客人会来的。
三年后,他用数据证明了这句话是对的。
不是因为那块铜牌。是因为他从来没变过。
第407章 月利润破百万
月利润破百万的那个月,林晨正在修打印机。
中央厨房办公室里的那台老打印机又卡纸了。这已经是这个月第三次了。林晨蹲在地上,把打印机后盖打开,从滚轴里抽出一张皱巴巴的A4纸。纸上是上个月的采购清单,边角被滚轴碾碎了,像被老鼠啃过。
他把纸揉成一团扔进垃圾桶,重新装了一叠纸,盖上后盖,按了一下打印键。打印机嗡嗡地响了几秒,吐出了一张纸——是林枫发过来的月度财务报表。
林晨拿起报表,站在打印机旁边看。
第一行:晨枫快餐五家店,本月营收合计——三百一十二万。
第二行:晨枫·雅,本月营收——一百二十五万。
第三行:中央厨房对外配送(企业食堂),本月营收——六十七万。
第四行:合计营收——五百零四万。
他往下看。
总成本:食材成本一百六十五万,人工成本九十五万,房租成本九十五万,水电物业三十五万,折旧摊销十八万,其他费用十二万。合计成本四百二十万。
税前利润:八十四万。加上投资账户本月收益十八万,税前总利润一百零二万。
净利润(税后):八十二万。加上投资收益,月入首次突破百万。
林晨看着最后一个数字,看了大概十秒钟。然后他把报表放在桌上,继续修打印机。
打印机又卡纸了。
他从滚轴里又抽出一张皱巴巴的纸,这次是上个月的工资表。他把纸揉成一团扔进垃圾桶,忽然停住了。他站在垃圾桶前面,看着里面那两团纸——一团是采购清单,一团是工资表。两张纸都皱巴巴的,边角被碾碎了,像两团废纸。
但这两团废纸代表的东西不一样。采购清单代表的是成本——每一斤猪肉、每一把葱、每一瓶酱油,都是成本。工资表代表的是人——阿伟、小周、小杨、小志、小陈、杨帆、周小敏、中央厨房的采购、配送司机、洗碗阿姨,每一个人都是人。
他蹲下来,把那团工资表从垃圾桶里捡出来,展平,放在桌上。纸已经皱了,但上面的字还能看清——阿伟,基本工资八千,绩效奖金三千,合计一万一千。小周,基本工资七千,绩效奖金两千五,合计九千五百。小杨,基本工资六千五,绩效奖金两千,合计八千五百。
他看了一遍所有人的工资,然后拿起笔,在工资表旁边写了一行字:下个月,所有人涨薪百分之二十。
他拍了一张照片发给林枫。
林枫秒回:你确定?
确定。
为什么?
因为月利润破百万了。林晨打字回复,利润不是省出来的,是赚出来的。赚出来的利润,应该分给赚它的人。
林枫没有回消息。过了大概五分钟,他发了一条:你说得对。我去做新的工资表。
林晨放下手机,继续修打印机。这次他找到了卡纸的真正原因——滚轴上缠了一根橡皮筋,不知道是谁掉进去的。他用镊子把橡皮筋夹出来,重新装好纸,按了一下打印键。打印机嗡嗡地响了几秒,吐出了一张干净的纸。
他把那张纸拿起来,放在桌上。纸是空白的,什么都没有。
他拿起笔,在纸上写了一行字:月利润破百万。
然后他把纸折好,放进抽屉里。抽屉里还有几张类似的纸——第一家店开业月营收破十万月营收破五十万月营收破百万米其林一星。每一张纸上都只写了一行字,每一行字都是一个里程碑。
他把抽屉关上,站起来,走出办公室。
涨薪的消息是周五下午公布的。
林晨让周小敏把新的工资表打印出来,贴在中央厨房的公告栏上。公告栏在厨房门口,平时贴的是排班表和备料清单。新的工资表贴在正中间,用红色的记号笔在标题上写了四个字——涨薪通知。
阿伟是第一个看到的。
他端着一筐洗好的土豆从厨房里出来,路过公告栏的时候停了一下。他看了一眼工资表,又看了一眼,然后把土豆筐放在地上,凑近了看。
涨薪了?
小周从厨房里探出头来。什么涨薪?
工资涨了。涨了百分之二十。
小周放下手里的锅铲,走到公告栏前面。她看了一遍工资表,用手指指着自己的名字——小周,基本工资七千,绩效奖金两千五,合计九千五百。旁边用红笔写了一行字:下月起,基本工资上调20%。
真的涨了?
真的。阿伟说,你看,林总签了字的。
小周看着工资表上林晨的签名——两个字,用黑色签字笔写的,笔画很稳,没有连笔。她看了几秒,然后转身走回厨房,拿起锅铲,继续炒菜。
但她炒菜的动作比平时快了半拍。颠锅的时候多颠了一下,放盐的时候手抖了一下,多放了半勺。她尝了一口,皱了皱眉,把菜倒掉了,重新做。
阿伟把土豆筐端进厨房,放在备料台上。他站在灶台前,打开火,开始做回锅肉。他切肉的时候,刀起刀落,肉片薄厚均匀。他炒肉的时候,火候刚好,豆瓣酱在油里炸出红油,肉片在锅里翻卷,边缘微微焦黄。他出锅的时候,颠了一下锅,肉片在空中翻了一个跟头,落在盘子里,摆成了一个扇形。
林浩站在出菜口旁边,看着阿伟做这道回锅肉。阿伟做完之后,把盘子端到出菜口,放在林浩面前。
师父,你尝一下。
林浩拿起筷子,夹了一片肉,放进嘴里。他嚼了两下,放下筷子。
今天这道回锅肉,比你之前做的都好。
我知道。阿伟说。
为什么?
因为涨薪了。阿伟说。他停了一下,像是在想怎么表达。说不上来。就是觉得……做菜更有劲了。
林浩看着阿伟。阿伟的围裙上沾着油渍,额头上有一层细汗,手里还拿着锅铲。他说做菜更有劲了的时候,语气很平,不是在抱怨,也不是在感动,就是在说一个事实。
林浩想,这就是涨薪的意义。不是那百分之二十的钱——百分之二十,对阿伟来说是一千六百块。一千六百块不少,但不足以改变什么。改变的是那口气。那口气比一千六百块值钱。
晚上,林晨在家里算了一笔账。
他坐在书房里,面前摊着三张纸——一张是月度财务报表,一张是投资账户的截图,一张是他自己的笔记本。
财务报表上写着:本月净利润八十二万。林晨占股百分之五十四,分红四十四万。
投资账户截图显示:总资产八百六十五万,本月收益十八万。
笔记本上写着:工资收入(已辞职,无)+ 餐饮分红四十四万 + 投资收益十八万 = 月入六十二万。
他看着这个数字,想起了三年前。三年前他在t厂,月薪三万二,加上年终奖,年入大概五十万。那时候他觉得五十万已经很多了——够还房贷,够养家,够给乐乐报培训班,够偶尔带苏婉去吃一顿好的。
现在他月入六十二万。是那时候的二十倍。
但他没有觉得特别兴奋。不是因为麻木了,是因为钱的边际效用递减了。当你月入三万的时候,多一万块你会很高兴,因为那一万块可以让你多还一点房贷,多存一点钱,多给乐乐报一个班。当你月入六十二万的时候,多十万块你不会有什么感觉,因为你的生活已经不需要更多的钱了。
他拿起笔,在笔记本上写了一行字:财富自由不是钱的绝对数量,是有选择的权利。我现在可以选择做任何事,也可以选择不做任何事。这就是自由。
他合上笔记本,走出书房。
苏婉在客厅看电视。乐乐在旁边写作业。他妈在厨房洗碗。他爸在阳台上浇花。
他走到阳台上,站在他爸旁边。他爸正在给一盆兰花浇水,水从壶嘴里流出来,细细的一条,浇在花盆的土上,发出沙沙的声音。
这个月餐厅的利润破百万了。
他爸的手停了一下。水壶还举在半空,水从壶嘴里流出来,浇在兰花叶子上,叶子抖了一下。
破百万?
嗯。净利润。
他爸把水壶放下来,放在花盆旁边。他看着那盆兰花,看了几秒。兰花开了三朵,花瓣是淡紫色的,花心是黄色的,在夜风里轻轻摇晃。
你妈今天买了条鱼。他爸说。
什么鱼?
鲈鱼。她说清蒸。
他爸拿起水壶,继续浇花。水从壶嘴里流出来,细细的一条,浇在花盆的土上。他没有再说关于钱的事。
但林晨知道,他爸听到了。他爸只是不说。他爸这一辈子,从来没有说过你真棒我为你骄傲。他说过的最接近的话是好事不怕等。但林晨知道,他爸浇花的时候手停的那一下,就是他说我为你骄傲的方式。
林晨在阳台上站了一会儿。夜风吹过来,带着兰花的清香和远处海水的咸味。深圳的灯光在远处铺成一片,万家灯火从近到远连成一条河。
他转身走回客厅。乐乐抬起头看了他一眼。
爸,我这道题做不出来。
什么题?
鸡兔同笼。
林晨在乐乐旁边坐下来,拿起笔,在草稿纸上画了一个笼子,里面画了几只鸡和几只兔子。
假设笼子里全是鸡——
我知道,假设全是鸡,然后算脚的数量,差出来的就是兔子的脚。乐乐说,但我算出来的兔子是半只。
林晨看了一眼乐乐的算式。你这里少了一个步骤。假设全是鸡之后,算出来的脚的数量跟实际的脚的数量有一个差。这个差除以二,才是兔子的数量。你除以四了。
为什么除以二?
因为兔子比鸡多两只脚。不是多四只。
乐乐想了一下,重新算了一遍。这次算对了——五只鸡,三只兔子。他在答案旁边画了一个勾,然后把笔放下。
你今天好像很高兴。
为什么这么说?
因为你教我做题的时候,嘴角是往上翘的。
林晨摸了一下自己的嘴角。确实往上翘了。他自己都没有注意到。
今天餐厅的利润破百万了。他说。
一百万是多少?
可以买很多鸡和兔子。
乐乐笑了。那我们可以养真的鸡和兔子吗?
不可以。公寓不让养。
那我们可以买很多乐高吗?
可以。
乐乐高兴得在椅子上跳了一下。然后他低下头,继续做题。下一道题是行程问题——小明从A地到b地,速度是每小时五公里。
林晨看着乐乐做题,想起了五年前。五年前他教乐乐做数学题的时候,脑子里想的是房贷、面试、简历。他教得心不在焉,乐乐问他问题,他有时候要问两遍才能反应过来。
现在他教乐乐做题,脑子里只有鸡和兔子。
他合上乐乐的作业本,关了灯。客厅里安静下来,只有空调出风口的嗡嗡声。
第408章 财富的平静
林晨是在一个周三的下午发现自己对钱麻木了的。
那天他去银行办一笔转账——晨光助学基金要给新一批受助学生打款,一共二十个人,每人每学期五千块,合计十万块。他站在银行柜台前面,柜员把转账单递给他签字。他拿起笔,在签名栏里写了两个字,然后把单子推回去。
柜员看了一眼单子,又看了一眼他。林先生,您确认转账金额是十万元吗?
确认。
好的,请稍等。
柜员在电脑上操作了几秒,然后抬起头。已转账成功。请问还有其他业务吗?
没有了。谢谢。
林晨走出银行,站在门口,看了一眼手机。银行App推送了一条消息——您尾号xxxx的账户支出100,000元,余额8,472,361元。
他看着这条消息,看了大概三秒钟。然后他把手机锁了,放进口袋,走向停车场。
三年前,他转出十万块的时候,手会抖。不是真的抖,是心里抖——十万块是他三个月的工资。每一笔大额支出他都会反复确认,转账之前要看三遍账号,转完之后要看三遍余额。
现在他转出十万块,跟买一杯咖啡差不多。他想了想,不是麻木了。是这十万块要做的事,比这十万块本身重要。
他开车回中央厨房的路上,经过了一个公交站。公交站旁边有一个卖烤红薯的大爷,推着一辆三轮车,车上放着一个铁桶,铁桶里装着炭火和红薯。红薯在炭火上烤得皮焦肉软,香味从铁桶里飘出来,飘过公交站,飘过人行道,飘进林晨的车窗里。
林晨把车停在路边,下了车,走到三轮车前面。
大爷,红薯怎么卖?
五块一个,十块三个。
来三个。
大爷用火钳从铁桶里夹出三个红薯,装进一个纸袋里,递给林晨。红薯烫得纸袋都软了,热气从袋口冒出来,带着炭火和焦糖的香味。林晨接过纸袋,给了大爷十块钱。
大爷接过钱,看了他一眼。你是那个——电视上那个?
什么电视?
深圳台。那个开餐厅的。米其林。
林晨愣了一下。您看过那个节目?
看过。大爷说,我孙女给我看的。她说这个叔叔以前也是打工的,后来开了餐厅,评上了什么星。
米其林一星。
对,米其林。大爷把火钳放回铁桶里,在围裙上擦了擦手。我孙女说,她以后也要学做饭,也要评那个星。
林晨看着大爷。大爷大概六十多岁,脸上有很深的皱纹,手上有炭火烧出来的茧子。他的三轮车上挂着一个牌子,上面写着烤红薯三个字,字是用粉笔写的,有些笔画已经模糊了。
您孙女多大了?
十二。上六年级。
她喜欢做饭?
喜欢。大爷说,她妈在电子厂上班,晚上回来晚。她放学回家就自己做饭。炒土豆丝、西红柿炒蛋、煮面条。做得不好吃,但她喜欢做。
林晨从口袋里拿出一张名片,递给大爷。这是我的电话。如果您孙女想学做饭,可以来我们餐厅看看。不是来吃饭,是来看看厨房是什么样的。
大爷接过名片,看了一眼。名片上印着晨枫餐饮 林晨,下面是电话号码。他把名片翻过来,背面印着晨枫的Logo——六边形边框,枫叶剪影,晨枫绿。
这个是真的吗?大爷问。
真的。
大爷把名片小心翼翼地放进胸前的口袋里,用手按了一下。谢谢。
不用谢。
林晨拿着三个烤红薯回到车上。他把纸袋放在副驾驶座上,发动引擎。红薯的香味在车里弥漫开来,混着炭火和焦糖的味道,像小时候冬天在路边买的那种。
他拿起一个红薯,剥开皮,咬了一口。红薯很甜,很糯,很烫。烫得他舌头麻了一下,但他没有吐出来,而是含在嘴里,等它凉一点再咽下去。
他想起了一件事。五年前,他失业的时候,有一次路过一个烤红薯摊,想买一个。他站在摊前看了几秒,然后走开了。不是因为五块钱太贵。是觉得一个失业的人,不该吃烤红薯。红薯是热乎的,日子是冷的,不配。
现在他买了三个。没看价格。红薯还是那个味道,炭火烤的,皮焦肉软,烫手。他咬了一口,甜味从舌尖漫开来,暖的。
他把红薯吃完,把皮扔进纸袋里,擦了擦手,继续开车。
下午,他去了晨光助学基金的办公室。
办公室在中央厨房的二楼,是一间不到二十平的小房间,里面摆着两张桌子、两台电脑、一个文件柜。基金会的专职人员只有一个——一个叫小周的姑娘,二十五岁,刚毕业两年,学的是社会工作。她一个人负责审核申请、联系学校、发放助学金、跟踪受助学生的学业情况。
林晨到的时候,小周正在打电话。她在跟一个受助学生的班主任沟通——那个学生最近成绩下滑了,班主任想了解一下是不是家庭出了什么问题。小周一边听电话一边在本子上记,眉头皱着,笔在本子上画了一个又一个圈。
她挂了电话,看到林晨站在门口,站起来叫了一声。
林晨在另一张桌子旁边坐下来。刚才那个学生怎么了?
叫陈小梅,贵州的。上学期成绩很好,这学期忽然下滑了。班主任说她上课总是走神,作业也不交。我打电话去她家里问了一下——她爸上个月在工地上摔伤了,现在在家躺着,她妈一个人打两份工。小梅放学回家要照顾她爸,还要做饭洗衣服,没时间写作业。
林晨沉默了几秒。我们能做什么?
我已经联系了当地的社工,看能不能帮她家申请一些临时救助。另外我想给她加一笔生活补助,每个月多五百块,让她妈可以少打一份工。
但是我们的预算——
预算不够就跟我说。林晨说,助学基金的钱不是死的。需要多少就拨多少。
小周点了一下头,在本子上记了一笔。
林晨看着小周的本子。本子上密密麻麻地记着各种信息——学生的名字、学校、年级、家庭情况、学业情况、心理状态。有些名字旁边画了星号,表示需要特别关注。有些名字旁边画了勾,表示情况稳定。有些名字旁边画了问号,表示信息不完整需要跟进。
现在资助了多少学生?林晨问。
四十个。二十个学厨艺的,二十个学编程的。
成功率怎么样?
学厨艺的,百分之八十五完成了培训,百分之七十找到了工作。学编程的,百分之六十完成了培训,百分之四十五找到了工作。
编程的为什么比厨艺的低?
编程的门槛比厨艺高。小周说,学厨艺的,三个月就能上手。学编程的,至少要半年到一年。而且编程的就业市场竞争更激烈——企业更愿意要有经验的,不愿意要刚培训出来的。
林晨想了一下。那我们要不要调整方向?
不用。小周说,编程的就业率虽然低,但找到工作的人薪资比厨艺高很多。学厨艺的出来月薪大概四五千,学编程的出来月薪能到七八千。对于贫困家庭来说,七八千和四五千的差别是巨大的。
林晨点了一下头。他看着小周的本子,想起了三年前。三年前他也在学编程——不是在学校里学,是在出租屋里学。没有人资助他,没有人指导他,没有人告诉他学什么、怎么学、学多久能找到工作。他全靠自己摸索。如果那时候有人给他指一条路,他可能会少走很多弯路。
小周。
你做这件事多久了?
一年半。
累吗?
小周想了一下。累。但值得。
为什么值得?
因为每次收到学生的消息——有人说找到工作了,有人说学会了一道新菜,有人说这个学期没有挂科——我就觉得,我做的是对的。
林晨看着小周。小周说这句话的时候,眼睛很亮。不是那种激动的亮,是那种安静的亮——像夜里的一盏灯,不刺眼,但能照亮路。
你说得对。林晨站起来,做对的事,累也值得。
他走出办公室,下楼。中央厨房的灶台上,林浩正在教小陈做酸汤鱼。小陈的酸汤底调了四次,前三次都不对——第一次酸度不够,第二次辣度过高,第三次鱼的火候过了。第四次,林浩尝了一口,说了一句。
林晨站在厨房门口,看着这一幕。林浩说的时候,小陈的嘴角动了一下——不是笑,是松了一口气。那种松了一口气的表情,林晨在训练营学员的脸上见过,在乐乐做对一道数学题的脸上见过,在阿伟第一次独立出菜的脸上见过。
他转身走出中央厨房,上了车。车上还有两个烤红薯,已经凉了。他拿起一个,剥开皮,咬了一口。凉了的红薯没有热的时候甜,但更糯,更有嚼劲。
他把红薯吃完,发动引擎。车开出龙岗工业区的时候,手机震了一下。是小周发来的消息:陈小梅的临时救助申请批下来了。她妈可以少打一份工了。
林晨回了一个字:
他把手机放下,继续开车。路两边的铁皮厂房在午后的阳光里泛着灰色的光。他想,今天做了几件事——转了十万块,买了三个烤红薯,批了一笔救助金。每一件都是小事。但小事堆在一起,就是一天。一天一天堆在一起,就是日子。
第409章 第二个侄儿
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第410章 了解小宇
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第411章 职业建议
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第412章 运营天赋的觉醒
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第413章 运营天赋
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第414章 正式加入
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第415章 家族企业
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第416章 第六家快餐店
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第417章 小宇的成长
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第418章 AI训练营二期
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第419章 成功案例
第二期训练营结业后的第三个月,林晨让助教团队做了一件事——回访所有找到工作的学员,把他们的故事写下来。
不是写在Excel里,是写在文档里。每一个人的故事——从哪里来,经历了什么,现在在哪里。助教老周负责这件事。他花了两周时间,打了将近两百个电话,记了厚厚一本笔记。然后他把笔记整理成一份文档,标题叫《晨枫AI训练营·学员故事》。
林晨拿到这份文档的时候,是一个周六的下午。他坐在家里的书房里,窗外是深圳湾的海景。阳光从落地窗照进来,照在书桌上,照在文档的第一页上。他翻开第一页,开始看。
第一个故事:老周自己。
老周,四十二岁,河南人。来深圳之前在郑州一家传统制造企业做It运维,月薪八千。公司用的是十年前的ERp系统,他每天的工作就是重启服务器、修打印机、给同事重装系统。做了十二年,工资涨了三千块。
去年公司被收购,新老板带来了新的It团队。老周被调到了仓库——不是做It,是做仓管。每天清点货物、登记出入库、搬箱子。他从变成了。
他想辞职,但不知道辞职之后能做什么。他四十二岁了,除了重启服务器和修打印机,什么都不会。他在招聘网站上搜It运维,发现大部分岗位要求熟悉云计算、docker、Kubernetes。他一个都不会。
他在知乎上看到了林晨的文章——《35岁程序员的AI逆袭》。他一口气看完了,然后关注了林晨的专栏,把林晨所有的文章都看了一遍。他看到训练营的招生公告,犹豫了三天。两万块学费对他来说不是小数目——他老婆在超市做收银,月薪三千五。家里有一个上初中的儿子,补习费一个月两千。
第三天晚上,他老婆跟他说了一句话:你去学吧。两万块,咱们省一省就有了。你要是学会了,以后就不用搬箱子了。
他报了名。
四个月后,他拿到了某AI公司的数据标注主管offer,月薪一万五。比之前翻了将近一倍。他在公司附近租了一个单间,周末回郑州看老婆孩子。他老婆在电话里说:你现在说话的声音都不一样了。以前打电话,声音是闷的。现在是亮的。
老周在电话那头笑了。他四十二岁,第一次觉得自己的声音是亮的。
第二个故事:小陈。
小陈,二十八岁,湖南人。之前在深圳一家贸易公司做行政,月薪六千。每天的工作是订机票、订酒店、订会议室、给老板泡茶。做了三年,除了泡茶的手艺越来越好,什么都没学会。
她想转行,但不知道转什么。她试过学编程——在b站上看了几节python课,看到第四节课就放弃了。不是学不会,是不知道学了有什么用。她不需要写代码,不需要做数据分析,不需要搭网站。她只需要订机票。
后来她看到了林晨的训练营。她不是被吸引的——她根本不知道AI是什么。她是被一句话吸引的——永远不晚。她二十八岁,已经觉得自己。她看到这句话的时候,心里动了一下。
她报了名。
四个月里,她是全班最努力的学员之一。她的编程基础是零——连变量是什么都不知道。但她有一个优点——她不放弃。别人看一遍就懂的,她看三遍。别人做一遍就对的,她做五遍。助教老周说,小陈交的作业永远是字迹最工整的——她不是用电脑写的,是先用笔在本子上写一遍,再敲到电脑里。
结业后,她拿到了某AI创业公司的产品经理offer,月薪一万二。翻了一倍。面试的时候,面试官问她:你是行政背景,为什么觉得自己能做AI产品经理?
她说:因为我懂用户。行政做了三年,我每天都在服务——只不过我的用户是公司里的同事。我知道他们需要什么,知道他们抱怨什么,知道怎么让他们满意。AI产品经理也是服务用户。只是用户从公司里的同事变成了外面的人。本质是一样的。
面试官被她说服了。
入职三个月后,小陈主导了一个AI客服产品的需求分析。她做的用户调研报告,比公司里做了三年产品经理的人写得都好。不是因为她的专业能力强,是因为她真的去跟用户聊了——她打了三百个电话,聊了一百个用户,记了两百页笔记。她在行政岗位上练出来的服务意识,在产品经理的岗位上发挥了作用。
林晨看到这里,在文档旁边写了一行批注——没有白走的路。行政三年,不是浪费。是积累。
第三个故事:阿芳。
阿芳的故事林晨已经知道了。但老周写的版本里有一个细节,林晨之前不知道。
阿芳在训练营第三周想放弃的时候,不只是给林晨发了消息。她还做了一件事——她把训练营的教材收进了一个纸箱里,用胶带封好,放在床底下。她打算第二天把纸箱扔掉。
第二天早上,她五岁的女儿爬到床底下,把纸箱拖了出来。女儿不认识字,但她看到封面上印着一个机器人的图案——那是训练营教材的封面,林晨特意设计的,一个银色的机器人伸出一只手,手里托着一颗发光的灯泡。
女儿指着机器人说:妈妈,这个机器人好可爱。你在学机器人吗?
阿芳愣了一下。嗯。妈妈在学机器人。
那你学会了吗?
还没有。太难了。妈妈不想学了。
女儿想了一下,说了一句话:妈妈,你不是跟我说,做事情不能半途而废吗?
阿芳看着女儿。女儿五岁,上幼儿园中班。上个月她学跳绳,跳了三天跳不过去,哭着说我不跳了。阿芳跟她说做事情不能半途而废。女儿记住了。现在女儿把这句话还给了她。
阿芳把纸箱从床底下拿出来,拆开胶带,把教材拿出来。她坐在餐桌旁边,翻到第三周的内容——python循环语句。她看了一遍,又看了一遍,又看了一遍。看到第三遍的时候,她忽然懂了——for循环就是把一件事重复做很多次。她想起女儿学跳绳——第一天跳不过去,第二天跳不过去,第三天跳过去了。这就是for循环。重复,直到成功。
她给林晨发了那条消息——林老师,我不放弃了。
林晨看到这里,把文档放下,靠在椅背上。窗外是深圳湾的海景,午后的阳光洒在海面上,波光粼粼。他想起乐乐五岁的时候,把自己的压岁钱拿出来,说爸爸拿去用,不要担心。孩子的话,有时候比大人的话更有力量。因为孩子说的是真的。
第四个故事:老刘。
老刘,四十五岁,是训练营里年龄最大的学员。他之前在东莞一家电子厂做品质主管,月薪一万。做了十五年,从qc做到主管,管着二十几个质检员。
去年工厂引进了AI视觉检测系统——用摄像头和深度学习模型自动检测产品缺陷。效率比人工高三倍,准确率比人工高五个点。老板把质检员从二十几个裁到了五个。老刘没有被裁——他是主管,需要他来管理系统。但他知道,如果他不学会这个系统,下一个被裁的就是他。
他报了训练营。四十五岁,跟一群二三十岁的人一起学python。他的手指在键盘上很笨拙——做了十五年品质管理,他的手习惯了拿卡尺和放大镜,不习惯敲键盘。他打字的速度很慢,一个字母一个字母地敲,像鸡啄米。
但他有一个优势——他懂业务。训练营里讲特征工程的时候,别的学员在纠结用什么算法做特征选择。老刘举手问了一个问题:如果用AI做品质检测,不良品的特征应该怎么定义?是尺寸偏差?颜色差异?还是表面纹理?
林晨看着他。老刘问的这个问题,比所有算法问题都深刻。因为算法是通用的,但业务是具体的。知道用什么算法不重要,知道解决什么问题才重要。
结业后,老刘没有换工作。他回到了原来的工厂,但职位变了——从品质主管变成了AI质检系统管理员。月薪从一万涨到了一万五。老板给他配了一台新电脑和一套AI视觉检测的开发环境。他的工作不再是管质检员,是管AI系统——优化检测模型、分析缺陷数据、改进检测流程。
他给林晨发了一条消息:林老师,我不再是被AI替代的人了。我是用AI的人
林晨看到这条消息的时候,想起了陈博士在t厂面试时跟他说的话——大多数人只管堆算力,却忘了AI的呼吸也是有重量的。老刘不需要堆算力。他只需要用AI解决一个具体的问题——怎么更准、更快地检测产品缺陷。这就是AI最真实的价值。
第五个故事:小周。
小周,二十六岁,江西人。她是训练营里少有的主动转行的人——不是被裁了,不是找不到工作,是不想再做原来的工作了。她之前在南昌一家银行做柜员,月薪五千。每天的工作是数钱、盖章、对客户微笑。做了三年,她觉得自己的大脑在生锈。
她想学AI,但所有人都说她疯了——银行的工作多稳定啊你一个女孩子学什么编程AI太难了你学不会的。她没听。她把三年的积蓄——大概四万块——全部拿了出来。一万块租了深圳的房子,两万块交了训练营的学费,一万块做生活费。
她在训练营里不是最聪明的,也不是最努力的。但她是最的——敢问问题,敢犯错,敢在课堂上跟林晨争论。有一次林晨讲过拟合,说模型在训练集上表现太好反而不好。小周举手说:这不就跟考试一样吗?死记硬背答案的人,考试能考高分,但换个题型就不会了。真正学懂的人,什么题型都会做。
林晨愣了一下。你说得比我好。
结业后,小周拿到了深圳某金融科技公司的AI产品运营offer,月薪一万二。面试的时候,面试官问她:你之前是银行柜员,跟AI产品运营有什么关系?
她说:我在银行做了三年柜员,每天接触几百个客户。我知道客户在办理业务的时候会遇到什么问题——排队太久、手续太复杂、柜员态度不好。AI产品运营,就是想办法用AI解决这些问题。比如用AI做智能排队,用AI简化手续,用AI辅助柜员。我懂客户,所以我能做好AI产品运营。
面试官被她说服了。
入职半年后,小周主导了一个AI智能客服项目——用大模型做银行客服的自动问答。项目上线后,客服热线的人工接通率降低了百分之三十,客户满意度反而提升了。因为AI客服不需要等待,不需要转接,不需要请稍等,我帮您查一下。它秒回。
小周在朋友圈发了一张截图——项目上线第一周的数据。配文是:三年前我在柜台后面数钱。三年后我在会议室里讲AI。人生没有白走的路,每一步都算数。
林晨把文档看完的时候,已经是傍晚了。
夕阳从落地窗照进来,把书房染成了金色。他合上文档,靠在椅背上,看着窗外的深圳湾。海面上有一艘货轮缓缓驶过,船身被夕阳镀上了一层金边。
五个故事。五个人。老周、小陈、阿芳、老刘、小周。他们不是天才,不是名校毕业,不是技术大牛。他们是普通人——被裁的、转行的、带孩子的、在工厂做了十五年的、在银行数了三年钱的。他们唯一的共同点是——他们决定学AI。不是因为AI有前途,是因为他们不想停在原地。
林晨拿起手机,给老周发了一条消息。
你写的学员故事我看了。写得很好。我想把这些故事发在知乎上。不是作为训练营的广告,是作为——给那些还在犹豫的人看的。让他们知道,有人跟他们一样,从零开始,做到了。
老周回了一条:好。但有一个问题——发出去之后,会有更多人报名。第三期你打算招多少人?
林晨想了一下。三百。
三百?场地坐不下。
那就换更大的场地。林晨说,林枫已经在找了。龙岗有一个旧学校,教学楼空着,能容纳五百人。如果谈下来,第三期就在那里办。
助教呢?
从第二期优秀学员里招。你来做助教主管。月薪五千。
老周回了一个字:
林晨把手机放下,重新翻开文档。他翻到最后一页——老周在文档末尾写的一段话:
这些故事不是编的。每一个都是真的。我是其中之一。四个月前,我在仓库里搬箱子。四个月后,我在办公室里写文档。我老婆说我的声音变亮了。我想了想,不是声音变亮了,是心里变亮了。心里亮了,声音就亮了。
林晨在这段话下面写了一行字——这就是我们做这件事的意义。
晚上,林晨把文档发给苏婉看。
苏婉坐在沙发上,一页一页地翻。翻到阿芳的故事——女儿从床底下拖出纸箱——她的眼眶红了。翻到老刘的故事——我不再是被AI替代的人,我是用AI的人——她点了一下头。翻到小周的故事——人生没有白走的路,每一步都算数——她把文档放下,看着林晨。
林晨。
你做的这件事——比我做的所有教育项目都重要。
为什么?
因为学校教的是孩子。你教的是大人。苏婉说,孩子有无限的可能,教他们是锦上添花。大人已经被生活打磨过了,教他们是雪中送炭。雪中送炭比锦上添花难得多,也重要得多。
林晨握住苏婉的手。你做的事也很重要。训练营的心理辅导模块——如果没有你,阿芳可能第三周就放弃了。你救了很多人。
我们都在救人。苏婉说,用不同的方式。
两个人坐在沙发上,看着窗外的夜色。深圳湾的灯光在远处闪烁,像地面上的星星。这座城市有无数的人在加班、在焦虑、在迷茫。但也有一些人在学习、在改变、在重新开始。
林晨想起三年前,他坐在出租屋的阳台上,看着深圳cbd的夜景,觉得自己这辈子就这样了。三年后,他坐在大平层的客厅里,看着同一片夜景,手里拿着一份文档——文档里是一百二十个人的故事。一百二十个跟他当年一样迷茫的人,因为他做的一件事,找到了新的方向。
这种感觉,比投资账户里多一个零更让人满足。
第420章 教育事业
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第421章 招聘讲师
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第422章 线下培训
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第423章 第一期线下班
线下班开课第三周,林晨亲自讲了一堂课。
不是开学典礼那种讲话,是真正的技术课——机器学习项目实战:从数据到模型。这门课本该由赵峰讲,但林晨把它拿过来了。不是不信任赵峰,是他想亲自看看这三百个学员。站在讲台上看,和坐在监控室里看,看到的东西不一样。
他站在第一教室的讲台上——第一教室是最大的教室,能坐八十个人。但今天六间教室的学员都来了,三百个人挤在一间教室里,坐的坐、站的站、蹲的蹲。走廊里也站了人,透过窗户往里看。小宇在最后一排架了一台摄像机——林晨的课要录下来,给以后的新学员看。
今天讲一个真实的项目。林晨打开笔记本电脑,投屏到电子屏幕上。不是mNISt手写数字识别,不是泰坦尼克号生存预测,不是网上烂大街的教学案例。是我自己做的项目——晨枫餐饮的日销售额预测模型。
屏幕上出现了一张表格——过去一年,六家店每天的销售额、天气、温度、节假日、周边活动。两万多条数据,每一条都是真实的。
这个模型现在在线上跑。每天早上六点,它自动预测六家店今天的销售额,误差在百分之八以内。中央厨房根据预测结果备料——预测卖多少份回锅肉,就备多少份五花肉。预测卖多少份酸菜鱼,就备多少条黑鱼。这个模型帮晨枫把食材损耗率从百分之五降到了百分之二。一年省十几万。
台下有人在记笔记。
今天,我带你们把这个模型从头做一遍。从数据清洗到特征工程,从模型选择到评估优化,从部署上线到监控维护。每一步我都会讲——不是讲理论,是讲我怎么做的,为什么这么做,踩过什么坑,怎么爬出来的。
他打开Jupyter Notebook,开始写代码。
第一步,数据清洗。真实数据永远是脏的——有缺失值、有异常值、有格式错误。比如这条数据——他指着一行。销售额是负的。不是系统出错了,是那天有一笔退款。如果不处理,模型会被这个负数带偏。
他写了几行代码,把异常值过滤掉。
第二步,特征工程。原始数据不能直接喂给模型。需要从原始数据里提取特征——星期几、是不是节假日、温度是多少、下不下雨。这些特征比原始数据更能帮模型找到规律。
他写了一个特征提取函数,把日期转换成了星期几是否节假日,把天气转换成了温度区间是否下雨。
第三步,模型选择。不是选最复杂的模型,是选最合适的模型。这个场景的特征不多——十几个特征,两万条数据。用xGboost就够了。不需要深度学习。深度学习是屠龙刀,但杀鸡用菜刀就行。
他写了几行代码,用xGboost训练了一个回归模型。训练过程只用了三秒钟。
第四步,评估。模型训练完了,怎么知道它好不好?不是看它在训练集上的表现——训练集上表现好是应该的。要看它在测试集上的表现——测试集是模型没见过的数据。在没见过数据上表现好,才是真的好。
他把测试集喂给模型,算出了平均绝对误差——百分之七点八。
百分之七点八。意味着模型预测今天卖一万块,实际大概在九千二到一万零八百之间。这个精度够用了——中央厨房备料的时候会留百分之十的余量。
他停了一下,转过身,看着台下的学员。
有人可能会想——这个模型看起来也不难啊,几行代码就搞定了。对,不难。但难的不是代码,是前面的东西——数据怎么收集、特征怎么设计、模型怎么评估、结果怎么用。代码只是最后一步。前面的每一步,都需要理解业务。
他点了一下鼠标,屏幕上出现了这个项目的Github仓库——三百多个mit,从第一个版本到最新版本,跨度一年半。
这是我一年半里做的所有改进。第一个版本只用了一个特征——历史销售额的移动平均。误差百分之十五。第二个版本加了天气特征,误差降到百分之十二。第三个版本加了节假日特征,误差降到百分之十。第四个版本换了模型——从线性回归换成xGboost,误差降到百分之八。每一个版本都是一个小改进,合在一起就是一个好模型。
他关掉Jupyter Notebook,看着台下的学员。
我想告诉你们的是——AI不是魔法。不是你把数据丢进去,模型自己就能学会。AI是手艺。是反复打磨、不断改进、一点一点优化的手艺。你们在这里学四个月,学的不是怎么调用一个模型——调模型谁都会。学的是怎么把一个模型从百分之十五优化到百分之八。这种能力,才是你们面试时最大的底气。
台下响起了掌声。
下课后,一个学员在走廊里拦住了林晨。
林晨记得他——他叫老马,四十三岁,之前在东莞一家电子厂做仓库管理员。他的课桌上贴着那张目标卡——我不认命。
林老师。老马的声音有点急。你刚才讲的那个销售额预测模型——我有个想法。
什么想法?
我在仓库做了十年。仓库里最大的问题是库存——有些货堆了半年卖不出去,有些货三天就卖完了来不及补。老板每次订货都是凭经验——觉得什么好卖就多订,觉得什么不好卖就少订。结果就是——好卖的断货,不好卖的积压。
你想说什么?
我想说——你那个模型,能不能用在仓库管理上?不是预测销售额,是预测库存需求。根据过去的出库数据,预测未来一个月每种货需要多少。这样老板订货的时候就有依据了——不是凭经验,是凭数据。
林晨看着老马。老马说不是凭经验,是凭数据的时候,眼睛是亮的。他不是在问一个技术问题,他是在想怎么用AI解决他做了十年的仓库管理问题。他做了十年仓管,他知道仓库里最大的痛点是什么。现在他学了AI,他开始想——能不能用AI解决这个痛点。
林晨说,而且比你想象的简单。销售额预测和库存需求预测,本质上是同一个问题——根据历史数据预测未来。你把销售额出库量天气季节节假日促销活动。模型不用变,变的是数据。
老马愣了一下。这么简单?
思路简单。但做起来不简单——数据要收集、特征要设计、模型要调优。但思路是对的。你回去之后,可以试着做一个demo——用你以前在仓库里的数据,训练一个库存需求预测模型。做出来了,我帮你看。
老马点了一下头。他转身要走,又停住了。
林老师。
我四十三岁了。学了三个星期的python,连面向对象都还没搞明白。你觉得我能做出来吗?
林晨看着老马。老马的脸上有很深的皱纹——不是年纪大了才有的,是在仓库里搬了十年货搬出来的。他的手很粗糙——手指上有搬货磨出来的茧,指甲缝里有洗不掉的油污。他四十三岁,做了十年仓管,被裁了,来学AI。他连面向对象都还没搞明白,但他已经在想怎么用AI解决仓库管理的问题了。
你能。林晨说,因为你有一个别人没有的东西——你懂业务。你做了十年仓管,你知道仓库里最大的痛点是什么。AI工程师可以帮你写代码,但他们不知道仓库里有什么痛点。你知道。这就是你的优势。
老马沉默了几秒。然后他点了一下头,转身走了。他的背影在走廊里越来越小,但他的脚步很稳——不是那种我一定要成功的稳,是那种我知道我要做什么的稳。
第四周,林晨又讲了一堂课——大模型应用实战。
这门课本该由吴敏讲,但林晨把它拿过来了。不是不信任吴敏——吴敏的NLp课讲得非常好。是大模型这个方向太新了,新到每个月都有新的突破。林晨想亲自讲——因为他自己也在学,在用的过程中学。他想把最新的东西教给学员,而不是教三个月前的东西。
今天讲大模型。林晨站在讲台上。大模型是2023年之后AI领域最大的变革。chatGpt、文心一言、通义千问——这些你们应该都听过。但今天不讲怎么用大模型——怎么用chatGpt写文案,怎么用文心一言写代码。那些你们自己就会。今天讲怎么训练大模型——怎么在垂直领域做微调。
他在电子屏幕上打开了一个colab笔记本。
我们以金融领域为例。假设你有一家证券公司,每天要分析几百份研报。研报很长——一份研报几十页,分析师看完要半小时。能不能用大模型自动分析研报?能。但通用大模型不懂金融术语——它不知道mAcd金叉是什么意思,不知道头肩顶是什么形态。所以需要微调——用金融领域的数据,在通用大模型的基础上做二次训练。
他打开了一个数据集——一万份金融研报,每份都标注了关键信息:公司名称、行业、评级、目标价、核心观点。
这个数据集是我自己做的。去年我用爬虫爬了公开的研报数据,然后让实习生标注。标了一万份,花了三个月。数据质量是微调的关键——垃圾数据训练出垃圾模型。
他开始写代码。用LLamA的开源权重做基座模型,用LoRA做高效微调——不需要训练整个模型,只需要训练一小部分参数。训练过程在云GpU上跑,大概需要两个小时。
训练需要两个小时。我们不等了——我直接给大家看训练好的模型。
他加载了微调好的模型,输入了一份研报的文本。模型在十秒钟内输出了分析结果——公司名称、行业、评级、目标价、核心观点。每一项都准确无误。
这个模型现在在晨枫的投资系统里跑。每天早上,它自动分析最新的研报,把关键信息提取出来,供投资决策参考。它不能替代分析师——但它能把分析师从读研报这件事里解放出来,让分析师去做更有价值的事。
台下有人举手。林老师,微调一个大模型需要多少成本?
看你微调多大的模型。LLamA-7b——七十亿参数——用LoRA微调,一块A100显卡,大概两百块钱的算力。如果是LLamA-70b——七百亿参数——需要八块A100,大概两千块钱。对于企业来说,这个成本可以忽略不计。
那为什么很多企业还没用上大模型?
因为不知道能用来做什么。林晨说,技术不是瓶颈,想象力才是。企业里有很多重复性的文字工作——写报告、回邮件、整理文档、分析数据。这些工作都可以用大模型辅助。但大部分企业不知道大模型能做什么,也不知道怎么把大模型集成到现有的业务流程里。这就是你们的机会——你们学完之后,不是去找AI岗位,是去帮企业用AI。你们是桥梁。
第六周的时候,出了一个问题。
一个叫小彭的学员想退学。小彭二十六岁,之前在广州一家游戏公司做测试,月薪六千。他学AI是想转行做算法工程师。但他在第六周的机器学习阶段遇到了瓶颈——逻辑回归的代价函数他看了三遍没看懂,SVm的核函数他看了五遍还是懵的。他觉得自己学不会了。
张老师发现了他的异常——小彭连续两天没交作业,上课的时候坐在最后一排,低着头,不看屏幕。张老师把他叫到了办公室。
小彭,你最近怎么了?
张老师,我想退学。
为什么?
学不会。小彭低着头。逻辑回归、SVm、决策树——这些东西我看了好多遍,还是不懂。我是不是太笨了?
张老师没有回答。她从抽屉里拿出一张卡片——是小彭入学那天写的目标卡。卡片上写着:四个月后,我要拿到一份月薪一万的AI岗位offer。我想让我妈不用再去工厂上班了。
她把卡片放在小彭面前。
这是你写的。
小彭看着卡片,没有说话。
你妈在工厂做什么?
做玩具。计件的。做一个玩具赚两毛钱。一天做五百个,赚一百块。
你学AI,是为了让她不用再做玩具了?
小彭点了一下头。他的眼眶红了。
那你不能退学。张老师说,学不会没关系。别人看三遍,你看十遍。别人学一周,你学两周。逻辑回归的代价函数——你看不懂,不是因为你笨,是因为讲的方式不适合你。我让赵峰老师用另一种方式给你讲——不用公式,用图形。你看了图形,可能就懂了。
小彭抬起头。用图形能讲懂吗?
张老师说,赵峰老师讲过——逻辑回归的代价函数,本质上就是预测值和真实值之间的差距。用图形表示——就是两条曲线之间的面积。你不需要懂公式,你只需要懂模型在努力让两条曲线重合。这就够了。
小彭沉默了几秒。那我再试试。
不是试试。张老师说,是坚持。你妈在工厂里做玩具,一天做五百个,做了一个月、一年、十年。她没有放弃。你也不能放弃。
小彭点了一下头。他拿起目标卡,看了很久。然后他站起来,走出办公室,走向教室。他的背影有点瘦,但他的脚步很稳——不是那种我一定能学会的稳,是那种我不能放弃的稳。
四个月后,第一期线下班结业。
三百个学员,两百七十八个人坚持到了最后。退出了二十二个——不是因为学不会,是因为各种原因:家里有事、身体扛不住、找到了其他方向。两百七十八个人里,有两百二十个人在结业后三个月内找到了AI相关的工作。就业率百分之七十九。
老马是其中之一。他没有做算法工程师——他的编程基础确实不够。但他找到了一份AI产品经理的工作,月薪一万二。比他在仓库做仓管的时候多了四千块。面试的时候,面试官问他:你是仓管背景,为什么觉得自己能做AI产品经理?他说:因为我懂仓库。我知道仓库里最大的痛点是什么。AI产品经理的职责是找到痛点,用AI解决。我做了十年仓管,我知道痛点在哪里。面试官被他说服了。
小彭也是其中之一。他拿到了一家游戏公司的AI测试工程师offer,月薪九千。比之前做游戏测试多了三千块。他在结业群里发了一段话:第六周的时候我想退学。张老师把我叫到办公室,给我看了我写的目标卡。我看了那张卡片,想起我妈在工厂里做玩具——做一个赚两毛钱。我没退。谢谢张老师。谢谢晨光。
林晨看到这段话的时候,正在中央厨房的办公室里。他把手机递给坐在对面的小宇。
你看看。
小宇看完,把手机还给林晨。大伯,你做的这件事——比我做的所有运营方案都重要。
你说过了。
我再说一遍。小宇说,因为你做的事,不是赚钱。是改变命运。
林晨看着窗外。窗外是龙岗工业区的铁皮厂房,午后的阳光照在铁皮上,反射出灰白色的光。他想起四年前,他坐在出租屋里,对着屏幕学pytorch。那时候他不知道这条路能走多远,不知道这个选择对不对,不知道自己能不能学会。他只知道——不能停。
四年后,他坐在自己的公司里,看着两百二十个人因为他做的一件事,找到了新的方向。
从一个人,到两百二十个人。从不能停不用停。
第424章 就业对接
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第425章 投资账户千万
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第426章 投资策略调整
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第427章 资产配置
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第428章 家族财富管理
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第429章 信托基金
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第430章 四十不惑
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第431章 扩张计划
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第432章 标准化体系
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第433章 中央厨房升级
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第434章 供应链整合
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第435章 第七、八家店
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第436章 加盟咨询
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第437章 拒绝加盟
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第438章 区域经理制
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第439章 人才培养
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第440章 员工激励
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第441章 第二家米其林挑战
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第442章 林浩的徒弟
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第443章 国际化尝试
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第444章 香港考察
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第445章 文化差异
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第446章 暂缓香港
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第447章 聚焦深圳
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第448章 品牌营销
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第449章 自媒体矩阵
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第450章 网红餐厅
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第451章 第九、十家店
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第452章 上市的提议
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第453章 林晨的考虑
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第454章 保持独立
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第455章 现金流充裕
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第456章 购置物业
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第457章 第三家高端店开业
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第458章 双子星
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第459章 林浩的名气
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第460章 家族企业壮大
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第461章 AI教育扩张
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第462章 教育营收
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第463章 开设分校
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第464章 企业培训
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第465章 第一个大客户
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第466章 技术咨询
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第467章 投资布局
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第468章 第一个投资项目
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第469章 投资组合
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第470章 LP邀请
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第471章 财富管理公司
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第472章 资产突破两千万
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第473章 乐乐的教育
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第474章 教育理念
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第475章 父子项目
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第476章 妻子的事业
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第477章 家庭和谐
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第478章 第四家高端店
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第479章 品牌矩阵
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第480章 餐饮年会
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第481章 员工持股兑现
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第482章 人才留存
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第483章 模块化建筑的实验
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第484章 预制菜研发
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第485章 电商上线
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第486章 直播带货
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第487章 网红效应
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第488章 第十一、十二家店
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第489章 竞争加剧
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第490章 护城河
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第491章 行业协会
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第492章 行业标准
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第493章 美食论坛
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第494章 国际视野
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第495章 可持续餐饮
国际视野打开之后,林晨开始推进可持续餐饮计划。
第一件事——减少食物浪费。
餐饮行业的食物浪费,很严重。晨枫的中央厨房,每天处理两吨食材。加工过程中,会产生大量的边角料——菜叶、菜根、肉边、骨头。以前,这些边角料都扔掉了。林晨觉得——太浪费了。
有一次,他去中央厨房巡店,正好看见仓库门口堆着三大桶边角料,泔水车正要来拉走。他站住脚,看了一会儿,问厨房主管:这一桶,能出多少东西?
主管愣了。边角料……能出什么?就是垃圾啊。
垃圾?菜叶子可以煮汤,骨头可以熬汤底,肉边可以打肉酱。林晨说,这些东西,都不是垃圾。是你还没想好怎么用。
他让林浩研究——怎么利用这些边角料。
林浩花了一周时间,把自己关在中央厨房的试菜间里。他先是把每一种边角料分开,称重量、记口感,再一样一样试做法。头几天做出来的东西,林晨去尝,要么太咸,要么太寡。林浩也不着急,一遍一遍调整配方。
一周之后,林浩端出一套边角料利用方案。
菜叶——做成蔬菜汤。菜根——做成泡菜。肉边——做成肉酱。骨头——熬成高汤。
方案实施之后,中央厨房的食物浪费,减少了百分之五十。以前每天扔掉的边角料,现在大部分都变成了新的产品。蔬菜汤、泡菜、肉酱、高汤——在店里卖得很好。顾客觉得——晨枫真会过日子,边角料都能做成好吃的。
中央厨房还专门立了一道回收台账——每天进了多少食材、产生了多少边角料、又变成了什么新产品,一笔一笔记下来。林晨说:把账记清楚,才知道自己到底浪费了多少。看不见的浪费,才是最大的浪费。
有个老顾客在店里喝到那碗蔬菜汤,特意跑到柜台问:你们这汤,是拿菜叶子煮的吧?
店员有点不好意思:是……您怎么知道?
喝得出来,鲜。老顾客说,外面那些汤,全是味精味。你们这个,有菜叶子的鲜。多少钱一碗?
两块。
给我再来一碗。好东西,就该这么干。
林晨看着这一幕,跟身边的运营经理说:你看,和,其实是同一件事。省下来的边角料,变成了能卖的产品——既是省钱,也是赚钱。
那这套边角料利用,能不能推广到快餐门店?
林晨说,中央厨房先跑通,跑通了再复制到门店。别一上来就全铺,先让一个地方做熟。
第二件事——环保包装。
晨枫快餐的外卖包装,以前用的是塑料盒。塑料盒便宜,但不环保。林晨决定——全部换成可降解的纸盒。
换包装之前,财务把成本算出来给他看。纸盒的成本,比塑料盒贵一倍。一个纸盒三毛钱,一个塑料盒一毛五。晨枫每天大概用三千个外卖盒,一天多花四百五十块。一年多花十六万。
财务主管小心翼翼地问:林总,十六万不是小数目。要不要……先拿一家店试点?
不用试点。全部换。林晨说。
环保不是成本,是投资。林晨在管理会上说。投资环保,短期看是花钱。长期看——品牌价值提升了,顾客更认可了。品牌价值,比十六万值钱。
替换纸盒那阵,还闹了个小插曲。新纸盒的盖子有时候盖不严,外卖洒了几次,顾客投诉到了门店。林晨让采购连夜找了三家纸盒厂,把样品一个个试,最后选了一家盖子带卡扣的。
多花两分钱,少一次投诉。林晨说,这两分钱,比什么都值。
第三件事——支持可持续农业。
晨枫的食材采购,以前只看价格和品质。现在,林晨加了一个标准——可持续。优先采购有机食材、优先采购本地食材、优先采购有环保认证的食材。
有机食材——价格贵一些,但品质更好,更健康。本地食材——运输距离短,碳排放少,更新鲜。有环保认证的食材——生产过程更环保,更可持续。
供应商听到这个标准,第一个叫苦:林总,有机食材比普通食材贵两成,你这一加,我这边账可不好做。
你仔细算算。林晨说,你供的有机蔬菜,损耗小,客单价高,回头客多。你把账拉长看,不一定亏。
供应商回去算了两天,回来主动给晨枫拉了三条本地有机蔬菜基地的线。
其实林晨心里清楚,这百分之五的成本,不是每一分都能马上赚回来。但他算的是另外一笔账——中央厨房的泔水少了,采购的损耗降了,顾客的口碑好了。这几样加起来,早就超过了那百分之五。
你们别觉得我是圣人。林晨在内部说,我算过账的。省下的食材钱、省下的垃圾处理费、多出来的回头客——都是钱。可持续,不是做给别人看的,是算得过来账的。
三个标准加进去之后,食材成本上涨了大概百分之五。但林晨觉得——值。
这百分之五,换来的是一条更稳的供应链。林晨心里清楚,看得见的成本好算,看不见的信任不好买。
可持续餐饮,不是做慈善做品牌林晨在笔记本上写道。消费者越来越关注环保。你做了环保,消费者就会更认可你。认可了,就会更愿意来消费。这是一个正循环。
可持续餐饮计划推行之后,晨枫的品牌形象,又提升了一个层次。顾客在店里看到可降解纸盒边角料利用有机食材——觉得——晨枫是一家有责任感的餐厅。
林晨在笔记本上写了一行字——可持续,不是牺牲利润用更好的方式赚钱。对地球好,对顾客好,对公司好——三赢。
第496章 社会认可
可持续餐饮计划推行之后,林晨的社会认可度越来越高。
先是深圳市政府——把晨枫评为深圳餐饮行业示范企业。然后是广东省——把晨枫评为广东省优秀餐饮品牌。最后是全国——林晨被评为深圳十大杰出青年企业家。
评上深圳十大杰出青年企业家的那天,林晨去参加了颁奖典礼。
出门前,苏婉帮他理了理领带,又后退一步打量他。老了点,但精神。她笑,三十五岁那年,你穿着工装去办离职手续。现在穿西装,还真有点企业家的样子。
林晨也笑了。那时候,我都不敢照镜子。
典礼在深圳市民中心举办。台下坐了几百人——有政府领导、有企业家、有媒体记者。林晨穿着西装,站在台上,接过奖杯。
聚光灯打下来的时候,他看见台下第一排,苏婉坐在那里,冲他点了点头。苏婉身边,还坐着乐乐。乐乐举着手机,大概在录像。
主持人问他——林总,你有什么想对大家说的?
林晨拿起话筒,沉默了几秒。
五年前,我三十五岁,被裁了。那时候,我觉得——我完了。五年后,我站在这里,拿到了深圳十大杰出青年企业家的奖杯。我想说的是——不要放弃。不管你现在多难,只要你不放弃,就有机会。
台下响起了掌声。
我想感谢几个人。第一个——我的妻子苏婉。没有她的支持,我走不到今天。第二个——我的兄弟林枫。没有他的帮助,我的店开不起来。第三个——我的侄儿林浩。没有他的技术,晨枫不会有米其林。第四个——我的员工。没有他们的努力,晨枫不会有今天。
最后——我想感谢深圳。这座城市,给了我机会。不管你是谁,不管你是哪里人——只要你愿意努力,深圳就会给你机会。
台下又响起了掌声。乐乐在台下小声跟苏婉说:妈,爸讲得真好。苏婉没说话,眼圈有点红。
颁奖典礼之后,很多媒体来采访林晨。有报纸、有电视台、有新媒体。林晨一一接受了采访。不是因为他想出名,是因为他觉得——自己的故事,能激励更多的人。
一个记者问他——林总,你觉得——你成功的秘诀是什么?
林晨想了一下。没有什么秘诀。就是——。坚持学习、坚持努力、坚持不放弃。听起来很简单,但做起来很难。因为——坚持的路上,会有很多诱惑、很多挫折、很多怀疑。你可能会想——我是不是选错了?我是不是不行?我是不是该放弃了?。但只要你坚持下去,总有一天,你会看到光。
记者点了点头。林总,你的故事——很励志。
不是励志。是真实。林晨说。我只是一个普通人。做了普通的事。坚持了普通的时间。然后,得到了普通的结果。
你觉得——你的结果是的吗?
对。跟很多人比,我的结果不算什么。深圳有太多比我成功的人。我只是——比较幸运。
记者笑了。林总,你太谦虚了。
不是谦虚。是真心话。林晨说。我知道——我能有今天,不只是因为我努力。还因为我遇到了对的人、选对了方向、抓住了机会。努力,只是基础。运气,才是关键。
记者点了点头。
还有一个女记者问他:林总,你被裁的时候,有没有想过——一辈子就这样了?
想过。林晨说,不止一次。但每一次,我老婆都在旁边说——你先把眼前的饭吃完。她说得对。天大的事,也要一顿饭一顿饭吃过来。
那你现在回头看,最感谢那段日子吗?
不感谢。那段日子很难。林晨说,但我感谢那段日子里,没有放弃的那个自己。
颁奖典礼之后,林晨的生活发生了一些变化。走在路上,会有人认出他——你是林晨吧?我看过你的故事。去店里,会有顾客找他合影。参加活动,会有人找他签名。
有一次,一个穿工装的小伙子在小店门口追上他,声音有点抖:林总,我……我也是搞It的,去年被裁了。我看了你的故事,回去学了几个月手艺,现在……现在自己在摆摊。我就想当面跟你说声谢谢。
林晨拍了拍他的肩膀。慢慢来。我三十五岁才起步。你比我年轻。
小伙子眼圈一红,点了点头,转身走了。
那天晚上回家,苏婉把颁奖的录像翻出来又看了一遍。她指着屏幕上林晨讲话的画面,对乐乐说:你爸讲得不好,你看他手都在抖。
我觉得挺好。乐乐说,不要放弃的时候,台下掌声最响。
那是人家给他面子。苏婉嘴上这么说,嘴角却是翘着的。
林晨在旁边听着,没说话。他想起五年前那个晚上,自己站在天桥上,苏婉打来电话,只说了一句回来吧,饭做好了。那时候她没说一句安慰的话,只是做了一桌子菜等他。
晚上,乐乐写了一篇作文,题目叫《我爸爸》。他在作文里写:我爸爸以前是程序员,后来被裁员了。我以为他会难过很久,但他第二天就起来学新东西。他总说,路是走出来的,不是等出来的。
苏婉看完,把作文纸递给林晨。林晨看了一遍,把纸折好放进上衣口袋。
孩子写得比我好。
那天晚上,林晨睡得比平时早。他躺在床上想,这五年,没白过。
窗外是深圳的万家灯火,有一盏,是他自己点起来的。五年前那盏灯差点灭了,如今却越烧越旺。
林晨不太适应这种被关注的感觉。但他知道——这是社会认可的代价。被认可了,就要承担更多的社会责任。
他在笔记本上写了一行字——社会认可,不是。是。认可越多,责任越大。
第497章 政府合作
获得深圳十大杰出青年企业家之后,林晨开始接到一些政府合作的邀请。
第一个合作——深圳市政府想跟晨枫合作,在保障房社区开平价餐厅。
来谈合作的是市商务局的一位处长,四十出头,穿着一件熨得笔挺的衬衫。处长开门见山:林总,深圳有很多保障房社区——住的都是中低收入家庭。这些社区,商业配套不完善,居民吃饭不方便。市政府想引入一些品牌餐饮企业,在保障房社区开平价餐厅——价格便宜,品质有保障。
处长翻了翻手里的材料。我们考察了一圈,觉得晨枫最合适。连锁、标准化、有中央厨房,品质可控。换别人,我们还真不放心。
林晨听了之后,觉得——这个合作,可以做。
不是因为他想赚钱——保障房社区的生意,利润不高。是因为他觉得——企业应该承担社会责任。赚了钱,就要回馈社会。
处长,这个合作——我们做。林晨说,不过我先说清楚,平价餐厅,我们按晨枫自己的标准来做,不降标准。菜可以便宜,品质不能打折。
处长笑了。你这么说,我们就更放心了。
他跟市政府签了合作协议——在三个保障房社区,开三家晨枫平价餐厅。价格比普通店便宜百分之二十——人均二十八块。品质跟普通店一样——食材一样、标准一样、服务一样。
三家店,由晨枫投资、晨枫运营、晨枫管理。市政府提供场地——租金优惠。林晨算了一下——三家店,总投资大概三百万。年利润大概五十万。投资回报周期六年,比普通门店回本慢一些。但林晨不介意——这种项目挣的不是快钱,是长久的信任。
保障房社区的生意,不是为了赚钱。是为了。服务好了,品牌就好了。品牌好了,赚钱是迟早的事。
签完合同,林晨带着小宇跑了一趟三个保障房社区。小宇一边拍照一边说:大伯,这三家店开在这儿,离我们普通店挺远的,物流配送要单独排线路。
对。配送线路重新排,食材可以错峰送。林晨说,你把配送时间和车次排出来,我看看。
小宇领了任务,回去连夜排了一张配送表。
三家平价餐厅开业之后,居民的反应很好。
晨枫开到我们这里来了!
价格便宜,品质还好。比我们自己做的还划算。
以后不用做饭了,直接来晨枫吃。
林晨去其中一家店看了。店里坐满了人——有老人、有小孩、有年轻人。大家吃得很开心。林晨站在店里,看着大家吃饭的样子,心里很满足。
一个头发花白的大爷看见他胸口的工牌,认出他是老板,端着碗过来:你就是林老板?你们这个店开得好。我这把年纪,天天自己做饭,做不动了。现在下来就能吃,还便宜。
大爷,您吃好。林晨说,以后有什么不满意的,就跟店长说。
不是因为他赚了钱。是因为他做了对的事。
平价餐厅刚开业那阵,也出过小麻烦。小区里的老人习惯自带饭盒来打饭,嫌店里的一次性餐具浪费;还有几个租客下班晚,七点半来了,菜卖完了。林晨跟店长说:自带饭盒的,多给一勺饭。晚来的,留几份盖浇饭在保温柜里,热着,八点也能吃。
那会不会亏?
不会。林晨说,社区店做的是街坊生意。街坊认你这个人,就不止吃这一顿。
一个多月下来,三家平价餐厅的回头客比例,比普通店还高。
第二个合作——深圳市政府想跟晨枫合作,承包一些政府机关的食堂。
政府机关的食堂,以前是自营的——政府自己管。但自营的效率低、成本高、品质一般。市政府想引入社会资本——让专业的餐饮企业来管。
处长又来找他一次。林总,市里几个机关食堂想外包,我们第一个想到的还是晨枫。你管过快餐、管过高档店,食堂这种固定人群的生意,你接不接?
林晨觉得——这个合作,也可以做。
政府机关的食堂,虽然利润不高,但。不管经济好不好,政府机关的人都要吃饭。而且——承包政府食堂,能提升晨枫的品牌形象——晨枫连政府食堂都能管,肯定靠谱。
林晨签了两个政府机关的食堂——深圳市政府食堂和南山区政府食堂。两个食堂,加起来大概一千人吃饭。晨枫负责运营——提供食材、厨师、管理。政府提供场地和设备。晨枫收管理费——每人每天二十块。一个月营收大概六十万。利润大概十五万。
虽然利润不高,但林晨觉得——值。
机关食堂刚接过来的头两周,问题不少。以前自营的时候,一周五天吃老菜,员工早就腻了。晨枫接手后换了菜单,有人不习惯,在意见本上写。晨枫的运营经理一条一条记下来,隔天就改。
林晨去食堂吃饭,排在他前面的一个年轻公务员回头认出他:林总,你们那个酸菜鱼,能不能多做几次?我们单位就爱这个。
行。记下来。
林总,你天天来这儿吃饭?
自家做的饭,得自己先吃着放心。林晨说。
政府合作,不是。是建立信任。政府信任你了,以后有更多的合作机会。
从市政府食堂回来,林晨在车上跟小宇说:看见没有?跟政府打交道,跟开店不一样。开店是我给你做饭,政府合作是我帮你分忧。分忧的事做好了,以后有好事,人家第一个想到你。
小宇问:大伯,那要是碰上不讲道理的合作方呢?
合作之前先把账算清楚,把丑话说在前头。林晨说,该争的争,该让的让。底线立住了,合作才长久。
小宇说:大伯,我记住了。
他在笔记本上写了一行字——政府合作,不是。是。信任建立了,生意自然就来了。
第498章 员工食堂
政府食堂承包之后,林晨发现了一个新的商机——企业员工食堂。
深圳有上万家科技企业。大部分企业,没有自己的食堂。员工中午吃饭,要么去外面吃,要么点外卖。去外面吃——贵,而且远。点外卖——贵,而且不健康。如果能帮企业解决员工吃饭的问题——这是一个很大的市场。
林晨让小宇去调研了一下。
小宇领了任务,先去深圳科技园蹲了三天。他带着一个小本子,从早高峰蹲到午高峰,数有多少员工往外走,看他们去哪吃饭、吃什么、花多少钱。然后又跑了几家中型企业,问行政负责人:你们员工午饭怎么解决?想不想有食堂?
小宇花了两周时间,调研了深圳科技园区的员工食堂市场。调研结果——深圳科技园区,有大概五十万员工。其中,只有百分之二十的企业有食堂。百分之八十的企业,没有食堂。没有食堂的企业,员工中午吃饭,平均花费三十到五十块。如果晨枫能提供一个员工食堂方案——每人每餐二十到三十块,品质比外卖好,价格比外卖低——企业会很愿意合作。
汇报那天,小宇把数据整理成三页纸,一条一条念给林晨听。林晨听完,问了三个问题:企业最担心什么?我们的成本怎么控制?怎么让员工长期不腻?
小宇答上来前两个,第三个卡住了。大伯,这个……我还没想好。
没关系。林晨说,菜单的事,交给林浩。你先想前两个。
林晨听了小宇的汇报之后,决定——做。
决定做之后,林晨先在内部搭了一个员工食堂事业部的班子——负责人是原来管中央厨房品控的经理,再配一个厨师长、一个营养师、一个供应链调度。林晨说:你们先别急着开工,先把标准菜谱定下来——哪些菜适合大批量做、哪些菜隔两个小时就不好吃了,都要试出来。
厨师长不解:林总,不就是做饭吗?跟店里有什么不一样?
店里是炒给客人吃,食堂是炒给几百个人吃。几锅菜焖在一起,火候、味道全不一样。林晨说,你们先去别的公司食堂吃一个月,把人家的问题都记下来——咱们别重蹈覆辙。
他让林枫设计了一套员工食堂方案——不是开一家店承包一个食堂。企业提供场地,晨枫提供设备、食材、厨师、管理。晨枫按人头收费——每人每餐二十五块。企业补贴一部分,员工出一部分。
方案设计好之后,林晨开始找客户。
第一个客户——一家做智能硬件的科技公司,员工大概三百人。老板姓马,四十岁,跟林晨是朋友。林晨跟他说了员工食堂的方案。
马老板听了之后,很感兴趣。林总,我们公司一直想搞食堂,但自己搞太麻烦了。我们那个写字楼,楼下就一家快餐店,天天排队。你们来做,太好了。
那我们签合同。
行。签!不过我有个要求——菜要好吃。我们程序员嘴刁,不好吃,一个月就闹翻天了。
你放心。主厨是林浩的徒弟,标准跟晨枫一样。
签下马老板之后,林晨派了一支小团队进场。先装设备,再招厨工,试营业三天。头一天中午,三百人的公司只来了八十个人吃饭——很多人不信,觉得公司食堂能好吃到哪里去。
马老板有点着急:林总,这才来四分之一,行不行啊?
别急。你发个通知,说头一周员工餐半价。
半价?那不得亏?
亏三天,换一屋子回头客。林晨说,食堂这生意,不怕没人来,怕人来了留不住。头一口吃住了,后面自然就来。
果然,试营业第三天,排队的队伍从食堂门口一直排到了走廊拐角。
第一个客户签了之后,林晨又签了几个。一个月之内,签了五家企业,覆盖了两千个员工。月营收——两千人乘以二十五块乘以二十二个工作日——一百一十万。月利润——大概三十万。
林晨觉得——员工食堂,是一个好生意。不是暴利,但稳定。不管经济好不好,人都要吃饭。而且——承包了企业的食堂,就等于了这家企业。只要服务好,企业不会轻易换供应商。
他在笔记本上写了一行字——员工食堂,不是。是卖服务。你帮企业解决了员工吃饭的问题,企业就离不开你。
员工食堂的口碑,传得比想象中快。科技园的管理处主动找上门来,说园区里有二十多家企业想组团让晨枫管食堂,问能不能给个团购价。
团购价可以。林晨说,但有一条——每家企业的菜单,都必须按我们的标准来。标准是晨枫的命根子。团购可以便宜,命根子不能便宜。
林晨把员工食堂的数据,跟其他几个业务线放到一起比了比。快餐靠客流,高端靠客单,员工食堂靠人头——各有各的赚法。但有一点是一样的:都靠撑着。没有标准,快餐会乱,食堂会糊,高端会砸牌子。
咱们做的,说到底还是这门生意。林晨说。
从第一家店到现在,不管业务怎么变,根子一直没变过。
六个业务线,像六根柱子。柱子多,不是显摆,是抗风。风来了,哪根倒了,别的还能撑着。
员工食堂业务,成了晨枫餐饮的又一个增长点。快餐、高端、预制菜、电商、直播、员工食堂——六个业务线,覆盖了餐饮的各个细分领域。晨枫不再只是一个快餐品牌,而是一个餐饮服务集团。
林晨在管理会上说——我们的目标,不是开更多的店服务更多的人。不管在哪里、不管什么形式——只要有人需要吃饭,晨枫就能提供服务。
第499章 食堂标准化
员工食堂业务做起来之后,林晨发现了一个问题——食堂的管理,比快餐店复杂。
快餐店——菜单固定、流程固定、顾客流动。食堂——菜单要变、流程要变、顾客固定。快餐店的顾客,每天换。食堂的顾客,每天都是同一批人。同一批人,天天吃同样的东西,会腻。所以,食堂的菜单,要经常换。
林浩一开始没把这事当回事。叔,菜单轮换还不简单?我把店里的菜谱搬过去,轮着上不就行了。
不行。林晨摇头,店里的菜是给人的,食堂的菜是给人的。食堂员工没有菜单,只有窗口。窗口上有什么,他就吃什么。你要是端出一盘他没见过的菜,他会觉得这是啥;你要天天端同一道菜,他会觉得又是这个
林浩想了想,觉得有道理。
他让林浩设计了一套食堂菜单轮换方案——一周五天,每天不重样。周一——红烧牛腩饭、周二——咖喱鸡排饭、周三——糖醋排骨饭、周四——鱼香肉丝饭、周五——麻婆豆腐饭。每周轮换一次。一个月之后,再重新轮换。
菜单定稿之前,林浩在自己家厨房试做了整整三天。每天做五道,做完自己尝,再叫林晨来尝。林晨尝到第三天,实在吃不动了:你做的饭,样样好吃。问题是——我不是吃不下,是吃不下那么多
林浩这才意识到自己把量做大了。那……我把分量往下调调?
不是分量。林晨说,是节奏。你一天做五道新菜,样样都琢磨。真上了线,一天要出几千份,火候、分量都得标准化。你要先把定下来,再把量铺开。
林浩豁然开朗,重新把配方一份一份量好、称好,写成了标准作业卡。
正式上线前,林浩带着厨师团队去马老板公司试了一周。第一天,麻婆豆腐做咸了;第二天,咖喱鸡排的咖喱调稀了。林浩每天晚上回来,把白天的照片、反馈单铺一桌子,一样一样对。
叔,问题不在配方。林浩说,是出锅到出餐的时间。店里有保温,食堂是现炒现摆,摆得久就凉了。
那就改流程。林晨说,出餐口加保温台,菜出锅先放保温台,再一份一份打。
改完之后,又试了一周,满意率从六成提到了九成。
菜单轮换方案实施之后,员工的反馈很好——每天都有新花样吃不腻比外卖好吃多了。
菜单之外,林晨还做了一件事——开发食堂管理系统。
食堂的管理,比快餐店复杂。快餐店——点餐、出餐、收银——三个环节。食堂——点餐、出餐、收银、还有——统计。企业要统计——多少人吃了、吃了什么、花了多少钱。晨枫要统计——用了多少食材、赚了多少钱。
林晨花了一周时间,开发了一套食堂管理系统。系统功能——点餐、出餐、收银、统计。企业可以在系统上看到——每天的用餐人数、人均消费、满意度评分。晨枫可以在系统上看到——每天的食材消耗、成本、利润。
写这个系统的时候,林晨自己上。他坐在书房里,面前的屏幕上是一行行代码。他一边写一边跟小宇说:这套系统,不用做得多花哨。核心就两个字——。从点餐到收银到统计,一条线走通,别让它断。
小宇在旁边打下手,递需求、测流程,看林晨凌晨一点还在改代码,忍不住说:大伯,你歇歇吧。明天还有会。
就剩最后一段了。林晨头也不抬,写完这段,明天就能上线。
系统上线之后,食堂的管理效率大幅提升。以前——人工统计,费时费力,还容易出错。现在——系统自动统计,准确、及时、省力。
系统上线之后,还有一个数据让林晨很意外——员工给食堂的满意度评分,从六十八分一路涨到了八十五分。打分的人不是企业领导,是每天来吃饭的员工自己。
八十五分够吗?运营经理问。
不够。林晨说,目标九十分以上。让员工每天盼着午饭,食堂才算真正做成了。
林晨在笔记本上写了一行字——标准化,不是。是。标准了,就不用操心了。系统帮你操心了,你就可以操心更重要的事了。
食堂标准化之后,员工食堂业务的复制速度加快了。以前——签一家新企业,要花一个月时间准备。现在——签一家新企业,只需要一周时间。因为——菜单是标准化的,系统是标准化的,流程是标准化的。只需要把标准化的东西,复制到新的食堂就行。
三个月之后,员工食堂的客户从五家增长到了十家。覆盖的员工从两千人增长到了五千人。月营收从一百一十万增长到了两百五十万。
扩张快,靠的就是这套标准化。以前签一家企业,光菜单就要重新想一个月;现在菜谱是现成的,系统是现成的,厨工按标准作业卡上岗,培训三天就能上手。林晨把标准化的流程画成了一张图,贴在事业部的墙上——从签合同到开饭,七天,一天都不多。
七天就能开一家食堂。林晨在管理会上说,这就是标准化的力量。慢工出细活没错,但已经磨好了,剩下的就是复制。
不过林晨也没放松。他在笔记本上补了一句提醒自己:标准化是,不是。食堂的菜谱,每三个月要更新一轮;系统的满意度数据,每周要看一次。标准是用来兜底的,不是用来捆住手脚的。
守得住底线,又不把手脚捆死——这才是真本事。他对着镜子里的自己说。
林晨看着这个数据,觉得——员工食堂,有搞头。
第500章 里程碑
创业第五年,年底的最后一个工作日,林晨没回家。他把办公室的门关上了,窗帘拉下来,一个人坐在电脑前,做了一次全面的盘点。
桌上放着一杯凉了的茶,是苏婉下午托人捎来的。他没顾上喝。屏幕上摊开的是晨枫一整年的经营报表——五个业务板块,几十张表,从一月一直排到十二月。他一行一行地看,看得很慢,像在检阅一支打了五年仗的部队。
窗外已经全黑了。办公室的灯只开了一半,那杯茶彻底凉透了。他端起来喝了一口,凉的,有点涩。他想起五年前那个出租屋,连张像样的桌子都没有,他是趴在床板上敲代码的。
十二家快餐店——覆盖深圳六个区,月营收六百万。去年末还是十家,今年又新开了两家。每一家的铺面,都是他自己带着团队踩过点、算过坪效才定的。
四家高端餐厅——雅、臻、悦、鲜——月营收四百万。雅是晨枫的第一家米其林餐厅,一星,是门面。臻在万象城,阿伟主厨。悦是这两年新开的,主打年轻人。鲜是海鲜主题,冬天生意最好。
中央厨房——供应所有门店,月营收两百万。三年前还只是个租来的小厂房,现在占了整整一层楼,管线、冷库、清洗线都是新换的。
预制菜业务——门店+电商,月营收五十万。这块是去年才做起来的,从选品到包装踩了不少坑,如今总算爬上了正轨。
直播带货——月销售额一百万。一开始林晨不信这个,觉得做饭的人去直播,像什么话。是苏婉劝他:现在的人就吃这套,你先试试。一试,还真成了。带货的主播是店里两个最能说会道的店长轮流上。
员工食堂——十家企业,月营收两百五十万。半年前还是五家,标准化之后复制得飞快,三个月翻了一倍。
教育业务——训练营+线上+企业培训,月营收一百五十万。晨光科技教育是方老师在做总经理,从AI训练营到企业培训,已经成了晨枫的第二条腿。
投资业务——天使投资+Lp,暂未产生收益。这块林晨最谨慎,投的都是他看得懂的领域——餐饮供应链、食材科技。不求快,只求稳。
加起来——月营收一千七百五十万。年营收——两亿一千万。
他在纸上画了一根线——第一年,月营收几十万;第二年,过了两百万;第三年,翻到五百万;第四年,站上一千万;今年,一千七百五十万。五年,画出一条几乎笔直向上的线。他把线画完,搁下笔,盯着那条线看了好一会儿。
林晨看着这个数字,沉默了很久。
五年前,他月收入为零。被裁那天,他蹲在天桥底下算过手里那点存款,盘算着能撑几个月。五年后,月营收一千七百五十万。五年时间,从零到两亿一千万。这个速度,不算快。但每一步,都走得很稳。没有一笔是侥幸来的,没有一笔是靠运气砸出来的。那根线往上爬的每一格,都是用人、用货、用一个接一个深更半夜填起来的。
他记得第一家店开张那天,忙到晚上九点,账上只收了几百块。苏婉说别急,他才没慌。那时候谁也没想到,五年后会走到这个数。
他把这个数字,发到了家族群里。
只过了几秒,手机就响了。林枫秒回——两亿一千万?
林晨,你做到了。
不是我一个人做到的。是我们一起做到的。
林浩回了一个大拇指。小宇回了一句——大伯,五百章了。
群里的热闹还没散,苏婉的电话先到了。她是看到了群里的消息。两亿一千万?嗯。那明天回家,我多做两个菜。林晨笑了:成,我提前下班。电话挂了,他嘴角还挂着笑。
五百章。小说写到了五百章,晨枫也走过了五年的路。五年前,林晨三十五岁,被裁了。五年后,林晨四十多岁,管理着一家年营收两亿一千万的餐饮集团。
他想起来,去年这时候,苏婉在饭桌上随口问过他:你有没有算过,咱们什么时候能过两亿?他当时说:不急,水到渠成。今天,渠成了。
他在笔记本上写了一行字——五百章,不是终点。是起点。下一个五年——目标:年营收十亿。
他把这行字发到了管理群里。
区域经理们纷纷点赞。
李店长回了一句——林总,十亿——我们能做到吗?
他放下茶,想了想,一个字一个字地打:能。只要我们继续努力,继续学习,继续进步。十亿,不是梦。
李店长是他最早一家快餐店的店长,从开业那天干到现在,头发白了几根。他信这个人。人信了,路就一定能走通。
发完这条,群里安静了几秒。又有位区域经理冒出来:林总,这话我们记住了。明年,咱们先把两亿一千万守住,再往上爬。林晨回了一个字:
窗外的高楼灯火一盏接一盏地亮着。他想起刚创业那会儿,为了第一家店的租金,他把家里能凑的钱全凑了,还借了堂哥的。如今光是每个月给员工发的工资,就够当年他数半天的。想到这儿,他把笔记本合上,又看了一眼屏幕上那个数字——一千七百五十万。
林晨放下手机,走到落地窗前,看着窗外的深圳夜景。楼下车流如织,灯火连成一片,远处的写字楼顶还有人亮着加班灯。
办公室里安静下来,只有电脑风扇的低鸣。他想起五年前那个晚上,他坐在天桥上,没有办公室,没有灯光,手里攥着一份辞退证明。他问自己——我是不是完了?那时候没有人回答他,只有桥下车流驶过的声音。
五年后,他在这座城市的最高处,看着夜景,告诉自己——我做到了。这句话不是对别人说的,是对五年前那个蹲在天桥上的人说的。
不是终点。是起点。
第501章 总结大会
年营收突破两亿之后,林晨决定——办一场五周年庆典。
不是年会那种内部聚会对外展示。邀请政府领导、行业协会、合作伙伴、媒体记者——让所有人看看——晨枫五年,做到了什么。
这个想法,是他跟苏婉商量出来的。苏婉说:做企业的,不能闷头赚钱。该让外面看见的时候,就得大大方方让人看见。林晨觉得她说得对。
筹备花了整整一个月。场地、灯光、流程、请柬,每一样都是他自己过目。请柬印的是深蓝色的,封面上压了一行字——晨枫五年,谢谢一路有你。他让行政把名单排了一遍又一遍,把那些一路陪着晨枫走过来的供应商、房东、合作方,一个一个排进去。连当年把第一家店面租给他的房东,都专门留了位。
庆典在晨枫·雅举办。不是包场——是整家店都包下来。晚上六点开始,嘉宾陆续到场。有深圳餐饮协会的会长、有市政府的领导、有供应商的代表、有媒体的记者。还有——晨枫的所有员工。
大厅里摆了二十多桌。灯光打得很暖,桌上放着晨枫自己出的预制菜礼盒,当伴手礼。林晨站在门口迎宾,从六点一直站到七点,跟每一位嘉宾握手。有位老供应商拉住他的手说:林总,当年你第一家店开张,我是扛着货骑电动车来送的。五年了,看着你做大,我高兴。林晨的手被他握得发烫。
等客人差不多到齐,林晨在门口站定,回头看了一眼大厅。二十多桌坐得满满当当,最里头那桌是晨枫的老员工,有人正比划着跟旁边的人讲什么。灯光底下,红彤彤的一片,看着就喜庆。
七点半,庆典正式开始。林晨站在台上,看着台下的几百个人。灯光有点晃眼,他眯了眯眼睛,把准备好的稿子放到一边——他不打算照稿念。
大家好。我是林晨。
多年前的今天,我三十五岁,被裁了。多年后的今天,我已经四十多岁,站在这里,跟大家分享晨枫的故事。
五年时间,晨枫从一家店,做到了十六家店。从快餐,做到了米其林。从深圳,走向了全国。从年营收零,做到了年营收两亿一千万。
台下响起了掌声。
他停了一下,等掌声落下去,才接着说。
这些成绩,不是我一个人做到的。是晨枫的每一个员工、每一个合作伙伴、每一个顾客——一起做到的。五年前,我一个人站在科技园那家小店门口的时候,从没想过,五年后,我会站在这里。
所以——今天,不是庆典。是我们的庆典。
掌声又响起来,比上一次更热烈。台下第一桌坐着苏婉,她没鼓掌,只是笑着看他。林晨也看了她一眼,才把话筒转向了身后。
林晨邀请了林枫、林浩、小宇——一起上台。
林枫——我的堂哥。五年前,他在工地上画图纸。现在,他是晨枫餐饮的基建总监。没有他,晨枫的店开不起来。从选铺、装修到验收,每一家店都是他一钉一铆盯出来的。
林枫接过话筒。林晨说得对。五年前,他在科技园开第一家店的时候,我觉得他疯了。一个写代码的,开什么餐厅?五年后,我觉得——他是我见过的最有远见的人。他不光会写代码,他会看人。他看准了我,也看准了这行。
台下笑了。有人轻轻鼓起掌来。
林浩——我的侄儿。五年前,他在东莞的电子厂打螺丝。现在,他是米其林一星主厨。没有他,晨枫不会有米其林。他手里那把勺,是晨枫最值钱的家当。
林浩接过话筒。他在台上顿了顿,声音有点哑。叔——不,林总。谢谢你。没有你,我现在还在电子厂里打螺丝。
台下响起了掌声。有人喊了一声:林主厨,好样的!
小宇——我的侄儿。三年前,他大专毕业,找不到工作。现在,他是晨枫的运营总监。没有他,晨枫的运营不会这么顺畅。十几家店的账、人、货,都是他在管。
小宇接过话筒。大伯,谢谢你给我机会。我会继续努力。
台下又响起了掌声。
林晨看着台上的三个人——林枫、林浩、小宇。五年前,他们都在各自的困境里挣扎。五年后,他们都找到了自己的位置。不是因为他改变了他们。是他们自己改变了自己。他只是——给了他们一个机会。一家人从各自的泥坑里爬出来,站到了同一个台上,这比任何财务报表都让他心里踏实。
庆典的最后,林晨宣布了一件事。
从今天开始,晨枫餐饮集团,正式更名为晨枫控股集团。旗下——晨枫餐饮、晨光科技教育、晨枫金融科技——三个子公司。餐饮、教育、投资——三大业务板块。
我们的目标——不是做深圳最大的餐饮集团。是做中国最有影响力的生活服务集团
台下响起了热烈的掌声。灯光打在他身上,他看见台下的每一个人都在鼓掌,连后排的员工都站了起来。有记者举着相机,快门声连成一片。庆典结束的时候,大厅里还久久没有散场,有人拉着林晨合影,有人围着林浩要签名。有个店员凑到林晨跟前,小声说:林总,我在晨枫干三年了。今天这顿饭,是我吃过最提气的一顿。林晨拍了拍他的肩:好好干,往后还有更多。
庆典结束之后,林晨站在晨枫·雅的门口,送走了最后一批嘉宾。深秋的夜风有点凉,吹得门口的红毯沙沙响。他站了一会儿,看着头顶那块在夜色里亮着的招牌。
送走最后一位媒体的记者,他刚想转身回去,肩膀被人从后面拍了一下。
是林枫。
林晨,五周年了。不容易。
是不容易。但值得。
下一步——有什么打算?
下一步——让晨枫,走出深圳。
第502章 林浩的成就
五周年庆典之后,林浩获得了一个重要的荣誉——深圳十大名厨。
这个评选,由深圳餐饮协会和深圳晚报联合主办。评选标准——技术、口碑、影响力。参选的厨师,要把自己的代表作端到评委面前,由评委现场打分;还要接受食客和媒体的公开投票。报名的厨师有上百位,先初选、再复选,一轮一轮筛下来,最后站到评委面前的,只有二十个人。
林浩接到通知那天,正站在后厨的灶台前。他把名单看了两遍,又递给旁边的阿伟:你看,这排在前头的,都是老前辈。阿伟接过去瞅了一眼:师傅,你也不差了。
林浩本来没想参评。名单下来那天,是阿伟劝他:师傅,你得去。你去了,不只是你一个人的事,是整个晨枫的事。外头都在看——晨枫的厨子,到底有没有真本事。林浩想了想,报了名。
评选前的那一个月,他把自己关在后厨,反反复复打磨那道从东莞时期就开始琢磨的招牌菜。试了不知多少遍,连切配的刀工角度都抠到分毫。阿伟每天下班不走,陪他在后厨试菜、摆盘,两个人一直忙到深夜。初选那天,他在协会后厨现场做菜,前后两道:一道是招牌的红烧牛腩,一道是应季的清炒时蔬。评委问他:牛腩是你的强项,清炒图什么?他答:越是简单的菜,越见功夫。评委没再问,低头记了分。评审那天,他把菜端上去的时候,手是稳的。评委尝了一口,没说话,又尝了一口,才点了头。
复选那几天,食客和媒体的投票也开了。晨枫的食客们很给力,老顾客自发地转发拉票,晨枫·雅的包间里,连着几天都有人提这茬。票数一路往上涨,林浩自己倒不怎么关心,他只看技术分。老顾客在店里问他:林师傅,你这菜要是评不上,我们可不答应。他笑着摆手:评不评得上,菜都这么做。
林浩凭借米其林一星的技术、晨枫·雅的口碑、个人故事的传播力——高票当选。公布结果的当晚,店里炸了锅,后厨的徒弟们起哄要他请客。他拗不过,让徒弟们从库房搬了一箱啤酒,在店门口的小院里喝了一顿。那顿酒喝到后半夜,徒弟们起哄让他说两句。他端着杯子,半天憋出一句:接着干。大家都笑了。
颁奖典礼在深圳广电大厦举办。那天晚上,广电大厦门口拉起了红毯,闪光灯亮成一片。林浩穿着主厨的白色制服,站在台上。台下有几百个人——有餐饮同行、有媒体记者、有粉丝。他看见阿伟坐在台下,冲他竖了竖大拇指。
主持人问他——林浩,你有什么想对大家说的?
林浩拿起话筒,沉默了几秒。话筒有点沉,他握了握,像是在给自己打气。
我想感谢一个人——我的叔叔,林晨。
五年前,我在东莞的电子厂里打螺丝。一个月五千块,住八人间,吃食堂。不敢想未来,不敢谈恋爱,不敢跟家里要钱。那时候我觉得,我这辈子,大概就这样了。
他顿了一下,声音低了一点,但台下听得很清楚。
有一天,我叔叔来找我。他说——林浩,你想不想学厨?我说——想。但我不会。他说——不会,可以学。
他帮我交了学费,帮我找了学校,帮我安排了工作。没有他,我现在还在电子厂里打螺丝。
台下响起了掌声。有几家媒体的镜头,一直对着他的脸。
我想对跟我一样的人说——不要放弃。不管你现在多难,只要你愿意努力,就有人愿意帮你。前提是——你得先愿意努力。
台下又响起了掌声,比上一次更久。掌声里有人开始叫好,气氛一时热了起来。等掌声停下来,他补了一句:我没什么大本事,就是舍得下笨功夫。往后,我会一直做下去。
林晨坐在台下,看着台上的林浩。五年前,林浩在电子厂里,满手油污,眼神迷茫。他记得第一次去宿舍找林浩那天,八人间的下铺,林浩枕边放着一本皱了的《家常菜谱》。五年后,林浩站在台上,穿着白色制服,眼神坚定。五年时间,一个人可以改变这么多。他忍不住想:当初自己要是没去那一趟东莞,现在这孩子,会在哪条流水线上?想到这里,他在心里,把那个又谢了一遍。
颁奖典礼结束后,场外还有媒体拉着林浩做专访,有粉丝排着队求合影。林浩耐心地一一应付,他脾气好,人家问什么都答。散场的时候,林晨没急着走。他在后台的走廊里等着,等林浩卸了妆出来。林浩看见他,脚步快了两步,走到他跟前。两个人没多说话。林晨替他整了整制服领子,林浩低头看了看,笑了。有些话,不用说出来。
第二天一早,林浩照常到店。门口挂了一条横幅——恭贺主厨林浩荣获深圳十大名厨,是阿伟他们连夜挂上去的。林浩站在门口看了一会儿,没说什么,转身进了后厨。开门前,他系围裙的动作,比平时慢了一点。那顿饭,他做得格外用心,每一桌的菜,都是自己一锅一锅盯出来的。
颁奖典礼之后,林浩给林晨发了一条微信——其实他就在旁边,可他还是发了。
叔,谢谢你。
林晨回了一句——不用谢我。是你自己努力的。
林浩回了一个拥抱的表情。
林晨看着手机屏幕,笑了一下。他把手机揣进口袋,往回走,灯光把他的影子拉得很长。一路走,一路想——当年他伸手拉林浩那一把,说到底,也只是想让这孩子别烂在流水线上。他没想到,林浩会走到今天这一步。
林浩的成就,不只是深圳十大名厨。是他从一个流水线工人,变成了一个有尊严的人。这种改变,比任何荣誉都重要。
第503章 小宇的晋升
林浩获得荣誉之后,小宇也迎来了自己的晋升——运营总监。
说起来,这个晋升不是林晨拍脑袋定的。年初开运营例会的时候,小宇做了一次汇报——他把三家店的运营数据放在一起对比,逐项拆出差距:哪些店位置好但服务跟不上,哪些店流量大但翻台率低,每一条都给出了改进方案。开完会,林晨把他留下,问了半小时的问题,小宇全都答得上来。他问的都是最磨人的细节:周末的翻台率是多少,晚高峰人手够不够,中央厨房的损耗报上来没。小宇不看表,张口就来。这份张口就来,是四年里一天一天攒出来的。林晨当时没说什么,心里已经有了数。
宣布任命那天,其实只有一句话。林晨在例会上当众宣布:运营总监,小宇。底下安静了一瞬,随即响起掌声。小宇站起来,鞠了一躬,什么都没多说。他是不敢多说——怕一开口,声音就露了怯。
从运营助理到运营总监,小宇用了四年时间。四年时间,从一个什么都不懂的大专毕业生,变成了管理着十几家店、几十个员工的运营总监。前两年,他几乎天天泡在店里,从点餐收银学起,端过盘子、收过账、排过班,硬是把门店的角角落落都摸了个遍。后来才一点点往管理上走,管过一家店,管过三家店,管过整个区。每一步,都有脚印。有人问他升得快不快,他说:不快。每一步都是踩着问题过来的。
晋升仪式在晨枫的办公室里举行。没有大操大办,就是几个人——林晨、林枫、林浩、小宇——在一起吃了个饭。菜是从中央厨房现拿的,摆了一桌子,热气还没散。林浩特意下厨炒了两个拿手菜,说是给小宇庆祝。
林晨举起酒杯。小宇,恭喜你。运营总监——不是终点,是起点。
小宇举起酒杯。大伯,谢谢你。没有你,我不会有今天。
不用谢我。是你自己努力的。
小宇喝了一口酒,沉默了几秒。杯子里是啤酒,他喝得慢,像是在琢磨什么。
大伯,你还记得——两年前,你跟我说的话吗?
什么话?
你说——不要勉强做不喜欢的。那时候,我学的是计算机,但我不喜欢编程。我觉得自己很没用——学了好几年,什么都做不好。你跟我说——不要勉强做不喜欢的。找到你擅长的,做你擅长的。
林晨想起来了。那时候小宇刚来公司,蔫头耷脑的,走路都贴着墙根。他看这孩子不对劲,才多说了那几句。那时候的小宇,站在一群人里,老往后缩。让他去巡店,他站门口不敢进,还是林晨推了一把:进去,看,记。他就真进去看了,记了。这一记,记了四年。
然后呢?
然后,我找到了。我擅长跟人打交道,擅长管事情。做运营,很适合我。大伯,你知道吗——管店就像下棋。店里有多少人、多少货、多少事,你得一眼看全,再一步步摆。我喜欢这种把一团乱麻理顺的感觉。
林晨点了点头。对。每个人都有自己的天赋。找到天赋,做天赋的事,就能做好。你这两年,从跑腿打杂,到能独当一面,就是最好的证明。
小宇又喝了一口酒。大伯,我有个目标。
什么目标?
我想——三年之内,把晨枫的运营体系,做到全国一流。现在我们的运营,还是靠人盯。我想把它做成一套标准、一套系统,换了谁都能跑起来。
林晨看着小宇,沉默了几秒。他想起四年前,这孩子在大专门口手足无措的样子,又想起刚才他说把一团乱麻理顺时眼里的光。林浩靠一把刀立住了,小宇靠一本账也能立住。每个人都有自己的路。他在心里把这条路又走了一遍:从端盘子到管十几家店,中间隔着整整四年的脚印。
好。我支持你。要人给人,要钱给钱。运营这一摊,我交给你。
小宇放下酒杯,眼圈有点红:大伯,我这辈子,能遇上你,是运气。林晨摆了摆手:别矫情。都是干出来的。话是这么说,他自己也有点动容。
第二天,林晨跟着小宇巡了一天店。小宇走在前头,进门先看门口的海报,再看收银台的单子,蹲下摸了一遍桌角的灰,又去后厨数了数备货。林晨跟在后面,一句没指正。他看得出来,这孩子是在用自己的法子管店。巡到第三家店,小宇在门口停住,指着招牌上的字说:大伯,这家店刚开业那会儿,我在这儿端了三个月盘子。林晨顺着他的手看过去,笑了笑,没接话。
酒喝到一半,林浩也举起了杯子:小宇,哥敬你一杯。往后门店的事,你说了算。后厨要是谁敢不配合,你找我。小宇也举杯:哥,谢了。林晨看着这一幕,心里暖了暖。他端起酒杯,自己抿了一口,没插话。饭桌上,说的都是家里话——林浩聊新菜,小宇聊门店,林晨聊排班。这样的饭,比在饭店里谈生意,舒服多了。
小宇的晋升,让林晨意识到——家族企业的传承,不是传给谁培养谁。林枫、林浩、小宇——每个人都有自己的天赋。林枫擅长工程,林浩擅长技术,小宇擅长运营。让他们做自己擅长的事,他们就能做好。这个道理,他是在这四年里,一点一点看明白的。他想起老家那些老店,老板的儿子接手,两代人闹得不可开交。林家不能走那条路。把规矩立起来,把人培养出来,比把位置留给谁,重要得多。
他在笔记本上写了一行字——家族企业,不是家族说了算家族一起干。各司其职,各尽其能。这才是家族企业最好的状态。
第504章 二代培养
小宇晋升之后,林晨开始思考一个更深层次的问题——二代培养。
乐乐十三岁了,上初二。编程水平越来越高,已经能独立做项目了。上个礼拜,他还给班里做了个小程序,用来统计运动会报名。林晨看着儿子的代码,写得像模像样。他觉得——是时候让乐乐接触一些的东西了。
不是让他做生意。是让他了解——商业是怎么运作的。
周末早上,苏婉在厨房收拾,林晨敲了敲乐乐的房间门。走,爸带你去个地方。
去哪?
去了你就知道了。
乐乐放下键盘,背了个包就跟出来了。上车之后,林晨才告诉他目的地是中央厨房。乐乐有点意外,他以为又要去科技园看老爸加班。苏婉在门口喊了一句:早点回来,中午给你们留饭。林晨应了一声,发动了车。
周末,林晨带乐乐去了一趟中央厨房。
车间里的机器正在轰隆隆地转,一股饭菜混合的气味扑面而来。乐乐鼻子抽了抽,有点好奇地东张西望。
乐乐,你知道——我们每天要做多少份饭吗?
不知道。
大概五千份。五千份饭,需要多少食材、多少人工、多少时间——你知道吗?
不知道。
那我带你看看。
林晨带乐乐参观了中央厨房——从食材进货到加工,从包装到配送。每一个环节,都给他讲解。货梯口,一筐筐蔬菜刚从冷链车上卸下来,戴着口罩的工人把它们按批次码放整齐。再往里走,清洗线的水流哗哗作响,切割机把胡萝卜切成均匀的滚刀块,一口口大锅冒着白气,厨师长正拿长柄铲翻动锅里的牛腩。
食材从这边进来——蔬菜、肉类、调料。经过清洗、切割、烹饪、包装——变成半成品。然后,配送到各个门店。门店收到半成品,加热、出餐——变成顾客桌上的菜。
乐乐看得很认真。他在一条输送带前站了很久,看那些装好的餐盒排着队,一盒一盒跳进保温箱。爸,这个流程——跟写代码一样。
哪里一样?
写代码——输入、处理、输出。中央厨房——食材进来、加工、配送出去。流程是一样的。
林晨笑了。对。流程是一样的。不管做什么,都是输入-处理-输出。输入好,处理好,输出就好。输入不好,处理不好,输出就不好。你看这条线,哪一环掉了链子,整批货都得返工——跟代码出了bug一样。
乐乐点了点头。他在冷库门口又停了一会儿,看一箱箱分好的肉标着编号,若有所思。林晨没催他,等他看够了才领他往配送区走。他心里想:这孩子看东西,倒是会盯着细节看。像他小时候看电路板。
参观完中央厨房之后,林晨带乐乐去了一家门店。中午刚过,店里还有几桌客人。收银台的屏幕上跳着当日的营业额。
乐乐,你看——这家店,一天能卖多少钱?
不知道。
大概八千块。八千块,减去食材成本、人工成本、租金——大概能赚两千块。一个月赚六万。一年赚七十二万。
那——开一家店,要花多少钱?
大概一百万。一百万投资,一年赚七十二万。投资回报率——百分之七十二。
乐乐想了一下。那——如果开十家店呢?
十家店,投资一千万。一年赚七百二十万。
那如果开一百家店呢?
一百家店,投资一个亿。一年赚七千二百万。
乐乐沉默了几秒。他盯着收银台上那个数字,又看了看店里忙碌的服务员。爸,开餐厅——比写代码赚钱。
林晨笑了。写代码也能赚钱。但写代码赚的是。开餐厅赚的是。工资是固定的,利润是不固定的。工资——你写多少,拿多少。利润——你赚多少,拿多少。你看这家店,淡季和旺季,赚的数能差一倍。
那——哪个更好?
没有哪个更好。只有哪个更适合你。你喜欢写代码,就写代码。你喜欢做生意,就做生意。重要的是——做你喜欢的事。爸不指望你接我的班,爸只希望你长大了,做的事是你自己真心想做的。
乐乐点了点头。
中午回到家,苏婉已经把饭摆好了。饭桌上,乐乐巴拉巴拉地把一天的见闻讲了一遍,讲到开一百家店一年赚七千二百万的时候,眼睛亮亮的。苏婉看了林晨一眼,笑着没接话,只往乐乐碗里夹了块排骨。等乐乐吃完饭回了屋,苏婉才开口:你带他去逛一天,他眼睛都在放光。林晨说:让他看看,别老闷在代码里。苏婉点点头:行,就是别把孩子逼急了。慢慢来。
从那天开始,乐乐对产生了兴趣。他开始问林晨一些问题——为什么这家店生意好,那家店生意不好?为什么这个产品卖得好,那个产品卖得不好?为什么这个员工干得好,那个员工干得不好?
林晨一一回答。不是直接给答案,是引导他自己想。有时候故意装傻:你觉得呢?逼乐乐自己往下想。
你觉得——为什么这家店生意好?
因为位置好。
还有呢?
因为东西好吃。
还有呢?
因为服务好。
对。位置、产品、服务——三个因素。位置好,有人来。产品好,来了还来。服务好,来了还推荐别人来。做生意的道理,说复杂也复杂,说简单,其实就这三条。
乐乐点了点头。其实他后来还想了好几天,又跑到林晨跟前问:爸,那你当年,是怎么决定做餐饮的?林晨想了想,答:是先把自己会做的事做好,再学着做不会做的事。乐乐似懂非懂地点了点头。
林晨在笔记本上写了一行字——二代培养,不是。是。带他看、带他想、带他做。看了,想了,做了——他就懂了。
第505章 家族宪章
二代培养开始之后,林晨意识到——需要一套家族宪法。
不是法律文件,是家族共识。写清楚——林家的价值观是什么、家族企业的治理原则是什么、家族成员的权责利是什么。有了共识,家族才能长久。
这个念头,源自一次饭桌上。那天一家人吃饭,乐乐随口说了一句:以后家里这些店,是不是都是我的?话没落地,苏婉先接话:胡说,店是你爸跟你叔他们一起做起来的,是大家伙的。林晨听着,心里一动——孩子这话不是恶意,但说明——有些东西,家里没说明白。不说清楚,往后就有隐患。
林晨花了一个月时间,起草了林氏家族宪章。他推掉了大部分应酬,晚上回来就在书房里写。写了一版,又删掉,重写。他把五年来踩过的坑、家里人的脾性、自己对这些事的看法,全揉进去了。写到一半,他还专门请杨律师——当年帮他做遗产规划的律师——过了一遍,把话头捋顺了,避免日后跟法律条款打架。
宪章分五个部分——
第一部分——家族价值观。林家相信什么?——诚信、努力、分享、传承。诚信——做人做事,都要诚实守信。努力——不管做什么,都要全力以赴。分享——赚了钱,要跟家人、员工、社会分享。传承——好的价值观,要传给下一代。这一条,是他从自己多年的信条里摘出来的——代码可以骗人,但逻辑不会,人更不能。
第二部分——家族企业治理原则。家族企业怎么管?——能者上、庸者下。家族成员可以进入公司,但必须通过考核。考核不过,不能进。进了,做不好,也要下。不是因为是家人,所以可以干因为能干,所以是家人。这一条,是他最想写清楚的——他见过太多家族企业,死在自家人好说话上。
第三部分——家族成员权责利。家族成员有什么权利、什么责任、什么利益?——权利:参与家族会议、了解公司情况、提出建议。责任:维护家族声誉、支持公司发展、帮助其他成员。利益:按贡献分配、不按身份分配。
第四部分——家族财富管理原则。家族财富怎么管?——保守、分散、长期。保守——不追求高收益,追求稳定。分散——不集中在某一个领域,分散到多个领域。长期——不追求短期回报,追求长期增值。他自己做投资,就一直这么干的。
第五部分——家族传承机制。家族怎么传承?——提前培养、逐步交接、制度保障。提前培养——从孩子小时候开始培养。逐步交接——不是一下子交,是逐步交。制度保障——有制度,不靠人。
写完最后一个字,林晨把宪章通读了一遍,改了错别字,又誊了一遍。他写字一向潦草,这三十页,却是一笔一画抄的。
宪章起草完之后,林晨把林枫、林浩、小宇叫到一起,开了一次家族会议。不是在公司会议室,是在他家客厅。苏婉泡了茶,端到茶几上,自己也在旁边坐下听着。
这是我起草的林氏家族宪章。你们看看,有什么意见。
三个人传阅了宪章。客厅里安静了好一阵,只有翻纸的沙沙声。
苏婉先看了第一页,念出声来:诚信、努力、分享、传承。她点了点头,说:写得好。家里确实得有个规矩。她没多插嘴,把茶往几个人面前推了推。那天晚上的茶,一壶续了三四回。几个人聊到十点多,没聊别的,都在掰扯宪章里那几条。
等三个人都看完,林枫先开口——林晨,这个宪章——写得好。但我有一个问题。
什么问题?
宪章里说——家族成员可以进入公司,但必须通过考核。那——如果乐乐长大了,想进公司,也要考核吗?
对。也要考核。
那——如果考核不过呢?
考核不过,不能进。可以去做别的事。家族企业,不是铁饭碗。能者上,庸者下。乐乐是我的儿子,我更不能给他开后门——开了这个门,往后就关不上了。
林枫点了点头。好。我同意。
林浩说——叔,我也同意。宪章里说——按贡献分配,不按身份分配。这个原则,我支持。不能因为我是林家的人,就多拿。应该按贡献来。我在后厨干了这么多年,最服气的就是做多少、拿多少
小宇说——大伯,我也同意。宪章里说——维护家族声誉。这一点,很重要。家族声誉,是家族最宝贵的资产。每个人都要维护。我们在外面,代表的不只是自己,是林家,是晨枫。
林浩又补了一句:叔,宪章里这条维护家族声誉,我们后厨也认。菜做砸了,砸的是整个晨枫的牌子。林晨点头:
林晨看着三个人——都同意了。他端起茶,喝了一口,觉得这杯茶比平时都香。
好。那从今天开始,林氏家族宪章正式生效。
他在宪章的最后一页,签上了自己的名字。笔是新买的,黑墨水,一笔一画写得很慢。写完之后,他把笔递给旁边的人。苏婉接过去,也签了。再往下,是林枫、林浩、小宇——都一笔一画,签得认真。
四份宪章,每人一份。林晨把自己的那份,锁进了保险柜——跟房产证、股权证书、信托合同放在一起。他拧了两圈密码锁,又拉了一下,确认锁死了,才直起身。锁芯咔哒一声,落在安静的客厅里。这份文件,往后就是林家的了。想到这四个字,他轻轻呼了口气。
他在笔记本上写了一行字——家族宪章,不是。是。有了共识,家族才能长久。没有共识,家族就会散。
第506章 分红机制
家族宪章签署之后,年底到了。林晨做了一件大事——分红。
不是员工分红——员工分红已经做了。是家族分红。每年年底,晨枫的财务都会做一次汇总,把净利润算清楚,然后按家族宪章的规定,把该分的那部分,一分不少地分下去。账目是外聘的审计公司过过的,每一笔都经得起查。
今年,晨枫控股集团,净利润三千五百万。按照家族宪章的规定——净利润的百分之三十用于家族分红,百分之三十用于公司发展,百分之三十用于公益基金,百分之十用于风险储备。这个比例,是签宪章那天就定死的,谁也没有异议。那百分之三十的公益基金,正好补进了晨光助学基金的口袋;百分之十的风险储备,留着给公司压舱。该分的分,该留的留,这是林晨给自己定的规矩。
百分之三十用于家族分红——一千零五十万。
林晨、林枫、林浩、小宇——四个人,按持股比例分配。
林晨持股百分之四十四——分到四百六十二万。
林枫持股百分之二十五——分到两百六十二万五千。
林浩持股百分之十五——分到一百五十七万五千。
小宇持股百分之十——分到一百零五万。剩下的百分之六,是预留的员工期权池,分红会跟员工激励一起发放。
数字出来那天,林晨把四个人叫到办公室,把表格摊开给他们看。他没多解释,只说了一句:都是照着宪章算的,有出入你们提。三个人对着表格看了半天,谁也没挑出毛病来。散会的时候,林浩走在最后,回头说了一句:叔,这钱拿得踏实。林晨知道他说的是宪章——规矩立在前面,分钱就分得心安。这份心安,比钱本身金贵。
小宇的虚拟股,今年正式兑现成了。林晨给了他百分之十的股份——不是送的,是他的。两年时间,从运营助理到运营总监,小宇的贡献,值百分之十。这笔账,林晨在心里算过很多遍,每一遍都觉得值。
分红到账的那天,小宇给林晨打了一个电话。电话那头的声音,带着点藏不住的激动。
大伯,分红到账了。
多少?
一百零五万。
感觉怎么样?
感觉——不真实。两年前,我一个月工资五千块。现在,一年分红一百零五万。
不是一年。是今年。明年可能更多,也可能更少。分红跟利润挂钩。利润高了,分红多。利润低了,分红少。
我知道。大伯,我会继续努力的。
挂了电话,林晨靠在椅背上,没急着干别的。他知道这一百零五万对小宇意味着什么——意味着这孩子,终于可以在这个城市里,直起腰杆过日子了。他没让小宇谢他。这两年,小宇替他扛了多少事,他心里有数。钱分到该分的人手里,就是分对了。
林晨的堂哥,也就是基建总监林枫,拿到分红之后,做了一件事——把老家的房子翻新了。不是给自己住的,是给父母住的。他父母在老家住了几十年的老房子,墙裂了,屋顶漏了。每年回家过年,他站在那间漏雨的屋子里,心里都不是滋味。今年,他终于有余力了。他花了几十万,把老房子翻新了一遍——换了新屋顶、新墙、新地板、新家具。
翻新之后,他给林晨发了几张照片。照片里,阳光正好,白墙红瓦,院子里刚种的花还没谢。
林晨,老家的房子翻新好了。爸妈很高兴。
林晨看着照片——老房子变成了新房子。墙是白的,屋顶是红的,院子里种了花。他想起小时候,逢年过节去堂哥家,婶子总是在那间旧厨房里忙活。如今,厨房也是新的了。
哥,你做得对。
不是我做得好。是你带得好。没有你,我哪有钱翻新房子。
不是我。是我们一起赚的。
林浩拿到分红之后,也做了一件事——在深圳买了房。不是那种豪宅——是一套小两居,在龙岗,总价三百万。首付一百五十万,贷款一百五十万。月供七千。他跑了小半个深圳,最后挑了离店近的一套——早上走路就能到后厨,省得天天挤地铁。签合同那天,他在售楼处坐了很久,把那本合同翻来覆去看了好几遍,才落了笔。他这辈子,还没签过这么大的字。笔落在纸上的时候,手有点抖,但心里是稳的。
林浩给林晨发了微信——叔,我在深圳买房了。
林晨看到消息,愣了一下。林浩在深圳买房了——这意味着,他打算在深圳扎根了。那个当年在电子厂八人间下铺的孩子,要在这个城市有自己的家了。
恭喜你。哪个小区?
龙岗,离店里不远。不大,两居室。够住了。
好。以后就是深圳人了。
叔,谢谢你。没有你,我连深圳都来不了。
不用谢我。是你自己留下的。
林晨放下手机,想了很多。房间里很安静,只有窗外城市的灯光透进来。他想:这些年,自己拼了命往前跑,图的是什么?不就是图身边这些人——能各安其位,各有所得,日子越过越有奔头吗。这几年,他见过太多人分钱分散伙的例子。钱这东西,分不好就是刀。还好,林家先立了规矩。规矩在,人就不会散。
林晨的堂哥翻新了老家的房子,林浩在深圳买了房,小宇拿到了百万分红。每个人,都在变得更好。不是因为钱——是因为。有了希望,人就愿意努力。努力了,就会变得更好。他想起刚创业那会儿,账上连一万块都凑不齐。如今光是分红,就够当年算半天的。日子是越过越好了——不是他一个人好,是大家一起好。
他在笔记本上写了一行字——分红,不是。是分希望。钱分出去了,希望留下来了。
第507章 财富的使用
分红之后,林晨开始思考一个问题——怎么用这些钱?
不是怎么花怎么用。花——消费。用——投资。林晨不想钱,他想钱。
钱这东西,他见过两种用法。有人有了钱,买豪车、买名表,图个排场;有人有了钱,投项目、办事情,图个长久。他不想当第一种。这些年,他见过太多钱来钱去一场空的事。钱放对了地方,是活的;放错了地方,就是死的。更何况,这笔钱不是他一个人挣的——堂哥、侄儿、小宇,还有那么多员工,他得花得让大家都觉得值。
分红那天晚上,他翻来覆去睡不着,索性披衣起来,在书房里列了一份单子:哪些钱留作再投入,哪些钱做保障,哪些钱拿出来帮人。写到最后,他在两个字下面,重重画了一道。
他决定——把分红的一半,投入晨光助学基金。
晨光助学基金,是他三年前成立的。首期投入了一百万,资助了二十个学生——学厨艺的、学编程的。那会儿刚过一周年,他手里其实也不宽裕,是一边盖店一边挤出来的。方老师当时劝他缓两年,他没肯。他记得自己当年想学点本事、却没钱的滋味。三年过去了,第一批资助的学生,已经有人毕业了。有人成了厨师,有人成了程序员,有人自己创业了。上个月,还有个学厨的学生给他寄了一包自己做的腊肠,附了张纸条:林总,我在老家开了个小馆子,生意不错。这腊肠是我妈做的,您尝尝。
林晨觉得——助学基金,是他做过的最有价值的投资。不是财务投资人生投资。投资一个学生的人生,如果他成功了,他会影响更多的人。一个被帮过的孩子,将来大概率会去帮别人。这笔账,他算得过来。
他给助学基金追加了五百万。
五百万——不是小数目。但林晨觉得——值。
五百万,可以资助一百个学生。一百个学生,如果每个人都能改变自己的命运——那这五百万,就花得值。
他把这个决定,跟苏婉说了。那天晚上,苏婉坐在床头叠衣服,他坐在边上,把话一股脑倒了出来。
苏婉听完之后,沉默了几秒。手上的动作慢下来。
林晨,你变了。
哪里变了?
以前,你只想着。现在,你开始想怎么用钱
因为以前没钱。现在有了。有了,就要想——怎么用。用好了,钱能帮到更多人。用不好,钱会害了人。你看那些有钱人家出的乱子,多半不是穷出来的,是钱没用好。
苏婉握住他的手。林晨,我支持你。你去做,家里有我。话说到这儿,她顿了一下,又补了一句:不过有一条,钱可以帮人,人不能惯坏。帮的是站起来的人,不是的人。林晨点头:我知道。只资助那些自己先肯努力的人。
追加五百万之后,晨光助学基金的规模,达到了六百万。林晨让方老师——教育公司的负责人——兼管助学基金的运营。他把方老师约到办公室,当面交代了一遍。
方老师,助学基金的规模,现在六百万了。我想——每年资助一百个学生。每人每年一万块。学费、生活费——都包了。
方老师说——林总,一百个学生——不是小数目。我们需要一个团队来管。
那就招一个人。专门管助学基金。
方老师招了一个人——小陈,二十六岁,之前在公益机构做了三年项目管理。小陈来了之后,把助学基金的运营体系建立起来了——申请、审核、资助、跟踪、回访。每一个环节,都有标准。申请表长什么样、审核多久一轮、资助款怎么发、毕业了怎么跟踪——都写得清清楚楚。他还给林晨立了个规矩:资助的学生,每学期得交一份成绩单,毕业了要写回访。林晨看了,觉得挺好——钱要花得明白。小陈还提出一个想法:资助名单不搞,每一笔钱花在谁身上,都在基金简报里公开。林晨听了,当即拍了板:这个好。他要的不是名声,是让每一分钱,都落得堂堂正正。
第一批资助的学生,一共有二十人。来自全国各地——有学厨艺的、有学编程的、有学设计的。每个人,都写了一封申请信我叫xx,我来自xx,我想学xx,因为xx。
林晨看了所有的申请信。每一封,都看完了。有些信,让他想起了当年的林浩——我想学厨,但我没有钱。如果有人能帮我,我一定会好好学。字迹歪歪扭扭,写得很用力,信纸上还有一点被水渍洇开的痕迹。他看得很慢,看完一封,在心里叹一口气。这些孩子,跟当年的林浩、跟他自己,没什么两样——都只是缺一个机会。有几封信,他看完合上,又打开再看一遍。方老师在旁边递过来一沓资料:林总,这是审核要用的。他接过来,说:慢慢审,别急。每一个,都得对得起人家写的那封信。
他让方老师——所有符合条件的学生,都资助。不要因为钱不够,就不资助。钱不够,我再加。
方老师说——林总,你这样做——助学基金,会越做越大。
越大越好。越大,能帮的人越多。
他把这话说完,又补了一句:方老师,以后每年,咱们都从利润里拿出固定的钱放进去。不图名声,图个长久。
方老师走了以后,办公室安静下来。他靠在椅背上,觉得这一天没白过。钱这东西,花在自己身上,是享受;花在别人身上,是分量。
林晨在笔记本上写了一行字——财富,不是。是。用得好了,财富才有价值。用得不好,财富就是一堆数字。
第508章 助学基金扩大
追加的资金刚到账的那天下午,林晨坐在办公室里,把窗子推开了一条缝。
六月的风带着楼下梧桐叶的潮气涌进来,办公室里的空气好像一下子活了过来。桌角放着一叠打印好的材料,是方老师早上送来的——第一批受助学生的季度反馈。他本来只是随手翻翻,翻到第三页的时候,手停住了。
那是一封手写的申请信,被夹在打印材料里,字迹工整,一笔一划,写得很用力。
信是一个叫的年轻人写来的。张明,二十三岁,来自湖南农村。父母都是农民,家里穷,供不起他上大学。高中毕业之后,他一个人到深圳,在一家电子厂打工。一个月四千块,住宿舍,吃食堂,每个月雷打不动地攒下一千五,寄回老家。
信写得很长,也很实在,没有一句漂亮话。
林总,我想学编程。我从小就喜欢电脑,但家里穷,买不起电脑。高中毕业之后,我来了深圳打工。攒了一年钱,买了一台二手电脑,八百块,是厂里同事换下来的。我白天上班,晚上回到宿舍就学。自学了python,能做简单的爬虫和数据分析脚本了。我想报一个编程培训班,系统地学一下。但培训班要两万块,我拿不出来。如果晨光助学基金能资助我,我一定会好好学,学完之后,回报社会。
林晨把信看完,又从头看了一遍。他在张明身上,看到了太多人的影子——当年的林浩,也是一个穷小子,从流水线上下来,一步步走出来的。他知道一个人在山脚下仰望山顶的时候,最缺的是什么。不是钱,是一个台阶。
他给方老师打了个电话:方老师,这封信我看了。你帮我联系一下张明,亲自跟他聊聊。
方老师第二天就加了张明的微信,两个人聊了一个小时。方老师后来说,张明比他想象中踏实,python基础很扎实,写的爬虫虽然简单,但思路清晰,没有自学成才的人常见的野路子毛病。如果经过系统培训,应该能找到一份初级程序员的工作。
林晨又让方老师核实了一下张明的情况——家庭住址、学历、工作经历,都对得上。他特意叮嘱:该查的查,该问的问。钱要给得明白,也得给得放心。方老师依言查了,张明的申请材料里每一项都是实的,连那台八百块的二手电脑,他都拍了照片发过来。林晨看了照片,笑了。那是一台很旧的笔记本,屏幕边上贴着胶带,键盘磨得发亮。可张明就靠着它,写出了第一段能跑起来的代码。
方老师决定——资助他。两万块学费,外加每个月两千块的生活费。资助周期——六个月。
林总,我跟他约好了,下周他就去办入学手续。方老师在电话里说。
好。你告诉他,钱的事不用操心。学完了,好好工作。
张明收到资助的第一时间,给林晨写了一封感谢信。信很短,就两行:
林总,谢谢你的资助。我一定会好好学习,不辜负你的期望。
林晨回了一句——不用谢我。是你自己努力的。我只是给了你一个机会。
六个月的时间,说长不长,说短不短。这半年里,小陈——那个二十六岁、之前在公益机构做项目管理的小伙子——一直在跟进张明的情况。他每个月都会给张明打个电话,问问他培训学得怎么样,钱够不够用,需不需要帮助。有一次,张明在电话里说,培训班的项目实战很难,他有点跟不上,晚上熬到一两点。小陈就把林晨的话转给他:林总说了,慢一点不怕,怕的是停下来。
六个月之后,张明培训结束了。他找到了一份工作——在深圳一家创业公司做初级程序员。月薪八千。虽然不高,但比他之前在工厂打工的工资高了一倍。
张明给林晨发了一条微信:林总,我找到工作了。月薪八千。谢谢你。
林晨看到消息,笑了一下。他没回之类的话,只回了一句:好好干。第一年,先把技术底子打牢。
他把张明的消息,转给了方老师。方老师回了三个字:好消息。小陈在群里补了一句:我这一路跟下来,这小子是真能熬。培训那阵子宿舍没空调,三伏天他裹着湿毛巾敲代码,敲到凌晨三点。林晨看着这些消息,没回。他心里想的是——这笔钱,花得值。
八千块,不多。但张明的人生,从此不一样了。从工厂到办公室,从体力劳动到脑力劳动——这种改变,不是钱能衡量的。
这件事,让林晨下定了决心。
晨光助学基金,从第一批的二十个学生,扩大到了第二批的一百个学生。资助金额,从一百万,扩大到了一千万。林晨决定——每年从集团利润中,拿出百分之五,注入助学基金。
他把这个决定告诉苏婉的时候,苏婉正在厨房里煮汤。听完,她把火关小了一点,回过头看了他一眼。
每年百分之五?
对。不多,但每年都有。
苏婉想了想,点了点头。挺好的。每年都有,细水长流。十年、二十年下来,这个盘子就大了,能帮的人,也会越来越多。
那天晚上,林晨站在阳台上。深圳的夜,万家灯火。他不知道哪一盏灯下,正坐着一个像张明一样的年轻人,正等着一个机会。他看着那片灯火,忽然觉得,自己年轻时候最盼的,就是有人能给他递一个台阶。可惜没有。现在,他有机会给别人递一个台阶了。
回到书房,他在笔记本上写了一行字——助学基金,不是。是。投资一个人的未来,回报是——他改变了,他的家人也改变了。他的家人改变了,更多的人也改变了。
第509章 受助者回访
助学基金运行了一年之后,林晨做了一次回访。
不是让员工去回访。是他自己去。苏婉劝过他,说这种事情交给团队做就行,何必亲自跑。林晨说:我是掏钱的人。掏钱的人,总该亲眼看看,钱花到哪里去了。
他选了三个人。不选成绩最好的,选三个最有代表性的——从工厂到程序员的张明,从山区到米其林餐厅的李丽,从打工到设计师的王强。三个人,三条不一样的路。
第一站,张明。
张明现在在一家创业公司做程序员,月薪已经涨到了一万二。他租了一个小单间,不再住宿舍了。单间不大,一张床,一张书桌,书桌上放着一台电脑、两个屏幕。桌角摆着一本《python编程从入门到实践》,书页被翻得卷了边。
林总,我现在每天写代码,很开心。张明给他倒了杯水,以前在工厂,每天重复同样的动作,脑子不用动。现在每天都要学新东西,脑子停不下来。
那你觉得——你以后会做什么?
张明想了想,说得很认真:我想做AI。我现在的公司,在做AI相关的产品。我在自学深度学习,想以后做AI工程师。
林晨看着他那双发亮的眼睛,没再多说,只拍了拍他的肩膀:好。好好学。
走出张明公司大楼,林晨回头看了一眼。玻璃幕墙在午后的太阳底下反着光,张明那间办公室,在十一层。从流水线到十一层,中间隔着的,不止是两年时间,还有一个肯拉他一把的人。他忽然明白,自己当年蹲在出租屋里刷招聘网站的时候,心里缺的,也是这么一个人。
第二站,李丽。
李丽是家里三个孩子里最大的那个,二十二岁,来自贵州山区。父母都是农民,家里三个孩子,她排行老大,从小就帮着家里干活。高中毕业之后,她想到深圳学厨艺,可学费是笔不小的数目。晨光助学基金资助了她两万块学费。
她没辜负这笔钱。现在,她在晨枫·悦做厨师,是林浩的徒弟之一。
林晨到晨枫·悦的时候,正是后厨最忙的时候。林浩正站在灶台前,看见林晨进来,先是一愣,随即笑开了:叔,您怎么来了?
来看看。林晨说,李丽在吗?
在。徒弟,过来!
李丽穿着厨师服,系着围裙,跑过来的时候额头上还带着汗。她看见林晨,有点局促,搓了搓手:林总……我给您做道菜吧。
她做的是清炒时蔬。很简单的一道菜,可她在灶台上站得笔直,火候拿捏得恰到好处。端上桌的时候,还细心地摆了盘。
林晨尝了一口。不错。火候刚好。
李丽笑了,笑得有点不好意思:是师父教得好。林浩师父教了我很多。
林浩在旁边接口:这丫头肯下苦功。后厨的活儿,别人干一遍,她干三遍。
那你以后想做什么?林晨问李丽。
李丽低着头想了想:我想——以后回老家,开一家餐厅。把我们贵州的菜,做成品牌。我们那边的酸汤鱼、辣子鸡,都是好东西,就是没人做出来。
好。有想法。林晨说,需要帮助,随时说。
李丽用力点了点头。她没说什么漂亮话,但林晨看得出,那句话,她记在心里了。
林浩把林晨拉到一旁,压低声音说:叔,这丫头,值得培养。她学的那些,都是自己琢磨的,肯下苦功。我打算再带她一年,让她试着独当一面。林晨拍了拍他的肩:你带出来的徒弟,我放心。
第三站,王强。
王强二十四岁,来自河南农村。大学没考上,来深圳打工。晨光助学基金资助他学了UI设计。现在,他在一家设计公司做UI设计师,月薪一万。
王强给林晨看了他的作品——几个App的界面设计。设计得不错——简洁、美观、实用。他一边翻一边讲,讲到某个按钮的配色为什么这么调的时候,眼睛是亮的。
林总,你知道吗,我以前在工厂,天天看着流水线,脑子里想的都是什么时候能下班。现在画界面,一个页面能琢磨一整天,也不觉得累。王强说着,自己先笑了,我妈说我变了个人。
是好变。林晨说。
林总,我现在每天跟设计师一起工作,学到了很多。我想——以后自己开一家设计工作室。接单,做品牌,做出名气。
好。有目标。好好干。
三个学生,三个故事。张明——从工厂到程序员。李丽——从山区到米其林餐厅。王强——从打工到设计师。每个人,都在变得更好。
回访的路上,林晨把三个人的近况一条条记在备忘录里。他不是记他们赚了多少钱,是记他们接下来想做什么——张明想做AI,李丽想回家乡开餐厅,王强想开设计工作室。他打算把这些,都当成下一步要跟进的事。
这一趟跑下来,林晨没花什么钱。三个人,一个请他喝了杯白水,一个请他尝了道菜,一个给他看了些设计稿。可他心里觉得,这一趟,比参加十场招商会都值。
林晨坐在回程的车里,看着窗外飞驰而过的街景,心里很平静。他忽然想起自己刚被裁员那会儿,蹲在出租屋里,一遍遍刷招聘网站的日子。那时候要是有人拉他一把,他大概也会像张明一样,把那份恩情记一辈子。
晚上回到家,苏婉问他回访的情况。林晨把几个孩子的近况讲给她听。讲到李丽说要回家乡开餐厅的时候,苏婉说:这孩子,心里装着根。林晨点点头。他忽然想,这大概就是做这件事的意义——不只是给他们一条路走,是让他们自己记得,根在哪,路往哪。
窗外华灯初上,他又想起李丽站在灶台前,把那盘清炒时蔬端上来的样子。那盘菜,很香。他心想,等李丽回了老家,一定要去尝尝她做的贵州菜。
回到办公室,他在笔记本上写了一行字——助学基金,不是。是给机会。机会给了,能不能抓住,看自己。抓住了,人生就变了。
第510章 传递善意
回访之后的第三天,林晨收到了一条微信——张明发来的。
那天是个普通的工作日,林晨刚开完一个会,回到办公室泡了杯茶。手机屏幕亮起来,他随手点开,看到是张明,还以为是又有什么工作上的好消息。没想到,是这个。他端着茶杯,在椅子上坐了好一会儿,把那条消息来来回回看了两遍。
林总,我有个想法。不知道能不能做。
什么想法?
我想——每个月从工资里拿出五百块,捐给晨光助学基金。不多,但我想尽一份力。你帮了我,我也想帮别人。
林晨看着那条微信,沉默了很久。
五百块,不多。但张明的工资,只有一万二。在深圳,一万二一个月,交了房租、吃了饭、买了日用品——剩不下多少。五百块,对他来说,不是小数目。
他想起张明那个小单间,那张书桌上翻卷了边的《python编程从入门到实践》。一个刚站稳脚跟的年轻人,第一个想到的,不是给自己换个好点的住处,而是怎么帮别人。
林晨自己也捐过钱,公司捐,个人也捐。可他捐的时候,没想过要让对方还。他帮人的逻辑很简单——你帮了他,他日子好过了,这世道就多一个安稳的人,多一个安稳的人,就多一分和气。可张明想的是另一层——他要把这份帮,接过去,传下去。
林晨斟酌了一下,回了一句——张明,你的心意,我领了。但你现在还在奋斗阶段,先把自己照顾好。等以后赚多了,再捐也不迟。
发出去之后,他想了想,又补了一句:你还有父母要养,日子是慢慢过起来的。别把弦绷太紧。
张明的回复隔了一会儿才来。就一句话:
林总,我已经想好了。五百块,不影响我的生活。但能帮到另一个人。就像你帮我一样。
林晨盯着这句话看了很久,没有马上回。他把手机扣在桌上,走到窗边站了一会儿。他见过太多人,得了帮助之后扭头就走,觉得是应得的。可张明不一样——他刚够到岸,就想着回头拉人。这份心思,比五百块钱贵重得多。
他重新拿起手机,没有再劝。他让方老师收了张明的捐款——每个月五百块。
他把这事跟苏婉说了。苏婉听完,轻轻叹了口气:这孩子,实诚。
是啊。林晨说,五百块,在别人眼里是小钱。在他眼里,是一份心意。
苏婉想了想,又说:林晨,你说得对。以前你总说,要给乐乐留点什么。其实给乐乐最好的教育,就是让他看着你,是怎么对待别人的。刚才乐乐还跟我说,他要攒零花钱,也学那个张明哥哥,捐一点。林晨愣了愣,随即笑了。乐乐还小,能说出这话,比他赚一千万还让他高兴。
让林晨没想到的是,张明不是唯一一个想捐款的受助者。回访之后,李丽和王强也先后联系了他——林总,我也想捐。
林晨跟他们说了同样的话——先照顾好自己。等以后赚多了,再捐。
但他们坚持要捐。李丽每个月捐三百块,王强每个月捐五百块。
李丽在微信里说:我在后厨,每个月能省下一点。三百块,够一个孩子买几本教材了。王强说:我接单多了,手头宽裕些。五百块,不算什么。
林晨没有理由再拦他们。他让方老师把三个人的捐款单独记了一本账,跟基金的账分开。这本账,他心里另有一个用处——等这批受助的孩子里,也有人想着我也要像谁一样,帮别人一把的时候,这本账就是最好的教材。
林晨还专门给三个人都回了一段话,没有用官方的客套,只说了句:等你们再站稳一点,要是还愿意,就来基金做一期分享,给新受助的孩子讲讲自己的路。三个人都答应了。林晨想,这就是最好的循环——受助的人,有一天也能成为别人的光。
那天晚上,林晨给方老师打了个电话,让她在助学基金的年度报告里,加一页——专门记录受助者回捐的情况。他说:这一页,比我们捐了多少钱都好看。方老师应下了。后来这份报告寄给每一位资助人,很多人都说,最打动他们的,就是那一页。
过了些日子,张明又给林晨发消息,说他在公司里也带了个实习生,跟当初的自己一样,想学技术没钱。他说:我把当初学的那套,教给他了。林晨看着这条消息,好一会儿没动。他把手机递给苏婉看,苏婉看完了,说了句:这孩子,把话听进去了。
三个受助者,每个月总共捐一千三百块。不多。但林晨觉得——这比他自己捐一千万,更有意义。因为——善意,在传递。
林晨放下手机,靠在椅背上。窗外的夜色很静,远处的高架桥上,车流像一条发光的河。他忽然觉得,自己这大半辈子,一路跌跌撞撞走过来,好像终于找到了一点的样子。不是赚了多少钱,是这些钱,流向了哪里。
那天晚上,林晨把三个受助者的故事,连同那本记录回捐的账,一起发到了管理群里。他平时很少在群里发这种东西,这一次,破例了。
区域经理们看了之后,都很感动。消息一条接一条地往上刷。安静了一会儿,有个区域经理接了一句:林总,我们几个也聊了。以后店里有招工的活儿,优先考虑咱们助学基金出来的孩子,能安排就安排。林晨看了,回了一个字:他没有多说。善意这种东西,你推一把,它自己就会往下走。
李店长说——林总,你的助学基金——不只是帮了别人,也帮了我们。让我们觉得——在晨枫工作,不只是赚钱,还在做有意义的事。
林晨回了一句——对。赚钱,是。做有意义的事,是。生存重要,生活更重要。
第511章 AI应用商业化
助学基金的事情告一段落之后,林晨开始推进一个新的项目——把投资系统商业化。
他的投资系统,已经运行了四年。从二十万起步,做到了两千万。年化收益率超过百分之百。这个成绩,在个人投资者里,算得上优秀了。林晨自己清楚,这里面有运气的成分,也有策略的成分。运气靠天,策略靠人。能把运气和策略拆开看的投资人不多,他算是其中一个。
林晨觉得——如果把这个系统做成一个产品,让更多的人能用——那就有意思了。
他把这个想法,跟王经理——财富管理公司的投资经理——说了。
王经理听了之后,很感兴趣。林总,你的投资系统——我研究过。策略逻辑很清晰,风控做得很好。如果做成产品,应该很有市场。
那你觉得——应该怎么做?
王经理在纸上画了两个框:两个方向。第一——做一个智能投顾App。用户注册之后,输入自己的风险偏好和投资目标,系统自动生成一个投资组合。用户不需要自己操作,系统自动调仓。第二——做一个策略平台。把我们的策略,封装成ApI,卖给机构客户——基金公司、券商、私募。
林晨想了一下。先做App。App面向普通用户,市场更大。App做起来了,再做策略平台。
好。那我开始找技术团队。
王经理花了两周时间,组建了一个技术团队——一个产品经理、两个后端工程师、一个前端工程师、一个测试工程师。五个人,在财富管理公司的办公室里,腾出来一块地方,开始开发智投宝App。
招人这件事,林晨提了一个要求——可以不都是金融背景,但一定要懂代码、肯抠细节。他说:做投资的,最怕拍脑袋。我们要做的是把不拍脑袋这件事,写成一套让机器照做的规矩。王经理照着他的思路挑人,最后来的这五个人里,有三个是程序员转过来的,对金融一窍不通,但对把逻辑讲清楚这件事,格外较真。
团队开张那天,林晨去了趟办公室,没说什么场面话,就站在白板前,把核心-卫星画了出来。他一边画一边讲,讲了一个多小时。讲完他问:听懂了吗?五个人里有四个点头,有一个说。林晨笑了:那一半,留着后面慢慢补。能把这一半吃透,就够用了。
林晨亲自担任产品顾问。他把自己四年的投资经验,总结成了智投宝的核心策略。
核心-卫星资产配置模型。核心部分——股票EtF、债券EtF、黄金EtF、现金。这是组合的压舱石,决定了长期收益的底。卫星部分——行业EtF、主题基金、量化策略。这是组合的加速器,负责在市场好的时候多赚一点。核心求稳,卫星求进,两样搭配,攻守兼备。
再平衡机制。每季度一次,自动把偏离的仓位调回来。涨多了的卖一点,跌多了的买一点。林晨跟团队解释过这个机制的逻辑:投资最难的事,不是买入,是卖出。机器没有情绪,到点了就调。人做不到——人舍不得卖涨的,也舍不得割跌的。
机制。最大回撤控制在百分之十五以内。超过百分之十五,自动减仓。这一条,是林晨压箱底的底线。他自己当年实盘的时候,也吃过不止一次回撤的亏,深知活着比赚钱重要。
三个机制,写进了智投宝的底层代码。
写进代码这件事,说起来容易,做起来全是坑。头一个月,团队天天开会吵架——回撤怎么算,是看日线还是周线?再平衡是固定季度,还是触发了条件就调?边界条件一堆,每一条都要拿数据说话。林晨让人把四年实盘的历史数据调出来,一版一版地回测。哪个参数让回撤最小、哪个参数让收益最稳,都是磨出来的。到第三个月,核心策略终于跑通了,回测结果跟实盘差不多。王经理看着那堆报告,说了句:林总,你这套东西,是真金白银喂出来的。
开发花了三个月。测试花了一个月。四个月之后,智投宝App上线了。
上线前的那个晚上,林晨在办公室里待到很晚。他不是在改代码,是把用户可能会问的问题,一个个想了一遍——老人看不懂说明书怎么办?行情大跌,用户半夜打电话怎么办?他把这些写在一张纸上,交给团队,说:产品上线了,服务才刚开始。
上线第一天——注册用户五百人。林晨不着急——新App,需要时间积累。他看过太多产品,第一天爆火,第二天熄火。反倒是慢慢长的,扎得深。
上线第一周——注册用户三千人。管理资产规模——五千万。
上线第一个月——注册用户两万人。管理资产规模——两个亿。
王经理看着后台的数据,有点激动:林总,这个速度,比我预想的快。
林晨坐在旁边,倒显得平静。快是好事。但越快,越要稳住。用户是冲着信任来的。信任这个东西,攒起来慢,砸起来快。
那阵子,林晨跟苏婉说起这个项目,苏婉问他怎么突然对金融科技上了心。林晨说:咱们那套投资系统,跑了四年,验证了四年。一个人能用,一百个人能用,一万个人呢?技术这东西,捂在自己手里,是本事;拿出去让更多人用,是功德。苏婉看着他,没再问。
林晨没急着庆祝。他让人盯了几件事——复投率多少、用户平均持仓多久、哪些用户流失了。王经理不太理解,林晨解释:注册是热闹,留存才是生意。第一天冲进来的,十有八九是看新鲜的。真正留下来、拿真金白银投票的,才是我们要服务的。
他在笔记本上写了一行字——AI应用商业化,不是卖技术卖信任。用户信任你的策略,才会把钱交给你管。信任,是金融科技的核心。
第512章 产品上线
智投宝上线一个月之后,林晨收到了很多用户反馈。
大部分是正面的——收益比我自己炒股高回撤比我自己的组合小省心,不用天天看盘。
也有少数是负面的——为什么我的收益比朋友的低?为什么调仓的时候会亏钱?为什么不能买个股?
林晨让产品经理把所有的反馈整理出来,分类、统计,然后一一回复。他特别叮嘱了一句:负面反馈,不要删。不要怕难看。用户的骂声,比用户的夸声值钱。
那几天,产品经理组了一个反馈群,林晨也进去了。群里很热闹,问题一个接一个。
那几天,产品经理把反馈按问题类型分成了十几类,光为什么打头的,就有七八种。林晨看过一遍,心里有了底——大部分问题,不是产品有毛病,是用户没弄明白规则。规则这东西,说明书上写一万字,不如一句人话讲清楚。
有人问:为什么我的收益比朋友的低?
林晨让产品经理用一段话回复——因为每个人的风险偏好不一样。你选的是保守型,朋友选的是进取型。保守型收益低,但回撤也低。进取型收益高,但回撤也高。没有好坏,只有适合不适合。选组合,跟买鞋一样,合不合脚,只有自己知道。
有人问:为什么调仓的时候会亏钱?
回复是——因为调仓是卖高买低。卖的时候,可能刚好在低点。买的时候,可能刚好在高点。短期看,是亏了。长期看,是赚了。调仓的核心,不是每次都对长期正确。就像种树,你不能因为今天叶子蔫了一点,就把它拔了。
有人问:为什么不能买个股?
回复是——因为个股风险太大。一只股票,可能一天跌百分之十。EtF分散了几十只股票,风险小得多。智投宝的目标,不是让你赚最多让你赚得稳
还有一条反馈,问得很实在:你们怎么收费?团队本来想答得含糊些,林晨让把收费规则原原本本晒出来:月费九十九,明码标价;管理费另算,按比例收,透明公开。赚了钱,我们跟着收一点;亏了钱,管理费照收,但绝不从用户的本金里多扣一分。底下有人评论:把丑话说在前头,反而是最放心的。
林晨自己还加了几条回复。他不喜欢用官方的腔调,喜欢把话说透。有一条他印象很深,是一个五十多岁的阿姨问的:我存了点养老钱,放进去会不会亏啊?
他让产品经理回复:会波动,但不会拿你的养老钱去赌。智投宝的风控,先把亏大钱这条路堵死,再谈赚钱。
还有一条反馈,被顶到了最上面:能不能随时取钱?产品经理本来想回一句,林晨拦住了,让他把话说完整:可以随时赎回,到账时间以银行为准。但赎回的时候,如果正赶上下跌行情,按当天的净值算。所以,不是不能取,是想好了再取。别一跌就慌,一慌就赎,一赎就亏,亏了再骂。这条回复发出去,底下跟了一串哈哈哈,太真实了。有个用户说:第一次见到把丑话说在前面的理财产品。
回复发出去之后,用户的满意度提升了。很多人说——原来是这样理解了继续用。那个阿姨也回了:看你们这么实在,我就放心了。
林晨把负面反馈单独存了一个文件夹,让产品经理每周复盘一次。他说:夸你的话,看看就好。骂你的话,要一条条过。十个骂你的人里头,有九个是真在用的用户,剩一个,是想用但没敢用的。
他还让产品经理做了一个常见问题页,把这几条问得最多的,一条条写成大白话挂上去。有人笑他:这些规则,写进协议里不就行了?林晨说:协议是给律师看的。这一页,是给用户看的。用户看不懂协议,看得懂人话。
隔了几天,那个阿姨又发了一条:你们那个保守型组合,我照着选了,踏实。林晨看到这条,心里挺受用。做金融,最难的是让人把养老钱、血汗钱交到你手里还不慌。做到这一点,比收益数字好看,更金贵。
林晨看着群里一条条理解了,心里挺踏实。做产品,最怕用户带着误解用下去,用着用着,误会攒成了怨气。把话说开,比什么都管用。
他在笔记本上写了一行字——产品上线,不是。是。上线之后,要听用户的声音。用户说好,继续做。用户说不好,改。改了,再做。做了,再听。循环往复,产品才能越来越好。
那阵子,办公室里贴了一张大白纸,林晨让团队把每周用户的净推荐率画成一条线。线往上走,就总结做对了什么;线往下走,就找出是哪条反馈惹了众怒。这张纸贴了三个月,成了团队早会必看的东西。
智投宝上线三个月之后,注册用户突破了十万人。管理资产规模突破了十个亿。
这个速度,连林晨自己都有点意外。他把三个月的用户数据拉出来看过——月均留存、人均持仓、复投比例,一条条都对得上。产品经理在旁边说:林总,咱们这产品,是少数活过三个月之痒林晨笑了:这才哪到哪。产品要做十年,才敢说站稳了。
他把数据给王经理看,王经理看了半天,说了句:林总,咱们这个盘子,得提前想后面的路了。
林晨明白他的意思。盘子越大,监管的眼睛就越盯得紧。
他看着后台那个一路向上的曲线,在笔记本上补了一行字:初步验证了。下一步——申请金融牌照,合规运营。
第513章 合规挑战
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第514章 获得牌照
基金销售牌照拿到之后,智投宝的发展进入了快车道。
以前——没有牌照,不敢大规模推广。怕监管机构找麻烦。现在——牌照在手,可以放心推广了。
林晨让刘洋在抖音上做了一波推广——智投宝,你的AI投资助手。持牌运营,合规可靠。
推广这事,林晨本来想过要不要找大主播带一波货。后来他放弃了。原因很简单——带货的主播,嘴上没把门,一句稳赚不赔说出来,就是给自己埋雷。他要的,是把话说清楚的广告,不是把牛吹上天的吆喝。最后定下来,还是用自己团队拍的短视频,一天一更,讲一个理财小常识。
刘洋是财富管理公司里负责市场的人,嘴巴利索,也懂年轻人。他把这条广告拍成了好几个版本——有讲的,有讲的,有讲月费99元、一顿饭钱的。推广文案打磨了好几版,林晨亲自过目,只提了一个要求:别吹牛。收益可以讲,但要把风险也讲清楚。宁可少一点,不能虚。
推广效果很好。一周之内,注册用户从十万人涨到了二十万人。管理资产规模从十亿涨到了十五亿。
后台的数据天天往上跳,刘洋在群里发了个表情包:起飞了!林晨看着那个跳动的数字,倒没有太兴奋。
刘洋第二天找到林晨,问要不要趁热打铁,再上一波广告。林晨想了想,摇了摇头:不上了。先让这批用户跑一阵。二十万人,够我们看清了——谁在真用,谁在观望,哪个功能被点得最多,哪个环节流失最重。看清楚再推,比闷头砸钱强。刘洋有点不甘心,但还是点了头。后来他才知道,林晨这套慢半拍的打法,帮他躲过了一轮行业里的补贴混战——那阵子好几家同行烧钱换用户,钱烧光了,用户也跑了。
那天晚上,他一个人坐在书房里算了笔账。餐饮做了五年,年营收两亿。金融科技做了半年,管理资产规模十五亿。虽然管理费只有百分之一左右——一年大概一千五百万——但增长速度,比餐饮快得多。
可他心里也清楚,盘子越大,责任越大。金融科技的风险,比餐饮大得多。餐饮——亏了,最多亏一家店。金融科技——亏了,可能亏掉用户的全部资产。所以——风控,是金融科技的生命线。
他把这个道理,讲给刘洋听:你发的那条广告里说AI投资助手。助手两个字,说小了。用户点进去,是把自己的钱交到我们手里。这份托付,比广告词沉得多。刘洋听完,把广告里一句让钱自己生钱的slogan划掉了,换成了一句更老实的:每一分钱,都值得被认真对待。
这句slogan后来一直用着。有人觉得它不够响亮,林晨却说,金融这行,最怕的就是。越响亮,越容易让用户产生不切实际的期待。期待落空,信任就塌了。
林晨在智投宝的内部会议上,反复强调一件事——风控第一,收益第二。
那天开会,他把这句话讲了整整半个小时。他从自己当年实盘的经历讲起,讲到某次回撤时的难受,讲到为什么后来把最大回撤百分之十五写死进代码:
智投宝的目标,不是让用户赚最多让用户赚得稳。收益高了,用户开心。收益低了,用户不开心。但——如果用户亏了钱,用户就不只是不开心了。用户会投诉、会维权、会报警。所以——风控,比收益更重要。
说完这些,他扫了一圈会议室。有人点头,有人低头记笔记。我知道,风控第一这四个字,听着像口号。他顿了顿,但口号喊一百遍是口号,做成规则、写进代码,就是护城河。智投宝能不能活过下一轮熊市,不看它牛市里赚了多少,看它熊市里亏了多少。
团队理解了林晨的理念。林晨还把风控第一写进了团队的KpI。收益好,不单独发奖;风控零失误,反而有专项奖励。有人不理解,林晨说:赚快钱的人,一辈子都在追风口。我们赚慢钱,赚的是不踩雷的钱。雷踩多了,人就没了,还谈什么收益。
智投宝的策略,一直以着称。最大回撤控制在百分之十五以内。年化收益率在百分之十五到百分之二十之间。虽然不算最高,但胜在。
这种风格,起初不被一些人理解。市面上那些一上来就喊的产品,看起来比智投宝诱人多了。可时间一长,差别就出来了。很多用户用了半年之后,慢慢回过味来——智投宝的收益,虽然不算最高,但回撤确实小。跌的时候,比别人跌得少。涨的时候,比别人涨得多。长期看,收益反而更高。
这些话,林晨是从客服转来的用户留言里看到的。有一条他看了好几遍,是个退休大叔写的:我那点退休金,就指着稳稳当当地生点小钱。智投宝这性子,跟我合得来。
这些用户里,有一批开始主动帮智投宝说话。有人在论坛上写长文,把智投宝的规则一条条讲给外人听。刘洋看了,激动地跑来报告:林总,咱们有自来水了!林晨说:自来水不是买来的,是攒下来的。用户替你说话,比十个广告都值钱。
数据在涨,林晨反倒给团队下了一个的通知——推广先缓缓,把老用户的体验打磨好。刘洋有点急:正涨着呢!林晨说:涨,有的是涨的日子。先问问自己,用户留下来,是冲着广告来的,还是冲着产品来的。冲着广告来的,广告停了人就走了;冲着产品来的,你撵都撵不走。
那天晚上,林晨坐在书桌前,把本子摊开,先看了一眼窗外。快车道是上了,可方向盘,得握稳了。
他在笔记本上写了一行字——金融科技,不是赚快钱赚慢钱。慢一点,但稳一点。稳了,才能长久。
第515章 智投宝的生态闭环
本章节内容正在手打中,当您看到这段文字,请您稍后刷新页面看是否已经更新,如果长久未更新,请通过下面反馈联系我们!
特殊时刻,请大家多多收藏支持:(www.ixs7.com)AI时代:码农的涅盘重生 小说旗
如有问题请点击此处反馈给我们
第516章 技术团队
生态闭环建好之后,林晨发现——技术团队不够用了。
那天晚上九点多,他推开技术部的门,看见灯还亮着。五个人挤在两张工位上,屏幕上的代码像瀑布一样往下滚。产品经理正在跟后端对需求,两个后端在改接口,前端在调页面,测试趴在桌上,面前摆着一杯凉透的咖啡。
林总,你又加班?产品经理抬起头,眼睛红红的。
你们比我还晚。林晨扫了一眼墙上贴的排期表,上面密密麻麻写满了字,智投宝这周的迭代,排上了吗?
排上了。但积分通兑那边还欠着两个接口,餐饮的扫码点餐也要升级……林总,说句实话,我们五个人,干二十个人的活。
林晨没接话。他站在门口,看着这间挤挤挨挨的小办公室,心里翻起了念头。智投宝要持续迭代,积分通兑系统要维护,餐饮的数字化系统要升级——三个业务,都要技术支持。可团队只有五个人——一个产品经理、两个后端、一个前端、一个测试。根本忙不过来。
前一天晚上,积分通兑就出了个不大不小的岔子——餐饮会员在三个板块之间倒积分,账对不上。几个人改到凌晨两点,才查出来是一处字段映射的锅。林晨站在他们身后,看着后端小伙子揉着眼睛重新部署,心里那股劲就上来了:再不扩人,这个摊子早晚要垮。
他回家跟苏婉说这件事。苏婉正在给乐乐辅导作业,头也不抬:你自己就是搞技术的,你看着办。
我这两天一直在想——是外包,还是自建。
外包省钱。
省小钱。林晨摇摇头,积分通兑、智投宝,这是我们的核心。核心能力攥在别人手里,我不放心。外包的团队今天给你干,明天给别人干。技术骨干,还得是自己的。
苏婉抬起头,看了他一眼:你心里不是已经有答案了吗?
林晨笑了。他这个人,但凡下了决心,就一条道走到黑。他决定——扩大技术团队。
第二天,他在招聘网站上发了招聘信息——晨枫控股集团招聘技术人才。我们做餐饮、教育、金融科技。我们用技术改变传统行业。他把薪资写得不低,还特意加了一句——参与核心产品从零到一,机会难得。
其实他本想直接去t厂挖几个老同事。但他转念一想——t厂出来的人,贵,也不一定甘心陪小公司从零折腾。还不如在市场上,找那些有本事、又愿意赌一把的人。他把这个想法在电话里跟陈博士聊了,陈博士只回了一句:找对的人,比找便宜的人,划算得多。
招聘信息发出去之后,收到了几百份简历。林晨没让hR先筛——他自己先过了一遍。他当过工程师,知道什么样的简历是。先看项目经历,再看技术栈,最后看有没有做过金融相关的系统。他筛出六十份,约了三十个人来面试。
他亲自面试了其中的二十个人。面试的时候,他不问八股,就问场景——
如果智投宝的接口突然慢了,你怎么排查?
积分通兑要做双写,你怎么保证两边账目一致?
餐饮扫码点餐高峰期几百人并发,你的方案是什么?
十个人,聊到一半就露了馅。能答上来的,只有六个人。最终,他选了五个人——一个技术总监、两个后端工程师、一个前端工程师、一个数据工程师。
那五个人,他都记得清清楚楚。两个后端的,一个做过支付系统,一个做过电商订单,都是实打实扛过流量的人。前端的那个姑娘,三年大厂经验,页面做得又快又细。数据工程师更让林晨看重——他之前在一家券商做量化,对这些词,张嘴就来。
技术总监姓周,三十五岁,之前在t厂做了八年技术管理。林晨在t厂的时候,跟他有过合作。周总监的技术很好,管理经验丰富。林晨给他开了年薪六十万的条件——比他在t厂的工资高。
谈薪资那天,周总监问他:林总,我在t厂待得好好的,你为什么觉得我会来?
因为你在t厂,是给人修房子。在我这儿,是给自己盖房子。林晨说,智投宝、积分通兑——这些都是从零开始的东西。你来了,就是合伙人,不是打工的。
周总监沉默了一会儿,伸出手:成交。
周总监加入之后,把技术团队重新组织了一下——分成三个小组。智投宝组——负责智投宝的迭代和维护。餐饮数字化组——负责餐饮系统的升级和优化。数据组——负责数据分析和算法优化。
三个小组,各司其职。技术团队从五个人,扩大到了十个人。
分完组那天,周总监拉了一张表,把三个小组的职责边界画得清清楚楚。谁负责什么系统、遇到问题找谁、跨组怎么衔接,都写在了墙上。林晨看了,心里踏实了不少——以前是五个救火队员满场跑,现在终于有人专门看管各自的一亩三分地。
团队扩大之后,技术能力明显提升了。智投宝的迭代速度,从一个月一次,加快到了一周一次。餐饮的数字化系统,从升级到了。数据分析能力,从看报表升级到了看趋势。
那天,周总监在周会上说:林总,你招的人,都是能扛事的。下个月,积分通兑的架构,我们可以再压一层。
林晨点点头,看着窗外的写字楼群,想起陈博士当年在t厂说过的一句话——技术是慢功夫,急不来;但慢功夫,最值钱。
小宇端着两杯咖啡进来,看了一眼桌上的排期表,笑了:大伯,以前找您,您不是在餐厅就是在后厨。现在好了,找您还得先看您在哪栋楼。
楼不重要。林晨接过咖啡,重要的是——这十个人,能把以前五个人不敢接的活,都接下来。
他在笔记本上写了一行字——技术团队,不是。是。好的技术团队,能帮公司省钱、赚钱、创新。省钱的——自动化、数字化。赚钱的——新产品、新服务。创新的——新思路、新方向。