以下内容来自于BAT一大佬关于前端学习和发展的分享,为大家指引方向,答疑解惑:

首先,自我介绍一下,我有多年的分享经验,同时在慕课已经有2年的讲授经验。我是Vue2.x核心技术免费课的讲师,也是实战课大前端课程的讲师。乐于分享知识的我,非常享受这个过程。

我虽然毕业于985,但是我不是科班的程序员出生;我虽然教的是前端,但是我也熟悉Java和Python;我虽然已经离开了大厂,但是我自己组建了团队,健康的活了下来,这是第三次创业。

在大厂的磨砺让我知道了健壮的生产模式,在政府里面的项目让我认识了社会的冷暖提升了情商,在自己的一次次失败中我抓住了生活的命脉,我是一个有经历的人,跟着我,带你感受我的大前端之路吧~~

大纲:

  1. 路在何方:前端千变万化,如何不变应万变
  2. 对症下药:前端开发过程中的痛点,少走弯路,才能事半功倍
  3. 技术蜕变:从前端小白到高阶前端的成长路径
  4. 前端大局观:从前到端,高薪工作=高价值输出=多端开发
  5. 挑战即是机遇:诱惑很多,挑战很大,拒绝说“不”

在今天开始分享之前,我来说一下这一次分享的准备,我开始问了我的很多学生,比如:讲什么选题、大家想听什么、大家觉得学习了前端这么久想听听什么….很多的问题,都集中在一个问题上,这么多的未知,这么多的技术,我该怎么办?这就像是一个哲学问题,问“我从哪里来,我要到哪里去”一样——人生这一躺旅程,如果想不清楚前路,那最最关键的是抓住现在。老师,最多只是引路人是灯塔,自己的路要靠自己的脚走出来。

1. 路在何方:如何不变应万变

相信大家都有选择技术的一个理由,但是更多是迷茫。对知识的渴望,加上工作的压力,让这种求学的心情变得迫切。每当有同学问我,老师,我该不该学前端、前端难不难、前端怎么学的时候,我都会问他(她)这样一个问题:你喜欢不喜欢技术?

对于那些模棱两可的人,我会给他们泼冷水,告诉他们:“前端天天都在变化,你会每天坚持学习吗?”“前端不是人人都能高薪,你能接受生活给你的磨砺,忍辱负重的成长吗?”“前端说简单也简单,说难也难,你的目标在哪里,你的高度才会有多高”….

前端真的是千变万化,前两年还在JQuery,到今年的时候,我问同事,他说现有的项目(React)已经不用了,很少需要用JQ来操作DOM;再前些年,还在用DW、PS切页面,现在还流行吗?不流行了,因为效率不高…一方面技术过时的快,另一方面新技术的出现快,Flutter、WebAssembly、Serverless火爆发展,对前端人的要求在变高,需要学习各种技术,对接不同的角色的人,甚至去充当不同角的人…那么,就要有全面的知识储备与技能。大前端,需要的是宽阔的视野、扩展的能力、基础的技能,同学们不缺的是第三块,而扩展和视野是同学们缺的,也很少去思考的。

那怎么办?我说过一个观念:不推荐大家学习红宝书,不是一定在大厂才有优秀的人。这两点如果没有深刻体会的人,我来举两个例子:你看看你的周围有没有进步非快的人,再看看你下载的那些资料、买过的那些书&视频的进度,你就初步体会这两点的涵义了。学习,是一个延迟满足非常长的事情,需要有一颗平常心来对待每天的学习&工作。记住,平常心,三个字。

有句话大家都听过,“机会是给有准备的人”。这句话,要辩证的来看,这个准备是指心态上的准备,很多技术是可以现学现卖的,这才是核心。举个例子,我给大家来讲课,学习了FCP(FCP Final Cut Pro——苹果上专业的视频剪辑软件)只用了一周,就上手开始剪了,实践让我获得了大量的“真知”..……这种事情在我身上发生了很多次。那些追求极致完美的“处女座”同学们,很多东西在一开始,不用学习的那种的精巧,设计的那么的完美。这其实是人的本性啊,人不是圣人,肯定会犯错。但是,辩证的看,同样的不能一开始全部都马马虎虎,这两个极端都不可取。记住,辩证,这两个字。

我现在即不能说,未来5年,大家来学什么什么就能发大财行大运、XXX技术就能火、XXX能学XXX不能学,适合自己的才是最好的不是吗?我也是一路寻找,走了2年的弯路,才找自己自己的兴趣。生命中,总有那么多的奇迹让我们感动,就像小时候不明白父母的苦,只有自己成为父母,才能感受到。这不就是生命的美妙吗?所以,不要慌,你会明白的,你也会找到自己的方向。单身的人,就像那个属于你的人,也会在不远的地方等待着你一样。记住,兴趣,这两个字。

