只接受发布货源信息,不可发布违法信息,一旦发现永久封号,欢迎向我们举报!
1064879863
16货源网 > 餐饮行业新闻资讯 > 高端网站建设 >  Web 前端的路该怎么走?


Web 前端的路该怎么走?

发布时间:2019-08-25 17:16:10  来源:网友自行发布(如侵权请联系本站立刻删除)  浏览:   【】【】【
首先谢邀,我也不好说些啥,以免误导。这篇文章讲述我自己是怎么在前端路上是的行走。前端路上的旅行希望对你有所帮助
Web 前端的路该怎么走?首先谢邀,我也不好说些啥,以免误导。这篇文章讲述我自己是怎么在前端路上是的行走。前端路上的旅行
希望对你有所帮助“一叶障目不见泰山”
前端说白了只是语法糖,一种编写页面的容器api和程序语言的封装,是计算机发展的大树长出的小枝桠。会一点视觉交互设计算锦上添花,但骨子里还是计算机的行当,必须从计算机领域汲取更多营养,不能本末倒置。

“忘形知意,忘意见神”
根生才能叶茂,有源头才有活水。永远不要成为专家,执迷于此就会被束缚和限制。金庸的《倚天屠龙记》有一段就是无忌学太极剑,从不懂,全懂,然后到全忘。
忘记的是它的形,如用法,api,而去探究其意,为啥设计这些api,为啥这样设计这样写背后的思想甚至历史渊源,感兴趣的话,甚至能超越代码挖出一些人文和情怀,比如背后的人的天才坚信爱心甚至委屈无奈。

“不识庐山真面目,只缘生在此山中”
熟悉前端,然后往计算机发展和技术的主线靠拢,去领会linux,互联网的设计思想,变得更像程序员和黑客,看看他们的思想行为,喜怒哀乐。会发现,一切逐渐趋于简单纯粹。

“曾经沧海难为水,除却巫山不是云”
等更深的明白了什么是计算机,互联网,和程序,程序员是什么和追求什么,为什么追求,再从树根回望那漂亮但一直随风摇曳的叶子枝桠,相信能懂一些见山不是山,见山确是山的意思。但此时,是不是山已经不重要了。

——————
2016-10-26 补充一些体会
空间感 ——大牛和小白的差距
恒变——技术就像水和泥,并不是常量而是变量,怎么学好前端并感觉没有稳定的答案,前端也不是一个稳定的职位,仅仅是当前技术方式恰好聚合实现某种服务的一个称谓。而技术实现和技术提供服务都在变化,不要希望在变化的环境里抓到不变的方式。感觉能把握的,就是好奇心、想象力,善意、热爱了。多看看其他技术的使用,多看看各领域,各层的技术是如何服务的,比如可以对比前端组件管理,和服务器集群管理,数据集群管理,都是多个实体的管理有哪些区别。感觉很多知识并不在前端领域里,而在前端外围的空间里。前端可能是个门,可能是个驿站,但绝对不是终点。

——————
以下推荐阅读,网上能找到pdf下载,读着通俗易懂也挺有趣的,可以对程序工作有更大的视野和站在更专业角度认识,也欢迎补充:

《黑客:计算机革命的英雄》,类似纪录片一样,从MIT的黑客天才,到硬件黑客的崛起,电脑普及,再到后来软件第三代黑客,开始有销售软件,到后来,计算机公司,从雇佣黑客,转变为雇佣专职程序员,可以看到计算机产业的发展,从把黑客当歌星那样的艺术表演形式,到需求很大,黑客很少而且不受约束,转变为满足大批量生产的行业和工作规范,出现工业化分工细分职能,不需要太多创造性,只要服从和执行就满足条件的程序员,不用具备计算机的天才和灵魂,去做那些能实现需求而不用追求完美的技术实现,形成生产线。。前端也就是这一趋势诞生的小分支了吧,只是应需而生,仅仅前端这个点,并未有太大的发展空间和立足点,就像一个小花盆,如何长出大树?。。也可以逐一看到各个阶段计算机工作者的一些成就和方式,看似内容很多,但难得作者笔墨连贯有趣,非常值得一读。承认,对程序提高不能立竿见影,也不能给一条完美的路。但能站在一个时间空间去找到位置,和看到黑客与程序员的区别,就容易明白前端是一个小分支,只是应需而生的职位。因此看起来,按质按量满足职位要求完成需求,但拥有黑客充满好奇,喜欢动手尝试,和追求完美的艺术家的心态,才是能长久的,也更容易接地气。也可以结合着对比自身,是否真的具备计算机的技术和心态,是否像木匠用木材,厨师用食材一样,对发挥计算机和网络能力挥洒自如,还是仅仅勉强是背了些语法,懂了些概念的不断条件反射,就容易不那么迷惑。
《UNIX编程艺术》难得的横跨多技术领域又不陷入细节。
《穿越计算机的迷雾》从原子,电路,晶体管,加法器,讲到软件,难得的融汇贯穿又兼具情感娓娓道来。前天在车站上写的一些个人感想 ,有点点乱(好吧,很乱),我还是再整理一下哈哈哈。

入门
前端的入门可能会比较容易,例如一些最基本的公司可能就仅仅要求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了的应届生。自己也没有完全确定一条自己的前端之路,因为我每走一步我都会发现好多好多。我是觉得自己并不需要这么快就定下来,我喜欢前端,我也喜欢实现自己的想法,所以我想去了解更多可以实现我想法的工具,了解一些新的技术,钻研一些旧的东西。
一切迷惘,我觉得都是因为了解的不够多,时间还没到。这时候,需要积累。我相信这样积累下去,直到某一天,我会突然发现自己应该前进的路。作为一个务实主义者,感觉高票答案说的太玄乎, 读完貌似很有道理,然而并没什么卵用!

甚至个别观点不能苟同:
永远不要成为专家

可能部分人印象中,专家 就是出大事,官方出来用一些很高深的术语忽悠大众,为事件找说辞的人。或 小说如金庸 《鹿鼎记》里 澄观 这类武痴。

要知道大部分的专家都是正常人, 在领域内的作用真不是一般的大。

我们人其实都差不多,唯一的区别就是掌握的技能点不同而已。

掌握技术的深层原理, “观一叶而知泰山”方能称为专家。

抛开“专家”定义的争论不谈:
高票答案的意思就是多理解技术背后的底层知识、掌握原理。这对于任何职业、甚至任何话题貌似都适用!

私以为:

人为创造价值而生! 职业发展除非走创业方向,那必定是往专家方向发展。因为, 专家能解决很多实际的大问题,为社会创造最大的价值,也为自身增添财富,这点 玄乎的禅师貌似无法做到。

回到 正题,题主主要想 “提升自己”, 那绝壁就是提高专业技能了, 实用点的建议如下:

1. 加入靠谱的技术群, 前端群 豪情哥的就比较靠谱。(对!就是知乎整天发群广告的捏个,俺当然是群内成员!(* ̄(エ) ̄) )

2.收藏 靠谱的博客、论坛、教程网站; 前端博客: CSS大神张鑫旭的博客 以及 阮一峰老师的博客 ,他们博文的经典前端圈的人都知道。 前端教程网:w3cfuns 以及 慕课网 值得收藏;靠谱的前端论坛目前似乎没有, v2ex 勉强算一个。

3.积累代码、去看更大的代码世界:创建个github账号, 专业的程序员都该有个。(越来越多的互联网公司将 github账号代码量作为考核点)

4.平时 没事写写博客总结技术,博客可以在 github、也可以在其他公共博客写(例如 博客园、简书等)。少年,我看你骨骼精奇,这张前端拓补图你暂且拿去。


首先要坚定自己学习的信念,然后假以时日加强学习,多看看前端牛人博客和一些团队博客,关注一下最新趋势。学习的时候多想想原理,往深处去探究。

图转自:
【IMWeb】web前端知识拓扑图参考

这是一篇长文。

这篇文章主要是对我个人这两三年从事前端开发以来的“升级打怪”经历的回顾和总结,进而来回复题主对于“前端开发工程师”这一职业存在怎样的发展空间,而它进入高阶之后需要具备怎样的能力以及这些技能或知识可以从哪些地方、项目或企业中获取得到的,等前端coder职业发展上存在疑惑的问题,来发表一些我的个人见解。

然而,我是没权力也没有义务告诉任何一个人Ta未来的路该怎么走,但却可以告诉你我是如何走的,而且我的路子是很野,对于很多大咖来说,绝对不能说是成功的,但对于没有机会进入一流互联网项目历练的大多数程序开发从业者而言,或许我的经历会有那么一点点借鉴的意义。

其实我曾想过,是不是要把自己这个跳跃性如此之大的从业经历写下来,是持有怀疑态度的。曾经某猎头在把我推荐给BAT某家时,建议我不要把媒体编辑的经历做太详细的描述或直接去掉,而我确实也用一些编辑手段弱化了那段经历,还是将它放在简历里面。我觉得,这不是什么问题,写文字一直是我的兴趣,并且曾经是我的谋生手段,而且还做得不算太差,只是和程序开发的关联性少了一些。

当然了,是获得了电话面试的机会,但第一轮就被KO了,那只是1年多以前事情,但3个月等于1年的电商开发节奏,现在我已经忘记了当时的情形,只记得那个电话来到的时候我刚刚通宵完成一个项目的公关,那会儿脑子是一塌糊涂的。


当然,那时我的能力应该达不到人家的要求,但如果现在还有从来一次的机会,我觉得自己应该有能力拿下这样的offer,但暂时没有这个必要。


请别误会,并不是说BAT级别的offer对我没有吸引力,而是对于现阶段的我而言,暂时不能为了这样的机会离开现有的项目和团队,而且现在的项目可以让我做擅长的和感兴趣的事情,并基本都能够按照自己的意志去落实下去,而大公司一般只能是做螺丝钉,不能有太多个人意志的,而且好的机会已然被老人们占据了,只是为了去镀金而去当别人的打手或救火队员,这显然是不理性的。


另一方面,我其实发现了程序开发者要想快速成长,不一定非要进入BAT或一线的互联网企业中进行历练,创业项目一样可以快速成长,只要你把握好机遇和机会。请相信我,这是绝对是可行的,这就是我想把自己的经历写下来的原因。


ok,在开始之前,我觉得预先告诉各位看客,作为一个由平面媒体编辑/记者转行做互联网开发的Coder,本人的码字功底还是不错的,因此篇幅会很长。


如果你确实不感兴趣,建议不用浪费时间,聊技术终归是有些枯燥的,也可能存在我写得不够清楚而让你看不明白的地方。不过,如果你真的对一名先是由编辑大跨行转php开发,再由php转前端切图,然后是如何用2年时间从月薪8K涨到月薪35K的职业经历感兴趣的话,那就一直往下看。


此外,如果这篇文章有幸被某个单位相中,想转载的话,那么该给这篇文章起一个怎样的标题,我就不再代劳了,标题党的功力已经退化得差不多了。还有,我是知道有不少错别字的,但已经逃离媒体行业很久,好不容易不再为错别字太多而担心稿费被扣,那么我真的不想再为这个问题而烦恼这不再是我的职责,而是你的。不砸别人的饭碗,这是做人的本分,不是吗?

再劝一次,篇幅真的很长。


一,奇葩的转行。

==========================

先var身份。

首先,前端一枚。30+了,是老猿吧,年纪不小了。

其实,我也不知道自己的水平在什么段位,年初拿到了两个一线互联网的offer,被定位在相当于阿里P6/P7样子,自己觉得最多P5的水准,自感能力有限和性格不适合大公司,主要是被现在领导忽悠说那些大公司政治斗争非常厉害的,我又特担心自己EQ值太低,经不起考验被扫地出门而颜面无存也就放弃了。


当然,不是本人逼格有多高,有些大企业还是比较向往,比如企鹅厂比如狼厂,但是人家看到我这种奇葩的半路出家的野路子和尚,就连HR初期的筛选都过不了,更别说去面谈做题什么的了。哎,说起来全是泪,伤心得一塌糊涂。不说这个,还是说开发经历吧。


在开发人员里面,我的经历应该算是比较奇葩的。怎么个奇葩法呢?


首先,做过几年的媒体编辑,对的,是平煤,客串过记者,曾经写过不少IT媒体的专栏,比如电脑报、电脑商情报、电脑爱好者之类的媒体,后来看到IT媒体日薄西山,就半路出家。当然,不是去少林寺做和尚,只是转行做了另一种和尚——程序猿。


