我所遇到的前端程序員分兩種:
第一種一直在問:如何學(xué)習(xí)前端以清?
第二種總說:前端很簡單,就那么一點東西崎逃。
我從沒有聽到有人問:如何做一名優(yōu)秀掷倔、甚至卓越的WEB前端工程師。
何為:前端工程師个绍?
前端工程師勒葱,也叫Web前端開發(fā)工程師。他是隨著web發(fā)展巴柿,細分出來的行業(yè)凛虽。
Web前端開發(fā)技術(shù)主要包括三個要素:HTML、CSS和JavaScript广恢!
它要求前端開發(fā)工程師不僅要掌握基本的Web前端開發(fā)技術(shù)涩维,網(wǎng)站性能優(yōu)化、SEO和服務(wù)器端的基礎(chǔ)知識袁波,而且要學(xué)會運用各種工具進行輔助開發(fā)以及理論層面的知識,包括代碼的可維護性蜗侈、組件的易用性篷牌、分層語義模板和瀏覽器分級支持等。
隨著近兩三年來RIA(Rich Internet Applications的縮寫踏幻,中文含義為:豐富的因特網(wǎng)應(yīng)用程序)的流行和普及帶來的諸如:Flash/Flex枷颊,Silverlight、XML和服務(wù)器端語言(PHP该面、ASP.NET夭苗,JSP、Python)等語言隔缀,前端開發(fā)工程師也需要掌握题造。
前端開發(fā)的入門門檻其實很低,與服務(wù)器端語言先慢后快的學(xué)習(xí)曲線相比猾瘸,前端開發(fā)的學(xué)習(xí)曲線是先快后慢界赔。
HTML 甚至不是一門語言丢习,他僅僅是簡單的標記語言!
CSS 只是無類型的樣式修飾語言淮悼。當然可以勉強算作弱類型語言咐低。
Javascript 的基礎(chǔ)部分相對來說不難,入手還算快袜腥。
也正因為如此见擦,前端開發(fā)領(lǐng)域有很多自學(xué)成“才”的同行,但大多數(shù)人都停留在會用的階段羹令,因為后面的學(xué)習(xí)曲線越來越陡峭鲤屡,每前進一步都很難。
Web前端技術(shù)有一些江湖氣特恬,知識點過于瑣碎执俩,技術(shù)價值觀的博弈也難分伯仲,即全局的系統(tǒng)的知識結(jié)構(gòu)并未成體系癌刽,這些因素也客觀上影響了“正統(tǒng)“前端技術(shù)的沉淀役首!而且各種“奇技淫巧”被濫用,前端技術(shù)知識的傳承也過于泛泛显拜,新人難看清時局把握主次衡奥。因此,前端技術(shù)領(lǐng)域远荠,為自己覓得一個靠譜的師兄矮固,重要性要蓋過項目、團隊譬淳、公司档址、甚至薪水。
另一方面邻梆,正如前面所說守伸,前端開發(fā)是個非常新的職業(yè),對一些規(guī)范和最佳實踐的研究都處于探索階段浦妄。
總有新的靈感和技術(shù)不時閃現(xiàn)出來尼摹,例如CSS sprite、負邊距布局剂娄、柵格布局等蠢涝;
各種JavaScript框架層出不窮,為整個前端開發(fā)領(lǐng)域注入了巨大的活力阅懦;
瀏覽器大戰(zhàn)也越來越白熱化和二,跨瀏覽器兼容方案依然是五花八門。
為了滿足“高可維護性”的需要故黑,需要更深入儿咱、更系統(tǒng)地去掌握前端知識庭砍,這樣才可能創(chuàng)建一個好的前端架構(gòu),保證代碼的質(zhì)量混埠。
隨著手持設(shè)備的迅猛發(fā)展怠缸,帶動了HTML5行業(yè)標準的快速發(fā)展。web領(lǐng)域的技術(shù)钳宪,大概有10年都沒有大的更新了揭北!
現(xiàn)在市場很需要優(yōu)秀的、高級的前端工程師吏颖。
一方面是因為這是一個比較新的細分行業(yè)搔体,而且前端程序員大都自學(xué)一部分,知識結(jié)構(gòu)不系統(tǒng)半醉;另一方面疚俱,大學(xué)里面沒有這種課程,最最重要的是:北大青鳥這類培訓(xùn)機構(gòu)也沒有專門的前端工程師的培訓(xùn)課程K醵唷呆奕!
吳亮在《JavaScript 王者歸來》第一張的序里面說:大多數(shù)程序員認為 Javascript 過于簡陋,只適合一些網(wǎng)頁上面花哨的表現(xiàn)衬吆,所以不愿花費精力去學(xué)習(xí)梁钾,或者以為不學(xué)習(xí)就能掌握。
實際上逊抡,一門語言是否腳本語言姆泻,往往是她的設(shè)計目標決定,簡單與復(fù)雜并不是區(qū)分腳本語言和非腳本語言的標準冒嫡。
事實上拇勃,在腳本語言里面,Javascript 屬于相當復(fù)雜的一門語言孝凌,他的復(fù)雜度即使放在非腳本語言中來衡量潜秋,也是一門相當復(fù)雜的語言!
Javascript 的復(fù)雜度不遜色于 Perl 和 Python胎许!
如何學(xué)習(xí)前端知識??
我們生活在一個充滿規(guī)則的宇宙里面罗售。社會秩序按照規(guī)則運行辜窑,計算機語言幾乎全部是規(guī)則的集合。計算機前輩們定義規(guī)則寨躁,規(guī)則約束我們穆碎,我們用規(guī)則控制數(shù)據(jù)。大部分時候职恳,對數(shù)據(jù)的合理控制所禀,來自于你對規(guī)則的掌握方面。
學(xué)習(xí) HTML,CSS 應(yīng)該先跟著書仔細色徘、扎實的學(xué)一遍恭金。然后就需要做大量的練習(xí),做各種常規(guī)的褂策、奇怪的横腿、大量的布局練習(xí)來捆固、理解自己的知識斤寂。
而學(xué)習(xí) Javascript 首先要知道這門語言可以做什么耿焊,不能做什么,擅長做什么遍搞,不擅長做什么罗侯!
如果你只想當一個普通的前端程序員,你只需要記住大部分 Javascript 函數(shù)溪猿,做一些練習(xí)就可以了钩杰。
如果你想當深入了解Javascript,你需要了解 Javascript 的原理再愈,機制榜苫。需要知道他們的本源,需要深刻了解 Javascript 基于對象的本質(zhì)翎冲。
還需要深刻了解瀏覽器宿主 下 的 Javascript 的行為垂睬、特性。
因為歷史原因抗悍,Javascript一直不被重視驹饺,有點像被收養(yǎng)的一般! 所以他有很多缺點缴渊,各個宿主環(huán)境下的行為不統(tǒng)一赏壹、內(nèi)存溢出問題、執(zhí)行效率低下等問題衔沼。
作為一個優(yōu)秀的前端工程師還需要深入了解蝌借、以及學(xué)會處理 Javascript 的這些缺陷。
那么一名優(yōu)秀的指蚁、甚至卓越的 前端開發(fā)工程師的具備什么條件菩佑?
首先,優(yōu)秀的Web前端開發(fā)工程師要在知識體系上既要有廣度和深度凝化!做到這兩點稍坯,其實很難。所以很多大公司即使出高薪也很難招聘到理想的前端開發(fā)工程師搓劫。技術(shù)非黑即白瞧哟,只有對和錯混巧,而技巧則見仁見智。
在以前勤揩,會一點Photoshop和Dreamweaver的操作咧党,就可以制作網(wǎng)頁。
現(xiàn)在雄可,只掌握這些已經(jīng)遠遠不夠了凿傅。無論是開發(fā)難度上,還是開發(fā)方式上数苫,現(xiàn)在的網(wǎng)頁制作都更接近傳統(tǒng)的網(wǎng)站后臺開發(fā)聪舒,所以現(xiàn)在不再叫網(wǎng)頁制作,而是叫Web前端開發(fā)虐急。
Web前端開發(fā)在產(chǎn)品開發(fā)環(huán)節(jié)中的作用變得越來越重要箱残,而且需要專業(yè)的前端工程師才能做好。
Web前端開發(fā)是一項很特殊的工作止吁,涵蓋的知識面非常廣被辑,既有具體的技術(shù),又有抽象的理念敬惦。簡單地說盼理,它的主要職能就是把網(wǎng)站的界面更好地呈現(xiàn)給用戶。
其次俄删,優(yōu)秀的Web前端開發(fā)工程師應(yīng)該具備快速學(xué)習(xí)能力宏怔。Web發(fā)展的很快,甚至可以說這些技術(shù)幾乎每天都在變化畴椰!如果沒有快速學(xué)習(xí)能力臊诊,就跟不上Web發(fā)展的步伐。前端工程師必須不斷提升自己斜脂,不斷學(xué)習(xí)新技術(shù)抓艳、新模式;僅僅依靠今天的知識無法適應(yīng)未來帚戳。Web的明天與今天必將有天壤之別玷或,而前端工程師的工作就是要搞清楚如何通過自己的Web應(yīng)用程序來體現(xiàn)這種翻天覆地的變化。
說到這里片任,我想起了一個大師說過的一句話:對于新手來說庐椒,新技術(shù)就是新技術(shù)。
對于一個高手來說蚂踊,新技術(shù)不過是舊技術(shù)的延伸。
再者笔宿,優(yōu)秀的前端工程師需要具備良好的溝通能力犁钟,因為前端工程師至少都要滿足四類客戶的需求棱诱。
1、產(chǎn)品經(jīng)理涝动。這些是負責(zé)策劃應(yīng)用程序的一群人迈勋。他們會想出很多新鮮的、奇怪的醋粟、甚至是不可能實現(xiàn)的應(yīng)用靡菇。一般來說,產(chǎn)品經(jīng)理都追求豐富的功能米愿。
2厦凤、UI設(shè)計師。這些人負責(zé)應(yīng)用程序的視覺設(shè)計和交互模擬育苟。他們關(guān)心的是用戶對什么敏感较鼓、交互的一貫性以及整體的好用性。一般來說违柏,UI設(shè)計師侯傾向于流暢靚麗博烂、但并不容易實現(xiàn)的用戶界面,而且他們經(jīng)常不滿前端工程師造成 1px 的誤差漱竖。
3禽篱、項目經(jīng)理。這些人負責(zé)實際地運行和維護應(yīng)用程序馍惹。項目管理的主要關(guān)注點躺率,無外乎正常運行時間、應(yīng)用程序始終正乘匣可用的時間肥照、性能和截止日期。項目經(jīng)理追求的目標往往是盡量保持事情的簡單化勤众,以及不在升級更新時引入新問題舆绎。
4、最終用戶们颜。指的是應(yīng)用程序的主要消費者吕朵。盡管前端工程師不會經(jīng)常與最終用戶打交道,但他們的反饋意見至關(guān)重要窥突。最終用戶要求最多的就是對個人有用的功能努溃,以及競爭性產(chǎn)品所具備的功能。
Yahoo 公司 阻问,YUI 的開發(fā)工程師 Nicholas C. Zakas 認為:
前端工程師是計算機科學(xué)職業(yè)領(lǐng)域中最復(fù)雜的一個工種梧税。絕大多數(shù)傳統(tǒng)的編程思想已經(jīng)不適用了,為了在多種平臺中使用,多種技術(shù)都借鑒了大量軟科學(xué)的知識和理念第队。成為優(yōu)秀前端工程師所要具備的專業(yè)技術(shù)哮塞,涉及到廣闊而復(fù)雜的領(lǐng)域,這些領(lǐng)域又會因為你最終必須服務(wù)的各方的介入而變得更加復(fù)雜凳谦。專業(yè)技術(shù)可能會引領(lǐng)你進入成為前端工程師的大門忆畅,但只有運用該技術(shù)創(chuàng)造的應(yīng)用程序以及你跟他人并肩協(xié)同的能力,才會真正讓你變得優(yōu)秀尸执。