『前端技術』相比後端是否只能打輔助?

問題來源於知乎提問,截圖如下:

前後端如何定義
前端生存現狀
前端的下半場
前端的機遇

1.前端後如何定義

論壇上人們經常會爲前後端的問題展開撕 x 大戰,很多時候問題的根源是沒有定義好前後端的概念.

因爲這兩個詞本身就很籠統,就我個人而言我是這樣理解的

狹義前端: 就是純粹的 Web 前端,基於瀏覽器技術是前端應用
狹義後端: 就是純粹的 Web 後端,基於服務器爲前端提供接口的後端應用

所以在理清這些概念後我們纔可以正常討論問題,一些後端把大數據和人工智能跟後端聯繫在一起是很扯淡了,大數據開發有專門的數據工程師操盤,人工智能也有對應的算法工程師操盤,除了同樣運行在後端,跟web 後端是鄰居以外,沒有太大關係.

同樣,前端也不能把什麼遊戲開發跟自己扯到一起,web 端遊戲除了跟前端同樣運行在瀏覽器以外,也沒啥太大關係.

2.國內前端生存現狀

目前的現狀也很明顯,以阿里爲首的淘系技術(類電商)其難點就是在於後端,前端僅僅是薄薄的展示層,比如玉伯的回答

通常一家公司,後端人數遠遠多於前端,後端項目的複雜度也遠高於前端,這是國內很現實的情況.

同樣還有一個常見的說法,前端轉後端隔層山,後端轉前端隔層窗戶紙,很多後端程序員表示轉到前端發現工作輕鬆了很多,框架學得很快,兩天就上手工作了,其實這不是吹牛,這確實是當前的現狀.

那麼是否可以做下定論了,前端確實只是負責渲染的展示層,作爲後端輔助是很正常的?

是的,在當前環境下這個說法無疑是成立的,可是我們忽略了一個基本情況,目前國內絕大部分企業都是面向 C 端企業,比如美團、滴滴、知乎、淘寶、百度、頭條等等,能數得上的巨頭企業無疑服務於 c 端用戶,如果你業餘對產品有一定研究就應該知道一個基本理念,c 端產品的設計必須越簡單越好,c 端產品必須基於一個基本假設–用戶都是傻子

舉個例子,即使如今淘寶註冊已經如此方便了,在 2017 年淘寶贊助的春晚當夜淘寶的客服炸了,原因不是服務器頂不住,而是下沉到三四線甚至縣城的淘寶新用戶瘋狂打電話問淘寶客服如何綁定銀行卡?

所以在這種產品設計理念下,前端根本不可能做出什麼花樣來,因爲前端產品的複雜度永遠不能超過 c 端用戶理解能力的下限。

而且巨頭們的產品形態也決定了其不可能有複雜的前端交互,美團、淘寶這種電商性質的網站本身就是展示商品的,其最複雜的點也不過是購物車的邏輯和下單邏輯,而知乎、頭條這種社區、新聞類的應用則更簡單,幾乎就是展示文章。

我們可以看到,目前巨頭們的產品性質和用戶羣體決定了前端的複雜度,在這種情況下前端的的確確是打輔助的,後端承接了巨大的業務邏輯,而且又因爲面向 C 端,其用戶量巨大、用戶敏感度極高,越是這種情況下越要保證服務器的高可用和高併發,這個時候服務端的架構設計幾乎是決定了產品的生死,而前端是夠用就行。

所以,可以給前端判死刑了?

居然有以前端爲核心的商業產品?前端怎麼可能爲核心技術,而且是厚厚的一層?
一年多以前我曾經做過一個項目,裏面有一個需求就是在前端讀取本地 excel 文件渲染到瀏覽器裏,並且通過瀏覽器可以做一定程度的計算、修改、排序等操作,這是我目前做過最複雜的前端項目了,雖然具體的技術細節早已經忘記了,但是我還記得當時急的撓頭的狀態,最終我也沒有做的很漂亮,從 github 蒐羅了各種開源項目拼湊成了一個可用的功能。

