不要盲目跟着 JavaScript 的趨勢走

雲棲號資訊:【點擊查看更多行業資訊
在這裏您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!

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

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

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

重寫代碼

untitled

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

untitled

噓,我發明了時間機器(不要告訴任何人)!讓我們閃回到 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 在描繪技術炒作週期方面做得非常出色:

untitled

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

untitled

對照這張圖回想一下,就最近的 JS 趨勢來說,它處於哪個位置?
如何應對炒作
在生活中,炒作和興奮有時是有用的。沒有它,生活將會乏味而無聊。偶爾跟風可能會讓你精神振奮,但是你應該首先自己做好調查。
當嘗試採用一個被大肆宣傳的全新的庫或框架時,請記住這一點。問問你自己和你的團隊:

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

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

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

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

如果你是一名高級工程師,試着和一名初級工程師或者沒你那麼有經驗的人交談。許多公司都在實施所謂的“反向輔導”項目,由初級員工指導公司的資深員工。資深員工的經驗可以換來初級員工的新觀點。你會驚訝於自己能學到和分享的東西。
總之,儘量不要在你剛剛看到某個東西時就匆忙做出決定。
如果你喜歡這篇文章,可以把它分享給你的朋友和同事。如果你有什麼想法,也可以通過推特(@nikolalsvk)聯繫作者。

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

【雲棲號在線課堂】每天都有產品技術專家分享!
課程地址:https://yqh.aliyun.com/zhibo

立即加入社羣,與專家面對面,及時瞭解課程最新動態!
【雲棲號在線課堂 社羣】https://c.tb.cn/F3.Z8gvnK

原文發佈時間:2020-07-06
本文作者:Nikola Đuza
本文來自:“InfoQ”,瞭解相關信息可以關注“InfoQ

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