写给前端应届生的职业规划建议

【前言】 近一年多的时间,笔者在公司中担任过应届生导师、实习生导师、应届生项目导师等一系列导师角色。期间,笔者发现一些即将和准备成为前端攻城狮的同窗其实并无明确前端真正的核心和定位,也没有给本身制定一个学习和发展的方向。当初选择前端这个职业,也仅仅只是为了找一份工做而已。笔者很想以本身的多年工做经验,为前端应届生们分享一下我心中适合前端工程师的职业规划,让你们对本身有一个比较清醒的认知,避免在之后的成长过程当中产生迷茫情绪。固然,笔者其实也才工做五年,能达到如今的技术水平和职级,应该算是发展上升比较快的,一些经验具有必定的借鉴价值。前端

前端的兴起

前端真正兴起和开始频繁出如今你们的视线里,大概是在十年前。彼时的 Web 开发基本是由后端主导,前端能作的只是校验一下数据、操做一下 DOM。(其中数据检验是 JS 产生的根本缘由:当时网络太慢,在服务端检验数据并反馈给用户,让用户知晓输入错误,这个流程太长、反应太慢,所以经过脚本在用户端完成第一步校验,既方便了用户,又减轻了带宽的压力。)即便 06 年 jQuery 发布并风靡全球,以及 XMLHttpRequest 被归入 W3C 标准,也没有改变这种情况。制约它进度的缘由很简单,由于不少事情前端 作不了 或者 作很差。随着时间的推移,近几年,Angular、Backbone、React、Vue 等框架陆续发布,让前端愈来愈正规化、体系化。此时虽然仍有不少事,前端 作不了 或者 作很差,但前端这个岗位却已变得热辣空前。那么,是什么推进着前端发展到如此大的规模和火热的程度?程序员

也许,你能够列举出不少各类各样的缘由,可是综其一点,就是 『用户体验』 ,是因为全部人对用户体验的重视,才让前端发展得这么迅猛,这么快地兴起。这里,可能要感谢 Apple,感谢 iPhone,感谢 Jobs,07 年第一代 iPhone 发布,正式引起了几乎全部人对用户体验的重视,从『只要能用就好』,变成『要好用我才买单』的心理。而,前端的先驱者们、浏览器的开发者们,也顺应了这个潮流,将一系列重要的能力加入了浏览器,加入了前端。编程

其中最重要的一项是 XMLHttpRequest,也就是 Ajax,它是富 Web 应用的基础,它让前端能够脱离后端的掌控,不用经过跳转的方式就能实现数据交互。感谢微软,感谢 IE,虽然被 IE 6~8 虐了无数遍,可是是它引入了 XMLHttpRequest ,引入了 Ajax,开启了富 Web 应用的时代,让用户体验大幅提高。小程序

而近几年,随着移动互联网的发展,多端多平台的需求愈来愈多,产品形态和数据分离,是形势所趋。而与此同时,移动时代对产品形态跨端、跨平台、多元化的用户体验要求,让自己就有跨平台特性的前端技术着实又火了一把,它让开发者有更多的时间和精力关注用户体验,并很容易保持多平台用户体验的统一(不一样平台用不一样技术实现,虽然能够,但成本过高);除去上面的缘由以外,前端技术自带的热发布、热更新特性,能在及时更新业务需求的同时快速修复用户所遇到的问题,也是你们选择它的一种缘由。虽然另外还有不少零零总总、各类各样的缘由,再促使着前端成为当前最火爆的几个职位之一,可是最根本的缘由仍旧是你们对用户体验的要求。后端

从上面能够看出,前端的兴起源于全部人对 用户体验 的重视,而火爆更是因为全部人对 多元化的用户体验 的关注。固然,用户体验不仅只是 UI 漂亮、好看,它是多方面的,例如视图的加载速度和流畅程度,这些取决于你选择技术的编码体积、运行效率等多种因素。说白了,前端的目的就是 让用户用得爽,那么 用户体验 必须是重中之重。微信小程序