嗯,跳跃似乎有点大,好多以前的同事不忍直视,其实自我感觉还好,因为业余就爱好博客,经常玩弄各种php开源博客系统,纯属自娱自乐,虽然没有参加过任何技术培训班(其实是因为写稿的真没几个钱可以用来交学费,都挺贵的),不过不管怎样,经过一通自我学习和努力,总算混进程序开发这一行当。


所以说,曾经是个文艺青年的我,在coder这个队伍里面,自我感觉文字控制能力还算是不错的,也不知道算不算个开发技能点?

二,第1个电商项目。

==========================

当然,奇葩的转型,那么开发的经历也就比较崎岖了。


先干了一段时间的php+前端混合开发的外包,就是那种用开源项目套页面做简单功能的二次开发类型项目,触摸最多的如wordpress、phpcms、discuz!,drupal之类的,框架也玩弄了thinkphp、CI,不过做外包的开发累死累活也没几个钱,技术也不会有太明显提高。


后来机缘巧合吧,前前前东家要做个电商交易平台,一时半会找到合适的负责人,感觉我还看得过去就被赶鸭子上轿转做了项目主管,负责整个项目基础设施建设,其实就是招人和分配任务等,不过干得最出色就是切图和切图,虽然当时开发方式还属于未开化的刀耕火种,于是乎将自己定位成前端是比较靠谱,而php的活就兼顾一点是一点。


还好,虽然技术比较烂,但是那个项目发展得比较顺利,拿到了A轮(号称3000W美金,水分可能比较大,不过那也是两三年前的事情了,按互联网的3个月=1年的节奏,感觉真的好遥远),有钱之后引入了一批更牛逼的开发人员(主要是前端和php),虽然是我的手下,但那波人能力在当时来看绝对是很强,我也从来没敢把人当手下,甚至很多问题都得向人家请教,技术不行就要虚心请教,这没什么好害羞的。


人家确实也比较牛逼,带来一些先进的前端开发理念,比如前端构建,前端MVVM,纯静态html+restful api构建web网站的开发方式。这些前端开发理念在2012年-13年那会儿绝对算是非常先进的玩意,那时nodejs还未成熟,而grunt也才出来不久,fis可能还在萌芽阶段,而各大互联网公司对于nodejs也只是内部尝试探索。


后来,随着项目发展,前端的需求越来越复杂,需要尝试MVVM、SPA的前端开发技术了,而我作为当时项目的前端负责人,也需要对前端代码做了重构才能适应项目的发展要求,就是做类似这样的事情——


如何将一个已经上线的项目前端部分平滑过渡至组件化和工程化? - 前端开发


这是我做的第一个的大规模的前端项目重构,当时的技术总监评估给到我的时间是10天,但我拖到了20天才基本完成,基本天天9-10的节奏。从现在的角度看,绝对是一次失败的重构经历。但是,个人从其中获得了很多有价值的经验,让我有机会尝试了许多新的前端技术,包括:


1,构建工具使用gulp,那时才刚出来不久,之所以选择它也就是图个新鲜,这是前端开发的通病吧;

2,基于less预编译的css模块化,watch监控自动编译;

3,基于gulp.spritesmith的雪碧图自动构建,根据watch监控雪碧图目录,自动按目录生成sp图和一份less,less保存到CSS的模块中,进而自动触发less的自动编译;

4,js模块化是AMD方案,模块加载是用requireJS。我们只做了一点点小改进,那就是通过gulp自动生成require.config(开发和生产各一份),第三方js模块的路径根据一定规则自动构建,而不是手工配置。


js模块按目录的方式打包,打包后的文件带上MD5戳,非覆盖式发布,解决AB版迭代和缓存问题。现在看来那种按目录整体打包方式是相当粗暴的,代码冗余非常严重,但无奈当时的水平也就这样而已。不过呢,将需要重复手工配置的有规律的前端资源调度实现自动化,其实就是前端工程化的雏形,至少是给我打开了前端工程化探索的大门。


事实上,这种开发思维不是当时的我所能想到的,而是项目所引入的前端人才提供的开发思维。非常感谢这位同事,虽然一起共事的时间只有短短3个月,而我们也只是点头之交,甚至你现在还可能鄙视那时技术那么烂的我,但却还当着你的领导。不管怎样,感谢你让我看到了前端开发往深入发展的另一种可能。


应该说在很多大公司的互联网公司里面,前端开发在很多年前已经有成套的而且相当成熟的前端工程化开发体系,但对我个人或那个项目的而言,这种方式在当时绝对是非常非常新鲜的,以至于我们那个团队的人逐步离开后(那波人中的前端现在基本也是前端领域的能手了,有在YY的有在VIP也有在UC的),接手的前端无力接管这种不太一样的开发模式,而又只好用原始的方式来生产新版的前端静态资源。当然,绝对不是我留了什么后手,而是交接了一个月多,也找不到能够很好理解的前端。


大家别笑话,现在还有很多创业型项目的前端开发模式还依然停留在刀耕火种的开发模式下,包括很多已经名声在外的电商。在中国,电商从来都不是以技术为第一生产力的,技术很重要,但却没技术人想的那样重要,大家一开始都是以实现业务逻辑为前提,先把业务跑起来,领导管你用神马开发模式,老是不能按时出货就得滚蛋。


有兴趣,大家不妨研究一下一些知名电商的前端代码,没有模块化的知名项目还不少(包括上市的项目),而甚至还有各种裸奔的代码在线上跑的,当然这些其实是创业期发展过快的后遗症,发展太快就可能没有很好的契机做基础设施建设,那么现有的业务代码过于复杂,后来的人只能在原来的基础上改改改成能满足业务需求就万事大吉了。这其实是国情决定的,业务需求的实现大于一切,电商业务发展就像高速的列车,一旦开动起来就很难停下来。


这种情况下前端代码模块化和重构难度就非常非常大了,你见过哪个师傅敢说给一辆高速跑的列车换零件的吗?这种坑不是一般人有信心往里面挑的,谁碰谁倒霉。另一边却是代码生产和发布效率的日渐低下,可能只是改一段静态说明文字抑或是修正一个小bug,发布流程都要跑上个把星期才敢放上线,但是大家不也活的有滋有味的嘛。从业务的角度,技术真没那么重要了。


==========================

三,一个阶段小结。

==========================

扯太远了,回一下神。回归主题。前端的路该怎么走——


我个人认为初中级前端要想快速进步,最好的方式:


①一定要在一个有多人协作的前端团队呆过。通俗地说,要和比你牛逼的人一起干过活,见过牛人长啥模样。

②一定要找到一个在业务上对前端有较高要求的公司或项目,特别是各种奇葩甚至恶心的需求,对于技术人来说其实是快速进步的机会。


第二点很重要。重要的事情要念3遍,不去外包公司,不去外包公司,不去外包公司。当然,第一点更加重要。但是,有牛人愿意带,在很多时候这属于小概率事件。即便有机会进入这样的项目,你也千万别期待别人会手把手教你什么。我只能告诉你,耳濡目染的能量还是非常强大的。


因此,从两个角度看,楼主现在项目既对技术要求不高,也似乎没看到牛人,是时候换一家公司了。还是那个意思,技术的进步一定来自于业务的不停变化,当要求你必须实现各种奇葩需求,而你又把人家的需求给实现了,那么就意味着进步。


当然,如果天赋异禀,而且非常自律自学能力也牛逼,就当我没说。至于能否偶遇牛人,这就得看个人造化了。如果你发现某项目的确有大牛存在的,薪资要求甚至可以降低以求获得快速进步的机会。技术人要明白,你能拿多少,在一定水位之前,基本和技术能力成正比关系的。


==========================

四,第2个电商项目。

==========================

似乎又跑题了。咱们继续聊程序人生。


我的第一个电商项目的经历很不成功,但是可能由于公司管理和文化方面的原因,导致了那一拨我认为非常不错的技术开发人才来到项目后,均不到半年都另谋高就出走了。而我认为自己需要进一步提升,也就选择了离开。


说得直白点,就是技术能力/经验都涨了,薪水还是万年不变(本来就够低的,不知道有没有人听说过给技术经理级别的薪水定位是月薪税前8K的电商项目呢??的我白痴痴的还一干就干了整整2年,虽然自己能力可能就值这么多而已,要么干脆点把我换掉要么给点点和岗位匹配的薪酬,对吧?),又没有更牛逼的人供你参考膜拜,离开是唯一的选择。你懂的。


这个时候时间来到了2014初了,我跳槽到了一家做在线教育的电商创业项目,月薪Double,title是前端项目经理(这叫法有点点怪怪的),做的事情其实就是前端那一块的事情,我在这个项目前后只呆了半年的样子,加入这家公司只是为了看看自己到底值多少钱,其实项目并不是很感兴趣,只是给我Double的薪资,也就加入了。


这个项目的总负责人其实是电信那边出来的,职业的资历可能比较牛逼,但对技术其实一概不通的,而我的直接上司是技术总监但感觉也不怎么懂技术,更像是个项目经理,只会催进度,而技术的细节怎么去实现,或者前后端分工协作的模式该如何界定,他并没有任何腹案。


也正因为他们对此没有概念,而我从上一个项目重构经历得出了一些前后端分离的经验,给他们分享了一些最新的前端开发模式的信息,告诉他们前端这一块必须尽早进行模块化构建,而那时项目才刚刚开始,我正好有机会从头做起。对我来说是很好的实验机会。


和上一版本相比,构建的流程没有太多变化,模块化只有css和js模块化,我只是对规范和文档要求严格一些,改善了一些构建工具的监控开发体验问题,比如gulp.watch监控文件编译,如果发生语法错误就自动跳出watch问题。


如果要说一个比较大的改变,实际是项目需求带来的变化,该项目由于需要移动端开发,而移动端需要用到前端模板引擎(artTemplate),我们在维护模板引擎的时候需要反复地维护类似这样的代码:



html包裹在script内部,编辑器看起来不是很好看,而且多人一起搞容易冲突。于是,我就改进了前端mvc模板维护的机制,弄成这样子:


开发人员维护一份html,通过构建工具自动将html编译成AMD规范封装的js模块,模块id自动编译,比如tpl_index_flash就是tpl/index/_flash.html文件(加下划线就被编译封装在script标签内,如果不加下划线命名html文件,就直接转化为js对象),而这个文件会被编译保存在js/tpl/index.js模块中。操作模板就使用AMD模块的实例对象,但开发人维护的html比直接放在html结构中要简单多了,代码冲突也几乎没有了,而且这份模板放在js里面可以借助js压缩优化,也可以方便地实现异步调用模板,做加载上的优化。



在这个项目中,我最大的进步就是项目需要前端mvc模式开发,使得我有机会进一步改善前端自动构建的htm模板维护机制(html模板编译js化),优化Watch即编译的前端开发体验问题。但是这时候,由于我的家庭原因,需要请长假(还少1个月),经过考虑后我办理了离职,但给这个项目的前端留下的前端工具和模式基本沿用了下来。


==========================

五,第3个电商项目(上)。

==========================

家里的事情解决后,我又得重新找工作。当然,技术和经验又涨了一点点,同时一些互联网求职的经验也涨不少,不再向以前那样白痴痴地不调研市场行情就傻乎乎地投简历。我学会了通过内推或猎头的方式找项目,至少行情比自己投简历要好很多。大家别笑话,可能还有很多人木有意识到这点,特别是像我这种半路出家没有在很像样的互联网公司呆过的同学,这方面的意识是比较滞后的,往往会落得同工不同酬的悲惨结局。


2014年6月底,经过猎头推荐来到了一家化妆品起家的互联网电商。这个公司的业务规模很大,我进入的是一个会包含PC、H5、APP(安卓和IOS)等多端并行开发的海淘项目,进去的时候是以其前端开发主管的身份进去的。咱们是现实的屌丝一名,在薪水的提升面前,其实title没那么重要啦,对吧?


这个项目在一个很高大上的,反正是和屌丝身份格格不入的地方办公。创始人是化妆品电商行业比较牛逼的,而且一直做的是电商,所以这家公司的互联网氛围还是比较浓厚,但也意味着快速开发迭代的节奏。我进入的时候项目的第一期已经上线,并且已经获得了千万美金级别的风投。


进去那天,上午是超级简单的入职培训,下午熟悉项目,第2天上午就来了一个紧急需求——3个专题活动页面需要快速上线,隔天就得见到东西,因为项目投放了一个演唱会地推,线上必须在演唱会开始之前见到相应的推广活动页面。


