|
在算法领域从业5年左右, 面过不少本科生,硕士生。先上结论:不能简单地说适合与不适合。下面我将从目前就业环境和个人的角度分开解析。
一. 就业环境
2016年AlphaGo打败李世石这一大事是算法慢慢浮现在更多毕业生面前的分水岭。在2016年以前,我还在国外的时候,甚至更早一点的2013-2016年这段时间,大家那个时候学习的路径基本上是从传统的机器学习开始的,可能你会朴素贝叶斯、手写字母的识别等等,就能拿到不错的Offer。
围棋事件件给人们带来一个直观感受:算法人才在工业界的需求越来越旺盛。于是互联网的热门应用逐步渗透到高校,从2016年之后,越来越多的高校开始设置人工智能专业,以输送更多人才到工业界。这个过程是我们非常熟悉的: 过去的IOS开发、big data大数据的供求关系亦是如此。
这一过程持续到现在大约4年左右,基本上业界算法的岗位慢慢趋于饱和,但算法人才的供应还是十分充足,这必然会导致竞争的加剧。学生努力地向上走,于是,更高的学历,更亮眼的实习经历是获得更好Offer的一个重要条件。
这个过程是大势所趋,很多同学都看到:更多的岗位被硕士、博士同学拿到了。但这不意味着本科生没有机会。
二. 本科生个人的机会
虽然行业发展趋势摆在面前,但从我的观察和接触的同学来看,本科生做算法的也不在少数,他们之所以能通过层层选拔,是因为在大学四年,他们朝着正确的方向努力了,结果自然水到渠成。
那么正确的方向到底是什么呢? 辛辛苦苦整理了一下,大家觉得有用的话,别忘了点赞,收藏,关注噢,有问题也欢迎私信。
正如上面分析的一样,首先你要明白,如果你要从事算法岗位的话,你将面临地非常残酷而激烈的竞争:重点院校的计算机专业同学已经非常多了,再加上有无数正在转专业的同学。
算法只是诸多岗位的普通一种,不要以为是非常高大上的岗位。我见过不少算法同学,和他们交流中,隐约感受到他们心中的自持感,觉得比数据分析、后台开发高人一等。这种感觉是非常危险的。
如果只是算法岗位目前的薪水吸引了你,那么在真正从事这项工作的时候,你很可能会被一些繁琐的事项弄得心烦意乱,怀疑自己。比如说算法很多时候要清洗脏数据,分析系统的各种链路,查各种badcase, 如果没有兴趣支撑着你,你会坚持不下去。
另外,算法岗位也和其他计算机岗位一样,技术更新迭代非常快,2015年你会基本的LR,手推BP算法就不错了,到了2017年,你要懂得注意力机制, CNN和LSTM, 到了2018年以后,
transformer, bert等等,统统都需要你对前沿领域,工业落地保持关注和持续学习,没有强烈的兴趣支撑,越往后你就越感到吃力。
如果读到这里,你觉得你依然想走算法这条路,下面的内容值得你花点时间好好看看。
2. 大学的规划安排
既然本科就出来打算从事算法,那么这个大学学习生活你必然是非常辛苦的。
2.1 基础扎实
算法对计算机的底层功底有着一样的要求! 非常多的同学有一种错觉:我搞算法就不用了解计算机底层知识,比如编译原理、操作系统等等。大错特错!
业界真正做到顶尖的算法同学,对计算机的基础知识非常熟悉,不然很可能你写的代码在线上因为耗时根本就上不了。举个例子,在深度学习为了加速,往往不同的变量要求不同的数据类型、或者为了耗时减少,使用位数更少的整型表示。这些基础你不懂的话,难以做到顶尖。
算法的基础有两大块:计算机和数学。
大一,大二上,好好把高等数学、线性代数和概率与统计学扎实一点。我在高三放假的时候,就把大一的高等数学上册自学完了,在大一,把图书馆里面关于最新考研的数学试题做了一遍,然后通过参加大学生数学竞赛拿到一等奖,以此来告诉自己,这个是学扎实了。
数学学得越扎实,你会发现看算法的paper也好,研究算法的细节也好,你不会对公式发怵,这个优势将会在你做算法工作时慢慢凸显出来。
计算机基础知识上面,首先是不要纠结该学哪门语言入门,是C++还是Java, 始终记住:语言就像你现在说的中文一样,用着用着你就会了。当然,科班出身的话,大一需要好好把C语言学好。学好C语言,并不是要求你以后也会一直用它,而是在学习的过程中,你会了解基本的语法和数据结构,这个是最关键的。
有了这个底子,Python这类脚本语言你会看几个例子就能上手写。这才是最高心法。除了语言以外,《深入理解计算机系统》这个CMU使用的教材,能够帮你构建计算机大厦的基石。
在大二下开始,你会开始学习人工智能的课程,基础理论方面,可以去看《深度学习》等,实践的话,结合最新的paper, 通过github去学习就好。当然,如果你感到吃力,可以咨询我,只有针对每个人自己的背景不同,给出针对性的建议书单才是王道。
2.2 多写多练
基础知识牢固了还不够,作为计算机的同学,写代码是必须的!写代码就和写作一样,必须自己去多写多练。回想你当初写作文的时候,是不是也会有参考作文,然后模仿去写,慢慢写多了就有自己的风格。写代码也是一样!
在大一,大二的时候,多看优秀的源码,多写习题,掌握了基本的语法;在大三,大四,去参加比赛也好,校内项目也好,实习也好,通过在做真实的项目,进一步巩固和验证自己学过的东西。
当然,很多大学生会困惑:哪里去找这些真实项目呢? 这类问题,我会在以后的回答或者文章中写,欢迎关注。
2.3 实习锻炼
越来越多的同学会发现,拿了很多Offer的同学往往有一个共同特点:他们实习项目特别多。大家要明白企业招人的本质,不是让你来学习的,而是需要你有产出。
一般而言,往往实习过的学生,在经历了项目实战之后,他们的经验更加丰富,更加受到面试官的青睐。目前互联网的实习机会,基本在北京、深圳、杭州、上海、广州等,大家如果是这几个大城市的同学,可以利用寒暑假的机会去投实习岗位。
既然是本科生出来就想工作,那么牺牲一点休息时间,换来未来更大机会和筹码,是要经历的阵痛的。无痛苦,不成长。
更加核心和重要的回答,我写在其他帖子中了,大家可以看过去我的一些回答。另外,注意看我的简介,谢谢。 |
|