算法工程师入职两年回看

2020/03/20

前两日回看,正式入职头条也马上两年了,前述的一些总结之外还有一些新的想法。在这里分享给大家,希望能给大家带来一些帮助。

不要给自己设限

如果要说最想给学弟学妹们说些什么的话,那就是不要给自己设限。这个真的很重要,心态改变之后行动是很自然的事情;如果心结没有打开,那学习起来强大的心理暗示反而会反噬自己,让自己越发远离自己本来可以学习到的东西。

我先举几个在我看来常见的给自己设限的例子:

  • 我是一名统计(or 其他非计算机)专业的学生,又没有系统学习过代码,可能写不了代码吧?
  • 我只在学校学过一点Python,C++也太难了,看都看不明白,是不是就做不了算法了?
  • 我只是一名算法工程师,系统优化和架构这种是架构同学应该做的事情,和算法没啥关系吧?
  • 听说摄影(or 其他之前没有接触过的东西)是那种需要强大的能力才能去玩的,我这人根本就没这天赋,还是在家呆着吧。

这些限制通常表现为,当我们面对之前没有接触过的新东西的时候,可能发自内心的想去逃避,故意给自己找了一些借口,让自己不要去做这方面的事情。年少的时候我们对新东西的接受能力是很强的,很快可以接受并学会新东西。随着年龄的增长,我们会更加相信自己的经验,对于自己之前没有接触过的东西,会心生逃避,认为那些东西可能是因为自己不该接触的东西,否则自己在更早的时候为什么没有去做呢?为了安慰自己,就会产生种种借口,最终的结果就是自己把自己框在了一个只做自己做过的事情的笼子里。

事实上,外面的世界远没有你想象的那么难。知识逻辑本身都是人创造的,那么多人都可以想明白理解的事情,怎么可能就自己无法理解呢?区别只是在于之前别人投入了更多的时间熟悉和练习而已,只要时间投入更多,一切都会迎刃而解的。

当年自己考研时,从工商管理跨考统计,有很多新的知识自己之前连听都没有听过,我是这样安慰自己的: 看我之前每次期末考试的时候,只需要一两周就可以从预习到复习了。统计专业的同学好像也差不多嘛。由此观之,我其实只要花费比如一个月的时间,应该就可以具备一个统计专业普通本科生的水平了吧,然后应该就可以上研究生了?于是我就开始像期末考试周一样,从预习到复习的准备考研。当然最终我自己的亲身体会告诉我,统计专业应该还是比工商管理的同学平时更努力一点的,否则我也不会考研那么久了,哈哈。不过总归还是学会了的。后来学代码等其他东西,我也是这么跟自己说的。

对于那些还没有怎么开始学写代码的同学,我建议你们可以适当的接触一下,可能花费一两周左右的时间,就可以写出一个工作中可能真正能帮得上忙的代码;对于那些有一点代码基础的同学,我建议你们再多学一点数据结构,很难我知道,但也没有那么的不可逾越;对于那些python已经比较熟练的同学,我建议你们敞开胸怀搞搞C++(for 头条)和Java(for 阿里),不仅仅会对你找工作有帮助,同时也会帮助你从一个新的角度理解编程这件事儿;对于那些已经熟练已经熟悉自己分内工作的同学,建议可以多了解一下上下游到底是怎么work的,如果从零到一的搭建自己所在的这个模块,能不能搞定,这样你升职or跳槽时,才可能因为了解了更多的信息而承担更多的责任。

总之,还是要多多努力,不要拘泥于自己的那一方天地。

代码能力很重要

代码能力这件事儿真的再怎么强调都不为过。对于那些将来想以代码作为自己吃饭的工具的同学来说,代码能力是绝对的重中之重。即使是你将来想调模型,怎么搞数据流,training && serving这一套下来的代码量也是绝对不小的。事实上,对于比较初级的工程师来说,代码能力甚至可以说是唯一的要求。

代码能力包括两个方面,一方面是基础的数据结构算法的能力,需要学习数据结构算法;另一方面是代码实现的能力,比如告诉你这个算法应该这么实现,是否可以没有bug的写下来。而这两者结合的最好练习就是刷代码题。事实上,面试经常考代码题也是因为此。这块其实之前已经说了很多了,这里就不再赘述了,总之就是刷就对了。

算法行业的前景

对于在学校的同学来说,对于这个问题是比较关注的。但实际上如果已经接了offer走上工作岗位之后,反而可能就没那么关注这个问题了。用老板的话说,好好干就对了。我大概说一下我目前了解到的一些信息。

目前来说,行业内商业化比较好的岗位应该还是推荐和广告。其他的比如自动驾驶和语音识别,虽然被万众瞩目了好多年,但前者始终没落地,后者虽然在智能音箱上有所试水,但总归还不是一个特别大的市场。其他的比如区块链虽然政策有导向,但目前还没看到特别好的可以变现的场景。

推荐和广告本身的技术栈是比较类似的,核心大家都是预估点击率。区别在于广告的目的是为了赚钱,而推荐的目的在于把客户留下来。相对来说,广告的难点在于约束比较多,广告主都是花了钱的,伺候不好问题比较大,所以为了给他们更好的用户体验,有更多更灵活的约束条件,在众多约束条件下,展示的结果相对来说没那么重要;推荐相对来说问题更简单一点,没有那么多的约束条件,但因为内容本身更易感知,所以就有比较玄学的画风问题,比如应该多推什么,少推什么。而这通常又和产品形态本身耦合,所以推荐除了自身指标优化外,也涉及到产品的运营决策。

从模型角度来说,纯正的预估点击率模型,这两年行业整体并没有太大的改进,没有什么特别令人兴奋的大招出现,老大难的问题依然悬而未决。目前的收益更多的来自于更多场景的接入,比如以前没有推荐或者推荐比较简单,给他搞成厉害一点的推荐。而场景本身其实并不是一个算法问题,而是一个产品决策问题。目前市面上声音比较大的APP都是一些新场景的APP,其实都是在进行探索和尝试。

当然,我们还得认识到的是,线上场景本身还是在不断丰富和发展。怎么能在更多的场景上合理快速的使用模型是下一个可能比较重要的点。但是盘子做大的速度能否赶上目前汹涌而来的”人工智能人才”诞生的速度,以及各位对自己在行业内的预期是什么样的?各位还得自己思考再做决断。

前途目前看还是光明的,道路可能已经开始曲折了。

保持清醒 && 保持努力

当你觉得一件事很简单的时候,可能大家都会这么觉得;当你觉得一件事儿很难很麻烦的时候,大家也会这么觉得。不要因为做了一道简单题就沾沾自喜,眼高手低;也不要因为一件事儿太难了就轻易放弃,大家都会觉得难,攻克了它你就能比别人更厉害一分。

在经过小学、初中、高中、大学、工作蹭层层筛选之后,你周围的人,所谓天资or聪明程度与自己真的相差无几。不要觉得别人都是很菜,自己一眼就可以看到问题的答案。唯一能做的就是比别人投入更多的时间而已。而时间确实也是大家手中唯一可以投资的东西了。

遇到难题时,死磕问题,保持努力。能够获得一个高质量的问题,其实是最好的可以提升自己的机会。而大厂相对于小公司来说,也许最大的机会就在于,可以遇到一个在小公司可能无法遇到的问题,比如头条亿级别DAU的模型,光模型本身就有十几T,怎么进行迭代和serving?在解决问题中获得的提升,是其他地方根本买不来的。

共勉。

wechat follow

Post Directory