如何成為一個JavaScript 大牛?

劉健超-J.c發表於2015-09-09

在成長的過程中,我的興趣點不斷髮散,而且都是看似不相關的領域。我喜歡數學正如我喜歡歷史一樣。我的目標是成為一個 多才多藝的人博學者-,能在多個領域成為優秀人才。這證實是一項艱鉅的任務,我忽然面臨著行行皆通,樣樣稀鬆的危險。

我開始考慮專注於某些領域,這樣即使不能成為像文藝復興時期的通才,但至少能精通某些方面。那我怎麼樣才能專注於某一領域的同時,掌握軟體開發所需的龐大的知識體系呢?

本帖內容是基於我過去 5 年經驗編寫的,概述了我成為一個優秀的 JavaScript 開發者所用到的技術和資源。

當今大多數 web 開發者都面臨著同樣的問題:他們不得不擅長多個不同領域,從資料庫到後端架構,再到前端的使用者介面,用所精通的 CSS 知識去修改 UI 。

看書

為了達到精通,專注與努力是首要條件。如果不投入全身心工作,最後你只會一知半解。例如通過閱讀一些部落格文章,因為初期時間投入較低,所以看起來會比較簡單。但從長遠來看,這種學習模式將會比專注於學習精髓的過程花費更多的時間。解決這個難題的方法很簡單:看書。

書籍讓我們站在文明的肩膀上。而精煉的文字讓我們的知識代代相傳。而對於如何成為 web 技術專家這個問題,你在學習的過程中就要與 web 本身保持一定距離。因為 web 對於學習來說,其本身就是一個混雜且分散的媒介,所以我的第一個建議是閱讀相關專業的書籍。

對於 JavaScript,從 《JavaScript 語言精髓》 這本被稱為 JavaScript 聖經的書開始。這本書雖然比較舊,但非常適合入門。《JavaScript權威指南》 也是必備的,儘管你可能會將它作為一個參考書籍。另外,jQuery 作者 John Resig 的 《JavaScript 忍者禁術》 也是不容錯過的。如果你在尋找好(線上免費的)書,可以看看 《JavaScript Allongé》 、《You Don’t Know JS》 和 《Eloquent JavaScript》點選這裡 可以看它的註釋版本)。這些都能以電子書或印刷版的形式購買。另外,Mozilla’s Developer Network 也有很好的 “JavaScript 指南”

學習、使用並閱讀庫

接下來最重要的一步是瞭解庫。如果書籍教會你如何理解語言,則庫教你如何表達它。對於庫,你有兩個重要的事情要做:使用它們並閱讀它們的原始碼。

通過使用庫,開始知道:jQuery、Backbone、underscore 和 React、Angular 、Ember 中的一個。當然,這不是說你必須使用這些庫,但稱職的 JavaScript 開發者都應該至少有這些庫的使用經驗(不管好壞)。

對於提高 JavaScript 技能,第二重要的是閱讀這些庫的原始碼。其中,我特別推薦 Backbone 和 underscore 的原始碼,因為它們的程式碼寫得特別漂亮。通過閱讀和理解 underscore,你的函式程式設計能力將會得到提高。另一個是其他幾個開發者推薦給我的庫是 mootools (我個人沒有 mootools 的使用和閱讀經驗,僅僅是傳達資訊。)

理解上述列表裡的其它庫,如 React、Ember 等,可能有點難,但值得付出努力。至少略讀其它庫的原始碼,看看它們是如何組織基礎程式碼並儘量發現一些模式。其它一些值得使用和閱讀原始碼的庫還有 d3、 highcharts 和 moment.js。

練習與問自己問題

成為優秀 JavaScript 開發者的下一步是做大量的實踐。理論上,這些實踐的重點不在 DOM,而是語言,所以確保有測試工具能在 node.js 上執行。在 node.js 上做大量小練習。通過不同的方式使用 JavaScript 的閉包、原型、array-extras (map, filter) 等。當你經過大量練習後,頭腦裡就會對 JavaScript 有基本的想法。

我朋友 Armagan 是一名傑出的 JavaScript 程式設計師兼老師,他在課堂裡使用的課本  《JavaScript 設計模式》 也是值得一看的。

