内卷预警,本科生真的很不适合算法岗位吗?
今天文章的灵感源于知乎的同名问题:本科生真的很不适合做算法吗?这篇问题我也回答了,只是知乎里比较简略,我做了一些加工,写成了本文。希望可以帮助到正在迷茫当中的同学们。
岗位要求是骗人的
前几天有一个同学在我的文章下方留言,说投了几家大公司,发现都写明了要求至少是硕士文凭。他自己是本科,觉得很苦恼。
我去网上搜了一下,这么说的人还不少,很多人都遇到了这个问题。对比了一下招聘岗位发现自己有一条或者是两条不满足,然后到处找人问,你看我这种情况还有机会么?
每当这种时候我都会有一种奇怪的感觉,先是感觉一群纯真的少年被无情地欺骗了,接着是感叹自己好像不知不觉间已经成为老油条了。我要说的意思很简单,就是大多数情况下我们可以不用理会岗位要求里面写的内容。
熟悉我的朋友都知道,我是本科生毕业,并且还是转行做的算法。在我跳槽去阿里的时候,我只在算法岗位上做了三个月。在这三个月里,我还是一直在写后端,一个模型也没做过。当时岗位的要求是什么呢?写着硕士文凭优先,有各类期刊论文的优先,要在算法、数据挖掘领域有两年及以上的经验。
讲道理,这三条我一条也不符合,最后还是通过了。我这么说绝不是突出我厉害,而是说明,岗位要求这种东西不能完全相信,看看就好。leader们在写岗位要求的时候都是凭着印象写的,无论是HR还是面试官,在评估一个人简历的时候,是根本不会打开那个岗位要求进行对比的,他只会根据自己的经验去评估一下,这个人的水平如何。只要他觉得你还可以,有吸引他的地方,可以面面看,就会给你面试机会。
我当时吸引面试官的点有两条,一条是ACM的亚洲区银牌,一条是阿里的实习经历。这两条一条也不在岗位要求里,但是它们就是很有说服力。我相信有说服力的内容还有很多,各种各样的比赛,各种各样的实习经历等等。这些东西才是我们竞聘的关键,而不是一个文凭。以前在阿里的时候,要是简历没亮点,清华的博士也照拒不误。
所以大家记住了,只要对自己实力有信心,完全不用理会岗位要求里说了些什么,大胆地去尝试、去争取。这些所谓的要求都是吓退弱者的,看了一个要求就不敢尝试了,连自己的实力都不相信了,不是弱者是什么?我们也许不是强者,至少不要做这种被吓退的弱者。
我说了这么多,答案已经很明显了,文凭并不是算法岗位的绝对硬性指标,本科生也是可以胜任算法的。
现状及原因
最重要的第一条讲完,下面来聊聊行业现状。我也算是待过几家公司了,的确不论是大公司还是小公司,算法工程师大部分都是硕士,而开发岗位则相反,大部分都是本科,硕士比较少。像我一样本科做算法的不能说是凤毛麟角,但肯定占比不高,我估计也就10%到15%,绝对的少数。
但是这里好像有点矛盾了,既然本科生也可以胜任,为什么在算法岗位当中的占比这么少呢?
这个问题背后的原因有很多,但是总结一下,其实都可以归因到一个原因上,就是缺少培养计划。本科的时候各个学校、学院都会有一个培养计划,也就是课表。这些是教授们选出来的一些他们觉得对本科生有用、可以打基础的课程。但是这个培养计划有非常大的问题,它和实际工作当中需要的技能几乎完全脱钩。计算机学院四年读完,涉及到编程相关技术的课程一只手都数得过来,其他的全都是各种各样奇奇怪怪的理论课程。
说句严重一点的话,四年下来,能够拥有独立开发一个完整项目能力的学生都不多,就更别说胜任算法岗位了。这里面不合理的培养计划是要背大锅的,我当初也是,大量的时间被模拟电路、电路原理、大学物理这样毫不相关的课程占据了。不仅会挤占我们时间,还会让学生形成逆反心理,你敢让我学这些没用的垃圾课,我就敢上课打游戏睡觉给你看。
也正是缺少培养计划,即使本科阶段想要从事算法岗位,想要学习相关的内容,也找不到一个靠谱的渠道学习。你问学长,学长也不懂,你问教授,其实教授也未必都懂,因为研究很多都是下面的博士生、研究生做的。导师只管申请经费、混迹学术社区。不信你们可以去试试,找一个学院里的导师,请教一下从事算法方向有什么好的建议。看看他们除了吴恩达的machine learning课程还能说得出来啥。也不是说这些导师水平不行,而是他们可能确实不了解工业界的情况和要求。
再反观硕士,硕士由于背负着毕业以及写论文的压力,用在实践上的时间要比本科的时候多得多。硕士的课程也少,大部分时间基本上都花在了实验室,给导师打工,做各种项目。而且硕士阶段也可以遇到高年级甚至是读博的学长,这些人都是摸爬滚打过来的,对于如何入门,如何实践有了不少经验,在这种情况下的学习难度不是本科生摸着石头过河能比的。
实习
对于算法岗位来说实习非常非常重要,这也是硕士的一个巨大优势所在。在不考虑导师拦着不让去实习的情况下,一个正常的研究生他最多可以有大三、研一、研二三次实习的机会。只要这三次机会当中有一次是比较知名的公司,就可以大大提升简历当中的含金量和说服力。
反观本科生只有大三这一次实习的机会,再加上大三的时候学到的东西还不够多,我在面试实习的时候连操作系统的课都还没上完,这是一个巨大的劣势。但不管劣势也好,不公平也罢, 想要不读研就入行,一定要珍惜这次实习的机会。如果实在是找不到知名公司的实习,规模小一点也没有关系,最重要的是一定要在实际的环境当中去锻炼自己,去理解实际的工作场景的算法工程师究竟做了些什么,有哪些知识点。这些都不是看看文章或者是听别人说就能搞明白的,还是要亲自去体会。
学生阶段对于工作之后的门道一无所知,实习是一个非常好的锻炼自己的机会。并且你会有非常大的容忍度犯错,因为你是实习生,你是新人,你犯了错误或者是什么地方没有做好,大家都会容忍你,并且愿意帮助你提升和成长。这是实习生巨大的特权,一定要利用好这次的机会。
另外一点是虽然实习生往往参与不到什么重要的工作,但是公司的一些技术文档往往是一视同仁开放的。可以利用实习的机会多读读公司的文档,多看看其他人的代码和项目,学习一下其中的经验。甚至还可以请教一下师兄们,面试的时候都会问哪些问题,比较看重候选人哪些方面,以及职业生涯的建议等等,这些都是花钱买不到的。
本科从业指南
最后,给那些立志想要以本科文凭入行的小伙伴们一点建议。
相信大家也能体会出来,算法岗位需要掌握的知识点比开发要多很多。按照最少的计算,也需要掌握Python、机器学习、深度学习、numpy、pandas、TensorFlow/Pytorch、算法数据结构这几项。而这几项当中只有数据结构是课上会讲的,其他内容全都需要额外自学。本科阶段时间本来就很紧,还要自学这么多内容,的确不是一件容易的事情。
在这里呢,我个人建议你们选择推荐、广告算法方向。这样的话在深度学习部分可以省掉很多学习卷积、RNN等模型的时间,而且其他方向相对来说对学历的要求比较高。学完了机器学习以及基本的神经网络之后,就可以去研读业内的一些前沿的paper和文章了。如果这块不知道怎么做,可以持续关注本号之后的更新。再之后,则可以去开始参加Kaggle或者是天池大数据的比赛了。
在参加这些比赛动手实践的过程当中,去学习Numpy、Pandas、sklearn以及TensorFlow/Pytorch这些框架。你会发现这些框架和库的内容虽然多,但是常用的东西也就那么一些,多参加几次比赛实际锻炼一下也就差不多掌握了。之后你还可以参加一下数模等一些比赛获得一些奖项,本身数模当中的很多问题很适合使用机器学习或者是深度学习来解决。有了这些经验之后再去找实习就容易很多了。
有了实习之后或者可以争取留任,或者可以在实习期间再去面试其他的公司。和其他的实习生小伙伴交流一下找工作的事,你会发现他们有很多的经验以及渠道分享。这些都是留在学校的学生没有的资源,有了这些找工作的旅程会顺利很多。
今天的文章就到这里,衷心祝愿大家每天都有所收获。
文章整体目录