当时我所负责的组员有3个(其中1个,家人出事请假了),也就是能干活的包括我,就三个人。好吧,那时我其实还叫不全两名组员的名字就大伙分工,一人一个页面,用原始的方式切切切,把东西弄出来。那天,我们三个前端、两个php以及一个测试的妹子(可能是姐姐)搞到了凌晨3点多。


这是我第2天上班的节奏,现在还记忆犹新。其实,真的有点被吓到了。那时候(其实才是去年,但电商的节奏让我感觉已经很久很久以前的事情了),项目的后台系统很不完善,没有啥可供运营使用的东西,专题快速部署的系统当然也不会有的,那么前端的工作就被限制在一些生效效率极度低下的专题页面的开发上,而且没啥大多没啥技术含量,就只能靠人力维持。


随着项目的发展和投入的逐步加大,活动页面需求越来越多,人力维持是不太现实的,我们需要一个专题快速生产的系统。经过项目和产品需求分析后,务必要控制在2个星期内完成,而实际给到开发的时间其实只有1周。。。但主要工作其实对编辑器二次开发,后台编辑器上传图片时,可对图片进行二次修改编辑,我们二次开发就是要增加图片生成商品锚点定位、倒计时,甚至后来还提出了直接将锚点商品加入购物者的功能。。。


这其实主要是前端的要啃下来的活,php只是从属配合,把生成锚点代码和展示配置保存到数据库。如果有人问我前端有什么需求值得去每个前端都去尝试,那么我会将web编辑器列为其中一个。谁弄谁知道。


这个项目是我做电商前端开发以来的最难搞的需求,没有之一。当然,如果开发周期预计得足够长,一切难点都不是问题,难就难在限时实现,和参加奥数比赛类似。由于时间有限,项目经理帮我们找了个有类似功能实现的kindeditor编辑器插件,但是人家是加密了的,我们只能把代码扒了出来进行反编译,接入到我们的后台编辑器里面(ckeditor),接下来就是两个人接力coding,住了好几天7天连锁。。。尼玛,现在回想起来,没有在马桶上坐挂,那是命不该绝。后怕。


这个编辑器项目总算如期交付,虽然后期有很多兼容性bug,但还都在可控范围内,解决了专题发布效率低下的问题,而前端开发也由此从手工维护专题的漩涡中解脱出来。我也因此在不到1个月时间内被列入了核心开发的岗位,并提前转正加薪(税前应该大于20K了)。其实,我当时很想着离开的,毕竟开发的节奏太快了,压力着实有点大。只是作为已过而立之年而且转行跳跃非常大的一个人,这些年过得有点昏昏噩噩,没啥成就,如果在这里学会了放弃,以后可能会变成一种习惯。而且,这份经历可能成为职业污点,毕竟开发圈子其实很小,不是东家就是西家,也就坚持了下来。现在回头看来,是正确的。谁没有过放弃的念头呢?


==========================

六,第3个电商项目(下)。

==========================

但是,项目需求迭代的速度并没有因为我们程序开发经常通宵,也不会因为某个人可能存在放弃的念头而会慢下来。这才是‘正常的’互联网电商的节奏,因为去年开始做海淘的项目开始喷发,有点当年千团大战的感觉,如果你把节奏慢下来,可能意味着落后,一步慢就会步步慢。


Boss发话说,我们第一期发版后的UI界面和性能体验实在太糟糕了,而好多页面的首屏加载速度让人难以忍受,甚至有白屏情况,让要我们尽快出台优化方案。其实,上线只有1个多月,前期又没有太多时间做基础设施建设,整套系统都是在一个相对完整的商业系统上二次开发而来,能有多少好的性能体验呢??


但是,在民营企业里面,Boss的话就是圣旨。就得立刻响应和执行。


于是,我们整个技术团队就对前端性能优化做了一次相对完整的评估,雅虎XX条军规,出台了一些优化方案。这个方案实施,我提出了要响应快速的迭代需求,前后端模式需要建立起松耦合的开发协作体系。其实,这个时候阿里前后端开发体系的一系列文章才出来几个月,对于业界的影响还是有的,至少这个项目来自后端开发的传统程序员基本能接受这种开发思维,但是问题是如何建立?


对于一个已经在线上跑的项目,彻底的打翻重构是不现实的。我又一次面临了一个有难度的前端模块化工程化、前后端分离开发体系建立的需求。但这次不同,这个项目代码规模更大,业务更复杂多变,而且一直是高速运行的。


入职后的1个多月里被专题和编辑器羁绊住了(中间还请了一个星期的假),网站的其他业务其实我没有太多精力去顾及,还好另外一个同事手脚麻利,维护性质的需求一般能很好地解决。当我有机会从头梳理前端以及服务端View层的代码逻辑时,还是被那些商业电商系统混乱的前端代码结构给震住了。


我就不说哪家了,国内的开源或不开源的电商系统,大部分精力放在后端的业务实现层面,而前端这边压根是啥没有模块化概念的。当然,为啥这个项目的技术选型要选这样一个系统?鬼才知道呢,反正我是不知道的。但是,既然负责这一块,别人挖的坑就得由接手的人来填。这是行规,你懂的。


在电商这个领域,解决前后端耦合的问题,主要要做好服务端模板层的规划,控制权尽可能只压在前端或后端,多方维护的情况尽可能减少。以PC端为例,这里是要求SEO的,那么页面的渲染必须在服务端完成。当然,这里会涉及页面性能优化和前端资源调度的问题,服务端模板层最好是由前端团队来掌控。然而,不是每个前端开发人员都是懂后端语言的,这个其实是提高了前端人才的准入门槛,但这又是必须的。


至少我前面几个电商项目都是这种情况,其他电商的做法就不清楚了。这里简单说我们的做法:


1,服务层按功能分层、分域,服务端view层独立开发域。


比如,核心底层基类分出一个开发域,通用函数或组件也可以一个开发域,后台各种管理运营或配置系统划分为不同的域,而前台的,比如首页、列表页或专场、搜索、详情、购物车、登录注册找回密码、会员中心也可以分别各一个域。此外,即便是服务端模板层的开发语言,无法前端团队没能力决定,也至少单独一个开发管理的域。这是前后端松耦合的关键。


当然了,不是各种开发域分得越细就越好,务必要根据按开发团队的人数以及实力来确定。如果分的太多太细了,代码合并管理的重复量会提升。每个人可能同时负责好几个域的开发,解决了代码耦合,但却降低了开发效率,而且增加系统间联调的风险,这是不合理的。


2,对服务端模板层进行公共页面、组件抽象。


比如全站的很多头尾部是共用的,变化的部分相对较少的,进行公共文件剥离和抽象。垂直类电商一般是以页面为颗粒度的,页面展示大多以大块大块的图文列表出现,太精细的抽象是没必要的,至少我所负责的项目大抵如此。其他大众类电商因为要展示的商品种类多,页面可能会做的非常细腻,以更精细的页面组件来组织view层代码结构才会显得有必要。


3,开发前端静态资源调度机制。


为什么要做这个事情?这个问题我就详细展开了,太多了。理论层面的,可参考

大公司里怎样开发和部署前端代码? - 前端开发

当然,因为业务不同,我们有自己实现机制。但需要解决的问题基本上,张云龙讲得比较通俗易懂,我也就不班门弄斧。


4,我们遇到的问题——TTI延迟引起的前端构建框架重构


前端模块机制是建立在requireJS基础上的,但之前我做的是异步的方式,在以前的项目中其实对于性能优化没有那么苛刻,但是这个项目不一样。是当前竞争最惨烈的一个垂直领域——海淘。因此,任何一个可以改善用户体验的优化,对于项目的意义都是巨大的。


从用户体验出发的几个核心时间指标包括:Start Render、DOM Ready、Page Load、TTI。不同的性能指标对用户体验的影响是不同的,而指标本身受哪些因素的影响也是不同的。一般的前端优化都会考虑前面三个的优化点,而最后的TTI优化往往被忽略。我们却碰到了必须解决这个问题的点,业务场景发生在需要加入购物的按钮上。比如详情页的下单按钮。


不好意思,我不好拿原来自己做的项目来做说明,就随便找一个电商的详情页来替代 因为大家的问题是类似的,比如这页面 姬芮(Za)隔离霜聚美订制礼盒


如上图所示,两张页面是加载先后的两次截图对比。当用户打开页面时候,页面结构的渲染很快就完成了,但一些异步的请求较慢,SKU的计算也需要耗费一些时间,但问题用户可以看到加入购物车的按钮啊,大红色的很吸引人,让人点击的欲望是很强烈的。但是,有些时候网速稍微卡断一点,那么这个加入购物车的按钮就一直点击不了的。很多小白用户就可能会问,为啥不能点击加入购物车啊?我敢肯定一定有这样的投诉,只是看网站开发者如何对待这个问题而已。


这个就是典型的TTI问题。


什么是TTI?? 最好百度。简单滴说,Time To Interact指的是页面可交互的时间。这个应该越早越好,如果页面因为需要等待异步请求的结果才能计算,而异步的数据可能是回不来的,那么就不要让用户可以这么快地看到可交互的元素,因为它会吸引人去点击,但却没有响应,投诉就必然。


当然,这个问题发生在我们的网站很多地方,比如详情页、购物车以及生成订单的页面,要知道这些页面的交互分分钟对转化率产生影响的。然而,采用requireJS异步请求模块的方式,这个TTi问题就会更加突出。


因为页面首次渲染会发生在css加载完成之后,如果不做任何处理,加入购物车的按钮就会很早呈现在用户面前而触发用户去点击,但由于页面一方面要等待异步的js完成,还要等js发起的ajax请求返回的数据做进一步处理,即便是我们对按钮做loading状态处理,但require异步的js可能会发生很多意外,页面的购物车按钮区域一直在loading,而导致用户无法点击加入购物车。


也就是说,我们用requireJS框架代码的模块化管理,但却不能在生产环境中直接使用它的异步机制,因为它会对TTI延迟带来影响。怎么办?


ok,到这里你可能对js模块化有些很反感,有这么多毛病干嘛还要模块化啊?这个问题很深刻,但问题不能单纯从一个角度看待,任何事物都是有两面性的。


其实,如果用其他模块化方案,只要是异步加载js的,都会存在类似的问题,包括seajs。要知道模块化开发一定是团队配合的必然选择,既然已经选择了requireJS作为模块化机制,那么它带来的问题,我们就要着手研究解决方案。


5,前端模块化开发与TTI延迟问题的解决


首先,我们的前端团队已经熟悉了requireJS,基本都能掌握AMD模块开发要点。首次重构的代码已经发布上线后,必须先将TTI问题严重的几个页面,做loading状态处理,让用户等待。


但这只是过渡方案,更优化的解决方案是要对前端开发构建流程做优化调整,把异步的模块在发布生产时必须合并起来,作为同步加载的模块,放置在页面最底部,而且合并的文件应尽可能降低代码的冗余。


但是页面js资源不仅仅只是优化一个页面,将一个页面combo成一个模块就完事了,应该想服务端模板一样,js也要分层,将最底层最核心的类库抽离出来单独combo,多个页面之间共用的模块也要单独combo(这种形式的combo结果可能有多个,因为如果共用模块过多,按一定的大小来合并,我们的原则是mini化之后不能不要超过200K一个文件,如果超过了,就要另起一个文件,当然,这个要灵活处理),前面两者是在页面之间可以相互继承的,而只有当期页面私有逻辑的js模块则应该是一个单独的模块。


那么,网站js最终的形式可能是这样的:

这是我们希望得到的模块combo结果。我们采用的线下combo,然后将combo的结果发布到CDN,这样就需要解决以下的一些列问题:


1,如何区分核心js和页面共用js?

2,构建流程上如何解决它们的修改,然后编译的版本迭代问题?

3,对于开发的角度,在本地开发能够快速调试,包括源码调试以及combo状态调试?线上的问题代码,如何方便开发人员调试?

4,私有模块化如何调用共用模块的方法,或采用怎样的机制来对共用模块进行单独的实例化?

5,多个模块化之间,combo的先后顺序是什么?

6,内嵌资源比如img图片引用,如果引用的图片发生了修改,如何解决它的缓存问题?

7,如果业务模块很多,比如好几百个(电商的业务很容易达到这样的量),那么可能因严重影响代码发版的速度,是不是考虑增加构建的缓存机制,或服务端combo的机制?

……


好吧,这些问题最终演变出来的,其实就是一整套环环相扣的前端工程化解决方案。


