打開2025年的招聘軟件,十個資深前端崗位,有八個在JD(職位描述)裏寫着:“有Node.js/Serverless/全棧經驗者優先”。
全棧 👉 成了我們前端工程師內卷的一種方式。彷彿你一個幹前端的,要是不懂點BFF、不會配Nginx、不聊聊K8s,你都不好意思跟人説你是資深。
我們都在拼命地,去學Nest.js、學數據庫、學運維。我們看起來,變得越來越全能了。
但今天,我想潑一盆冷水🤔:
全棧正在殺死前端。
全棧到底是什麼
我們先要搞清楚,現在公司老闆們想要的全棧,到底是什麼?
他們想要的,不是一個T型人才(在一個領域是專家,同時懂其他領域)。
他們想要的是:一個能幹兩個人(前端+後端)的活,但只需要付1.5個人的工資。
但一個人的精力,畢竟是有限的。
當我花了3個月,去死磕K8s的部署和Nest.js的依賴注入時,我必然沒有時間,去研究新出爐的INP性能指標該如何優化。
當我花了半周時間,去設計數據庫表結構和BFF接口時,我必然沒有精力,去打磨那個React組件的可訪問性,無障礙(a11y)和動畫細節。
我們引以為傲的前端精神,正在被全棧的廣度要求,稀釋得一乾二淨。
全棧的趨勢,正在逼迫我們,從一個能拿90分的前端專家,變成一個前後端都是及格的功能實現者。
機-會
技術大廠,前端-後端-測試,新一線和一二線城市等地均有機-會,感興趣可以試試。待遇和穩定性都不錯~
關於前端體驗
做全棧的後果,最終由誰來買單?
是用户。
我們來看看全棧前端主導下,最容易出現的受災現場:
1.能用就行的交互
全棧思維,是功能驅動的。
數據能從數據庫裏查出來,通過API發到前端,再用v-for渲染出來,好了,這個功能完成了😁。
至於:
列表的虛擬滾動做了嗎?
圖片的懶加載做了嗎?
按鈕的loading和disabled狀態,在API請求時加了嗎?
頁面切換的骨架屏做了嗎?
弱網環境下的超時和重試邏輯寫了嗎?
UI測試呢?
抱歉,沒時間。我還要去寫BFF層的單元測試。
2.無障礙,可訪問性(a11y)
你猜一個全棧,在用 <div> 還是 <button> 來實現一個按鈕時,會思考 aria-* 屬性嗎?他會關心Tab鍵的焦點順序嗎?
根本不會。
因為可訪問性這個東西,是純粹的純前端範圍,它不屬於全棧能力範圍。
- 性能優化
當一個全棧工程師的注意力,被數據庫索引、Nginx緩存、Docker鏡像大小給佔滿時,他還有多少腦容量,去關心LCP、CLS、Tree Shaking、Code Splitting?
useMemo?PureComponent?能跑就行了,別搞那麼複雜。
前端,正在從用户體驗的第一負責人,被降維成了全棧流程的最後一個環節——那個把數據顯示出來UI就行。
一個前端的專業性
最讓我發慌的,是一種風氣的轉變。
五年前,我們團隊,會為一個如何把白屏時間再減少100ms的議題,在白板前吵一個下午。我們會為該用padding還是margin來實現間距 這種像素級的細節,在CR(Code Review)裏吵架。
現在呢?
CR時,大家都在聊:你這個BFF的Controller層,不該寫業務邏輯、你這個數據庫類型定義不規範。
沒人再關心那個前端按鈕邏輯了。
全棧,正在殺死前端的專業性。它讓前端這個職業,變得不再純粹,不再專注一個領域。
我不想做全棧開發😠
聊了這麼多,我不是在販賣焦慮,也不是在抵制學習後端知識。
作為8年老前端,我現在給自己的定位是:一個T型前端工程師。
我必須是團隊裏,對瀏覽器渲染原理、JS性能優化、CSS佈局、組件化架構、可訪問性理解最深的那個人。這是我的前端身份,是我的技能。
我懂Node.js,是為了能和後端吵架時,提出更合理的BFF接口設計。
我懂Docker,是為了能理解我的代碼,是如何在CI/CD上閃退的。
我懂SQL,是為了能理解為什麼我的一個查詢,會導致查詢慢。
請大家別再神話全棧了😒。
全棧的盡頭,很可能是全廢了,這個也不精,那個也不精。
我寧願要做一個95分的前端專家,和一個95分的後端專家,讓他們強強聯手;
也不想要兩個及格的全棧工程師,最終交付一個50分的、能跑就行的垃圾代碼💩。
歡呼大家,尊重前端這個職業的專業性。
謝謝🙌
——轉載自:ErpanOmer