Web 前端的路该怎么走?

相关问题: 本科生如何系统地学习前端开发? - 网页设计 (Web Design)
关注者
10,450
被浏览
1,191,131

235 个回答

问题拆解

怎么走?往高处走。毕竟人往高处走,水往低处流。

但是对于高处的定义每个人都是不同的,但无非就分两个个方面:

  1. 财务上有更高的收入
  2. 个人专业在职业领域有更大的影响力

如果在这两个点上面能够做到的话,越高的收入,越强的技术,越大的影响力,那么无疑已经能够为这个社会做出很大的贡献了,已经站在一个高的位置了。也就达成了往高处走。对于这个任务的话,对于自己的当下的工作,行动该如何分拆。在开始拆解之前,先上干货,给大家分享一个免费的Web前端训练营!如果您是新手,或者刚刚入行的同学,三天全直播授课,还有技术老师在线答疑,推荐大家看看:如果在这两个点上面能够做到的话,已经站在一个高的位置了,也就达成了往高处走。当然做到这两点一定是需要付出很多的努力。如果你现在是前端入门小白不知道如何努力往高处走,不如跟着Web前端高级讲师学习,有专职教学团在线督促、指导、答疑,深度打磨课程体系,为企业订单式培养人才,更懂企业用人需求,以实战带学习,重点现在课程0元免费体验!


下面,开始进行跟大家做问题拆解,尝试逐步触达我们的目标。

深度与广度

据我这几年了解到的情况,不少的前端工程师其实都从其他的领域中进入到前端开发来,有人可能因为对写代码产生了激情,有人可能因为前几年互联网行业日渐长高的薪酬,有人可能因为对创造一些东西有兴趣,而 Web 前端是快速实现这些想法的工具,所以就不知不觉地加入到这方面的开发来了。

如果投身到这个职业上面的话,要探讨的就是这个职业的广度和深度了。也就是我在上面说的影响力。但不管在深度,还是广度方面,可能都会有所偏差。我也想在这个地方说一下我说认为的深度和广度。

在深度上可能有同学认为,应该多去熟悉几个前端的框架,工具,甚至深入去看相关的代码。但很多时候又感觉吃力不讨好。原因是,感觉花了很多时间去阅读,去研究,好像又不在实际的业务上面运用得上,似乎对于自己去解决一些问题没有起到太直接的作用。

其实,对于深度,除了去了解框架看源码这种窥探真相的东西,更多的应该是需要去了解浏览器实现,计算机原理,通讯协议等。在过去几年的面试中,会发现很多人对于一些基本的实现原理都不太清晰,比如说 css 的动画,浏览器会走哪几个步骤,渲染到给用户看,和 js 来实现的动画又有什么异同。好多人都答不上号。好多时候,这些问题并不能够在 Stack Overflow 上面找到答案,但是解决一个问题是否优雅,就得看自己能够熟悉各个模块的运作,而不是拼凑几个 Stack Overflow 的答案,或者找几个 node module 去解决的。久而久之,这样只会让自己陷入搬砖的境地,丝毫得不到提升。

从广度上可能有同学认为,去学习其他领域的知识,比如跳去学 Machine Learning 啊,后端的开发啊,或者是区块链相关的东西等等。但实际上到头来,又会发现一个问题,去上了一些 online 的课程,或者自己去找了不少的书籍资料等,过了一段时间之后,可能这些知识也忘得七七八八了。感觉上,学习多的东西,肚子里装的墨水了,但是实际上这都虚饱。

其实真正的广度,应该是基于自己的专业领域,比如自己是前端开发的,站在前端开发所熟悉的一些工作流,技术模型,去套入到其他的领域中学习。比如如何用 JS 的对象机制,原型链等深入理解,去进一步从侧面了解 Java Objective-C 中的继承,进而去熟悉一个新语言的开发。或者是根据自己的兴趣,激情(必须得有相当大的激情,而不是三分钟热度)从一些工具切入,顺着自己的兴趣和业务工作去了解一些新的开发工具,跨界的开发工具,比如 React Native,Electron 啊之类的。这样可以不失激情,也给自己带来启发,了解到其他平台(除去浏览器之外)开发,需要了解到的知识点,这样的话,自己的技术广度也会慢慢拓展开来。而不是满目地拓展。

