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