不要盲目跟着JavaScript的趨勢走

在生活中,炒作和興奮有時是有用的。沒有它,生活將會乏味而無聊。偶爾跟風可能會讓你精神振奮,但是你首先應該自己做好調查。當嘗試採用一個被大肆宣傳的全新的庫或框架時,要先進行研究和測試,並聽取他人的意見。

本文最初發佈於Pragmatic Pineapple博客,經原作者授權由InfoQ中文站翻譯並分享。

有一天,你在瀏覽器裏輸入了twitter.com,然後看到了某人發的一條關於如何使用React Hooks的新消息。但是,由於某些原因,你的公司或團隊並沒有轉而使用Hooks。或者,也許你正在使用它們,但不是以一種新的“符合潮流”的方式。也許你正在使用Vue.js或者Angular,但是React Hooks無處不在。

這一天,你開始質疑你代碼庫中的內容是否正確?你是否應該用你剛剛讀到的內容來重構那部分邏輯?得出答案後,你開始想象它在自己的代碼中會是什麼樣子。

現在,你突然有了使用它的衝動。你告知團隊負責人,或者向整個團隊發送消息介紹這個又酷又新潮的方法,然後提出你要開始使用它。

重寫代碼

不久前,@ThePracticalDev的Twitter賬戶上出現了一本假想著作的封面。早在2016年,取笑多變的JavaScript世界就是一種時尚,雖然方式與今天有所不同。

噓,我發明了時間機器(不要告訴任何人)!讓我們閃回到2016年。嗖的一聲!我們到了。JavaScript生態圈看起來是這樣的:

如果你正在使用JavaScript框架或是想要使用一個框架,你可能會選擇Angular.js。但是,你很快就會看到這樣的消息:Angular 2會需要你重寫幾乎所有的東西。而且,React.js即將到來,並日漸成熟。當然,還是有使用Vanilla JS和不使用框架的人。2016年,不使用框架仍然是一個流行的觀點,但這個觀點正在慢慢消失。

在瞭解了這一切之後,你會怎麼做?你會選擇哪條路?爲什麼?答案似乎很明顯,因爲你來自未來。但是,如果你之前決定使用Angular.js,那麼幾年之後,你將嘗試使用新的Angular版本並重寫你的代碼。如果你選擇使用React,你將成爲一個幸運的贏家,因爲現在每個人都搭了React的便車。現在,你可能想放棄類組件,藉助那些妙不可言的鉤子使用函數組件,對吧?好吧,至少它不像Angular.js到Angular 2的變化那麼大,不需要學習全新的API,對吧?

選擇這麼多,時間這麼少。我們該怎麼做?

不管我們現在選什麼,過去選什麼,這都不重要。我們仍然會被誘惑或者不得不重寫我們的代碼。這樣做的理由可能有許多:

  • 你的公司以前使用[框架名],但現在已經無法招聘到新人了;
  • 你覺得以前的解決方案不再有效,需要引入一些新東西;
  • 你屈從於行業趨勢,想要使用最新最好的。

除非我們打破這個循環。

打破循環

不斷改進並提供一個更好的新版本已經成爲我們這個行業的基因。我們總是非常迫切地希望制定更高效、更簡單、更巧妙、更健壯的解決方案。違背不斷學習和進步的理念,就會走到現如今一切人和事的對立面。我現在不打算走這條路,但是如果你想在將來聽到更多關於這方面的信息,可以考慮訂閱這份簡報

學習新東西的想法是好的,我同意這一點,但是你應該多久學習一次呢?看看JavaScript的世界吧,這裏經常會出現新的想法、博文、庫、框架和某個不知名的新玩意。當它變得越來越流行,人們很快就會嘗試採用它。我並不是說你不應該採用新的東西,也不是說你不應該考慮解決方案的不同方法,完全不是!我的意思是,降低下頻次。

