DC娱乐网

程序猿儿子要被公司扫地出门,才发现父亲原来是代码大佬

我给隐居多年的父亲发消息——他是中国互联网最早一批传奇架构师,但名字早已被行业遗忘。“爸,我做了两年的推荐算法框架,被总

我给隐居多年的父亲发消息——他是中国互联网最早一批传奇架构师,但名字早已被行业遗忘。

“爸,我做了两年的推荐算法框架,被总监署名为‘核心创新’,明天就要在发布会上展示。我可能要卷铺盖走人了。”

父亲没有反应。

发布会当天,行业巨头云集。总监站在台上,对着PPT侃侃而谈,台下掌声如潮。直到提问环节,一个问题引发网络热议。

“请问,这个‘基于长序列行为的动态兴趣网络’的核心推导,您说是您团队独立完成的。但据我所知,这个公式的第二部分,三年前曾在一个个人技术博客上发布过。博主ID是‘LZ_1978’,后来注销了。您能解释一下,为什么核心代码里的注释,和那个博客的署名完全一致吗?”

全场哗然。

总监面如土色,发布会中断直播。

人群后方,我掏出手机。屏幕上,父亲注销多年的博客,悄然更新了一行字:

“代码可以抄袭。但解决问题的视角,是偷不走的。”

01

我两年的心血,变成了别人的东西。

公司内网刚刚更新了明天发布会的最终议程。

压轴环节的标题是:“突破性推荐算法——基于长序列行为的动态兴趣网络”。

演讲人:张维,技术总监。

下面的简介里写着:“由张维总监带领核心团队自主研发,攻克了长序列建模中的兴趣漂移难题,实现了推荐效果的显著提升……”

我把那张截图放大,看了整整五分钟。

那个算法叫什么名字——基于长序列行为的动态兴趣网络。这个名字,是我起的。

两年前我加入这家公司的时候,张维还不是总监。

那时候我们坐在同一排工位,他工位在我左边,每天中午一起下楼抽烟。

他烟瘾比我大,抽的是中南海,我抽的是黄鹤楼。

他说我代码写得漂亮,我说他PPT做得好看。互相吹捧,也互相帮衬。

有一次周末加班,只剩下我们两个人。

他忽然问我:“老陆,你说咱们干到什么时候是个头?”

我说不知道。

他笑了笑,说:“我想当总监。”

我说那你加油。

他看着我说:“你不想?”

我说:“我想写出一个让所有人都在用的算法。”

那时候我们都年轻,说的话都是真的。

后来他升了总监,搬进了独立办公室,抽烟也变成了一个人站在消防通道里抽。

偶尔在电梯里遇见,他还是笑着打招呼,但那种笑,和以前不一样了。

但算法的事,他没忘。

那套DSIN的初版代码,是我入职第三个月开始写的。用了半年时间搭出框架,又用了一年时间反复调优、迭代、验证。每一次版本更新,我都抄送邮件给他——他是技术总监,这是流程。

他每次都回两个字:“收到。”

然后就没有然后了。

直到三个月前,公司决定做一次大的产品升级,需要一套全新的推荐算法。

技术委员会开会讨论,张维站起来,说:“我这里有一套方案,已经内部验证过,效果不错。”

他展示的PPT里,有完整的架构图、公式推导、离线测试数据。

那里面每一个核心模块,都来自我这两年写的代码。

会后我找他谈。

我说:“张总,那个算法,是我做的。”

他看着我,眼神很真诚——那种让你怀疑自己是不是记错了的真诚。

“小陆,我知道你做了很多工作。但算法这东西,是在迭代中完善的。你贡献了基础版本,我带领团队做了后续的优化和落地,这是集体成果。”

“那署名呢?”我问。

他笑了,拍了拍我的肩膀:“署名的事,公司有公司的规则。你放心,到时候会体现你的贡献。”

我信了。

然后我等来了今天这份议程。

我给父亲发了一条微信。

父亲叫陆正,是中国互联网最早一批程序员。

