每天,100offer的HR群都有人在吐槽招不到前端工程師。實話說對這些需求,Betty也無能為力,因為在供不應求的前端招聘市場上,優秀的前端工程師才是有話語權的那一方。不僅在國內的互聯網行業,在國外,前端工程師一樣是需求旺盛、供不應求的香餑餑。
匯仁智杰web前端培訓專家帶你看個數據,根據職友集網站的職位顯示:目前的熱門崗位——“web前端”是需求增長最快的開發崗位,在所有開發職位中排名第一,待遇一直是名列前茅,職位空缺相當大。
可見,web前端可以說是最熱門的前端崗位了,在2014年和2015年底有兩次爆發性增長,現在在美國的崗位需求甚至超過了iOS。所以市場上優秀的前端工程師相對較缺少,是一個世界性難題。
原因一:前端相對來說是每一個公司必備的崗位
可能很多人認為前端開發和Web開發類似,而Web開發已經有20多年的歷史,所以前端并不是一個新領域。然而,前端工程師的概念中的“接口技術實現和用戶體驗作為一個專業的工作領域”,卻無疑是很新的。
現在,一個創業公司想要成功,幾乎要覆蓋一個Web應用程序的諸多技術方面:前端、后臺、DBA、運營等。雖然已經有一些服務可以讓企業購買登陸頁面的前端模塊和組件;但是如果你想要創造一些真正的Web應用程序,除了求助前端工程師,別無他法,就像你要創立一個品牌你也繞不開請一位設計師一樣。
原因二:對前端,普遍存在巨大的誤解,其實前端一點也不簡單
大多人都認為前端開發是一個“相對于其他模塊來說更簡單的領域”,在他們心中的前端工程師是這樣工作的:
l 把Photoshop文件、圖片或者線框放進一個網頁;
l 偶爾設計Photoshop文件、圖片或者線框;
l 用JS編程,為網頁制作動畫、過渡效果;
l 用HTML和CSS編程,確定網頁的內容和形式。
事實上,前端工程師在做的是:
l 在設計師和工程師之間創建可視化的語言;
l 用可視化的設計,定義一組代表內容、品牌和功能的組件;
l 為Web應用程序的公約、框架、需求、可視化的語言和規格設定底線;
l 定義Web應用程序的設備、瀏覽器、屏幕、動畫的范圍;
l 開發一個質量保證指南來確保品牌忠誠度、代碼質量、產品標準;
l 為Web應用程序設定適當的行距、字體、標題、圖標、余糧、填充等等;
l 為Web應用程序設定多種分辨率的圖像,設備為主的實體模型,同時維護設計指南;
l 用account semantics、accessibility、SEO、schemas、microformats 標記Web應用程序;
l 用一種友好的,消耗小的,設備和客戶端感知的方式連接API,獲取內容;
l 開發客戶端代碼來顯示流暢的動畫、過渡、延遲加載、交互、應用工作流程,大多數時間用來考慮漸進增強和向后兼容的標準;
l 保證后臺連接安全,采取跨地資源共享(CORS)的程序考慮,防止跨站點腳本(XSS)和跨站點請求偽造(CSRF );
最重要的是,盡管有嚴格的期限、利益相關者的要求,以及設備的限制,無論現在還是將來,永遠是“客戶第一”。
原因三:大量糟糕前端工程師的存在,擾亂了市場
這或許是難以招到優秀前端工程師最明顯的原因。由于前端工程師的入門門檻非常低,JS、CSS、HTML并不是很難入門掌握的語言,似乎只要花一點時間,誰都可以通過網上教程和書本學會它,前端工程師市場就是被這些淺嘗輒止的家伙搞壞的。
糟糕的前端工程師是這樣做事的:
l 濫用JS庫,因為他們實際上并不了JS的內部(e.g. 一切都用jQuery);
l 濫用JS插件,抄別人的代碼哪怕自己根本讀不懂(e.g.jQuery.doParallaxPls.js);
l 給Web應用程序添加CSS框架,卻只用到CSS/JS的5%,沒有看到任何的需求、設計或者比較和評價;
l 認為只要添加了CSS框架,網站就可以“有求必應”;
l 一邊在說著“響應式Web設計”,卻對服務器端技術一無所知;
l 用CSS編程時不管預處理器、命名規范等,卻用不合適的selector/ids/magic numbers等;
l 忽視表現、內存泄露(并不理解內存泄露的真正含義),不會檢測代碼;
l 不會用指標衡量一個產品,或者這種指標旨在自己的電腦、瀏覽器、設備有效;
l 忽視軟件技術。
要知道,入門容易精通難,計算機和軟件的基礎對你用JS或瀏覽器編程都非常重要。Web可能是最有影響力的平臺和環境之一,在那里執行的程序必須被小心對待。一位優秀的前端工程師不僅要考慮Web技術和語言,并且還要了解所有不同的組件、系統和概念。
以下是優秀的前端工程師在即時面對普通的任務也會做的事情(這才是市場急需的前端):
l DNS解析、使用CDN和關于multiple Hostnames as part of resources request;
l HTTP Headers (Expires, Cache-Control, If-Modified-Since);
l Steve Souders的所有規則(High Performance Websites);
l 如何解決PageSpeed, YSlow, Chrome Dev Tools Audit, Chrome Dev Tools Timeline顯示的所有問題;
l 何時把任務傳到服務器和客戶端;
l 緩存,預取和負荷技術的使用;
l Native JS,知道何時從頭開始做,何時查找別人的代碼,同時可以評估這樣做的優缺點;
l CSS標準、modern conventions、 strategies (e.g. BEM, SMACSS, OOCSS)的知識和用法;
l JS的電腦知識(內存管理,單線程的性質,垃圾收集算法,超時,范圍,提升,模式)。