“優(yōu)秀”的定義
在我們開(kāi)始討論之前响迂,答應(yīng)我悟衩,先問(wèn)自己這樣一個(gè)問(wèn)題:優(yōu)秀的前端工程師應(yīng)該是什么樣子呢?
如果你的答案是精通各種前端框架栓拜,或者是掌握各種前端技能,亦或者是理解用戶的真正需求惠昔,甚至是前后端通吃的全棧工程師幕与,那么恭喜你,你的答案和我剛開(kāi)始思考這個(gè)問(wèn)題時(shí)的答案差不多镇防。
的確啦鸣,在前端領(lǐng)域定義優(yōu)秀,自然是精通一種甚至多種前端開(kāi)發(fā)工具和框架来氧,理解這些框架的底層邏輯诫给,知道用戶的需求和痛點(diǎn),有屬于自己的開(kāi)源項(xiàng)目和技術(shù)博客啦扬,并且寫(xiě)得出一手整潔且bug free的代碼中狂。這些優(yōu)秀的特質(zhì)令每一個(gè)前端從業(yè)者神往,但同時(shí)也令人遺憾扑毡。因?yàn)橐坏┰谀X海里形成這樣一種所謂“優(yōu)秀的”前端工程師的定義胃榕,我們就會(huì)發(fā)現(xiàn),自己似乎永遠(yuǎn)也成為不了我們自己定義的優(yōu)秀的前端工程師了∶樘現(xiàn)在不是勋又,以后也不知道何時(shí)會(huì)是。這足以讓我們反思换帜,我們做不到“優(yōu)秀”楔壤,究竟是我們自己不夠努力且沒(méi)有天分,還是對(duì)于“優(yōu)秀”這個(gè)詞的定義有問(wèn)題惯驼。
1. 無(wú)所不知
還記得前端疲勞里的這張圖嗎蹲嚣?
沒(méi)錯(cuò),優(yōu)秀的前端工程師掌握了這張圖上的幾乎一切跳座。他們不受前端疲勞的困擾端铛,他們可以跟上每一次技術(shù)更新迭代的腳步,將最新的工具和技術(shù)輕松收入囊中疲眷。
大多數(shù)情況下禾蚕,他們不需要查看技術(shù)文檔和手冊(cè),因?yàn)槟切〇|西好像就存在他們的腦子里狂丝。無(wú)論是寫(xiě)正則表達(dá)式换淆,還是調(diào)用API哗总,抑或處理復(fù)雜的JS代碼,他們都能信手拈來(lái)倍试。
2. 完美代碼
每次code review讯屈,我的內(nèi)心都很忐忑,因?yàn)樽约撼舐倚阅艿拖碌拇a即將曝光在同事的眼前县习。優(yōu)秀的前端工程師從來(lái)沒(méi)有這些煩惱涮母,相反,他們的代碼往往是被作為模板來(lái)接受眾人膜拜的躁愿。簡(jiǎn)潔叛本,優(yōu)雅,高效彤钟。
有句話怎么說(shuō)來(lái)著来候,漂亮的不像實(shí)力派。偏偏漂亮還不夠逸雹,連注釋都恰到好處营搅。總之就一句話梆砸,給你一個(gè)無(wú)法拒絕贊美它的理由转质。
3. 極度專(zhuān)注
在這樣一個(gè)時(shí)間被互聯(lián)網(wǎng)不斷撕裂的時(shí)代,專(zhuān)注早就成為了一種奢侈的品質(zhì)辫樱。而優(yōu)秀的前端便享有這份奢侈峭拘。他們似乎感覺(jué)不到疲憊,不是在寫(xiě)代碼狮暑,就是在去寫(xiě)代碼的路上鸡挠。當(dāng)大多數(shù)人都沉迷于吃雞農(nóng)藥等游戲中時(shí),他們卻始終讓自己淪陷在代碼的世界里搬男。請(qǐng)你給我一個(gè)他們不優(yōu)秀的理由拣展。
傳說(shuō)很難照進(jìn)現(xiàn)實(shí)
不知道你的身邊有沒(méi)有做到以上三點(diǎn)的前端工程師。這種人當(dāng)然存在缔逛,但作為普通前端的我們可能根本接觸不到他們备埃。因?yàn)槟茏龅饺c(diǎn)中的一點(diǎn)都已經(jīng)遠(yuǎn)遠(yuǎn)不止優(yōu)秀這個(gè)詞可以形容了。 做到兩點(diǎn)或者以上的人應(yīng)該已經(jīng)不會(huì)是單純的工程師了褐奴,至少已經(jīng)是leader或者是CTO了吧按脚。我們可以把這些傳說(shuō)中的特質(zhì)視為自己的奮斗目標(biāo),但我們不應(yīng)該把“優(yōu)秀”定義的如此高不可攀敦冬,不近人情辅搬,讓大多數(shù)勤奮的前端工程師們與優(yōu)秀“絕緣”。
#五步脖旱,讓優(yōu)秀觸手可及
1. 承認(rèn)自己不知道
是的堪遂,你沒(méi)看錯(cuò)介蛉,承認(rèn)自己不知道絕對(duì)是一種優(yōu)秀的表現(xiàn)。前端技術(shù)的爆炸式發(fā)展帶來(lái)了很多創(chuàng)新的理念和極致的體驗(yàn)溶褪,它早已無(wú)處不在币旧。但同時(shí),它也讓前端開(kāi)發(fā)者們處在需要時(shí)刻跟上前端發(fā)展步伐的迷茫和痛苦中猿妈。若不加判斷的追逐這種日新月異的技術(shù)進(jìn)步吹菱,就會(huì)走入什么都學(xué)了一點(diǎn),但什么都沒(méi)學(xué)會(huì)的境地彭则。
不知道所有的技術(shù)沒(méi)有關(guān)系毁葱,你也不可能都知道。大膽的承認(rèn)自己不知道贰剥,比打腫臉充胖子假裝自己知道的人要優(yōu)秀的多。
“React好復(fù)雜啊筷频,要加上ReactRouter和Flux才能寫(xiě)大型應(yīng)用”
“嗯嗯蚌成,我也這樣覺(jué)得(內(nèi)心:React是什么。凛捏。担忧。)”
“那你平常用React做什么?“
“坯癣。瓶盛。。(卒)示罗。惩猫。⊙恋悖”
2. 新技術(shù) != 合適的技術(shù)
你可能不止一次的聽(tīng)到過(guò)這樣的嘲諷:“什么轧房?你還在用Gulp?太過(guò)時(shí)啦绍绘,現(xiàn)在大家都用Webpack奶镶,比Gulp好用多了”。我不知道這種嘲諷有什么道理陪拘。新的技術(shù)就一定比原來(lái)的好厂镇?
脫離了實(shí)際的應(yīng)用場(chǎng)景去評(píng)價(jià)工具的好壞就是耍流氓。我們學(xué)習(xí)和使用新的技術(shù)左刽,一定不能只是因?yàn)樗滤犰呸嘈牛且驗(yàn)樗軌蚋玫膸椭覀兘鉀Q當(dāng)前的問(wèn)題。如果舊的技術(shù)已經(jīng)幫我們完美的解決了問(wèn)題悠反,那我們完全可以選擇忽視新的技術(shù)残黑。
下次再有人單純的因?yàn)闆](méi)用最新的工具來(lái)懟你馍佑,你就大膽的對(duì)他說(shuō):“小孩才分新舊,大人只看利弊梨水,對(duì)解決問(wèn)題有利的才是最好的拭荤。你呀,too young too simple疫诽【耸溃”
3. 有效地利用資源
能記住大量的技術(shù)細(xì)節(jié)當(dāng)然是強(qiáng)大實(shí)力的體現(xiàn),但記不住并不代表弱小和拙劣奇徒。在這樣一個(gè)信息量如此奢華的互聯(lián)網(wǎng)時(shí)代雏亚,大多數(shù)的知識(shí)都可以在5分鐘內(nèi)百度谷歌到。很多大的公司不是喜歡將一些小業(yè)務(wù)外包出去嗎摩钙,我們也可以把自己的一部分記憶“外包”給互聯(lián)網(wǎng)罢低。
這個(gè)道理就像計(jì)算機(jī)。內(nèi)存的空間是寶貴的胖笛,而硬盤(pán)則沒(méi)有太多空間上的煩惱网持。我們的大腦就像內(nèi)存,而互聯(lián)網(wǎng)就是我們的硬盤(pán)长踊。
我們只需要在大腦里存儲(chǔ)空間占用極小的索引功舀,把具體而龐大的知識(shí)細(xì)節(jié)交給互聯(lián)網(wǎng)這個(gè)巨大的硬盤(pán)存儲(chǔ)。如果我們把大量的知識(shí)和技術(shù)細(xì)節(jié)存儲(chǔ)在大腦——一個(gè)昂貴的內(nèi)存上身弊,這豈不是暴殄天物嗎辟汰。
因此,最重要的不是記住多少知識(shí)和技術(shù)阱佛,而是在需要用到它們的時(shí)候能夠快速高效的利用在大腦內(nèi)建立的索引帖汞,然后在互聯(lián)網(wǎng)這個(gè)容量幾乎無(wú)上限的硬盤(pán)上找到它們。知道知識(shí)在哪凑术,這絕對(duì)是一種優(yōu)秀涨冀。
4. 不完美,怎么了
每個(gè)程序員都想寫(xiě)出完美的代碼麦萤,可問(wèn)題在于鹿鳖,這一切都得從寫(xiě)有問(wèn)題的代碼開(kāi)始。最重要的是壮莹,我們得開(kāi)始寫(xiě)翅帜,不能因?yàn)楹ε虏煌昝谰筒粚?xiě)。這和寫(xiě)作是一回事命满。我半年多沒(méi)有在簡(jiǎn)書(shū)上寫(xiě)文章了涝滴,這并不是因?yàn)槲也幌雽?xiě),而是我太想寫(xiě)出精彩、完美的文章歼疮,反而讓自己無(wú)法下筆了杂抽。這讓我陷入深深的自我懷疑中,懷疑我平庸的才華無(wú)法匹配我對(duì)自己過(guò)高的期待韩脏。但我今天還是寫(xiě)了這篇文章缩麸,因?yàn)槲曳磸?fù)告訴自己:簡(jiǎn)單點(diǎn),寫(xiě)作的方式簡(jiǎn)單點(diǎn)(這句話自帶旋律…)赡矢。
寫(xiě)代碼也是這樣杭朱,它得先被寫(xiě)出來(lái)才能給我們讓它變得完美的機(jī)會(huì)啊。事實(shí)上吹散,完美的代碼并不是寫(xiě)出來(lái)的弧械,而是改出來(lái)的。debug的能力比coding的能力還重要空民。我很喜歡這樣一句話:“Software is soft.” 軟件是軟的刃唐,代碼也是軟的。還記得我們小時(shí)候玩過(guò)的軟軟的橡皮泥嗎界轩?沒(méi)捏好怎么辦唁桩?沒(méi)關(guān)系啊,反正它是軟的耸棒,攤平了重捏啊。寫(xiě)代碼就是這個(gè)道理报辱。
5. 能沉進(jìn)去与殃,也能跳出來(lái)
我們都認(rèn)為,優(yōu)秀的人之所以優(yōu)秀是因?yàn)樗麄兡軌蜃屪约撼两谧约核龅氖虑橹邪郑皇芡饨绲拇驍_幅疼。這當(dāng)然是對(duì)的,只有專(zhuān)注昼接、聚焦在一件事情上爽篷,我們才能把那件事情做好。優(yōu)秀的前端工程師一定是那些始終磨練著自己的技術(shù)和密切關(guān)注著前端領(lǐng)域發(fā)展的人慢睡。是他們的專(zhuān)注和不知疲倦造就了他們的優(yōu)秀逐工。可是事實(shí)是這樣嗎漂辐?并不完全是泪喊。
前端開(kāi)發(fā)的腳步已經(jīng)滲透到了人類(lèi)社會(huì)的方方面面,每個(gè)行業(yè)都需要網(wǎng)站髓涯,都需要找到和特定人群交互的方式袒啼,而前端技術(shù)正是這類(lèi)需求的最佳解決方案。作為前端開(kāi)發(fā)者的我們,如果僅僅把自己局限在前端技術(shù)這個(gè)狹窄的領(lǐng)域內(nèi)蚓再,技術(shù)的創(chuàng)新又從何而來(lái)呢滑肉?
我自己是音樂(lè)愛(ài)好者,平常會(huì)錄點(diǎn)音樂(lè)視頻自?shī)首詷?lè)摘仅。有一天我心血來(lái)潮靶庙,想知道前端領(lǐng)域和音樂(lè)有沒(méi)有碰撞出什么火花。上谷歌一搜索实檀,便發(fā)現(xiàn)了很多優(yōu)秀的JavaScript的音頻庫(kù)惶洲。
什么howler.js,loop.js膳犹,audiosynth.js, tone.js恬吕,全都是music library for JavaScript。試問(wèn)须床,如果那些作為前端開(kāi)發(fā)者的音樂(lè)愛(ài)好者們只關(guān)注前端而放棄了自己的愛(ài)好铐料,那么,還會(huì)有這些優(yōu)秀的令人腦洞大開(kāi)的前端音樂(lè)工具存在嗎豺旬?
跳出前端钠惩,在不寫(xiě)代碼的時(shí)候繼續(xù)培養(yǎng)自己的興趣和愛(ài)好,讓自己接觸到不同的領(lǐng)域和行業(yè)族阅,從而使自己擁有不同的視角篓跛。正是我們把各種各樣的興趣引入到了前端的世界里,才讓前端的創(chuàng)新層出不窮坦刀,技術(shù)蓬勃發(fā)展愧沟。
如果你在前端學(xué)習(xí)的過(guò)程中遇到難題,歡迎關(guān)注微信公眾號(hào)【筑夢(mèng)前端】鲤遥,大家一起交流解決沐寺!