九十年代末,他在一家当时还叫“瀛海威”的公司写代码,后来自己创业,做出过一个日活千万的产品。

再后来公司被收购,他拿着钱退隐江湖,在杭州买了一套房子,每天喝茶、看书、写点开源代码。

他的名字,行业里还有老人记得。但对现在的年轻人来说,已经和考古差不多。

这些年他很少管我的事。我毕业、找工作、跳槽来这家大厂,他从来没打过招呼。

偶尔通电话,他问的最多的是:“代码写得开心吗?”

我说开心。他就说:“那就行。”

但今天凌晨两点十七分,我不知道为什么,就是想告诉他。

“爸,我做了两年的推荐算法框架,被总监署名为‘核心创新’,明天就要在发布会上展示。我可能要卷铺盖走人了。”

等了五分钟,没有回复。

我又发了一条:“那个算法叫DSIN,你还记得吗?去年我跟你聊过。”

又等了十分钟。

屏幕终于亮了。

“记得。”

我盯着那两个字,不知道该哭还是该笑。

我爸还是那个我爸。话少,字更少。

“知道”是什么意思?觉得无所谓?我被扫地出门不重要?

我没再问。

关上手机,我打开电脑,把DSIN的代码库从头到尾看了一遍。四十七个模块,三万两千行代码。每一行都是我写的。每一行注释都是我敲的。

最后几行注释里,我写了一句:“感谢父亲,教会我写第一行代码。”

那是我六岁的时候,他用一台386电脑,教我在DOS系统里敲“Hello World”。

我合上电脑,躺回床上。

窗外的天快亮了。

02

早上八点,我醒了。

手机上多了十几条未读消息。有大刘的,有老孟的,还有几个平时不怎么联系的同事。

大刘发的是一条链接,标题是:“今日发布会前瞻:某大厂将发布重磅推荐算法”。下面配图是张维的照片,西装革履,笑得一脸自信。

大刘的留言:“老陆,你今天来公司吗?”

我没回。

老孟的留言更直接:“听说那个算法是你的?真的假的?”

我还是没回。

放下手机,我走进卫生间,看着镜子里的自己。黑眼圈很深,眼睛里全是血丝。我洗了把脸,刮了胡子,换了一身干净的衣服。

然后我坐回电脑前,打开了直播页面。

直播间还没开始,黑屏上显示着倒计时:05:23:47。

我盯着那个数字,一秒一秒地跳。

脑子里乱糟糟的。

我想起刚来这家公司那天,张维带我去工位,帮我装电脑,告诉我茶水间在哪里。

我想起我们一起熬夜上线,凌晨三点叫外卖,他抢着付钱说“下次你请”。我想起他说“老陆你代码真牛逼”的时候,那语气是真诚的。

我到底哪里看错了他?

或者说,他到底是什么时候变成这样的?

手机震了。是老周。

老周叫周建国,基础技术部的资深专家,五十多岁,头发花白,在公司属于那种“扫地僧”级别的人物。

平时我们没什么交集,只在几次技术分享会上听过他讲话。

他的微信头像是一个茶杯,朋友圈一年发不了一条。

“小陆,今天的事,我看见了。”

他的消息很简单。

我回:“周老师,您看见什么了?”

他回:“我看见那个议程。也看见你昨晚发的朋友圈。”

我愣了一下。

我昨晚发了一条朋友圈,只有一句话:“两年,三十二万行代码。”没有配图,没有解释。但懂的人自然懂。

我回:“周老师,您信我吗?”

他回:“我信你爸的儿子。”

这句话让我怔了很久。

九点,我开始洗漱。十点,我出门买早餐。十一点,我回来继续盯着倒计时。

十二点,直播间开了。

屏幕上出现了发布会现场的舞台,灯光璀璨,背景板上印着公司的Logo和发布会的主题。观众席上坐满了人,前排是各家媒体的记者,后排是受邀的合作伙伴和行业人士。

弹幕开始飘过:

“期待!”

“听说这个算法很牛”