在那之前我個人對自己的技術能力還是有一定信心的,但是那個功能把我搞得很狼狽,首先得分析一下這個需求:

從本地讀取 excel,這個時候就需要一個 excel 解析器,把 excel文件解析成 js 相關的數據結構。
渲染 excel,這個時候需要一個 excel-like 的前端組件,能將 js 相關的數據結構渲染成 table 表格。
操作 excel,這就得保證這個組件不僅僅只是渲染,還得保證可編輯。

有人會說,這還不簡單,github 上搜相關開源項目組裝就完事了,可是問題就在於這個需求不是簡單的組裝,我們還得考慮現實情況。

本地 excel 可能會很大,有幾萬條數據,js 相關的 excel 解析器會在解析過程中產生瀏覽器假死的情況。
大量數據的 excel 在渲染過程中會產生卡頓,不僅如此,對上萬行數據進行排序也會產生卡頓。
如何保證數據安全,在編輯表格過程中出現了斷網、瀏覽器閃退,數據怎麼辦?
你一定想知道我是如何解決這個複雜問題的。。。 其實我沒有解決得很優雅,因爲這個需求的複雜度過高,如果完美解決甚至可以單獨做一個創業項目了,最終我在web worker 中解析 excel,瀏覽器假死的情況就迎刃而解了,排序和計算的卡頓我分了兩種情況,在數據量低於 5000 的時候直接有主線程計算,超過這個數字同樣開啓 web worker,畢竟主副線程通信也是要開銷的,表格儲存則更粗暴,直接在本地全量保存,每隔 10 秒鐘同步一次,上傳之後再在本地清除.

我們試想下如果上述的需求不是一個簡單的功能需求,而是一個產品呢?如果把微軟 office 系列、Adobe 全家桶、ide 搬到瀏覽器裏會怎麼樣?

當然,我知道已經有公司做出類似產品了,這些產品就是所謂的前端核心技術產品,這些產品也有一個共同特點,用戶是專業人員或者 B 端用戶,這個時候產品的設計理念是儘可能把功能做強大來滿足專業人士的需求,而非 c 端儘可能簡單來保證用戶能理解。

除此之外,這種形式的產品與 c 端產品還有一個巨大不同,那就是用戶數量,由於面對專業人士這種小衆羣體,其用戶量在中前期並不會太多,甚至做到後面的用戶量可能都跟今日頭條差個數量級,這個時候後端的高併發似乎並不是最棘手的,而產品的核心賣家反而在前端的功能開發上。

  1. 前端的下半場

討論到這裏我們是不是可以達成一個共識?面對普通消費者的流量應用以淘寶、頭條爲首,其產品形態和用戶羣體導致其前端不可能做出太複雜的應用,而前端爲核心賣點的應用集中在類似於在線office這種面向專業人士的產品上。

那麼爲什麼現在的現狀是展示類的流量應用佔據絕對主導?

互聯網人口紅利效應,過去十年是互聯網人口紅利的十年,搞個APP ,靠砸廣告、砸補貼獲取廉價用戶,然後忽悠投資人融資上市圈錢,在獲取用戶如此方便如此廉價的年代,很少有人會靜下心來去經營那些面向專業人士的複雜應用。
瀏覽器技術的不成熟,過去十年我們基本上消滅了 IE,但是不可否認在過去很長一段時間 IE 佔據很多份額,也不可否認前端技術也是最近幾年才發展起來,像 Gmail 那種應用放在當年也就谷歌那種超級巨頭 hold 住,即使現在如果沒有 WebAssembly 的加持我們也很難開發出媲美photoshop的瀏覽器應用.
前端從業者的不成熟,不僅指一線開發者更指一線管理人員,前端從業者從刀耕火種到現在溫飽奔小康也就這幾年的功夫,出個 vue3這種專爲降低框架使用門檻的框架都有喊學不動的,面對 Adobe 全家桶那種超級應用很難想象依靠目前的開發者來開發,這種級別的產品需要強大的軟件工程管理能力和紮實的軟件開發技能,從這一點上前端從業者顯然沒做好準備.

