不要盲目跟着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
總結
以上是生活随笔為你收集整理的不要盲目跟着JavaScript的趋势走的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 盟开头成语有哪些啊?
- 下一篇: 孩子太沉迷游戏应该怎么办?