“张维是谁啊”

“大厂出品必属精品”

我把声音调低,拿起手机。

大刘又发消息来了:“老陆你在看吗?张维在后台了,我看见他了。”

我回:“在看。”

大刘发了一张照片。

是后台的偷拍,张维正在对着镜子整理领带,旁边有人给他递水。他的脸上带着那种即将登台的兴奋和紧张,嘴唇微微动着,大概是在默念台词。

我盯着那张照片,忽然想起一个细节。

两年前,我第一次在组里做技术分享,讲的就是DSIN的雏形。

讲完之后,张维第一个鼓掌,说:“老陆,你这条路是对的,坚持下去。”

那时候他还没有独立办公室,坐我左边。

那时候的掌声,是真的。

下午两点,发布会正式开始。

03

主持人的声音从电脑里传出来:“下面有请技术总监张维,为我们揭晓新一代推荐算法的神秘面纱!”

张维走上台。

他穿了一身定制西装,皮鞋锃亮,头发打了发胶,在灯光下一丝不苟。

他走到台中央,微笑着环顾四周,那个姿势练过——我在公司的演讲培训课上看过,叫“舞台掌控”。

“各位来宾,各位线上的朋友们,大家好。”

他的声音通过话筒传出来,稳得像播音员,“今天,我很荣幸代表团队,向大家介绍一套我们自主研发的推荐算法——基于长序列行为的动态兴趣网络。”

大屏幕上亮出四个字母:DSIN。

我的心跳漏了一拍。

屏幕上开始播放PPT。

架构图、公式推导、离线测试数据……每一页我都烂熟于心。

那些公式是我熬夜推导的,那些图表是我用Python画的,那些数据是我跑了三十几轮实验才跑出来的。

张维站在台上,手指着那些图,侃侃而谈。

“这个算法的核心创新点,在于它能够捕捉用户在一个完整会话内的兴趣演化轨迹……”

他的声音在直播间里回荡,“我们团队花了两年时间,攻克了长序列建模中的兴趣漂移难题……”

弹幕疯狂滚动。

“卧槽太强了”

“这才是技术大牛”

“膜拜张总”

“这波操作稳了”

“收藏了以后学习”

看着那些弹幕,我心里翻涌着一种很奇怪的感觉。

不是愤怒——愤怒早就过去了。是荒谬。是那种“我明明在这里,但没有人看见我”的荒谬。

手机震个不停。

大刘:“老陆你看见了吗!那个公式!就是你推导的那个!”

老孟:“卧槽张维这逼真敢啊!”

还有几个不认识的头像发来好友申请,备注写着“技术群看到你的朋友圈”。

我没理。

张维讲到第三个公式的时候,提问环节开始了。

直播间里弹幕刷得更快了。主持人念了几个问题,都是常规的——“什么时候上线”“效果提升多少”“开源吗”。

张维一一作答,从容不迫。

然后,一个ID引起了我的注意。

那个ID叫“LZ_1978”。

弹幕很简短,但每一个字都像钉子钉进我的眼睛:

“请问,第二个公式里的W_s矩阵初始化方法,为什么和2019年一个个人博客上发布的代码完全一致?”

弹幕瞬间安静了。

张维脸上的笑容僵了一瞬。但那只是一瞬间,他立刻恢复了正常。

“这位朋友的问题很有意思。算法的某些基础模块,确实会借鉴业界的公开成果,这是行业惯例。我们在论文中也会标注参考文献。”

那个ID又发了一条:

“不是‘借鉴’。是完全一致。包括那个0.01的初始化参数,包括那个被注释掉的‘temp fix’。那个博客的博主,ID也是LZ_1978。巧合吗?”

直播间炸了。

弹幕疯了似的刷起来:

“什么情况?”

“抄袭?”

“求锤得锤?”

“LZ_1978是谁?”

“有大神扒一下吗?”

张维站在台上,脸上的笑容开始僵硬。他看向台下某个方向,大概是工作人员的位置,示意他们处理这个“捣乱”的弹幕。

