他把方案放下,靠进椅背里。脑子里过了一遍艾瑞克刚才说的话,“把几个核心模块拆开”,“不同团队独立维护”,“效率能高不少”。
是,这样效率確实能高。但这样也意味著,核心代码不再由他一个人掌控。拆开之后,每个团队只知道自己负责的那一块,没人能看到全貌。
凌云把方案又拿起来,翻到模块拆分那一页,他看了很久。
然后他拿起电话,打给李默。凌云能够度假,全靠著李默在硅谷盯著了。作为星辰的代码审查官,他和凌云的权限一样,是最高的,艾瑞克都没有李默高。
“李默,你过来我办公室一趟。”
很快,李默推门进来。“凌总。”李默在对面坐下。
凌云把那沓方案推过去,“看看这个。”
李默接过来,开始翻。他看得很快,十几分钟就看完了,然后把方案放下。
“谁写的?”
“艾瑞克。”
李默沉默了几秒。
“你觉得有问题?”凌云问。
李默想了想,“这方案本身没问题。写得挺好,逻辑也对。但是……”
“但是什么?”
“但是他把內存管理那块拆得太碎了。”李默指著其中一页,“你看这儿,本来是一个模块,他拆成三个。这三个模块之间通信会很频繁,性能肯定会下降。如果不考虑性能,那这么做的好处只有一个——每个模块只知道自己那部分,代码泄露的机会会减少。”
凌云看著他,“换句话说,掌握每一个模块的人,对这一个模块有绝对的掌控,添加或者刪减代码,不易被別人发现?你查一下他过去一年的代码提交记录。”
李默站起来,“我现在就去。”
已经凌晨两点了,凌云还坐在办公室里。灯只开了书桌上那一盏,其他地方都是黑的。
李默推门进来。他手里拿著一沓列印纸,脸色不太好。
“查到什么了吗?”
李默走过来,把那沓纸放在桌上,“我把他过去一年的提交记录全过了一遍。”李默的声音有点哑,可能是熬夜熬的,“三个月前开始有了异常。”
凌云拿起那沓纸,最上面是一份代码片段,两边列印在一起,左边是旧的,右边是新的。
“你看这个。”李默指著右边那一段,“这是上个月他提交的,內存管理模块的优化代码。你再看左边,这是他去年写的同一块。”
凌云仔细看,左边的代码注释很简单,“分配內存”,“释放內存”,“返回指针”。右边的代码注释更详细,但风格不一样。左边的注释是“//allocate”,右边的注释是“/* allocate memory block */”。
“你发现没?”李默说,“他以前的注释都是简写,怎么简单怎么来。但最近这几个月的,变得特別规范,跟写教科书似的。”
凌云翻到下一页,又是一个模块,网络协议栈的部分。左边注释是“// send data”,右边注释是“/* send data via tcp socket */”。
再翻一页,文件系统,左边“//read file”,右边“/* read file in read mode*/”。
“风格全变了。”李默说,“而且不是慢慢变的,是一下子变的。三个月前,突然就变成这样了。”
凌云翻到最后一页。这一页没有代码,是两段算法逻辑的对比。左边是艾瑞克以前写的,右边是他最近写的。
“这个最麻烦。”李默指著右边那段,“你看这个排序算法的优化思路,跟我们以前的不一样。我一开始觉得是他自己想出来的,但后来觉得眼熟。”
“眼熟?”
“嗯。”李默从口袋里掏出一张折起来的纸,展开,放在桌上,“我查了一下,这是微软1998年申请的一个专利,跟这个算法逻辑一模一样。”
纸上列印的是美国专利局的公开文件,专利號us5432849,摘要部分用萤光笔划了出来。
凌云拿起来,对著那页代码看。专利上写的优化思路,跟艾瑞克代码里的,確实一样。不是相似,是一样,参数命名都一样。
他把专利放下,把代码放下。李默站在旁边,也没动。
过了很久,凌云开口,“除了你,还有谁知道?”
“没別人了,我自己登陆代码库,查询的艾瑞克的提交记录。”
“这事烂肚子里,现在还不能让別人知道。”
李默看著他,“凌总……”
“我知道,我先考虑一下后续怎么办。”
李默没再说话。他站了几秒,转身走了。门关上的声音很轻。
凌云一个人坐在那里,他拿起那份方案,又放下。拿起那些代码,又放下。拿起那张专利,看了很久。
然后他把所有东西叠在一起,塞进抽屉最下面,锁上。
他站起来,走到窗边。看著远处高速公路上的车灯,红的黄的,流过来流过去。
他想起1997年3月,第一次见艾瑞克那天。艾瑞克穿著那件洗得发白的格子衬衫,头髮有点乱,眼镜片反著光。他说,“凌,我那公司三个月没发工资了。”
他想起1998年2月,凌晨两点,两个人改代码改到崩溃,靠在椅子上盯著天花板。艾瑞克突然坐起来说,“我知道了。”然后敲了一通代码,回车,屏幕上跳出绿色的“success”。
他想起1999年5月,上市前夜,所有人加班。第二天他才知道,那天是艾瑞克女儿生日,他压根没回家。
凌云站在窗边,看著天边慢慢亮起来。他深深吸了一口烟,把菸头摁死在菸灰缸里。
虽然不愿意相信,但是证据越来越多,凌云还是决定採取措施,虽然有备胎计划,但那是防守的手段,来而不去非礼也,凌云也准备採取些手段,不能让他们这么肆无忌惮的算计自己。
凌云开始准备一份邮件,安排艾瑞克去上海星辰研究院,指导研究院组织建设。
是,这样效率確实能高。但这样也意味著,核心代码不再由他一个人掌控。拆开之后,每个团队只知道自己负责的那一块,没人能看到全貌。
凌云把方案又拿起来,翻到模块拆分那一页,他看了很久。
然后他拿起电话,打给李默。凌云能够度假,全靠著李默在硅谷盯著了。作为星辰的代码审查官,他和凌云的权限一样,是最高的,艾瑞克都没有李默高。
“李默,你过来我办公室一趟。”
很快,李默推门进来。“凌总。”李默在对面坐下。
凌云把那沓方案推过去,“看看这个。”
李默接过来,开始翻。他看得很快,十几分钟就看完了,然后把方案放下。
“谁写的?”
“艾瑞克。”
李默沉默了几秒。
“你觉得有问题?”凌云问。
李默想了想,“这方案本身没问题。写得挺好,逻辑也对。但是……”
“但是什么?”
“但是他把內存管理那块拆得太碎了。”李默指著其中一页,“你看这儿,本来是一个模块,他拆成三个。这三个模块之间通信会很频繁,性能肯定会下降。如果不考虑性能,那这么做的好处只有一个——每个模块只知道自己那部分,代码泄露的机会会减少。”
凌云看著他,“换句话说,掌握每一个模块的人,对这一个模块有绝对的掌控,添加或者刪减代码,不易被別人发现?你查一下他过去一年的代码提交记录。”
李默站起来,“我现在就去。”
已经凌晨两点了,凌云还坐在办公室里。灯只开了书桌上那一盏,其他地方都是黑的。
李默推门进来。他手里拿著一沓列印纸,脸色不太好。
“查到什么了吗?”
李默走过来,把那沓纸放在桌上,“我把他过去一年的提交记录全过了一遍。”李默的声音有点哑,可能是熬夜熬的,“三个月前开始有了异常。”
凌云拿起那沓纸,最上面是一份代码片段,两边列印在一起,左边是旧的,右边是新的。
“你看这个。”李默指著右边那一段,“这是上个月他提交的,內存管理模块的优化代码。你再看左边,这是他去年写的同一块。”
凌云仔细看,左边的代码注释很简单,“分配內存”,“释放內存”,“返回指针”。右边的代码注释更详细,但风格不一样。左边的注释是“//allocate”,右边的注释是“/* allocate memory block */”。
“你发现没?”李默说,“他以前的注释都是简写,怎么简单怎么来。但最近这几个月的,变得特別规范,跟写教科书似的。”
凌云翻到下一页,又是一个模块,网络协议栈的部分。左边注释是“// send data”,右边注释是“/* send data via tcp socket */”。
再翻一页,文件系统,左边“//read file”,右边“/* read file in read mode*/”。
“风格全变了。”李默说,“而且不是慢慢变的,是一下子变的。三个月前,突然就变成这样了。”
凌云翻到最后一页。这一页没有代码,是两段算法逻辑的对比。左边是艾瑞克以前写的,右边是他最近写的。
“这个最麻烦。”李默指著右边那段,“你看这个排序算法的优化思路,跟我们以前的不一样。我一开始觉得是他自己想出来的,但后来觉得眼熟。”
“眼熟?”
“嗯。”李默从口袋里掏出一张折起来的纸,展开,放在桌上,“我查了一下,这是微软1998年申请的一个专利,跟这个算法逻辑一模一样。”
纸上列印的是美国专利局的公开文件,专利號us5432849,摘要部分用萤光笔划了出来。
凌云拿起来,对著那页代码看。专利上写的优化思路,跟艾瑞克代码里的,確实一样。不是相似,是一样,参数命名都一样。
他把专利放下,把代码放下。李默站在旁边,也没动。
过了很久,凌云开口,“除了你,还有谁知道?”
“没別人了,我自己登陆代码库,查询的艾瑞克的提交记录。”
“这事烂肚子里,现在还不能让別人知道。”
李默看著他,“凌总……”
“我知道,我先考虑一下后续怎么办。”
李默没再说话。他站了几秒,转身走了。门关上的声音很轻。
凌云一个人坐在那里,他拿起那份方案,又放下。拿起那些代码,又放下。拿起那张专利,看了很久。
然后他把所有东西叠在一起,塞进抽屉最下面,锁上。
他站起来,走到窗边。看著远处高速公路上的车灯,红的黄的,流过来流过去。
他想起1997年3月,第一次见艾瑞克那天。艾瑞克穿著那件洗得发白的格子衬衫,头髮有点乱,眼镜片反著光。他说,“凌,我那公司三个月没发工资了。”
他想起1998年2月,凌晨两点,两个人改代码改到崩溃,靠在椅子上盯著天花板。艾瑞克突然坐起来说,“我知道了。”然后敲了一通代码,回车,屏幕上跳出绿色的“success”。
他想起1999年5月,上市前夜,所有人加班。第二天他才知道,那天是艾瑞克女儿生日,他压根没回家。
凌云站在窗边,看著天边慢慢亮起来。他深深吸了一口烟,把菸头摁死在菸灰缸里。
虽然不愿意相信,但是证据越来越多,凌云还是决定採取措施,虽然有备胎计划,但那是防守的手段,来而不去非礼也,凌云也准备採取些手段,不能让他们这么肆无忌惮的算计自己。
凌云开始准备一份邮件,安排艾瑞克去上海星辰研究院,指导研究院组织建设。
