首先,请一定要重视方向的选择。方向即为赛道,选择一个合适自己的赛道非常重要。大家在转码的时候其实是要做两个选择:第一就是转码本身。这是大方向、领域行业和职业的选择。再做了这个决定之后,就要到了选择小方向的时候。这就像你选择了田径短跑作为你的职业之后,之后还要选择到底是跑100米,200米还是400米。这一次选择同样重要。大方向选择定下基调,小方向选择则决定了后续在这个行业内的生涯发展。博尔特最开始是跑400米的,但是后来发现在100米,200米更有天赋,于是果断切换赛道,最终取得了短跑界前无古人的辉煌成绩。对于我们也是如此 ,找准适合自己的方向,可以让自己职业生涯有一个良好的开端,更重要的,也是我们更关心的,方向的选择,也会直接影响我们能否去到想去的公司(不同方向岗位进大厂存在很大难度差异),拿到理想的offer。
其次,不存在“最好的"方向,一切要以合适自身出发。很多人认为算法岗就是转码最好的方向,位于转码鄙视链的最顶端。然而选择了“万千宠爱于一身”的算法岗,其实也是有诸多弊端和不利。我会在后面谈到具体方向时,再会详细说。而关于如何选择最适合的方向,先和大家分享一些方法论和思考的角度。
选择合适的方向,“合适”二字我觉得可以从三个方面看:
自身的兴趣
自己的背景
方向前景和未来职业规划的需求
这三个角度的思考,是分优先级的,排名正如上所示。下面会具体谈一下这三个角度如何具体考量。
第一,我认为最重要的,就是自身的兴趣所在。兴趣的重要性,本来已无需多言,不过我还想从另外一个角度来解释,那就是关于“学习”。
说到学习,似乎普遍会认为就是学习的就是课本、专业课程,就是无聊、枯燥、乏味的。我有不少朋友都在讲,我要是没有xxx压力 才不会学习。我会做我喜欢的事情。我个人认为这是个有些狭隘的理解。实际上,我们每天都在“学习”。因为从广义上理解,“学习”就是一个生物在应对各种环境时做出的适应性改变。我们在打游戏的时候,需要学习游戏的玩法;在打篮球的时候,需要学习各种篮球技巧;甚至在我们第一次用智能手机,用微信,都要学习它的使用方法,这些都可以称之为学习。然而我们为什么普遍不把这些事称作“学习”?我想,这就是兴趣的原因,因为我们对游戏感兴趣,对篮球感兴趣,对智能手机感兴趣。兴趣让我们在学习的同时,获得了巨大的反馈收益。所以我们不会感到,或是感到很少的痛苦。而我们之所以没意识到我们在学习,是因为我们片面的认为“学习”就是痛苦的,无聊的。看到这一点之后,其实也很好理解我们为什么不喜欢“学习”了,因为很多课程、专业课教的东西,我们根本就不感兴趣,为了学而学,没有兴趣的支撑,自然很难获得反馈收益。
谈兴趣对于学习的重要性,就是因为选择了IT技术岗这条路,要做好持续学习和探索的心理准备(无论在准备校招或者工作以后)。若做不到持续学习,在IT领域会非常容易落后,被淘汰。所以,需要有兴趣作为支撑,才有可能对技术有着探索和追求的精神,产生一种内驱力,同时也可以获得学习带来的反馈奖励。若没有兴趣,只会越学越痛苦,越干越艰难。长期下去,就会愈发的怀疑人生,厌恶工作,怀疑当初的选择。所以,一切要从兴趣的角度触发,这是所有的根源,在考虑其他一切因素之前(前景、钱景、竞争激烈程度)。请优先考虑兴趣。
有的同学可能想问,我该如何确定自己的兴趣?我对这些方向都不了解,谈不上兴趣。这里我就要谈一下如何发现兴趣的问题。我建议大家在初期做足功课,对每个方向做细致全面的调研。一方面可以自己接触学习一些该方向的知识,可以做个小的demo出来。另一方面可以在在网上咨询学长学姐、前辈,问问过来人的看法。(因为初学者很难对一个方向有着深刻全面系统的认知)。两方面结合,亲身尝试后就可以对这个方向建立起一个初步的认知。这时,是否感兴趣,就可以得出一个大概结论了。若是想比较对各个方向的兴趣强烈,也可以多尝试几个方向,综合比较。不必担心无效成本或是走弯路的问题。我认为这样的成本是有必要且有价值的。换个角度,这也可以扩展自己的知识广度。接触尝试多个方向之后,会对互联网的技术分工协作,有更全面的认知。我自己当初也是接触尝试了各个方向,AI、机器学习、安卓、后端、前端,最后才确定的方向。
第二,就是自己的背景。
自己的背景,包含三方面的背景:本科/研究生学校、专业、家庭背景。
学校专业的背景对于方向选择的影响很好理解。一般来说,学校越好,专业越靠近计算机,可以选择的余地就会越大。相反,这二者差一点,那选择的余地也会较少。现在大厂做校招,其实在简历初筛的时候,最看重的也是这两个。所以也建议大家结合自己的学校专业,谨慎选择,如果这二者条件较差,我个人不太建议名校科班扎堆的算法岗、后端。同时也要注意简历的书写。因为如果在学校专业上都没有优势的话,那就要多在简历上下功夫了。
说道家庭背景,可能会有一些不理解。家庭的背景也要考虑吗?我建议是要考虑在内的,虽然关系不直接,但是家庭背景在选择工作时,还是可能会有一定程度上影响。比较特殊的例子就是,家里有是从事相关工作亲人长辈,会直接给到一些建议。更一般的例子是家庭的的经济状况,会影响自己的选择。家庭经济状况好,承担风险能力高,自然可以凭兴趣,去冲击竞争更加激烈的岗位。因为家庭经济好,个人经济完全独立、赚钱的需求不强烈,有较低的试错成本。即使只能去小厂,薪水颇低,也是可以接受,完全可以工作之后再重整旗鼓,有了经验之后,再找机会通过社招进入大厂。反言之如果家庭经济情况较差,自身赚钱压力较大,那就可能要更加求“稳”了。
第三,就是方向的前景和自身的需求。
这个角度其实可以理解成方向前景,是否匹配自己对于职业规划的需求。这时候就要考虑自己对于工作未来的愿景是怎么样,规划如何。不需要想的很清楚,但是要有一个概念。比如想做后端的架构师,负责架构的设计。比如想压力小一点,不接触服务器和数据,几乎不需要为服务事故担责,等等。但是在思考这个问题的时候,一定是要对面临选择的方向,有了充分的了解。这又回到我上面谈到的第一点,在做兴趣考量时需要做的方向调研,只有对行业的认知充分,有更准确的认知,才能更好的去思考这个方向,和自己需求匹配度的问题。
说完这些比较抽象的选择方法论,现在再来看具体方向上的情况。我会主要结合自己的理解,去谈一些关于几个主流方向(前端、后端、算法)的认知还有选择的建议。
首先说我最熟悉的前端
前端工作的方向,我觉得狭义上说可以简单概括就是,开发浏览器运行代码来实现业务需求,以及如何让用户交互体验更好的工作。如何使得用户交互体验更好,就包括了前端性能优化等领域。很多同学对前端理解只是“写页面”的,这种理解并不准确。从广义上就是从“大前端”的角度,移动端非原生部分(原生指谷歌安卓、苹果IOS提供的软件开发套件开发出来的原生APP),一些为前端渲染服务的后端服务,都可以算作前端的范畴。甚至在一些大型复杂的网站系统中,需要有专门的“前端架构师”来负责前端的架构设计工作。前端早已不是当年,写完页面脚本,然后丢给后端的时代了。关于前端的特点和选择的建议,我尝试从初学者比较关心的角度来概括。
入门极其简单,学习五分钟即可写一个简单页面出来。页面中直接呈现自己写的效果,改完代码保存直接刷新即可生效。即所谓的“所见即所得”。对初学者的正面反馈极强。同时可以向不懂编程的亲友展示自己的成果,这可以给初学者带来极大的成就感和满足感。
前端没有语言选择困难症(后端需要选java、python、go等),统一使用javascript,简称JS。这里简单科普一下,javascript和java几乎不存在任何关系。所以不要问是不是要先学Java才能学Javascript了....
前端校招的知识体系比较杂乱,琐碎。但是深度要求会略低。尤其是CS专业相关知识的深度要求,例如操作系统、数据库等。但是也要适当掌握。
前端在学习和工作的初期,会遇到大量的样式、布局内容。这一部分非常琐碎繁杂,也算是入门的一个小槛。如果对于写样式深恶痛绝的同学,不建议选择前端了。
前端对于转码同学相对友好很多。一般大量科班出身的同学会主要选择后端、算法等。前端留给转码同学的机会比较多。所以竞争激烈程度也会小很多。而且现在大部分大厂,对于应届生前后端的薪资基本是一个档位(都是研发岗,几乎无高低之分),主要差别还是要看学历和面试评价。
再来看后端。
因为工作和学习上有一些接触,使得我对后端也有了一些粗浅的理解。在这里也是给大家分享一下。
后端主要就是开发运行在服务器的代码,当然这个定义并不是很准确,我上面也提到过,前端同样也可能在开发运行在服务器的代码。不过作为初学者,我们可以先这样简单理解。后端主要研究的的就是用API和“服务”来更好的组织业务数据的流转、储存。服务可以理解成,达成某个特定业务需求的程序,API可以理解成服务对外暴露的接口,作为获取的服务的输入输出。比如我们想登录某网站,就需要后端提供一个登录服务。通过登录接口,接收用户输入的用户名密码(收集、发送用户名密码的工作是由前端来完成的),通过一定的业务逻辑处理之后(校验用户名密码是否正确),返回给前端登录的结果,最后由前端显示在页面上,让用户看到。这其实也是一个非常简单的前后端合作的业务场景。
同样概括一下后端
入门相比前端存在一定门槛,需要学习很多编程语言和计算机基础的知识,对逻辑思维要求较高。同时反馈激励相对较弱,学习很久可能得到的成果只是几条命令行的输出。
要面对语言选择,大部分同学选择Java作为后端入门语言,我同样也是做如此推荐。Java作为后端业务开发最经典主流的语言,体系大而全,规范、生态完善。需要初学者踩坑的情况很少。而且可以很好的培养面向对象的思维(Java非常强调对象的概念,认为一切皆对象)。但是现在很多大厂已经在用go语言,这意味着可能要面对工作之后转语言的局面。不过也无需太过担心,技术思维、思想永远是最重要的,这些是跨语言共通存在的。有了一门语言的基础,再学习另外一种,速度也会快很多。
大家最关心的“卷”的问题。因为后端理论上天花板更高,而且离核心业务逻辑近。理论上发展前景更好,所以无数科班CS大佬都会选择后端,这无疑加大了后端的竞争激烈程度。这对我们非科班的转码同学是很不友好的。相比之下 ,后端进大厂的难度会高很多。而且后端普遍的工作强度和面对的工作压力会高于前端。
综合来说,前端虽然入门容易,进大厂难度较小,不过确实存在一些发展受限、天花板较低的情况。后端虽然天花板高,普遍技术水平高,离核心业务更近。但是存在入门门槛高,进入大厂竞争激烈,且入行之后工作强度和压力较大的问题。不过我觉得大多数同学不需要考虑天花板的问题,在考虑之前,要先能摸到“天花板”再说。我认识的很多高级前端工程师,自身能力是极强的,后端知识懂得也很多。我个人认为,他们即使当时选择后端,也能做的很好。选择前端是因为兴趣所在。所以又回到开头那句话,一切从兴趣出发。
而对于什么同学适合选择前后端,我进一步做了归纳和总结。
以下一类同学,我更推荐前端
1.专业离CS、软工较远,非IT四大专业(自动化、通信、计算机、电子)。或者属于IT四大专业,但是计算机课程较少,基础薄弱
2. 对前端、UI交互感兴趣。
3. 准备时间比较紧迫,以进入大厂为第一要素
4. 不喜欢太高强度的工作和压力
5. 有关系非常好、并且能提供一定程度的帮助和指导、已经入行前端的朋友/男/女朋友/前辈,(这对初学者非常重要)
而以下一类同学,我更推荐后端
属于IT四大专业,而且计算机课程较多,有不错的计算机基础
2. 对后端、数据、业务逻辑有着浓厚兴趣。
3. 准备时间比较充裕,并且有面对激烈竞争的心理准备和预期。
4.追求更高极致的生涯天花板,有着很强的抗压能力。
5. 有关系非常好、并且能提供一定程度的帮助指引、已经入行后的朋友/男/女朋友/前辈
最后再来说说算法岗。
算法岗一般并不算研发岗位。所以我单独拿出来说。
算法岗,或者说算法工程师,其实是个非常宽泛的概念。大体可以包含以下几类:
数据算法
数据算法一般指的数据挖掘和处理。一般在互联网非常常见的搜索和推荐业务,就非常倚仗数据挖掘算法的技术。例如抖音,怎么根据用户的观看数据,去推荐他可能更感兴趣的视频?今日头条,怎么根据当前用户画像,去推送他可能更感兴趣更可能点击的广告?这些都是数据挖掘算法要解决的问题。当然数据挖掘要解决的问题不仅限于次,只是为了让大家理解。
计算机视觉算法(CV)
计算机视觉算法简单来说主要研究的是如何计算机,或者程序,更好的理解图片的含义。这一技术也在很多业务场景中得到使用,比如相册的智能照片分类,图片的智能审核等。
自然语言处理(NLP)
自然语言处理主要是研究让计算机程序如何读懂人类的文章、文字。比如一篇文章所表达出来的情绪倾向,我们是希望借助NLP来帮助我们智能的推测出来。NLP的主要应用场景就是像弹幕、留言、评论的信息摘要和情绪分析。这样形成的大数据可以帮助互联网公司更好理解用户和完善产品。
这些只是一些关于算法岗各个岗位一些非常粗浅简单的理解和该快。大家如果感兴趣 ,可以找专门介绍的文章来看。这里我只谈一些我自己的看法和建议。
关于算法岗,这些年一直有“诸神黄昏、神仙打架”的说法,其实就是算法岗竞争极其激烈的一种现象。大家应该也有这种感觉,就是身边的同学,毕设题目大都是要向AI、算法上靠。论文题目大多是类似“基于深度学习/机器学习的xxxx设计”标题。读研到计算机、通信、电子一类的专业,研究方向也是很多脱离不开AI。AI算法的火爆程度应该是有目共睹了。这里我想说明我一直坚持的观点,就是不要人云亦云,无脑转算法。一定结合自己的兴趣、自身背景、行业前景,再做决定。千万不要跟风转,也不要看一些自媒体的炒作(AI博士、硕士毕业应届起薪xx万),就动了心,然后想转算法岗。当然也不是说,劝大家不要去做算法岗,而是建议大家一定要理智,充分认识到算法岗的竞争激烈程度,想清楚自己的情况。如果是抱着这种投机、跟风心理转算法岗,大概率是要失败的。
和前后端一样,我也给出建议可以转算法岗的一类同学
对算法岗和数学有着浓厚兴趣。这里强调数学的原因就是AI算法离不开数学,或者说本质就是数学。如果对数学比较抗拒的同学我建议还是尽早放弃。
985、知名211 的AI方向研究生,并且发表过有一定含金量的论文。
有过大厂的非划水算法实习,有实际的项目经历
有一定科研能力,有主动探索完全未知方向的自驱力
抗压能力强,抗风险能力强,能接受拿不到顶尖大厂算法岗offer,工作产出不被认可等负面结果
关于一些具体的主流方向就写到这里,以上更多是我个人的一些见解和建议。可能存在很多不准确、不客观的地方。所以也建议大家也多去看看别的关于转码方向选择的文章,所谓兼听则明,偏听则暗。
另外,写了这么多。只是给大家做一些选择的参考和建议,希望能帮助大家做一个尽量明智的选择。虽然在开头强调了选择方向的重要性,但是也不希望大家有很大的压力,陷入无尽的纠结和迷茫。似乎这个方向选则变成了人生头等大事(我当时可能就是这样)。但是现在回头看,有时候选择也是命运使然。在那个时期,你只能基于你当下的认知判断水平去抉择。如果事后回顾,要求那个时候做出高于当时自己认知水平的决策,是不合理的。所以也不必强求自己一定做出“最优”的决定。人也总是在不断犯错过程中认知世界,和修正自己的思维。更何况,这个转码方向的选择,也绝不算不可逆的选择。我们在工作之后,对各个方向有了更深的认知之后。如果有感觉当初选择失误,完全也可以再去考虑转去心仪的方向,即使成本略高一些,但是也绝非不可逆的事情。
最后,也还是祝愿大家都能拿到理想的offer,成功转码上岸。同时欢迎大家在评论区提问交流。