说了这么多,其实有一个很重要的点没有提到,那就是 CSS。注重用户体验,首先你要用界面要有 UI,HTML + CSS 做为最简单的 UI 构建方式,让前端的 UI 开发成本低到无与伦比,而开发成本低才会有更多的时间和精力去注重用户体验。同时,如今 CSS 也有相应的框架,像 PostCss、Sass 等,更进一步下降了开发成本,释放了开发者的时间和精力。设计模式

前端兴起这十年,也是用户体验飞速增加的十年。无论是技术完善度仍是从业人数,前端这个方向受到了足够多技术人员的关注,同时也受到了足够多企业的重视。通过前端人不断的努力,如今的状况又如何呢?浏览器

前端的现状

提到现状,必须先提到一个概念 大前端。因为近几年互联网的发展,尤为是移动互联网的发展,有的大前端概念将 Native 纳入前端的范畴,有的大前端概念将 Node 甚至只渲染页面的 PHP 纳入前端范畴,但无论怎么说,笔者认为 大前端 是将来的一个趋势,将最终目标(提高用户体验)一致的技术归类到一块儿,让开发者清楚本身的最终目标是什么,要怎么作。固然,也正由于这点,做为一个前端工程师,若是你想更好的发展,你应该有更广的知识面,包括移动端知识、服务端知识。这些知识结合你的前端技术,才能更好地实现优秀的用户体验。微信

抛开大前端,单谈前端,从前端架构层面谈,最近比较流行的有四个:老牌劲旅 jQuery、最近火得不能再火的 React、Google 精品 Angular 以及 MVVM 框架 Vue。如今几乎全部的项目都会在这四种架构方案中选择其一做为基础,进行业务开发。四种框架,四种不一样的思想,简单来讲:jQuery Dom 驱动的思想深刻人心;React 则推崇组件化,万物皆组件;Angular 则把 MVC 在前端领域发扬光大;而 Vue 则是以数据驱动为核心的 MVVM 架构。做为一个前端新人,不可能很快就理解全部知识和思想,只能一步一步来,先把你在工做中所使用的框架理解透彻,再去思考和学习别的。说实话,会用和理解的差距很大。网络

在这里,可能会有个疑问,上述四个架构,都很火,可是哪里涉及到用户体验了?是的,这些架构都没有直接涉及到 UI。可是就像足球,没有勤奋的训练和优秀的战术,再好的11人也踢不出好的比赛同样,这些架构从开发成本和开发体验上,下降了开发者编码和维护的难度,让其在 UI 的用户体验上的付出,事半功倍。固然,框架在编码体积、运行效率等多个方面影响了最终的用户体验。

上面所说的是,当前前端的一大现状 —— 框架横行,如今不多有公司、有工程师用纯原始的方式撸代码了。而前端另外一大现状就是 —— 移动为先。缘由很简单,随着移动互联网用户的暴涨,各个公司的产品都是移动为先,技术跟随着产品的步伐,也必须移动为先。这时,为了解决多平台的问题,Hybrid 方案脱颖而出,包括传统的基于 WebView 的 Hybrid 方案(例如 Cordova)和 React-Native 等一系列技术方案。在这里我就很少说了,关于移动前端的内容最近充斥着各类技术论坛、交流群、公共号,具体的,你们能够本身亲身去了解。

最后,对于现状,我想你们可能最关心的实际上是职业形势。因为前端的兴起,前端人才市场至关活跃,平均薪金水平也是名列前茅。与此同时,前端的技术入门比较容易,形成另外一个极端状况:人员泛滥、人才稀缺。这种状况,一方面因为前端发展太快,很难短期掌握所有知识;另外一方面,高等院校并无开设专门的前端专业,你们更可能是自学,野路子不少。所谓乱世出英雄,这样的前端大环境或许对一个新入行的同窗更有利。固然,在如此『乱世』中,一个好的职业规划,才能避免『误入歧途』,保证自身顺利地成长。

