近十年來,前端的發展勢頭迅猛,每年都會出現不少新的技術和標準。「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. 創造者
到了這個階段,所有的技術都要聽你的了,當然,也是比較高的階段。
對於程式設計者來說也許是制定新版本的語言標準?
與君共勉。
一個彩蛋
“道生一, 一生二, 二生三, 三生萬物”
下面這個網站就是“一”