當前位置:
首頁 > 科技 > 前端開發出現危機?

前端開發出現危機?

2018 年 CSDN 軟體開發者大調查活動開始了!自 2004 年開始,我們通過對開發人員、開發技術以及開發工具、平台的狀況和發展趨勢等進行深入的調研,為開發者呈現了一幅幅真實的中國開發者畫像。十四年的歲月沉澱,萬餘人的濃墨重彩。相信有你的參與,會讓這幅開發者繪卷更加精彩。「Stay hungry, stay foolish」——Just join us now!

(繼續下滑,閱讀精彩內容吧 )

前端開發還是我們所熟悉的那個角色嗎?還是說這個角色已經變得物是人非了?與自然界的進化相仿,「前端」的演變已經分裂成了幾種不同的分支,而且在我看來這個身份出現了危機。

什麼是前端開發人員?

在傳統意義上,前端可以定義成應用程序的用戶界面,也就是面向客戶的部分。然而,近年來這種情況似乎發生了變化,因為公司老闆希望開發者有更多的經驗、掌握更多種的語言、部署到更多平台,而且還常常要求他們擁有「計算機科學或計算機工程相關的學位」,這個定義似乎已經發生了變化。

像Angular這樣的框架,或React這樣的庫需要開發人員對編程的概念有更加深入的理解,而這些概念在歷史演變過程中與後端密不可分。如果你只有HTML、CSS和基本的互動式JavaScript的知識,那麼就很難理解MVC、函數式編程、高階函數、提升等概念。

這給開發人員帶來了巨大的壓力。常常有人打退堂鼓,或者感覺只知道CSS和HTML已沒有價值。然而科技在發展,也許知道CSS和HTML還不夠,但是我們可以停下來問問自己,成為一個前端開發者真正意味著什麼。

剛開始時我是一名設計師,常常感覺自己的技術知識還不夠。在前端開發者的面試中,當有人問我什麼是SSL證書時,「確保HTTP請求和響應的安全」並不是一個充分的答案。不要誤解我的意思,這些主題很重要,但是這些技術細節是否與這個角色相關呢?

從現在開始有時我會簡稱前端開發為FED(front-end development)。

問題

這種身份的危機是由多方面共同造成的:公司、招聘和開發人員。這個角色承擔著不同水平的責任,因此角色本身變得很模糊,薪酬差距也很大,而且缺乏行業內的標準工作規範。

看看就業市場,你可能會發現各大公司都想希望他們的員工能成為精英,而且可以勝任多種職責。招聘人員對於這個角色也有著很多不切合實際的期望,而且人力資源部門其實對招聘技術的要求知之甚少。最後開發者自己也需要對這個問題負責:因為他們甘心接受這樣的技術面試。究竟是默默承受這份工作帶來的不必要的壓力,迫使自己學習新技術;還是挑戰招聘人員和公司,讓他們認清前端開發人員這個崗位的真正意義,我們到底應該怎麼做?

比較一下LinkedIn上發布的如下兩則招聘啟事,這兩個職位都是「前端開發人員」。但這兩個角色有很大的不同:左邊的開發者需要知道Flux架構和單元測試,而右邊的開發者需要了解Java和MongoDB。

比較LinkedIn上兩個「前端開發人員」的職位

這兩個角色截然不同,而且很明顯都缺乏職責範圍的定義和角色描述。

為什麼標準化角色很重要?

平衡收入差距:前端工程師得不到前端開發應得的酬勞,反之亦然。

減輕壓力;開發人員可以選擇專註於工程產品,或專註於創造豐富的互動式Web體驗。

培養專家;培養真正擅長CSS、HTML和互動式JavaScript的開發人員。

減輕求職壓力,尤其是在技術面試和工作規範方面。

關注點分離

為了定義這個角色,我們必須把超出前端開發職責範圍的所有角色都清理出去。例如,Web開發人員的角色不應該與前端開發混為一談:前者構建應用程序,而後者構建用戶體驗。還有其他例子是前端設計師、Web工程師、後端Web開發人員等。

為了區分這些角色,我們可以看看以下四個標準:

開發人員的範疇

如果我們假設前端的主要環境是瀏覽器,那麼在這個環境中PHP或C#開發人員從事的工作屬於哪個範疇?PHP就是一個很好的例子,在伺服器上運行,但最終仍然會將數據傳遞給用戶界面(即瀏覽器)。JavaScript和PHP都是不需要編譯的腳本語言。那麼PHP開發者屬於前端還是後端開發人員?

Github的Electron等工具可以讓開發人員利用HTML、CSS和JavaScript構建跨平台的桌面應用程序。類似的工具還有Adobe Phonegap,能夠將JavaScript編寫的HTML頁面編譯成原生移動應用程序。這實質上可以讓中級前端開發人員構建並發布移動或桌面應用程序。那麼是否意味著應用開發也屬於前端開發人員的職責範圍?

由於JQuery和Node的出現,後端和前端之間的界限變得越來與模糊,而且大家常常希望前端開發人員了解Node和Express等附帶的軟體包。這些明顯是後端的技術,為什麼我們要把它們加入到前端工作的規範中呢?

在標準化這個角色之前,我們必須在前端開發人員的範疇是什麼上達成一致。在我看來,這個範疇僅局限於應用程序和主要在瀏覽器中運行的用戶界面,這個角色應該與構建伺服器端功能沒有任何關係。

