转行前端有哪些疑虑?
在人生的抉择处,寻求一些别人的经验和总结,无可厚非,但是决定了就一定要坚定的走下去,谨慎是为了更好的坚持,而不是放弃的理由。
写在前面:这里前后端指的是web开发的前后端。
1、前端岗位需求如何?前景如何?薪资如何?(这是对将转行业的必要考量)
2、是自学好?还是培训好?(抱歉,我是自学的,对于培训,下文不发表任何观点)
3、如何高效学习,多久能找到工作?
4、非科班会不会没发展?年龄大会不会被淘汰?
5、前端和后端哪个好?上手?发展前景?
以上这些问题,有些是1年前我想知道的,有些是1年前我所看到的文章里提到的,也顺便一起总结,我将用很长的篇幅从自己的亲身实践及各阶段的心路历程来论述。
关于我
先来看看我们是不是一类人吧,或者有多少相同点。
本人一般本科-电子信息专业,大学唯一学过与前端有一丢丢关系的课程,算是C语言吧(if、for这些语法和js接近)毕业后从事了近3年环保方面的工作,17年开始自学并转行,是一个不折不扣的非科班大龄零基础程序猿,不仅离开了自学的天堂(学校),而且已婚已育,常言道进入社会工作了就学不进去了,别说还有了家庭和孩子,对此我有一些不同的看法:
这就提到了一个关于兴趣和压力的问题。
1、兴趣:从小到大,总是被问你的理想是什么?我依然记得这些声音:我要当科学家、我要当发明家……我只能说当时教育的价值观和崇拜都是正确的,可是这虚无缥缈的理想是个啥?
兴趣远比理想更能发挥积极作用,更贴近实际生活
这就是命啊!记得当时是我弟弟去问他上海的舅舅,学点什么能有个一技之长,因为他是做互联网这块的大牛,自然推荐我弟弟了一些js方面的知识,说只要肯学,上手了薪资很高。
说句实话,一开始就是被薪资高这三个字吸引了,连前端是什么都搞不清楚状态,就这么糊里糊涂的开始了,靠着一点c语言基础,学起了javaSE,看看概念做做小例子,无比畅快,相见恨晚,后来才知道java和js完全不是一个概念。
2、压力:从小到大,就没主动看过书,上学完全是被逼出来的,而有了兴趣之后,再给你来点压力,即使是这样的我,还是坚持看了好几本书的(具体过程后面详细讲)
综上所述:对于一个无兴趣无压力的我,再多的时间也是浪费,而当你有了努力的理由,就别怕来不及,我把这个看作是开窍了,存在即是合理,之前的经历都是铺垫,不后悔!
是自学好?还是培训好?
我是自学了差不多4个月才找到工作的,说实话有点艰难。前端是什么?要学什么?能做什么?怎么去做?这些问题都要你自己一点点去寻找答案,所以入门推荐视频学习,有的老师还是很优秀的,讲起来幽默风趣,总会带一点自己的理解,不像书本那么晦涩难懂(有了一定基础绝对要去看书、看书、看书,书是人类进步的阶梯,一点没错)。培训就是你花钱有人带着你咯,就像你回到了学生时代(具体效果,去问培训出来的人吧)。这里有必要强调一下上文提到的兴趣和压力,如果没有这两点,你自学肯定不会成功,培训就不一定了,就像我不爱学习也考了个本科一样(是不是有点自吹的嫌疑?)当时我选择自学主要有两点:一、时间和家庭不允许培训,一大把年纪了还跑去花钱远离家庭培训4个月,有点作;二、如果没有自学的能力,即使培训出来也是废柴一枚,不如直接搬砖去了,干嘛换个地方培个训再搬砖,多此一举。
这里先插播几个例子,有时候真感觉自学党和培训党无故就成了两派
1、我有个同学也是毕业后工作差不多1年,培训转行的,培训到入职顺风顺水,我在决定转行时也与他交流过,他作为一个成功的培训党,自然推荐培训的,而且他说他们经理的意思是偏向培训的,至少培训出来的人一定能做些基础的活,而自学的就不保证了。
2、在我工作半年之际,有幸代表公司面试了几个前端(社会可能对此有误解,姑且用着这个名称),我就按照公司工作的要求和一些基础知识聊聊咯,因为我们公司嘛招的都算是新人,所以这里面肯定是泾渭分明。
A同学是自学的,我问及一些基本工作要求和基础时,他很自信地说:没问题,很简单。毕竟大家都是自学转行的,何苦为难人家呢,那就多聊聊吧?言语间,他说他经常逛各大博客、张鑫旭老师的网站、看慕课网(噢哟,不错哦,感觉自学能力很强),还说他目前在研究vue、react等框架(我问他那你觉得用这些框架有难度么),他说我觉得很简单,人家都给你封装好了,你就拿过来看着文档用就好了,前端的东西没什么难度,我还想学点后端的东西(这里我不得不吐槽他了,你TM啥都不会呢就拽成这样了,要不招你来当销售?)然后聊了那么久,最后我还是给他机会了,我和他说基础很重要,你面试的是前端,给你个PSD图,做个静态来看看先(结果你们肯定想不到。。。
我估计我这辈子都忘不了这货了)过了2天,按道理这时间很慢了,他发我一个网站,还备注了一大堆内容:说我这个导航是用的浮动布局的,轮播用的插件,悬浮的那个横幅我以为是固定在banner图上的,后来才知道是悬浮的,反正很简单就fixed就好了,就没做,下面的内容嘛全是选项卡,我就不做了(敢情我给你两天时间让你来给我指点迷津了?这里要骂人了啊兄弟们自己脑补,这种人千万不能学的,这就叫好高骛远、纸上谈兵)。
B同学是培训出来的,还有过工作经验,照理说能满足公司需求了,奈何她的观点又雷到我了。她培训出来做了2年切片,静态应该毫无问题,问及一些css知识却不会(是什么限制了你的能力),那再问问js吧,虽然这里用不到太多,姑且问问。来了,来了,大神开讲啦。她说js我基本没用过,反正现在cms模板里就集成了js插件,而且像阿里、腾讯、百度这些大公司都有自己的框架,前端的技术已经非常成熟了,我们没必要去学这些东西,只要用他们的就好了(你真的会用么?)
也难怪了前端经常被吐槽(包括我依然不能算合格的前端工程师),我当时看到了一片文章《写给那些转行做前端的人》,很明显他是招聘前端的大神,虽然文章开头有些极端的劝阻转行的人,可以说是非常痛心疾首,但是后文的分析和给出的意见还是很中肯的,我觉得兴趣也好,压力也罢,即使是高薪诱惑,能激励你前行的动力都可以,但是千万不要误解。只有菜鸟才分前后端,那是为了高效开发,分工合作,当水平到达一定境界后必然是全栈,不同的只是出身,所以不要认为会了皮毛就能月薪上万,高薪后端说不定样式写的比你好!
结论:不管你自学还是培训,最重要的是基础和不断自学的能力,把培训当敲门砖方得始终!
前端岗位需求如何?多久能找到工作?前景如何?薪资如何?
1、需求
1年前我也是网上查来查去,居然都说前端缺口很大,找工作很简单,这里补充一点我是无锡人(不能代表上海、深圳的实际情况)很显然我信了,在查阅这些问题的同时,我也寻求着学习方法,入门还是推荐视频学习,我看的第一套视频是51自学网(纯粹分享,后来接触多了觉得妙味课堂和慕课网更好一点)上的H5教程,里面涵盖了html、css、js大部分基础知识,还有实战,质量还是可以的,唯一不足的是老师说学完这套视频运气好可以找份5000左右的工作,我居然又信了(这里除了求职者,可能还有用人公司的问题,后文写到求职经历时再行说明)
我是个比较纠结的人,之后还看了很多html和css的基础视频,几乎都是讲解属性作用的,当然还有编码规范,我觉得不能相信一家之词,所以看了很多相同的视频,甚至还刷了一遍W3C的html、css、js,这里我可以很负责任地告诉你们,三人行必有我师,我们要站在巨人的肩膀上前行而不是看风景,当你集众人之所长的同时,潜移默化中扎实了你的基础(基础很重要,大公司重基础,小公司重实践,这是普遍现象,也是对于转行的人最残酷的地方,你会发现两者你都没有)一边面试,一边学习,我终于醒了,恍然大悟。
前端岗位缺乏的是中级以上的前端工程师,而不是入门级的,所以想光凭会一点html、css是找不到工作的,就算你背的滚瓜烂熟也没用,实践和理论不是一个概念,于是很多人会推荐新人,你直接去学bootstrap、vue、jq等等框架,这种急于求成也是要不得的,首先在基础不扎实的情况下你很难掌握,即使硬着头皮掌握了,开始了愉快的工作,你很容易迷失在自我感觉良好的幻境中,框架解决了大部分问题,疑难杂症问领导,而在中国估计一个小公司决定了框架后够你用一辈子,那你可算是真的完了。。。你的前端梦止步于此。
公司不可能养一个无法完成基本工作的人超过1星期的,所以你得把前端最基础的东西做熟练,才能找到一个公司慢慢进阶。我觉得首先把图切出来,然后做成静态页面,你别管怎么获取动态数据怎么放到服务器给别人看,你就疯狂做你的静态页面(一开始没有PSD就百度找点图片还省得切了),零碎的知识点总是容易理解的,有针对性的小demo毫无压力,当你真正开始化零为整的时候,css感性的一面就会暴露出来,各种属性相互影响,你要把这些问题完美解决,不能等到工作让你布个局你还百度怎么清除浮动,兼容性另说了(随着时代发展,大部分只兼容到IE8,可以说减轻了很多负担)这里为什么说是完美解决?因为css不像传统语言那么理性,同样的布局你可以有很多的实现方法,这里再强调一遍基础很重要,想做前端就一定要尊重前端,别人云亦云说css很简单。正因为它的简单,导致了它的不简单。
砖头式编程就是定宽定高,浮动,更有甚者直接绝对定位的,当你刚学会理论没有实践的时候也许你就会这么做,所以多练多总结才能配合使用好css的各个属性,做出一个合格的布局,好多后端就是被这种简单蒙蔽的双眼(吐槽时间:如果你去应聘一个公司,他觉得前端很简单随便找个人都能做,而且后端可以兼职,只是最近忙想找个前端做做样式的,千万不要去!!!
分析:会样式的后端到处都是,做的比前端还好的凤毛麟角,基本p8以上了,这样的公司你去了得不到尊重不说,让你改他们后端写的样式就要了你亲命了)目前我所遇到的后端通常学会个浮动就觉得拥有了全世界,有问题直接绝对定位,哈哈,你影响我?我飞到天上看你怎么影响我,什么这边怎么间隙小了,来个margin吧,怎么又大了?改个负值(我可真聪明,有些菜鸟前端都不知道可以用负值吧)文字居中直接<center>,文字滚动就<marquee>,还写样式,还用插件,都是傻瓜,这么好用的标签不用。
(因为这是写给转行同学看的,想来你遇到的不会比我强太多,如果不是这样,我只能两行老泪带着羡慕恭喜你)所以入门级的你看到这些布局和弃用标签怕不怕,就问你怕不怕,维护起来比登天还难,好不容易找到了修改了,你发现全是内联,没有类名,最多给个id,有多少就改几遍,抱怨?BB?要不你重写,本来样式就不归我后端管(能抱怨还是好事,我怕你被他们同化,这样的话你也可以努力一把偷师,从后端入手,不过老板可能要说你了哦,这些东西我们后端都会,你作为前端还改乱了,要你何用)
结论:说了这么多,无非还是告诉你们基础很重要,虽然实际需求的不是我们,但我们扎实了基础,假以时日我们就是需求对象。做前端就要尊重前端,中国目前还是后端地位高一些,主要发展早,对于客户而言,功能总是排在界面之前,你不能给人家一个赏心悦目却不能用的产品吧?早期程序员都是全栈的,既然现在随着发展分离出来,肯定是有他自身的存在价值和体系,技术体系日益庞大,即使站在巨人的肩膀上短时间未必能消化,才有了前后分工,正确理解他存在的意义,别自己限制住自己,不想当全栈的程序猿不是好猴子!!!
2、多久能找到工作
听到过很多这样的说法,前端很简单,自学1星期就能做网页,这其实也不错(只要有公司要你,出问题时,给你足够的时间去解决,或者有人给你顶着,和你合作的人不嫌弃你的代码质量就行)本着对自己和公司负责的态度来说,你至少静态页面要做的很6,像我上面提到的,做一个静态页面基本不会出现布局问题,也不用百度就合格了,具体时间看个人,我是用了4个月,主要当时很迷茫,完全和别的文章推荐的模式一样,面试要求这个了,我就去学这个,要求那个了,我就去学那个,当时我也以为自己css很牛逼了呢。
插播一下我的经历吧
(1)上文也提到,我刷了很多遍html、css基础,还看了《DOM编程艺术》成就感十足,做了几个静态网页,以为很牛逼了,就去面试了,结果人家问jq会不会用啊,轮播、放大镜、选项卡这些基本组件会不会啊?我是一脸懵逼。
(2)这次刷了《锋利的jquery》完全颠覆了《DOM编程艺术》这本书(当然看还是建议看的),取值赋值那叫一个6啊,开心,还用起了小插件,感觉自己做的网站有了动态效果(该不会这就是网上说的”动态网页技术”吧?哈哈)又去面试了,啪啪啪,上来先把自己会的展示一下,面试官问:bootstrap会吗?现在可都要响应式的。
(3)继续回去补响应式开发咯,学一学bootstrap,然后又遇到问vue会吗?react会吗?此处就长话短说了,还有问混合式app开发会吗?于是我还去学了基于mui的app开发,最气的就是被面试官喷前端是搬砖的,不懂后端做什么程序员之类的,那时候我很谦卑,还回去学mysql了,这个事情,后文总结的时候,我要拿出来吐槽一下某些用人单位的。
(4)最后我很感谢聘用我的第一家公司,但是我还是进去做网站的,刚进公司时,我还经常挑灯夜战,因为代码可维护性差呀,所以说基础很重要(强调了那么多遍基础,可能也不太好理解何为基础,例如:js里事件的冒泡与捕获,闭包,原型链机制,布局当中的BFC,垂直居中等一系列实践的问题),迷茫的我被牵着鼻子学了那么多暂时用不到的东西(不后悔啊,永远不后悔自己的任何经历,事实也证明存在即合理,在公司需求app的时候,我和同事用mui完成了跨平台的混合app并成功发布)
总结:集中精力去扎实基础,争取2个月找到一家做网站的公司,别没学好基础就随波逐流去搞各种框架,先了解,缘分到了自然会了,引用一下自己创建博客园时的签名”所谓境界,像宇宙般虚无缥缈,却又像宇宙般在岁月的长河中积累、沉淀,无声无息地壮大自己。有些事非一朝而能明了,有些理非一夕而能透彻。带着自信坚持下去,书读百遍,其义自见,境界到了,万物皆虚,万事皆允!”
大公司重基础也对学历和年龄讲究,小公司重实践经验,如果占其一,你还可以选择选择,既然两者都没有,那就没什么好考虑的了呀,破罐子破摔啊,反正转行找工作就是艰难,个人建议注重基础,未来才走得更远,然后拿出你态度去海投,没必要去迎合那些乱七八糟的公司需求,有些公司需求一大堆,又写着经验不限,恨不得你啥都会,记住真正有技术需求的,你那仅是了解的状态一眼就被看穿,而随大流随便写需求的公司往往都不和你谈技术的,所以会就会,不会就不会,正是应聘者和用人单位的这种不坦诚导致了现在的前端乱象(用人单位嫌弃简历上写的天花乱坠,什么都会,一问三不知的,应聘者也恶心那种后端为主,只是知道前端有哪些技术栈就直接罗列一下的公司)
吐槽时间:中国至少无锡,好多公司领导都是销售,就算技术经理也是后端多,如果到达这个位置还对前端一无所知,我觉得有必要喷一喷,你那么看不起前端,你招什么前端,让保洁阿姨兼职好了,我去应聘的web前端,你问我java会不会?别告诉你的java指的是javascript而不是java,我说我会js可以考虑学一下nodejs往后端发展一下,领导发话了啊,js只是运行在浏览器的一个脚本而已,你会这个有什么用,不知这位自称搞了10年技术的大佬断网了多少年,
这绝对真实,他应该不是技术大佬而是大忽悠,否则公司危矣,面试遇到这样的,你就直接拿简历礼貌的走人吧,记得带上简历(1块钱复印费呢),还有就是大部分不限经验的,都是培训机构,一般上来问一问你的情况(最好你不会,你要是会,他都能给你忽悠的不会了)然后就推荐你培训啦,这就是市场经济,如果你坚持不去培训就提前做好调查,别总是白跑一趟,有些明确的就可以拉黑或者屏蔽了。
3、前景
H5新增的api如视频、音频、canvas不要太强大哦,加上CSS3的新特性,可以说颠覆了html+css创造之初只为展示图文信息的初衷,走向了富媒体时代,js也因node的出现,向服务端进军(之前看到node之父自己数落了一下自己犯下的错误,然后宣布抛弃node这个亲儿子,具体还没怎么了解,不管怎么说js越来越强大了)。人类作为生物链顶端的生物,永远不会满足于现状,当互联网产品稳定成熟之际,拼的就是差异化、个性、创意,前端一定程度上也是个设计师,哎呀,这家伙真的是太花心了,难怪被世人误解。加上微信小程序和hybrid-app的出现(配合性能越来越高的硬件),ios/安卓大势将去,可能被前端收编,当性能问题不再是问题时,跨平台的特性将锋芒毕露。
4、薪资
从行业看,大数据显示金融业最高,然后就是IT行业,再从前后端看,顺便解决前端和后端哪个好?上手?发展前景?这个问题。
关于上手:当时,我得出的结论是前端入门简单,深入较难;后端入门难,扩散简单;(所谓难易,主要指短时间投入的学习成本,杠精绕道)前端三剑客HTML、CSS、JS基础的知识点很容易理解,所以说上手快,但是往往简单的东西,深入总是难一点,就好比巧妇难为无米之炊;后端则相反,因其发展较早,成熟而稳定,一上来就扔给你一大堆体系,要掌握很多知识点,但是运用熟练后,一通百通,天高任鸟飞 海阔凭鱼跃(从入门浅谈而已,大神勿怪,有更好的说法请指正)
前后端薪资和发展之类的比较,这里引用大神的回答(就不献丑了),以下总结几点
(1)前后端在大公司是一个批发价
(2)薪资取决于市场,也取决于个人工作能力和谈判能力
(3)不管是前端还是后端,都是敲门砖,未来走向高P时,他们是同一个起点(web开发)
贴一下原文地址前端工资比后端低吗?如何规划自己的职业
非科班会不会没发展?年龄大会不会被淘汰?
很多传统行业都有越老越吃香这一说,那小伙伴们肯定也想了解一下IT行业啊,是不是,未雨绸缪总是好事。1年前我也看了很多相关论坛,满满的负能量,差点动摇了我的心,下面划重点逐个击破!
1、程序员圈子小,做久了会脱离社会,难以与人交流。你确定你在别的行业就善于交流了?互联网无国界啊,这圈子还小?虽然氛围是有导向作用,但你既然察觉了就该自我调整,而不是怨天尤人。有些销售满嘴跑火车,几年下来,不撒个慌,吹个牛都不自在了,这是优点还是缺点呢?所以,要发挥人类强大的适应性,因地制宜,通常好的销售也是做足了功课,理论上不比技术差的。
2、经常加班,身体差。这也有必要解释?你忘了大学时,我们一起包过多少次夜么?你还说你要奋斗到天明。人家传统行业的销售还说整天胡吃海喝伤身体呢?你是不是在那羡慕?有空抱怨,不如一起去跑个步,健个身,我发现现在好多程序员身材都很棒呢!
3、吃年轻饭,容易被取代。随着社会老龄化日益严重,越来越多的年轻人更愿意到年轻的IT行业来工作,其实我也觉得IT行业更有朝气,就算搬砖也得找个舒服的地方搬吧。传统行业似乎真的是越老越吃香,一大把年纪啥也不做,整天絮絮叨叨,阿谀奉承,你再优秀也别想把他赶下台,但是你没看到他踩在多少人身上才上去的。所以说吃年轻饭是不对的,IT行业要做高管,也得学管理、大局观、战略部署、人脉资源等等这些和技术无关的,或者上文大牛写的职业规划里面有各种进阶方向,纯技术研究,年轻人能赶上你的,那绝对是天才,就别不服了。如果说你做了10年还一直在套人家的模板,用着老技术,那分明是你在抢新人的饭碗,还说被取代……
4、不是科班出身,不懂计算机原理(后面省略一万字骂人的话)论坛和贴吧确实有科班出身的优越狗,但是有好多大神都不是科班哦,就像大部分人的工作都不是大学学的专业,有空就补补计算机方面的书籍,看看底层,做个铺垫(防止遇到科班出身的优越狗)。
如何高效学习?
1年前看的第一套H5视频,还依稀记得老师说的一些话,这里先还原一下:
(1)多学、多看、多练,坚持每天打代码,即使是重复的;
(2)乐于分享、帮助他人解决问题的同时成长自己;
(3)先模仿,后创新,学会站在巨人的肩膀上;
(4)规范代码,方便自己复习和他人阅读;
以上这些,可以说是终身受用,但对于转行的小白来说,显得有点大道理了。反正我刚开始是完全想不到去上什么知乎、思否、github、博客园、CSDN、掘金等等这类网站的,我的生活——百度足以。所以这里推荐一下上述网站,有问题去里面搜搜,有时间去里面看看相应的栏目,有能力去里面解答一些相关的问题,把这些当做玩游戏做任务一样,慢慢你就升级咯。
除了关心我的人,能看到现在的小伙伴,一定已经下定决心了,分享一下我看过的觉得好的书籍(从左往右,我看的时候有点乱,现在我帮你们排好序了哦)
html:标签-特性-语义化(html和后二者戚戚相关,随着后二的进阶,自然而然地进阶)
css:css2基础属性-css3新特性-《css世界》深入理解css2属性-《css揭秘》玩转css3新特性
js:《DOM编程艺术》-《锋利的jquery》-《js高级程序设计》-《高性能js》-《js语言精粹》-《js设计模式与开发实践》
注:犀牛书我没看,不代表不推荐
有了一定基础还是推荐看书学习,更系统,看博客、文章就上文提到的知乎、掘金等等就不再贴链接了,有时候看视频学习没那么枯燥乏味,那就去慕课网、妙味课堂等等,当然那些大火的框架,自然是去看对应的官方文档和社区。
基础也很抽象,怎么对口找工作?
1、bootstrap以手机端为主,制作多端响应的网页。
2、微信小程序,用微信提供的框架制作只能运行在微信中,类似原生app的应用。
3、cms内容管理系统,用后台模板数据标签+静态页面组合成完整网站。
……
看公司主营业务,选一个提升熟练度,拿下第一份工作,不要什么都了解,什么都不会。
结尾
至此本文也该结束了,这篇文章是写给和我一样想转行的人看的,也许很多人比我们优秀,也有很多人没我们优秀,别信夸赞,别怕批评,前端路上You are not alone!
也以此文勉励自己,总结过去,走向未来!
原作者:周振超原出处:segmentfault