寫(xiě)給那些轉(zhuǎn)行做前端的人們。
前端是一個(gè)相對(duì)比較新的行業(yè)卿操。但在這幾年期間走敌,隨著W3C標(biāo)準(zhǔn)的不斷更新以及node.js的興起惯豆,基于node.js一系列的工具和諸多前端框架都參差不齊的浮出水面。大多數(shù)不了解前端的人轉(zhuǎn)行前端跪解,第一點(diǎn)原因是前端極其低的門(mén)檻炉旷,在培訓(xùn)機(jī)構(gòu)培訓(xùn)3個(gè)月即可速成。第二點(diǎn)是他們對(duì)前端的理解叉讥,普遍停留在毫無(wú)計(jì)算含量的網(wǎng)頁(yè)布局以及和美工一樣的樣式設(shè)計(jì)窘行。計(jì)算機(jī)專(zhuān)業(yè)的人選擇前端畦娄,是因?yàn)樗麄冋J(rèn)為前端不需要過(guò)多的邏輯思維計(jì)算电禀,他們討厭編程。非計(jì)算機(jī)專(zhuān)業(yè)的人選擇前端却特,他們看到了前端的前景救崔,以及不需要計(jì)算機(jī)的知識(shí)就可以快速上手惶看。
我想對(duì)第一類(lèi)人說(shuō),你們走入了一個(gè)巨坑帚豪。前端最最基本的三個(gè)核心技能:HTML碳竟、JS、CSS,其中最能代表前端的就是Javascript了狸臣。
如圖莹桅,是2018年github上最受歡迎的語(yǔ)言排行榜:
其中基于JavaScript語(yǔ)言的倉(cāng)庫(kù)就有3個(gè),可見(jiàn)如今的github社區(qū)已經(jīng)變成了前端的社區(qū)烛亦。
??JavaScript身為一種動(dòng)態(tài)的弱語(yǔ)言诈泼,在實(shí)際項(xiàng)目中設(shè)計(jì)最合適的模型高效率解決現(xiàn)實(shí)問(wèn)題本身就很有挑戰(zhàn)。作為一種典型的新生代編程語(yǔ)言JavaScript 特性豐富煤禽,使用靈活铐达,性能優(yōu)良。面向?qū)ο竺使⒑瘮?shù)式編程瓮孙、各種設(shè)計(jì)模式唐断、MVC 和 MVVM,這些本身就有足夠的吸引力杭抠。隨著更多的程序員轉(zhuǎn)入JavaScript脸甘,它的標(biāo)準(zhǔn)也在不斷規(guī)范,一些其他語(yǔ)言的特性也不斷的融入其語(yǔ)法當(dāng)中偏灿〉ぞ鳎或許不久的將來(lái),JavaScript會(huì)和TypeScript一樣擁有靜態(tài)類(lèi)型檢查的功能翁垂。如此重要的核心語(yǔ)言又怎么能離的開(kāi)編程呢铆遭。前端是一個(gè)發(fā)展速度迅速的行業(yè),從以前的傳統(tǒng)網(wǎng)站到如今HTML5的發(fā)展沿猜,以及Node.js的出現(xiàn)枚荣,相關(guān)Node.js 工具也紛紛出來(lái)。CommonJS邢疙、AMD棍弄、CMD、UMD 等模塊式的開(kāi)發(fā)思想也誕生出了像SeaJS疟游、RequireJS 等模塊化工具。MV* 庫(kù)鋪卷而來(lái)痕支,vue/angular/react颁虐,前端框架相互競(jìng)爭(zhēng),2014年的angular到15年的react卧须。作為一個(gè)前端工程師另绩,我們每時(shí)每刻都應(yīng)該跟上技術(shù)的潮流,不斷學(xué)習(xí)花嘶,所以我會(huì)勸那些因?yàn)閰拹壕幊潭D(zhuǎn)入前端的程序員們笋籽,你們走錯(cuò)了方向。
??我想對(duì)非計(jì)算機(jī)專(zhuān)業(yè)想轉(zhuǎn)行前端的人說(shuō)椭员,請(qǐng)你們慎重考慮车海。前端工程師首先是軟件工程師,基礎(chǔ)是最重要的隘击,如果基礎(chǔ)不扎實(shí)侍芝,一切應(yīng)用技能就都是“浮云”。前端的基礎(chǔ)是什么埋同?HTML州叠、CSS、JavaScript基本功凶赁,數(shù)學(xué)咧栗、算法逆甜、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)致板、編譯原理基本功忆绰。不要覺(jué)得自己做了幾個(gè)唯美的動(dòng)畫(huà)網(wǎng)頁(yè)就覺(jué)得接近前端了。前端的大牛可岂,通常是一個(gè)各種領(lǐng)域都精通的全棧错敢,那些為前端開(kāi)源代碼做貢獻(xiàn)的人,哪個(gè)在做項(xiàng)目的時(shí)候不是編寫(xiě)大量單元測(cè)試缕粹,文檔的說(shuō)明注釋?zhuān)f(shuō)到頭來(lái)就回到了javascript稚茅,編程基礎(chǔ)。就是這樣平斩,周?chē)€是會(huì)有人誤認(rèn)為前端就是一個(gè)沒(méi)有技術(shù)含量的靜態(tài)網(wǎng)頁(yè)編寫(xiě)的職位亚享。這里只送一句話:You will be abandoned in this era。
?最近2個(gè)季度我們Team一直在招前端绘面,在這長(zhǎng)達(dá)兩個(gè)多月面試中欺税,我始終都沒(méi)有聘到合適的前端,他們的簡(jiǎn)歷通常都是如下這樣的:
? ? ? 1揭璃、與UI設(shè)計(jì)師合作晚凿,快速開(kāi)發(fā)符合W3C標(biāo)準(zhǔn)的網(wǎng)站前端頁(yè)面;
? ? ? 2瘦馍、配合產(chǎn)品人員完成網(wǎng)頁(yè)頁(yè)面的交互/效果/用戶體驗(yàn)的實(shí)現(xiàn)歼秽;
? ? ? 3、配合后臺(tái)工程師一起實(shí)現(xiàn)功能和性能需求情组,進(jìn)行應(yīng)用及系統(tǒng)整合燥筷;
? ? ? 4、優(yōu)化頁(yè)面及樣式層結(jié)構(gòu)院崇,提高頁(yè)面響應(yīng)速度和用戶體驗(yàn)肆氓;
? ? ? 5、保證主流瀏覽器的兼容性底瓣。
? ? ? ?6谢揪、靜態(tài)html頁(yè)面的制作、js交互的實(shí)現(xiàn)
? ? ? ?7濒持、用jquery键耕,bootstrap制作網(wǎng)頁(yè)
對(duì)于這樣的簡(jiǎn)歷,我很難做一個(gè)準(zhǔn)確的評(píng)估柑营,首先這種簡(jiǎn)歷無(wú)法評(píng)判出前端的水平屈雄,太過(guò)普通。其次官套,我不能說(shuō)jquery酒奶,bootstrap過(guò)時(shí)了蚁孔,而是在當(dāng)今的前端開(kāi)發(fā)中,毫無(wú)模式的直接操作DOM并不是一個(gè)明智之舉惋嚎。在面試當(dāng)中杠氢,我更看中的是應(yīng)聘者對(duì)前端流露出的喜愛(ài)之情,對(duì)知識(shí)的求知欲另伍,對(duì)基礎(chǔ)知識(shí)的扎實(shí)(例如:js里事件的冒泡與捕獲鼻百,閉包,原型鏈機(jī)制摆尝,布局當(dāng)中的BFC温艇,垂直居中等一系列實(shí)踐的問(wèn)題)。對(duì)于那些簡(jiǎn)歷里寫(xiě)到掌握最新前端技術(shù)的應(yīng)聘者(例如:babel堕汞,webpack勺爱,es6,react等)讯检,我會(huì)問(wèn)一些react的優(yōu)化琐鲁,模塊加載的方式,nodejs原理性基礎(chǔ)等一些問(wèn)題人灼。在面試中我發(fā)現(xiàn)围段,有一大部分人,只盲目的學(xué)習(xí)了這部分工具挡毅、框架的用法蒜撮,卻在基礎(chǔ)知識(shí)方面存在非常多的漏洞。
最后我想分析一下轉(zhuǎn)行到前端的人跪呈,你應(yīng)該具備的哪些素質(zhì):
1.如果web的任何一個(gè)元素(web界面,靈活的編程風(fēng)格等)有一點(diǎn)吸引了你取逾,讓你著實(shí)著迷耗绿,恭喜你,有了一個(gè)完美的開(kāi)始砾隅。確認(rèn)一下自己是否喜歡和合適前端误阻,而不是為了一份看起來(lái)體面而且薪水不菲的工作。
2.不斷學(xué)習(xí)晴埂,每日的積累究反,關(guān)注前端動(dòng)態(tài),是你跟上前端潮流的主要途徑儒洛。前端的體系過(guò)于龐大精耐,技術(shù)框架爭(zhēng)涌而出,如果你經(jīng)常抱怨累死碼農(nóng)的節(jié)奏琅锻,那就審視一下自己對(duì)前端的態(tài)度卦停。
3.主抓基礎(chǔ)向胡,避免盲目。前端領(lǐng)域知識(shí)點(diǎn)很多惊完,值得學(xué)的東西也很多僵芹,聰明的人懂得花時(shí)間學(xué)習(xí)成體系的知識(shí)并且研究得足夠深入,而不是盲目的看到別人用什么框架就去學(xué)什么小槐。只停留在實(shí)踐運(yùn)用的階段拇派,到頭來(lái)框架們都一個(gè)一個(gè)被淘汰,你仍在原地踏步凿跳。
4.整理總結(jié)件豌,先模仿后創(chuàng)造。將每日的積累做好規(guī)整拄显,記錄到博客也好苟径,筆記也好。多看看牛人的源代碼躬审,等你達(dá)到了一定的層次水準(zhǔn)棘街,自然會(huì)得心應(yīng)手。
5.持有一顆造福前端社區(qū)的心承边。寫(xiě)一些有意思的小工具遭殉、插件,推廣出去博助,
6.始終堅(jiān)信险污,在從事前端的道路上You are not alone