但那个ID又发了第三条:

“博主LZ_1978,2003年注册,2019年注销。最后一条博客写的是:教完这行代码,我退休了。这条博客的阅读量是37万,评论里有很多人叫他老师。你们可以去看看。”

我盯着那个ID,手指开始发抖。

LZ_1978。

那是父亲的博客。

04

直播被紧急切断了。

屏幕上弹出一行字:“技术调整,稍后继续。”

但弹幕还在刷,截图已经满天飞。

微博上,“DSIN抄袭”的词条开始往上爬,半小时就冲进了热搜前十。

论坛上有人开了问题:“如何评价今天某大厂发布会上的DSIN算法抄袭事件?”回答数眨眼间过了百。

我的手机彻底炸了。

大刘发来一堆消息:

“卧槽老陆你看热搜了吗”“那个LZ_1978是谁啊”“有人说是隐退的大佬”“不会是你爸吧你爸不是程序员吗”。

我没回。

老孟直接打了电话过来。他的声音激动得发抖:“老陆!你看见了吗!那个LZ_1978!那是谁啊?怎么这么猛!发布会现场直接锤!”

我说:“我也不知道。”

他愣了一下:“你也不知道?”

我说:“真不知道。”

挂了电话,我打开浏览器,输入那个博客地址。

那是一个早就被遗忘的角落。博客中国的老域名,界面还是十年前的样式,广告位早就失效了,只剩一片空白。最后一篇博文停在2019年3月,标题是:《再见,朋友们》。

正文只有几句话:

“写了十六年代码,教会了很多人写第一行程序。现在退休了,去喝茶、看书、晒太阳。江湖再见。”

下面的评论有三千多条。最新的一条是三分钟前发的:

“老师,今天有人抄袭您的代码,我们帮您锤回去了!”

再往前翻,是2018年的一条博文,标题是:《DSIN:一种基于会话的兴趣网络实现》。

我点进去。

正文里,父亲用他一贯的简洁风格,介绍了这个算法的思路。

没有花哨的术语,没有复杂的推导,只有最核心的几句话。最后附了一段核心代码,注释里写着:

“初始化W_s矩阵,参数设为0.01。这个值是我试出来的,不是最优解,但最稳定。注释掉的‘temp fix’是我写的一个补丁,处理边缘情况的,不用管它。”

我盯着那段代码,看了很久很久。

然后我打开DSIN的代码库,翻到W_s矩阵初始化的那一行。

0.01。

旁边有一行注释:

“ temp fix,保留,可能有用的边缘情况处理。”

一模一样。

一字不差。

我的眼眶忽然有点酸。

原来父亲一直都在看。看我的代码,看我遇到的问题,看我可能自己都没注意到的细节。他把他试了无数次的参数留在了博客里,等着哪一天有人需要。

他不知道那个人会是我。

但他知道,总有一天,会有人需要。

05

我继续往下翻博客。

父亲的博文不多,每年也就四五篇。

但每一篇下面都有很多评论。最早的评论可以追溯到2005年,那时候互联网还在拨号上网的时代。有人问问题,父亲就回答;有人发感谢,父亲就回“不客气”。

翻着翻着,我翻到一篇2008年的博文。

标题是:《写给想学编程的年轻人》。

“很多年轻人问我,学编程难不难。我说不难,只要你能坐得住。写代码是一件很寂寞的事,你要面对的是屏幕,是逻辑,是无穷无尽的bug。没有人陪你,只有你自己。

但这也是它最美的地方。当你终于跑通一段代码,看到你想要的输出,那种快乐,是任何东西都换不来的。

我教过我儿子写代码。他六岁,敲出‘Hello World’的时候,眼睛亮了。那一刻我知道,他会喜欢这个。

所以,如果你也喜欢,就坚持下去。无论将来做什么,写代码都会是你最可靠的伙伴。”

我盯着这段话,视线模糊了。

那是2008年,我六岁。他已经想好了要教我什么。

我继续往下翻。