首页 第11章

第11章

方案通过后的第二天,林川正式进入破晓项目的开发阶段。
早上八点五十分,他比平时提前了十分钟到公司。不是因为着急,而是因为昨晚睡得不太好,脑子里一直在过项目里的几个技术难点,翻来覆去直到凌晨一点多才睡着。醒来的时候天已经亮了,他干脆早起了半小时,洗了把脸,喝了一杯温水,然后出了门。
到公司的时候,办公区里只有三四个早到的同事。赵贺已经到了,正坐在工位上对着屏幕看什么东西。李大志还没来。苏晚晴的工位是空的——她通常九点十分左右到,手里端着一杯楼下便利店买的冰美式。
林川把包放好,打开电脑。启动的间隙里,他靠在椅背上闭了一会儿眼睛。窗外的阳光从百叶窗的缝隙里挤进来,在桌面上投下一道一道平行的光栅。空气里有一股打印机的墨粉味和隔夜咖啡残留的酸味,是每个工作日的早上都会闻到的味道。
系统在他脑子里开口了:“你昨晚心率数据不太好。睡着之后有两个小时在浅睡状态,大脑皮层活跃度偏高。”
“想技术方案想的。”
“你现在脑子里还在想?”
“还在想。有两个地方的数据模型我没完全确定,今天写代码之前要先想清楚。”
“那你打算花多长时间想清楚?”
“三十分钟到四十分钟。想清楚了再动手,比边写边想要快三倍以上。”
“你已经说过这个结论了。”
“再说一遍是为了让自己记住。有时候着急动手会忘掉这个原则。”
林川睁开眼睛,打开公司内部的代码仓库管理系统。赵贺已经把任务拆解表发了过来——一份Excel表格,里面按模块拆出了四十七个子任务,标注了优先级、预估工时、负责人和截止日期。表格的格式做得非常工整,每一列都设置好了数据验证和条件格式,看起来是赵贺花了不少心思做的。
林川花了大约五分钟把整张表格过了一遍。四十七个任务,他名下的有二十一个,分布在推荐层的核心逻辑、数据层的接口适配、以及三处跨模块的联调对接。预估总工时是七十九个小时——表格里精确到了小时,赵贺做事的风格就是这样,每一项都精确计算过。
系统在他脑子里报了一个数:“七十九个小时,按照每天八小时计算,是九点八七个工作日。加上周末,刚好两周。”
“赵贺的排期一直很准。这是他少数几个不会出错的技能之一。”
“那你打算多久干完?”
林川没有立刻回答。他打开第一个任务的文档,看了三分钟。这个任务是一个用户偏好画像的实时计算模块,数据源是用户的点击流和浏览记录,输出是用户偏好标签的实时更新。文档里写了预估工时四个小时,备注栏里赵贺还加了一句:“这个模块逻辑稍微复杂,建议留足时间。”
林川把文档里的每一条需求描述都看了一遍,然后闭上眼睛。
他不是在休息。他在脑子里面过整个实现路径——数据从哪里来、经过哪些处理步骤、每一步的数据结构是什么、边界条件怎么处理、异常场景怎么降级。整个过程像一条河流在他脑子里缓缓流过,从源头到入海口,每一段都看清楚了。
系统在他脑子里说:“你闭着眼睛的时候大脑活跃度比睁眼的时候高了百分之二十。”
“正在想事情。别打扰。”
“我没有打扰。我只是记录数据。”
“那记录完了就安静。”
系统安静了。大约过了五分钟,林川睁开眼睛。他手指放上键盘,开始敲代码。嗒嗒嗒嗒的键盘声响起来,密集而稳定,像是一台高速打印机在运作。他整个人进入了某种高度专注的状态——肩膀微微前倾、下巴微收、目光锁定屏幕、呼吸变浅变快。
第一个任务,预估工时四个小时,他用了四十七分钟写完。最后一行代码敲完之后,他按了保存,然后打开自动化测试脚本跑了一遍,全部通过。
系统说:“四十七分钟。预估工时的百分之二十。而且你测试也一起跑完了。”
“先写代码后补测试是浪费时间的做法。把测试用例先想好,写代码的时候顺便把测试逻辑嵌进去,写完就能跑。”
“你这个工作流的效率比你刚绑定系统的时候高了多少?”
林川想了想:“刚绑定系统的时候,写这种模块大概需要一个半小时。现在四十七分钟。时间砍了一半多。”
“是因为技能还是因为经验?”
“经验占六成,技能占四成。代码写得越多,遇到过的坑越多,下一次就不会再踩了。”
林川没有停顿,直接打开了第二个任务的文档。这次是一个用户行为数据的实时聚合接口,预估工时三个小时。他又花了三分钟看文档,然后闭上眼在脑子里过了一遍路径,睁开眼睛开始敲。
这次用了三十五分钟。测试全部通过。
第三个任务更复杂一些,是推荐引擎和用户画像之间的数据同步管道,涉及两个不同数据库之间的数据映射和格式转换。文档里预估工时六个小时,赵贺还在备注栏里加了一句话:“这个任务跨了两个数据源,需要确认字段映射关系,建议先和刘经理确认一下。”
林川看了文档之后,没有立刻开始写。他打开通讯录,找到了数据中台刘经理的钉钉,发了一条消息:“刘经理,破晓项目推荐层和数据层的同步管道,用户画像表的ID字段用的是字符串还是长整型?我方案里写的是长整型,但确认一下避免返工。”
刘经理大概过了三分钟回了一条:“长整型。我确认过。另外提醒你一下——那个表有三个版本的历史数据,字段定义有细微变化,你写的时候注意版本判断。”
“好。谢谢刘经理。”
林川关掉对话框,然后花了大约十分钟的时间在脑子里把三个版本的差异全部梳理了一遍,确认了每一种情况下的处理方式。然后他睁开眼睛,开始写。
嗒嗒嗒嗒的键盘声再次响起来。这一次的节奏比前两次稍微慢一些——因为逻辑确实更复杂,涉及的条件判断更多——但他的手指几乎没有停顿过。一行一行的代码在屏幕上生长出来,像是有什么东西在自动完成。
系统在他写了一半的时候说了一句:“你现在的心率稳定在一百零五。正常专注工作时的心率范围是七十到九十之间。”
“感觉还好。不觉得累。”
“你现在不觉得累,是因为你在高度专注的状态下肾上腺素分泌增加,暂时遮盖了疲劳感。但这个状态持续时间超过三个小时的话,你的身体会开始报警。”
“还差多久到三个小时?”
“从你写第一个任务开始算,现在是一小时五十三分钟。”
“再给我一小时。写完这个任务就停。”
系统没有再劝阻。它在内部日志里记了一笔:“宿主主动选择延长高强度工作状态。原因:任务处于关键节点,不愿意中断。备注:该行为模式在过去两个月内出现频率上升百分之四十。”
一小时零十分钟后,第三个任务完成。林川提交代码,跑完测试,然后靠在椅背上,把双手从键盘上抬起来。他发现自己的指尖有些发麻,像是血液循环加速过度的感觉。他活动了一下手指,发麻感慢慢消退。
他看了一眼时间——十一点五十二分。从早上九点十分开始到现在,将近三个小时。他完成了三个任务,预估总工时十三个小时,实际用时不到三小时。
“这进度正常吗?”他在心里问。
“不正常。你今天的产出是正常人的四倍以上。”
“那王胖子看到我的提交记录会怎么想?”
“他会怀疑。但他暂时没有证据。你提交的每一条记录都有完整的时间戳和审核记录,他翻不出毛病。”
“他要的不是毛病。”林川把视线从屏幕上移开,拿起桌上的杯子喝了口水,“他要的是一个‘合理的怀疑’。只要他能在别人心里种下‘林川可能有问题’的种子,他就不需要找到真正的证据。”
“那你打算怎么处理这颗种子?”
“不处理。让他发芽。”
“发芽之后呢?”
“发芽之后——他会自己长出叶子来。到时候所有人都会看见他长出来的叶子是什么形状的。”
系统沉默了几秒:“你这个逻辑,用在王胖子身上,比用在代码上还精密。”
“因为他是我这两年半里唯一认真研究过的对象。”
中午十二点,林川去食堂吃饭。他端着餐盘坐下来的时候,李大志已经坐在对面了,正对着一碗面条发愣。
“你今天上午提交了三个任务?”李大志问。
“你怎么知道的?”
“赵贺在群里发了进度统计。你的名字排在第一个,后面写着‘已完成三’。”
林川低头吃饭,没有回应。
李大志往他面前凑了凑:“我跟你说,整个组都炸了。三个任务,预估十三个小时的量,你一上午干完了——别人都在问你到底怎么做到的。”
“就正常写的。”
“正常写的?”李大志的筷子顿了一下,“你管这叫正常写的?”
“速度快一点就是正常写的。速度快太多就是奇怪的。”林川夹了一口菜,“所以我建议你不要用我的标准来评价正常。”
李大志看着他,张了张嘴,又合上。最后他说了一句:“你这个人,说话的逻辑比我写代码的逻辑还闭环。”
林川没有接话。他继续吃饭。食堂里人很多,说话声和餐具碰撞的声音混在一起,形成一片嘈杂的**音。远处的窗口有人在排队打饭,收银台前排了五六个人。一切都和平常没什么两样,除了李大志看他的眼神——那眼神里多了点东西,像是“我认识你两年多了,今天才第一次觉得我可能不认识你”。
吃完饭回到工位,林川打开手机看了一眼。赵贺在群里发的进度统计下面,已经有了十几条回复。有人发了“牛”,有人发了“膜拜”,有人发了“求带”。还有一条来自赵贺本人的补充消息:“林川的代码我抽了几段看了,质量没问题。大家向他学习。”
林川把手机放下,没有回复。他知道这种时候说任何话都不如不说话——回复“谢谢”显得客气过度,回复“还行”显得凡尔赛,回复“你们也可以”显得站着说话不腰疼。沉默是性价比最高的回应。
但系统说:“赵贺在帮你造势。”
“他不是在帮我造势。他是在帮他自己。一个主管的手下出了成绩,主管的面上有光。他夸我,其实是在夸自己的管理能力。”
“你对他这个人怎么看?”
“好人。但不是圣人。他有自己的算盘,只是他的算盘和王胖子不在一个方向上。”
下午的工作节奏明显比上午松弛了很多。林川没有再像上午那样高速输出,而是以正常的速度完成了两个中等难度的任务。但即便如此,他的累计进度依然远远领先于排期——一天之内完成了五个任务,占了全部二十一个任务的将近四分之一。按照赵贺的排期表,这些任务本来应该分布在四到五天里。
下午四点半,林川把第五个任务提交之后,活动了一下肩膀。颈椎发出了一声轻微的咔响,他转了转脖子,听到骨节之间的摩擦声。
系统说:“你的肩颈肌肉紧张度比上午高了百分之三十。建议做一下拉伸。”
“晚上回家做。”
“你每次都说晚上回家做,然后每次都忘记。”
“……这次记得。”
“你上次也是这么说的。”
林川没有继续跟系统争辩。他站起来,去茶水间接了杯水,顺便活动了一下脖子。茶水间的窗户开着一条缝,傍晚的风从外面吹进来,带着一丝马路上的汽车尾气和路边梧桐树的味道。他在窗前站了大约一分钟,看着楼下街道上的车流和人流。
系统说:“你现在在摸鱼。”
“我在休息。”
“休息也是摸鱼的一种形式。而且是最有效的那种——不消耗额外能量,不占用注意力资源。”
“你真是随时都能找到理由来判定摸鱼。”
“因为系统设定的核心规则就是‘任何不以完成工作任务为目的的活动都属于摸鱼’。你这个行为精准符合定义。”
“……行吧。那你报数。”
“摸鱼时间一分钟,修为+1。”
林川笑了一下,转身走回了工位。
五点四十五分的时候,他收到了一条消息。消息来自苏晚晴,内容是:“你今天干完了五个任务?”
“干完了。”
“你在开玩笑?”
“我在工作。”
“那你的意思是——别人干四五天的活你一天干完?”
林川看着屏幕上这行字,想了想,打了一行字:“可能因为上午状态比较好。”
苏晚晴隔了大概十秒才回:“状态好能好到这种程度?”
林川没有立刻回复。他盯着屏幕上的光标,脑子里在思考该怎么回答。说实话显然不行——系统的事不能说。说假话又不合适——她迟早会发现异常。最后他打了一行模棱两可的话:“每个人都有自己的节奏。我的节奏碰巧快一些。”
苏晚晴这次隔了更久才回。大概有二十秒。然后屏幕上弹出来一行字:“你这个人身上谜团太多了。”
“不算谜团。”
“算。只不过你暂时不想让我解开。”
林川的手指停在屏幕上。她这句话用了一个非常精准的措辞——“暂时不想让我解开”。她没有说“不想让人解开”,她说的是“不想让我解开”。这个措辞里包含了一层很微妙的意思:她承认她不是一个旁观者,她是一个想要解开谜团的人。
他回了一个字:“对。”
苏晚晴回了一个“哈”。然后跟了一条:“那下次我想解的时候,你让我解多少?”
林川看着这条消息,沉默了几秒。系统在他脑子里说:“她这个问题的措辞——‘你让我解多少’——她把解谜的**交给了你。她在告诉你‘我会尊重你的边界’。”
“我听到了。”
“你打算怎么回?”
林川想了想,打了一行字:“看情况。看你要解的是哪个谜。”
苏晚晴回了一个“行”。然后隔了两秒,又跟了一条:“那我现在先解一个最小的——你今天中午吃的是什么?”
林川看着屏幕愣了一下。他没想到她会问这个问题——不是在追问系统的事、不是在追问效率的事、不是在追问任何与工作相关的谜团。她问的是“你今天中午吃的是什么”。一个最小的、最生活化的、最不重要的谜。
他打字回了一句:“食堂。青椒肉丝盖饭。”
“食堂的菜咸吗?”
“咸。但今天还行,少放了两勺盐。”
“那下次我中午有空的话,一起出去吃。食堂的菜吃久了会腻。”
林川看着屏幕,手指停了一下。她这句话的措辞很轻巧——“下次我中午有空的话”——像是随口提了一句。但她在几分钟前还在追问效率的问题,几分钟后忽然跳到了“一起出去吃”。这个跳跃本身意味着她在尝试把话题从工作层面拉到生活层面。
他回了一个字:“好。”
苏晚晴没有再回。林川把手机放下,看了一眼电脑右下角的时间——五点五十二分。距离下班还有八分钟。他今天的任务已经全部完成了,桌面上没有需要处理的新消息,没有需要回复的邮件,没有需要修改的代码。
他靠在椅背上,看着窗外的天色慢慢暗下来。秋天的傍晚越来越短了,六点钟的天空已经带着一层灰蓝色的薄暮。
系统说:“你今天总共干了五个任务。预估总工时二十二个小时。实际用时不到八个小时。效率压缩比是百分之***。你现在的修为余额——”它停了一下,“——八千一百四十三点。”
“比上周多了多少?”
“多了两千一百点。你今天的摸鱼时间累计两小时四十七分钟,贡献了约三百点修为。其余的是任务完成奖励。”
“效率压缩技能到今天为止使用了多少次?”
“今天没有使用。你今天是纯靠状态写完了五个任务。效率压缩技能的使用次数到目前为止是——零。”
林川沉默了一下。他一直没有用效率压缩技能,因为他在等一个更合适的时机。那个技能是他手里的一张底牌,翻出来之前不能让任何人知道。包括赵贺、包括王胖子、包括周总——也包括苏晚晴。
“留着。”他说,“以后再用。”
六点整,他关电脑、收拾东西、把椅子归位、背起包走出办公区。经过苏晚晴工位的时候,她已经不在了。桌面上收拾得很干净,只留下一只空了的咖啡杯,杯底还有一层浅浅的褐色痕迹。
他走进电梯。门合上之前,系统说了一句:“你今天的高强度工作时间是三个小时——上午九点到十二点。剩下五个小时你都在中低强度下度过。这个节奏比之前优化了很多。”
“优化这个节奏是为了什么?”
“为了把你在破晓项目的表现维持在一个‘高效率但可解释’的范围内。如果你每天都像上午那样输出,所有人都知道你用了超出常规的手段。但你只用了半天高强度、半天低强度——最后的总产出依然惊人,但整个过程看起来是可理解的。”
“你什么时候开始分析我的‘对外形象管理’策略了?”
“从你开始在意‘苏晚晴怎么看我’那一天起。”
林川没有接话。电梯到了一楼,门打开。他走出去的时候,晚风迎面扑来,带着一天中最后一点余温。他站在公司门口的台阶上,看着远处街道上渐次亮起的路灯。
他没有反驳系统的话。因为系统说的是对的——他从那个深夜看到优化名单缩略图开始,所有的努力都在朝着一个方向推进:让自己站得更稳。而那些努力里,有一部分的动机,确实和苏晚晴有关。
但他暂时不想承认这一点。
至少今天晚上不想。
他走**阶,往公交站走去。路灯把他投在地上的影子拉得很长,微微晃动。他走了几步,手机震了一下,掏出来看——苏晚晴发了一条消息:“今天下午说的那个一起吃饭的事,我是认真的。”
林川站在路灯下,看着屏幕上这行字。暖**的灯光落在手机屏幕上,让字体的边缘变得柔和了一些。
他打了一行字发过去:“我知道。”
然后他又补了一条:“明天中午?”
苏晚晴回了一个字:“好。”
林川把手机揣回兜里,继续往公交站走。秋风从侧面吹过来,带着一丝凉意。他把外套的拉链往上拉了拉,脚步比之前轻了一些。
系统在他脑子里安静了很久。久到林川上了公交、找了位置坐下、看着窗外的街景缓缓向后移动,它才终于开口说了一句话:“明天中午,你打算跟她去哪里吃?”
“还没想。”
“那就想到一个她会觉得好的地方。”
“为什么?”
“因为她说‘一起吃饭’的时候,她说的不是吃饭这件事本身。她是在用吃饭这件事,来给你一个靠近她的机会。”
林川没有回答。他靠在公交座椅上,看着车窗外的城市灯火一盏一盏地从他面前掠过去。公交车上人不多,后排坐着一个正在看手机的学生,前门站着一个提着购物袋的中年女人。车厢里很安静,只有引擎的嗡嗡声和广播报站的语音。
他在心里想了一件事——明天中午,他要找一家不是沙县、不是湘菜、但又不会太正式的地方。那家店的菜里不能有香菜,环境不要太嘈杂,最好有一个靠窗的位子。
他掏出手机,开始在地图上找。
系统没有再说话。但它默默记下了一行数据:“宿主主动花费休息时间规划与特定对象的共餐安排。该行为在绑定系统后首次出现。备注:建议持续追踪。”

==>戳我阅读全本<===

设置
手机
书页