最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

算法工程师也会遇到 35 岁这道坎么?

  • 2020-05-25
  • 本文字数:3796 字

    阅读完需:约 12 分钟

算法工程师也会遇到35岁这道坎么?

导读 :这个问题其实对于大多数程序员都是适用的,国内的互联网公司,始终奋斗在一线写代码、跑算法模型的工程师实在是太少了。每年的高校毕业生,持续不断地在为这个行业输入更年轻更新鲜的血液,对比 25 岁刚入职更会加班更能吃苦,关键是薪资更便宜的年轻人,35 岁的算法工程师如果只是工龄更长资历更老,将全方位处于劣势。


想要跨过这道坎,要做的就是努力提升自己的相对不可替代性,从初级渐渐往高级的方向走,个人觉得大体可以分 3 个阶段:

01 初级算法工程师

——关键词:高效执行机器——


算法入行的必经之路,所谓的 SQL Boy、调参侠、数据搬运工、炼丹师,都发生在这个阶段。


这个阶段的算法工程师,很多时候都是在和数据打交道。数据漏报、数据重复上报、埋点有误、多方数据统计口径无法对齐、反作弊口径定义和对齐、异常数据检测和排查、数据缺失处理、样本清洗、特征统计加工、线上指标下降问题排查、bad case 归因分析、数据标注…听起来是不是一点都不 fancy?对于一个负责业务落地的一线算法工程师来说,这些数据工作可能占了日常工作的很大一部分时间。


可就是这些一开始被你看不起的各种所谓 dirty job,这些你在实验室和学校接触不到的工业数据实践,这些在 paper、书本和网络永远不会教你的工作,正是你所累积的技术经验和宝贵的财富,它是驱动你往下一层级改造的主动力。作为一个算法工程师,如果从没有在底层有过基础的开发和数据分析的从业经验,将来站在更高层的时候很难作出对团队方向有利的决策。数据决定了模型的上界,特征和算法只是在逼近这个上界。


不了解你的业务数据特点,很难成为一个好的算法工程师。在业务实践中培养锻炼数据 sense,是一个初级算法工程师的必修课之一。


这个阶段的算法工程师,一般面临的业务问题也比较明确,比如提升召回效果、提升线上 ctr / cvr / gmv / 时长、提升搜索相关性、降低 bad case 率等等。这些明确的业务问题背后,在业界包括团队内一般都有比较明确的技术方向,相对应的就是一些比较明确的算法问题,比如信息流的 ctr 预估、用户兴趣建模、广告出价预估、相关性模型、物品召回、图文标签生成等。


这些不同的算法方向根据团队形态不同,往往会分的更加明细,比如召回方向的可能会有专门的团队,落到每个人头上就是负责其中一种召回策略:用户标签召回、行为序列召回、主题召回、双塔模型召回等。做排序模型的有专门的团队,可能是每个场景有专门的人负责,例如首页/频道页/分类页/热门页/子频道页等;也可能是每个方向的模型是专门的人负责,比如 ctr 模型、gmv 模型、时长模型等。机制策略也可能有专门的团队,每个人负责不同的策略方向。


具体业务和技术形态怎么分工,不需要初级算法工程师操心,那是更高层的算法工程师需要规划和操心的事。这个阶段的算法工程师的主要目标,是要使得自己具备能够高效执行具体任务落地的能力,这其中对动手能力的要求是最高的。


业界 XX 会议又又发表了一篇影响力很大的 paper,实验效果宣称 ( chui niu ) 业界最牛;隔壁 XX 公司的 XX 团队又又又发表 ( PR ) 了最新的算法,声称效果提升巨大 ( 可能是 baseline 很低 );著名程序员大型交友网站某 hub 又开源了最新的模型代码,号称在多项任务中吊打当前各种主流模型。于是老大一句话,你去调研下人家怎么做的,回来落地实现下啊。


接下来就是发挥初级算法工程师能力的时候了。看论文、复现模型、跑实验、调参数、魔改网络、效果不好接着调。这个过程其实也是拉开初级算法工程师们能力的时候,有些人只是做到会用工具,调调 api,调调参数改改网络,或者直接 git clone 下载源码编码后改改直接跑,至于能否有效果完全看天,真真是在"炼丹"。最终没效果还要补充一句,论文作者们真的是在吹牛啊,这个算法在我们这里完全没有效果啊。然后换个模型重新炼丹来过。