这里面,单独就js而言,要涉及很多代码规范问题,比如js通用模块开发标准,私有模块开发标准,私有模块提升为公共模块的机制,第三方插件的改造规范,js模块的碎片化程度如何掌握?这是一个度的问题,等等。



因为加入CDN网络后的,强缓存解决方案是更换URL路径,而对于访问量大一点的电商来说,非覆盖式发布是最佳的选择。前端架构的开发机制还会涉及服务端模板引擎的如何加载前端静态资源的问题,如果是纯静态的移动端网站优化,可能还需要你自己设计一套开发机制以及静态html开发的具备模块化能力的模板引擎,来解决动态变化的css或js引用问题以及开发调试的体验问题。


好了,这其实是业务逻辑开发以外的,高阶前端开发者需要面临上述的前端痛点问题。这会涉及方方面的调整,比如前后端边界的处理,前后端交互的API规范,开发调试环境、测试以及发布流程的设计,版本迭代回滚,以及性能监控等等一些列衍生问题。。。


我可以负责任地告诉,不同的项目,前端架构设计是不太一样的,因为业务逻辑不同,前后端开发人员配比以及能力模型也不同,那么前端架构就可能得采用不同的设计方案。


当你的业务发展要面临这些问题时,可能前端就没有大家想想中那样简单了?


“一叶障目不见泰山”
“前端说白了只是语法糖,一种编写页面的容器api和程序语言的封装,是计算机发展的大树长出的小枝桠。”……


如果我说了这么多,举了这么实例和理论分析,如果大家还认同这样的看法,就当我什么话页没有说过。就此打住别再往下看,但我也劝你别再干前端了。对于这种似乎是很文艺的表达方式,咋一看,好像挺有意思的,但如果要想玩文字游戏,我们就得按游戏的规则来把问题说清楚:


请问什么是前端的“一叶障目不见泰山”?

请问什么是语法糖?

请问什么又是计算机的大树?

请问计算机的小枝桠又是什么?


作为前端从业者,我对于这样的无厘头描述是表示反感的。因为这是一个很严肃的话题,而编程又是要求逻辑严谨的工作,任何意识流的或空泛的描述都应该是不被允许的。当然,如果我的文字伤害了答主,或违反了知乎的游戏规则,那么该对我关小黑屋的就关小黑屋。我没有意见。


是的,前端从某个角度上看,业务本身的实现并不难,不会涉及太多深层次的算法问题,但是如果要将页面优化做到比较好,解决方案诞生的过程中一定涉及很多计算机底层的逻辑算法的问题。


比如facebook这种的网站,是上万个AMD模块的代码规模,不同国家的用户进入同一个页面要加载的css和js组合可能是几百万种时,人家可是要找博士来研究前端架构的解决方案!当然,这个不是我说的,如果认为我在吹牛散布假消息,大家记得找张云龙大侠来问清楚——

https://github.com/fouber/blog/blob/master/201508/01.md


当然,绝大多数项目是没有到达这样的量级的,比如我们也就几百个js模块,但是对这些模块的依赖关系处理,就已经涉及递归、排序、排重、对比以及插入等底层算法,只是很多人还没有接触到这一层面而已,并不意味着前端开发就不需要。此外,如果你的前端团队如果要用到nodejs做中间层开发,前端开发人员还会面临大量的服务端开发的问题。这是另一个话题,我就不再说了。


总之,在我看来,前端开发的难点不在于某个业务逻辑的本身实现,而在于规模化生产的前端工程化问题的解决。


==========================

七,第4个电商项目。

==========================

这是第3个项目电商的延续,因为是同一拨团队继续干的项目。这份经历暂时不方便透露太多,只能说这是以我原来的第3个电商项目的技术团队核心成员为班底的,又一个从零开始的项目,同样是海淘。经过半年多一点,现在已经走到了B轮,暂时只能透露这个消息。


对于做海淘的电商而言,因为我们属于后进者,节奏要比其他项目要快一些,要不是没有任何机会的了,也就意味着别人可能是半年或3个月就融资一次,那么我们就得基本上2个月就进行一次融资,至少在C轮以前必须是这样的速度,要么只有等死。可想而知,要能完成这样的融资节奏,那么开发、推广和运营是怎样的节奏呢?


作为参与者当然是非常非常辛苦的。这几个月不能说天天有发版,但基本上每周二周四会有一个小版本,1周或2周就得完成有一个中级版本,可能是多个版本交替迭代的,而一个月就一个大版本更新。竞争激烈,我们必须按这样的速度去迭代才可能有活路。


那么,单就前端开发而言,如果没有很好的模块化、自动化、流程化的控制体系,你能想象搞这种速度的开发迭代,哪个程序员会和你玩?还好,半年来30来号技术开发,技术团队的离职率基本为0,技术负责人的项目管理能力非常厉害的(我知道的就是,华为那边出接近100W年薪挖他,他没走,当然我也是跟着他混)。


ok,不能再说了。只是有感而发,差点停不下来。如果哪天这个项目有个完结了,比如我离开它,或项目走到了上市或被收购,或资金断流散场,我会回来把这份经历补充好。埋坑。



==================这里是分割线=================


八,前端开发者快速升级通关的一些个人经验总结。


这纯属个人经验,不一定适合你。还是那句话,如果感兴趣就往下看,不强求。


在评论里面,我说了,从转行做全职前端,从切图开始升级发展到做电商前端架构,只是花了2年时间。不管你信不信,这绝对是事实。当然,我是有好几年php+前端混合开发基础的,不算是从白丁开始的,但转行那时候的前端技能最多就是初中级别,只会用jq插件完成逻辑。


我现在的好几下属,做前端的时间都比我长,有个已经5年了,但依然找不到方向。我平时在招聘前端时,面试的前端好多都干了3-5年了,还是那样。不是我想笑话这样的人,或绝对自己真的可以吹牛逼,我只是觉得可能是大家没有看清楚前端这个工种的未来,没踩准快速升级通关的节奏。当然,也可能你还不够努力。反正,种种原因吧,各有不同,我只能说我自己的。


这两年,我手机里面全部是前端开发书籍,没有100本页有50本,背包里面总有一本关于技术开发的书籍。每天除了上班干活,吃喝拉撒睡外,全部时间几乎全部放在看书写代码写demo上面。以至于忽略了很多事情,包括对家人的照料。这些努力是你看不到的。当然,除了自身努力外,我确实也踏对了前端开发迅猛发展的节奏,比较早地接触了Nodejs,比较早地看到了前端构建前端工程化的价值。


不过,有时候一个人的价值往往不仅仅是看他的代码能力有多少,经验有多少,还要看你能号召多少人跟你一起干。就好比一个人的财富,并不只是他所拥有的银行存款、固定资产或者股票等等他直接控制的财富的总和,而是除了这些意外,他能调动多少资源,所有他能调动的资源页都是他的财富。


技术人做到一定程度之后,再往上发展,需要有一定的号召力,因为绝大多数企业不会给你开那么高的薪酬,甚至给你股份期权。当有几个人愿意跟随你的时候,那么在找项目谈价格时,就会掌控议价的主动权。因为,你已经不是一个人在战斗,你的价值绝对不是以一个人的开发技能来衡量的,而是由跟随你的团队的整体实力来决定。


当然,有人愿意跟着我,是因为这两年我除了一直站在代码开发的第一线外,还坚持了以下几样东西:

1,从不藏私。把你知道的东西,毫无保留地分享给你周围的同学,记得是毫不保留。知道多少,分享多少,这样才会不断促使自己去知道的更多。技术层面不存在教会徒弟饿死师傅这种事情,如果你抱有这样的想法,那就太狭隘了。

2,对代码要有洁癖。洁癖到什么程度?包括一个空格,一个标点符号,不要觉得无所谓,一定要觉得有所谓。要追求能力极限上的完美,包括逻辑判断的严谨、文档的完善、代码格式的完美。

3,言出必行。一个需求来到我这里,只要我有答应别人的时间节点,不管如何也要想尽办法把它实现了。如果确实无法按时,一定提前沟通,但二次调整的时间一定一定要准时,下死命也要完成。事不过三,不给自己留任何后路或找理由。

总之,言出必行既是项目管理能力问题,也是个人诚信问题,这样团队里的其他人才会愿意相信你,依赖你,跟随你。


其实,很多时候技术和经验积累到一定程度之后,业务处理上的能力或技巧,大多数人的差距其实很小的,但拉开差距的往往不是技术本身,而是对待人,对待技术,或对待需求的态度不一样。我不敢说,技术层面有多厉害,即便是现在的项目给我的技术评级是P7,之前也有拿到的几个offer给我技术评级也是P6/P7,但我自认为没有到达这个水准。

大家让开,我要开始装逼了。



前端开发这个行业目前来说已经不算是个新兴的行业了,越来越多的人在这2年开始转型做前端开发,但是在2010年之前这个岗位还是很不受开发人员重视的,好一点的叫js工程师,不好一点的叫美工或者切图的。

那个时候如果哪个学计算机的说我立志要当个切页面的!恐怕自己都会脸红一会。看见别的开发也都是绕着走吧。哈哈。



突然这几年一下子前端开发就火了。好多人,真的可以说是各行各业的人,都开始涌入这个行业,我见过的学管理,文学,历史,美术,音乐,法律,医生,当然还有计算机什么的,甚至还见过干了几年的仓库管理员,转行做前端了。

真可谓是百花齐放啊!




就这样,这个领域的教育培训资源在互联网的帮助下疯狂的生长,以前我们都只能用rss订阅一些博客来学习新知识和感受技术风向。现在环境好太多了,微博,知乎关注一些行业大牛就可以快速获取一些技术风向和行业规则与现状。找工作更容易,前端缺的不要不要的,一个私信就能获得面试机会。这真是前端最美好的时光了。


在这样的大环境下,学习和如何学习本来已经不再是什么秘密。资料和前端技术的积累量级也上来了。所以好多人会问,先学什么,再学什么,怎么样可以更快成为大牛或者快速赚到大钱呢?





……

开个玩笑,其实这个问题我上面说了一堆,只不过是想交代一下大(装)背(逼)景。我们进入正题,我举个例子:

你下副本打怪,需要一身蓝装才勉强及格,手上却只有点新手装,你明确的知道要完成n多个新手任务才能换取蓝装材料。可是你偏偏不信新手装不能下副本,总觉得自己和别人不一样,我操作好,走位屌,我就要一身垃圾装去打boss。

然后不断的开始跑尸体…边跑边骂,怎么回事啊,我看的攻略就是这么过的啊,这破游戏真难玩。



我还能说些什么呢。

不会走就要跑… javascript知道学不好就一直学啊,后端不了解就做个个人博客啊,nodejs这么火,一天看一个api,一个月也能上手了啊,css布局总有兼容性问题,总结啊,写框架啊,js总是不知道如何入门提高,看书看规范去请教提问呀,这些就像是新手任务一样,无聊枯燥又没意思,直接打boss多爽啊。

所以虽然前端大量缺人,门槛低,大量无法踏实学习的人进入这个领域…

其实只要天天学上2小时,我觉得2年也差不多能是个小牛了…

可惜这么久了,我觉得小牛也好少啊…

不过也不错,我的盒饭又可以加肉了…

我纯手机吐槽,折叠吧…

欢迎关注我的在线Live:
小芋头君 的 Live -- 前端开发者成长之路 https://www.zhihu.com/lives/779682228367024128

不没人邀,不开心,强制来答,入了前端的坑也有五六年了,这五六年的历程基本都被我写成文章发表在自己的网站上:我的工作历程

之前几年是一起总结的,最近两年每年年终都会写年终总结。偶尔回头看看也挺有意思的。

前端生涯连载 第一篇 走上前端路
前端生涯连载 第二篇 淘宝第一年
前端生涯连载 第三篇 大学毕业正式工作第一年
前端生涯连载 第四篇 爬上高峰,跌到低谷
前端生涯连载 第五篇 自由职业者?自我怀疑?自我认知?
我的2014年年度总结
我的2015年年度总结

有啥问题可以在评论里提,我会在这里挑选回答。

第一个问题:你的技術積累主要是在什麼階段?阿里的時候?創業的時候?還是漂泊的時候?
答:不同的阶段其实都有所积累,大概说一下。
在阿里的时候主要是入门的时候的初始积累,和接触了很多大牛和大流量大逻辑场景后的小范围爆发。
后来自由职业的时候主要是横向的积累,因为没工作压力,我学习了一些周边技术,例如nodejs,ios开发等,并且有时间深入实践。
后来创业的时候,我积累的主要是团队开发,团队组建,从0开始构建一个产品直到发展到20多人的前端团队中间的一些积累,太多了,没法详细说。

