算法初级职位内卷,如何选择适合自己的方向?


作者:胡津铭,毕业于浙江大学CS专业,就职于Google。

19年校招的参与者来回答一下这个问题,分享一下自己的体会。

首先自报家门,本科985非CS,硕士浙大CS,硕士做的CV和ML方向。0已中的顶会一作paper,暑期实习/秋招之前有一段日常实习经历,在导师的公司杭州飞步科技,暑期实习在Google北京的CloudAI团队。最后前前后后大概拿了10来家公司的offer,其中有一半左右(主要是国内企业)是算法岗的,大概包括阿里搜索推荐、腾讯WXG、头条推荐等offer。我也有写过我的自学CS、找工作的经验。

可以看到,我拿下的offer也是比较多的,而且在算法岗的面试中我没有失手过一次,拿下offer的几率在100% 。我在面试的过程中也很少感受到有压力,基本上每场面试我都知道自己一定是过的,无非是开多少钱的问题。我之前其实有看到一些文章说现在的算法岗,没有顶会文章是很难拿下offer的,那么就我个人2019年的经验来看,我觉得这个说法至少不适用于我。

OK,炫耀结束。首先我想说一下自己对算法岗求职现状的看法。我认为算法岗确实内卷严重,竞争激烈。有些答主说那是因为你不够优秀,所以拿不到offer。可是如果是同等水平的开发同学,那拿offer往往会容易很多。这还不能说明内卷,那什么叫内卷......要说一些同学不够优秀,这也确实,可本身真正优秀的人所占比例就是比较少的,说这个也没什么意义......

接下来说一下算法岗求职中最重要的能力是什么。我非常赞同这个回答里所说的:那就是基础扎实,做事扎实。我认为合格或者优秀的面试官能够轻易判断出一位候选人是否扎实。所以如果你基础扎实、做事扎实,那只要你运气不是特别差,能碰到合格的面试官,就一定会有不错的offer的。那有同学要问了,什么叫扎实呢?说实话,扎实不扎实你自己心里没数吗......

还有同学会问了,那有些公司就是要拿顶会一作paper作为要求或者门槛,那没有顶会paper怎么办呢?对于这种情况,我只能说,换一家公司/部门。以顶会一作paper作为硕士算法岗的门槛,我认为这个部门不适合去。这里顺带一提我对做research的看法。我认为如果未来要去工业界的话,最重要的是要有独立研究的能力

除了做事扎实之外,很重要的能力还包括快速学习的能力、沟通交流的能力、解决问题的能力等等。我在这个地方有根据我的经验总结了不同公司/岗位对各种能力的要求,也提供给大家参考。打算找算法岗工作的同学也可以朝着优秀的算法工程师方向努力。

最后也不说什么劝退不劝退的吧。我就告诉大家,做了两三年的CV、ML,并且拿下了这些大多数人眼中可能还算不错的offer之后,我最后还是选择了一家外企的开发岗......

很多同学在评论区问我为什么最后转了开发,我在这里更新一下吧。我本不想劝退,是大家逼我的......大概有以下几个原因:

  • 在国内,算法岗基本上只存在于一些国内的IT大厂当中,例如BAT。众所周知,这些公司为了员工的竞争力着想,都要求员工修一些福报,来更快地成长。然而作为咸鱼的我觉得自己不配这样的着想,更希望能从事一份work-life balance的工作,这时候的选择往往就是一些来自于水深火热的资本主义社会的外企了,本着我不入地狱谁入地狱的想法,我毅然加入了这样的公司。而这些公司往往在国内只提供开发岗的工作。

  • 机器学习是非常有用且伟大的技术。Machine Learning is great! 但是现在的深度学习会有些过于玄学,菜鸡如我往往不能从各种调参经验中获得很好的insight,我并不知道这玩意儿为什么会work,那玩意儿为什么不work。心理素质不佳的我常常为此感到惶恐。开发就不一样了,there are always some reasons why it works and why it doesn't.

  • 有同学提到在机器学习、深度学习中数据data的重要性。是的,我非常认可这种观点,在机器学习中数据比什么都重要,而这种数据中的坑常常是非常多的,需要自己去踩过去,并且获得一些对数据/场景的insight。但是对我这种菜鸡来说,踩data的坑是一件相当boring甚至frustrated的事情。况且,有些insight或许会过时得挺快。5年前工业界做cv的人还是各种特征工程,他们获得大量的特征工程经验,然而CNN出来之后,cv中的特征工程多数时候还有意义吗?那之前积累的data经验是不是就会有很大一部分作废了呢?

    再以nlp为例,13年word2vec出来之前,大家还是各种LDA;19年bert出来之前,大家在各种任务上还是各种魔改的LSTM等等,现在呢.....当然了,在很多场景(如推荐)下,对数据/业务的理解还是至关重要的。不过在开发行业,10年前写C++的人现在可能还写C++,虽然会有一些变化,但总是大差不差的。

  • 要在互联网公司的一线上做算法,就需要快速学习的能力,要频繁地去跟最新的工作。这件事情并不简单,尤其当公司还有很大的业务压力和加班压力的时候。当我还年轻没有家庭压力的时候我也许能跟得上,可当我年龄大一些有家庭了呢?

  • 做算法是要承受很大的精神压力的。你很难去预估自己完成一个算法模块的工期。你的feature或者模型今天没work,you may never know when it will work. 但是开发不一样,开发相对容易去预估工期,知道自己完成了项目的百分之多少,这样精神压力会小很多。我这种咸鱼,还是喜欢精神压力小的生活。