总结一下:
有了平常心,大家就不会去追逐新的技术,人云亦云了;有了平常心,大家就不会迷茫,知道当下才是最重要的了;有了平常心,大家就不会去攀比,而会扎实的自己每天进步一点点,与自己为“敌”,其乐无比。
有了辩证的思考,就会看清很多问题的本质,找到属于自己的解决方案。
有了兴趣,做的自己喜欢事,才是适合自己的。

前端千变万化的是技术,不变是我们,不变是我们的初心。不要因为眼前的困难,就选择放弃了前端!

2.对症下药:开发过程痛点

前面我们提了很多心态上的问题,这里就不再赘述。下面,我们除去心态上的问题,我们来谈谈技术。

大家或多或少的了解一个项目开发的过程,但是,有多少人去思考过,为什么需求分析,讨论来讨论去好长时间;为什么组长在这么安排开发,感觉效率不高啊;为什么大家都在推责任,感觉没有团队的氛围啊….

一个完整的项目,从项目初期立项到项目交付,会经历:需求分析、详细需求分析、项目开发前准备、项目开发&测试、初验(迭代)终验,这么几个基本的过程。不论内外部项目,都有一个共同点,就是有一个既定的目标。大家的KPI与目标的结果挂钩,那么问题来了,倘若这个目标没有实现,KPI会不会考虑说前端没有问题,就还是给你打个高KPI?倘若这个目标实现的一般般,客户让你们改来改去,KPI考核打了个基本分,客户会不会买单?倘若这个目标实现了,前端贡献一般般,KPI考核也会考虑一点点,但是这个份额会大吗?

总结一下,有需求分析的问题,有沟通的问题,也有效率问题……这些是技术开发过程中的问题,再来谈一谈新人&老人都会面对的问题——面试与择业。

都说“男怕入错行,女怕嫁错郎”,这句话就是生活的写照啊。在中国,这么物质的社会,还有多少纯洁的感情。在激烈竞争的互联网行业,还有多少蓝海?没有了,红利也还有,但是没有以前那么多了,因为门槛在变低,人工成本一直是企业前进的绊脚石。

所以,先要养活自己,再去思考更长远的事情。这一点,一定要清楚。

在企业中,大家要有“主人翁”的心态,现在很多企业都是“摸着石头过河”,也有一些“不要脸的”(会Copy的),那么其实大家学习这种方法又何尝不可呢?再一点,我们很多时候,会少问那一句“为什么”?心中充满着疑问又不想着解决的办法,那就错过了很多学习的机会。比如:项目目标没有完成,可以找找问题的原因,看看下次有没有什么办法规避;客户改来改去需求,可不可以通过一些手法明确下来;团队中,被弱化的前端团队,怎么才能体现自己的价值,是缺少宣传,还是实力不允许?如果是后者,那么,就思考一下是不是效率上有问题,是不是沟通上有问题…这样顺藤摸瓜,就能找到好多答案。

在找寻“真理”的过程中,肯定不是一蹴而就的,那么就要有“水滴石穿”的精神,不断的摸索着前进。

每个人的问题可能都不一样,再技艺精湛的厨师,也不能保证,每一道菜都合大家的味口。就像我们小时候会打预防针一样,我们会尽量多的去接触各式各样的“疫苗”(其实就是身体在试错),这样才能“抵御”外界的“侵扰”,对吧?

3.技术蜕变:高阶成长路径

对于新人来说,我之前问过我的一个同事,我深感认同,大家平时工作中,碰到问题了,最想做的事情,就是找个人一问,或者一搜索,就有现成的代码可以Copy,美滋滋~是吧?

题外话一下,大家知道中年危机是怎么来的吗?谁都知道有中年危机,什么35岁程序员的一到坎之类的….说着说着就心态爆炸了,什么年龄大了,干不了了啊;什么精力跟不上,不能熬夜了啊;什么家里事多,身体抗不住了啊…

但是,我身边那些35岁以上的程序员活的挺好啊,他们身上有一个共同的特点:就是有危机意识。

再回到上面的情况,如果一直都是Copy别人的“答案”,5年后,加入公司的小白看到了你的解决方案之后,1个月就能上手你写的代码了,然后,老板一看,那个小伙子一个月2K,你一个月10K,是人家的5倍,老板怎么想?