有些人在这个过程中不断累积经验,尽可能去找这些方法的共性。以 ctr 模型为例,embedding 参数对自己业务数据效果是否敏感、网络层数的深度对效果的影响、不同正则化方法是否 work、bn/ln/dropout 等方法是否有效、当前的特征体系对于高阶特征交叉是否已经刻画足够、attention 到底收益有多大等等。这些如果能从更本质和通用共性的角度去分析总结,大概率在同样的数据分布上可以作为以后的先验判断,经验是可迁移的,不至于在每一次有新的模型出来就去盲目的做尝试。


判断这个阶段的工程师的标准,就是对于一个明确的算法目标,是否具备足够强的执行能力将其落地。初级的落地能力只是快速实现,更加高级和 solid 的落地能力,是能够 know how 的落地,有无效果都能做出比较 solid 的分析,并且能够为以后的迭代优化提供经验。

02 中级算法工程师

——关键词:算法选型和改造能力——


经过了第一阶段之后,对于明确的算法问题已经具备了足够的经验,这个阶段,需要自己根据在这个领域内的技术累积,对已有的算法问题,进行适当的改造和优化。


以用户画像为例,如果是刚搭建的团队,初期可能更多需要搭建的是整个模型框架,和上下游团队协作沟通,以最小的代价迅速搭建起线上可用的基础 baseline。比如最简单的基于统计的方法,根据用户主动行为的物品标签作为用户的统计画像标签,如 24 小时的统计标签作为短期兴趣,30 天的统计标签并做时间衰减作为长期兴趣。这个阶段的算法工程师,如果不顾团队的现状,一上来就想做能够体现技术深度的各种模型,对团队的进展其实是负向的。 确保算法能够快速落地并取得收益才是主要目的。


而团队发展到了一定阶段,有了一定的基础属性画像和统计画像之后,可以根据团队的人力做些深度的发展,从基础的统计,可以做无监督的隐语义理解 ( lda, w2c 等 )、有监督的双塔建模、加入特征的用户兴趣建模,到用户序列建模,甚至各种图方法知识图谱的手段。而具体选择哪些方法进行尝试需要中级算法工程师根据此前在初级阶段累积的经验做预判,例如假如还没有用户 embedding 的表示,将用户的行为序列作为 sentence 尝试在很多公司的业务都有过收益的 word2vec 可以作为 baseline;引入更多特征的双塔模型得到用户的行为 embedding 大概率能进一步提升效果。而如果用户有些社交属性关联,可以考虑图方法做进一步的挖掘等等。


作为该方向的负责人,需要根据团队发展阶段,进行合理的技术选型,并做适当的改造。例如该不该用序列模型,lstm、rnn、transormer、bert 等序列模型如何选择,位置特征如何设计融入等等。关于细节的参数调优需要具体执行的初级算法工程师进行实验,而大方向的技术选型以及改造方向,则需要中级算法工程师把握和指导。


技术深度绝对不是考察中级算法工程师的主要手段,判断这个阶段算法工程师的标准,主要是是否具备在某个算法方向,独立承担整个算法从选型、改造、应用到落地取得成果的能力。

03 高级算法工程师

——关键词:业务抽象能力——


前面两个阶段的工程师做的事情,严格意义上来说,都是在执行这个阶段的算法工程师定下来的算法指标。这个阶段的算法工程师,需要更多的是对整个业务的理解,去抽象和定义业务问题。比如当前阶段,业务是否需要专门的团队做用户画像,需要多少的人力做素材理解,rank 模型是否还有空间、需要投入多少人力持续优化等。如果战略目标制定不明确,影响的将是整个团队的努力。


对于更上层的管理层来说,算法团队的存在意义,绝对不是说一定需要有 ctr 预估团队,需要有用户画像团队和视频理解团队,需要有人做 nlp、有人做特征等等。 整个算法团队存在的意义,就是能够最终从算法的层面,解决实际的业务问题。 在某个阶段需要做的是提升用户点击率,可能需要有 ctr 模型方向团队和有用户画像方向团队等;在某个阶段引入更多的多媒体素材可能需要有团队做视频理解和图像理解;某个阶段需要做用户增长和留存,可能需要有团队做专门的数据分析影响用户留存的因素,有团队做留存模型有团队做增长模型等等。


这也就决定了不同时期,对于算法团队的目标是不同的,需要的人员配备也不同,而这些,都需要高级算法工程师去站在整个业务层面去理解和拆解,然后将目标层层传递到整个团队去。 判断这个阶段算法工程师的标准,主要是对于所负责的业务,能否制定合理的算法可达目标,并带领团队完成实现。