这里再补充一个我观察到的有趣现象。个人经验,算法岗的同学(当然包括我自己)普遍学得没有开发岗的同学扎实。我认为是由于算法的基础本来很难打扎实。原因是什么呢?从我个人经验出发,开发的代码是需要自己去一行一行写,bug需要自己一个一个去de,这个过程对能力的提升是实打实的,提供的监督信息也会让人知道自己欠缺哪里的基础并去补上。算法岗就不一样了。

有多少算法岗同学能够当场写一个decisionTree/adaboost/hmm之类的经典算法的,或者至少给个实现思路?很多人的思维可能是这样的:自己实现经典算法?调API调参不香吗?实习/工作磨练算法的基础?sql boy,tf boy怎么磨练基础?就算真有心去补,这么大的kpi压力,哪有精力再去补基础啊。再说不补基础又不是不能干活...import pandas as pd; import sklearn; import lightgbm as lgb; import xgboost as xgb; git clone && python3 run...这不是也可以干活嘛......又不是不能用。

而我认为(CS的)学习很多时候至少有三种境界:

1. 看(推导)了一遍,以为自己懂了,其实很多细节都不懂。

2. 实现一遍,知道了很多细节和坑,这回算了解得差不多了。

3. 给合适的人教一遍,终于差不多都懂了。

很多算法岗的同学(也许也包括我)也许也第一层境界都没达到,那基础怎么能扎实呢?我无意去diss大家,只是我的观点是,人生多数时候没有捷径可走,欠下的基础总会在某一天要还的。共勉。

最后,以上都是我个人观点,仅供参考。不做劝退,不做劝进,各位根据自己的情况考虑。

转载自知乎问答

文章推荐

谷歌取代安卓的操作系统迟迟未发布,一万行Rust代码,清华学生「山寨」了一个

一位中国博士把整个CNN都给可视化了,可交互有细节,每次卷积ReLU池化都清清楚楚

机器学习在图像分类与识别中的应用(附PPT下载)

 

### 回答1: 一般来说,想成为一名机器学习工程师,需要具备扎实的数学和编程基础,以及相关领域的知识背景。在公司内部发展,可能会经历以下职位: 1. 数据分析师:负责从数据中提取信息和洞见,并将其转化为业务价值。 2. 数据工程师:负责构建和维护数据基础设施,包括数据仓库、ETL流程和数据管道等。 3. 机器学习工程师(初级):负责开发和部署机器学习模型,实现自动化决策。 4. 机器学习工程师(高级):负责设计和开发大规模机器学习系统,改进算法性能和模型可靠性。 5. 数据科学家:负责研究和解决业务问题,利用机器学习和统计方法进行预测和优化。 6. 研究员:负责探索新的机器学习和人工智能技术,为公司提供创新和竞争优势。 需要注意的是,不同公司的职位设置可能会有所不同,具体的职位路径也会因公司而异。 ### 回答2: 成为机器学习工程师的职业发展路径可以在公司内部经历以下职位: 1. 数据分析师:作为数据分析师,你将负责收集、清洗和分析数据,为团队提供数据支持。这个职位能够帮助你熟悉数据处理和分析工具,同时了解数据对机器学习的重要性。 2. 机器学习实习生:作为实习生,你将有机会学习和应用机器学习算法。你将与资深团队成员合作,在项目中负责部分机器学习任务。这个职位可以让你更深入地了解机器学习的理论和实践,并提高处理实际问题的能力。 3. 机器学习工程师助理:助理的职位将提供一定的工程经验。你将负责支持工程师团队的研发工作,例如建立和维护模型、进行数据预处理和特征工程等。这个职位可以让你熟悉机器学习相关的编程和工程实践。 4. 机器学习工程师:一旦你积累了足够的经验和技能,你可以成为一个独立的机器学习工程师。在这个职位上,你将负责整个机器学习项目的设计、构建和部署。你将与团队合作,解决现实问题,并不断优化算法和模型。 5. 数据科学家:在机器学习工程师的基础上,你可以进一步发展成为数据科学家。作为数据科学家,你将处理更复杂的数据问题,利用统计学和数学方法进行建模和预测。你还需要与业务部门合作,将数据分析结果转化为业务价值。 需要注意的是,这只是一种可能的职业发展路径,具体的职位设置和晋升途径可能因公司而异。此外,继续学习和持续提升自己的技能也是非常重要的,例如学习新的机器学习算法、深入了解特定行业的应用场景等,从而在职业发展中更进一步。 ### 回答3: 成为机器学习工程师的职位发展路径在不同公司内部可能会有所不同,但一般情况下,以下是在公司内部逐渐发展成为机器学习工程师可能经历的一些职位: 1. 数据分析师:通常是一个入门级别的职位,负责收集、清洗和分析数据,以帮助公司做出决策。这个职位可以学习理解数据和使用常见的数据分析工具。 2. 数据工程师:在这个职位上,你将负责构建和维护数据基础设施,并处理大规模数据集。你需要有扎实的编程技能和数据库知识。 3. 机器学习工程师:这是一个专门从事机器学习相关工作的职位。你将负责设计和实现各种机器学习模型,并应用它们来解决公司所面临的问题。你需要深入了解机器学习算法和数据预处理技术,同时具备良好的编程和数学基础。 4. 数据科学家:作为一名数据科学家,你将运用统计学、数据挖掘和预测建模来分析和解决复杂的业务问题。你需要能够将机器学习算法与业务需求相结合,并具备良好的沟通和解释数据结果的能力。 4. 数据科学团队领导:在数据科学领域有大量经验和技能后,可以朝着团队领导方向发展。作为团队领导,你将负责指导和协调团队成员,制定项目目标和策略,并与公司管理层合作以解决业务问题。 需要注意的是,这些职位之间的转变不是线性的,并且在实际情况中可能会有所不同。此外,继续教育和不断学习新技能也是发展成为机器学习工程师的关键。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值