如何作一个职业规划

上面讲述了前端如何兴起和前端的现状,下面将基于上述两点,分几个方面为你们提供一些有关职业规划的观点,但愿对你们有帮助。

肯定方向

作职业规划的目的是避免迷茫,而避免迷茫最有效的方式就是肯定明确的方向和目标。

对于任何一个技术岗位,都有固定的两个方向:技术专家(架构师)和 开发经理。前者偏重技术,须要你在当前领域钻研得很深;后者偏向管理,须要你在对技术有很深掌握的同时,能够带领团队完成项目的开发。固然,二者并非鱼与熊掌的关系,你能够同时成为技术专家和开发经理。

对于技术专家和开发经理两个方向的选择,更多取决于你自身在工做中多巴胺的分泌状况。当你专研技术时,多巴胺分泌得更多,感到更兴奋,或许你会很容易成为技术专家;反之,当你跟团队一块儿作业务时,多巴胺分泌得更多,更有得到感,那么你能够尝试向开发经理方向发展。固然,你也可能作什么都没有分泌太多的多巴胺,那么,你能够在尝试一段时间后,转型其余职业,例如产品经理。前端做为核心是用户体验,与用户最近的工程师,转型产品经理,阻碍会小一些。何况,文艺型前端布道人豆瓣前端负责人张克军认为,前端工程师正慢慢演变为产品工程师,前端和产品离得确实很近。

当你选择好一个方向后,你就要朝着这个方向一步一步进发。丹尼尔在《一万小时天才理论》提出一万小时定律,即要成为某个领域的专家,须要积累一万小时。固然这只是个概数,不过天天花更多的时间去学习和实践,确定是最有效的。这里,成为技术专家和开发经理过程当中,关注的点略有差异。成长为技术专家,要更多关注技术自己的实现,包括逻辑、架构、设计模式、方法论等;而成长为技术经理,则要更多关注技术开发的过程,考虑如何提升开发效率、下降开发成本、优化开发质量等等。不一样的人,精力是有限的,选择性关注一些必要的方面,对自身快速的成长是颇有必要的。

作业务仍是作架构

作业务,时间要求比较紧,代码质量要求高,可参考的代码比较多,业务知识须要学习。作架构,时间稍微自由,对经验要求比较高,无可参考代码,专业基础知识须要深入理解;最主要的,作架构的你既是开发,又是用户,仍是 PM ,只有 80% - 90% 的明确目标,并在开发过程当中不断微调最终的目标。

对于一个新人,其实不用纠结,作业务才是好的选择,并且作 技术含量高使用流行技术 的业务才是最好的。缘由很简单,架构的最终的目的是解决业务当中的问题,你没作过业务,哪能知道业务的问题在哪,你都不知道要解决什么问题,如何作好架构。因此,从业务作起,是新人最好的选择,也是惟一可行的选择。而选择有技术含量、使用流行技术的业务的缘由更多在于成长,这样你的成长可能会更快、成长道路可能会更直。固然,这只是『可能』,不一样的人适合不一样的业务,因此不要强求必定『技术含量高、使用流行技术』的业务,更多的而是改变本身,去 适应团队适应业务,这样才能 更快地成长

事实上,不少时候,你会遇到很业务工做很繁重没有额外时间学习的状况。而如何在这样环境中更快地成长呢?说白了就是『抄』,不不,是 参考。将学习融入到工做中,是最好的方法。作新项目,参考老项目代码;作新需求,参考老需求的代码;没有同类型的代码,参考别的业务的代码。参考前人的经验,在巨人的肩膀上,成长才会变得更快。同时,你的导师和你的伙伴,也会在业务中给你指点,帮你快速解决成长路上的问题。

在这里,总结一下,在繁重的业务环境下快速成长,你须要 很优秀的学习能力很持久的耐心 以及 很好的导师和伙伴,这样才能在技术成长的路上事半功倍。

技术的学习