第二个问题:做自由工作者怎么接活的?在中国做自由职业的程序员会遇到哪些问题?
首先要拥有自己的一些渠道,例如我那时候有一个博客,也就是前端乱炖的前身,一个个人博客,不少干货,所以也算一个小渠道,我写了篇文章,把自己明码标价,然后就有不少人来找我。
后来,一些靠谱的合作者会介绍其他人,其实自由职业者不需要太多事情的,两个月做一个项目,一个项目2W左右的预算,就不错了。
做自由职业者的最大的问题是,很难自律,其实生活也挺没保障的,一直在做一些很初级的事情,没有什么积累,也没有什么交流,其实还是不建议程序员做自由职业的,不如找几个人一起接外包或者做做小软件什么的。

第三个问题:这些年的程序员生涯,大概的作息时间是什么样的,感觉累么
刚开始的时候因为要学习很多基础知识,大多时候不是很通畅,经常通宵调试小问题,作息很不稳定,开始几年的确感觉挺累的,身体也有些不舒服,特别是鼻炎患者,工作时间长了很难受。
后来自由职业后那时间更没法控制了,后来演化成白天追剧,晚上写代码,生活极其不规律,貌似还患上了轻微的肠炎。
创业后,公司任务没有那边变态的重,然后帮我分担任务的人也变多了,对于技术的把控也更熟练,很少熬夜很晚,轻松了很多,身体也好多了,一般12点就会睡,偶尔早睡偶尔晚睡,晚上写代码也比以前少了,偷闲的时候主要写写看看东西什么的。

第四个问题,多推荐一些前段面试的流程,和技巧吧。自学前端的小白!!!感谢
以前写过的如何面试前端工程师,可做参考:如何面试一名前端开发工程师?如果是学习前端的话,推荐看一篇文章《http://zhuanlan.zhihu.com/p/20391662》

细细整理了过去接触过的那些前端技术,发现前端演进是段特别有意思的历史。人们总是在过去就做出未来需要的框架,而现在流行的是过去的过去发明过的。如,响应式设计不得不提到的一个缺点是:他只是将原本在模板层做的事,放到了样式(CSS)层来完成

复杂度同力一样不会消失,也不会凭空产生,它总是从一个物体转移到另一个物体或一种形式转为另一种形式。

如果六、七年前的移动网络速度和今天一样快,那么直接上的技术就是响应式设计,APP、SPA就不会流行得这么快。尽管我们可以预见未来这些领域会变得更好,但是更需要的是改变现状。改变现状的同时也需要预见未来的需求。

如果是提升自己,还是推荐另外一篇文章《http://zhuanlan.zhihu.com/p/20626395》,其实就是四个步骤,不过第四步是我特有的:

  1. 能做到你想做的: Tasking与学习能力
  2. 用更好的方法来实现功能
  3. Better Code & Architecture
  4. Growth Hacking

到目前为止总共手把手带过不下一百个0基础甚至背景一片空白的学生,毕业的同学全部找到自己满意的前端相关的工作并且在工作岗位上得心应手。
这里先显摆显摆一下最近两波班级同学的毕业设计(学生很给力,做为老师控制不住要分享...)。

项目1:

饥人谷前端作品库 ,后端涉及技术:nodejs的使用、Express MVC搭建网站的方法、常用中间件的使用、七牛图片上传处理、数据库的构思与操作、MongoDB的使用。

前端涉及技术:HTML CSS规范写法、CSS3特效、BootStrap的使用、响应式页面、常见组件的封装、RequireJS模块化写法。

项目历时40天左右,采用标准的互联网产品开发模式,前后端负责人、开发者均为班级同学,我作为指导老师。而这些同学初始的水平基本为0,只是经过3个多月系统的学习练习。项目介绍:饥人谷前端作品库, 学员开发心得:饥人谷前端作品库开发心得




项目2:

开发一个功能完整的FM音乐播放器插件。项目要求是封装一个音乐播放器插件,使用者一行代码即可方便调用在页面上展示音乐播放器。

[同学的作品1](Player) [作品2](main) [作品3](music)。 项目2仍在进行中,后续会开发chrome扩展、使用nw封装成桌面应用等。 完成该项目的同学对应到班级的等级为30-40级,进度正常的同学只需要3个月左右的时间。





显摆不是目的,这里想说的是如何才能在学习前端的道路上找到正确的“体位”,“稳”、“准”、“狠”,让自己快速成长起来。就如同一个贫困落魄的流浪汉,想快速挤入上层社会。最快的方式是给他一大笔钱,更好的方式则是给他一大笔钱解近渴在送他一颗摇钱树让后辈子衣食无忧。“一大笔钱”就是让自己能快速找到工作、胜任工作所需要的知识体系和技能。而“摇钱树”则是: 爱思考、勤动手、做事踏实求精、追求美的习惯。

前端知识体系和必备技能包括哪些呢?或者我们经常听到对前端开发者的要求是基础扎实,那这所谓的“扎实”到底如何衡量呢?

忽略一个个跟蜘蛛网一样的知识图谱、一本本砖头块似的开发圣经、或者他人收集整理让人眼花缭乱的网站网站链接吧~ 相信我,即使是你们学校里最牛x的学霸全部读一遍估计也得个几年,这是前端给java或者“大牛”给小白秀优越用的,这些有一部分是过时的东西、一部分是重复的东西、一部分是对你目前没什么用也不可能看懂的东西、甚至还有很多误导性的东西。 最终让你头昏脑胀脑胀内心惶恐失去重心、让你感觉和那些大牛愈发遥不可。

入门者的知识体系包括哪些东西呢,下面是我的个人看法,按照这个流程走不一定立刻成为大牛,至少能让入门者抓住重点一步步走下去:

1. 基本工具使用
Git/GitHub的熟练使用,编辑器(sublime、webstrom、atom、vscode)的体验区分与使用,chrome开发调试工具的使用,Photoshop的简单使用,翻墙软件、笔记工具、流程图工具、思维导图工具的了解使用


2. 静态页面功底
doctype、乱码、meta、字体原理、字体图标、常见标签的用法、HTML书写规范、CSS选择器使用及权重、CSS常见样式的写法、雪碧图、inline-block特性与使用、line-height与vertical-align用法、盒模型种类、浮动的特性与应用(两栏三栏布局)、清除浮动clearfix、BFC、定位的特性与使用场景、z-index、浮动与负边距的应用(圣杯布局双飞翼布局)、常见的CSS Hack、边框+伪元素+定位的应用(做三角、tooltip、绘制简单的效果)、CSS编码规范等。
掌握这些功底后力量上你可以用合理规范的方式写出任何你看的到的静态页面,你有底气把自己写的HTML CSS代码拿给任何一个大牛来评判,给你一个页面你会无视效果直接审查元素指出源码中的不足并提出改进意见。


3. JS与JQuery功底
页面渲染基本原理、白屏与FOUC、数据类型与类型转换、引用类型与基础类型的区别、深浅拷贝、声明前置、函数声明与函数表达式、字符串的各种操作、正则的各种操作、贪婪模式与非贪婪模式、日期数学函数各种操作、作用域与作用域链的概念与应用、闭包的概念与应用、IIFE的封装性、setTimeout相关概念、事件冒泡捕获机制、绑定事件的兼容性封装、事件代理、ajax的原理与封装、跨域的几种方式与实现、jsonp的封装、原生js实现常见效果的实现(懒加载、点击加载、回到顶部、导航条、Dialog、Tab等)、jquery的语法与使用、jquery实现各种常见效果(懒加载、点击加载、回到顶部、导航条、Modal模态框、Tab切换、各种轮播、瀑布流布局、木桶布局、懒加载+ajax+瀑布流的使用等)

做了这些后,你会对代码的规范性和美感有一定的认识,会以写出精简、好看、复用性高的代码为目标而不是以实现效果为目标。分析、拆解未知问题的能力有所提高,习惯于使用google搜索文档并掌握一些搜索技巧、习惯看英文文档、熟练使用调试工具定位错误解决问题,尝试总结纪录甚至分享心得。
到这里,你的能力甚至能力超过一些所谓的一两年甚至两三年工作经验的前端开发者。在交流群里慢慢的以准确、睿智的视角帮初学者解决问题。你开始发现代码不管怎么优化总是没那么满意,你会为别人更优雅的解决方式叹服抱怨自己太笨,你在空余时间默默实现你在很久以前羡慕的效果,默默的开始美化自己的博客记录心得,你开始觉得自己玩High了。对于找工作反而不急了。

4. JS进阶
OOP的概念、构造函数创建对象的方式、原型与原型链(会画图)、继承的写法、功能模块化的写法、常见的设计模式(工厂、单例、发布订阅)、面向对象的应用(轮播组件、Tab组件、曝光组件、日历组件、Dialog组件等)、JQurey插件的封装、JQuery核心源码解读、HTTP&webserver相关知识点、CMD&AMD规范、模块化写法 (Requirejs或者webpack使用)、npm的使用、工程化概念与应用(gulp)、HTML5新功能、纯CSS做一些有意思的特效和动画(如按钮、渐变特效、loading、CSS3轮播、3D轮播等)、响应式的应用(写一个bootstrap的栅格系统)、CSS预处理等、CSS flex布局、CSS grid布局。



到这里你似乎觉得前面的东西都白学了,之前引以为傲的代码写的一团糟。你的嘴变得越来越懒、脑子确越来越灵活,当看到新功能已经可以在脑中里去构思解决方案,当别人谈论一个东西的时候你都知道别人在说什么,甚至内心慢慢以一种俯视的态度去旁观大家无谓的争论,当别人在争论less还是sass好的时候你默默的花了两个小时看玩了所有的语法,你开始去看node教程、去看ES6语法、去尝试用express搭建个博客在一番体验后你清楚的知道它们的应用场景与利弊之道哪些需要深入哪些需要了解,你会把自己的东西收集整理分享给更多的人并从中得到满足...

之后你需要切入一个框架,react 也好vue也好。从基本使用入手,通过一两个项目学习框架相关的技术栈,快速达到能做事的阶段。 然后直接尝试封装UI组件甚至实现自己的UI组件库。尝试理解框架的原理、尝试读框架源码、或者实现一个框架雏形。

你不再以完成任务实现功能为目标,而是经常念叨简洁、性能、复用、体验这些词。


某一天突然发现自己变了,多思考、亲自动手、踏实求精、追求美这些无形的东西已经影响到生活事业的方方面面, 你也早已成为别人眼中的大神了

原文链接:前端学习路径 - 余博伦的文章 - 知乎专栏

什么是前端工程师?
总而言之前端工程师就是运用HTML/CSS/JavaScript等Web技术,在工作中配合设计师实现用户界面,和后端工程师进行数据对接,完成Web应用开发的职位。
  • 阅读更多有关前端工程师


开发工具

设计软件

前端工程师最首要的任务就是把设计师的设计图切好并翻译成代码,所以我们要学习一些设计软件的基础操作和切图方法。

  • Photoshop 运用最广泛的设计软件,大部分人都在用它,很有必要学习一下
    • 前端工程师必备的PS技能——切图篇
  • Sketch 轻量且功能强大,切图迅速高效,为UI设计而生的Mac App
    • Sketch切图教程

编辑器

工欲善其事,必先利其器。可以用的编辑器和IDE有很多,在这里我只推荐最棒的两个。

  • Sublime text 最性感的编辑器,搭配插件各种好用
    • 配置和使用方法
  • Webstorm 功能强大,学生可以免费用的前端开发IDE

代码管理

不光要学会写代码,也要学会管理你的代码。在工作中你可能会遇到需要自己部署代码的情况;不停地修改迭代重构,当然也需要你掌握版本控制软件。

  • Linux 你需要学会在命令行打开移动复制文件等最基本的操作
    • Linux最常用的20条命令
    • 鸟哥的linux私房菜——基础篇
  • Git 写代码一定会用到的版本控制软件,入门很快就能学会
    • 猴子都能懂的Git入门

测试工具

预览和调试必不可少,编写前端代码的大部分时间都是在编辑器和浏览器之间切来切去。

  • Chrome Dev Tools 谷歌浏览器开发工具,想要预览调试你的前端页面必须在这里啦

