选择大于努力:机器学习岗的就业选择分析
现在校招开始的越来越早,今年的实习生招聘还是异常火爆,简历一堆,而且是越来越没有区分度,以前面个xgboost的论文细节,就能区分很多人,现在大部分人都能讲的不错,哎,面试越来越难。
也在蘑菇街带了几年团队,有些同学成长的很快,去了更好的平台,有些同学本来被寄予厚望,却表现平平,暗叹可惜。大家来来去去,铁打的营盘流水的兵,不知不觉成了组里待时间最长的,颇有感慨,今天就和大家唠叨几句offer选择和职业发展,个人观点,纯当消遣。
从面试的情况来看,学生质量两级分化一年比一年严重。估计到时候offer又是旱的旱死,涝的涝死。回想自己刚毕业的情况,如果来面现在的蘑菇街,大概率是过不了的。除了公司在发展,用人的选择余地大了,更多的是那时候机器学习还不像现在这么火,从业者不多。大家只能看NG在斯坦福录制的课程,还没有cousera,你在简历上写个拿到cousera ng的machine learning课程,各大公司可能还会面面你,但现在就呵呵了。
对于很多同学来讲,这个时候有个终极的问题要讨论了,到底是去大公司还是小公司?
先说应届生offer选择。针对互联网公司,针对推荐、搜索、广告场景,我个人的建议是:
根据公司、部门选择的不同,会有不同的成长路径,岗位推荐程度由高到低分别是:
经历核心团队业务规模从小到大的过程,比如跟着头条、抖音成长起来的一些同学,现在的发展都不会差。但这个看命,大部分小公司会挂掉,好不容易成长到中小公司,还会遇到瓶颈,迟迟突破不了,真正到大公司的,凤毛麟角。而且还要这么多年待得住。 参与大公司主要业务瓶颈突破的过程,有点绕,而且好像离应届生比较远,理想情况这种任务都是老员工搞,但很多时候由于种种原因(大多是风险偏好),可能是一个经验丰富的老员工带着一批应届生搞,若轮到你,大赚。 经历团队、业务规模从小到中的过程,也能得到不少的锻炼。 一直在大公司做边缘业务,这个对自己的悟性和驱动力要求太高,大部分人的成长都会明显慢下来。 在没有数据和挣钱业务的小公司,自求多福
以上排序的核心逻辑是数据规模大小和是否有线上实验反馈(A/B test)。规模带来技术深度和业务背书,反馈是建立方法论的基石,没有它就很难顺利成长为合格的算法工程师。
为什么如此强调线上A/B test?
首先,很多同学从学校出来,并没有真正做过一个实际的业务提升,是非常需要从线上A/B test拿到结果,建立信心,确认机器学习真的很有用。有些同学在大公司,干了几年,一个线上收益都没有拿到,对信心的打击是很大,直接转岗了。
其次,大家都不是神,机器学习还是有非常大的不确定性,因此A/B test的准确度、有效性,以及同时能做多少实验是非常重要的。 假设一个公司一次能做100种实验,一个只能做10种,在idea的实验效率上,就存在着巨大的差距。而这里的关键,就是数据规模有没有到一定的量级,到了你的A/B test就能做的更多,且更准确,更快拿到反馈,从而修正自己的认知和方法论。
明确了标准之后,面临选择时就更好把握。接下来说下各个选择可能存在的问题。
大公司
老生常谈,分工太细了,该做的事情,大部分都做掉了,很多时候找你进来是搞维护工作的。有些同学不服气,面试也有遇到工作一两年,说自己给公司提升了多少多少,详细聊下来做的事情又很普通。那么事实就很明显了,要么他们原来不重视这块,做的水(现在越来越少了),要么你在吹水。
重要的是:大部分人的悟性不足以通过现有的系统,理解在其曾经的发展逻辑及面对问题的方案选择。 而后者,才是将来你面对新业务时候的底气,人不可能在同一个业务上做一辈子。
为什么还要去呢,有两个方面的原因。第一个是上面已经提到过的,万一赶上被拉壮丁去解决核心问题,虽然业绩风险大,但好歹有了战点,有困难,有成长。第二是,这个东西就像当年大家去美国留学,先看看先进的东西是怎么样的。比如在头条,在凤巢,你们会看到离散化模型的特征规模到了千亿,读书的时候怎么可能想到他们会这么搞。会看到原来要用ps训练模型,需要用类似淘宝iGraph的系统来处理用户侧的实时特征。A/B test是怎么做的。待上一阵子,如果没有战点,找家中小规模的公司,去那里把技术和业务结合实际,形成自己的认知和方法论,也是极好的路线。
中小公司的核心团队
在中小公司的核心团队,对比大公司,会更“累”一些,需要做的事情会更多,这里的更多指的是数据质量和系统工程上。大公司的核心业务,一般会有一个规模不小的ETL组为你清洗数据,还会有不同团队搞出来的机器学习训练平台求着你用。而在中小公司,想用个PS,去看看开源吧,还好腾讯的angel还不错。想搞个tensorflow的分布式,对方一脸怀疑,先拿效果出来看看?
因此,要靠刷这张老脸,工程的同学都是不见兔子不撒鹰的主。画风很容易就变成了,我们需要个在线预估服务,算法同学先搞个初级版本出来吧,线上拿到收益了,工程的人进来优化重构;我们需要搞用户实时特征,先搞个原始版本证明有收益,工程再进来重构。还好每次结果还不错,最近开始搞大规模LR模型,大家支持力度比以前好多了,不再要先看结果了,毕竟这次也没有办法先看结果了,不是单打独斗能搞的了。所幸,上线后收益很明显。
调侃归调侃,在资源有限的情况下,这样的方式非常合理,大公司才能养的起超前的团队,而我们要精打细算。但对个人的成长也是非常有好处,首先是魔武双修了,算法和工程都不错,*其次是逼着你想清楚到底要干嘛,对算法和业务的理解更为深刻,因为每一次决策失败,都是消耗大家对你的信任,如果次数多了,估计就混不下去了。
最后,大部分来中小公司的,都是去不了一线大公司核心组的,这个是现实。但不要妄自菲薄,人生是长跑,不必争一时瑜亮。
大公司非核心业务团队
这个就要担心了,首先,很多大公司应届生招聘时候,同学们不知道自己面的是什么部门,所以一定要问清楚。现实中很多非核心团队,本身没有什么积累,因为留不住好的人,一直被核心团队压制,资源分配的很少,还不如中小公司。这个时候去,一定要想清楚,自己是不是看好这一块。当然,凡是不能绝对,也有非核心业务发展的很快,成长为核心业务的,这个看自己的眼光和运气了。
小公司
举个常见例子,假设要做推荐,首先要有数据,这点已经可能干掉很多小公司了,没有数据玩个毛线。其次,大家做模型一定是需要做A/B test的,那么最好场景的DAU是大于百万(又干掉了很多小公司),一个是数据质量会高很多,A/B的时候波动小,另一个是不容易动不动搞个模型提升x倍(我们在小场景上会遇到),从而飘飘然,不知道自己几斤几两。最后,场景的物料规模要大,才有推荐的空间,后续模型才有持续优化的可能。举个不恰当的例子,在一个卖xx的电商平台,如果只有几十款商品,用户几下就能浏览完,还做什么推荐。
再来聊个题外话,老板较不较真
除了公司、部门之外,和个人成长最相关的因素之一就是上级了。这里给大家提供一个指标:老板的较真程度。
怎么评判呢?看在项目里,Ta是只看收益还是要求将收益讲清楚,只看高大上的模型还是要求真正解决问题。不盲从,较真的思考为什么会有提升,为什么会没有提升,去分析,去总结,对一个员工以至于团队都非常重要。
举个例子,在业界,ctr预估一直有两种思路,大规模特征 + 简单模型对比小规模特征+复杂模型。但真正对比过这两种方案的,少之又少。当年百度有个哥们去淘宝,想把百度大规模离散特征这一套应用在电商场景,最后是铩羽而归。但深入去了解当时的一些背景,发现尝试的时间很短,结果就很可疑了,这就是不够较真。
由于长期受淘宝的影响,我街的基线模型和淘宝的思路非常接近,但到瓶颈了。而且我们和另外一家巨头的模型线上pk过,效果要好于他们。为了突破瓶颈,在分析了各种模型的优缺点,选择做大规模离散模型,前前后后花了好几个月,将数据链路上的各个环节重搞了一遍,尝试了很多离散化特征,线上预估系统改造了好几版,最后上线效果明显。主要原因是该模型带来了更多的特征工程空间。这就是较真带来的收益。
除了以上因素之外,offer的选择还受到种种顾虑的影响,比如想要户口、想离男/女朋友近、不想996等,最后还是要自己分配权重去做决策。祝大家的秋招都硕果累累,收获心仪的offer。
往期精彩: