下一章 上一章 目录 设置
10、项目问题
项 ...
-
项目出问题的消息来得毫无征兆。
周六下午,林敬言正窝在沙发上看论文,手机突然炸了。先是韩科的电话,他没接到,然后是十二条微信消息,最后是一封抄送了整个技术部的邮件。
“晟启智能核心算法涉嫌侵权,合作方暂停尽调。”
林敬言坐直了身子,把论文页面关掉,点开邮件逐字逐句地看。
韩科在邮件里措辞很官方,大意是对方委托的第三方机构在审查代码时发现部分模块与某海外公司的专利高度相似,需要公司自查并提交说明。但林敬言和韩科认识了四年,他知道这封邮件底下压着什么。
焦虑,甚至可能是恐惧。
因为如果坐实,不是赔钱的问题,是整个公司会直接死掉。
他拨了韩科的电话。响了两声就接了。
“看到了?”韩科的声音比他预想的要平静。
“看到了。哪部分?”
“数据清洗的那个模块。你接手之前就有的那一块。”
林敬言想起来了。那是他入职之前,技术部一个已经离职的同事写的。当时他接手的时候就觉得代码风格有点怪,但功能没问题,他就没动。
“那个模块我重构过。”林敬言说。
“……重构了?”
“上周末做的,还没推上去。原来的逻辑我没动是因为项目进度太紧,但我自己重写了一个版本,想着等测试完再替换。”
电话那头安静了两秒。
“言哥,”韩科的声音变了,是一种劫后余生意味的颤抖,“你知道这意味着什么吗?”
林敬言淡定:“意味着我们有干净的代码可以交。”
“不是我们有,是你有。我的言哥,您什么时候养的习惯?”
其实林敬言不是养成了习惯,他只是不相信任何别人写的东西。这个习惯是什么时候养成的,他不太愿意想。
“把原模块的提交记录删了,”林敬言指挥,“我明天去公司,把重构的版本跑一遍测试,周一之前推到主分支。尽调那边能拖多久?”
“最多三天。”
“够了。”
挂了电话,他才发现林惊珩不知道什么时候站在了旁边。
“项目出问题了?”林惊珩问。
他没打算多说:“嗯。”
“我能帮上什么?”
林敬言看了他一眼。
计算机专业大三的学生,理论上能写代码,但这种事不是“写代码”能解决的。他需要一个信得过的partner一起跑测试,需要一个脑子清楚的人帮他在重构过程中做交叉验证。
“你明天有空吗?”林敬言问。
林惊珩眼睛亮了一下。“有。”
“跟我去公司。帮我跑测试。”
“好。”
第二天早上八点,两个人到了公司。
周末的写字楼很安静,中央空调开得很低,走廊里只有他们两个人的脚步声。林敬言刷了门禁,打开工位上的电脑,把重构的代码拉下来。
林惊珩坐在他旁边的空位上,安静地等着。
“你负责这部分,”林敬言在屏幕上圈了一个范围,“跑单元测试,看有没有报错。数据用例在共享盘的test文件夹里,标‘test_v2’的那个。”
“好。”
两个人不再说话,各自对着屏幕。
林敬言的手指在键盘上飞快地敲着,一行一行地检查重构后的逻辑。他写代码的习惯很干净,注释清楚,变量命名规范,像是随时准备把代码交给别人看。
而事实上,他从没给人看过。
时至上午十一点,林惊珩那边跑完了第一轮测试。
“三个报错,”他侧过身子让林敬言看屏幕,手臂松松搭着椅背,“都在数据边界处理的环节。我看了下,不是逻辑问题,是你用的库版本和测试环境不一致。”
林敬言凑过来看了一眼,皱着的眉头松开了。“对,我本地用的新版本。把这个库升级一下就行。”看完后他靠回椅背,揉了一下手腕。连续三个小时的键盘让他的手指有点僵。
“哥,你什么时候开始……习惯自己重写别人的代码?”
林敬言敲键盘的手顿了一下。
又是这个问题。韩科问过,现在林惊珩也问。
“很久以前。”他说。
“多久?”
“……你非要问?”
“我想知道。”
林敬言沉默了几秒。
林惊珩笑笑,低下头:“算了,如果你实在不想告诉我……”
林敬言摇摇头,把手从键盘上拿开,靠在椅背上,盯着天花板。“唐宁娅有一阵子找了个男朋友,搞金融的,特别有钱。他搬进来住了一段时间。那人对她很好,对我……也不差。但他有个毛病,喜欢翻我东西。日记、作业、甚至垃圾桶。也不是针对我,他就是那种人,对谁都这样。所以后来我养成一个习惯,重要的东西全都自己加密,写完的东西全删了重写。反正他看不懂代码。”
他说得很平淡,甚至让人觉得他无动于衷。
短暂的沉默间,他能感觉到视线落在自己身上,像一小片安静的月光。
“后来呢?”林惊珩问。
“后来唐宁娅跟他分了。原因是他出轨了她闺蜜。”
“……”
“所以你看,”林敬言转过来,扯了一下嘴角,“我从小就在练习擦别人的屁股。”
这句话说得太直白了。林惊珩皱了皱眉,但不是因为这句话的表述方式。“你那时候多大?”
“什么?”
“唐宁娅那个男朋友。你那时候多大?”
林敬言想了想。“十四?十五?记不太清了。”
十四岁。
一个十四岁的孩子,在自己家里,需要加密自己的所有东西,需要把它们删掉重写一遍,才能感到安全。
林惊珩的手指在膝盖上慢慢握紧了。
“好了,”林敬言坐直身子,拍了拍手,“继续干活。下午还有两轮测试。”
他重新面对屏幕,手指放上键盘。心里为一时冲动而交代事实而略微后悔。
但林惊珩的声音从旁边传来。“哥,以后不用了。以后你不用重写了,你写的东西,都不用删。”
林敬言盯着屏幕,没有转头。他的手指在键盘上停了两秒,然后继续敲起来。
“知道了。”他说。
非常冷静,挑不出差错,但敲出来的那行代码打错了三个字母。
下午的测试进行得很顺利。
林惊珩的技术水平出乎林敬言的意料——不是“大学生”的水平,是有实际项目经验的人才会有的那种直觉。他能很快定位错误,能提出比林敬言预想更优的边界处理方案,甚至在测试框架的选择上给出了一个林敬言没想到的工具。
“你这些是在哪学的?”林敬言看着林惊珩跑完最后一轮测试,忍不住问。
“自己折腾的。”林惊珩伸展了一下指关节说,“实验室的项目也用了一些。”
“你们实验室做什么方向?”
“分布式存储。”
林敬言挑了下眉。那不是个简单的方向。
“林海龙不管我学什么,学校实验室的设备倒也没拦过。可能是懒得管。”
林敬言也在那个家里活过,他知道“懒得管”三个字意味着什么。
“那你很厉害。”他说。
林惊珩转头看他,笑了一下。“哥夸我了。”
“不是夸,是陈述事实。”
“那就是夸了。”
林敬言没理他,低头检查测试报告。所有的用例都通过了,代码覆盖率达到百分之九十五以上,比原来的模块还高。
他截了个图发给韩科。
【JY】:[图片]
【JY】:周一可以推。
韩科秒回。
【韩科】:言哥你是我的神!
【韩科】:不对,你是我爹!
【JY】:滚。不要乱认亲戚。
【韩科】:对了,你弟在旁边吗?
林敬言看了一眼林惊珩,后者正在收拾东西,把键盘摆正,屏幕擦干净,动作很自然乖巧。
【JY】:在。
【韩科】:帮我跟他说声谢谢。改天请你们吃饭。
【JY】:嗯。
他锁了屏幕,站起来。
“走吧。”
“测试都过了?”林惊珩问。
“过了。”
“那接下来等周一?”
“嗯。”
两个人收拾好东西,关灯锁门。走出写字楼的时候,天已经快黑了,秋天的傍晚来得比夏天早,六点多就暗下来。远处的高楼亮起灯,像一排排发光的格子。
林敬言走在前面两步,林惊珩跟在后面。
“哥,你今天开心吗?”
林敬言想了想。把一桩可能要命的事情解决了,发现弟弟的编程水平比预期的好,在周末的公司里安安静静地干了一整天的活。
饱满,充实。
最重要的是,有林惊珩。
“……开心。”