基础知识
  • HTML
    • MDN的HTML入门
    • HTML30分钟快速入门
  • CSS
    • MDN的CSS入门教程
    • 学习CSS布局
  • JavaScript
    • JavaScript菜鸟教程
    • 慕课网JavaScript入门篇
  • Web
    • 当你在浏览器中输入google.com并按下回车后发生了什么
    • 互联网协议入门
中级知识
  • HTML5
    • MDN的HTML5入门教程
    • 网易云课堂HTML5入门
  • CSS3
    • CSS3菜鸟教程
    • Gitbook的CSS3教程
  • Style Guide
    • 腾讯alloteam前端代码规范
    • 百度ecomfe前端代码规范
    • Google HTML/CSS Style Guide
    • Google JavaScript Style Guide
  • Responsive Design
    • 响应式设计指南
    • 自适应网页设计——阮一峰
    • 什么是响应式web设计?怎样进行?
  • Web Animation
    • CSS动画
    • Canvas动画教程
    • Learn to Create Animations in JavaScript
  • Bootstrap
    • Bootstrap菜鸟教程
    • 慕课网玩转Bootstrap
  • jQuery
    • jQuery菜鸟教程
    • 慕课网jQuery基础
  • Ajax
    • jQuery Ajax快速入门
    • jQuery Ajax全解析
高级知识
  • w3c标准
    • Web Platform Docs
  • ECMA6
    • 阮一峰ECMAScript6入门
  • 测试
    • FEX前端自动化测试探索
    • 测试框架Mocha实例教程
    • Karma和Jasmine自动化单元测试
  • 自动化构建
    • 流式自动化构建工具Gulp
    • 前端工程构建工具fis
    • Web项目脚手架生成工具Yeoman
      • 用Yeoman和AngularJS做Web应用
  • 模块/包管理
    • npm
      • npm使用介绍
      • 快速搭建 Node.js 开发环境以及加速 npm
    • Sea.js
      • 5分钟上手Sea.js
    • RequireJS
    • ES6模块
  • 预处理器
    • Haml
      • Tutorial
      • HTML代码简写法:Emmet和Haml
    • Sass
      • Sass入门
    • TypeScript
      • TypeScript Handbook(中文版)
  • 框架
    • React
      • 入门实例教程
    • Vue
      • vue.js教程
    • Angular
服务器端
  • Nodejs
    • Node入门
    • 7天学会NodeJS
  • MongoDB
    • NodeJS与MongoDB交互
技能图谱
  • StuQ技能图谱
  • Frontend Knowledge Structure
在线资源
  • 大前端导航
  • Frontend Stuff
  • Frontend directory
  • Frontend Interview Questions
在线教程
  • 菜鸟教程
  • 极客学院Wiki
  • Mozilla开发者网络
  • front-end-web-development on Treehouse
  • Learn to Code Advanced HTML/CSS
在线书籍
  • Front-end Developer HandBook
  • Front-end Database
  • Frontend Notebook
推荐书目
  • 基础
    • 深入浅出HTML与CSS、XHTML
    • HTML & CSS设计与构建网站
    • Pro Git中文版
    • 鸟哥的linux私房菜
  • 中级
    • Head First HTML5 Programming
    • JavaScript权威指南
    • JavaScript语言精粹
    • JavaScript & jQuery交互式Web前端开发
    • 深入浅出Ajax
  • 高级
    • JavaScript高级程序设计
    • HTML5高级程序设计
    • CSS权威指南
    • 深入浅出Node.js

我想大多数想走前端的路的人主要都是以下三个困惑: 1.前端好学吗? 2.自学还是培训? 3.前端好找工作吗?


作为一个“过来人”,我也分享一下我的一点感受。 1.前端好入门,但是并不算好学。 最近在想为什么知乎上的主流观点都是提倡自学? 当我想到王健林说的小目标,忽然好像明白了。因为每个人的高度立场不同。对于王健林来说,一亿确实是小目标,因为人家身家上千亿啊;可是对于普通人,把一个亿作为人生的大目标可能也不太现实吧? 同样,很多知乎上点赞高的回答其实都是大公司的CEO或者各行业大牛来回答的,对于他们,学好个前端自然不是什么难事,可是对于许多没有基础以及非计算机相关专业的人来说呢? 还真的就是两码事,这是需要极大的热情和耐心的。所以我觉得这样有点不负责任,当你们说容易的时候应该站在大多数人的角度考虑,我当时就是因为知乎的回答而选择自学的,现在发现这条路真心不易。

前端主要学html,css还有js,当然这都是基础。html和css的确容易学懂,正常人每天8小时一个月学完完全没问题,可是学完了,到会布局做页面处理好各种小细节需要一个较长的过渡期。 拿我来说,当时毫无基础,辞职在家,基本每天花8小时左右吧,第一个月把head first html与css看了一遍还有w3school也认认真真过了一遍,原以为我学会了,可是真正做的时候才发现只能用html做一点极其基本的页面,css感觉无从下手。然后买了网易的课程,又花了一个月学完html和css部分,可是课程太基础了,根本没有实际案例,也没有多少老师互动,真心浪费了我大量时间还有金钱。从激情满满到学了两个月还是无法临摹出一个完整页面,当时真是很受打击,苦恼了半个月。 实在是不建议网易的课程,太坑了。关于网易微专业不多说,想了解的话可以看这个回答,链接 很多人的客观评价。

另外js是难点,有个火星时代认识的朋友之前学了c#,c++ 还有.net,但是后来js就是学不下去,然后经常跟做前端的朋友沟通,最后还是不得不去火星培训去了。当然我并不是建议去火星,详情往下看。(ps:不是做广告,不信可以往下看)。

另外其实前端不只有难度,还有广度。 众所周知,前端知识是更新最快的。有人说出去度个假回来感觉像是落后了一个世纪,当然有些夸张,但是也反映了如今前端知识的飞速更新吧。 而且前端的知识有难度,js就不用提了,极客学院有个老师说,他觉得css比c#要难,因为css多两个s,当然这是开玩笑,但是css有太多技巧要学,对于初学者来说常常无所适从。 所以说前端这条路并没有很多知乎网友口中那么好走。说这些是真心希望想这条路的朋友做好心理准备,如果没有耐心一直学下去,可能并不适合前端。

2.自学还是培训。 自学上面已经说过了,就不说了,我的意见就是自学这条路不适合每个人。 但是培训呢?我去试听过达内,火星时代的课程。火星的口碑和环境好点,不过费用较高,达内口碑不好,一是觉得环境不好,二是交了押金试听后我想退,但是当时不愿意退给我,而且不停地电话骚扰我,后来第二次去才退给我,总的给人感觉不大好。另外两家都吹嘘老师多牛,其实感觉老师水平接近普通大学老师,而且风格也像,不像是很多实战工作经验的,我表示怀疑他们真的是如他们自己吹嘘的年薪过百万的前端大牛吗?所以这里我赞同网上的主流观点,培训机构没一个靠谱的。至于选择培训还是自学,因人而异吧。如果自制了真的很好又有基础,自学也是不错的选择。

3.前端好就业吗?

实话说我目前还在自学中,学的第四个月,我还没开始找工作。等我面试了一段时间有了发言权会来补充的。只知道在火星试听的时候认识的朋友现在找到工作了,算是班里混得可以的,在深圳工资6600,每天加班到9点,大小周。所以说培训机构吹嘘的出来就8k什么的,千万别信。另外他说自己是运气好,找了半个月才找到的,而且压力比较大,比较累。所以说,这条路并不好走,希望想走前端路的,一定要三思而后行。等我找到工作了再来更新,希望对大家有所帮助。




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


最近有不少人加我,加上最近找工作中有时间就来更新一下。

首先说一下我的几点感触:

1.前端行业越来越乱

1)从业人员参差不齐

这两周海投,总共收到5个面试通知,其中只有一个是真实的,面试官说我过了他那关,要我三天之内等通知,然后面完之后没回音了。只记得当时说是现在很多人都想转行做前端,很多基础不好,不知道是不是担忧这个。我带了作品,而且也写了一年经验啊,居然面试都没有!这让我想起了火星毕业的朋友,他当时也是这样的情况。


2) 培训机构水平很差

另外面的4个全是培训机构。至今为止我已经面过 “芜湖达内”,“中软国际”,“多迪”,“海晨科技”“中星集团”等培训机构,还有众多小的就不说了,其中多迪去了两次,第一次是去年要我去实习,当然也就是变相的培训啦。今年再去就是要我做老师,我去了笔试都没有,就跟我谈薪资,问我想不想做项目经理,我电话里说得很清楚不想做老师,更不打算实习的,结果骗我说有技术岗位,结果还是忽悠我做老师,关键是连笔试都没有啊,培训机构有多乱可见一斑。 他们全都是打着招人的幌子,要你去面试,结果就忽悠你培训了。多迪在全国还有22家机构,不算小公司了,但是招老师这么随便,看来培训机构老师水平都真的很一般了。

2.自学真不容易

最近加我的朋友中有学过半年的,也有两个月的,还有准备开始学的。 半年的朋友投了很多,只是面过两家培训机构,两个多月的说不想自学了,想去培训机构学java。而我个人,学了大半年了。目前学完了js和jquery,一般的电商页面差不多也都能做了。现在还没找到工作,很发愁,真的有点怀疑人生了。这几个月我每天学习紧张。做这个真的太耗时间。我的情况是这样的:

每天早上8点起床,吃完早餐差不多9点学习,中午12点吃午餐,加午休差不多2:30开始学习,学到6点晚餐,晚上休息下跑步然后洗澡洗衣服等等的,差不多9点学习,学到10:30左右。就这样每天除了学习基本啥也不干,但是也就3+3.5+1.5总共8小时。这已经是我的极限了,相信读过大学的人,很多人都做不到这样了,然而这样的情况我现在还是没办法找到工作,真心劝大家不要轻易自学。除非自制力真的很强,或者基础很好,或者你时间真的很多,比如刚进大学。


ps: 之前我提到培训机构有不少人说我写软文,强调一下,火星时代是搞设计培训的,前端开发似乎不怎么样,我只是试听过,只觉得费用贵,环境好点,老师水平也就那样,起码绝对不值1万9的学费。然后关于我那两个火星毕业的朋友,我也是说实际情况,仅此而已。上面码了很多字,有点没条理,都是我自己的真实感受,或许有点悲观了,但是确实也都是实情,只希望评价之前先判断清楚,不要动不动说人写软文那样。 不更新了,总结这些真的很浪费时间。 希望对有疑惑的人有点帮助吧。



===============================================

最近又面了几家培训机构,实在是忍不了了!

1。这些培训机构真是令人发指,已经跑过好多家,这里列出来,以防大家踩坑。华育国际,芜湖达内,中软国际,中信集团,海晨科技,多迪,等等还有众多我都不记得了。其中不乏我去过两次的,我反复问确定是招技术吗,确定不是招讲师或者学员?那边说是的,我再强调说,如果是培训就算了,我有经验,不打算去,那边说放心,我们有技术岗,你过来吧。好吧,难得有面试,万一是真的不去岂不是亏大了? 好吧,去了,半天时间跑来跑去,累死累活,结果又他妈坑爹的,拐弯抹角半天,最终还是要你培训,去年买了个表的。大家看到帮忙顶上去吧,曝光这些缺德的,要不是这么多培训机构天天忽悠别人去,现在也不会这么饱和。都是这些天杀的培训机构害的!



================================================================


如果想学前端至少得具备以下几个条件:

1. 罗辑思维还不错,起码高中数学每次都得能及格

2。自学能力好。IT行业知识技能日新月异,前端更不必说,甚至有人说放个假回来都觉得落后了一个世纪,某大牛说前端每年都要比去年难上一倍。

3。年龄是个问题.众所周知IT行业是吃青春饭的,过了30很多人就开始担心搞不下去了。马化腾对腾讯的员工说,你什么错都没有,就错在太老了

现在初级前端已经饱和了,不要只看那些高票回答,要看最新的,那些人不一定能站在小白的角度思考,一天到晚叫这个那个去自学前端,哪有这么容易?好好算一算, 光是广州培训机构一年出来1000+的学员,还有很多自学的,更不用说每年不计其数的计算机相关专业毕业生,能不饱和?这些高票回答都是以前的,而且多半是不负责任的回答,因为知乎的高票回答多半是大牛或者某某公司CEO,我们能跟他们比?就好比王健林说的一个亿的小目标,我们普通人能算小目标?希望所谓的大牛们不要误导小白们,现在真的初级前端很饱和了!

另外前端的行情,去智联看看吧,我截图在下面了,全国所有行业中前端是排名第一。

