前端有將來嗎?

本文首發於 歐雷流。因爲我會時不時對文章進行補充、修正和潤色,爲了保證所看到的是最新版本,請閱讀 原文

最近一段時間,經過各類方式與同行們交流了「前端技術」與「前端工程師」的現狀及將來發展的方向性問題,你們在一些方面有所共鳴。前端

下面就來講說個人一些見解——web

困惑

多多少少,有人曾經或正在困惑:「前端有將來嗎?」編程

有此困惑的人,TA 多是——小程序

正在學習 web 前端技術,就是純粹的 HTML、CSS 和 JS,在用這幾樣作網頁。練習的過程當中發現,或者說忽然想到:「如今微信小程序風行,在其與原生客戶端應用的夾擊下,前端有將來嗎?」後端

一畢業就加入了看似門檻低、工資高的前端工程師行列,進入了一家業務型公司的業務部門。產品經理的需求不斷,都已經排滿接下來的一年了。作的東西,竟是些不太須要動腦子的,作得多了基本只是讓本身變得更熟練。這個功能明天上線,那個需求下週五提測,天天都疲於奔命。微信小程序

上班時總在想:「若是有時間的話,我必定要好好學學技術,提高下本身!」可真可貴下班早了或到休息日了,卻又想:「平時太辛苦了,仍是看看動漫、電影,刷刷抖音、B 站鬼畜,玩玩遊戲,解解壓、放鬆下吧!」微信

周而復始,一年、兩年過去了,團隊仍是那個團隊,本身仍是那個本身。跟兩年前的本身相比,好像只是作需求更快了,由於手法、套路已經至關嫺熟了。這時,不由感慨道:「前端有將來嗎?」前端工程師

與上面的相似,也是一畢業就在業務部門,工做日天天爲業務需求忙得焦頭爛額。不一樣的是,本身是個喜歡折騰的人,有本身的技術理想,就算工做日再忙再累,也願意額外投入一些時間和精力去作些本身想要作的技術產品,雖然是實驗性質的。架構

爲了驗證本身的想法並檢驗本身的技術產品,拿到業務中是最好的方式,它們之間能夠相互促進。因而會在作業務的同時推動團隊的技術及工具更新,讓開發效率提高上去。這樣一來,不只業務迭代變快了,本身也會有更多的時間去折騰,簡直共贏啊!框架

一年過去了,用本身不少業餘時間作的組件庫、UI 框架、命令行工具給團隊及公司帶來不少收益,但受環境及自身限制,能作的也基本止步於此。然而,本身還想繼續折騰,還想作更多的東西,還想進一步提高研發效率,無奈道:「前端有將來嗎?」

這些人的困惑,概括一下,無非就兩個方面:前端技術有沒有將來?前端職業有沒有將來?

解惑

回顧過去,HTML 的出現,只是想讓知識得以在世界範圍內共享,而不僅是攥在手裏和與身邊人分享;CSS 也只是爲了使文字排版好一些,可以像報刊、書籍同樣容易閱讀;而 JS 的誕生,改變了這一切,使 web 發生了變革。

若是說只有 HTML 和 CSS 的「靜態 web」的時代叫做「web 1.0」,那麼 JS 所拉開帷幕的「動態 web」的時代就是「web 2.0」。在此以前,能夠說 web 前端沒有交互,也沒有「前端工程師」這個職業。

準確地說,拉開「web 2.0」時代帷幕的還有另一隻手——Java。要想讓 web 真正變更態,真正有交互,必須是客戶端、服務端兩頭同時抓起,否則數據怎麼流動起來?

前端職業的誕生與變革

這帶來了商機,擴展了銷售和傳播渠道,傳統企業將交易從線下搬到了線上,把實體轉爲虛擬,並催生了一批服務這些企業的企業,以及服務服務這些企業的企業的企業。所以,以網頁爲載體所進行的業務愈來愈多,涵蓋各行各業,千奇百怪,使頁面的展示與交互愈來愈複雜。

