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

4478 次点击
所在节点    程序员
22 条回复
salaryfly
2020-10-24 21:44:44 +08:00
revalue
2020-10-24 22:21:07 +08:00
市场需求肯定是有的,高手和打杂之间存在着比例划分。打杂的都觉得自己在打黑工
raaaaaar
2020-10-24 23:07:00 +08:00
算法岗太卷了,我周围那些高中的竞赛党,大学各种 ACM 奖牌的大佬也是往这方向走,怎么比。。
hoyixi
2020-10-24 23:23:43 +08:00
当卖水的集中卖某一种水的时候,已经是谷峰,或者谷峰已过,开始往下栽了。iOS,Andorid,前端,Python 无一例外
salaryfly
2020-10-24 23:30:04 +08:00
@revalue 打杂大多了,也可能就是高手了:)
salaryfly
2020-10-24 23:31:05 +08:00
@raaaaaar 现在的竞争特别是校招,确实很激烈!
salaryfly
2020-10-24 23:32:14 +08:00
@hoyixi 要么引领浪潮,要么追随浪潮
user8341
2020-10-24 23:33:45 +08:00
Java 后端才是最通用的刚需
salaryfly
2020-10-24 23:35:17 +08:00
@user8341 Golang 不配拥有姓名吗 :)
user8341
2020-10-24 23:39:08 +08:00
@salaryfly 市场占有率差很多。我是看 TIOBE 排名,Java 占 12.56%,Go 只占 1.16%。差距还是很悬殊的。
LoveJava
2020-10-24 23:41:14 +08:00
贩卖焦虑,然后宣传自己的公众号收割粉丝。最后卖广告卖教材赚钱美滋滋。
abcbuzhiming
2020-10-24 23:48:00 +08:00
@salaryfly Go 还需要时间积累基础设施,现在真心感觉背后有超级组织撑着的语言就是不一样,Java 背后的那个 JCP 组织,以及 Apache 基金会不声不响的做了很多事情,护城河早就建起来了。Go 背后只有 google,差点意思。至于背后没有超级组织的语言,比如 javascript,本来是应用超级广泛,社区也超级庞大的语言,按理说应该发展的很好,结果呢,作为重要基础设施的包管理工具 NPM 三天两头的爆被人写入恶意代码的新闻。。。。。。看着让人叹气
salaryfly
2020-10-24 23:57:50 +08:00
@LoveJava 别这样说啊,要不你也关注一下我的公众号吧。
salaryfly
2020-10-24 23:59:08 +08:00
@abcbuzhiming 感觉用 Golang 的公司慢慢多了起来了
AntiGameZ
2020-10-25 00:57:20 +08:00
LZ 目的就是推广自己网站,我觉得无可厚非。

对我来说,与其长篇大论贩卖焦虑,不如聊聊为何作为一个程序员,salaryfly 的数据是可信的。起码对我来说,观感会更好一些。
Ley
2020-10-25 01:16:48 +08:00
我倒是觉得楼主文笔不错,文章内容也算不上贩卖焦虑。只要能提供一些有价值的信息,内容又不是太浮夸或急功近利,相信会得到更多的关注者。
salaryfly
2020-10-25 10:13:39 +08:00
@AntiGameZ 感谢理解!

关注公众号 Salaryfly 后面我们会聊聊为什么 salaryfly 的数据是基本可信的:)
salaryfly
2020-10-25 10:17:31 +08:00
@Ley 您好,感谢您的理解和建议!

之前有做过技术干货博客网站,有一些关注量,但是觉得技术干货的受众面可能会更窄。

我们也想做一个调查,有希望看技术干货的能否关注公众号留言,说一下想看的干货类型。提前感谢大家!
wangyzj
2020-10-25 11:30:54 +08:00
写的不错
我的感受是
基础理论很难突破,大部分场景都有固定的套路算法去实现
根据公司不同场景来优化算法又很大程度上依赖工程
所以很多算法岗就变成了特征,调参,pm,和配合工程团队
我个人不是算法,我只是自学过,发现其实很多场景实现都可以 google 到,所以有此感受
salaryfly
2020-10-25 12:27:02 +08:00
@wangyzj 感谢支持!
基础理论是学术界和极少数产业界的顶尖人才来突破的。
然而这不是说做算法应用没有价值。相反,目前最缺少的就是可以做算法应用落地的人才!

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

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

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

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

© 2021 V2EX