BlaXuan 发表于 2021-7-11 07:50

男,985计算机小硕一枚,去争取算法岗位还是开发岗位?

本人双985小硕(保研),计算机学科,研二准备找工作了,现在纠结于争取算法岗位还是拿稳开发岗位。这几年做过的东西种类很杂。数学建模,做过涉及回归的科研项目,推荐系统,信号相关的科研,比较浅薄的图像处理和应用,可穿戴设备和运动传感器应用之类的。具体情况如下:u003Cbru003E1.C++开发方面的情况u003Cbru003E概况:C++是第一语言,写了5年,有80%以上把握拿到好的offer(这两年拿过阿里巴巴和腾讯的实习offer,老师不放没去)。u003Cbru003E细节:u003Cbru003E(1)计算机基本学科知识掌握的中等偏上(多数能讲清楚,少数要翻书)。u003Cbru003E(2)常年混迹leetcode和hihocoder,题目刷了大半。u003Cbru003E(3)c++的四大名著快读完了。STL有精读。u003Cbru003E(4)平时还写matlab和object-c,有完成代码的科研project(主要写代码,无paper)。

unityloverz 发表于 2021-7-11 07:54

我是机器学习方向的在读研究生;本科时期在阿里实习过,实习职位是算法工程师。
对这个问题说一下自己的看法。说的不对的地方,还望各位同行指正。

首先,我觉得题主完全有资本去报阿里或者腾讯的算法岗。
如果题主的描述属实,那么题主算是一个基础比较扎实的计算机学生了,而且对机器学习也是有一定程度的掌握。我本科拿到阿里算法工程师offer的时候,实力比题主差多了。

就我当时实习的情况来看,阿里的算法工程师赖以立足的还是工程能力,能干活、能搬砖才是硬道理。某一个机器学习的算法不会,学几个小时或者几天就足够了,应用一个算法、会调参数的门槛并不高。而且实际工作里用的最多的还是那些很经典、很基础的机器学习算法(逻辑回归,决策树之类的)。
而且如果你做的是数据挖掘,推荐系统之类的,你也应该知道你做的其实是特征工程。很多时候,复杂、高深的模型效果不一定好;能让结果效果有很大提升的往往是特征的提取和选择。所以比起算法和模型本身来说,对数据、对业务的理解其实同等重要甚至更重要。

正面回答你的三个问题:
(1)以我现在的机器学习情况准备算法岗位(阿里或者腾讯)的话,是否有资本一搏?如果有资本,那还需要怎么准备才能更稳一些?有资本。
如果你还想更稳一些,不妨做一些数据挖掘类的项目或者竞赛。比如阿里天池平台上的竞赛天池大数据竞赛 或者kaggle上的一些比赛。据我所知,BAT的算法岗还是非常认可这些竞赛的。特别是天池上的一系列竞赛,不仅奖金高,做得好的也基本能稳拿阿里算法岗的special offer

如果你觉得做竞赛太耗时间了,去github上follow一些比较有意思的机器学习项目也是不错的选择。总之,有意识地加强一下自己机器学习实践方面的背景吧。
另外,并行计算、分布式系统也在算法工程师的技能树里面。如果你有时间也可以学一下spark之类的,比较推荐伯克利的一门课。
参考SS Wang的知乎回答零基础自学如何成为合格的数据挖掘工程师? - 数据分析:
1.BerkeleyX: CS190.1x Scalable Machine Learning CS190.1x Course Info
这门课是伯克利开的,教机器学习基础、Python Spark实现。我很懂机器学习,但不懂spark和python,花了1周多时间看完视频、做完作业。如果没机器学习基础的话几周应该够了。学完了可以用spark处理大数据,做分类、推荐系统。这门课包含了机器学习基础,python spark实现。学这门课的时候记得做作业。

(2)想转机器学习是因为觉得开发岗位没有算法有意思,觉得搞算法更容易比写代码创新,也更接近与科研性质。这样的想法(针对阿里或者腾讯)是否正确?我觉得并不正确。以我所见的情况,阿里、腾讯的算法工程师一般不会涉及到算法创新;这部分工作可能会专门挖名校PhD甚至名校教授来做。MSRA、百度IDL这种地方倒是挺接近科研性质的;但我阿里实习期间的见闻,算法工程师做的还是工程,并非科研。
而且虽然你的title是算法工程师,但并非你就只做和算法相关的事。本质上,算法工程师也是一块哪里需要往哪里搬的砖。如果你的项目组需要你干别的活,你当然也要承担起别的和算法完全无关的工作。比如我实习期间,因为我的主管想分析别的网站的数据,就让我去干了一些爬虫的活。有一段时间我天天都是忙着从别的网站爬数据。
所以,不要太介意“算法工程师”“数据科学家”之类的title,对于应届生来说能干活才是硬道理。

(3)在各位大牛周围是否有人从写代码转到过算法岗,有没有经验可以告诉我
有,而且还不少。我当时的那个组是阿里某个部门的算法组,里面的大多数人title都是算法工程师。但不少人都是从开发岗转过来的;毕竟几年前, 机器学习还并不是很火。
另外,就我观察到我的同学找工作情况,研究生期间并没有什么机器学习方面的项目背景,但拿到BAT算法岗的例子也是不少的。

