Web前端的路该怎么走?

其实一开始没想到会有那么多人回答,我相信我能从各位的回答中找到我想要的,并且找到我自己的路。谢谢各位前辈的指点。
------------------------------------------------------------------------------------------------------------------------------------------
刚刚毕业,在公司一直做的是前端开发,之前都是自己去学习一些基础的前端知识(html+css+js)。到现在越来越迷茫,不知道自己该去学哪方面的。 在学校学的都是一些基础知识,毕业之后自己自学了JavaScript,在这个公司,要求不高能搭页面就行,可是我想提升自己。.求各位前辈指点!

相关问题:
本科生如何系统地学习前端开发? - 网页设计 (Web Design)

回复内容:

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

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

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

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

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

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

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

第四个问题,多推荐一些前段面试的流程,和技巧吧。自学前端的小白!!!感谢
以前写过的如何面试前端工程师,可做参考:如何面试一名前端开发工程师? 这是个很长的故事,讲述的是一名电竞玩家转行文字编辑后的程序历程与开发感悟。

-----------------
目录
-----------------
  • 引言(一)
  • 引言(二)
  • 一,奇葩的转行
  • 二,第1个电商项目
  • 三,一个阶段小结
  • 四,第2个电商项目。
  • 五,第3个电商项目(上)
  • 六,第3个电商项目(下)
  • 七,第4个电商项目
  • 八,前端开发者快速升级通关的一些个人经验总结
  • 九,谈谈互联网项目环境对于前端开发者向高阶晋级的影响
  • 十,个人职业发展的超级野路子——准职业选手转编辑再转php开发再转前端开发
  • 十一,个人素养与coding(一)——我是如何反复“打怪”强化“代码素养”的
  • 十二,个人素养与coding(二)——电竞/编辑经历对开发基本功素养的影响
  • 十三,个人素养与coding(三)——开发者的战术素养和程序的正与邪,开发者的道不同不相为谋
  • 十四,个人素养与coding(四)——开发者的战略素养对职场嗅觉的影响
  • 后记:第4个电商项目——分裂,生存,可能还有崛起。

======================
这里是序。
======================

这是一篇长文。

任何一篇长文或专题,都是应该有一个序。
这是做为一个合格的媒体编辑/记者非常重要的技能点,要反反复复地训练。我曾经训练过很多次,但时间已然有些久远,已经好久没有动笔写这样的序,借这个机会,让我再次尝试做好一名编辑该做的事情。

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

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

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

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

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

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

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

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

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

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

当然,我的版权意识是比较浓的,毕竟咱也做了好多年的写手、编辑、记者。我的意思——转载可以,但记得署名,只要署名(知乎的名字就可以了),永久免费。但对于不署名的,我保留追究的权利,并至少按1000字/千元(RMB)的稿费标准收取稿费。不要觉得贵,这是我当年做写手的后期可以拿到的最高稿费标准,也就是我认为我的文字值这个价,请按此执行,不谢。

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


=======引言1=======

一夜之间来了这么多赞,倍感欣慰。

正好今天我们部门要搬家,正好没有发版需求和特紧急的开发任务。我打算偷懒让人帮我打理桌面,哈哈,我好抽时间,继续补充一些关于前端开发或程序开发方面的想法,希望把这个话题扩大,让更多人来关注和讨论,期待真正的前端大牛来分享职业发展的经历,会有人需要的。

顺便说一声,我还是想求赞的。这不违法吧?

嗯,先让我回想一下,为啥这个题目会让我愿意投入这么多精力来码字,愿意出来现身说法?

我觉得,这肯定是一个好问题。题主想要在职业选择迷茫期获得前辈提供的经验,而决定是否要继续走前端开发这条路线。事实上,这个问题具有普遍性意义。不管是在校学生,还是工作了,但依然对前端这个工种到底有啥可玩的,它能发展到哪个位置,前端能出技术总监或CTO吗?

男怕入错行,女怕嫁错郎。因此,任何的回复都会对题主或关注这个话题的人的职业决策带来影响。因此,我才会对意识流的高票答案用了一些刻薄的语言来回复,并不想卖弄文字技巧,先说声抱歉,但我是故意。

职业路径选择,是一个严肃的话题。

补充在最后,是关于个人对程序修养的看法或理解。为啥说这个?这和前端开发或各种程序员的职业发展有啥niao关系吗?我认为是有关系的,而且很大,约往高处,关系越明显。可以这么说,个人的修养好坏在很大程度上会决定一个人的职业发展高度,写代码也是一样的。这似乎很哲理化,但我的观念就是这样的。

当然,也是个人的观点,你可以不用同意,甚至觉得我在扮高调,放屁。但我希望你回得有理有据,咱们用文字约战。

