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