总之,其实本科生/研究生去公司做机器学习,和PhD去企业做机器学习,是不同的概念。
那些发了很多顶会甚至已经做出有影响力的成果的PhD(比如 @田渊栋@贾扬清@Naiyan Wang@Filestorm等等),他们去公司做机器学习是做research scientist.他们做的工作,和本科/硕士生做的算法工程师,并不是同一回事。

更新:
贾扬清大牛在评论里补充了一些看法。我觉得很值得参考,所以把这一段搬到我的回答里:
其实算法岗和开发岗的区别并不很大,比如说我现在负责开发Facebook的人工智能底层平台,并不是单纯的research就可以,同时也需要保证开发的系统可以在百亿级别的数据上进行快速深度学习的训练,这个没有系统开发的支持是很难做到的。我们现在招人,都会注意开发产品级别的代码的能力,所以很大程度上应该是算法和代码能力并重,甚至一定程度上代码能力比算法能力更重要。

franciscochonge 发表于 2021-7-11 08:04

我做软件开发已经20年,日常工作也与AI相关,所以谈一下自己的看法。
这两年AI大火,导致很多毕业生跨专业(例如自动化、光学等)转岗算法,这些人有个显著的特点就是羡慕IT的高薪,但普遍受没有受过通识的计算机教育(例如操作系统、数据结构、C/C++编程等),但人够聪明,数学不错(但大部分都没有学过高级算法),学编程吧,需要学的东西太多太杂,所以很多人都想抄“近路”来搞算法研究。这也客观上造成当前算法岗供大于求的局面。所以就人才招聘结果来说,“质量”明显不如以前了,原来名校的博士为基本要求,而今天985的硕士就可以了。
而且相比于软件开发,算法更吃脑力,对智力的要求更高,年龄越大挑战就越大。我本人是做系统集成的,实践中我的感觉是,随着脑力的下降,首先感到力不从心的就是数学,原来好多数学问题在脑子里过一遍就能想明白,但现在就需要画图才能理解。但编程就好多了,至少现在还没有感觉明显的衰弱,也可能是这多年已经积累了好多代码,很多时候把老代码复制过来改改就能work的原因吧!
其实,从去年开始,业界对AI的技术方向就已经达成了共识,也就是深度学习+大数据+大计算,其中尤其以数据为重。可以说只要数据足够,假以时日,大家的速度和精度都不会太差。现在大家比拼主要是算法变现的能力,也就是看谁能够把算法变成产品销售出去,因此今年我的感觉是,相对于纯粹的算法,综合性人才更稀缺,例如有既有产品思维,懂算法,懂编程的人。
AI在IT领域也不算个新鲜东西,但早先都集中在专业领域,更多是一些专家系统。感觉AI街谈巷议,突然大火也就是这两年的事,更准确的说应该是5年前,就在此时深度学习理论旧瓶装新酒,从而迎来AI研究的集中爆发。但在深度学习框架搭成之后,接下来更多就是调参数,喂数据。所以在相当一段时间内,算法的研发重点转向了数据的收集和清洗。
也就在这个时候,稍微打听下,你就会发现业界很多到公司招聘的实习生,日常主要工作就是调下参数,编写一些数据收集工具(例如网络爬虫),甚至更倒霉一点就是每日用别人写好的工具收集数据,清洗数据。
深度学习框架搭建的早期阶段,对算法工程师的要求是很高的,既需要精深的数学能力,同时又需要超强的编程能力。但在当前,随着各大公司的AI框架逐渐成熟,以及一些深度学习框架的开源(例如谷歌的Tensorflow),AI技术下沉的趋势非常明显,早已从几年前的阳春白雪变成了下里巴人。
不幸的是,中国人干什么事都喜欢一哄而上,就像早些年全民学Android,学前端、现在又开始全民学算法。不是说人就应该逆趋势而行,但越是在大家都熙熙攘攘的时候,越是要保持冷静,越是要问几个为什么。一个很显然的道理是:如果一个行业突然涌进了这多人,至少有两件事可以肯定,一个是这个行业门槛肯定不高,二是根据供需平衡原理,这个行业的未来行情必然会下行,不信各位看看现在的Android开发是否还复当年的意气风发?
还是那句话:“只有在潮水退却的时候,才知道谁在裸泳!”

acecase 发表于 2021-7-11 08:11

我觉得第一个要说的事情就是:你两种岗位都找,又不矛盾……
事实上找工作就是这样的啊,别管黑猫白猫,觉得不太差就去面,那么多公司,我还没见过投了算法岗就不给你安排应用岗的……
等手里攒一堆offer,再上知乎提问:我究竟是选XX公司的算法岗好呢,还是选XX公司的应用岗好呢?顺便收割一堆膝盖

HuldaGnodim 发表于 2021-7-11 08:13

