2020 年算法工程师生存现状

2020-10-24 21:35:13 +08:00
 salaryfly

恭喜您被录用了!

对于刚刚计算机硕士毕业的赵磊来说,这是一个天大的好消息。这是一个国内知名 IT 公司的算法岗工程师,同时这个岗位的有 500+人。能进入面试的都是很优秀的人才。你知道的,很多人形容如今的校招算法岗:「灰飞烟灭」。

即便如此,还是有不计其数的应届简历选择投递到了各大 IT 公司的算法岗,这像是一种魔力,每一个毕业生都会被其吸引;这像是一个黑洞,竞争已经一片红海。

在杭州某中型互联网公司负责校招的 HR 董女士告诉 Salaryfly,今年的校招算法岗早已全部招满,简历多到很多都没有来得及看,现在还没招满的是 Java 服务端开发和测试开发工程师。原因是 Java 服务端工程师名额较多,而测试开发工程师的简历数量较少。( PS. 如果您对 Java 服务端开发或测试开发工程师有兴趣,请留言让我们知道,后续会根据反馈采访相关人员)

为什么会有这么多的同学选择算法岗?

原因是显然的,算法岗薪资会较其他开发工程师高出一大截,目前的惊人高薪 offer 基本上都是出自算法岗。刚刚入职的赵磊透露,入职同一部门的他的同学,月薪要比自己少 25%左右。要知道,如果你能在校招时拿到一个更高的收入,这意味着整个职业生涯的起点都会领先别人,将来的薪资涨幅都是基于这个起点。不夸张的说,选择算法岗,相当于赢在了一个职场的起跑线上。

算法岗的另一个优点是其工作压力会较其他开发小很多。在如今的互联网公司,工作压力约等于给你的任务数量,由于前端或后端工程师的任务容易被量化,如前端容易根据页面数量和页面复杂情况来度量 story point(一种在敏捷开发中评估工作量的方式,可简单理解为完成任务所需要的工作天数),后端会被根据服务 /接口的数量和逻辑复杂情况来度量 story point,由于互联网行业的长期发展,开发环境、开发工具、开源工具十分丰富,其工作量度量相对准确,导致的普通开发的工作压力相对较大。

而算法岗的区别在于其本身需要较多的创造能力,同样的算法可能需要不断的选择模型、调整优化参数和模型结构的过程,其开发工具、开发环境还不十分丰富,其度量的结果只能是最终算法效果。效果提升与否的原因有很多,很多适合并不能在一个较短的时间内有明显的算法效果提升,这导致算法的工作相对难以被评估工作量。

还有一个重要的原因是当前人工智能的浪潮还远未到达巅峰,人工智能作为国家战略,其重要性不言而喻。而算法工程师可以说是人工智能浪潮的弄潮儿,这导致了上述的高薪等原因。算法的需要一定的数学基础,其难度相对较高,对于在学校中的优秀学生来说,选择这样的岗位,也是符合自己的一个从小的「别人家的小孩」的定位。

成长

算法工程师其实细分了很多职位,包括搜索 /推荐 /广告算法、计算机视觉、语音处理和自然语言处理等主要的几类。

赵磊的工作内容主要是自然语言处理的相关内容,其团队的主要业务是一个智能问答机器人。是的,这是一个高大上的人工智能产品。赵磊觉得,在这里自己能够实现理想,「 Make the world a better place 」,让这个世界因为自己而变得更好。

现实却给了初出茅庐的赵磊当头一棒,你会发现,在企业中的事情,和在学校里面很不一样,是结果导向的,你想要做一件事,那么首先要考虑它能够带来什么,如果不能有什么直接的结果,或者这个结果在短时间内是看不到的,那么没有人会支持你做。这也是为什么很多从学术界跳往产业界的学术大牛会水土不服,这样的例子太多了。赵磊的前几个月写了很多规则模版(根据问题的出现的某些关键词,直接匹配相应的答案),因为这是短期内提高问答正确率的最快最稳定的方式。

