近十年來,前端的發展勢頭迅猛,每一年都會出現很多新的技術和標準。「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. 創造者
到了這個階段,全部的技術都要聽你的了,固然,也是比較高的階段。
對於編程者來講也許是制定新版本的語言標準?
與君共勉。
一個彩蛋
「道生一, 一輩子二, 二生三, 三生萬物」
下面這個網站就是「一」