試著回答諸如:原型繼承是如何工作的?閉包的定義是什麼?this 關鍵字是如何改變的?如何使用 apply/bind/map/filter/call?收集一些 JavaScript 開發者常見問題並嘗試用自己的語言解釋它。用書面或口頭的方式向別人解釋這些概念,能極大地提高能力。在做實踐的同時,嘗試做“假設分析”。例如,“如果使用兩次 bind,this 將會代表什麼?jQuery 是如何確保 this 關鍵字是引用 jQuery 物件,而不是全域性物件?這個庫如何完成某個特性?”這些都是值得思考的常見問題。

學習標準

下一步是學習更多關於 EcmaScript 標準。找到一份最新的 EcmaScript 標準並嘗試閱讀它。除了這些,也要嘗試學習即將推出的 JavaScript 特性,如 ES 6 和 ES 7 新增的。最近有一些新特性如:promises、modules、generators、comprehensions 和 again。可以通過專門的書來學習標準,如 Zakas 的 ( Understanding EcmaScript 6 ) 或 Dr. Axel Rauschmayer 的 ES6 書 ( Exploring JS ) 。閱讀標準是獲取專業知識和發現語言新特性的主要來源。

使用 web 上的資源

我之前提到使用 web 獲取 web 知識的危險性,所以最後的建議是具體如何在 web 中獲取最好的資源。Hacker News 是一個很好的資源,然而如果時刻關注它的話,將會花費較多時間,因為訊雜比較低(表示 JavaScript 文章比例較低)。取而代之的是,關注 JavaScript Weekly 之類的每週文摘。隨著時間的推移,你會看到哪些庫或技術是備受關注的。在 Twitter,嘗試去關注那些有影響力的 JavaScript 開發者。這裡是 Tutsplus 列出的 33 個值得關注的 JavaScript 開發者。其它在 web 上的資源還包括一些部落格,如 Toptal BlogsRebecca Murphey’s blog (如果你對這個部落格的帖子感興趣,也可以看看 A Baseline for Front-End [JS] Developers: 2015)和 Nicholas Zakas’ blog。(如果你有其它好部落格,請 Email 我,我會將它新增到該列表裡。)

另一個重要資源是大會視訊和教育視訊。對於大會,JSConf 系列都是高質量的。對於教育視訊,我強烈建議 Pluralsight,因為他們擁有經驗豐富的開發者準備的高質量課程。(我與 Pluralsgiht 沒有隸屬關係)

濃縮版

  • 從閱讀書籍開始,因為書籍能為你提供精華資訊。
  • 學習主要的庫,如 jQuery、underscore、Backbone,並閱讀它們的原始碼。
  • 多實踐並嘗試用自己的話解釋“繼承”之類的常見 JavaScript 概念。對上述主題進行演講和交流。
  • 仔細閱讀最新標準,並開始使用該語言的最新特性。
  • 關注 web 資源,每週關注一次文摘或部落格,或觀看會議視訊和視訊教程。

總結

一直反覆這些並完成大量專案,將會極大地提高你的 JavaScript 程式設計能力。只有努力不懈,才有希望在幾年後成為一名專家。我覺得自己是一名優秀的 JavaScript 程式設計師,離專家仍有一大段路要走,有很多技術需要在我接下來的學習生涯中學到。另外,隨時可以通過 atustun@ustunozgur.com 向我提出反饋和修正。

在最後,代表 Ustun Ozgur 軟體公司在土耳其伊斯坦布林城市招聘有才能的 JavaScript 開發者。請參閱 本公司網站 瞭解職位空缺。

閱讀快樂,

Ustun

如果你讀到這裡,可以考慮在 Twitter 上關注我 @ustunozgur

感謝 Engin Arslan 與我發起這場討論。

歡迎到 HackerNews 進行討論

打賞支援我翻譯更多好文章,謝謝!

打賞譯者

打賞支援我翻譯更多好文章,謝謝!

任選一種支付方式

如何成為一個JavaScript 大牛? 如何成為一個JavaScript 大牛?

相關文章