说了半天,到了最核心的问题了,对于一个新人如何学习技术?笔者给的建议是:千万不要囫囵吞枣,先把当前使用的技术学透用熟,才是最重要的;千万不要在还没把当前使用的技术吃透以前,去学新的东西,无论新的东西有多火。就像上文所说,不一样的框架,有不一样的核心,有不一样的思想。两个框架代码类似之处的思想不必定类似,例如 Angular 和 Vue 都有双向绑定,虽然效果类似,可是实现思想和内部实现方式是大相径庭的。还在入门阶段的你,会被各类思想充斥头脑,反而会更不清楚。

必定的时间后,当你理解透一个架构体系后,你能够 类比地去看 更多的架构体系。这时候,你会发现不一样架构不少东西都是异曲同工,理解得很快。

固然,理解透一个架构体系,有人须要一年,有人须要三年,还有人可能须要更长时间。为何有这么大的区别呢?由于有些人在开发中,并不认为完成就能够了,会在开发中,追求代码的优美,会不断优化本身的代码,让本身的代码性能更好、可读性更高,并经过长时间的积累,达到 量变致使质变 的程度。即便一个特别聪明的人,没有『量』也不可能『质变』的,只不过他的量可能比其余人少而已。

要提醒的一点是,学技术,必定要结合你所在公司、团队的技术栈。例如,去哪儿前端应届生会在进入业务线前,进行3个月的脱产培训,2017年的前端培训课程内容中涉及的技术主要是 React 和 React Native,而去哪儿业务的技术栈也大可能是 React,那么做为去哪儿的前端应届生,你优先学习 React 的技术体系是事半功倍的,既有前人能够问,又有项目能够实践。

固然,在学习架构的同时,不要忽略两样最基本的东西,一个是 技术基础,一个是 开发规范

技术基础是一切开发、架构的前提,没有一个好的基础,是没法让你自身的技术水平达到足够高的维度。例如你对于继承理解的并不透彻,你很难理解清晰 React 的内部实现。

对于开发规范,笔者在带应届生时特别注意让他们遵照。代码规范比比皆是,可是不多有人严格遵照。究其缘由,可能是在代码规范制定以前,已经有本身的一套代码习惯,很难短期改变本身的习惯。而应届生,通常来讲代码并很少,尚未造成本身的编码习惯。这时候,开始遵照必定的规范,会促使他们养成一个较好的编码习惯,为后续的成长打好基础。下面,列举一下开发规范的几点好处,让你们明白代码规范的重要性:

  • 规范的代码能够促进团队合做。
  • 规范的代码能够减小 Bug 处理。
  • 规范的代码能够下降维护成本。
  • 规范的代码有助于代码审查。
  • 养成代码规范的习惯,有助于程序员自身的成长。

这部分最后,推荐一些学习技术的好地方,例如情封大大三年不停更的《前端早读课》、阿里大漠(不是大漠穷秋)的 w3cplus.com、微信公众号《前端圈》、《前端之巅》、《Node 全栈》,固然还有公司内的 《Qunar 技术沙龙》微信公众号,笔者所在团队 YMFE 的博客 blog.ymfe.org 等,都是学习技术的好地方。

主战场 —— 移动混合开发

随着移动浪潮的兴起,业务在移动端App 的需求量迅速扩大,应用迭代更新的频率也随之极速攀升,但与此同时纯 Native 的开发和更新成本成为了业务增加难以逾越的瓶颈。所以,引入一种开发更高效、成本更低的解决方案势在必行。

