有趣的文章@IT·互联网程序员

数据挖掘 = 找茬 + 测试 + 性能优化 ?

2017-04-15  本文已影响194人  插着扇子的石头
理想与现实

刚拿到数据挖掘工程师的offer时,我内心特别激动,对未来工作充满了期待。哈佛大学商业综述在2012年宣布“数据科学家将是 21世纪最性感的职业”,我开始走上数据分析道路。面试官的一句“我们团队的数据挖掘工程师都是艺术家”,让我果断地拒掉其它公司的offer,义无反顾地加入这个团队。

入组快一年了,做过的最大的一个项目是“找茬”。很多人都玩过“找茬”游戏,就是给你两幅图片,你需要找出所有的不同之处。我的项目是找出两套代码的不同,然后将两套代码合并成一套代码。团队先开发出代码A,跑数据a,然后迁了个分支B,专门跑数据b。这个分支经过一年的时间,不断壮大,已经可以独当一面了。这时,为了方便代码维护,需要合并两套代码。

怎么办呢?从svn上把A代码迁到本地进行修改,我们称这份代码为C代码。师兄修改C代码,使其同时支持数据a和数据b。经过测试,发现C代码跑a数据和A代码跑a数据有差别,C代码跑b数据和B代码跑b数据也有差别。我的任务就是使得C代码跑a数据和A代码跑a数据效果一样,C代码跑b数据和B代码跑b数据效果一样,即使结果有差异,也要确保所有差别可解释,且符合预期。

然后我就开始了8个月的“找茬长征路”。第一阶段是测试b数据。将C代码和B代码跑b数据的结果进行对比,发现不同后,追查导致这些不同的原因。跑一份数据,涉及十多个阶段性任务和上百个特征。我必须跟踪调查每一个发生变化的特征,以及找出所有中间数据的差别,这特别考验一个人的耐心和细心。有时我觉得工作特没劲,太琐碎,有时又觉得挺有意思的,像在玩“找茬”和“破案”游戏。第二阶段是测试a数据,追踪C代码与A代码的不同,其方法与阶段一相同。最后,阶段一花了6个月,而阶段二只花了2个月。

平常,除了“找茬”,我还要做各种测试,干各种杂活。比如说师兄改了几行代码,说你来测试一下效果吧。上游数据团队改了个策略,需要下游做评估,说就你来评估吧。一言以蔽之,凡是新人能干得活都交给新人。有时,师兄还很直接地问我:“我交给你的杂活都干完了吗?”听了师兄的话,我的玻璃心碎了一地,暗暗吐槽,“你就不能骗骗我说,我的工作很重要吗?”

好不容易把所有茬都找完了,我想这下该让我弄模型了吧,就算不做模型让我分析分析数据也是好的。结果一年的任务分配下来,居然全是性能优化,就是加快代码运行速度,节省存储空间。说好的数据挖掘呢?我深深觉得自己就是一个填坑打杂的,做着别人不愿意做的事情。师兄都是过来人,懂得我们新人的苦闷,吃饭的时候也常常安慰我们说,“辛苦了!” “再忍一忍哈!” “新人快来了,你们就可以把杂活交给他们了!”我突然有一种媳妇快熬成了婆的感觉。

不过话说回来,这一段时间的打杂也让我收获良多,至少对业务逻辑和整套代码都非常熟悉了。有时,我们无法拒绝自己不喜欢做的事,那不如想开一点,尽量看到它给自己带来的好处,让自己不那么难过。

上一篇下一篇

猜你喜欢

热点阅读