語言的選擇

我們需要考慮的第二個標準可能是開發人員選擇的編程語言。你可以用Python和C#等語言構建網站的基礎設施,這與上述的問題相同:我們可以將Python、PHP和C#視作前端語言嗎?

下面的招聘啟事中要求開發人員必須掌握PHP技術,而另一個則要求開發人員了解TypeScript。

比較LinkedIn上兩個「前端開發人員」職位所需的技術

隨著TensorFlow等熱門框架開始支持JS,許多PHP和Python可以實現的功能,現在利用JavaScript也可以實現。上述其中一個職位要求掌握TypeScript,該語言為JavaScript帶來了只有Java等語言才有的靜態類型。那麼在考慮前端語言或框架的時候,我們應該從哪裡畫這條分界線?

如果我們將PHP、C#、Java等統統排除在外,那麼哪個框架或庫才屬於這個角色的範疇呢?例如,JQuery是構建Web交互性的完美工具,但大多數的前端開發人員可能會認為學習Vue會更好。

另一方面,像React這樣的庫要求開發人員學習原本與前端沒有關聯的概念:設置webpack和編譯、部署流程、了解高階組件,以及只為了感興趣你可能需要了解Redux的狀態管理。這個技術列表會越來越長,雖然這些庫使用的都是JavaScript語言,但是它們帶來的思想往往有很大的不同。

許多後端開發人員跟我說他們覺得CSS非常難,我同意CSS很難。我們可以原諒後端開發人員不了解CSS和互動式JavaScript,那麼為什麼又希望前端開發人員掌握後端的技術呢?

最終我們應該問的問題是:前端開發人員是否應該處理功能性或數據驅動的組件?在我看來,這個角色可以在語言選擇上只選擇HTML、CSS和JavaScript(僅限於前端庫),主要負責構建互動式的組件或Web項目,而且可以在必要的時候可以使用服務數據。

技術水平

什麼時候前端開發人員會轉變成全棧開發人員或Web開發人員?

想想範疇和語言選擇,你就可以很容易地區分這一點。全棧開發人員是一個同時了解前端和後端的開發人員(也就是說可以處理多個範疇)。Web開發人員是可以利用多個框架、庫和語言構建豐富的數據驅動的應用程序的開發人員。大多數的前端開發很可能從中級的前端開發角色發展成高級全棧開發、工程師等角色。

那麼,根據到目前為止我們對這個角色的定義,是否可以發展成為高級前端開發人員?我的論點是可以。只需看看Awwwards(https://www.awwwards.com/websites/)上登載的獲獎網站,你就會同意如果想達到這個程度的交互水平,那麼必須很好地理解DOM以及通過JavaScript操控DOM。這樣前端開發也可以專註於學習構建互動式功能的庫(例如HTML canvas、WebGL等),而不是把時間浪費在與前端開發背道而馳的後端庫或框架上。

其他專長

我們需要考慮的最後一個因素是:前端開發角色帶來的所有附加要求。我覺得「包袱」這個詞很貼切,因為這些要求往往會以特殊的方式混合到一起。

一個很好的例子是MongoDB(這是上述招聘啟事中的一個要求)。以前資料庫管理或架構本身就是一個角色,那麼為什麼我們現在卻將這些技術視作前端開發最重要的技術呢?

另一個例子是上述截圖中列出來的圖形設計的要求。就個人而言,我非常贊同開發人員需要理解設計,但是將其視作前端開發最重要的技術,是不是將該角色想像成別的角色了,例如前端設計師或全棧設計師?

在考慮這些所有的知識所帶來的額外責任時,我們不禁問自己將這些職責混合到一起是不是只是複雜化了這塊領域。如果今天我決定在公司內引入React,那麼下一個代替我的開發人員也必須知道React。然後如果這個新的開發人員決定加入Redux……你看出事態的發展方向了嗎?更糟糕的是,公司會繼續招前端開發人員,不論公司用到的技術是什麼,因為這個部門需要這樣的一個角色。

因此,能力有多大責任就有多大,最終是我們開發人員來負責使用的技術。想想技術棧的改變對運營帶來的影響,而且你需要明白你可能會使現有問題長期存在。

定義角色

到目前為止,我們已經討論了成為前端開發人員的意義,我們可以總結出以下職位描述:

前端開發人員負責使用HTML、CSS和JavaScript為Web構建互動式用戶界面或體驗。

簡單來說:前端開發不需要了解函數式編程,或清楚SSL的具體技術細節。這並不是說他們不應該學習這些概念,但至少大家不應該對他們有這樣的期望。

我覺得通過幫助下一代前端開發人員理解前端開發的意義,齊心協力解決開發社區內有關這些角色的困惑非常重要。

這篇文章完全是根據我個人的經歷和意見編寫而成的,歡迎在評論區發表你的意見。

原文:https://dev.to/assaultoustudios/is-front-end-development-having-an-identitycrisis-2224

作者:Vernon Joyce

譯者:彎月,責編:屠敏

微信改版了,

想快速看到CSDN的熱乎文章,

趕快把CSDN公眾號設為星標吧,

打開公眾號,點擊「設為星標」就可以啦!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

印度在谷歌 Facebook 面前的剪不斷理還亂
神奇!未來物聯網的能源——紙生電

TAG:CSDN |