好,这个时候,我们不要倘若,就来说说我身边的>35岁的程序员。他们一进公司1-2年熟悉公司的业务,快速成长了起来,随着团队人员的增加,他们承担了一部分公司的扩展业务(比如:移动端、测试、后台等);到了3-5年的时候,他们又开始做效率、制度、标准化的事情;到了6-8年的时候,基本上人人都成为了主管,有自己的小团队,在外面接着大小的活,利用公司的资源,一方面扩展了公司的业务(所以老板睁一支眼,闭一支眼),另一方面,提升了自己的地位(那是根深蒂固的),团队少不了这样的核心人物。再退一步说,即使失业了,他们马上还能找到更好的工作。

都知道跳槽能加薪,那怎么跳,凭什么跳?写了两年的代码,就可以跳到更高的位置?不是的,而且时间久了,马脚也会露出来,不是吗?

这里有给不同的人,接地气的解决方案:
【1】对于入门前端的同学来说,首先,是摆正自己的心态。从基础的环境、基本的技能、基本的业务入手。
基础的环境是什么?好多同学,在学习前端的过程中,在环境上吃了大亏,花了很多的时间。

有的同学就会问,老师不就是浏览器+Nodejs吗?错,现在的前端的要求,已经从静态页面的开发变化了,需要对服务器环境、数据库环境、自动化环境,要会使用。比如:老板说,你把你的代码部署一下吧,你就build了一下,发给了后台,结果,后台那边说,我们的项目运行了xxx目录下,你这里资源加载有问题…

基本的技能是什么?除了基本的3“剑客”,还需要有IDE使用、NPM加速(除了CNPM,还有Yarn)、真机调试等方面的知识。

基本的业务是什么?比如登录鉴权、长列表、动态列表、多功能表单…等。这些,我相信,已经有不少的同学买过相应的课程,也能对标自己的工作的实际业务,但是,我想说明一点的,前端与JAVA这类的后端不一样,前端的业务其实很单纯,技术也很单一,不像后台JAVA学一套业务设计适合于一套业务,但是其他的业务需要重新考量与设计。而在前端中,比如Vue框架就可以通吃,各类前台、后台项目。这是前端与后端学习之中,大家需要非常明白的一点——前端不是学的业务场景越多越好,关键是要熟练&了解技术的应用场景。

这个阶段,需要有一个好的引路人,才能走的事半功倍。

【2】过了这个阶段(大概会花1-3年),进入到中期之后。不仅大家熟悉了公司、团队的业务,而且有一定的框架使用经验,可以解决实际问题了。那么,就要从效率出发。学习工程化、组件化、接口&后台的知识,为自己的前端之路作后续的铺垫。

这个阶段是很多同学不喜欢的一个阶段,很痛苦,为什么?因为,首先在思想上就是一道坎。很多前端的同学,觉得前端就是做做页面就好了,很多事情可以交给后台,比如:数据结构不好整理交给后台,下载功能不好做交给后台,接口太难设计交给后台…结果就是后台的兄弟技术突飞猛进,自己一事无成,还在写页面。

这个阶段,要学习Linux知识,学习框架的原理,去啃平时那些所谓“难啃的骨头”,甚至要去涉及一部分后台的知识,才能打开视野,突破瓶颈。

人生有很多次选择,但是一次正确的选择,可以决定整个人生的走向。所以,在一开始的时候,就要多去尝试,多去感受这前端的那么多方向,才会找到属于自己的方向。

任何的质变都是量变的结果,进入到高阶之后。从技术上,应该要达到可以应对不同的业务场景的开发,那么就回到了初始的问题,自己的初心是什么?喜欢技术的,往技术更深的地方走,架构、数据库、自动化&运维;喜欢管理的,往产品经理、项目经理方向走,学习产品规划、需求分析、文档管理,以达到效率的团队推动;喜欢测试的…喜欢UI的…

【3】跨过了第三阶段的同学,已经不需要我们的帮助了,我也收到了很多同学的回复,找到了自己心仪的工作,少走了多少弯路;也有我的学生,成为了我的助手,加入了我的团队,一起筑梦。

4.前端大局观:高价值输出

心灵鸡汤预警….

我们都想要更好的生活,羡慕别人的同时,又很少看到别人的付出。薪酬是与能力&责任成正比的。

责任这一点很好理解,即份内的事情要做好做漂亮。做好是基本的,做漂亮是很难的。我们都知道那个“梗”,两个人被安排去买土豆,A说土豆买不到了,B说土豆买不到了,但是其他的菜是xxx价,从我们日常的分析上来看….多从领导者的角度出发去看问题,就会发现好多不一样的处事结果。

