前端疲勞

我最近和一個作後端開發的朋友討論我在工做之餘花了多長的時間去寫碼和學習寫碼。他給我看了Uncle Bob的《Clean Code》這本書中的一段話,它將音樂家們爲準備音樂會而花費的時間與開發者讓代碼正確執行所用的練習時間進行了比較。前端

我喜歡這個類比,可是我不認爲我徹底認同它;首先這種想法會致使疲勞。我認爲若是你想進一步磨練你的技術並擴大你的技能集,那麼這是很好的,可是要一天中每一個小時都這樣作是很難持續的。react

前端疲勞是很是真實的。 我看到過一些關於JavaScript疲勞的文章,但我認爲問題遠不止於這種特定的語言。angularjs

先澄清一下,這篇文章不是在抱怨前端疲勞如何糟糕,以及技術發展太快—— 我喜歡技術迅速發展。一樣的,我能夠感覺到它是如何的勢不可擋,也會時不時地感受本身要落伍了。web

據我所知,這是一把雙刃劍。面試

首先做爲一個前端開發者,你認爲你的技能樹裏應當有如下全部的技能:chrome

  • HTML (整潔代碼,語義化標籤)
  • CSS (模塊化,可伸縮)
  • CSS 方法 (BEM, SMACSS, OOCSS)
  • CSS 預處理器 (像LESS, SCSS, PostCSS)
  • 現代 CSS (Flexbox, Grid)
  • JS
  • 現代 JS (ES6, Typescript)
  • JS 框架 (Angular, React, Vue [更多的以後在此插入])
  • JS 方法 (函數式編程, 面向對象)
  • JS 庫 (Immutable, Ramda, Lodash)
  • 響應式設計原則
  • 測試 (TDD)
  • 測試框架 (Jasmine, Karma)
  • SVG
  • WebGL
  • 動畫技術
  • 可訪問性
  • 可用性
  • 性能
  • 構建工具 (Grunt, Gulp, NPM 腳本)
  • 資源打包工具 (WebPack, Browserify)
  • NPM 生態系統
  • 瞭解不一樣瀏覽器的怪癖
  • 敏捷方法
  • 版本控制 (一般是 Git)
  • 視覺設計基礎
  • 軟技能,時間管理
  • 對使用的後端語言有基本的瞭解。

此外,你還要涉足或展望這些技術:編程

  • Service workers
  • Progressive Web Apps (PWA)
  • Web組件化

其次,你的平常工做可能不會徹底覆蓋這些技能,或者不會讓你有時間去學全部技術,所以怎樣才能在你的控制下去保證會全部的技能?後端

據說像 「Progressive Web Apps」 的項目對開發人員來講是至關可怕的。新的方法和技巧致使疲勞感 —— 前端疲勞。

開發人員聽見「Progressive Web Apps」 這種術語可能會感到畏懼。新的方法和技巧致使疲勞感 —— 前端疲勞。 (圖片來源)設計模式

如今做爲這些技術的消費者,你可能要作的是:瀏覽器

  • 訂閱一打不一樣的開發者週刊簡報
  • 添加Twitter訂閱
  • 參加每週趕工做的前端團隊
  • 在工做以外有輕鬆的渠道能和一些開發者交流
  • 按照網上的教程 (但願不是過期的)
  • 使用視頻課程培訓網站像 Frontend Masters
  • 買web開發的書 (但願不是過期的)
  • 參加技術聚會
  • 參加會議
  • 參加培訓課程

而做爲一個貢獻者,你可能要作的是:

  • 寫博客/雜誌文章
  • 演講
  • 直播
  • 貢獻開源項目
  • 作本身的業餘項目

最近我發現個人注意力被分散到三件事情上,我用三分之一的精力寫着代碼,同時戴着耳機一邊聽別人討論代碼,一邊在Slack上跟別人聊代碼。我決定適可而止——個人所有注意力都被代碼所佔據。我已經精疲力竭了。

雖然這確定是極端狀況,但我相信其餘人也經歷過相似的事情。最重要的是,你可能有一份全職工做,家庭,朋友,業餘愛好。難怪咱們中有那麼多人感受力不從心而且懷疑咱們是否作了正確的職業選擇

