
其实只要掌握了正确的方法,学习前端和学好前端就只是个时间问题。
1.梳理清楚知识体系框架
学习前端,不管是入门还是进阶,一定都要有知识体系建设的想法。就算是刚开始学,也一定要有这样的意识。前面说过,因为前端知识点多而分散,所以如果不能构建起自己对于前端的知识体系框架的认识,很容易就会不知所措,没了方向。
2.准备和基础的学习
HTML,CSS,Javascript这三样真的很重要,真的很重要,真的很重要,刚开始的时候你压根不用去管那些花里胡哨的框架,一定要把基础打好。框架再怎么更新迭代,最基础的东西还是这三样,只要你能掌握好基础,就等于拿到了打开前端世界的钥匙。
一定不要一直看,一直学,却不在具体的场景里去用,你应该养成拿自己学到的东西做些东西解决些问题的习惯。不断的做出东西,解决问题,不断给自己正向的激励,不断的完善自己的知识体系,一定要让自己有成就感。
找到适合自己的前端发展方向
前端是N类人的统称,是个很大的圈子很大的世界。很多时候的口水仗,作为围观群众的我看来,完全是两个不同路子不同关注点的人的打情骂俏,是不可能有结果的。为什么呢?打个极端点的比方,就本身职业领域这一块,设计师的关注点和开发同学的关注点能一样吗?如果一样,就不会在设计部门有“我要好好调教我们公司的开发”,同时技术部门有“我要好好调教我们公司的设计师”的说法了。你有看到哪个公司,设计师和开发一起其乐融融去团建的吗?我是没见过的,完全玩不到一块。
人类之所以强盛,就是因为人类本身具有多样性,有各种各样的性格各种各样的特质。前端要想繁荣,也是离不开各式各样的小伙伴在各自的领域和方向上发光发热。关于这一点,其实很多前端都是知道的,但是,遇到有些场景的时候就没有意识到这一点。比方说,偏数据的前端往往喜欢工程化,但是,如果是偏设计的前端,很多时候需要摆脱工程化思维,重视定制化以及特异性思维。但是这两类人就经常会一起争论某个观点,因为,虽然谈论的是一个东西,他们也都是前端,但实际上两人并不是一个路子。同一个路子的前端的争论才会有成长,不同一个路子只会一直吵下去。
如果从产出的代码比重来衡量这两类前端。偏后的前端提交的代码主要是JS和HTML,没错,有HTML,因为套模板,而偏前的前端提交的代码主要是CSS和HTML,这里的HTML往往是原型。在座的可以对号入座看看自己是哪个领域的。
不妨现在喝杯茶,仔细想想自己平时接触的代码,看看自己是从事哪个方向?
然而,放眼实际,很多小伙伴是一个人从头走到尾的,页面自己写,视觉交互自己写,数据交互也自己写。这种小伙伴在重视功能的中小企业或者非纯正互联网企业是非常受欢迎的,技能程度和企业需求也是契合的。加以时日,只要是情商正常,表达正常,在企业做个技术经理是毫无压力的。
但,人往高处走,尤其这几年优秀前端的用人荒,有些团队招人的招数防不胜防,所以,这些小伙伴就忍不住看看外面的机会,一些互联网大厂或者独角兽公司就是心仪的目标。然而,最终的结果可能会碰壁,为什么呢?大厂都是有前端团队的,是一种合作模式,如果你前端跨度很广,但是,每一个点都只是你自己以为不错的水平,其实你什么都不会,这不是全栈,是全蛋。原因下面几点:
-
人的精力是有限的
每天除了吃饭睡觉剩下就是前端的人是很少数的,就算有,能坚持个1年就很了不得了,所以,那些工作才3, 5年就自诩全栈的,只能说可能和我对全栈定义的标准不一样。 -
人的特质是固定的
有人内向,有人外向;有人细腻感性,有人洒脱理性;有人想象力丰富,有人抽象能力出众。前端作为一门承上启下的职业,承接的真是两个不同路数的群体。所以,你若想全栈,需要内外兼修,感性与理性并存,富有想象力,同时抽象能力和逻辑思维能力出众。这样的小伙伴有吗?有。但肯定不是你,因为如果你是这样的人,你根本就不需要看本文喝鸡汤。
所以,正确的发展之路应该是先找到适合自己的前端发展方向,朝着这个方面努力深入,同时扩大自己其他方面的成长。大的前端团队需要的是一专多长的人。
都有哪些方向呢?
我列举几个我知道的方向:界面展现用户体验和可访问性方向、偏后的js/nodejs开发方向、audio/video音视频等富媒体方向、SVG/canvas/webGL动效创意表现与数据可视化方向、工具建设文档管理内部站建设的前端运维方向。根据客户端不同,还可以分为PC端方向,移动端方向以及物联网方向。
我该选择哪个方向呢?
可以从下面几个点判断:
-
成长经历
比方说你以前学计算机的或者通信工程之类的,理工科气质浓郁的,建议往后走,JS要扎实,要懂至少一门后端语言,了解一定的HTML和CSS。如果你以前是学数学物理的,可以走动效数据可视化方向,因为这个领域除了JS扎实,还需要数学和物理比较强。如果是有设计背景的,可以用户体验和可访问性方向,优势在于设计敏感,关注情感体验,对细节把控拿捏更准确,理解并接受重复性工作。 -
个人喜好
喜欢编程喜欢工程化,偏后;我喜欢酷酷的动效,动效方向;我喜欢做面向用户的产品,让整个交互自然,则可以走体验方向;喜欢基础建设,则可以干运维。等等。 -
和谁玩得来
我和设计师们在一起的时候更自然亲切很聊得来,你应该走前端偏前的领域;如果你和后端开发在一起的时候更自然亲切很聊得来,你应该走偏后领域;如果你和设计和后端在一起都很亲切自然都玩得来,你应该做领导,统筹资源,协调管理。 -
个人能力
如果你能力一般般,只想混口饭吃,公司需要你哪个方向你就选哪个方向。如果你能力一般,编程实在学不来,但又不想被人颐指气使,可以试试小众方向,HTML可访问性,无障碍阅读以及SEO等,这是进大厂比较好的途径。就类似于,当年的我想上清华,只能选考古专业一样。如果能力很强,来,这位爷,这里几位姑娘全是本院的头牌,您随便选!
然而,现实是残酷的,不是说你选择了哪个方向,且适合自己,你就一定发展很好。
HTML/CSS的入门实际是很简单(但这种简单的意义非常深远,以后再聊),门槛很低,效果又是所见即所得,容易培养兴趣,所以茫茫中国,会写页面的人何其多。要想脱颖而出,要么有万人之上的深度,要么万人玩不来的技能。
万人之上的深度:勤奋刻苦会让你有所成,但是,想要登峰造极那必须是要有天赋的。所以,单纯想通过HTML/CSS走上人生巅峰,如果没有足够的天赋,以及超幸运的环境支持(公司写代码的全男的,就我一个女的,还美女),那么你会很快撞到人生的天花板。
万人不会的技能:在web领域,我觉得此技能为两块:一是扎实的设计功力,二是数学功底与逻辑思维能力。二者其一即可(兼得的跟我们不是一个档次的,不予讨论)。小时候的熏陶、绘画基本功练习,设计理论的学习,这些是很难被一般人超越的。所以,普通人想去转行做设计,除了一些罕见的具有天赋的人,往往会拿激情当才能,最后苦逼命!第二个,就是数学功底与逻辑思维能力。恰好,今天微博上看到了一张图:
虽然有玩笑成分,但不可厚非,工作之后的数学功力是个很明显的技能优势。恰好,动画,web矢量绘制需要用到大量的数学知识。于是,大家是不是看到了一个可以跟其他芸芸区分的方向?至于逻辑思维,更多涉及JavaScript以及后台开发等相关知识,即计算机背景优势,阿里的前端基本上都是这么一出。
于是,我提炼了下可以脱颖而出的技能组合:
技能 | 程度 | 境况 |
---|---|---|
设计 | HTML/CSS | deep | good+ | ![]() |
HTML/CSS | good |
![]() |
HTML/CSS | deep | ![]() |
HTML/CSS/JS | 数学、动画、图形 | deep | good+ | |
HTML/CSS/JS | 后台语言、服务器 | deep | good+ | |
设计 | HTML/CSS/JS | 数学、动画、图形 | 后台语言、服务器 | good+ | deep | good+ | good+ | ![]() |
所以,要想前端有所成,有两条路,一是往前,webGL, canvas, SVG领域,这需要对图形敏感,有设计感,有动画素养,有相当的数学知识,以及最重要的JavaScript控制能力;一是往后,走开发路线,工具,富应用,运维(数据统计、前端安全、前端部署)领域,这需要懂后台、计算机网络、逻辑思考能力,以及最重要的JavaScript开发功力。
无论那条路,JavaScript的掌握都是基础、都是中枢。So, 虽然新技术,新方向很诱人,但是,如果基础不好,走两步就会摔倒,吃力不讨好。静下心来,好好扎实前端基础再说,年轻当时,步子跨大了,当心扯着你未来老婆的最爱。