作为一个现任算法,答一发吧,工作之前和题主同样的纠结,现在做算法两年多了,感触最深的是,技术只能作为一个营生工具而已,可能我是搞技术里比较丧的,越搞技术,越觉得技术不值钱,我很喜欢有一个大佬的一句话,“资本不会对技术创新感兴趣。资本并不关心人类的进步与可持续性,资本关注的只有回报率,回报率和回报率。”,我开始试着做一个野生trader,于是现在几乎把大多数的精力转向经济学,货币金融之类的方向,当然一样会修习新的算法书籍,但是心理已经失去了对技术的任何向往和憧憬。最后总结一下吧,其实选择研发和算法都无所谓,那个能给你带来更多的资本积累选择哪个。资本面前,任何技术都是垃圾,希望不要刺激到那些技术控。

DungDaj 发表于 2021-7-11 08:20

首先从结论来讲,如果题主的描述属实,我觉得题主的计算机基础和算法基础已经足够进BAT非核心组的算法岗了,毕竟像我这种半路出家只读了半本统计学习方法的人就敢去投猪场和A的算法岗,最后还在猪场蹭了几个月的饭(不得不说猪场妹子真多,,,)
但是和题主比较起来,我还是有某方面的优势,首先,我当时面试的时候虽然没有实际的算法项目,但是有参加阿里的比赛,虽然没进复赛,但也是全套流程都走了下来,实际面试的时候面试官也会对这块问的比较深,像业务逻辑理解、特征工程、算法间比较等内容。
其次,我还有hadoop、spark、hive方面的工程经验,虽然不是很深入,但是一些简单的业务场景都是可以应对的,这一块不苛求深入理解,但是基本的操作和原理还是需要知道的,排名第一的匿名答主推荐的就很不错。
最后,正如很多人提到的,真正的算法改进大部分会招一些名校的PHD去专门做,我们在实际工作中做的很可能也是工程业务方面的内容,就像匿名答主说的,能干活才是硬道理,如果题主去实习过以后说不准会对这点有更深的体会。
PS. A场的HR说我不是17界应届生所以把我拒了,不知道是不是在安慰我,求知情人来解惑,,,

mastertravels77 发表于 2021-7-11 08:26

1)感觉开发岗把握更大些。题主主要经验还是c++工程方面,算法岗的话,c++写得一坨屎样也够了,进度催得急,上线,效果好,发完喜报,就完事了。升职加薪,后面的坑留给别人。大公司算法岗和工程岗分得很开是这样(BAT某司的某大算法团队)。如果有意投算法岗,天池,kaggle之类的比赛现在赶紧练练手开搞起来。毕竟跟实际工作场景比较接近:提出问题,然后各种数据分析,特征处理,模型ensemble,结果分析。最后上线,效果好,指标有提升,完事。工作中反而比较重实践,轻理论。有时候算法说不清楚,能调调参出结果也行。当然,我没有说理论不重要的意思。但随便抓个所谓的“算法”工程师过来,也不一定说得清楚特征归一化有啥用。做一个调包侠又不需要了解这个。所以,题主可以增强一下自信心。
2)too simple,something naive。开发岗和算法岗各有各的无聊。创新啊,科研啊,多美好。但公司只是雇你来搬砖而已。如果能兼顾业务和技术创新那当然最好,不能的话,上班还是要以业务为重。有些时候只能用用很low但业务上有效果的方法。
3)我勉强算是吧。
感觉更关键的是看题主个人兴趣和职业发展规划。题主看上去能力挺强的,两种岗位应该没啥问题。面试的时候其实挺看重基础和学习能力,工作具体用到的技能不一定刚好已经学过,这时候快速学习的能力就很重要了。

acecase 发表于 2021-7-11 08:29

搞算法的是有很多时间做开发方面的事情的,而搞开发的可没那么多时间去做算法方面的事情。

JoshWindsor 发表于 2021-7-11 08:39

建议选择偏算法工程的岗位
机器学习、深度学习库使得使用模型解决问题非常方便,并且调参也是熟能生巧的事情。但是工作中发现大部分公司的AI算法人员往往只会用python写些实验代码,缺少将模型线上化、服务化的能力。因为线上会考虑模型效率能不能满足要求,模型会不会有内存泄露,模型并行化能力等问题。偏算法工程既会focus算法的设计,训练,同时又会面临如何线上化的问题。
工作时间越长,公司对你的要求越是能不能实际解决一个问题(包括问题分析,方案设计,数据建模,上线使用等),而不是仅仅是会用TensorFlow训练几个模型。

DomDomm 发表于 2021-7-11 08:44

能算法就算法,最好是bat的。至少在bat算法工程师和开发工程师重视程度不是一个级别的。这么跟你说吧,拿百度研究院举例。一个应届博士算法工程师,两三年到t7很正常。t7年薪就有100w了。而且算法工程师升级没有名额限制。当然了前提是真算法工程师,别是一天到晚跑数据的,那就落下乘了。
页: [1] 2 3
查看完整版本: 男,985计算机小硕一枚,去争取算法岗位还是开发岗位?