爲前端工程之崛起而編程

曾經在知乎的一個問答<從事前端真的沒有後端工資高?>中談到本身對前端工程師的天花板的認識:css

我以爲,隨着互聯網產品愈來愈多,用戶們一定也會不斷的索取更好的用戶體驗,前端同窗也會扮演着愈來愈重要的角色。責任愈來愈重,天花板就愈來愈高。 (誒,本身說的話,貌似也不必加什麼引用....)html

當時的角度主要注重產品體驗上。如今入職螞蟻1年左右,對其又產生了一些新的想法。雖然前端的能力愈來愈強,技術棧要求也愈來愈高。但從工程角度出發,前端目前還處在一個較低的階級水平。前端

首先,咱們做爲前端工程師,是怎麼定義這個「工程」的呢?node

何謂前端工程

我剛畢業的時候,在一家創業公司作全棧,職稱是web開發工程師。當時先後端未分離,而我心裏的工程,就是我手頭整個先後端工程代碼。當時對前端工程是沒有概念的,對我而言,前端就是js+css+html,它脫離了服務器就沒了意義。單把這些代碼拎出來,我也沒法稱之爲工程。git

後來三大框架出現,先後端逐漸分離,開始出現「前端工程化」的概念。17年初時,曾面試過一家小創業公司,面試官問我前端工程化怎麼作?當時我回答:「前端工程化就是:代碼模塊化、功能組件化,打包、構建、發佈自動化、流程化。」在後面的一年中,個人工程化概念,大體仍是如此,可能還會加上一個開發規範。程序員

在這個「工程化」概念下,我所認爲的「前端工程」,就是我眼前的「前端代碼」,它的最終目的是爲用戶輸出前端頁面。我最關注的便是:如何更高效率、更高質量的爲用戶輸出體驗更好、能力更多的頁面。 這些年前端coder圍繞着這點也作了不少:web

高效率面試

  • ES6+
  • 多端統一
  • 接口管理與mocker
  • 框架、工具庫、組件庫

高質量編程

  • 開發高質量
    • git
    • code review
    • 開發規範
  • 線上質量保證
    • 監控系統
  • 應急-快速回滾能力

更好的體驗小程序

  • 多尺寸適配
  • 小程序
  • 高性能

能力更多

  • 複雜交互
  • native能力
  • 動畫、遊戲

固然這其中也有一些交集,好比三大框架的出現既爲高交互頁面提供了可能性,也提升了總體開發效率與質量。好比圍繞高效率與高質量會統一建設一個前端迭代管理系統,負責工程迭代、構建、發佈、回滾。

其實我也就隨便列列,有不少東西都沒涉及,但也能感覺到這幾年前端領域的日新月異。再站在如今這個時期,看先後端未分離的時期,那段後端兼職js、視覺兼職css的上古年代,確實不能稱前端代碼爲「工程」,更不太好意思說前端程序員爲「工程師」。這也難怪不少高校老師、後端同窗不屑前端。

但立足如今,前端所涉及的範圍已經遠遠超出了當年,咱們的「工程」複雜度與其能擁有的能力也超出當年的想象。咱們能夠驕傲地說本身是一名前端工程師了。但我以爲,咱們彷佛離軟件工程師還差一點點。

前端工程師,首先是軟件工程師

網上有不少人,都說過這句話。說的彷佛頗有道理,卻又沒啥體感。而近幾天我對這句話感覺日深,這其中很大緣由歸功於螞蟻在Node上的豐富實踐。

螞蟻應該是實踐Node比較多的公司了。目前螞蟻的大部分移動端業務,都有對應的體驗適配層-BFF層,也即你們通俗理解中的Node中間層。它的主要職責爲:銜接頁面與後端,聚合後端接口,作好數據轉化,輸出最知足頁面指望的數據結果。它的主要目的爲:讓後端更專一於領域模型,將頁面數據的設計交與前端,彼此更專業高效。更通俗點說:讓業務開發更快!

