-
1 # 好學生科技工作室
-
2 # 千鋒武漢
現在,幾乎整個網際網路行業都缺前端工程師,不僅在剛起步的創業公司,在上市公司乃至巨頭,這個問題也一樣存在。沒錯,優秀的前端工程師簡直比大熊貓還稀少。
在國外,前端工程師一樣是需求旺盛、供不應求的香餑餑。舉個例子,根據indeed.com抓取的數千家網站的職位顯示:目前前端的熱門崗位——HTML5是需求增長最快的開發崗位,在所有開發職位中排名第一,MongoDB和iOS緊隨其後位列第二、第三。
道理很多人都懂,可是為什麼還是有很多人沒有找到滿意的工作呢?下面就聊聊這個問題。
其實前端一點也不簡單
很多人認為前端開發是一個相對於其他模組來說更簡單的領域。在我心中的前端工程師是這樣的:
1、把Photoshop檔案、圖片或者線框放進一個網頁;
2、偶爾設計Photoshop檔案、圖片或者線框;
3、用JS程式設計,為網頁製作動畫、過渡效果;
4、用HTML和CSS程式設計,確定網頁的內容和形式。
事實上,前端工程師是這樣的:
1、在設計師和工程師之間建立視覺化的語言;
2、用視覺化的設計,定義一組代表內容、品牌和功能的元件;
3、為Web應用程式的公約、框架、需求、視覺化的語言和規格設定底線;
4、定義Web應用程式的裝置、瀏覽器、螢幕、動畫的範圍;
5、開發一個質量保證指南來確保品牌忠誠度、程式碼質量、產品標準;
6、為Web應用程式設定適當的行距、字型、標題、圖示、餘糧、填充等等;
7、為Web應用程式設定多種解析度的影象,裝置為主的實體模型,同時維護設計指南;
8、用account semantics, accessibility, SEO, schemas ,microformats 標記Web應用程式;
9、用一種友好的,消耗小的,裝置和客戶端感知的方式連線API,獲取內容;
10、開發客戶端程式碼來顯示流暢的動畫、過渡、延遲載入、互動、應用工作流程,大多數時間用來考慮漸進增強和向後相容的標準;
11、保證後臺連線安全,採取跨地資源共享( CORS )的程式考慮,防止跨站點指令碼( XSS)和跨站點請求偽造( CSRF ) ;
12、最重要的是,儘管有嚴格的期限、利益相關者的要求,以及裝置的限制,無論現在還是將來永遠是「客戶第一」。
為了實現上述目標,前端工程師採用了從視覺化到程式設計的多種工具 ,甚至有時要照顧市場、 UX 到內容tweakes等等。
你和優秀前端的差距這麼大?
由於前端工程師的入門門檻非常低,JS、CSS、HTML並不是很難入門掌握的語言,很多小白就認為只要花一點時間,透過網上的教程和書本就能學會前端,然而事情並沒有這麼簡單。
很多人是這樣做的:
1、濫用JS庫,因為實際上並不了JS的內部(e.g. 一切都用jQuery);
2、濫用JS外掛,抄別人的程式碼哪怕自己根本讀不懂(e.g.jQuery.doParallaxPls.js);
3、給Web應用程式新增CSS框架,卻只用到CSS/JS的5%,沒有看到任何的需求、設計或者比較和評價;
4、認為只要添加了CSS框架,網站就可以有求必應;
5、一邊在說著響應式web設計,卻對伺服器端技術一無所知;
6、用CSS程式設計時不管預處理器、命名規範等,卻用不合適的selector/ids/magic numbers等;
7、忽視表現、記憶體洩露(並不理解記憶體洩露的真正含義),不會檢測程式碼;
8、不會用指標衡量一個產品,或者這種指標旨在自己的電腦、瀏覽器、裝置有效;
9、忽視軟體技術。
入門容易精通難,計算機和軟體的基礎對JS的使用或瀏覽器程式設計都非常重要。web可能是最有影響力的平臺和環境之一,在那裡執行的程式必須被小心對待。一位優秀的前端工程師不僅要考慮web技術和語言,並且還要了解所有不同的元件、系統和概念。
優秀的前端工程師是這樣做的(這才是市場急需的前端):
1、DNS解析、使用CDN和關於multiple Hostnames as part of resources request.
2、HTTP Headers (Expires, Cache-Control, If-Modified-Since)
3、Steve Souders的所有規則(High Performance Websites)
4、如何解決PageSpeed, YSlow, Chrome Dev Tools Audit, Chrome Dev Tools Timeline顯示的所有問題;
5、何時把任務傳到伺服器和客戶端;
6、快取,預取和負荷技術的使用;
7、Native JS,知道何時從頭開始做,何時查詢別人的程式碼,同時可以評估這樣做的優缺點;
8、modern MVC Javascript libraries (e.g. AngularJS, EmberJS, ReactJS), graphic libraries (e.g. D3, SnapSVG), DOM manipulation libraries (e.g. jQuery, Zepto), lazy loading or package management libraries (e.g. RequireJS, CommonJS), task managers (e.g. Grunt, Gulp), package managers (e.g. Bower, Componentjs) and testing (e.g. Protractor, Selenium)的相關知識和用法;
9、CSS標準、modern conventions、 strategies (e.g. BEM, SMACSS, OOCSS)的知識和用法;
10、JS的電腦知識(記憶體管理,單執行緒的性質,垃圾收集演算法,超時,範圍,提升,模式)
換句話說,如果說精通HTML+CSS+JS,瞭解後端知識,只是60分的合格前端;那麼要想成為受追捧、拿高薪的80分優秀前端,要對業務需求和、架構設計有真正的運用;而100分的頂級前端,則必須要能夠兼顧技術和設計,更接近以前端開發為主的全棧工程師了。
缺前端是假的,缺優秀前端是真的
現在,前端工程師終於前所未有的在web中佔有了一席之地。隨著多裝置、瀏覽器和Web標準的演變革命,前端正在成為兼顧邏輯、效能、互動、體驗的綜合性崗位,前端程式設計也變得越來越有挑戰和意義。
回覆列表
學習是一個不斷學習的過程,在學習中成長,在工作中學習,俗話說,活到老學到老,
任何人的知識剛開始,都是有限的。但是在經過學習,補充完善之後。再經過實踐。那麼慢慢的,人和人的差距就會越來越大。一個經常學習,和一個經常混日子的人。差距將會越來越大,越來越大,就是這樣的道理。