如何快速掌握一门新技术/语言/框架...

IT行业中的企业特色是都属于知识密集型企业。这种企业的核心竞争力与员工的知识和技能密切相关。而若是你在企业中扮演的是工程师的角色的话,那么你的核心竞争力就是IT相关的知识与技能的储备状况。而众所周知,IT行业是一个大量产生新知识的地方,就拿Web前端举例,短短的5,6年时间,Web前端已经经历了数次变革,就目前来看变革还将继续下去。从之前的div+css网格化布局到JavaScript的方兴未艾,而后是各类JavaScript框架的百家争鸣,HTML5和CSS3的落地,移动web冲击下带来的响应式设计,jQuery,AngularJs,ReactJs等操做DOM元素大相径庭的理念和方式,web component的标准化进程……为何如今企业处处都在招前端工程师?好像忽然之间,前端工程师成了稀缺资源。这里的缘由之一就是不少前端工程师跟不上行业变化,没法达到目前市场上对前端工程师的能力和要求。在这种大环境下,工程师可以掌握快速学习的能力就变的相当重要。css

笔者根据自身的亲身体会,以及结合对周围同事的观察,对如何快速掌握一门新技术(这里的技术包括一门新的IT技术,包括一门新的编程语言,抑或一种新的程序框架等)有着如下几点指导。html

要想快速掌握一门新技术,首先有两个先决条件。前端

  1. 首先思想要主动求变,勇于跳出的本身的温馨区,对任何技术都抱有开放的心态。贪图安稳是人的本性。而这种本性每每会阻碍你的发展。人所能了解的知识的多少,取决于本身的温馨区有多大,温馨区越大,与外界接壤的范围越大,就越感受本身的无知。程序员至少要作到两点,不要对本身不了解的技术心存偏见,不要对本身不熟悉的技术心存恐惧程序员

  2. 要化被动式学习为主动式学习。在中国很大一批程序员天天都是在被动式学习。什么是被动式学习?就是被人、事逼着去学习。今天新启动一个项目,技术调研不想采用新的技术,开发过程当中碰到难题才会去查资料,成天就是把别人的、自已之前写的代码复制重用,复制之后出问题了也要花好长时间解决。举个例子,一个程序员使用了Spring好几年,都不知道Spring的核心理念,不知道Spring框架结构,不知道Spring各个组件功能,不知道Spring新版本的新特性。这是很是可怕的,由于你不知道这些东西,就没法采纳Spring的最佳实践,出现问题不知道如何快速定位,项目中的某些需求就没法使用Spring早已封装好的功能(由于你不知道Spring还能干这个)。主动式学习须要你未雨绸缪,不能临时抱佛脚。并且要把学习看作是对本身的积累和提升,当作是对本身的长期投资,不能抱有太强的功利性。web

