寫給想成為前端工程師的同學們 前端工程師是做什么的?

前端工程師是做什么的?

香港彩票透码 www.kptln.icu 前端工程師是互聯網時代軟件產品研發中不可缺少的一種專業研發角色。從狹義上講,前端工程師使用 HTML、CSS、JavaScript 等專業技能和工具將產品UI設計稿實現成網站產品,涵蓋用戶PC端、移動端網頁,處理視覺和交互問題。從廣義上來講,所有用戶終端產品與視覺和交互有關的部分,都是前端工程師的專業領域。

2005年的時候大多數網頁長這樣:

現在的網頁一般是這樣的:

前端工程師的發展之路和前景是怎么樣的?

前端是一個相對比較新的行業,互聯網發展早期(1995年~2005年)是沒有專業的前端工程師的。隨著互聯網的發展,大約從2005年開始,正式的前端工程師角色被行業認可,到了2010年,互聯網開始全面進入移動時代,前端工程師的地位越來越重要,前端領域的技術發展也越來越快,各種新的思想、設計模式、工具和平臺都快速發展,對前端工程師的技能要求也越來越高。

有一些數據可以說明前端行業的發展迅速。

  • 在2010年之后最流行的新編程語言中有相當部分和前端有關,比如 Dart、Clojure、CoffeeScript 和 TypeScript。

  • 作為前端最重要的編程語言 JavaScript,在最近幾年里不論是代碼量還是關注數都穩居 Github 平臺熱門編程語言榜。

  • 行業對前端需求量持續增加,前端程序員薪水在行業里面處于較領先的位置。

近年來最流行的編程語言很多都是JavaScript替代語言

JavaScript在最熱編程語言 TOP10

近幾年互聯網公司前端團隊每年擴張一倍

JavaScript工程師平均薪水排名在程序語言工程師收入前10

前端工程師需要什么樣的知識和技能?

有人說前端工程師的技術棧是這樣的:

還有人說是這樣的:

實際上前端工程師最核心的技能還是:

在一個典型的互聯網公司的產品研發流程中,前端工程師和其他角色的關系大致上是這樣的:

前端是最接近產品和設計的工程師,起到銜接產品和技術的作用,前端為用戶可以看到的部分負責,所以也是最接近用戶的工程師。

在多終端的時代,如果一個產品同時支持PC、移動端,前端工程師還需要和更多的角色打交道:

JavaScript 對于前端是最重要的技能,所以優秀的前端工程師要有扎實的JavaScript基本功。而JavaScript這門編程語言也是目前程序設計領域炙手可熱的寵兒,如今的它不僅僅只是用來開發Web,還可以用在各個方面。

前端工程師的學習和成長

前端領域發展很快,各種新技術新思想不斷涌現,這是一個好現象。但是前端發展太快也帶來一些問題,比如有同學就問到我究竟應該學些什么,Angular.js、React、Node.js、ES6、ES7、CoffeeScript、TypeScript……似乎永遠有太多東西需要學習,有些東西好像還沒學明白就被另一些新的技術取代而“過時了”。

其實還是那句話,前端工程師首先是軟件工程師,基礎是最重要的,如果基礎不扎實,一切應用技能就都是“浮云”。前端的基礎是什么?HTML、CSS、JavaScript基本功,數學、算法、數據結構、操作系統、編譯原理基本功。

一個優秀的前端工程師必須要有自己擅長的領域,并且鉆研得足夠深入,同時要有眼界,能“跨界”??梢砸鄖岸俗魑耙?,但千萬不要把自己的技能限制在前端領域,因為有很多東西,只有站在前端之外,才能看得更清晰,更透徹。

學東西千萬別盲目跟風,大家都在談AngularJS就立即跑去學習,過幾天大家都談React了,就又放下AngularJS去學習React。前端領域知識點很多,值得學的東西也很多,聰明的同學懂得花時間學習成體系的知識并且研究得足夠深入,因為只有這樣才能從中總結出規律,形成方法論,這樣才能最大化學習的價值。

知識的正確用法 —— 一個領域里面的大師永遠不會是另一個類似領域的菜鳥

這次前端星計劃布置的一個實現帶有農歷和節氣的萬年歷,有些同學卡在農歷計算上,大約70%的同學懂得去網上找代碼,但只有不到1%的同學真正弄明白農歷計算的原理。

在面試的時候,面試官問到如何做前端性能優化,有的同學能夠拿雅虎的性能優化軍規回答得頭頭是道,反復強調使用工具壓縮靜態資源,但是自己搭建的博客的nginx服務卻沒有開啟gzip。都知道說要合并靜態資源,要減少HTTP請求,然而為什么要減少HTTP請求,減少請求之后預計能改善多少性能,獲得多少收益呢?需要弄明白這些問題,也需要深入了解HTTP協議本身。

還有一個更有趣的問題,大家都說寫HTML的關鍵是語義化,那么到底什么是語義化呢?這個問題難住了不少同學。標簽要符合語義,這個答案看似簡單標準,但什么樣的標簽才是符合語義?強調用 strong 不用 b?那如果有個外星文明,它們的語言里 strong 相當于地球的 bold,bold 相當于地球的 strong,那么它們究竟該用 strong 還是用 b?我們說 i 標簽是斜體的意思,那為什么 fontawesome.io 拿它做 icon font 的標簽,這是不是“反語義”的?

過去很多地方農村有一種民間的染坊,制作染布的染料。這種染房里面有一口很大的鐵缸,通常都要有一個身體非常強壯的工人拿一根很長的鐵棒在染缸里面用力地敲擊,敲得越響,制作出來的染料顏色越鮮艷。 為什么越用力敲打鐵缸染料就越好?染坊的人說這是祖祖輩輩傳下來的經驗,而事實上也是如此,真的染料的顏色和敲打用力有很大關系。直到有一天,一位從村里走出去學化學的大學生,弄明白了原來只需要在染料中加適當比例的鐵屑,就能讓染料和含鐵元素氧化物產生化學反應而變得更鮮艷。原來祖祖輩輩傳下來的“儀式”實際上在真實原理面前只是一種信仰和宗教。同樣,如果我們不去了解技術的本質而止步于應用,那么我們就只是技術宗教的信徒。所以在周愛民老師的《JavaScript 語言精髓與編程實踐》中說,計算機語言如同祭司手中的神杖,神杖換了,祭司還是祭司,世人還是會把頭叩得山響。祭司掌握了與神交流的方法,而世人只看見了神杖。

由興趣選擇前端

在我學程序設計的最初,我學習的是C語言,然而整整一本書除了教我如何在黑洞洞的控制臺上輸出 Hello World 和各種其他字符或者用鍵盤輸入一些什么然后依然是字符輸出外,就沒有什么其他的內容了。學習了一段時間之后,我的內心一度是崩潰的,因為我覺得這和我想得不一樣,學了那么多知識,我都不知道自己究竟算不算是“學會”了C語言,因為在我看來,那些豐富多彩的操作系統和各種應用軟件和黑洞洞的控制臺之間明顯還有著非常巨大的鴻溝。

事后回想起來,當時的想法當然是幼稚可笑的,那時候的我并不知道程序語言和運行環境之間的區別,對操作系統、用戶API、硬件接口、網絡服務等等都完全不了解。然而這并不能怪我,因為C語言的教程并沒有任何一言半語來告訴我這一點,我也不知道學習了C語言的語法之后接下來還應該學習些什么。

相對來說,Web開發更吸引我,因為不需要安裝任何環境,只需要在文本編輯器里面輸入一些字符,保存后打開瀏覽器,馬上就能看到豐富的視覺效果,這就是前端的優勢,你所做的努力立即就能看得見。

相對于死板的輸入輸出,Web開發在界面可見的一層要豐富多彩得多,這一點吸引了我,如果這一點也能吸引你,讓你著迷,那么你就適合學習前端。