個人一些前端同事都表示想要打包走人,而後換一個能夠在五點結束的工做。但我認爲前端工做仍舊吸引着某些的人,而若是放棄這份工做,成爲一個房地產經紀人,你仍然想盡你的可能成爲最好的房地產經紀人。在你的空閒時間你仍是會參加房地產會議和跟蹤房價趨勢。不少個月之前,我在金融業工做,晚上我還在學習,閱讀相關資料,想成爲我所選擇領域中技能最佳的人。

並非只有這個領域須要付出巨大的精力,許多職業須要投入大量的精力而且在工做以外學習。也許前端開發的特殊之處在於技術發展得如此迅速,以致於好像有人一直在移動目標崗位。這就像每隔一天我就會收到一封電子郵件,上面寫着「XYZ」技術已死。我肯定這不是真的,不然咱們就沒有技術可用了。

生態系統處於不斷變化的狀態,我認爲這是一件好事。就我我的而言,我喜歡扮演一個能夠不斷地學習、發展和督促本身的角色,但這並非說我不會偶爾感到不知所措。

考慮到這一點,我嘗試記住這些事情用來阻止我殫精竭慮,同時也有一些避免疲勞的通用建議。

咱們是同樣的

我認識的開發者,不管是在工做中仍是工做外,都是我認識的最聰明的人。但他們全都會感到不知所措。大多數人都有一些但願學習的技術清單。可能有少數人知道全部技術,並且在全部事情上都處於領先地位,但咱們大多數人的處境徹底相同。

咱們仍然依賴Google和Stack Overflow來度過咱們的一天,打開了超多的選項卡,所有是關於Web相關問題的答案。不止你一我的是這樣!

要高興地知道你不是一個糟糕的開發人員,你只是尚未嘗試過酷孩子們正在使用的東西。

是的,即便是「web名人」也有一樣的困境…

你不可能知道全部的事情,而你在Twitter上追隨的明星開發者在小部分的領域中表現得很是好。你會注意到,他們出名的領域剛好是他們所熟知的領域。可能也會有例外,但他們和咱們同樣也只是個普通人。:)

冒充者綜合徵是真實的,咱們都有

我知道有有些優秀的前端開發人員不會申請職位,由於他們在不知道工做描述要求上的全部東西的狀況下,就以爲本身是個騙子。引用其中一個:

「我看到的90%的JDs,會讓我感受「啊,我太落後!」 。事實上,這讓我很困擾,我想留在我如今的職位,試圖賺更多的錢,只是由於這樣讓我以爲我已經「擺脫它」。」

事實上,大部分的工做說明都是鬧劇。個人朋友Bård把這些說明放在一張大的圖片,來展現出前端工做要求和它們的真正含義之間的區別。

招聘廣告的解釋

招聘廣告的解釋 (圖片來源) (圖片來源)

只要記住,會變好的。我所作的每一項工做,我都以爲本身不夠深刻,但最終你會習慣他們的工具和工做流程,你會學習併成爲一個更好的開發人員。

不要懼怕在工做中學習,掌握新技能的最佳方法是天天使用它們。

若是你有冒充者綜合徵,可能你是個正派的開發者,不然你就不會自覺地意識到它。

鞏固基礎

人們很容易被耀眼的新事物分心,可是若是你的基礎還不牢固,那麼你所建造的東西將經受不住時間的考驗。

就像個人一個好朋友曾經對我說的:

「專一於基礎一直是個人口頭禪。你能創建良好的項目(SH!T)和解決問題,這纔是最重要的,而你如何解決它們(所使用的工具)已經並將永遠改變。」

例如,當react一躍成名,它彷佛老是和ES6捆綁在一塊兒,我把重點放在語言的那些改變和新特性上而不是框架自己的細微差異。一旦react不火了,我從最新的JavaScript上學到的知識將繼續存在下去。你能夠在原生chrome玩不少特性,而不用引入Babel陷入依賴地獄。

不用學全部的

