近十年来,前端的发展势头迅猛,每一年都会出现很多新的技术和标准。「If you are not growing,then you are dying.」这句名言对于前端工程师一样适用。维持现状就是落后的开始,不断地学习才是必修课。前端
话说回来,在时间和精力有限的状况下,那么多技术到底该怎么学?其实,技术的本质都是基础的设计模式和编程思想。只有把基础打好,学习新技术才不会吃力,达到「磨刀不误砍柴工」。算法
快速进阶的方法
首先,「开源项目」和「造轮子」是我我的推荐的作法。编程
参与开源项目贡献的前提是你必须是项目的用户,而且在使用过程当中遇到了问题。这样,你才有机会参与开源项目贡献。在遇到 bug 时不仅提出 issue ,同时修改代码而且提交 pr,当 pr 被接受时,这个贡献才算完整。设计模式
为了达成这个目标,你不得不阅读这些项目的代码,做为此项目的用户,读清楚代码而且和业务相结合是最容易的,在这个过程当中,吸取先进的写法和理念,提高会很快。在 pr 提交之后,会有项目成员 review 你的代码并给出修改意见,这是一个很是有意义的过程。那么问题来了,如何在现有的开源项目中找到一个 Bug ,又或者建立合理的特性呢?这仍是须要必定功底的。因此说,参与开源项目贡献并不适合初学者提升技术能力。浏览器
下面说说造轮子。这也是不错的选择,可是,造出来的轮子不多会被使用在生产环境中,除非你的轮子真的独一无二 —— 由于对于一个项目来讲,“稳”是排在第一位的。除了你的技术 Leader, 或许没有人会去关注项目中使用了哪些先进的技术和思想。前端工程师
若是你的公司有基础建设部门,坚决果断的去那里吧,那就是造轮子的地方 —— 而且基本上都在使用原生技术,这里的每个轮子都有可能变成开源项目。在这里,技术会获得大幅度提高。可是,若是自己技术通常,如何才能进入基础部门也是一个问题。那么就有了下面的内容。数据结构
初学者怎么办?
对于 Web 前端工程师来讲,前端包含两点,即「呈现」和「业务」。框架
对于呈现,那主要是 HTML CSS 的事情,如今你们的浏览器在解析文档方面基本上已经没有太大区别了,因此如今的原生前端开发者不多去关注浏览器兼容的事情,在这里所要作的就是记忆,不要求记住全部,但起码要知道它们都有什么特性,在有需求的时候就不会太过于慌乱。学习
对于业务,这里主要使用的是 Javascript (ECMAScript) 。既然是编程,在掌握基本语法的基础上还须要了解数据结构、算法、设计模式以及常见的编程范式,这些都是「起高楼」的基本功。网站
个人建议是,可以简单使用原生语言实现业务后,再考虑使用框架和类库。由于咱们知道了基础原理后,使用框架和类库的过程当中你就会知道到底发生了什么,只有这样,在更换同类型框架或者类库时才能举一反三。这一切的一切都源于基本功。因此,沉下心来修炼基础才是重中之重。
方法论
其实对于任何一门「技术」,不管是编程仍是修理挖掘机,初学和进阶的模式都是同样的。
1. 先了解行业,掌握基础知识
了解编程是作什么的,数据结构,算法,设计模式,常见的编程范式,这些都是须要掌握的。虽然是老生常谈,但打好基础的确是进阶之路的重中之重
2. 小试牛刀
本身虚拟一个项目试一试,亲自玩一玩,从中一定会有所收获。
3. 上手实践
进入正式的项目,而且经历真正的项目磨练。
4. 总结经验
步骤3 和 步骤4 是循环的过程,当经验足够多时,就能够进行下一步骤了。
5. 传道、授业、解惑
当经验积攒到必定数量,别忘了进行「输出」,方式不设限,能够讲给别人听,也能够和同行进行交流。输出是巩固知识最有效的方式。写程序就是带徒弟作Leader,没事作作开源贡献,弄个开源项目玩玩。
6. 巨大的质疑和迷惑
了解了行业一切运转的规律,思考其原理和内核,提出问题。
「为何要这样?」「怎么样才会更好?」
7. 创造者
到了这个阶段,全部的技术都要听你的了,固然,也是比较高的阶段。
对于编程者来讲也许是制定新版本的语言标准?
与君共勉。
一个彩蛋
“道生一, 一辈子二, 二生三, 三生万物”
下面这个网站就是“一”