==========引言2===========

暂时没有看到让人满意的回复,忍不住回复。

先对题主说:这个问题其实有很多类似的提问了,这里有一个集合前端开发知识的整理文章,知乎上,前端开发领域有哪些值得推荐的问答? - JavaScript,在里面可以找到很多你赶兴趣的问题与答案。

开始之前,我要对于目前的高票答案进行吐槽。

高票答案说的确实是有点点道理的,但对于从事前端并陷入迷茫的提问人来说,绝对是然并mei啥卵yong的。不知为何大家给高票,如果只是因为答主用了一个新鲜的说辞,而大家觉得有点意思就顺手点了个赞,那么,我认为这对于知乎的严肃性是一种伤害,当然对于知乎的娱乐化则是一种推动。也可能,大家更喜欢意识流的答案,抑或是,我太严肃了。

好吧。我尝试用严肃又有点轻松文字表达方式来回答题主的疑惑。到底前端的路可以怎么走?

纯属个人路线,仅供参考。如有雷同,请勿代入。

==========================
一,奇葩的转行。
==========================
先var身份。

首先,前端一枚。30++++了,算是老猿吧,年纪不小了。至今没啥拿的出手成绩,就喜欢coding,不谈天荒地老,只希望能写到写不动。

其实,我也不知道自己的水平在什么段位,年初拿到了两个一线互联网的offer,被定位在相当于阿里P6/P7样子,也不知道怎么评的,自己觉得最多P5的水准,自感能力有限和性格不适合大公司,主要是被现在领导忽悠说那些大公司政治斗争非常厉害的,我又特担心自己EQ值太低,经不起考验被扫地出门而颜面无存也就放弃了,所以还是一起做电商创业项目比较实在,薪水别太离谱,有感兴趣的活干,说话分量也有那么一点,关键是上班能自由一点点,其实也挺好的。

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

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

首先,做过几年的媒体编辑,对的,是平煤(对文字要求严格,错别字个数有严格限制的),客串过记者(采访过不少上市公司的总裁,如果说互联网的话,最牛逼的是现在京东的4个总裁之一,辛弃疾的后裔,如果他还记得我的话...),曾经写过不少IT媒体的专栏,比如电脑报、电脑商情报、电脑爱好者之类的媒体,后来看到IT媒体日薄西山,就半路出家。当然,不是去少林寺做和尚,只是转行做了另一种和尚——程序猿。

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

现在每天就是T恤+牛仔+拖鞋+电脑背包,非常标准的coder。所以说,曾经是个文艺青年的我,在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),我们在维护模板引擎的时候需要反复地维护类似这样的代码:


最好定向发展。前端是统称,大公司里会分为页面重构工程师,javascript工程师和H5工程师。

页面重构工程师的看家本领就是要能把设计图做到99%的还原。我之面试别人的时候会让对方做一个简单的页面。做好后用三大内核的浏览器打开后截屏。然后放到photoshop里,调整透明度,看是否能与设计图重合,重合率越大当然说明你的兼容做的越好。重构能力越大。这样你就可以做一个优秀的页面重构工程师。此时你不需要别的技能了。什么优化之类的,你也不需要考虑。

javascript工程师主要是做核心库,有些公司具有自己的框架。javascript主要是做这个的。在H5时代之前,javascript也要做出动效。但目前动效基本由H5工程师来做。

再说H5工程师,这几乎是为移动端开发的专门准备的。其看家本领是1)适配:适配各种手机。2)动效,各种动态效果,过渡,变换等。
3)能熟练通过api调用手机底层,如震动,拍摄,定位等。4)能做app 5)能做游戏


所以大致就这三个方向,就看你选择哪个了。


很多人想把css,javascript,html等一并学会,其实那样大而全是无法学好的。前端的新技能层出不穷。有时你还要能写测试之类的。

但是定向发展就不需要这样。

我之前是做玩具设计的。用maya建模,然后通过一套软件能让其在web上3D展示。后来就学习了javascript,建模也用blender建模,通过javascript把用blender建好的模型渲染出来。所以我对javascript有一定的了解,尤其是canvas和webGL方向。

但愿我没有误导你,只是觉得定向发展最有出路。

因为什么都会肯定就是什么都不会。 大家让开,我要开始装逼了。



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

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



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

真可谓是百花齐放啊!




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


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





……

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

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

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



我还能说些什么呢。

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

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

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

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

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

我纯手机吐槽,折叠吧…

首先得入门,这没什么说的了,至于如何入门,可以参考 如何帮助前端新人入门和提高? - 野次的回答

一旦入了门,大家的第一层烦恼就解决了。在入门前,我们是一辆熄火的汽车,根本没法往前开,入门后,汽车才相当于是启动了。慢慢的汽车会越跑越快,这时很多问题就会出现。

