诸葛越:关于算法工程师职业发展的思考

程序源代码

共 4969字,需浏览 10分钟

 ·

2020-11-18 16:55

《职业发展论坛》专栏·第01篇

整理 | 吴雪松 校对 | 王大川

导读:近年来人工智能技术取得了巨大的突破,应用到工业界的场景也越来越多,吸引了大量的人才涌进算法研究领域。我认识的很多朋友也投身其中,在学术界做研究的有,在工业界搞应用研究的也有。同时因为工作的原因,我也接触了很多算法方向的候选人,有些是学生,有些是来自于工业界的其他公司。更深的接触是来自于与Hulu内部算法团队的同事们,不论是日常的研究还是人员晋升时让我有机会和大家有很多深入的交流讨论,其中就包括了算法工程师/研究员在工业界职业发展问题。算法工程师/研究员作为一个比较新的职业,还没有成熟的职业发展路径做参考,所以我在这个领域的很多朋友、同事都会遇到这个问题:"接下来,我该怎么办?我的出路有哪些?"

我今天的分享不会给大家指出具体的路径,因为每个人和每个公司都不一样,但希望通过提出一些具体的问题,引发算法工程师/研究员群体对未来职业发展的思考,最终找到一条适合自己的职业发展路径。

我今天的分享会分为三部分:

  • 公司组织架构

  • 人才模型

  • 值得思考的问题

01
公司组织架构

很多人可能会有疑问,聊个人职业发展为什么要先介绍公司的组织架构?它和职业发展有什么关系呢?我想说不仅有关系,关系还挺大。首先,每个公司的组织架构都不同,不同的架构决定了不同的晋升通道,第二,职业路径规划是为了在职场上走的更高更远,所以脱离实际的晋升通道谈规划是不实际的。你在做职业路径规划时,首先就要了解所处公司的架构情况,明确可能的职业路径有哪些,然后才能确立目标并为之计划和执行。

接下来我就简单介绍下三种常见的组织架构:


一种是AI LAB。这种模式在大公司很常见,老牌的有以MSRA为代表的外企研究机构,国内的如百度的深度学习研究院、阿里达摩院、头条的AI LAB等。AI Lab可以算是工业界中顶级的人工智能研究机构,汇聚了众多的业界大牛和顶尖人才,做出很多根植于工业界的研究贡献。在这样的结构下,你向上走需要具备的技能和产出、能达到的高度肯定与在研发线的同学是不一样的。

第二种的AI团队是在研发线,位于CTO下面,支持不同产品线和公司级别的AI需求。对这个架构下的AI团队,公司希望它提供的是一种通用的类似于中台的能力。

第三种的AI团队位于不同的产品线上,这种结构在大公司常见。产品线比较丰富,且用户量较大,因此需要有专门的AI团队进行支持。比如在现场与我沟通的一个小朋友,他是腾讯看一看团队的算法实习生,听他介绍了解到腾讯里面团队分工很细致,算法团队和工程团队是分开的,算法团队又分为独立的召回团队和排序团队,每个团队在自己的方向上做的很精细。

以上三种结构是比较普遍的,大家可以对照想一想你们团队在哪个架构下面,你又在团队的什么位置上。两三年后你肯定是想往上晋升在现有的晋升通道下需要具备什么样的技能和产出呢?在向上呢,还需要怎么做?继续向上又如何呢?这些都是需要大家提前思考的。

02
人才模型

接下来给大家介绍一下人才模型,在给定了公司架构后,你要怎么做呢?大家可以看这个图,一个大写的字母“T”。这是我经常给Hulu的同事讲的,我们要想象我们的技能就像一个“T-shaped”。也可以比喻为大家熟识的“wide&deep”算法,就是你要走多宽,你要走多深。

有一类人,尤其是我们今天的受众,应该是倾向于偏深,从而成为一个专家型人才。如有一个人,他想成为一个专家,我们对话如下:

我问:5年之后你想干什么?

他答:我想做一个专家;

我问:那10年之后呢?

他答:更专的专家。

想成为专家很好,但只说专家是不够的,假如说要成为Machine Learning的专家,好像有点太泛了。所以接下来还要问自己另外一个问题,那就是我要“专”什么?对于技术同学来讲,大概有三个维度上的专家:

第一,某一项技术的专家。比如说我是强化学习方向的专家,我对强化学习演进的历史特别清楚,过往的技术点有哪些,未来可能的研究趋势有哪些,更重要的是我还为这项技术的发展做出过某些重要的贡献。那我就算是强化学习的专家了,这是一个很确定的。

第二,某一技术领域的专家。比如说CV是一个技术领域,这个领域里有很多特定的算法,虽然我不是某一特定算法的专家,但是我都了解,更关键的是我可以利用这些成熟的算法解决特定的业务问题,这也是一类专家;例如推荐系统也是一个领域,也可以成为这个领域的专家。

第三,某一商业领域的技术专家。比如说拿商业广告来说,它包含了一整套的技术,例如说怎么优化网上广告的配型,比如说怎么做广告的个性化推荐等,你不仅都知道还可以带领团队搞定整个系统的问题,所以你也可以成为这一商业领域的算法专家。

如果你想成为一个专家,那到底是你想成为上述三种的哪一种呢?有过思考吗?

我们接下来说第二类,与专家相对应的是偏宽度,简称为“杂家”吧,也有三个维度:

第一,全能型算法工程师;这类工程师的学习能力特别强,给他任何一个问题,都能通过快速学习掌握相关知识点,然后把问题解决;再抛给他另一个完全不同的问题,依然可以快速解决。其实在某些类型的企业或者某些阶段的企业,给算法工程师营造的工作学习环境就是这样的,你没有办法决定精专一个方向,因为每天都要面对各种层出不穷的问题,且都需要你尽快解决。但是大家可以想象在这种环境长期发展下去的话,对算法工程师长期发展会造成什么影响;