但是這個現狀不會維持太久,BS 架構遲早會進入這些超級應用的法眼,瀏覽器+雲會是這種產品的常態,會有越來越多的超級應用進入瀏覽器,前端這個年輕的行業也會正式進入下半場.

我是基於以下判斷:

互聯網人口紅利已經開始逐漸消失,當然拼多多這種將戰場下沉到四五線城市甚至農村的企業仍然可以獲得成功,但是目前來看拼多多已經一沉到底了,不可能再有新的紅利了,沒有了流量加持,c 端的機會越來越少.
一個產業成熟的標誌是出現了大量 B 端企業,當初的美國興起、日本興起都是從開始的代工廠(富士康)到組裝廠(聯想),但是真正在產業中佔據上游,佔據主導地位都是B 端廠商的大量出現,比如目前絕大多數國產手機的核心零部件都是受制於美日韓的 B 端巨頭,IT 產業不能只有頭條、淘寶、美團,也得有中國的微軟、Adobe 和Autodesk,但是目前來看還沒有.
瀏覽器技術已經趨於成熟,目前瀏覽器還有兩個大招沒放出來,一個是還沒有成熟的 WebAssembly,性能直逼 native,據說 office 編譯成 WebAssembly 之後體驗絲毫不遜於原生,一個是今年下半年即將出場的 webgpu,他的出現可以將瀏覽器的圖形計算提升到另一個高度

所以,下半場的前端可能要求會越來越高,比如需要更好的基本功(算法功底),比如需要一門 native 語言(c/c++),比如需要良好的圖形技術(webgl、webgpu)。

  1. 前端的機遇

到現在爲什麼只看到了前端越來越重要,技術要求越來越高,不見漲工資?

目前前端職場其實也處於一個平衡期,因爲前端紅利其實也在這兩年消失了,前端 leader 升職最快的那幾年恰好是前端工程化運動最熱烈的那幾年,2011-2016也正是三大框架先後發佈,ES2015 逐漸普及,Babel、webpack 這些事實標準誕生的時間段,那個時候把項目從 JQuery 重構到 React 就是大功一件,足以在升職答辯上賺足了眼球,那個時候在項目裏用上 Webpack 就叫工程化也是拿績效的利器,目前大部分前端 leader 就是靠着一波紅利走上個管理崗或者高 P,所以紅利期不僅對於商業公司,對於職場人士也是適用的。

2016 年之後 IT 職場的紅利已經轉移到區塊鏈和人工智能領域,畢竟用 TensorFlow 調個參當調參小王子也能拿 50w 年薪的年代沒過去多久,這麼看 AI 的紅利可比前端大多了。

是不是可以判斷,前端的職場新人空間已經被紅利期的老人們擠壓沒了?

在固定的產品需求下其實是這樣的,一個企業一旦不擴大,你負責的業務也不增長,當前的產品形態也不變化的情況下卻是機會並不多,畢竟升職加薪的前提是得有坑,並且你得有成績,在紅利期結束後雖然你還有機會,但是機會確實很小了,因爲需要做出更有價值的事情。

但是大部分公司不可能一成不變,隨着我們上節提到的前端下半場的到來,比如雲計算公司需要把開發者牢牢綁定在自己的雲端環境上,那麼他們就需要雲端的 WebIDE,這種 B端面向專業人士的複雜前端項目是不是就是個挑戰同時也是機遇?沒有一定技術儲備的前端根本 hold 不住這種項目,就如同我面對 excel 需求時那樣無力,同樣是寫新聞展示頁面大家的差距都不大,這個時候技術不重要,但是隨着項目複雜度的上升技術其實越來越重要了,這就是機遇。

總結
前端在面對 B 端專業用戶形態的產品下往往能起到核心技術的作用,但是同時對前端的技能要求也會更高,互聯網 c 端產品的紅利期即將結束,前端的下半場即將到來,我們能做的是什麼?
深挖洞,廣積糧,緩稱王

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