從前,有一個前端程式設計師,他無意間得到了一盞神燈。神燈許諾會實現他一個願望。於是他向神燈許願,希望有生之年能夠學會所有的前端技能。神燈思考了片刻,賜給了他永生。。。
#“優秀”的定義在我們開始討論之前,答應我,先問自己這樣一個問題:優秀的前端工程師應該是什麼樣子呢? 如果你的答案是精通各種前端框架,或者是掌握各種前端技能,亦或者是理解使用者的真正需求,甚至是前後端通吃的全棧工程師,那麼恭喜你,你的答案和我剛開始思考這個問題時的答案差不多。 的確,在前端領域定義優秀,自然是精通一種甚至多種前端開發工具和框架,理解這些框架的底層邏輯,知道使用者的需求和痛點,有屬於自己的開源專案和技術部落格,並且寫得出一手整潔且bug free的程式碼。這些優秀的特質令每一個前端從業者神往,但同時也令人遺憾。因為一旦在腦海裡形成這樣一種所謂“優秀的”前端工程師的定義,我們就會發現,自己似乎永遠也成為不了我們自己定義的優秀的前端工程師了。現在不是,以後也不知道何時會是。這足以讓我們反思,我們做不到“優秀”,究竟是我們自己不夠努力且沒有天分,還是對於“優秀”這個詞的定義有問題。 彆著急,讓我們先來看一看有關“優秀前端工程師”的傳說。 優秀前端工程師的三個傳說
- 無所不知 還記得之前那篇前端疲勞裡的這張圖嗎?
沒錯,優秀的前端工程師掌握了這張圖上的幾乎一切。他們不受前端疲勞的困擾,他們可以跟上每一次技術更新迭代的腳步,將最新的工具和技術輕鬆收入囊中。大多數情況下,他們不需要檢視技術文件和手冊,因為那些東西好像就存在他們的腦子裡。無論是寫正規表示式,還是呼叫API,抑或處理複雜的JS程式碼,他們都能信手拈來。 2. 完美程式碼 每次code review,我的內心都很忐忑,因為自己丑陋且效能低下的程式碼即將曝光在同事的眼前。優秀的前端工程師從來沒有這些煩惱,相反,他們的程式碼往往是被作為模板來接受眾人膜拜的。簡潔,優雅,高效。有句話怎麼說來著,漂亮的不像實力派。偏偏漂亮還不夠,連註釋都恰到好處。總之就一句話,給你一個無法拒絕讚美它的理由。
3. 極度專注 在這樣一個時間被網際網路不斷撕裂的時代,專注早就成為了一種奢侈的品質。而優秀的前端便享有這份奢侈。他們似乎感覺不到疲憊,不是在寫程式碼,就是在去寫程式碼的路上。當大多數人都沉迷於吃雞農藥等遊戲中時,他們卻始終讓自己淪陷在程式碼的世界裡。請你給我一個他們不優秀的理由。#傳說很難照進現實
不知道你的身邊有沒有做到以上三點的前端工程師。這種人當然存在,但作為普通前端的我們可能根本接觸不到他們。因為能做到三點中的一點都已經遠遠不止優秀這個詞可以形容了。 做到兩點或者以上的人應該已經不會是單純的工程師了,至少已經是leader或者是CTO了吧。我們可以把這些傳說中的特質視為自己的奮鬥目標,但我們不應該把“優秀”定義的如此高不可攀,不近人情,讓大多數勤奮的前端工程師們與優秀“絕緣”。
其實做為一個前端開發者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個我的前端交流群:330336289,邀請編號:寂靜。不管你是小白還是大牛歡迎入駐,大家一起交流學習
#五步,讓優秀觸手可及
- 承認自己不知道 是的,你沒看錯,承認自己不知道絕對是一種優秀的表現。前端技術的爆炸式發展帶來了很多創新的理念和極致的體驗,它早已無處不在。但同時,它也讓前端開發者們處在需要時刻跟上前端發展步伐的迷茫和痛苦中。若不加判斷的追逐這種日新月異的技術進步,就會走入什麼都學了一點,但什麼都沒學會的境地。 不知道所有的技術沒有關係,你也不可能都知道。大膽的承認自己不知道,比打腫臉充胖子假裝自己知道的人要優秀的多。 “React好複雜啊,要加上ReactRouter和Flux才能寫大型應用” “嗯嗯,我也這樣覺得(內心:React是什麼。。。)” “那你平常用React做什麼?“ “。。。(卒)。。。”
- 新技術 != 合適的技術 你可能不止一次的聽到過這樣的嘲諷:“什麼?你還在用Gulp?太過時啦,現在大家都用Webpack,比Gulp好用多了”。我不知道這種嘲諷有什麼道理。新的技術就一定比原來的好? 脫離了實際的應用場景去評價工具的好壞就是耍流氓。我們學習和使用新的技術,一定不能只是因為它新它酷炫,而是因為它能夠更好的幫助我們解決當前的問題。如果舊的技術已經幫我們完美的解決了問題,那我們完全可以選擇忽視新的技術。 下次再有人單純的因為沒用最新的工具來懟你,你就大膽的對他說:“小孩才分新舊,大人只看利弊,對解決問題有利的才是最好的。你呀,too young too simple。”
- 有效地利用資源 能記住大量的技術細節當然是強大實力的體現,但記不住並不代表弱小和拙劣。在這樣一個資訊量如此奢華的網際網路時代,大多數的知識都可以在5分鐘內百度谷歌到。很多大的公司不是喜歡將一些小業務外包出去嗎,我們也可以把自己的一部分記憶“外包”給網際網路。 這個道理就像計算機。記憶體的空間是寶貴的,而硬碟則沒有太多空間上的煩惱。我們的大腦就像記憶體,而網際網路就是我們的硬碟。我們只需要在大腦裡儲存空間佔用極小的索引,把具體而龐大的知識細節交給網際網路這個巨大的硬碟儲存。如果我們把大量的知識和技術細節儲存在大腦——一個昂貴的記憶體上,這豈不是暴殄天物嗎。 因此,最重要的不是記住多少知識和技術,而是在需要用到它們的時候能夠快速高效的利用在大腦內建立的索引,然後在網際網路這個容量幾乎無上限的硬碟上找到它們。知道知識在哪,這絕對是一種優秀。
- 不完美,怎麼了 每個程式設計師都想寫出完美的程式碼,可問題在於,這一切都得從寫有問題的程式碼開始。最重要的是,我們得開始寫,不能因為害怕不完美就不寫。這和寫作是一回事。我半年多沒有在簡書上寫文章了,這並不是因為我不想寫,而是我太想寫出精彩、完美的文章,反而讓自己無法下筆了。這讓我陷入深深的自我懷疑中,懷疑我平庸的才華無法匹配我對自己過高的期待。但我今天還是寫了這篇文章,因為我反覆告訴自己:簡單點,寫作的方式簡單點(這句話自帶旋律...)。總之,下筆先開始寫起來就對了。 寫程式碼也是這樣,它得先被寫出來才能給我們讓它變得完美的機會啊。事實上,完美的程式碼並不是寫出來的,而是改出來的。debug的能力比coding的能力還重要。我很喜歡這樣一句話:“Software is soft.” 軟體是軟的,程式碼也是軟的。還記得我們小時候玩過的軟軟的橡皮泥嗎?沒捏好怎麼辦?沒關係啊,反正它是軟的,攤平了重捏啊。寫程式碼就是這個道理。
- 能沉進去,也能跳出來 我們都認為,優秀的人之所以優秀是因為他們能夠讓自己沉浸在自己所做的事情中,不受外界的打擾。這當然是對的,只有專注、聚焦在一件事情上,我們才能把那件事情做好。優秀的前端工程師一定是那些始終磨練著自己的技術和密切關注著前端領域發展的人。是他們的專注和不知疲倦造就了他們的優秀。可是事實是這樣嗎?並不完全是。 前端開發的腳步已經滲透到了人類社會的方方面面,每個行業都需要網站,都需要找到和特定人群互動的方式,而前端技術正是這類需求的最佳解決方案。作為前端開發者的我們,如果僅僅把自己侷限在前端技術這個狹窄的領域內,技術的創新又從何而來呢? 我自己是音樂愛好者,平常會錄點音樂視訊自娛自樂。有一天我心血來潮,想知道前端領域和音樂有沒有碰撞出什麼火花。上谷歌一搜尋,便發現了很多優秀的JavaScript的音訊庫。什麼howler.js,loop.js,audiosynth.js, tone.js,全都是music library for JavaScript。試問,如果那些作為前端開發者的音樂愛好者們只關注前端而放棄了自己的愛好,那麼,還會有這些優秀的令人腦洞大開的前端音樂工具存在嗎? 跳出前端,在不寫程式碼的時候繼續培養自己的興趣和愛好,讓自己接觸到不同的領域和行業,從而使自己擁有不同的視角。正是我們把各種各樣的興趣引入到了前端的世界裡,才讓前端的創新層出不窮,技術蓬勃發展。
好了,現在的我已經準備好成為一名優秀的前端工程師了,你準備好了嗎? 請把這篇文章分享給正在學習前端的朋友,希望該篇文章可以幫到一些小夥伴節省時間,加快開發。 最後祝所有程式設計師都能夠走上人生巔峰,讓程式碼將夢想照進現實,有不懂的問題可以隨時問我,工作不忙的時候希望可以給大家解惑。