1。在智联首页的智联排行榜里面,2.有一个竞争最激烈的岗位,

不信就去看看吧。

最后想说,自学了8个多月了,现在真的很累,真的很看不惯那些所谓大牛总是在误导人,希望大家都要冷静,要相信,一个亿的小目标不是我们目前能轻易达到的。为了让前端能稍微正常一点,请冷静,多转载一下吧,还有后台很多人私信我说都找不到工作,这些人哪儿去了? 赞起来啊,不要搞得好像我们找不到工作的很少一样,明明都找不到了好不好,还被那些大牛和培训机构给淹没,去他大爷的。



一、职业建议篇

选择一个职业就好比一个公司选择战略方向至关重要,推荐阅读下:

1、《前端大牛得到的最佳职业生涯建议》:前端大牛得到的最佳职业生涯建议-博客-云栖社区-阿里云;

2、 《身为前端工程师的我们到底值多少钱?》 本篇作者阮一峰2016年的文章,近期发布在云栖社区评论很多,读读原文再读读评论相信会对自己是否应该选择前端有一个清晰的认识; 二、避免踩坑篇:

《Web入门者必看的HTML代码编写的30条军规》避免重复踩前人的坑:Web入门者必看的HTML代码编写的30条军规-博客-云栖社区-阿里云;

三、前端知识的学习篇:

1、推荐阅读《前端知识体系目录》文章从HTML/HTML5、CSS、JS等相关知识学习步骤目录,到相关书籍推荐应有尽有:前端知识体系目录-博客-云栖社区-阿里云;

2、《必备神器:前端开发全面知识库》 前端开发全面知识库,包括HTML5,CSS3和js的基本框架知识,以及DOM和BOM操作的基础知识和一些基本工具和IDE ; 四、进阶篇: 1、这篇不是前端知识类分享,更多是讲解前端程序员成长经验分享:《一个前端的自我修养》:一个前端的自我修养-博客-云栖社区-阿里云; 2、《阿里9年,我总结的前端架构演进3大阶段及团队管理心法》:阿里9年,我总结的前端架构演进3大阶段及团队管理心法-博客-云栖社区-阿里云 ;

3、《【阿里招聘】4 年阿里前端,2 年 CTO,一个程序员六年的奋斗史》 这篇文章吐露了作者奋斗挣扎的经历,从一个电气专业的学生走上了阿里前端工程师的道路,以及再到后来离职创业成为CTO。成长的路途虽然艰辛,但是想成为山峰的人必须承受那些坑洼所不需要承受的苦难。前路虽艰难,但却铸就了卓越;

先上图,看懂的点个赞可以走了,没看懂的请继续听我细(che)讲(dan)


然后聊下自己

1.历经传统互联网,赴美上市巨头(非BAT),某创业公司。

2.后端2种,大数据普通搞搞,前端断断续续折腾了一两年

自身经验就是这样,不过应该能解决90+%的问题


前端方向在我看来,主要分三块

1.偏设计和交互方向

重点是设计或交互能力,需要知道页面怎么做好看,怎么更符合用户的使用习惯。

设计能力强的后续可以转懂技术的设计-_-!,交互能力强的后续可以转产品。

2.偏逻辑和架构方向

和后端有些近似了。其实是前后端分离后产物,现在的后端只负责产出数据,那么和页面相关的逻辑转换就需要前端继续实施了,更高级的就需要知道框架的选型以及业务模块的封装。

发展方向就是架构师了,当然也不排除一部分同学直接转成了后端

3.偏安全&运维方向

早期的前端代码都是依附于后端进行部署,但是现在cdn,node环境搭建,都需要专门的同学去负责。这个方向比较杂,也比较容易产生大牛,所以crsf攻击、页面响应优化这样的事一般都会放到这块来做


更细的方向要聊(che)下去,估计一两页纸也说不完,有时间再说吧

web前端的路长着呢!

应该是问怎么学前端吧,其实前端入门还是很容易的,只是精通难,没人指导难上加难!

前端入门说容易也不容易,需要记的东西有很多,虽然记住常用的就行,但是那些不常用的标签还是需要记住

学习前端一开始要学习HTML和CSS,这两个是前端基础中的基础,学会后还要去练习,不断的去实战,直到能把一个静态页面写出来,页面布局干净整洁,到了这一步,前端的基础就差不多了,不仅仅要学切图

前端要学的东西很多很多,不过很多东西都是能找资料来学习的,特别的前端基础中的HTML和CSS!

学完HTML和CSS接下来就是学JS了,JS学习并不难,去买一本JS指南就差不多了然后后面就是前端的核心内容框架了!

学前端,一个字练,两个字实践,三个字继续练,四个字不断实战,七个字练到心烦练到吐!

总之实战出真知,看了那么多的是每什么用的,知道不等于做到,做到才能说知道才能说会!

前端的路很长很长,现在前端也是刚刚进入爆发阶段,很多技术都没有成熟!

做前端要前景有前景,要发展也有发展,要钱途有钱途,前端毕竟是一个技术活,你的技术好不好,决定你的薪资待遇!

说了这么多,没水喝,你们倒也是点个赞也是好!

走过路过的大神顺便说一下,前端怎么学,HTML和CSS在哪找资料,JS应该怎么学,说一下造福一下后面的新手,这也是一个不错的善举!

我从简书搬过来了,都是自己走的路。

------------------------------------分割---------------

前几天群里加进来一个小妹妹,委屈的说自学了好几个月的前端了,好像还没有入门,加群想听听我们学前端的经验,学了多长时间,有没有什么好的方法。我问她现在学习的进度,她就说看了angular的视频没看明白就开始看vue了,她说之前是做UI,学了前端能用HTML和css写界面了,然后前端的交互都是拷贝网上的代码,然后改吧改吧。


听了她的描述,让我想起了几年前我是怎么入了前端这一行的了。


大学是计算机专业,那个时候之所以选择计算机这个专业,可能是听说大一就可以带电脑了,大学三年的时间没有写过什么代码,每次上机课对我们来说就是等待下课,或者带个U盘玩游戏,当然扫雷、扑克也是我们常玩的。


大三的时候有一门课叫网页设计,学的是老掉牙的课本《网页设计三剑客》。不可思议的是,上过几周的课程,老师布置给我们的作业,我居然会写一个简单的页面,不过后来课程开始难了我就学不下去了,现在想想,这可能是我程序员生涯的伏笔。


13年暑假,学校安排了一个月实习,其实是在一个培训机构学习JavaWeb,一个月的时间只够我们扫雷、扑克或者混日子,想要掌握一门技术是根本不够的,但是对于我来说,这却是新的开始。


当时带我们的老师是个老程序员,他讲课的方式沉闷无趣,但是在他的课上,我听进去了很多大学没有认真学习过的知识,第一次知道我所学的专业毕业后的工作是什么,第一次知道一个项目是如何实现的,需要掌握哪些技能,第一次知道我也能写出密密麻麻的代码。


这个老师就是我的启蒙老师,从那时开始,我就开始对程序有点儿兴趣了,从同学那里借来了韩顺平的java课程视频,虽然只有几个课时,每天下完课就窝在宿舍里看视频,看过视频之后,就能完成老师上课布置的作业了,那个时候最开心的就是不需要借旁边同学的代码去交老师的作业了。


一个月很快就过去了,当时有两个选择,一个是留在培训学校继续学习下面的课程,包学会包就业,一个是放假回家。但是当时学费很高,虽然可以贷款,我还是选择了回家,带着我的兴趣和电脑。


暑假在家很无聊,心心念念着电脑里提前拷贝的java课程,所以提前回到了学校,马上就大四了,似乎大家都在为毕业考虑,我也不列外。


那段时间我这一辈都记得,电脑里装了100G的视频,我在宿舍每天除了吃饭,上厕所的时间就是看视频,跟着视频敲代码。每天早上9、10点起床,中午让宿舍同学带外卖,晚上看视频到2、3点。当时看的java课程都有好几套,跟着视频不知道敲了多少遍代码,一个单词一个单词的敲,有时候敲错一个字母,运行报错了,却始终找不到原因,只能对着视频暂停,一行行核对,磕磕绊绊的终于能依葫芦画瓢的做一个员工管理后台,公司资讯管理等。


做完这些已经是十一月了,持续了四个月,当时真不知道是什么支撑着我每天不停的学习,也可能即将毕业的压力,这些已经不重要了。


大四学校已经没有课程了,很多同学已经出去找工作实习了。


于是,我就带着我没日没夜看视频做的项目,去到了合肥,开始找工作。因为没有经验,所以约面试的公司实在太少了,好不容易有一个公司让我去面试,查到了地址坐着公交过去,比较偏僻的一个地方。过去之后说是一个培训机构,但是刚成立,由于我有基础,让我做助教,说是可以一边学习,一边工作。


当时以为这是我的机遇,所以,在什么合同都没有情况下就进入了公司,每天帮他们招生,安排宿舍等等一些杂活,一直到第一批新生进来上课,我已经在那里干了半个月的工作了。第一个老师来上课的时候,讲的是HTML和CSS,我清楚的记得,第一个作业是精品一个新浪的注册页面。


听了第一节课,感觉在那里根本学不到更多东西,我知道老师即将要讲的课程就是之前在学校四个月自学的内容。于是选择离开,天真的以为在那里做了半个月的苦力,可以领到辛苦钱,所以就去找了老板,结果可想而知。


离开之后又找了一家只有三个人公司,准备的是java的简历,但是却让我做的是安卓应用,不过好在说有个师傅带我,一个看起来三四十岁的中年大叔,然后又包吃住,条件还算不错,于是就选择留了下来试试看。


之后的一个多星期,一边看安卓的视频一边学习,好歹写了个几个xml布局。以为我就要加入安卓的行列了,不过说实话那个时候的安卓还是很热门的,如果我当时坚持下来,可能现在也就不做前端这行了。


偶然的一天,我加了电脑前使用者的QQ,因为我知道他可能是之前的员工。于是我就开始跟他聊天,了解公司的情况。不聊不知道,一聊发现当时公司存在很多问题。什么拖欠员工工资,本来公司有十几二十个员工的,然后都因为工资的问题都离开了,他们还找过劳动部门投诉,等等一3系列问题,他也劝我不要在公司待了。说实话,当时真是脑袋发麻,开始又一次逃离。这一次,是连夜整理了行李,去投靠了当时合肥的一个哥们儿。


在哥们儿的学校,吃喝玩乐了几天,然后就又回到了学校。现在想来,非常能理解那些刚毕业的大学生被骗进传销组织了!在此感谢之前遇到的每个公司,每个人!


回到学校之后,就需要选择毕业设计选题了,现在已经不记得当时选的题目了,就是做一个学校内的网站以及网站的管理后台,这个项目是用到了我之前学的所有技能,为了做好这个毕设计,我感觉之前做的页面都太丑了,或者说我的审美比较高!第一次开始系统的学习 HTML 和 CSS 。


由于之前的学习涉及到页面,所以,这次学习非常轻松,看着自己写的页面越来越漂亮,就越学越有信心,感觉自己对标签和样式的操控得心应手,其实,HTML 和 CSS 的视频我通宵看了一个晚上,然后基本就掌握了,当时看着自己写的页面,完全忘记了自己通宵的事,一点都不困!


后来,开始了解JavaScript ,百度网盘里就存了很多js的视频,特别是秒味课堂的视频,之后就慢慢的学会做一切网页特效,幻灯片,tab切换,model弹层…


但是,对于js我学习起来还是比较慢的,或者说不能熟练掌握,一个月两个月还是不明白应该如果面相对象的写js,有点开始失去信心。可能这就是所谓的学习瓶颈吧!


后来就学会忘记,专心做毕业设计项目,因为当时掌握的前端技能,我已经能做出来比较好看的页面了!但是,我还是会隔一段时间重新看一遍js视频,前前后后我应该重复看了不下五遍吧!



再后来就放假回家了,当时放假在家也是每天都会写写代码,断断续续的就把毕业设计做完了,年后再次回到学校,身边的同学都再为毕业设计头疼的时候,我已经胸有成竹了,顺便还帮助了跟我一起选题的两个隔壁班妹子,项目我一个人做,她们只需要写她们的论文就好,最后毕业答辩非常顺利。因为做的项目,当时还和学院的院长认识了。


在毕业之前,我提前到杭州找工作,没有原因,就是觉的自己当时已经掌握了足够的技能,应该可以工作了!