在選擇前端作為職業之前,要明確判斷自己對前端開發的確感興趣,選擇做前端,應該是確認自己喜歡和適合做前端,而不是為了一份看起來體面而且薪水不菲的工作。如果你對構建豐富多彩的界面、處理各種交互邏輯不感興趣,甚至厭煩,那么最明智的選擇是放棄成為前端工程師的想法 —— 因為選擇一個自己不喜歡的職業,為之忍受數十年直到退休,實在是一件很悲催的事情。

對在校學生,我們看重哪方面能力?

有同學問,360前端是否一定要求實際經驗的學生,在這里我可以回答:否。

對于學生,我們比較關心的是:

  • 基?。喊ㄊ?、算法、數據結構、計算機相關基礎的掌握。

  • 學習能力和學習方法:如何學的前端,學了多久,學到什么程度,遇到過什么問題,是如何嘗試解決這些問題。

  • 興趣:對前端的興趣如何,這一點可以體現在很多細節上。有一個反面的例子比較常見,一般來說我會問學生最近在關注什么前端新知識,有的學生會說我關注某某某,但當我再問他究竟關注到什么程度,會發現他實際上根本沒有在這項新知識上花費多少時間。如果你對感興趣的問題都不花費時間,如何證明你自己對前端的“興趣”呢。

  • 解決問題的能力:遇到難題如何解決的,遇到沒接觸過的問題是如何思考和最終解決的。從這里可以判斷出同學有沒有前端思維,這些問題沒有標準答案,我們不追求某些“官方思路”,看重過程而不是結果。

關于簡歷,有同學提到說現在似乎很多公司都希望學生會點 Node.js,會點 React,我自己不會該怎么辦。

我想說的是,我們并不要求學生必須會這些。相反,我個人更鼓勵學生利用時間打好基礎。簡歷上寫自己真正擅長的內容即可,我們不會因為在你的簡歷上看不到 Node.js 或者 React 就忽略你。只要你真心熱愛前端并用心學了,你應該明白如何用前端基礎來打動我。有的學生喜歡在簡歷上堆砌詞匯,實際上這一點不見得好,因為如果你寫了一個你自己一知半解的東西,最后在面試中被面到了,一定會得負分的。

技術本身是有深度的,A 同學說“我知道React但沒用它做過東西”, B 同學說“我用AngularJS寫過一些個人的小項目”, C 同學說“我上個月使用彈性布局的思路來寫我的博客,結果在Android系統4.1版本的Webkit瀏覽器下出現了一個顯示bug,最后我是這樣這樣解決的”。你們說 A、B、C 三個同學我們會選擇哪個同學?

面試是一個彼此交流的過程,我們希望看到大家在前端領域的能力和潛力,“知道”一件事,并不是一種有價值的能力,尤其是在知識廉價的互聯網時代。我們的同學千萬不要像背書一樣去死記硬背一樣東西,而應該真正用心去學。我們的高等學校不僅僅教授大家知識,還有如何真正學習和做研究,不是嗎?

如果你對前端真的感興趣并有潛力,花點小心思,你該知道如何學習它。

最后,祝愿大家都能成為優秀的前端工程師。

來源:h5jun

上一篇: 雙11的極限挑戰——5個極致目標教你玩轉前端棧

下一篇: 深入分析:微信小程序與H5的區別

分享到: 更多
官方通比牛牛下载 赛车pk拾开奖走势图 计划软件怎么跟才能盈利 pk10最快开奖直播 秒速时时开奖历史 极速时时有走势图吗 老时时360走势图 老时时怎么玩 pk10技巧冠亚和稳赚 福内蒙古时时开奖结果查询 北京pk人工计划全天免费版 11选5前3技巧稳赚不赔攻略 竞猜足球稳赚技巧 十一选五买一个好稳赚技巧 倍投大小单双稳赚 快3稳赚二不同号倍投