如何成為一個偉大的JavaScript程式員
遙想當年還年少的時候,我的興趣愛好就跨越了各種不相關的領域。我喜歡數學,如同我深愛曆史那樣。我的目標是成為像文藝複興時期多才多藝的偉人那樣——在多個領域都有出色表現。這是一個艱巨的任務——突然之間我發現自己正面臨著“樣樣皆通,樣樣稀鬆”的危險。
我開始考慮鑽研某些領域,這樣至少我還可以成為一個“精通某些領域”的人。那麼我該怎麼做,才能既專註於某個領域,同時又能學到軟體開發所需的大量知識?
這篇文章主要概述在我 5 年工作經驗的基礎上,我成為優秀 JavaScript 開發人員所使用的技術和資源。
當前大多數 Web 開發人員面臨著這樣一個共同的問題:他們必須在多個不同的領域領先於他人——從資料庫到後端架構,到前端使用者介面,再到使用良好的 CSS 知識修正使用者介面。
閱讀書籍
首先,也是最重要的一點是,你必須付出努力才能脫穎而出。雖然你也可以在無心中獲得點點滴滴的積累,例如,不時地閱讀一些部落格文章,而且老實說,因為這種方法最初的時間和精力的投入要求低得多,所以更簡單。這樣的學習模式顯然比你專門和刻意的學習過程要花費更多的時間。關於這種窘境的解決方式也很簡單:閱讀書籍。
書籍是人類進步的階梯。文字是我們讓知識以濃縮的形式代代相傳的工具。成為 Web 技術專家有一個要解決的問題是,你必須學會何時遠離網路本身。網路本身就存在著讓人混亂和分心的內容,所以我要給出的第一個建議是,要閱讀相關主題的書籍。
對於 JavaScript 中,可以先從以下書籍開始:《JavaScript the Good Parts》就像是 JavaScript 中的《聖經》。雖然這本書已經有點古老了,但依然是最好的起始點。《JavaScript: the Definitive Guide》也是我們必需的,雖然你可能會將它當作是參考書。 jQuery 創始人 John Resig 的《Secrets of the JavaScript Ninja》也值得關注。此外,你還可以閱讀電子書,非常方便,很多線上電子書還是免費的。另外,JavaScript Guide 雖然不是書,但深受 Mozilla 開發人員的信賴和青睞。
指令碼庫的學習,使用和閱讀
接下來最重要的一個步驟是去瞭解指令碼庫。書籍教你如何讀懂語言,庫教你如何應用它。關於指令碼庫你需要做這兩件重要的事情:使用它們,閱讀它們的原始碼。
對於庫的使用,需要瞭解以下幾個重點的庫:jQuery,Backbone,underscore 以及 React、 Angular 和 Ember 之一。這並不是說你必須要使用這些庫,但任何像樣的 JavaScript 開發人員至少應該有一定的使用這些庫的經驗無論好壞)。
提升 JavaScript 技能的第二件重要的事情是閱讀這些庫的原始碼。我強烈建議閱讀 Backbone 和 underscore 的原始碼,因為它們寫得非常優美。閱讀和理解 underscore 可以提高函數式編程的技巧。另一個值得閱讀原始碼,也是其他開發人員推薦給我的庫是 mootols我個人並不使用 mootools,也沒有閱讀過它的原始碼。)
剩下的庫,如 React 和 Ember 等,理解起來可能很難,但非常值得。此外還應該瀏覽一下其他庫的原始碼,看看它們是如何構建程式碼程式庫的,並嘗試探索一些新的模式。其他著名的可使用和閱讀其原始碼的庫包括 D3、highcharts 和 moment.js。
練習與自問問題
要成為一個好的 JavaScript 開發人員的關鍵步驟是練習,許許多多的練習。理想的情況是,練習的重點不在於 DOM,而在於語言,所以一定要確保有一個可以運行 node.js 的測試載入器。做各種瑣碎又大量的 node.js 練習。研究編碼招式,經曆使用 JavaScript 的不同方式:閉包,原型,擴充數組map、filter)等。在做練習的同時,要開始在腦中形成 JavaScript 的基本思想。
我的一個朋友,Armagan,一位優秀的 JavaScript 程式員,也是一個使用《Pro JavaScript Design Patterns》用於講座的老師,所以這本書值得一閱。
在學習的同時,要試著回答一些問題,例如:原型如何繼承工作?閉包的定義?關鍵字含義如何改變?如何使用 apply/bind/map/filter/call?收集一系列 JavaScript 開發人員需要面臨的共同源要點,並試著用自己的話來解釋。用書面或口頭的形式向另一個人解釋這些概念,有利於極大地提高你的技能。在練習的同時,盡量去思考“如果是那種情況,又該如何?”的情景。例如,“如果我使用兩次 bind,那個這個”this“會是什麼意思?jQuery 如何確保 this 關鍵字指向 jQuery 對象,而不是全域對象?這個庫如何完成一定的功能?”等等,這些都是你應該時常問問自己的常見問題。
學習標準
接下來需要瞭解的是 EcmaScript 標準。研讀最新的 EcmaScript 標準副本。同時,還可以試著瞭解 JavaScript 中即將推出的功能,如 ES6 和 ES7。近期已經出現了例如 promises、modules、generators、comprehensions 等新功能,好好閱讀標準,也可以閱讀專業書籍,如 Nicholas Zakas 的《Understanding EcmaScript 6》或 Axel Rauschmayer 博士的《Exploring JS》,或許會有所協助。從主要源學習標準以及探索新增的語言才是通往專業化道路的途徑和方法。
利用網路資源
我前面提到過利用網路來瞭解網路是危險的,但是現在我要提議的是我們還可以利用網路來擷取最好的資源。《Hacker News》就是一個很好的來源,但是持續的跟蹤通常會耗費更多的時間,因為真正有用的資訊比例是很低的。相反,還不如直接瞄準每週提要如《JavaScript weekly》呢。隨著時間的推移,你自然會領悟到哪些庫或技術越來越有吸引力。可以在 Twitter 上找找有影響力的 JavaScript 開發人員。 其他的網路資源包括部落格如 Toptal Blogs、Rebecca Murphey’s blog 和 Nicholas Zakas’ blog 等。
另一個非常重要的網路資源是視頻會議和教育視頻。說到會議,JSConf 系列的品質就很高。至於教育視頻,我強烈建議 Pluralsight,因為他們有著編寫高品質課程經驗的開發軍團。
簡而言之
- 讀書,書中自有資訊之精華。
- 瞭解基本的庫,如 jQuery、underscore 和 Backbone,閱讀原始碼。
- 練習,試著用自己的話去解釋常見的 JavaScript 概念,例如繼承。就上述主題做演講和講座。
- 通讀新版本的標準,使用最新增加的語言。
- 利用網路資源,查看摘要和部落格,以及視頻會議和教育視頻。
結論
不斷重複上述步驟,並參與到大量的項目中去有助於你快速提高你的 JavaScript 技能。但始終要牢記,只有付出才會有回報,才會有望成為專業人士。我自認為自己是一個很好的 JavaScript 程式員,但是要想成為專業人士我依然還有很長的路要走,還需要不斷地學習和掌握知識和技術。
最後祝學習快樂,願與君共勉!
英文原文:How to Become a Great JavaScript Developer