第二,可能不完全包含算法工程师,在特定的领域内,你对数据全流程都了解,对数据怎么从头到尾应用到机器学习领域都了解,有点数据科学家的意思。

第三类,在大厂或者大平台有过丰富的经验,用同样的算法解决不同量级的问题;相较于其他没有相关经历的算法工程师,你知道怎么去处理更大的问题面对更大的挑战,这是很重要的优势。

总结来说,即使说你什么都能干,也要想一想是在一个什么样的框架下处理什么样的问题。

说第三类,还有些人在特定阶段要走向管理,转向管理需要具备的技能与前两类又不一样。

其实当你已经是一个领域的专家后,大家都会在继续走专家线还是走向管理线间有过思考和摇摆。但是不管你最终走向何方,一定要知道适合的才是最好的。怎么判断自己更适合哪个呢?那就需要把专家线和管理线对人才模型的要求搞清楚。专家线前面已经说过,我们在介绍下管理人才需要具备的技能。

第一点,“学而优则仕”。怎么理解呢?只有那些已经成为技术专家的人,才有选择的机会。转管理是有门槛的,发展路径会一般是技术专家-技术leader-管理。;

第二点,需要学习相应的软技能。这个涵盖的范围还挺大,简单列举些:如何招人、如何用人、如何保人,领导力,沟通能力,项目管理能等等。

如果你未来想要走向管理岗,在技术上一定要有建树,还要提前学习和储备相应的软技能,而不是转过之后在补充。

03

值得思考的问题
这次分享不是为了给大家具体的答案,而是希望能够引发大家对于算法工程师/研究员职业发展问题的思考人无远虑必有近忧,想清楚后早做相应的规划和准备。接下来会给大家提出几个问题:

1. Deep and wide, which domain?

这个问题在之前讨论过,大家可以回顾下。希望你在平时对这个问题就有深入的思考,不要到三五年之后被问到的时候回答“我还没有想好”。找不到方向时,往哪个方向走都是错误的。

2. How much do i want to work with people? And how good am i?

大部分人都有转管理的想法,但是你一定要清楚做研发与做管理是很不一样的。简单提醒几点:

第一,何时选择转管理?如何从技术专家过渡到管理岗位?这是需要面对的第一个问题;

第二,如何获取团队的信任?是不是只要你的技术足够强,就可以获取团队成员的认可和尊敬,就可以把老板交代的任务都干好。是不是真的是这样子的?

第三,如何尽快进入管理角色?你要充分意识到管理工作更多是和人打交道,包括上级老板、一起配合的兄弟团队以及你所带领的团队成员,涉及到很多与人沟通的细节,你该如何应对。

3. How to balance engineering skills vs research skills?

这个问题是算法工程师群体们普遍都会遇到的,算法研究能力or工程能力。您在其中一个方向上成为专家是没有问题,企业都会有合适的位置给到你。但如果你想走到更高的职级,就需要不断拓宽与现有工作相关的技术栈。大家可以回到开头讲的团队架构图,你会发现在组织的特定层级的特定位置,算法研究和工程能力会结合起来,这就要求位于这个位置的人必须兼顾两个方向,两个方向都要通,否则很难做到把两个方向的团队带好。

随着近两年算法岗位的成熟,有一种说法重新被大家认同,那就是“算法工程师首先是一名工程师”,可见对算法工程师工程能力的重视已经是普遍的观点了。

4. How to balance working on the real problems vs exploring advanced tech?

对于这点,它不是一边好于另外一边的问题,更多的是环境塑造或者个人偏好。尤其近几年,企业对算法应用的需求激增,但偏偏人才供给短期内又很难被满足,导致很多算法同学一个项目接一个项目的做下去,解决了一个又一个的实际问题,在这个过程中自然积攒了大量的实际经验;但是另外一些身在Ai Lab的算法同学就不一样了,顶会paper一篇接一篇的发,保持着对新技术新发现的持续跟进。你很难说一个好过另外一个,需要认清个人更喜欢哪类工作,以及在特定的环境下做符合预期的事情。

5. How to develop methodology over time so you can solve larger and more complex problems?

最后是关于发展个人方法论的问题,这个问题我在内部也经常提起。拿我们团队举例子,你是团队的一个reasearcher,业界一些前沿的技术成果都跟上了,那你如何才能在此基础上做的更好呢?

大家可以思考这样一个问题,工作经验分别为1年、5年、10年的三个工程师在解决同一个问题时的差别是什么呢?结果可能都一样,那就是问题都被解决了,但真正的差别在于大家看问题的角度和维度不一样。作为工作经验久的工程师,你看到的不应该仅仅是问题的表面,更要看到问题的前因后果,以及其他与此相关的事情。为什么会这样呢?因为通过多年的工作积累,资深的工程师已经有了解决问题的框架,可以把问题放在框架下拆解分析,最后找到解决问题的方法。

随着工作年限的增加,大家一定要总结并提炼出与工龄相匹配的方法论,否则你是无法对“后浪”形成竞争优势。形成了自己的方法论后,不仅可以更高效的应对老问题,还能从容的面对新问题。为什么会呢?因为老问题可以直接套用现有解决方案,效率肯定提高;面对新问题时,将问题放在现有的方法论下进行拆解,很快也会找到方案。你一定要知道,随着职级增加的不仅是收入,还有需要处理问题的数量。如果没有积累,你在应付激增的问题时会显得很吃力。

今天的分享就到这里,希望通过这些问题引发你对职业发展的思考,早日找到适合自己的发展路径,谢谢大家~


--end--


扫描下方二维码
添加好友,备注【交流
可私聊交流,也可进资源丰富学习群
浏览 33
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报