在深度和广度的探索过程里面,因为涉及到的知识点很多,也再提一遍,在开课吧上面,有丰富的课程,也跟一线大厂的业务有紧密的结合,遇到困惑的时候,也有专家在线答疑。尤其是如果刚刚入行的同学,在基础相对薄弱的时候,可以通过大量的实践以及课程来提升自己的能力。深度和广度的学习都将会使个人专业在职业领域有更大的影响力,那么在这个领域要想当赢家,或者说要增大自己影响力,一定要看清形势,顺势而为,你赢的概率就大,逆水行舟,你就费力不讨好。无论什么行业,你不做到很好,就是没前景。所以我建议需要更高效的系统学习,深度打磨专业知识。开课吧无忧讲师的课程很不错,身边0基础学员也都说能学到很多干货,不妨你也报名试试,重点现在免费学习!

在职业发展的路上,也许会碰到一定的发展瓶颈,在求职的路上,转行升级打怪的路上,除了下面提及到的软实力,一些知识点,也需要持续地温故知新,我认为可持续地吸收不同的经验,还是非常有必要的。

软实力

此外,应该多培养的广度是非技术上的广度,而往往这些软实力才是让你银子日益增长的来源,毕竟我们是在一个人性的社会里面,而不是计算机网络里面。你需要日益打交道的除了计算机,还有人。

为什么说往往软实力才是让银子日益增长的来源呢?有一句话:『贫穷限制了我的想象』,其实这句话可以反过来解读:『想象力也许可以帮你摆脱贫穷』。突破了想象的限制,你就可以尝试奔着自己的目标努力前进了。这个时候的话,往往不是阅读一些技术书籍可以帮助到自己的。

扩展自己的兴趣爱好,尝试去阅读更多历史相关的书籍,纪录片等,会让自己的视野扩展开来的。有时候虽然看上去好像不太跟自己的直接技术挂钩。但是却会教会你如何突破认知上限,做到融会贯通。我自己的话,当时看了,而且就算是科技届也会有不错的书籍,开拓自己的事业『失控』,『人类简史』,『Code Rush』(一部纪录片),你会发现还有这样的活法,还有这样的事情发生过。

往往,在职场发展路上,往深处走,你都脱离不掉,技术管理,人员管理,个人社交管理等。而这些软实力,就得看你的谈吐,知识图谱,兴趣广泛度等的东西了。这需要的是年月的积累。有的人可能会觉得这会装,这会让人烦躁。但实际上,这些都是非常自然而然的事情,培养兴趣多元化,会突破你的想象力。如果你不想『贫穷』的话,多做做新的尝试,多开开脑洞吧!

----------------------------------------

说了这么多,也说说自己的职业背景

我也是从前端入行的,看着重构,混合应用开发,Action Script to JavaScript 的发展,也看着 Node.js, backbone.js to Angular.js to ReactJS to Vue, Dreamweaver to VScode, Webpack to Rollup 等发展过程。不说这些技术,工具谁好谁好谁坏, 他们都是特定的历史时期的必然产物。只是随着流行,以及人们的使用喜好,还有生产要求一步一步在推进罢了。

打滚过前端开发,后来我也接触了越来越多 iOS, Android 或者 Server 端的开发。最近发的时间比较多的是处理网络通讯,还有 Computer Vision 相关的东西。技术上基本上从浅层,到底层一路跑过来。越到后面,越发觉得自己的知识不够用。

而且现在也在创业阶段,所以去年顶着上,还得去见不同的客户,销售自己的产品呢。逼着自己提升自己的软实力。

虽然过程很辛苦,但是做这份总结的时候心里是很满足的,也不后悔过往的一些决定。希望能够给不少前端的同学,或者是还未深入到社会里面的同学们一些启示。

总结一句话:有深度有广度,软硬结合。祝你好运。

前天在车站上写的一些个人感想 ,有点点乱(好吧,很乱),我还是再整理一下哈哈哈。

入门

前端的入门可能会比较容易,例如一些最基本的公司可能就仅仅要求css和html就可以了,排排页面,重构一下页面。可能一个10来天的学习就可以很好的胜任了。

然后更加深入一些,能够使用JavaScript对页面的改动,运用一些能够加快开发速度的工具,如jQuery之类的。这时候的前端我感觉就可以胜任很多工作了,例如一些基本的网站开发,和后端的协同开发(ajax)什么什么的。然后我个人觉得这里就开始出现分岔了。