讓我們更加務實點。我以前使用過axios,它非常棒。你可以適當地測試它,它獲得了廣泛的支持,有很多的點贊(GitHub星),等等。然後,我看到一篇博文,它告訴你替換axios並開發自己的獲取邏輯。

在讀了這篇文章的標題“用一個簡單的自定義fetch包裝器替換axios”之後,你會從頭開始思考這個問題,質疑自己的選擇。

我不會詳細探討你是否應該按照這篇博文所說的那樣做,那篇文章本身就很好地做到了這一點。我可以幫你做基本的決定。你現在對axios滿意嗎?如果答案是肯定的,那麼最好不要考慮替代它。對你或你的團隊來說,axios會帶來困難嗎?如果答案是肯定的,那麼就按照博文所說的去做,看看效果如何。

簡而言之:不要輕信炒作。試着去“感受”什麼對你有效,然後再去做。試着不要盲目跟隨那些炫技的新推文、博客文章、Hacker News熱文、你應該或不應該做什麼的熱門話題標籤。

炒作驅動的開發

炒作在我們行業很常見。還記得NoSQL嗎?或者是每個人都爲之瘋狂的微服務?或者是人工智能/機器學習的爆發?這樣的例子不勝枚舉。人們總是會對新的、突破性的技術和想法感到興奮。Gartner在描繪技術炒作週期方面做得非常出色:

上圖展示了一個典型的新興技術的生命週期。你是否意識到你現在使用的任何東西都可能會落在圖表的某個部分?Ayman做了一個更詳細的炒作週期圖:

對照這張圖回想一下,就最近的JS趨勢來說,它處於哪個位置?

如何應對炒作

在生活中,炒作和興奮有時是有用的。沒有它,生活將會乏味而無聊。偶爾跟風可能會讓你精神振奮,但是你應該首先自己做好調查。

當嘗試採用一個被大肆宣傳的全新的庫或框架時,請記住這一點。問問你自己和你的團隊:

在做決定之前研究並測試了嗎?

閱讀博客文章、推特和公告有幫助,但更好的做法是,不管某個東西是否適合你,你都要從中獲得經驗。如果你計劃用什麼,就嘗試構建一個原型。看看它是如何與你正在做的其他事情“共舞”的。

如果你計劃在團隊層面上做一些事情,可以嘗試團隊黑客馬拉松。黑客馬拉松是與你的團隊一起測試新技術的好方法,也是你爲解決方案瘋狂的地方。然後,你可以和團隊進行某種回顧,討論利弊。

它解決了你的問題嗎?代價是什麼?

你當前的實現有什麼特別的問題嗎?如果是的話,測試一下,看看新技術是否能解決這個問題。要花多少時間?學習它和重寫你的解決方案值得嗎?這會在多大程度上減緩團隊的開發工作?

聽取他人的意見了嗎?

如果你在一家小公司工作,或者團隊裏的成員沒那麼有經驗,這個問題可能會很棘手。試着徵求架構師或高級工程師的意見。不能僅僅因爲某個庫適合AirBnB和他們的網站,你就要採用它,可能對你來說它不是最好的,你可能忽略了其中的某些方面。有時候,與有經驗的人交談是一種特權,如果你有,就好好利用它!

如果你是一名高級工程師,試着和一名初級工程師或者沒你那麼有經驗的人交談。許多公司都在實施所謂的“反向輔導”項目,由初級員工指導公司的資深員工。資深員工的經驗可以換來初級員工的新觀點。你會驚訝於自己能學到和分享的東西。

總之,儘量不要在你剛剛看到某個東西時就匆忙做出決定。

如果你喜歡這篇文章,可以把它分享給你的朋友和同事。如果你有什麼想法,也可以通過推特(@nikolalsvk)聯繫作者。

作者介紹:

Nikola Đuza在塞爾維亞諾維薩德工作和生活,主要使用JavaScript和Ruby進行開發。你可以在Twitter上關注他

原文鏈接:

Do Not Follow JavaScript Trends

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章