在这样做了几个月的规则之后,不知道为什么,领导似乎觉得我们应该做一些很 fancy 的事情了,于是赵磊很开心,可以做一些之前学习过的机器学习模型了。训练优化模型的过程其实是比较枯燥的,特别是当你很长时间都没有效果上的提升时,一开始的新鲜感褪去之后,剩下的就是愈来愈多的枯燥。模型的效果是重度依赖于数据,在算法届有这么一句话:「数据和特征决定了效果的上限,而不同的模型和参数只是去逼近这个上限。」赵磊就是在不停的「清洗数据」->「特征处理」->「训练模型」 ->「调整参数」->「清洗更多数据」 这样的每一天不停循环。现实不总是奥特曼打小怪兽,点点鼠标,调调参数,效果提升很大的日子并不多见,更多的时候,是在无数的加班夜晚,日常灵魂拷问:

训练数据是不是有问题? 这个场景是不是不太适合这个模型? 我早就觉得这个模型结构很奇怪! 相信每一个算法工程师都有这样的体验,当你的模型效果长时间得不到提升,压力自然就会出现,慢慢你会有一种无助、绝望的感觉,这时候你会想念起当初写规则、写模版的美好时光。

现状

目前算法工程师的要求越来越高,很多企业对算法工程师的工程能力的要求也是越来越高。5 年前你可能不需要任何的工程能力,仅仅凭借算法能力就能收获 offer,但是现在的情况是,如果你没有一定的工程能力,那么意味着企业还需要给你搭配相应的工程人员,这显然不是最优的。

在校招方面,学校和学历的要求越来越高,浪潮之下的相关专业的博士生已经一批批的毕业,今年以来的大环境不是很理想,导致招聘数量没有明显提升。这无疑使得竞争愈加激烈,特别是在校招行业,相关的要求也是水涨船高。

算法方面的知识更新速度更是其他岗位更难以望其项背的。

举例来说,Java 程序员的主要开发框架,这么多年来都还是 Spring 相关的这一套,而相对更新较快的前端方面,其主要的框架也是 React/Vue/Angular 这几种。

而算法领域的模型更新超过你的想象,这意味着你更需要不停的学习、吸收相关的模型。举例来说,自然语言处理领域,可能 5 年前你只需要知道一些基础的机器学习模型和 Word2vec 就够了,两年前你需要再了解 Attention 结构,而如今如果你不知道大名鼎鼎的 BERT,不了解其背后的 Transformer,我甚至怀疑你是否能拿到任何一个 offer.

不夸张的说,每一天都有新的模型推出,其中有一部分优秀模型可能会有 SOTA(目前最优)的效果,如果这个模型引发了关注,那么你必须要学习它!持续学习是一项必备的关键能力之一!

误解

目前对于算法岗的调侃和误解是存在的。

算法同学会自嘲是 SQL BOY,是调参侠。

有些配合算法的开发同学会觉得自己是在给算法打黑工,承担了线上的故障风险,而功劳可能大部分都是算法同学的。事实上,目前很多算法工程师的工程能力太差,这是一些别的同学嘲讽算法同学的主要原因。

Salaryfly 认为,如果不是纯学术型的研究人员,那么还是建议有一定的工程实现能力,这不仅会对算法的落地有帮助,也会便于算法同学和开发同学之间的沟通。

曾经有知乎上有人将不合格的算法工程师分为了几种类型,这也反映出目前的部分浮夸现状,其主要共同特征是对算法一知半解,满足于 hello world 型的算法学习,落地能力不强,主要靠 PPT 进行输出等等。

2020

算法工程师的基础技术栈。

深度学习框架:

编程语言:

常用库:

如果你已经是或者想成为一名算法工程师,那么在 2020 年,建议你踏实下来,算法+工程两手都要抓,都要硬!

1024,节日快乐!

(文中赵磊为化名)

欢迎关注微信公众号: Salaryfly

4439 次点击
所在节点    程序员
22 条回复
wangyzj
2020-10-25 19:04:36 +08:00
@salaryfly #20 实用价值肯定是有的,尤其是那种结合实际生产场景需要,同时给出工程架构设计的人
kevtyle
2021-04-20 10:37:26 +08:00
如果别人想看薪资,却没办法看,可能会提交假信息,这个情况考虑过吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/718257

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX