
大叔也記不清曾幾何時,軟件業(yè)出現(xiàn)了前端工程師這個稱號。從此世上就有了搞前端的有了搞后端的,更有大牛者,自稱前后端都能搞,喚作全棧。
我一直對全棧這個詞不甚明了,棧原本是描述程序處理內(nèi)存的一種方式,具有后入先出的特點(diǎn),為什么要用棧來表達(dá)一個人知識多能力強(qiáng),而不是堆。全堆是不是聽著更合理一些?
大叔從業(yè)20年,從匯編語言玩起,這把年紀(jì)除了坐在電腦前一身肥肉全堆下來,還真不敢自稱全棧全堆什么的。實(shí)際就一匠人,手藝人罷了。
俗話說,自古文人多相輕,前后端工程師自然也有互看不起的時候。后端認(rèn)為他們維護(hù)著系統(tǒng)核心。前端則認(rèn)為核心是個球(這里不是罵人,大叔有時候還真認(rèn)為核心是個球,你懂的),只要前后端分離,說換也就是個松松的事兒。
實(shí)際上大家都是軟件系統(tǒng)的實(shí)現(xiàn)者--俗稱碼農(nóng),除了分工不同,在體勞神傷的層面上沒有任何本質(zhì)的差別。
這就好比蓋大樓,干主體的和干安裝的哪個重要?當(dāng)然...都重要!

話又說回來,事實(shí)上,前端這幾年也確實(shí)火了起來。根據(jù)RedMonk在2017年6月(Q3)發(fā)布了的編程語言排行榜:JavaScript 穩(wěn)居榜首。雖然JavaScript不能完全代表前端,也差不多說明點(diǎn)事情。此時,耳畔似乎又響起了那首膾炙人口的歌:

好的前端工程師很難找,究其原因大概有幾個方面的因素。
從歷史上看,早些年根本沒有人愿意做前端,甚至有人誤認(rèn)為前端就是做做網(wǎng)頁,屬于低端不入流技術(shù)。
從近幾年看,前端又是最活躍的領(lǐng)域,技術(shù)規(guī)范不斷更新,新技術(shù)層出不窮,舊的還沒舍得丟掉新的又來了。尤其對新入門的人,時常感覺無從下手,力不從心。
再一個,我們的大學(xué)在計算機(jī)課程安排上往往還延續(xù)著傳統(tǒng),畢業(yè)生擅長前端的也不多。
底子薄,門檻高,后備力量不足,導(dǎo)致很多公司HR想要在短期內(nèi)找到合適的前端力量,還有一些困難。如何把現(xiàn)有的力量培養(yǎng)上去,也是解決當(dāng)務(wù)之急的辦法之一。
其實(shí),做軟件工程師很難,做好的軟件工程師更難,而要做一個好的前端軟件工程師就難上加難。
那么,如果想要做一個好的前端工程師,需要具備什么樣的素質(zhì)和修養(yǎng)呢?大叔總結(jié)下這么五點(diǎn)以供探討。
第一,基本功扎實(shí)
齊白石46歲定居北平,以作畫為生,殊不知他從7歲就開始執(zhí)筆描摹,14歲以殘本《芥子園畫譜》為師,做過木匠又專以雕花為營,學(xué)詩文,治金石,刀管未輟。正是他前半生的經(jīng)歷積累,才造就了后來繪畫上的偉大成就。

軟件素質(zhì)和基本功的養(yǎng)成也需要長時間的磨煉,這里并無前后端之分,而是一種通用的綜合性素質(zhì)。
無論使用什么語言,針對什么平臺環(huán)境,軟件思想與經(jīng)驗(yàn)都是通的。設(shè)計模式,封裝與多態(tài),解耦與解構(gòu),數(shù)據(jù)與表象,模塊與重用,以及簡潔干凈的書寫習(xí)慣,諸此種種,都需要長時間的經(jīng)驗(yàn)?zāi)挕?/p>
這也是為什么我們經(jīng)常能見到一個基本功扎實(shí)的程序員轉(zhuǎn)行來做前端,也不會太差。而一個畢業(yè)后只接觸幾年前端的人,往往骨子里還缺了那么一股勁道,寫出的東西總是少了一些神。
俗話說臺上十分鐘,臺下十年功,基礎(chǔ)的積累是做好前端的前提。一定要多學(xué)多看多練,把基礎(chǔ)打好。
第二,見多識廣
在中國,醫(yī)生的臨床經(jīng)驗(yàn)要遠(yuǎn)遠(yuǎn)高于美國,因?yàn)橹袊t(yī)生見過的病例實(shí)在是太多了,什么疑難雜癥都能遇見。見得多自然識得廣。
《北京遇上西雅圖》里吳秀波有一句話:“我一天看的病人比你一周看的都要多”, 說的就是這種情況。
再比如,號稱宇宙最大醫(yī)院的鄭大一附院,最多時日接診達(dá)到3萬人,你說美國醫(yī)生怎么能有這個條件?

前端領(lǐng)域也類似,HTML/CSS/JavaScript標(biāo)準(zhǔn)時有更新,不同廠商在解讀和實(shí)現(xiàn)標(biāo)準(zhǔn)上存在差異。瀏覽器種類多,終端設(shè)備種類多。同樣的代碼,在不同的瀏覽器上可能行為不同。相同的瀏覽器,版本不同可能行為也不同。同樣的瀏覽器同樣的版本,在不同的操作系統(tǒng)上行為又不同。蘋果的移動端和三星的移動端又不同。
天哪!世界為何如此多樣?而又為何如此折磨前端工程師?
早些年為了兼容多瀏覽器,代碼中充滿了對瀏覽器類型和版本的判別,種種苦難歷歷在目。春花秋月何時了,往事知多少?小樓昨夜又東風(fēng),故國不堪回首月明中。
幸虧大叔受持《金剛經(jīng)》里“凡所有相,皆是虛妄”這句話才挺了過來,也許,不是世界復(fù)雜,是心復(fù)雜了。
而如今,現(xiàn)代瀏覽器更趨于標(biāo)準(zhǔn)化,差異性雖在減少,可并沒有根除,尤其在移動設(shè)備上還比較突出。
在紛繁復(fù)雜的前端環(huán)境里,要想做好前端,沒有見識是困難的。
也就是說,在世俗諦的層面上,工作還是要做,要多遇到問題。你遇到的每一個問題,都是修煉的機(jī)會,好好修行,總有一天會見相非相。
第三,學(xué)海無涯
自從1996年JavaScript誕生以來,這20多年前端技術(shù)發(fā)生了翻天覆地的變化,尤其是NodeJS出現(xiàn)后,帶動了前端生態(tài)圈的爆發(fā)式成長,大叔稱之為前端的寒武紀(jì)。我會另起一篇文章專門聊聊前端技術(shù)在這20年里的發(fā)展歷程及其前瞻預(yù)測,在這里就不贅述了。
前端要學(xué)的知識很多,到目前看,大約能總結(jié)出20個分類,100多個技術(shù)點(diǎn)。新技術(shù)出現(xiàn)快,淘汰也快,往往今年還在追逐的時髦,明年就沒落了。大有天下熙熙皆為利來,天下攘攘皆為利往的感覺。
有些新入門的人認(rèn)為前端難學(xué),常有“五色令人目盲,五音令人耳聾”的感受,不知從何下手。不要擔(dān)心,大叔也有打算另起文章,告訴你們什么是本質(zhì),哪些是實(shí)象,如何不被如夢如幻如泡如影如露亦如電的表象所迷惑。
大叔也一直對有些公司在技術(shù)選型的時候盲目追新抱有擔(dān)憂,前端深似海,不要迷失自我而走了彎路。
站在前端,等待你的不僅有壯麗的風(fēng)光,還有冰山。

杰克,起床啦,新框架又出來了!
第四,有審美情趣
天下皆知美之為美,斯惡已。皆知善之爲(wèi)善,斯不善已。美與不美是相對的,美的感受也是有差別的,很難給出一個標(biāo)準(zhǔn)。
審美會隨著時間而改變,例如唐朝女人以胖為美,現(xiàn)代則喜瘦。
審美也會依習(xí)俗而差異,例如泰國和緬甸邊境的克倫族以長頸為美,我們肯定欣賞不來。
審美也會因文化不同而不同,中國人喜歡紅色,而在西方文化里,紅色則代表血腥和暴力。
我們說的審美是依據(jù)現(xiàn)代主流意識,又不脫離客戶文化背景的通用型審美。
假如產(chǎn)品最終用戶是美國人,就要按美國人的審美取向,在功能上實(shí)用主義上下功夫。假如市場是中國,就要按中國人的喜好,不僅實(shí)用,還要在視覺體驗(yàn)上下功夫。軟件行業(yè)如此,汽車行業(yè)亦復(fù)如是,賣給中國的車與賣給歐洲的車側(cè)重就不同,中國人更喜歡漂亮內(nèi)飾,就是這個道理。
Vue.js為什么在動畫效果上下了很多功夫,因?yàn)閂ue.js是中國人開發(fā)的,明白了吧。