再回到前端,做技术的能力是指什么?学习能力?沟通能力?理解能力?…都对,我觉得最重要的是解决问题的能力,包括了上面的其他的能力。这一点,又感觉很空,但是实则是“没有人,天生就会解决问题,都是后天培养出来的”。主动的担责,才会有更多机会培养自己的能力。

随着技术的演进,前端的边界已经变得非常的模糊了。那么,自己的“一亩三分地”,可能在不久的将来就被瓜分走了,企业会去留住那些成倍价值的人才,那如何去增加自己的价值?

前端,“前”代表着设计、需求、交互、产品…这些用户侧的能看得见摸得着的,“端”代表着接口、测试、自动化、运维、后台….大家很多时候忽略的部分。我们的价值,就要像一把尖刀一样,深深地插入这些痛点的地方、这些被忽略的地方…

有了一个对“端的”的认识之后,可以去设置自己近期与远期的目标,然后动手做起来。有了知识了填补,那个“短板”补齐后的水桶,才能接满水。具体的做法:

  1. 可以思考团队效率开发,做一些技术导入;
  2. 可以主动去承担需求分析的工作,熟悉业务、接触客户,锻炼文字和文档能力;
  3. 可以参与一些“端”的开发,无论是后台还是跨端应用,把自己的定位设置的更高一点。…

最后,提一点。我们的价值,不要从牺牲自己的时间上(加班中)体现出来,要把自己的思考与行动结合起来,变成有价值的工作。告别平凡(重复和单调),其实真的很简单,从一件件小事做起,改变自己的状态,才能堆砌出“万丈高楼”。

当你不再需要站在“巨人”肩膀上的时候,当你成为了“巨人”,你的薪水还会低吗?

5.挑战即是机遇:发展挑战

为什么说2019年是互联网最差的一年?因为,真的有很多人失业。为什么说未来的10年是互联网的寒冬?因为,技术的门槛越来越低了,人工的成本在下降。

前端在未来的几年的发展,有几点是确定了的。第一,TypeScript 的大规模普及和流行,TypeScript 的普及会反向推动 ES6(ECMAScript 6.0)的进步和发展;第二,跨端能力进一步增强;比如小程序,不断涌现出各种转译实现,例如小程序、移动端的Flutter、桌面端的Electron(已经7.x版本了,短短2年时间)等;第三,微服务、组件化、人工智能,其实都是在解决效率问题,大小团队的短板都需要提效,就是单人创造的价值要更多,那么反过来就对性能、高可用有了更高的要求。…

这些都是未来的必定的挑战,站在了风口浪尖,只有很出手的人,才能把握先机。

企业越来越喜欢那些复合型的人才了,为什么?因为经济下行的大趋势下,必须要降成本,以前2个人干1个人的活,现在1个人干3个人的活,那么必然会有惨烈的竞争,这个社会就是这么弱肉强食,企业的根本要是生存,不是做公益。

前端这个行业又就是一个非常特殊的行业,前端工程师可以成为产品经理、可以成为UI设计(别小瞧设计,我一个UI设计朋友玩玩做做,通过做兼职,在外玩了1年)、可以成为项目经理…还可以自己出来做产品。因为前端可以接触到各式各样的角色,不要当这些是无用功,要把自己面对的每一次挑战,都当成是一次机会,一次去感受不一样的技术面的机会,一次去感觉不一样的业务的机会,一次去感觉不一样开发的机会…

所以,下次有机会的时候,请不要再说“我不懂运维”,“我不会测试”,“我写不好文档”,“我不会总结”…也不要说“我年龄大了”,要说“我可以学”,“我来试试”,“我尽量来做”…

时间是我们最宝贵的财富,但是心境是比时间更难能可贵的。有的人才20出头就已经看淡了生活,有的人30岁了还没有人生的方向,也有的人40岁了还在转行在学习,有的人50岁了还在写着代码….生活,是由一些平凡的事情所组成的,我们就要做这些平凡的事情的“编织者”,你的人生由你来书写。

最后,记住两句话,同学们。

活在当下,珍惜时间。
不忘初心,方得始终。

所以,急功近利的学习心态是不可取的,一定要平常心,要坚持多总结多分享多实践多交流。

最后总结:
首先,意识上要转变。我们今天其实谈了很多心态的东西,这一些是在前端进阶路上的绊脚石;其次,就是有章法的学习。规划自己的前端技术进阶的路线,从兴趣出发,然后去学习主流的前端相关的技术,啃难啃的工作中、业务中的问题;最后,就是找机会实践。可以通过去认识更多的志同道合的人,可以通过一些开源的项目,也可以通过专业的老师+同学来省去自己规划的过程。