在当前的移动互联网环境下,iOS 和 Android 上的 App 已经成了每一个互联网产品的标配。若是一个用户端产品并不提供相应 App 版本,几乎会直接定义成一个不完整的产品。而被互联网人尊为铁律的『惟快不破』—— 快速开发、高速迭代、低成本上线,同时也是移动时代每一个开发团队所追求的目标。综合以上两点缘由,『Native 搭台,Web 唱戏』的 Hybrid 开发模式,以『快』的特色赢得了你们的青睐,并纷纷投入大量开发力量,使这种开发模式迅速走红。当前最多见的技术架构方案有如下三种:

  • 基于 Web 的 Hybrid 解决方案:例如微信浏览器、各公司的 Hybrid 方案
  • 非基于 Web UI 但业务逻辑基于 JavaScript 的解决方案:例如 React-Native
  • 基于 Web UI,可是为了追求运行效率,对 UI 展示逻辑和业务逻辑的 JavaScript 进行了隔离的解决方案:微信小程序

对于一个前端,笔者感受每一个人必须了解这三种常见方案的实现方式和优缺点,这样才能在开发移动端业务的时候,更为清楚本身所要注意、所要学习的地方。固然,仅仅了解实现方式是不够的,你要有环境去实践你学习的东西。再拿去哪儿为例,去哪儿如今大多数业务都是移动端的,Hybrid 和 RN 方案都在被使用。因此,做为一个应届生,你颇有可能去作一些 Hybrid 或者 RN 的项目。作 Hybrid 项目时,你更多要考虑的是『如何高效地操做 Dom』;反之,作 RN 项目,你更多要考虑的则是『如何减小和 Native 的通讯』。这两点,最终都会反应在项目的用户体验上。

前端中的『另类』—— Node

对于 Node,做为一个前端,应该并不陌生。Node 最大的卖点在于彻底异步的 I/O 模型,相比于阻塞 I/O ,异步 I/O 模型极大提升 Web 服务的并发性。所以,前端均可以本身开发服务端了?

这样认为的同窗,笔者只能说,你想多了。Node 是能够开发服务端,可是不表明全部前端均可以使用 Node 去开发一个庞大业务的服务端。你去知乎搜索使用 Node 开发服务端的相关问题,一部分人会说 Node 不能替代以前的服务端语言,另外一部分人会说什么也阻挡不了 Node 在服务端的脚步;同时有不少诸如 Paypal、阿里这样大公司大规模使用 Node,也不少公司在落入 Node 深坑而不起。不论争论如何,笔者认为,Node 是否能写服务端,主要在于使用 Node 的人是否有服务端的思想。开发服务端和开发前端是彻底不一样的思想,服务端更注重效率、更注重稳定、更注重高并发状况下数据的处理,用前端的思想去开发服务端显然是不行的。固然,成功的案例中,Node 也更多运用在页面渲染这一层,配合前端更快的渲染页面,提升用户体验;而复杂的数据逻辑,仍是用传统的服务端语言进行开发,毕竟技术成熟、运维成本低。

这里,会出现一个问题,我只是前端,需不须要去学习 Node?笔者的答案是 须要。前端兴起已经不少年,已经从游击队乱枪打鸟的阶段逐渐变为规模化、工程化的时代。在这个时代中,尤为是在工具和流程方面,Node 起到了很大的做用,扮演很重要的角色。诸如 Webpack、Gulp、NPM 这些工具,他们被运用在各个公司的各种前端项目中。学习 Node 其实就是去学习前端的工具,去学习前端的工程化。

固然,若是你立志是全栈,或者想作服务端的一些工做,再或者想经过 Node 学习服务端的技术和原理,均可以去学习 Node。请相信笔者,你不会失望的。

前端一直在『造轮子』中不断前进

造轮子 的意义是从新实现已有的功能,以达到更好的效果。这个词语,常见于技术圈,尤为是前端圈,逐渐被人贬义地用来『嘲讽』一个从新实现已有功能的工具、框架以及方案。那么,造轮子到底是怎样一种行为?

首先,笔者并不排斥造轮子,至少有一位大神造轮子造得很成功,那就是 Linus Torvalds。Minix 很差用,就造了一个 Linux;Bitkeeper 中止受权,就造了一个 Git。而且两个新『轮子』已经成为世界上最好的轮子之二。这种创造性的造轮子,是使人赞扬的。