我个人觉得学习方向可以从广度和深度两个方向去看。

首先是广度,前端能够涉及到的方面有很多:

可能一直就是喜欢工程型的开发,想继续寻找更多的可以让项目开发周期更短,让工程师开发起来是thinking of programing。而广泛接触不同的工具,例如grunt gulp的自动化工具,sass less,coffeescript之类的预编译语言,或者是typeScript一类的js超集,还有一些全栈解决方案,meteor,phonegap之类的。

或者是就是想钻研框架,就想知道jquery的选择器实现是怎样的,怎样解决冲突,angularjs的框架思想和jquery怎么不一样……

又或对计算机网络,网站性能有兴趣。可以钻研http协议,ws协议,还有网站性能如何提升

还可以是就喜欢走前沿,html5的各种接口,svg,canvas。然后就可以顺便去钻研一下计算机图形学。

另外ecma2015,目标是构建大型应用,随着前端的能力越来越强大,前端要处理的问题也越来越多,因此语言特性增加了,这时候,需要深挖语言特性,需要处理数据结构

还有很多的一些,例如浏览器兼容的问题,兼容css3,html5的api(websocket,localstorage什么的)~。前端的安全问题xss,csrf,界面操作劫持等。都是可以深究的课题。

实在不喜欢,我还可以跳出html5的架构,我去玩玩flex架构的东西?

广泛去接触是为了让我们有更多的知识积累,去接受一些我们即将遇见的问题,去提出一些可能的解决方案。花费的时间可能不多,但是会让你受益匪浅。甚至了解的领域可以不仅仅是前端的,后端的,操作系统,服务器,什么都可以去了解,说不定哪一天你就用上了呢?

而知识的广度中,我觉得构建个人的知识结构图是很重要的(github上有开源项目就是类似这样的,fks,前段技能总汇)走了结构图,你就知道自己有什么东西是知道的,这样你会有成就感。有了结构图,你也可以经常性的回想一些已经了解过的知识。反正就是好处多多咯~

还有一个就是如何收集一些新的信息和知识:github开源项目,工作接触,系统学习某一块知识时接触,一些论坛和团队(阿里的d2,腾讯的alloyteam,),一些网站的问答和博客文章(csdn,cnblog,知乎)

而另一方面,学习的深度也是不可或缺的,这是为了使我们能够把表层的,停留在认知上的知识深化。这一步通过的是实践咯。开源项目,实习工作,学校项目,虚拟项目都是可以的。例如你想了解websocket的协议,要不就去为一个不支持websocket的浏览器写一个兼容库?这样你就深刻了解了ws的技术实现,也感受到了浏览器兼容的做法,连带着为了理解ws,http协议,socket你要不要也去了解一下?然后顺便来一下计网的osi七层模型,顺便买本http权威指南看一看吧……(๑• . •๑)

还有你对js有兴趣吗?毕竟jquery什么的可能会过时,但是基础的js你可是可以一直用的呢,(也不排除出来一个类似dart的,就取代js了,但是……我不信 )还有ecma2015诶,然后你对js的翻译过程有兴趣吗,我记得有开源项目js.js,可以去了解翻译过程。

或者angularjs,jquery的库的源代码也是可以读读。双向绑定的实现,脏检查,作用域……

回答的很多,我想说其实前端东西涉猎可以很多,也可以不多,因为界限很模糊。但如果自己喜欢,也有时间,其实可以把这些东西都了解一下,说不定哪一天突然心血来潮,就下定决心在某一个领域钻研下去了呢。安全性,图形学,数据结构,数据库,计算机网络~框架和语言特性的深入摸索~全栈模式的探索~webapp和hybrid app的开发~html5的新接口……好多好多。

我是个学生啦 充其量是个实习了半年,好不容易拿到offer了的应届生。自己也没有完全确定一条自己的前端之路,因为我每走一步我都会发现好多好多。我是觉得自己并不需要这么快就定下来,我喜欢前端,我也喜欢实现自己的想法,所以我想去了解更多可以实现我想法的工具,了解一些新的技术,钻研一些旧的东西。

一切迷惘,我觉得都是因为了解的不够多,时间还没到。这时候,需要积累。我相信这样积累下去,直到某一天,我会突然发现自己应该前进的路。