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


作者:胡津铭,毕业于浙江大学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下载)

 

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值