這真的很關鍵。我認爲正在扼殺咱們的不是新框架、庫和模塊,而是咱們本身必須把它們所有學會的信念。

經過學習我發現最好的辦法是專一——此刻我正在鑽研ES6中的JavaScript函數式編程。

個人清單上還有不少我想學的東西,但我儘可能不分心。例如,我喜歡溫習我會的知識,玩Polymer,鑽研一些最新的CSS技術,好比Grid,可是若是我一次開始閱讀太多不一樣的領域,我得不到全部的信息。這些別的東西哪兒也去不了,再次看到的時候就能聯想到他們。

避免在某一主題上匆忙嘗試使用一切。 慢慢來,確保你徹底理解它。

若是你像我同樣,你會有一個不斷增加的清單,但不要懼怕從中剔除項目。並非全部的事情都值得投入時間,你應該試着去認識哪些是值得學習的,哪些可能在幾年內消失。花時間來學習編程的設計模式和架構技術,相比於投入在當前火的框架,在長遠上來看,老是更有益的。脫離成長軌跡,過不了多久你就會迷失在追逐玩流行語的過程當中。

大多數公司沒有使用尖端技術

如今有不少新的東西出現,web正在以驚人的速度發展,但一般企業真正在業務中開始採用這些新技術,須要很長的時間。大多數公司會等一段時間待技術成熟,並看到它在領域中被承認。

Angular 是六年前建立的,我剛開始在一家初創公司工做,他認爲這是三年前的框架。Reactjs 已經有大約三年的歷史了,我如今的公司僅在今年聖誕節前纔開始使用它。我確信有不少其餘的框架在同一時間出現或者消失。若是全部的我都要去研究,我會發瘋的。

在CSS領域,flexbox在2010年就能夠用了——六年前!可是瀏覽器到如今支持仍然有限。咱們今年早些時候開始在生產環境中使用它,並且我也不認爲它在其餘地方被普遍使用。

個人意思是,沒必要急於學習全部的東西,雖然技術可能會很快發展,但你的潛在僱主正在以較慢的速度前進。你沒必要走在曲線的前面,只是要確保你在觀察它的軌跡。

你學的越多,你會發現你不知道的也愈來愈多,這不要緊

這是徹底正常的。當你剛開始的時候,你不知道你不知道什麼。而後你會學習一些東西而且認爲你是一個天才。而後,漸漸地,這種幻覺被打破,你開始理解事實上在這以外你有多少東西不知道。

從本質上說,你獲得的經驗越多,你進入的空虛就越深。你須要跟這個和平相處,不然它會消耗你。若是有的話,這種感受會讓你相信你正朝着正確的方向前進。在咱們選擇的職業中,你永遠不會舒舒服服地學會全部前端知識。

不要把你全部的業餘時間都花在學習上

你很容易就感受到你遠遠落後,須要每分鐘都去編碼和學習。這是一張通往職業疲倦的單程票。留一些時間來發展你的技能,看看你是否能夠與你的老闆協商一些時間來保證你的學習時間,而後用剩下的時間來作你愛作的事。

我已經分出一點寫代碼的時間在健身房。鍛鍊對你的身心都是極其重要的。嘗試天天至少作20到30分鐘,能夠保持頭腦清醒,防止疲勞。

給你的家人和朋友留出時間,儘可能不要和他們談工做!

如今是開發者的市場

目前不要擔憂找不到工做。此時咱們正處於一個很是幸運的點,等待填充的崗位遠比開發者要多。我不知道這將持續多久,但如今好好把握它!

你能夠在不知道全部技術的狀況下獲得一份工做。我發現,在我面試過的人中,99%的人徹底是在吹牛。

最壞的狀況,記住遺留代碼中有黃金。若是你是一個喜歡老方式的開發人員,老是會有一些公司依賴於傳統技術,須要開發人員在他們的軟件上工做。

結論

我但願其中的一些點有助於減輕你可能感到的一些挫折。你能作的最糟糕的事就是到達邊緣,徹底被燒盡,由於一旦你這樣,很難恢復你對你所作的事情的熱情,以及你這麼作的初衷。

擼碼愉

相關文章
相關標籤/搜索