我面试的第一份工作就没有面其他的了,做前端,切图做页面面,纯静态页面!因为当时的阶段是适应职场环境为主,没有讲究待遇未来规划,第一个月2500,记得当时到手2300百多,拿到的第一份工资很开心!在第一个公司写了一年多的静态页面!老板对我非常好,第三个月就给我涨工资,后来陆陆续续加薪,到我离开公司的时候已经奖将近六千!


在公司的工作不多,但是每次有项目来,我就会很快做完,当时还有一个刚毕业的设计师,我感觉跟她都属于共同学习的阶段,都是不在乎钱多钱少,能学习和进步就是最大的收获!这份心态让我掌握的CSS技能越来越熟练,又利用工作之余的时间学习了其他前端新技能,非常喜欢逛博客,探索新知识!


渐渐地学习了响应式设计,ajax前后端分离,学习node,新的样式规范css3...,开始了解前端框架等等…总之,每天都会有新的收获!



到后来,工作上的内容,完全满足不了我掌握的技能,感觉学了那么多却无用武之地,我知道,我应该要离开了,需要更多的挑战,虽然老板挽留,我还是义不容辞!


有一个朋友在苏州创业,刚好也需要前端,于是就加入了,这一次开始做了真正的项目,有后端有数据有安卓了!一个后端,一个前端,还有一个做安卓!我和后端的哥们儿慢慢的摸索着配合方式,开发流程!


那时候写的后台是用的easyUI,开始认真看文档,开始脱离视频学习,因为没有视频可以看,只有文档。每天都要用到jQuery ,所以jQuery 也可以熟练使用,虽然在之前就掌握的差不多了,但是每天写的感觉是不一样的!


那时候已经有mvvm框架,angular 于是就开始学习,断断续续应该看了一年的文档吧,可是看的也是一头雾水,不知所云,也就没有实战的经历,所以也就没有在项目中使用!


现在想想,当时每天操作Dom,拼接字符串的情景真是噩梦!单引双引嵌套很是棘手!这样的也持续了差不多一年,后来项目宣布死亡,我们几个人也就散伙了!


我又回到杭州,换了两份工作,一份工作了半年,一份就是现在工作一年了!前一份工作,一次在项目中用到了angular ,虽然只是简单的活动单页,非常感谢老大让我尝试,因为我开启了公司使用ng的先例,后来我走后,听说公司就开始用ng开发了!


学习ng的时候我能开始上手,其实是因为vue.js,之前一直看不大懂ng的,或者说不会用,但是,无意间知道了vue.js,非常清新的文档,感觉一年多困惑一下子就被解开了!


于是就有了后来写两个ng的活动页,后来换到现在的公司一直使用vue.js,还有个阿里的前辈带我,这一年从vue1.0到2.0,路由,ele框架,一路学来,感受良多,这里非常感谢前辈的带路。



写了这么多,也看不出来要表达什么。不过我比较想告诉正在学习或者已经在路上的小伙伴,前端这条路不难,但是也并没有那么容易,持续不断地学习,一点点的积累,不能心急,不要中途放弃。我自认为我不是一个聪明的人,没有天赋,我只是在学习在工作,在一点一点的积累!曾经也很急躁,也很迷茫,也会想放弃!但是我还是在坚持着,坚持着把代码写的更好!

谢邀。

这个问题其实提了挺久的,也有好几个人邀请我来回答,但这个问题实在是挺大的,要回答全了实在不容易,所以一直就没有写。这两天有空,想了一下,感觉还是可以把一些最重要的内容写一下,也算是能够让处于各个阶段的比较迷茫的前端工程师一条路子。


初级:能搭页面就行

第一个成就是比较容易达成的,我们只需要能够利用 HTML、CSS 和 JavaScript 将页面搭建出来,这个时候其实就已经具有一定的生产力,可以称为初级工程师了。

要实现「能够利用 HTML、CSS 和 JavaScript 将页面搭建出来」这个目标,我们要做的事情首先是学习 HTML、CSS 和 JavaScript 的语法,然后是学习这三个语言所带来的能力。这个所谓的「能力」,就像比如盒模型(最近听说有的人叫它框模型……),学习并理解它能让我们有逻辑有条理地把页面实现出来;又比如浏览器的 DOM API,学习并理解它能让我们控制页面的元素,以实现增删改查等功能。

除了 HTML、CSS 和 JavaScript 之外,其实有很多初级选手很容易忽略掉的是团队协作的能力。而其中具体到工具来说,就是 Git 以及 Github 的使用。一方面,我们进入到团队当中,不是一个人在战斗,所以我们必须掌握代码版本控制工具的基本使用;另一方面,Github 作为全球最大的开源项目托管服务网站,我们会在工作和学习中不断接触,所以学会使用 Github 也是很重要的。


中级:像搭积木一样搭页面

一两年前我面试人的时候,很喜欢一个问题:在什么时候开始,你觉得前端开发跟原来不一样了?

这个问题的背景,是一两年前其实大部分公司都在刀耕火种的时代,当时 React 正渐渐把 AngularJS 1.x 的风头盖过,Vue.js 还是在 0.x 版本。这正是组件化真正开始流行的时候。问这个问题的目的,就是希望考察候选人是否具有组件化的思维。而现在,我不会再问这个问题,或者说,我问这个问题的目的不会再是上面那样。因为组件化的思维,现在已经是我们在除了把基础的 HTML、CSS 和 JS 学好之外,马上需要学习的一种前端开发能力,它也是是我们从入门小白,转变成初中级工程师的必备能力。

组件化为我们带来的实质上是整个前端开发思维的转变,原本的开发模式是这样的:画页面框架(HTML)> 写样式(CSS)> 写功能(JS),我们会从上而下地瀑布式地开发页面,并且一个页面往往由单独一个人来开发;而在组件化思维下,我们的开发模式变为:把页面拆解成多个组件 > 分别去实现这些组件 > 将组件搭起来,这样是先拆解,然后从下而上地搭积木式地开发页面,而由于组件之间是相互独立,最后才被组装在一起的,所以我们可以将组件分配给很多个不同的人去并行地进行开发,最后再组装到一起。所以说,组件化给我们带来了质的改变,极大地提升了我们的开发效率。

所以说现在(2017 年年底)你还不会组件化开发,那你基本不太可能找到工作了

另外,前端组件化还为我们带来另一个非常厉害的能力,那就是编写 native 的能力,也就是说可以直接写像 Android、iOS 这些系统的 app。因为本身这些 app 的开发也是组件化的,前端组件化之后,相当于我们只需要找到一个转换关系,将前端组件转为客户端组件,就可以既获得 native 的性能(以带来良好的用户体验),又获得便捷的开发体验(不再需要学习各个平台 app 的开发)。像 React 就有 React Native、Vue.js 有 Weex,它们实际上做的就是这么一件事。

当然了,除了组件化之外,还有性能优化、设计模式、工具链(构建工具、测试工具、调试工具、持续集成工具等)、算法和数据结构、操作系统、计算机网络等,都需要进行学习。

另外,别忘了很多招聘广告中的一条:掌握一门后端语言。这一条要求实际上并不是真正的要求你掌握某门所谓的后端语言,而是要求你掌握后端开发知识。作为前端,很多初级的工程师可能只会关系如何去做一个页面,但实际上如何让一个页面跑起来也是一件很重要的事,前端开发作为 web 开发中的一环,前端开发者不应该只局限于前端开发,而起码要了解整个 web 开发应该是怎样的。

比如说,我们要明白一个 HTTP 请求到达服务器,后端可以用什么方法去解析这个 HTTP 报文、解板后怎么利用、怎么和数据库打交道以实现增删改查的功能等。我们会需要去学习 web 服务的搭建(如 Nginx、Node Server)、MVC 架构的机制、数据库和文件 IO 读写等,顺道我们还会去学一下基础的命令行命令(Shell)怎么使用。


高级:规划、复盘、视野

关于这个级别甚至更高的级别的进阶之路,我之前在《〈美团旅行前端技术体系的思考与实践〉知乎 live 文字稿》 中有详细地说明,这里就不再展开了,有兴趣的可以点开看看。


各阶段如何学习?

现在线上其实有很多资料可以学习,但信息爆炸很多时候反而让我们更不好找学习资源。这也是为什么现在慢慢出一些比较精品的课程,毕竟在信息爆炸的时候信息整理优化是刚需。

那天听朋友说优达学城出了一整系列的前端课程,他学了一下跟我说还不错。我问了一下他都学了哪些内容,他跟我说有基础,有 React,还有后端等包括的内容非常多。这引起了我的好奇,毕竟 Udacity 之前还没有进入中国之前我就在上面学过课了,个人感觉这网站的课程还是挺靠谱的。于是我去看了看,发现他们的讲师看背景都来自 Google、Facebook 什么的,一如既往的 Udacity 强势师资风格。

我再看学习路线,这才是关键!因为之前我看见过很多的前端课程,基本都是要不落后了,要不就设计得不合理乱堆课程。而 Udacity 这次的前端课的学习路线让我觉得挺不错的,因为他们的路线设置得很合理。

比如我前面提到的初级工程师需要学习的内容,在他们的 前端开发课 中就有,如 HTML、CSS、JavaScript 和 jQuery 基础、响应式布局,甚至还有团队协作工具 Git 和 Github 的内容。进阶的还有 JavaScript 的设计模式、作用域、闭包、ES6 和 JavaScript 测试。我觉得要是能把这些学完吃透的话,基础可以说是比一般的初级工程师扎实了。

而中级工程师所需要的组件化和后端知识,也有相应的 React 开发课程 以及 全栈开发。React 课程是从基础,讲到 React 很关键的状态管理框架 Redux,最后到 React Native,覆盖的范围还可以。而全栈开发课程中,就有涉及到关系数据库、后端的 CRUD 和 RESTful API 以及一些 Linux 的基础知识以学会配置服务器。

整个路线下来比较全面和扎实,安排的内容也比较合理和新颖。刚刚登录了一下,竟然发现现在可以双向优惠,报名时填入优惠码 E7EBF449,双方都可以优惠 300 元,给大家也给我自己谋点小福利:)

这个行业内没有什么事情是纯前端的,也没有什么事情是纯技术的,所有事情最终都要对业务有贡献。所以无论你做的是什么技术,都是这样一个 loop:

while (还需要上班 || 还想要上班) {

let 信息 = 搞清楚业务到底是什么();

let 判断 = 自己是否对做好做大这项业务有兴趣(信息);

if (判断 === 没兴趣) {

try {

换组();

} catch (换组失败) {

换公司();

}

} else {

把业务做好做大();

}

}

在你尝试把业务做好做大时,再分析业务到底需不需要技术和需要什么技术。如果业务不需要技术,但你仍然感兴趣,那也可以做啊。如果业务需要的技术你不懂,但你觉得能学得来,那也可以做啊。但如果你自己挑剔,那就只能回到那个 loop 里面换组换公司了。

首先,虽然公司要求不高只是搭页面就可以了,但是一般都有一套业务逻辑,一套工作流程,这些也都是要学习清楚的东西,也是扩充自己实力的一面。然后公司只搭页面,你可以优先学一些html5,css3,这些有些动画,特效什么的,你确定自己都学会学懂了吗?最后除开搭页面,你自己就不能做点其他的吗?我觉得如果你觉得自己设计页面结构和代码管理上都不错了的话,也可以开始学习其他JS内容,框架(angular,vue,react),前后端交互(http,ajax)这些都是可以看的,你要学习自己扩展自己的技能,不能因为公司就要你搭页面,你就觉得自己就只能学相关内容了。

问题拆解

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

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

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

如果在这两个点上面能够做到的话,越高的收入,越强的技术,越大的影响力,那么无疑已经能够为这个社会做出很大的贡献了,已经站在一个高的位置了。也就达成了往高处走。对于这个任务的话,对于自己的当下的工作,行动该如何分拆。

深度与广度

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

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

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

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

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

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

软实力

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

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

扩展自己的兴趣爱好,尝试去阅读更多历史相关的书籍,纪录片等,会让自己的视野扩展开来的。有时候虽然看上去好像不太跟自己的直接技术挂钩。但是却会教会你如何突破认知上限,做到融会贯通。我自己的话,当时看了,而且就算是科技届也会有不错的书籍,开拓自己的事业『失控』,『人类简史』,『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 相关的东西。技术上基本上从浅层,到底层一路跑过来。越到后面,越发觉得自己的知识不够用。

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

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

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

责任编辑:
热门阅读排行
© 16货源网 1064879863