IT行業中的企業特色是都屬於知識密集型企業。這種企業的核心競爭力與員工的知識和技能密切相關。而若是你在企業中扮演的是工程師的角色的話,那麼你的核心競爭力就是IT相關的知識與技能的儲備狀況。而衆所周知,IT行業是一個大量產生新知識的地方,就拿Web前端舉例,短短的5,6年時間,Web前端已經經歷了數次變革,就目前來看變革還將繼續下去。從之前的div+css網格化佈局到JavaScript的方興未艾,而後是各類JavaScript框架的百家爭鳴,HTML5和CSS3的落地,移動web衝擊下帶來的響應式設計,jQuery,AngularJs,ReactJs等操做DOM元素大相徑庭的理念和方式,web component的標準化進程……爲何如今企業處處都在招前端工程師?好像忽然之間,前端工程師成了稀缺資源。這裏的緣由之一就是不少前端工程師跟不上行業變化,沒法達到目前市場上對前端工程師的能力和要求。在這種大環境下,工程師可以掌握快速學習的能力就變的相當重要。css
筆者根據自身的親身體會,以及結合對周圍同事的觀察,對如何快速掌握一門新技術(這裏的技術包括一門新的IT技術,包括一門新的編程語言,抑或一種新的程序框架等)有着如下幾點指導。html
要想快速掌握一門新技術,首先有兩個先決條件。前端
首先思想要主動求變,勇於跳出的本身的溫馨區,對任何技術都抱有開放的心態。貪圖安穩是人的本性。而這種本性每每會阻礙你的發展。人所能瞭解的知識的多少,取決於本身的溫馨區有多大,溫馨區越大,與外界接壤的範圍越大,就越感受本身的無知。程序員至少要作到兩點,不要對本身不瞭解的技術心存偏見,不要對本身不熟悉的技術心存恐懼。程序員
要化被動式學習爲主動式學習。在中國很大一批程序員天天都是在被動式學習。什麼是被動式學習?就是被人、事逼着去學習。今天新啓動一個項目,技術調研不想採用新的技術,開發過程當中碰到難題纔會去查資料,成天就是把別人的、自已之前寫的代碼複製重用,複製之後出問題了也要花好長時間解決。舉個例子,一個程序員使用了Spring好幾年,都不知道Spring的核心理念,不知道Spring框架結構,不知道Spring各個組件功能,不知道Spring新版本的新特性。這是很是可怕的,由於你不知道這些東西,就沒法採納Spring的最佳實踐,出現問題不知道如何快速定位,項目中的某些需求就沒法使用Spring早已封裝好的功能(由於你不知道Spring還能幹這個)。主動式學習須要你未雨綢繆,不能臨時抱佛腳。並且要把學習看作是對本身的積累和提升,當作是對本身的長期投資,不能抱有太強的功利性。web
有人說,我就是喜歡溫馨區,我就是不喜歡主動學習,有什麼好的方式和方法改變這兩點?說實話,我所能提供給你的幫助頗有限。正如《後會無期》裏的一句臺詞,「我聽過不少大道理,可依然過很差這一輩子」。這兩點仍是更要靠你我的來實現。而接下來的一些點,我相信能夠幫助到你。spring
學習一門新技術前,先要搞清楚爲何要學習它?沒這個技術前咱們是怎麼幹活的?有了它之後咱們又是怎麼幹活的?它帶來了哪些改變?其實問這些問題,就是爲了瞭解該技術解決或者簡化了那個問題域的問題,又是採用了什麼方式達到了這樣的效果。就拿AngularJS爲例,AngularJS最初是爲了彌補HTML構建應用的不足。之前的HTML在設計時是爲了展現多媒體信息,後來雖然拓展了一些動態功能,可是在應用web化的潮流下,HTML設計上的不足就愈來愈突出。好比DOM元素操控太繁瑣、業務邏輯很難模塊化、可測性低、開發效率底下等。而AngularJS採用了一種全新的設計來解決該問題,它提出了一系列概念,引入了數據綁定、標識符、路由、依賴注入等特性,大大簡化了咱們開發WEB開發的工做量。經過這樣的方式能迅速創建起了對該技術的宏觀認識,瞭解了其潛在的應用場景、應用方式以及一些侷限性等。編程
接下來就要實際使用一下該技術的核心的功能,強化對它的認識。方式就是參考該技術官網的Quick Start(快速開始)章節,一步一步來。如今的程序員愈來愈珍惜時間,文檔的簡潔性、完備性、易上手都成了是否採納某項技術的指標之一。尤爲是如今的各類開源組件,連文檔都是開源的。因此不少文檔都是徹底按照程序員的思惟寫的,讀起來很清爽。再拿Spring來講,想學習Spring4.0推出的Spring boot組件,那麼能夠訪問其官網,頁面上最大的按鈕就是Quick Start。點擊學習吧。頁面是一個簡單的例子,可能花不了你五分鐘。若是還沒過癮,右邊又列出了更多的 Getting Started Guides ,也是一步一步的教你進階功能。有些人可能要問了,英語很差怎麼辦?請學英文。英文是一個優秀程序員的必備技能。可能也有人說,看文檔時有各類雜音咋辦。好比看Spring boot的start guide,須要以前對Spring有必定了解,須要知道tomcat、jetty是幹啥的,須要有必定gradle或者maven使用經驗…這些知識在演練Spring boot的那個小程序時都須要,但因爲這些雜音的干擾,會拖慢學習的過程。擺脫這些雜音的惟一方式就是,對於那些不瞭解的知識點,也花時間去學習吧。因此學習是一個良性循環的過程,學的越多,就學的越快。小程序
前面兩步可以保證你對一門技術入門,那麼如何進階那?這個階段就是讀了。從官網上把該技術的詳細文檔扒拉下來,使勁讀吧。通讀這些文檔能讓你進入它的實現細節,以及各類使用方式與場景,甚至一些最佳實踐。好比Spring boot官方文檔,詳細到了牙齒。凡是你想到的、沒想到的,文檔都貼心的列了出來。若是你想學習Scala,那麼請訪問http://www.scala-lang.org/documentation/,各類文檔應有盡有,讀完就是大半個Scala專家。一門技術最好的文檔必須是它的官方文檔,若是不是,那麼這門技術火不了。注意通讀文檔的過程當中必定要在項目加以運用。若是在項目中沒實踐機會,本身能夠寫一些小的demo來實踐。學習知識時實踐與理論相結合的道理恆古不變。tomcat
走完前三步,你對這門技術的理解已經比大多數人強了。你能夠算掌握這門技術了。那麼還有進階方式沒?固然有,那就是把你所學、所想講出來,寫出來,暴露在公衆之下,接受批判,從而發現本身的不足,促使你進步。有空給你們作幾個講座,寫幾個系列文章,那麼你在你們眼中就成了這門技術的牛人。你就有了各類機會來解決使用該技術遇到的各類疑難雜症,反過來加深和修正你的理解。沒事上上StackOverFlow,回答別人幾個問題,或者訂閱該技術的問題列表,常常看一看。前端工程師
還能夠再繼續深刻。加入國內/國際技術社區(國內沒這樣的社區咋辦,機會來了,趕忙本身建一個),進一步發揮本身影響力。翻譯、編寫與該技術相關的書籍;若是該技術是開源的,那麼有時間就提交修改把,本身就成了開發者一員了。這就是質的飛躍,從使用工具進階到創造工具。
走完5步,你已經不是僅僅掌握這門技術了,你已經超神了好吧!有人可能又會問,能達到這五步的確定要花很長時間,不是通常人可以到的高度。那固然了,這個過程確定很難,但並不是難到登天。至少我身邊有不少這樣的例子。其實你只要完成前三步,你就比50%的程序員牛了,完成第四步,你已經站在90%程序員的前面。
最後快速總結。重要的事情說三遍。
主動學習很重要,主動學習很重要,主動學習很重要。
官方文檔很重要,官方文檔很重要,官方文檔很重要。
實踐很重要,實踐很重要,實踐很重要。