(轉自:菜鳥教程)
IT行業(yè)中的企業(yè)特點是都屬于知識密集型企業(yè)窍蓝。這種企業(yè)的核心競爭力與員工的知識和技能密切相關。而如果你在企業(yè)中扮演的是工程師的角色的話僚祷,那么你的核心競爭力就是IT相關的知識與技能的儲備情況出嘹。而眾所周知段只,IT行業(yè)是一個大量產生新知識的地方,就拿Web前端舉例狸棍,短短的5身害,6年時間,Web前端已經經歷了數次變革草戈,就目前來看變革還將繼續(xù)下去题造。從以前的div+css網格化布局到JavaScript的方興未艾,然后是各種JavaScript框架的百家爭鳴猾瘸,HTML5和CSS3的落地界赔,移動web沖擊下帶來的響應式設計丢习,jQuery,AngularJs,ReactJs等操作DOM元素截然不同的理念和方式,web component的標準化進程……為什么現在企業(yè)到處都在招前端工程師淮悼?好像突然之間咐低,前端工程師成了稀缺資源。這里的原因之一就是很多前端工程師跟不上行業(yè)變化袜腥,無法達到目前市場上對前端工程師的能力和要求见擦。在這種大環(huán)境下,工程師能夠掌握快速學習的能力就變的至關重要羹令。
筆者根據自身的親身體會鲤屡,以及結合對周圍同事的觀察,對如何快速掌握一門新技術(這里的技術包括一門新的IT技術福侈,包括一門新的編程語言酒来,抑或一種新的程序框架等)有著以下幾點指導。
要想快速掌握一門新技術肪凛,首先有兩個先決條件堰汉。
首先思想要主動求變,敢于跳出的自己的舒適區(qū)伟墙,對任何技術都抱有開放的心態(tài)翘鸭。貪圖安穩(wěn)是人的本性。而這種本性往往會阻礙你的發(fā)展戳葵。人所能了解的知識的多少就乓,取決于自己的舒適區(qū)有多大,舒適區(qū)越大拱烁,與外界接壤的范圍越大档址,就越感覺自己的無知。程序員至少要做到兩點邻梆,不要對自己不了解的技術心存偏見守伸,不要對自己不熟悉的技術心存恐懼。
要化被動式學習為主動式學習浦妄。在中國很大一批程序員每天都是在被動式學習尼摹。什么是被動式學習?就是被人剂娄、事逼著去學習蠢涝。今天新啟動一個項目,技術調研不想采用新的技術阅懦,開發(fā)過程中碰到難題才會去查資料和二,整天就是把別人的、自已以前寫的代碼復制重用耳胎,復制以后出問題了也要花好長時間解決惯吕。舉個例子惕它,一個程序員使用了Spring好幾年,都不知道Spring的核心理念废登,不知道Spring框架結構淹魄,不知道Spring各個組件功能,不知道Spring新版本的新特性堡距。這是非臣孜可怕的,因為你不知道這些東西羽戒,就無法采納Spring的最佳實踐缤沦,出現問題不知道如何快速定位,項目中的某些需求就無法使用Spring早已封裝好的功能(因為你不知道Spring還能干這個)易稠。主動式學習需要你未雨綢繆缸废,不能臨時抱佛腳。而且要把學習看做是對自己的積累和提高缩多,看成是對自己的長期投資呆奕,不能抱有太強的功利性养晋。
有人說衬吆,我就是喜歡舒適區(qū),我就是不喜歡主動學習绳泉,有什么好的方式和方法改變這兩點逊抡?說實話,我所能提供給你的幫助很有限零酪。正如《后會無期》里的一句臺詞冒嫡,"我聽過很多大道理,可依然過不好這一生"四苇。這兩點還是更要靠你個人來實現孝凌。而接下來的一些點,我相信可以幫助到你月腋。
學習一門新技術前蟀架,先要搞清楚為什么要學習它?沒這個技術前我們是怎么干活的榆骚?有了它以后我們又是怎么干活的片拍?它帶來了哪些改變?其實問這些問題妓肢,就是為了了解該技術解決或者簡化了那個問題域的問題捌省,又是采用了什么方式達到了這樣的效果。就拿AngularJS為例碉钠,AngularJS最初是為了彌補HTML構建應用的不足纲缓。以前的HTML在設計時是為了展示多媒體信息卷拘,后來雖然拓展了一些動態(tài)功能,但是在應用web化的潮流下色徘,HTML設計上的不足就越來越突出恭金。比如DOM元素操控太繁瑣、業(yè)務邏輯很難模塊化褂策、可測性低横腿、開發(fā)效率底下等。而AngularJS采用了一種全新的設計來解決該問題斤寂,它提出了一系列概念耿焊,引入了數據綁定、標識符遍搞、路由罗侯、依賴注入等特性,大大簡化了我們開發(fā)WEB開發(fā)的工作量溪猿。通過這樣的方式能迅速建立起了對該技術的宏觀認識钩杰,了解了其潛在的應用場景、應用方式以及一些局限性等诊县。
接下來就要實際使用一下該技術的核心的功能讲弄,強化對它的認識。方式就是參考該技術官網的Quick Start(快速開始)章節(jié)依痊,一步一步來避除。現在的程序員越來越珍惜時間,文檔的簡潔性胸嘁、完備性瓶摆、易上手都成了是否采納某項技術的指標之一。尤其是現在的各種開源組件性宏,連文檔都是開源的群井。所以很多文檔都是完全按照程序員的思維寫的,讀起來很清爽毫胜。再拿Spring來說书斜,想學習Spring4.0推出的Spring boot組件,那么可以訪問其官網指蚁,頁面上最大的按鈕就是Quick Start菩佑。點擊學習吧。頁面是一個簡單的例子凝化,可能花不了你五分鐘稍坯。如果還沒過癮,右邊又列出了更多的
Getting Started Guides ,也是一步一步的教你進階功能瞧哟。有些人可能要問了混巧,英語不好怎么辦?請學英文勤揩。英文是一個優(yōu)秀程序員的必備技能咧党。可能也有人說,看文檔時有各種雜音咋辦陨亡。比如看Spring boot的start guide傍衡,需要之前對Spring有一定了解,需要知道tomcat负蠕、jetty是干啥的蛙埂,需要有一定gradle或者maven使用經驗…這些知識在演練Spring boot的那個小程序時都需要,但由于這些雜音的干擾遮糖,會拖慢學習的過程绣的。擺脫這些雜音的唯一方式就是,對于那些不了解的知識點欲账,也花時間去學習吧屡江。所以學習是一個良性循環(huán)的過程,學的越多赛不,就學的越快惩嘉。
前面兩步能夠保證你對一門技術入門,那么如何進階那俄删?這個階段就是讀了宏怔。從官網上把該技術的詳細文檔扒拉下來奏路,使勁讀吧畴椰。通讀這些文檔能讓你進入它的實現細節(jié),以及各種使用方式與場景鸽粉,甚至一些最佳實踐斜脂。比如Spring boot官方文檔,詳細到了牙齒触机。凡是你想到的帚戳、沒想到的,文檔都貼心的列了出來儡首。如果你想學習Scala片任,那么請訪問http://www.scala-lang.org/documentation/,各種文檔應有盡有蔬胯,讀完就是大半個Scala專家对供。一門技術最好的文檔必須是它的官方文檔,如果不是,那么這門技術火不了产场。注意通讀文檔的過程中一定要在項目加以運用鹅髓。如果在項目中沒實踐機會,自己可以寫一些小的demo來實踐京景。學習知識時實踐與理論相結合的道理恒古不變窿冯。
走完前三步,你對這門技術的理解已經比大多數人強了确徙。你可以算掌握這門技術了醒串。那么還有進階方式沒?當然有鄙皇,那就是把你所學厦凤、所想講出來,寫出來育苟,暴露在公眾之下较鼓,接受批判,從而發(fā)現自己的不足违柏,促使你進步博烂。有空給大家做幾個講座,寫幾個系列文章漱竖,那么你在大家眼中就成了這門技術的牛人禽篱。你就有了各種機會來解決使用該技術遇到的各種疑難雜癥,反過來加深和修正你的理解馍惹。沒事上上StackOverFlow躺率,回答別人幾個問題,或者訂閱該技術的問題列表万矾,經车恐ǎ看一看。
還可以再繼續(xù)深入良狈。加入國內/國際技術社區(qū)(國內沒這樣的社區(qū)咋辦后添,機會來了,趕緊自己建一個)薪丁,進一步發(fā)揮自己影響力遇西。翻譯、編寫與該技術相關的書籍严嗜;如果該技術是開源的粱檀,那么有時間就提交修改把,自己就成了開發(fā)者一員了漫玄。這就是質的飛躍茄蚯,從使用工具進階到創(chuàng)造工具。
走完5步,你已經不是僅僅掌握這門技術了第队,你已經超神了好吧哮塞!有人可能又會問,能達到這五步的肯定要花很長時間凳谦,不是一般人能夠到的高度忆畅。那當然了,這個過程肯定很難尸执,但并非難到登天家凯。至少我身邊有很多這樣的例子隘世。其實你只要完成前三步材彪,你就比50%的程序員牛了睦疫,完成第四步芬位,你已經站在90%程序員的前面。
最后快速總結傲绣。重要的事情說三遍店诗。
主動學習很重要炉抒,主動學習很重要脆丁,主動學習很重要世舰。
官方文檔很重要,官方文檔很重要槽卫,官方文檔很重要跟压。
實踐很重要,實踐很重要歼培,實踐很重要震蒋。
作者:黃博文@無敵北瓜