為什麼這麼多人覺得前端開發很難做下去?
無論是新手還是幾年的前端開發程式設計師,都會又這樣的經歷:當學習了一種前端技術的時候,同時會有幾種新的前端技術誕生。 還有,你選擇的那種前端技術,也許已經過時了。
在抱怨過後,會繼續去學習新技術,或者慢慢放棄。但是很少人會考究,為什麼會出現這個問題。
普遍解釋似乎是 web 開發者天生不耐煩,永遠追求最前沿的技術,趕時髦。總的來說:前端技術更迭如此之快是整個開發者社群的不明智(而你的不明智行為完全取決於你無法控制的因素)。
不管真實原因是否是這樣,前端開發確實存在這樣的問題。
前端技術是否真的變化如此之快?
在探討原因之前,有必要驗證這個問題是否真實。
考慮一下 Github 上星號最多的 JavaScript 前端技術列表:
最短的 2.5 年也不是那麼久 - 不到傳統桌面系統迭代週期的一半,這足以說明問題。 那麼是什麼原因導致了這種快速的,甚至是不可持續的變化?
如果你也是一個前端黨,無論是在學習前端開發,還是已經工作的,這裡推薦一下我們的前端學習交流群:731771211 ,這裡是把夢想照亮的地方,同為了生活而拼搏奮鬥,大家互相幫助。新手加入即可獲得經過整理的最前沿的前端技術資料,不定時更新技術,與企業需求同步。好友都在裡面交流,每天都會有大牛定時講解前端技術!知識改變命運
點選: 加入
React
造成這個問題的原因可能是 React。 作為一款功能強大的工具,它需要大量的輔助模組和支援庫,而這正是問題出現的地方。React 社群是一個很大的微型庫架構組織,其中應用程式由許多獨立的單一功能 JavaScript 庫組成,該架構是為了致敬 Unix 哲學。
這種架構的優勢在於,隨著新的實踐的出現,可以輕鬆地進行調整,這對快速創新(如過去幾年一樣)是有意義的。 缺點是增加了變化的影響範圍,並且需要大量的審查。
這就是我的核心觀點:JavaScript 的問題不在於語言,網路或其他任何特定技術,而是選擇的架構無法讓開發者跟上變化趨勢。
NPM 問題
現代 JavaScript 最大的資產是 NPM。它提供了大量的模組,可以滿足任何人的特定需求,但是很難過濾和決策。哪些庫真的被支援?哪些庫的功能是正確的?哪些不是有惡意的庫? JavaScript 開發人員真正作為唯一的參考標準就是流行度 - 下載數量和 star 數量 - 這加速了庫的傳播。
當然,還有其他驗證庫的方法:可以通過 Github 問題閱讀並搜尋 StackOverflow。你可以做一些測試,甚至自己檢查原始碼。但是這需要很多時間。
這是 JavaScript 開發人員的弱點。作為一名面試官,我經常會問面試者是如何選擇技術,但回答往往讓我失望,因為知名度幾乎總是他們選擇某個庫的唯一標準。軟體工程至少部分是研究工作,我們需要培養初級程式設計師的研究能力。但即使這樣做了,這些可能性仍然會出現在他們身上。
設想成為一名初級開發人員
把自己設想為一個初級到中級的 JavaScript 開發者,首次編寫一個新的應用程式。
從完全空白,這讓事情變得簡單。你很佛系,所以從選擇一個簡單的框架開始。聽起來不錯(這也是你的唯一選擇)。
作為準系統它沒有什麼作用,所以選擇輔助庫的任務落在你肩上。如果你在做前端工作,它可能是 Redux 的表單和 API 請求的庫。如果是後端,它可能是 Express 的中介軟體。
然後你開始搜尋,搜尋結果中的一篇來自 Medium(譯註:部落格網站) 的部落格推薦 X.js。該部落格的作者是 X,但她從未表明這種特殊的利益衝突。Medium 上所有的部落格都一樣,所以永遠不能用知名度來作為我們的參考標準。
你錯過了指出了 X.js 中的一些重要不足之處的答覆,因為 Medium 在有意忽略。然後繼續搜尋,發現了 Y.js.
這次你在 Twitter 上找到一個連結 - 超過一百個點贊!這應該值得信賴了吧,畢竟這麼多人為自己"把關"了。你在感謝中點了個贊,然後跳轉到了 Github 的連結。
但不是那麼快。這個連結太老了 - 該庫現已棄用。你可以看出,DEPRECATED 這個詞無處不在,十分醒目。
Y.js 是“物件導向”的。你認為這是一件好事,隱約回想起 ComSci 第一年關於 Smalltalk 和訊息傳遞的一些東西。但顯然這是非常糟糕的。
另一篇 Medium 上的部落格試圖解釋為什麼,雖然推理有些模糊,並且用你不認識的密集術語來包裝。後來事實證明,這個術語是由該部落格的作者發明的,文中權威的參考連結也來自他自己的部落格。
更糟糕的是,該帖稱,即使在 JavaScript 面試中提到 OOP 也會使你完全失業!你現在已經迷失方向了。值得慶幸的是 - 有他的 $ 50 美元的 JavaScript web 開發課程。你很慶幸找到這麼好的資源,記下了連結,並點了贊。
所以,你將轉向 Z.js,這個庫有更多的 star,文件似乎不太有用。 儘管列出了很多方法,但如何實際使用? 至少看到它使用了一種叫做“標準 JS”的東西,你認為它與 ECMA 標準委員會有關? 其實並沒有。
但怎樣才能避免這些坑呢? 誰來幫助你避免採坑? 高階開發人員也正在學習。 我們都捲入了追求最新技術,追趕潮流的旋渦中,只是為了保持最新並保持就業。
所以,你採取了看似最可靠的標準:Github 專案 star 最多。 這就是為什麼 JavaScript 開發受到隨波逐流的影響。
應該怎麼做?
像大多數抱怨者一樣,我只想表達不滿,而不是解決它們。 但我有一些想法:
- [ ] 警惕自我推銷
在過去的幾年裡,JavaScript 世界出現了激進的自我營銷,這可能是因為付費線上培訓材料的興起以及作為 Github名人的就業、諮詢優勢。
我對好的內容沒有任何問題,但也出現了很多不誠實的手段:自我引用 ,發明專有術語(例如'Standard.js')
- [ ] 考慮非微型庫架構
嘗試能提供大面積的功能,並且不需要很多外掛來提高生產力的框架來開始你的專案 - 這將立即減少變化的影響範圍。 這是我對 Vue.js 非常感興趣的原因之一。 您也可以將 React 用作入門工具包或較大框架的一部分,如 Next。
- [ ] 不要過分滿足無理需求
唯一需要知道整個公司技術棧細節的是自由身承包商,他們獲得了可觀的工資來完成專案。 否則,大多數僱主不需要你瞭解最新 React 的細節。 所以,避免學習所有東西的要求:大部分都是沒用的。
如果你也是一個前端黨,無論是在學習前端開發,還是已經工作的,這裡推薦一下我們的前端學習交流群:731771211 ,這裡是把夢想照亮的地方,同為了生活而拼搏奮鬥,大家互相幫助。新手加入即可獲得經過整理的最前沿的前端技術資料,不定時更新技術,與企業需求同步。好友都在裡面交流,每天都會有大牛定時講解前端技術!知識改變命運
點選: 加入
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901074/viewspace-2375631/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 我們為什麼很難堅持下去
- 為什麼前端這麼多人前端
- 為什麼很多大學生都會覺得程式設計很難?程式設計
- 為什麼做技術 PM 這麼難?
- 為什麼這麼多人做網校系統開發?網校系統有什麼優點?
- 為什麼我覺得 Java 的 IO 很複雜?Java
- 企業級BI為什麼這麼難做?
- 為什麼前端開發這麼不穩定?前端
- 為什麼不做開發做運維?Linux為什麼這麼廣泛?運維Linux
- 為什麼這麼多人都在學PythonPython
- 什麼是前端開發?為什麼要學前端開發?前端
- 為什麼軟體開發方法論讓你覺得糟糕
- 為什麼Kubernetes這麼難? • Buttondown
- Python為什麼發展這麼快速?原因很簡單!Python
- 為什麼這麼多人願意學習Python?Python
- 為什麼大家普遍感覺現在生意難做生存不易
- 今年找工作為什麼這麼難?
- 跑批為什麼會這麼難?
- 為什麼這麼多人學Linux?Linux前景好嗎?Linux
- 為什麼精益生產實現起來這麼難?這篇文章說的很通透
- 淺析--為什麼軟體開發方法論讓你覺得糟糕?
- 為什麼許可權授權很難?- osohq
- web前端入門很容易,全棧卻很難,為什麼每個程式設計師都那麼說?Web前端全棧程式設計師
- 說說你做過讓你覺得最滿意的專案是什麼?為什麼?
- 為什麼在遊戲裡做一扇好用的“門”這麼難?遊戲
- React Hooks 可以為我們帶來什麼,及為什麼我覺得React才是前端的未來ReactHook前端
- Python雖然很火,為啥找工作這麼難?Python
- 為什麼我覺得Python爛的要死?Python
- 我為什麼使用Linux做開發Linux
- 軟體工程--為什麼軟體開發方法論讓你覺得糟糕軟體工程
- 為什麼這麼多人學習Python,Python有哪些優勢?Python
- 前端開發的難點到底在什麼地方?前端
- 為什麼你總是覺得被割韭菜?
- 被騙的錢為什麼很難追回來?這裡的水到底有多深?
- 為什麼對gRPC做負載均衡會很棘手?RPC負載
- 為什麼很多人想學前端 如今Web前端薪資如何前端Web
- 為什麼前端工作越來越難找了?前端
- 為什麼在 Apple Silicon 上裝 Docker 這麼難APPDocker