而加入螞蟻后,BFF層能夠說給我增長了不少工做量。咱們須要開始給本身頁面設計接口,須要對接多個後臺系統。新增接口,可能須要考慮拓展性;舊的接口變動,須要考慮兼容性。若是涉及後端變動,須要評估其變動影響,須要評估系統的依賴與發佈的前後順序。此外還須要考慮需求上線時,node層與前端的灰度方案、監控方案、應急方案。

因此在咱們組,業務需求所涉及的前端變動是須要作系統分析的,後端系統分析也是要參加的,這些涉及了上述所說種種。尤爲是當需求變動較大、波及較廣,甚至還同時涉及了多個系統間的遷移、升級、重構,這其中的複雜度便會迅速上升。對於體量較大、用戶量較多的業務,這就是對工程師的一個考驗了。

當你不斷的經歷這些挑戰,可能忽然有一刻,會有種感受:做爲一名工程師,之前都只關注本身手頭的前端代碼,對於整個軟件系統工程的思考實在太少了。在這個軟件系統中,前端所涉及的工程扮演着哪些角色?哪些系統影響着它?它影響着哪些系統?它們的變動都會產生什麼影響?

因此前端工程師,其做爲一名軟件工程師,應該從整個軟件系統工程去看。前端工程師不只僅是完成本身的前端工程,而是完成了整個軟件系統中的一部分,它也不會脫離整個系統而獨立。而做爲整個系統工程的一部分,前端工程要懂得去索取,懂得去影響,瞭解總體工程的能力與痛點,思考總體工程如何去提升。

這時候再來看這句話:前端工程師,先是軟件工程師。不知道你們可否多了一些體感。

前端地位低

但若是咱們從整個軟件工程來看,這時候咱們就會意識到一個慘痛的事實:前端工程在整個系統工程中的地位過低了。在螞蟻,前端工程師日後走了一步,多了一層node層,在總體系統工程中擴大了自身佔比,還算好一些。而對於大多數只涉及web頁面工程的同窗來講,望着這個巨大的軟件系統工程,即便有心,彷佛也無力。

其實我以爲不少前端工程師是很厲害的。尤爲是這幾年,愈來愈多的優秀畢業生加入了前端。有時候我會以爲,前端的交互邏輯如此複雜,其對代碼水平的要求比後端大部分的業務場景高到不知道哪裏去了。但純粹的代碼水平並沒有法決定前端工程的影響力。即便你能用0和1敲打出一個天花亂墜的頁面,那它也就是一個頁面。

前端工程在一個軟件系統中是處於最上游的(用戶入口)。所以,也就沒有其餘系統須要調取前端系統的服務。在整個軟件系統中,前端對接的系統少,所影響的系統也少,工程地位低。不像後端,它既須要爲前端提供能力,又須要問中後臺、數據層索取能力,也可能須要問其餘業務後端索取能力,對接系統不少,工程地位天然也高。

由此又會致使,前端每每不是產品可否實現的決定性因素。在軟件系統中,須要上游系統調取下游系統服務。換言之,上游依託於下游。這天然而然的致使技術評估從下游開始。到前端評估時,已是最後一道坎了。而這一道坎,業務方每每是不管如何也得過的。若是坎比較高(交互視覺難以實現),最終也是經過下降交互複雜度與用戶體驗,來保證產品功能先上。

有不少同窗認爲前端對業務的參與度過低了。但咱們自我感受對業務參與度也挺高呀,我知道產品都有哪些頁面,都有哪些功能。但瞭解並非參與,影響纔是參與。前端的工程影響力以及業務影響力,致使了前端對業務的參與度本質上是很低的。在這種狀況下,說白了,不少前端只是流水線工人。視覺稿來了,實現它。實在實現不了,打回換一份更簡單的視覺稿。可不甘心作一個流水線工人啊,彷佛都能看到年紀大了之後被裁人的結局。那這又該怎麼辦呢?

前端的焦慮

前端彷彿一直處在焦慮當中。前兩年咱們的主要矛盾是日益爆發的前端新技術同前端程序員學不動之間的矛盾。而這一兩年前端技術棧趨於穩定,輪子相對也少了。加上前端程序員也比較拼,學不動的感受也隨着無數個夜晚的學習而漸漸逝去。