業務邏輯變得複雜,給後端開發也帶來了很大的挑戰。起初他們還能本身寫寫 JS 代碼,HTML 和 CSS 讓設計師或所謂的「頁面重構工程師」去寫。但在這種狀況下已經自顧不暇了,哪還有空去管前端?!「前端工程師」這個職業應運而生。

慢慢地,「頁面重構工程師」退出歷史舞臺,他們要麼轉變爲「前端工程師」,要麼已經轉行。在作 web 應用開發時,前端工程師和後端工程師成爲標準搭配。

隨着智能手機問世,移動互聯網時代來臨,又誕生了爲不一樣智能手機開發客戶端應用的職業,如:iOS 工程師、Android 工程師等。可將他們統稱爲「客戶端工程師」。

他們的出現,對後端工程師沒有任何影響,由於他們的工做不存在競爭關係,對前端工程師影響就大了。

爲了搶佔用戶手機裏的一點空間,不少具備互聯網基因的企業都要擁有本身的客戶端應用,招入大量客戶端工程師。本來面向用戶的功能,都改用客戶端應用而不是 web 頁面,前端工程師的工做基本只剩作作後臺管理系統,前端工程師在公司中被邊緣化,並漸漸被裁減。

就是在這一時期,前端工程師開始紛紛去接觸 Node.js,想將本身日後端開發方向拓展一些邊界,給本身增長點生存空間。能夠說這是「前端工程師」這個職業出現以來的最低谷、最迷茫的時期了。

接着,企業頭腦稍微冷靜了一些,發現每次要作新的功能,都得開發 feature * platform 遍,各類成本過高!就想着能不能有隻開發一遍就能在不一樣客戶端中運行,且體驗不要太差的方式?這就又催生了混合開發、React Native 等開發模式、工具與框架。

由於新生方式大部分是之前端技術爲主,前端工程師迎來了翻身的機會,最終逆襲。客戶端工程師在公司中被邊緣化,並漸漸被裁減,最後剩餘幾個被併入「大前端團隊」。

通過這一來一去,「前端工程師」這個職業如涅槃重生般煥發新春。那段「迷茫期」向後端拓展邊界的摸索不是白作的,讓本身可以擺正心態、端正思想——不要妄圖用 JS 去取代 Java,從企業、從業界的角度講,你憑什麼取代 Java?

以後,前端工程師就行走在「泛客戶端」這條路線上,即便是用 Node.js 在後端作點什麼,也是爲了達到讓前端更好的目的,而不是試圖去分後端開發領域的一塊蛋糕。

中國互聯網發展的這二十年左右時間,產品研發流程中所參與的角色,逐漸造成了產品經理、設計師、前端工程師、後端工程師、測試工程師、運維工程師等職業。

在一家上軌道的企業中,通常會有業務部門和平臺部門,每類部門中都會有本身的產品經理、前端工程師和後端工程師,其餘的就看公司了。業務部門就是直接支撐公司賴以生存的商業層面的業務需求的迭代,平臺部門則是爲業務部門的工做提供基礎設施及技術支持。

長期以來,業務邏輯幾乎都在後端,前端基本只是一些交互邏輯,這讓後端開發不管是在基礎設施仍是思想體系上都更加完善。而在近些年,前端的業務邏輯愈來愈重,而且因爲前端工程師的職業門檻低,不少人沒受過專業訓練,軟件設計、建模等能力差,代碼的健壯性、可維護性、可擴展性極差,形成了不少工程問題和架構問題。

這十來年,Grunt、Gulp、Webpack、Backbone、Angular、React、Vue 等的出現,都是爲了解決前端開發的工程問題與架構問題。前端這些年一直在「補課」,爲了能扛住目不暇接的業務需求,爲了能遇上後端的基礎設施與思想體系上的成熟度。

業務前端的困境與出路

業務部門的前端工程師,處在一個難以逃脫的怪圈之中——

大部分人想提高自身技術水平,卻沒時間和精力在工做時間「光明正大」地去研究技術,這在組織裏是「政治不正確」的作法,必需要業務爲先,要研究只能本身的非工做時間去下苦功夫。然而在非工做時間,由於人性或其餘什麼緣由,本身又不會去研究技術,或者不夠深刻。

