程序員的自我修養(yǎng) - 為什么整個(gè)互聯(lián)網(wǎng)行業(yè)都缺前端工程師?
現(xiàn)在,幾乎整個(gè)互聯(lián)網(wǎng)行業(yè)都缺前端工程師,不僅在剛起步的創(chuàng)業(yè)公司,上市公司乃至巨頭,這個(gè)問(wèn)題也一樣存在。沒(méi)錯(cuò),優(yōu)秀的前端工程師簡(jiǎn)直比大熊貓還稀少。
每天,我司的 HR 群都有人在吐槽招不到前端工程師。實(shí)話說(shuō)對(duì)這些需求,我們也無(wú)能為力,因?yàn)樵诠┎粦?yīng)求的前端招聘市場(chǎng)上,優(yōu)秀的前端工程師才是有話語(yǔ)權(quán)的那一方。
放眼全球,不僅在國(guó)內(nèi)的互聯(lián)網(wǎng)行業(yè),在國(guó)外,前端工程師一樣是需求旺盛、供不應(yīng)求的香餑餑。
舉個(gè)例子,根據(jù) indeed.com 抓取的數(shù)千家網(wǎng)站的職位顯示:目前前端的熱門(mén)崗位——「HTML5」是需求增長(zhǎng)最快的開(kāi)發(fā)崗位,在所有開(kāi)發(fā)職位中排名第一,MongoDB 和 iOS 緊隨其后位列第二、第三。
目前,HTML5 可以說(shuō)是最熱門(mén)的前端崗位了,在 2010 年和 2014 年底有兩次爆發(fā)性增長(zhǎng),現(xiàn)在在美國(guó)的崗位需求甚至超過(guò)了 iOS。
但是,市場(chǎng)上優(yōu)秀的前端工程師卻相對(duì)較少,全世界范圍看都是個(gè)難題。
原因一:前端相對(duì)來(lái)說(shuō)是一個(gè)新領(lǐng)域,當(dāng)今的 Web 需要更多的工程師
可能很多人認(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ú)疑是很新的。大概幾年前,前端開(kāi)發(fā)的技術(shù)增長(zhǎng)迅猛,如下圖所示:
過(guò)去幾年前端工程師的可視化增長(zhǎng)趨勢(shì) by Google Trends
15 年或更久以前,Web 的可視化設(shè)計(jì)和技術(shù)實(shí)現(xiàn)所需要的資源是平均分配的。隨著網(wǎng)站的發(fā)展—網(wǎng)站不僅是一個(gè)登錄頁(yè)面,工程資源的需求越來(lái)越明顯。人們開(kāi)始專門(mén)學(xué)習(xí)網(wǎng)站專用的 JavaScript、后端技術(shù)、UX、數(shù)據(jù)庫(kù),甚至系統(tǒng)設(shè)計(jì)。
今天,一個(gè)像 Airbnb、Facebook、Quora 的 Web 應(yīng)用程序,投入的工程資源比設(shè)計(jì)資源多得多。換句話說(shuō),如今,做出網(wǎng)頁(yè)的視覺(jué)設(shè)計(jì)比技術(shù)實(shí)現(xiàn)要更快,所以當(dāng)今的市場(chǎng)需要更多的工程師。
現(xiàn)在,一位合格的前端工程師,必須對(duì)視覺(jué)設(shè)計(jì)有興趣。
很顯然,要處理大量的 Web 應(yīng)用程序需求,技術(shù)任務(wù)就要進(jìn)行分類,以便于多人同時(shí)處理網(wǎng)站請(qǐng)求。事實(shí)上現(xiàn)在已經(jīng)不可能一個(gè)人快速地解決所有的技術(shù)細(xì)節(jié)了。
現(xiàn)在還有一類人是獨(dú)自處理一個(gè) Web 應(yīng)用程序的所有問(wèn)題,即「全棧工程師」,但是優(yōu)秀的全棧工程師同樣如大熊貓一般數(shù)量稀少。
現(xiàn)在,一個(gè)創(chuàng)業(yè)公司想要成功,幾乎要覆蓋一個(gè) Web 應(yīng)用程序的諸多技術(shù)方面:前端、后臺(tái)、DBA、運(yùn)營(yíng)等。雖然已經(jīng)有一些服務(wù)可以讓企業(yè)購(gòu)買(mǎi)登陸頁(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)域」,在他們心中的前端工程師是這樣工作的:
把 Photoshop 文件、圖片或者線框放進(jìn)一個(gè)網(wǎng)頁(yè);偶爾設(shè)計(jì) Photoshop 文件、圖片或者線框;
用 Javascript 編程,為網(wǎng)頁(yè)制作動(dòng)畫(huà)、過(guò)渡效果;
用 HTML 和 CSS 編程,確定網(wǎng)頁(yè)的內(nèi)容和布局。
事實(shí)上,前端工程師在做的是:
在設(shè)計(jì)師和工程師之間實(shí)現(xiàn)可視化的語(yǔ)言;用可視化的設(shè)計(jì),定義一組代表內(nèi)容、品牌和功能的組件;
為 Web 應(yīng)用程序的會(huì)話、框架、需求、可視化的語(yǔ)言和規(guī)格設(shè)定底線;
定義 Web 應(yīng)用程序的設(shè)備、瀏覽器、屏幕、動(dòng)畫(huà)的范圍;
開(kāi)發(fā)一個(gè)質(zhì)量保證指南來(lái)確保品牌忠誠(chéng)度、代碼質(zhì)量、產(chǎn)品標(biāo)準(zhǔn);
為 Web 應(yīng)用程序設(shè)定適當(dāng)?shù)男芯唷⒆煮w、標(biāo)題、圖標(biāo)、填充等等;
為 Web 應(yīng)用程序設(shè)定多種分辨率的圖像,設(shè)備為主的實(shí)體模型,同時(shí)維護(hù)設(shè)計(jì)指南;
標(biāo)記 Web 應(yīng)用程序,使之語(yǔ)義化,SEO 友好;
用一種友好的,耗電少的,設(shè)備和客戶端感知的方式連接 API,獲取信息;
開(kāi)發(fā)客戶端代碼來(lái)顯示流暢的動(dòng)畫(huà)、過(guò)渡、延遲加載、交互、應(yīng)用工作流程,大多數(shù)時(shí)間用來(lái)考慮漸進(jìn)增強(qiáng)和向后兼容的標(biāo)準(zhǔn);
保證后臺(tái)連接安全,采取跨域資源共享 (CORS) 的程序考慮,防止跨站點(diǎn)腳本 (XSS) 和跨站請(qǐng)求偽造 (CSRF) ;
最重要的是,盡管有嚴(yán)格的期限、利益相關(guān)者的要求,以及設(shè)備的限制,無(wú)論現(xiàn)在還是將來(lái)永遠(yuǎn)是「客戶第一」。
為了實(shí)現(xiàn)上述目標(biāo),前端工程師采用了從可視化到編程的多種工具 ,甚至有時(shí)要照顧市場(chǎng)、 UX 到內(nèi)容改進(jìn)等等。
原因三:大量糟糕前端工程師的存在,擾亂了市場(chǎng)
這或許是難以招到優(yōu)秀前端工程師最明顯的原因。由于前端工程師的入門(mén)門(mén)檻非常低, JavaScript、CSS、HTML 并不是很難入門(mén)掌握的語(yǔ)言,似乎只要花一點(diǎn)時(shí)間,誰(shuí)都可以通過(guò)網(wǎng)上教程和書(shū)本學(xué)會(huì)它。對(duì)的,前端工程師市場(chǎng)就是被這些淺嘗輒止的家伙搞壞的。
糟糕的前端工程師是這樣做事的:
濫用 JavaScript 庫(kù),因?yàn)樗麄儗?shí)際上并不了 JavaScript 的核心(e.g. 一切都用 jQuery);濫用 JavaScript 插件,無(wú)節(jié)制的復(fù)用別人的代碼,哪怕自己根本讀不懂;
不看需求、設(shè)計(jì),也不做比較或評(píng)價(jià),就給 Web 應(yīng)用程序添加 CSS 框架,卻只用到框架的一小部分;
認(rèn)為只要用了 CSS 框架,網(wǎng)站就是響應(yīng)式的,或是對(duì)響應(yīng)式設(shè)計(jì)的意義理解不到位;
一邊在說(shuō)著「響應(yīng)式 Web 設(shè)計(jì)」,卻對(duì)服務(wù)器端解決方案技術(shù)一無(wú)所知;
用 CSS 編程時(shí)不做預(yù)處理器、命名規(guī)范等;
忽視性能、內(nèi)存泄露(并不理解內(nèi)存泄露的真正含義),不會(huì)檢測(cè)代碼;
不會(huì)用指標(biāo)衡量一個(gè)產(chǎn)品,或者這種指標(biāo)旨在自己的電腦、瀏覽器、設(shè)備有效;
忽視 30 年來(lái)的軟件工程技術(shù),閉門(mén)造車。
要知道,入門(mén)容易精通難,計(jì)算機(jī)和軟件的基礎(chǔ)對(duì)你用 JavaScript 或?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)急需的前端):
DNS 解析,使用 CDN,把資源請(qǐng)求分散到多個(gè)域名上去;理解 HTTP Headers (Expires、Cache-Control、If-Modified-Since)
Steve Souders 的所有高性能網(wǎng)頁(yè)優(yōu)化規(guī)則(參考:High Performance Websites 一書(shū))
如何解決 PageSpeed、YSlow、Chrome Dev Tools Audit、Chrome Dev Tools Timeline 等工具列出的所有問(wèn)題;
何時(shí)把任務(wù)傳到服務(wù)器,何時(shí)適合傳到客戶端;
緩存,預(yù)取和延遲加載技術(shù)的使用;
原生 JavaScript,知道何時(shí)從頭開(kāi)始做,何時(shí)參考別人的代碼,同時(shí)可以評(píng)估這樣做的優(yōu)缺點(diǎn);
最新的 MVC Javascript 庫(kù)知識(shí)以及用法;
CSS 標(biāo)準(zhǔn)的知識(shí)與用法;
JavaScript的計(jì)算機(jī)科學(xué)部分的知識(shí)(內(nèi)存管理,垃圾收集算法等等等等)
換句話說(shuō),如果說(shuō)掌握(或者某些簡(jiǎn)歷里自稱的精通) HTML+CSS+JavaScript,了解后端知識(shí),只是 60 分的合格前端;那么要想成為受追捧、拿高薪的 80 分優(yōu)秀前端,要對(duì)業(yè)務(wù)需求和、架構(gòu)設(shè)計(jì)有真正的運(yùn)用;而 100 分的頂級(jí)前端,則必須要能夠兼顧技術(shù)和設(shè)計(jì),更接近「以前端開(kāi)發(fā)為主的全棧工程師」了。
100offer 說(shuō):市場(chǎng)不是缺少前端,而是缺少優(yōu)秀的前端工程師
現(xiàn)在,前端工程師終于前所未有的在 Web 中占有了一席之地。隨著多設(shè)備、瀏覽器和 Web 標(biāo)準(zhǔn)的演變革命,前端正在成為兼顧邏輯、性能、交互、體驗(yàn)的綜合性崗位。
雖然現(xiàn)在互聯(lián)網(wǎng)行業(yè)普遍缺少前端工程師,但是我們相信越來(lái)越多的人將會(huì)加入前端的大軍。不僅是因?yàn)榇蠖鄶?shù)前端工作提供的優(yōu)渥薪水和辦公環(huán)境,也是因?yàn)?Web 中的前端編程變得越來(lái)越有挑戰(zhàn)和意義。
最后,分享一組 3/4 月的 100offer 拍賣(mài)數(shù)據(jù):
前端工程師人均收獲 8.2 個(gè)面試機(jī)會(huì),已入職的前端工程師平均薪資漲幅達(dá)39%。其中,前端 Offer 之王共收獲 47 個(gè) offer,最高 offer 薪水 38k*16 ,某電商公司開(kāi)出的。
加油吧,前端。
(分享自知乎網(wǎng))
http://zhuanlan.zhihu.com/netjob/20037401