這時候前端又開始了新的焦慮,前端的天花板是否是過低?工資是否是沒後端高?前端開發的壁壘在哪裏?我認爲咱們的主要矛盾已經發生了變化,變成了前端日益增加的工程地位訴求同前端工程侷限性之間的矛盾

聰明或勤奮,再加上時間的積累,老是能解決「學不動」的問題的。但前端工程地位訴求怕是自身再怎麼努力也不必定能解決的。解決當下前端焦慮的辦法只能是打破前端工程侷限,增長前端工程影響力,拔高其工程地位。最終讓前端人員也能在軟件系統工程中當家作主,平等的參與到軟件系統建設當中

只有前端崛起,前端工程師才能擺脫焦慮,而這不是一兩我的的戰鬥,須要你們一塊兒去努力實現。我我的想了三條計策。

崛起三計

無中生有

能從現有工程中發現痛點,創造出一個系統或服務,提升效能、促進業務出成果。典型的如Node層,利用node服務端能力,搭建一層爲前端服務的BFF層。因而便在一個軟件系統工程中,硬生生造出一層系統,拓展了前端工程師的工程地盤。

遠交近攻

在一個系統工程中,咱們多作了一部分工做,天然就有人少作了一部分。如今咱們無中生有的,是人家不肯意作的「髒活累活」。若是我須要侵佔下游的核心能力時,他們便不必定讓步了。這時候咱們能夠採起「遠交近攻」。若是咱們能直接對接下游的下游,同時又能擁有下游的能力。那咱們下游還有什麼存在的意義呢?如今流行的FaaS彷佛就給咱們提供了一個idea、亦或者就是個契機。

反客爲主

前端雖然是上游系統,但能夠經過提升自身工程能力,主動地放大業務可能性。將可能性的瓶頸下拋,進而促進下游系統提升自身能力。化被動爲主動,改接受爲影響,進而提升自身工程地位。典型的如小程序。小程序最初是由客戶端同窗去實現,最開始其實也是致力於平臺生態問題。因其技術棧基本與前端契合,極大了利好了前端開發者(而不是客戶端開發)。前端開發同窗瘋狂涌入後,一方面作了很是多基建工做,極大提升了小程序開發效率。另外一方面,大量的小程序讓業務看到小程序的無限可能。進而對小程序自己能力也多了不少訴求,如微信小程序支持了Npm包。社區裏,前端程序員在小程序建設上不斷努力,現在說到小程序,你們彷佛都在誇前端厲害。

相信隨着無數優秀的前端同窗不斷的奮鬥,幾年之後的前端工程師必然又是另一番成就。但願屆時,咱們能夠驕傲的稱本身爲一名軟件工程師。咱們依舊會不斷學習,但學習的背後再也不是由於焦慮,而是純粹對於工程與代碼的熱愛~

加油吧前端程序員們!讓咱們一塊兒爲前端工程之崛起而編程。


關於咱們:

咱們是螞蟻保險體驗技術團隊,來自螞蟻金服保險事業羣。咱們是一個年輕的團隊(沒有歷史技術棧包袱),目前平均年齡92年(去除一個最高分8x年-團隊leader,去除一個最低分97年-實習小老弟)。咱們支持了阿里集團幾乎全部的保險業務。18年咱們產出的相互寶轟動保險界,19年咱們更有多個重量級項目籌備動員中。現伴隨着事業羣的高速發展,團隊也在迅速擴張,歡迎各位前端高手加入咱們~

咱們但願你是:技術上基礎紮實、某領域深刻(Node/互動營銷/數據可視化等);學習上善於沉澱、持續學習;性格上樂觀開朗、活潑外向。

若有興趣加入咱們,一同爲前端崛起而努力,歡迎發送簡歷至郵箱:fengxiang.zfx@antfin.com


本文做者:螞蟻保險-體驗技術組-阿相

掘金地址:相學長

相關文章
相關標籤/搜索