剛拿到數據挖掘工程師的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個月。
平常,除了“找茬”,我還要做各種測試,干各種雜活。比如說師兄改了幾行代碼,說你來測試一下效果吧。上游數據團隊改了個策略,需要下游做評估,說就你來評估吧。一言以蔽之,凡是新人能干得活都交給新人。有時,師兄還很直接地問我:“我交給你的雜活都干完了嗎?”聽了師兄的話,我的玻璃心碎了一地,暗暗吐槽,“你就不能騙騙我說,我的工作很重要嗎?”
好不容易把所有茬都找完了,我想這下該讓我弄模型了吧,就算不做模型讓我分析分析數據也是好的。結果一年的任務分配下來,居然全是性能優化,就是加快代碼運行速度,節省存儲空間。說好的數據挖掘呢?我深深覺得自己就是一個填坑打雜的,做著別人不愿意做的事情。師兄都是過來人,懂得我們新人的苦悶,吃飯的時候也常常安慰我們說,“辛苦了!” “再忍一忍哈!” “新人快來了,你們就可以把雜活交給他們了!”我突然有一種媳婦快熬成了婆的感覺。
不過話說回來,這一段時間的打雜也讓我收獲良多,至少對業務邏輯和整套代碼都非常熟悉了。有時,我們無法拒絕自己不喜歡做的事,那不如想開一點,盡量看到它給自己帶來的好處,讓自己不那么難過。