日常工做中在提效方面能作的頂多就是組件庫和腳手架之類,一些應用、系統的架構設計工做,都被平臺部門的人作了,直接用他們的東西就能夠了。業務部門也基本不會讓其下面的前端工程師去作總體架構方面的工做,由於不符合「價值觀」,也就是「投資回報率」的問題。

大部分人在思想上存在一個誤區——前端工程師不須要懂業務。認爲本身的工做就應該是根據產品需求文檔人工把設計圖轉化爲頁面,再與後端工程師把數據接口調通,保證本身沒 bug 就行。

你看,就連本身都以爲本身在整個功能的迭代過程當中充當「將產品需求文檔與設計圖轉化爲頁面」的工具化角色,也就別怨別人把你當工具使了,可不就一個「有感情的工具人」咋的……若是前端工程師的價值如此,註定是被做爲工具,做爲資源呼來喚去。

前端工程師的這種行爲,被稱爲「面向頁面開發」;只會且成天圍着框架、庫團團轉的,被叫做「面向框架編程」。

「面向頁面開發」與「面向框架編程」的前端工程師會逐漸失去競爭力,他們的工做終將會被其餘職業的人或者非人工方式取代。

爲了留住飯碗,業務部門的前端工程師不該該繼續這樣下去。有兩個大致的改變方向:

  1. 若是十分熱愛技術,就是想先大大得提高並突破本身的技術水平瓶頸,那麼就要去平臺部門,這樣才能獲得很好的鍛鍊和提高;
  2. 若是更喜歡本身所作的業務所在的行業,那麼就去補充業務領域知識,本身的技術水平咋樣就不要那麼關注,只需在大腦中知道業界內大概有哪些技術和方案,遇到了什麼業務場景能解決問題,碰到了就拿來用。

也就是說,前者會創建並不斷完善本身在軟件開發方面的思想體系,修煉本身的編程哲學,探索更多的可能性;後者則成爲某個業務領域的專家,運用工具和方案的能力會很強,但技術能力偏弱。

其實總體來看,不管是選擇技術方向仍是業務方向,會變得和後端工程師的思想及工做方式差很少了,前端工程師與後端工程師愈來愈同質化,只是解決的問題域不一樣。

以十年爲跨度,業務部門中開發人員也許再也不以「端」來進行分工,直接「領域工程師」或「產品工程師」一把摟!

將來十年裏能作些什麼

總的來講,就是榨取前端技術的剩餘價值。當前最迫切的,應該是這兩個方向:

  1. 至關成熟、穩定的基礎設施,讓業務開發可以專一於業務;
  2. 足夠強大、好用的低代碼開發平臺,給運營、產品賦能。

與此同時,能夠探索 AI、IoT 等領域,併爲下一個「十年」作準備。

總結

要清楚,在人類社會中,技術的存在是爲了知足人們的需求,讓生活更好;在企業中,技術的存在是爲了服務於業務,幫企業賺錢。

前端開發,即「泛客戶端」開發的本質是「解決人機交互這個領域的問題」,從業人員的關注點應該是「如何更好地解決人機交互問題」,而不是具體所採用的手段。要解決的問題是不會變的,但解決問題的手段是不斷推陳出新的,這也就是爲何「面向頁面開發」與「面向框架編程」的前端工程師終將會被淘汰的緣由。

在入行時,就應該想清楚本身究竟是要往技術方向發展仍是往業務方向,這對本身的職業道路影響很大。若是是往業務方向,那麼工做的業務領域就不能有大的變化,如上一家公司是作在線教育的,下一家就去作電商了;選擇技術方向,也要考慮好本身所要深刻研究的領域,搞基建就搞基建,搞智能就搞智能。

前端工程師在「泛客戶端」這條路上還能走多久?我認爲是不須要人機交互的那一天。

前端技術還能用多久?多是不須要 web 頁面的那一天?


歡迎關注微信公衆號以及時閱讀最新的技術文章:

Coding as Hobby

相關文章
相關標籤/搜索