作者:salaryfly来源:Salaryfly
“他们会自嘲是SQLBOY,是调参侠,其实他们做的,远比这些要多。”
01.入局
恭喜您被录用了!
对于刚刚计算机硕士毕业的赵磊来说,这是一个天大的好消息。这是一个国内知名IT公司的算法岗工程师,同时这个岗位的有+人。能进入面试的都是很优秀的人才。你知道的,很多人形容如今的校招算法岗:「灰飞烟灭」。
即便如此,还是有不计其数的应届简历选择投递到了各大IT公司的算法岗,这像是一种魔力,每一个毕业生都会被其吸引;这像是一个黑洞,竞争已经一片红海。
在杭州某中型互联网公司负责校招的HR董女士告诉Salaryfly,今年的校招算法岗早已全部招满,简历多到很多都没有来得及看,现在还没招满的是Java服务端开发和测试开发工程师。原因是Java服务端工程师名额较多,而测试开发工程师的简历数量较少。(PS.如果您对Java服务端开发或测试开发工程师有兴趣,请留言让我们知道,后续会根据反馈采访相关人员)
为什么会有这么多的同学选择算法岗?
原因是显然的,算法岗薪资会较其他开发工程师高出一大截,目前的惊人高薪offer基本上都是出自算法岗。刚刚入职的赵磊透露,入职同一部门的他的同学,月薪要比自己少25%左右。要知道,如果你能在校招时拿到一个更高的收入,这意味着整个职业生涯的起点都会领先别人,将来的薪资涨幅都是基于这个起点。不夸张的说,选择算法岗,相当于赢在了一个职场的起跑线上。
算法岗的另一个优点是其工作压力会较其他开发小很多。在如今的互联网公司,工作压力约等于给你的任务数量,由于前端或后端工程师的任务容易被量化,如前端容易根据页面数量和页面复杂情况来度量storypoint(一种在敏捷开发中评估工作量的方式,可简单理解为完成任务所需要的工作天数),后端会被根据服务/接口的数量和逻辑复杂情况来度量storypoint,由于互联网行业的长期发展,开发环境、开发工具、开源工具十分丰富,其工作量度量相对准确,导致的普通开发的工作压力相对较大。
而算法岗的区别在于其本身需要较多的创造能力,同样的算法可能需要不断的选择模型、调整优化参数和模型结构的过程,其开发工具、开发环境还不十分丰富,其度量的结果只能是最终算法效果。效果提升与否的原因有很多,很多时候并不能在一个较短的时间内有明显的算法效果提升,这导致算法的工作相对难以被评估工作量。
还有一个重要的原因是当前人工智能的浪潮还远未到达巅峰,人工智能作为国家战略,其重要性不言而喻。而算法工程师可以说是人工智能浪潮的弄潮儿,这导致了上述的高薪等原因。算法的需要一定的数学基础,其难度相对较高,对于在学校中的优秀学生来说,选择这样的岗位,也是符合自己的一个从小的「别人家的小孩」的定位。
02.成长
算法工程师其实细分了很多职位,包括搜索/推荐/广告算法、计算机视觉、语音处理和自然语言处理等主要的几类。
赵磊的工作内容主要是自然语言处理的相关内容,其团队的主要业务是一个智能问答机器人。是的,这是一个高大上的人工智能产品。赵磊觉得,在这里自己能够实现理想,「Maketheworldabetterplace」,让这个世界因为自己而变得更好。
现实却给了初出茅庐的赵磊当头一棒,你会发现,在企业中的事情,和在学校里面很不一样,是结果导向的,你想要做一件事,那么首先要考虑它能够带来什么,如果不能有什么直接的结果,或者这个结果在短时间内是看不到的,那么没有人会支持你做。这也是为什么很多从学术界跳往产业界的学术大牛会水土不服,这样的例子太多了。
赵磊的前几个月写了很多规则模版(根据问题的出现的某些关键词,直接匹配相应的答案),因为这是短期内提高问答正确率的最快最稳定的方式。
在这样做了几个月的规则之后,不知道为什么,领导似乎觉得我们应该做一些很fancy的事情了,于是赵磊很开心,可以做一些之前学习过的机器学习模型了。
训练优化模型的过程其实是比较枯燥的,特别是当你很长时间都没有效果上的提升时,一开始的新鲜感褪去之后,剩下的就是愈来愈多的枯燥。模型的效果是重度依赖于数据,在算法界有这么一句话:「数据和特征决定了效果的上限,而不同的模型和参数只是去逼近这个上限。」赵磊就是在不停的「清洗数据」-「特征处理」-「训练模型」-「调整参数」-「清洗更多数据」这样的每一天不停循环。
现实不总是奥特曼打小怪兽,点点鼠标,调调参数,效果提升很大的日子并不多见,更多的时候,是在无数的加班夜晚,日常灵魂拷问:
训练数据是不是有问题?这个场景是不是不太适合这个模型?我早就觉得这个模型结构很奇怪!相信每一个算法工程师都有这样的体验,当你的模型效果长时间得不到提升,压力自然就会出现,慢慢你会有一种无助、绝望的感觉,这时候你会想念起当初写规则、写模版的美好时光。
03.现状
目前算法工程师的要求越来越高,很多企业对算法工程师的工程能力的要求也是越来越高。5年前你可能不需要任何的工程能力,仅仅凭借算法能力就能收获offer,但是现在的情况是,如果你没有一定的工程能力,那么意味着企业还需要给你搭配相应的工程人员,这显然不是最优的。
在校招方面,学校和学历的要求越来越高,浪潮之下的相关专业的博士生已经一批批的毕业,今年以来的大环境不是很理想,导致招聘数量没有明显提升。这无疑使得竞争愈加激烈,特别是在校招行业,相关的要求也是水涨船高。
算法方面的知识更新速度更是其他岗位更难以望其项背的。
举例来说,Java程序员的主要开发框架,这么多年来都还是Spring相关的这一套,而相对更新较快的前端方面,其主要的框架也是React/Vue/Angular这几种。
而算法领域的模型更新超过你的想象,这意味着你更需要不停的学习、吸收相关的模型。举例来说,自然语言处理领域,可能5年前你只需要知道一些基础的机器学习模型和Word2vec就够了,两年前你需要再了解Attention结构,而如今如果你不知道大名鼎鼎的BERT,不了解其背后的Transformer,我甚至怀疑你是否能拿到任何一个offer.
不夸张的说,每一天都有新的模型推出,其中有一部分优秀模型可能会有SOTA(目前最优)的效果,如果这个模型引发了