04 结束语

——关键词:深耕岗位——


个人觉得,如果 35 岁了还处在第一阶段,也就是只能执行明确的算法模型,和刚毕业的年轻人比可以说完全没有竞争力,个人职业生涯的进一步发展会很受限。


如果已经进入第二阶段,不可取代性还是很强的,毕竟这个阶段的合理算法技术选型和推动落地能力,是很多刚毕业和工作不久的年轻算法工程师难以做到的。


如果已经到了第三阶段至少已经是业务方向的算法负责人了,都这种 title 了,考虑的是怎么往公司的中上层走了,根本不会担心年龄这种坎。


35 岁对于我个人而言还有几年的时间,也只有几年的时间。 无论是算法工程师还是其他岗位,深耕该岗位目前而言可能还是最优的选择,也可以说是没得选的选择。 持续不断的去提升自己在技术、技能、经验、资源上的累积,努力去提升自己的相对不可替代性。


至于年龄,不过是个数字而已。就算是个坎,它也远不是终点。


今天的分享就到这里,谢谢大家。


本文来自 DataFunTalk


原文链接


https://mp.weixin.qq.com/s?__biz=MzU1NTMyOTI4Mw==&mid=2247500212&idx=1&sn=7095ef4e39c2be4ca3da2ef6bc808e08&chksm=fbd773d8cca0facef78433698bd00fe27087058e5ded583d02e17dda2e1f56b708e61cd0b50e&scene=27#wechat_redirect


2020-05-25 10:061843

评论

发布
暂无评论
发现更多内容

左耳听风,右手敲码

homber

成长 感悟 竞争力 签约计划第二季

Prometheus Exporter (十七)JMX Exporter

耳东@Erdong

JMX Prometheus 28天写作 exporter 12月日更

架构实战营毕业总结

Geek_d18264

架构实战营

JavaScript 数据结构之 Number

devpoint

ES6 math 内容合集 签约计划第二季

架构实战营毕业总结

白开水又一杯

#架构实战营

华为中国大学生ICT大赛2021实践赛网络赛道晋级赛试题解析(答案版)

小韩

华为 网络 ICT

JavaScript 数据结构之 Object

devpoint

ES6 Object 内容合集 签约计划第二季

JavaScript 数据结构之 Set

devpoint

set ES6 内容合集 签约计划第二季

音视频实战(4)- 常见流媒体服务器方案对比分析

liuzhen007

签约计划第二季

http协议

en

HTTP

从0到1普及前端知识 | 内容合集

你好bk

内容合集 签约计划第二季

音视频实战(2)- 如何在网页端给视频添加硬水印

liuzhen007

签约计划第二季

JavaScript数据结构实用集

devpoint

JavaScript 数据结构 内容合集 签约计划第二季

Camtasia添加光标效果教程

淋雨

Camtasia

netty系列之:手持framecodec神器,创建多路复用http2客户端

程序那些事

Netty HTTP 程序那些事 http2 12月日更

音视频理论(3)- 视频中图片和文字渲染坐标问题

liuzhen007

签约计划第二季

Rust 元宇宙 13 —— 客户端连接

Miracle

rust 元宇宙

音视频学习从理论到实战

liuzhen007

内容合集 签约计划第二季 技术专题合集

实用机器学习笔记四:数据标注

打工人!

机器学习 学习笔记 12月日更 实用机器学习

音视频理论(2)- 音视频传输协议之 RTMP

liuzhen007

签约计划第二季

音视频实战(3)- Mac 系统 MediaInfo 多实例媒体信息分析

liuzhen007

签约计划第二季

.NET 6新东西--PeriodicTimer

喵叔

28天写作 12月日更

勿拖延

Nydia

Go并不需要Java风格的GC

Robert Lu

Go 垃圾回收

音视频实战(5)- FFmpeg 处理音视频常见问题集锦

liuzhen007

签约计划第二季

如何有效处理素材

将军-技术演讲力教练

为什么不上台?(5/28)

赵新龙

28天写作

关于研发效能推进提升的一点感受

homber

DevOps 研发效能 签约计划第二季

搭建基本Jest测试框架,解读覆盖率实现原理

梁龙先森

签约计划第二季

JavaScript 数据结构之 Map

devpoint

set map ES6 内容合集 签约计划第二季

如何通过Kubernetes事件来报告错误

Robert Lu

#Kubernetes#

算法工程师也会遇到35岁这道坎么?_文化 & 方法_DataFunTalk_InfoQ精选文章