问题一: 汽车的零件能不能支持汽车的高速行驶,其实也就是我们的前端基础(html,css,js)是否牢固,能支撑我们对新东西的快速学习和消化。

问题二:汽车改往哪开。也就是前端工程师的职业分化。

问题三: 方向知道了,怎么才能开的到。

我们先来说第一个问题,无论前端工程师的职业发展道路是怎样的,最源头的起点都一样。必须得夯实牢固的基础,html,css和js不能有半点的偷懒。怎么能看出你的基础是否牢固了呢,去看bootstrap, foundation, jquery这些主流框架的源码,只要有你不懂的,说明好不够,不课直到看这些东西毫无压力。这是我们走往牛掰道路的重中之重。因为我猜你也不会愿意在研究一个新工具的时候发现自己还看不懂他的代码语法吧。

第二个问题,其实也是这个问题最关心的问题,去向何方。我直接列出我认为的web前端攻城师的职业发展方向:

1. 前端交互工程师 --- 一半技术一半交互设计,可以说去掉工程师的头衔,你是个交互设计师;不说你做交互,那么就是页面工程师。其实就是从最初的技术路线上更偏向于交互设计发展了。

2. 前端技术专家 ---- 这时候的技术水平会非常高,所做的工作是研发前端技术工具,类似说研发jquery这样的框架,gulp工具;或者是研究如何极致的提高页面的加载速度,做代码的压缩,请求的优化,性能分析和统计等等。

3. 前端架构师 ----- 前端也是有架构的哦,不要以为前端就是垒页面哦。前端架构师需要了解和负责的东西会很多。一个项目的整个前端涉及到的开发规范、项目模型、开发类库、代码构建、代码组件化、项目部署、测试都是架构师的锅,啊不是,是架构师的活。

4. 团队管理者 ----- 这时已经是走上管理岗了,也是会逐渐脱离一线代码区。

5. 交互设计师或者产品经理 ----- 前端是离用户最近的产品,所以有些前端工程师最后直接就转向交互设计师和产品经理,不在一线写代码了。

那么这时看第三个问题:方向我都知道了,我该怎么去啊?
如果说你是想朝交互设计师或者产品经理的方向发展的话,那么就不涉及到技术上的问题了。这时更多的是你需要去研究优秀的互联网产品,跟着你公司里的优秀的产品经理和交互设计师学习。

另外就是往技术专家和架构师的方向发展,这时更多的职业成长还是技术层面上的积累。我们该如何学习和成长:
1. 关注牛人,跟着牛人学习,follow他们 知乎上有哪些 JavaScript 高手? - 前端开发 , 或者公司里如果有牛人,直接贴身学习最完美
2. 上github,github上的js,css,html板块上排名靠前的项目都是教科书般的牛x代码,star这些项目研究代码,follow这些作者,有问题甚至可以私信交流。技术人基本都很热心解答问题
3. 可以加入github上的一些好项目,贡献代码
4. 自己尝试着做一个工具或者框架,来解决自己工作中开发遇到的不顺

转管理的话,那么其实在工作初期就要有意的培养自己协调和沟通能力了,同时项目的进度评估等等都是需要一直锻炼培养的,这里不展开了

这就是大概的路了,至于如何,看自己有多大的心想去走,有多少的能力能去走.good luck! 前天在车站上写的一些个人感想 ,有点点乱(好吧,很乱),我还是再整理一下哈哈哈。

入门
前端的入门可能会比较容易,例如一些最基本的公司可能就仅仅要求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了的应届生。自己也没有完全确定一条自己的前端之路,因为我每走一步我都会发现好多好多。我是觉得自己并不需要这么快就定下来,我喜欢前端,我也喜欢实现自己的想法,所以我想去了解更多可以实现我想法的工具,了解一些新的技术,钻研一些旧的东西。
一切迷惘,我觉得都是因为了解的不够多,时间还没到。这时候,需要积累。我相信这样积累下去,直到某一天,我会突然发现自己应该前进的路。 少年,我看你骨骼精奇,这张前端拓补图你暂且拿去。


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

图转自:
【IMWeb】web前端知识拓扑图参考 如果是学习前端的话,推荐看一篇文章《zhuanlan.zhihu.com/p/20

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

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

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

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

  1. 能做到你想做的: Tasking与学习能力
  2. 用更好的方法来实现功能
  3. Better Code & Architecture
  4. Growth Hacking
技术都是有壁垒的,无论前后端,个人能力和精力、技术更新迭代的速度、行业和企业的岗位需求度等都可能成为你在技术上的壁垒。

所以你要对自己的职业有清晰的规划。 需求激发学习动力,如果这个公司满足不了你的发展,那就跳出去吧