具備審美能力和情趣,是前端工程師有別于非前端工程師的最大的要求。
畢竟前端是最接近用戶的一層,承載著人與機(jī)器的溝通,屏幕對前端工程師來講,不僅是顯示與輸入設(shè)備,也是畫布。
大叔見過這樣的前端,做出的UI字體不統(tǒng)一,內(nèi)容不對齊,線條粗細(xì)不一致,間距不平衡,就連按鈕大小都不一樣。也不是技術(shù)不強(qiáng),就是缺少那么一點(diǎn)點(diǎn)對美的基本評判和追求。而有些人不用多說,做出來的東西就是漂亮。這些都不是技術(shù)層面的問題。
有人會說,這個不用擔(dān)心,我們公司有專門的UI/UX設(shè)計師,我只需按照要求做就可以了。有這樣想法的人一定不會成為一個好的前端。這就好比一個畫家,每畫一筆都需要別人代替調(diào)配顏料,自己只負(fù)責(zé)動筆,這樣怎能創(chuàng)作出好的作品?
美的表達(dá)和感受有時是與生俱來的,技術(shù)人員往往會參考別人的作品,吸取優(yōu)點(diǎn),見得多也想的多,在某些方面是UI設(shè)計人員的一個很好的補(bǔ)充。好的前端工程師要對UI設(shè)計的不合理地方大膽提出意見,大膽把內(nèi)心對美的追求表達(dá)出來,配合UI設(shè)計師共同完成作品。
第五,要有愛
天哪!已經(jīng)上升到了道德倫理層面來,大叔的要求是不是有點(diǎn)高了?
非也,好的前端工程師一定要有愛。
據(jù)說愛因斯坦在給他女兒的信中,曾經(jīng)提過他發(fā)現(xiàn)宇宙中有一種廣大的能量,包含并統(tǒng)領(lǐng)所有其他的一切,而我們至今未曾完全認(rèn)識它。這種宇宙的能量叫做愛。
愛是這個世界得以運(yùn)行的推動力,上帝如果沒有愛,怎么可能設(shè)計出如此完美的世界?菩提薩埵如果沒有愛,怎么可能發(fā)廣大深遠(yuǎn)誓愿普度眾生?前端工程師如果沒有愛....嗯....還是改行吧。
前面我們提到美,實(shí)際還有兩個詞與它是相通的,那就是真與善。大叔認(rèn)為,真、善、美是同一事物的不同表現(xiàn),就像一個立方體具有不同的面一樣,它們其實(shí)是一個東西的不同面。
而真、善、美的表達(dá)離不開愛。
具體在前端工程師身上,就是要盡一切可能為前端的受眾著想,讓用戶在使用上感覺到愛。記著,前端不僅負(fù)責(zé)UI,還要負(fù)責(zé)UX(User Experiece),就是用戶體驗(yàn)。
為什么這里字體要加大一些,用戶是否能從眾多信息里面很容易看到重點(diǎn),能不能減少操作步驟,鼠標(biāo)移動跨度是否太大,這個按鈕放這里是否合適,用戶是否會因?yàn)橐暰€跳轉(zhuǎn)頻繁而感到累,如何才能更加順暢操作。
用戶使用時不受罪,源于前端工程師已經(jīng)替用戶受了罪,這就是愛的本質(zhì)。

當(dāng)然,對工程師來講,把代碼寫好,結(jié)構(gòu)清晰合理,考慮周全,減少錯誤,也是一種愛的體現(xiàn)。
結(jié)論
讀完這些,你是否已經(jīng)對前端以及前端工程師產(chǎn)生了新的認(rèn)識?只要按照大叔說的這些努力,一定會成為優(yōu)秀的前端工程師。
做前端工程師確實(shí)不容易,屬于軟件工程師里最接近完美的一類人,智商情商都要具有。
如果你身邊有前端工程師,請一定要善待他。(倘若還是個單身狗,那就大膽的下手吧?。?/p>