有人说,我就是喜欢温馨区,我就是不喜欢主动学习,有什么好的方式和方法改变这两点?说实话,我所能提供给你的帮助颇有限。正如《后会无期》里的一句台词,“我听过不少大道理,可依然过很差这一辈子”。这两点仍是更要靠你我的来实现。而接下来的一些点,我相信能够帮助到你。spring

  1. 学习一门新技术前,先要搞清楚为何要学习它?没这个技术前咱们是怎么干活的?有了它之后咱们又是怎么干活的?它带来了哪些改变?其实问这些问题,就是为了了解该技术解决或者简化了那个问题域的问题,又是采用了什么方式达到了这样的效果。就拿AngularJS为例,AngularJS最初是为了弥补HTML构建应用的不足。之前的HTML在设计时是为了展现多媒体信息,后来虽然拓展了一些动态功能,可是在应用web化的潮流下,HTML设计上的不足就愈来愈突出。好比DOM元素操控太繁琐、业务逻辑很难模块化、可测性低、开发效率底下等。而AngularJS采用了一种全新的设计来解决该问题,它提出了一系列概念,引入了数据绑定、标识符、路由、依赖注入等特性,大大简化了咱们开发WEB开发的工做量。经过这样的方式能迅速创建起了对该技术的宏观认识,了解了其潜在的应用场景、应用方式以及一些局限性等。编程

  2. 接下来就要实际使用一下该技术的核心的功能,强化对它的认识。方式就是参考该技术官网的Quick Start(快速开始)章节,一步一步来。如今的程序员愈来愈珍惜时间,文档的简洁性、完备性、易上手都成了是否采纳某项技术的指标之一。尤为是如今的各类开源组件,连文档都是开源的。因此不少文档都是彻底按照程序员的思惟写的,读起来很清爽。再拿Spring来讲,想学习Spring4.0推出的Spring boot组件,那么能够访问其官网,页面上最大的按钮就是Quick Start。点击学习吧。页面是一个简单的例子,可能花不了你五分钟。若是还没过瘾,右边又列出了更多的 Getting Started Guides ,也是一步一步的教你进阶功能。有些人可能要问了,英语很差怎么办?请学英文。英文是一个优秀程序员的必备技能。可能也有人说,看文档时有各类杂音咋办。好比看Spring boot的start guide,须要以前对Spring有必定了解,须要知道tomcat、jetty是干啥的,须要有必定gradle或者maven使用经验…这些知识在演练Spring boot的那个小程序时都须要,但因为这些杂音的干扰,会拖慢学习的过程。摆脱这些杂音的惟一方式就是,对于那些不了解的知识点,也花时间去学习吧。因此学习是一个良性循环的过程,学的越多,就学的越快。小程序

  3. 前面两步可以保证你对一门技术入门,那么如何进阶那?这个阶段就是读了。从官网上把该技术的详细文档扒拉下来,使劲读吧。通读这些文档能让你进入它的实现细节,以及各类使用方式与场景,甚至一些最佳实践。好比Spring boot官方文档,详细到了牙齿。凡是你想到的、没想到的,文档都贴心的列了出来。若是你想学习Scala,那么请访问http://www.scala-lang.org/documentation/,各类文档应有尽有,读完就是大半个Scala专家。一门技术最好的文档必须是它的官方文档,若是不是,那么这门技术火不了。注意通读文档的过程当中必定要在项目加以运用。若是在项目中没实践机会,本身能够写一些小的demo来实践。学习知识时实践与理论相结合的道理恒古不变。tomcat

  4. 走完前三步,你对这门技术的理解已经比大多数人强了。你能够算掌握这门技术了。那么还有进阶方式没?固然有,那就是把你所学、所想讲出来,写出来,暴露在公众之下,接受批判,从而发现本身的不足,促使你进步。有空给你们作几个讲座,写几个系列文章,那么你在你们眼中就成了这门技术的牛人。你就有了各类机会来解决使用该技术遇到的各类疑难杂症,反过来加深和修正你的理解。没事上上StackOverFlow,回答别人几个问题,或者订阅该技术的问题列表,常常看一看。前端工程师

  5. 还能够再继续深刻。加入国内/国际技术社区(国内没这样的社区咋办,机会来了,赶忙本身建一个),进一步发挥本身影响力。翻译、编写与该技术相关的书籍;若是该技术是开源的,那么有时间就提交修改把,本身就成了开发者一员了。这就是质的飞跃,从使用工具进阶到创造工具。

走完5步,你已经不是仅仅掌握这门技术了,你已经超神了好吧!有人可能又会问,能达到这五步的确定要花很长时间,不是通常人可以到的高度。那固然了,这个过程确定很难,但并不是难到登天。至少我身边有不少这样的例子。其实你只要完成前三步,你就比50%的程序员牛了,完成第四步,你已经站在90%程序员的前面。

最后快速总结。重要的事情说三遍。

  1. 主动学习很重要,主动学习很重要,主动学习很重要。

  2. 官方文档很重要,官方文档很重要,官方文档很重要。

  3. 实践很重要,实践很重要,实践很重要。

相关文章
相关标签/搜索