為什么整個互聯(lián)網(wǎng)行業(yè)都缺前端工程師仁堪?
前端工程師的缺乏問題幾乎蔓延到整個互聯(lián)網(wǎng)行業(yè),從剛起步的創(chuàng)業(yè)公司填渠,到上市公司乃至巨頭弦聂,這個問題都存在著鸟辅。沒錯,優(yōu)秀的前端工程師簡直比大熊貓還稀少莺葫。
每天匪凉,100offer 的 HR 群都有人在吐槽招不到靠譜的前端工程師。實話說對這些需求捺檬,100offer 也無能為力:在供不應求的前端招聘市場上再层,優(yōu)秀的前端工程師才是有話語權(quán)的那一方。
在國外堡纬,前端工程師一樣是需求旺盛聂受、供不應求的香餑餑。
舉個例子烤镐,根據(jù) http://indeed.com** 抓取的數(shù)千家網(wǎng)站的職位顯示:目前前端的熱門崗位——「HTML5」是需求增長最快的開發(fā)崗位蛋济,在所有開發(fā)職位中排名第一,MongoDB 和 iOS 緊隨其后位列第二炮叶、第三碗旅。
HTML5 可以說是最熱門的前端崗位了,在 2010 年和 2014 年底有兩次爆發(fā)性增長镜悉,現(xiàn)在在美國的崗位需求甚至超過了iOS祟辟。
市場上優(yōu)秀的前端工程師相對較缺少,是一個世界性難題侣肄。
原因一:前端相對來說是一個新領域旧困,當今的web需求要求更多的工程師供應
可能很多人認為前端開發(fā)和 web 開發(fā)類似,而 web 開發(fā)已經(jīng)有20多年的歷史茫孔,所以前端并不是一個新領域叮喳。然而,前端工程師的概念中的「接口技術(shù)實現(xiàn)和用戶體驗作為一個專業(yè)的工作領域」缰贝,卻無疑是很新的馍悟。大概幾年前,前端開發(fā)的技術(shù)增長迅猛剩晴,如下圖所示:
過去幾年前端工程師的可視化增長趨勢 by Google Trends
至少15年以前锣咒,web 的視覺設計和技術(shù)實現(xiàn)所需要的資源是平均分配的。隨著網(wǎng)站的發(fā)展——網(wǎng)站不僅是一個登錄頁面赞弥,工程資源的需求越來越明顯毅整。人們開始專門學習網(wǎng)站專用的 JS、后端技術(shù)绽左、UX悼嫉、數(shù)據(jù)庫,甚至系統(tǒng)設計拼窥。
今天戏蔑,一個像 AirBnB/Facebook/Quora 的 Web 應用程序粘咖,投入的工程資源比設計資源多得多点晴。換句話說魄衅,如今蝗柔,做出網(wǎng)頁的視覺設計比技術(shù)實現(xiàn)要更快,所以當今的web需求要求更多的工程師供應情龄。
現(xiàn)在迄汛,一位合格的前端工程師,必須對視覺設計有興趣(或者樂于做一個受虐狂▼)骤视。
很顯然鞍爱,要處理大量的 Web 應用程序需求,技術(shù)任務就要進行分類尚胞,以便于多人同時處理網(wǎng)站請求硬霍。事實上現(xiàn)在已經(jīng)不可能一個人快速地解決所有的技術(shù)細節(jié)了。
現(xiàn)在躬柬,一個創(chuàng)業(yè)公司想要成功拜轨,幾乎要覆蓋一個 Web 應用程序的諸多技術(shù)方面:前端、后臺允青、DBA橄碾、運營等。雖然已經(jīng)有一些服務可以讓企業(yè)購買登陸頁面的前端模塊和組件颠锉;但是如果你想要創(chuàng)造一些真正的 Web 應用程序法牲,除了求助前端工程師,別無他法琼掠,就像你要創(chuàng)立一個品牌你也繞不開請一位設計師一樣拒垃。(web前端學習交流群:328058344 禁止閑聊,非喜勿進4赏堋)
原因二:對前端悼瓮,普遍存在巨大的誤解,其實前端一點也不簡單
大多人都認為前端開發(fā)是一個「相對于其他技術(shù)來說更簡單的技術(shù)」艰猬,在他們心中的前端工程師是這樣工作的:
- 把 Photoshop 文件横堡、圖片或者線框放進一個網(wǎng)頁;
- 偶爾設計 Photoshop 文件冠桃、圖片或者線框命贴;
- 用 JS 編程,為網(wǎng)頁制作動畫、過渡效果胸蛛;
- 用 HTML 和 CSS 編程培己,確定網(wǎng)頁的內(nèi)容和形式。
事實上胚泌,前端工程師在做的是:
- 在設計師和工程師之間創(chuàng)建可視化的語言;
- 用可視化的設計肃弟,定義一組代表內(nèi)容玷室、品牌和功能的組件;
- 為 Web 應用程序的公約笤受、框架穷缤、需求、可視化的語言和規(guī)格設定底線箩兽;
- 定義 Web 應用程序的設備津肛、瀏覽器、屏幕汗贫、動畫的范圍身坐;
- 開發(fā)一個質(zhì)量保證指南來確保品牌忠誠度、代碼質(zhì)量落包、產(chǎn)品標準部蛇;
- 為 Web 應用程序設定適當?shù)男芯唷⒆煮w咐蝇、標題涯鲁、圖標、邊距有序、填充等等抹腿;
- 為 Web 應用程序設定多種分辨率的圖像,設備為主的實體模型旭寿,同時維護設計指南警绩;
- 用 account semantics, accessibility, SEO, schemas ,microformats 標記 Web 應用程序许师;
- 用一種友好的房蝉,消耗小的,設備和客戶端感知的方式連接 API微渠,獲取內(nèi)容搭幻;
- 開發(fā)客戶端代碼來顯示流暢的動畫、過渡逞盆、延遲加載檀蹋、交互、應用工作流程,大多數(shù)時間用來考慮漸進增強和向后兼容的標準俯逾;
- 保證后臺連接安全贸桶,采取跨地資源共享(CORS)的程序考慮,防止跨站點腳本(XSS)和跨站點請求偽造(CSRF) 桌肴;
- 最重要的是皇筛,盡管有嚴格的期限、利益相關者的要求坠七,以及設備的限制水醋,無論現(xiàn)在還是將來永遠是「客戶第一」。
為了實現(xiàn)上述目標彪置,前端工程師采用了從可視化到編程的多種工具 拄踪,甚至有時要照顧市場、 UX 到內(nèi)容等等拳魁。
原因三:大量糟糕前端工程師的存在惶桐,擾亂了市場
這或許是難以招到優(yōu)秀前端工程師最明顯的原因。由于前端工程師的入門門檻非常低潘懊,JS姚糊、CSS、HTML并不是很難入門掌握的語言授舟,似乎只要花一點時間叛拷,無論是誰,都可以通過網(wǎng)上教程或者書本入門岂却。對的忿薇,前端工程師市場就是被這些淺嘗輒止的家伙搞壞的。
糟糕的前端工程師:
- JavaScript 類庫亂用躏哩,對 JavaScript 本身并不了解署浩,什么地方都用 jQuery;
- 濫用 JavaScript 插件扫尺,看都不看看就把別人的代碼拿過來用筋栋,比如說;
- 不看需求正驻,不做任何的比較和測試弊攘,就把CSS 框架加到項目中,但只用了其中 5% 的功能姑曙;
- 認為添加個 CSS Framework襟交,網(wǎng)站就可以變成“響應式的”,或者 響應式就像是一些小作料伤靠,隨便就可以加入到一個網(wǎng)頁應用中捣域;
- 嘴上喊著“響應式的 Web 設計”,但服務端技術(shù)一點都不懂;
- 編寫的 CSS 沒有任何規(guī)范標準焕梅,不使用任何預處理器迹鹅,也沒有最佳實踐。CSS 代碼中充滿了過度使用的選擇器贞言、ID斜棚、神奇的數(shù)字以及 !important;
- 不關心代碼的性能和內(nèi)存泄露(什么是真正的內(nèi)存泄露也不清楚),不會對代碼進行性能測試该窗;
- 對產(chǎn)品沒有任何的衡量指標打肝,或者把“在我的電腦/瀏覽器/移動設備上可以工作”為指標;
- 忽視30年的軟件工程實踐挪捕,毫無章法的開發(fā)軟件。
要知道争便,入門容易精通難级零,計算機和軟件的基礎對你用 JS 或瀏覽器編程都非常重要。web 可能是最有影響力的平臺和環(huán)境之一滞乙,在那里執(zhí)行的程序必須被小心對待奏纪。一位優(yōu)秀的前端工程師不僅要考慮 web 技術(shù)和語言,并且還要了解所有不同的組件斩启、系統(tǒng)和概念序调。
頂級前端工程師需要具備的經(jīng)驗和最佳實踐(這才是市場急需的前端):
- 了解 DNS 解析,充分利用 CDN兔簇,使用多個域名來完成資源的請求以縮短加載時間发绢;
- 設置 HTTP Headers(Expires, Cache-Control, If-Modified-Since);
- 遵循 Steve Souders 給出的全部規(guī)則(High Performance Websites)
- 知道如何解決 PageSpeed垄琐、YSlow边酒、Chrome Dev Tools Audit、Chrome Dev Tools Timeline 顯示的所有問題狸窘;
- 知道什么任務該放在服務端墩朦,什么任務該放在客戶端;
- 知道使用緩存翻擒,DNS 預取和資源預加載技巧氓涣;
- 精通 JavaScript,知道何時自己寫何時借組別人的框架或代碼陋气,優(yōu)劣明辨劳吠;
- 熟練使用現(xiàn)代 MVC JavaScript 框架(例如 AngularJS EmberJS React 等),圖形庫(D3巩趁、SnapSVG 等)赴背,DOM 操作類庫(jQuery、Zepto 等),惰性加載或者模塊管理類庫(例如 RequireJS凰荚、CommonJS 等)燃观,任務調(diào)用工具(例如 Grunt Gulp 等),包管理工具(Bower Componentjs)以及測試工具(Protractor便瑟、Selenium 等)缆毁;
- 掌握圖片的格式,每種格式的優(yōu)點到涂,適用的場景脊框;知道圖片優(yōu)化技巧以及加載策略(雪碧圖、懶加載践啄、緩存刷新以及 PNG 交錯)浇雹;
- 熟悉 CSS 標準、最新的轉(zhuǎn)換工具積極策略規(guī)范(比如 BEM屿讽、SMACSS昭灵、OOCSS 等);
- JavaScript 的計算機科學(內(nèi)存管理伐谈、單進程特性烂完、垃圾回收算法、定時器诵棵、作用域抠蚣、提升以及設計模式)。
換句話說履澳,如果說精通 HTML+CSS+JS嘶窄,了解后端知識,只是60分的合格前端距贷;那么要想成為受追捧护侮、拿高薪的80分優(yōu)秀前端,要對業(yè)務需求和储耐、架構(gòu)設計有真正的運用羊初;而100分的頂級前端,則必須要能夠兼顧技術(shù)和設計什湘,更接近「以前端開發(fā)為主的全棧工程師」了长赞。
市場不是缺少前端,而是缺少優(yōu)秀的前端工程師
現(xiàn)在闽撤,前端工程師終于在 web 中占有了一席之地得哆。隨著多設備、瀏覽器和Web標準的演變革命哟旗,前端正在成為兼顧邏輯贩据、性能栋操、交互、體驗的綜合性崗位饱亮。
雖然現(xiàn)在互聯(lián)網(wǎng)行業(yè)普遍缺少前端工程師矾芙,但是我們相信越來越多的人將會加入前端的大軍。不僅是因為大多數(shù)前端工作提供的優(yōu)渥薪水和辦公環(huán)境近上,也是因為web中的前端編程變得越來越有挑戰(zhàn)和意義剔宪。
最后,分享一組2015年3~4月跳槽高峰期的100offer拍賣數(shù)據(jù)壹无,給前端們鼓鼓勁:
前端工程師人均收獲8.2個面試機會葱绒,已入職的前端工程師平均薪資漲幅達39%。其中斗锭,前端offer之王共收獲47個offer地淀,最高offer薪水38k*16 ,開自某土豪電商岖是。
加油吧帮毁,前端!