其次,不一样的技术体系,互相学习,参考对方的思想,造本身的轮子,也是一个很是好的想法。尤为是前端,它经过学习其余语言、体系的架构方案,丰富自身,短短几年就上升到很高的高度。能够举得列子不少:例如 Angular 的 MVC + DI + IoC 的模式,不少人会直接想到 Java 的 Spring,甚至 Angular 也包含 AOP 的编程思想;再例如 MVVM 双向数据流的模式,自己就是微软的 WPF 首先提出的。轮子能够造,对开发有意义便可。

最后,你们 反感造轮子,其实更多在于反感造一个没有任何创新的轮子,还每天处处宣扬本身的产物。你能够本身造一个没有任何创新的轮子,用来学习造轮子的过程,同时这也是深刻轮子最好的方式,没有之一。当你了解当前轮子的根本构造以后,你就能在这个基础上进行更多的创新。

其余方面的学习

做为一个前端,最该学习的两个方面是 产品设计 。学习产品思惟,会帮助你从用户的角度审查你开发的产品,找出用户体验不优、交互很差的地方;而学习设计,则帮助你分析不优的地方的缘由,并找出解决方案。固然,每一个人的精力有限,不可能把这两个方面学得特别深,但最好都要有接触,有必定深度的学习。

小总结

前文并无直接跟你们说明怎么作职业规划,而是从发展方向、技术学习、主要业务场景、NodeJS、造轮子问题等多个方面,来给你们分析:做为前端,哪些须要作、哪些不须要作、哪些必须作、哪些能够作。你们能够根据本身的兴趣、能力等特性,而且和本身在公司所作的项目结合,决定作哪些、不作哪些、强制本身作哪些、有空余时间作哪些等等相似的决定。这里能够举个例子,例如:个人目标是成为一个技术专家,所以,我要深植业务一到两年,严格控制本身的代码规范,深刻了解 React 体系,在移动端主攻 React Native,并且有时间看 Node 及 Babel 相关工具,目标是完全理解 React 的技术实现和 Web Component 的开发思想。当你有这样一个目标时,你能够清楚知道本身作事的目的,能够清晰看到本身的成长。

要注意的是,若是你已经有工做的话,你的职业规划绝对不能脱离你如今的工做。实践出真知,工做带给你的实践环境,才是你成长的养分来源。

前端的将来

对于前端的将来,或者说是互联网技术的将来,我比较认同阮一峰老师的一个观点:未来程序员只分为两类,端工程师云工程师。端工程师,直面用户,为了用户能更好使用产品而殚精竭虑,包括传统的前端、Native、AR/VR、TV 端开发等;而云工程师,直面数据,将冰冷冷的数据转化为与用户息息相关的产品,包括分布式、大数据、机器学习等等。

前端无论演变成什么,它所关注的永远是 用户体验,只不过端增长了,开发的方式也增多了而已。做为一个前端工程师,要时时关注业界动态,更多地学习新技术,提高本身的实力,来适应更大的挑战。

写在最后

做为一个初入前端圈的新人,你或许对上面描述的东西并不彻底理解,这没有任何问题。作一个适合本身的职业规划,并不急于一时,其实最好是在工做一段时间后,和你的 leader 或者伙伴们一块儿对本身作一个评估,并根据前面所讲,给本身制定一个适合自身状况、符合自身兴趣的职业规划,并按照规划一步步不断提升本身,向前方的成功迈进。

笔者真心但愿这篇文章能够给正在迷茫的你些许帮助。年轻且精力旺盛的前端领域,尚未造成像后端那样多的实施标准和最佳实践,每一个人均可能有不一样的思惟、不一样的思路。本文仅是笔者我的观点和见解,有错误或者疏漏之处,敬请谅解。同时也欢迎私下和笔者进行更深层次的探讨。

最后,送给你们 PHP核心开发者『鸟哥』惠新宸 在近日微博上更新的一句话:

相关文章
相关标签/搜索