自學前端開發:代碼之外需要關注的問題

不要只知道蒙著頭寫代碼,想要學習成為一名優秀的前端開發者,你還有許多代碼之外值得關注的問題。

學好英語

一定要學好英語,雖然英文不好也可以學會前端。但你一定會遇到比英語好的人更多的困難。因為你只能看中文的教程和書籍,學習框架和工具只能依賴中文文檔,交流問題只敢去中文社區。而前端99%的工具框架都是歪果仁發明的,國人發明的火起來的框架工具Vue/FIS等,兩隻手就能數的過來,並且大部分也是在國際社區里火起來的。還是英文的資源更權威豐富,甚至Vue的開發者尤大本人都不願意浪費他陪老婆孩子的時間來教你學英語:

中文的學習資源雖然也足夠豐富,可是質量良莠不齊。初學者根本無法分辨一個教程的好壞,甚至其中有沒有錯誤,假如選錯了學習資料,很可能就會被誤導。而假如你英文好,就可以直接去看官方的教程文檔,這是絕對權威可靠的。

工作中遇到的框架選型沒有中文文檔怎麼辦?遇到了某個庫本身的Bug沒有中文資料怎麼辦?遇到這類情況周圍又沒人幫你的話你會寸步難行。這時你沒有挫敗感么?不會覺得自己很Low很弱么?

英文不好你寫代碼的時候甚至需要用拼音給變數命名,看不懂術語和縮寫,別人給你解釋Java和JavaScript之間的區別還需要靠周傑和周杰倫。

所以請一定學好英文,否則即使你學會了前端開發,也無法在前端開發工程師的路上走很遠,很多問題你無法解決,跟不上最新的流行趨勢,遇到困難都需要依靠別人,你看到的教程資源都是那些懂英文的人吃剩下的,那麼你自己的技術水平也永遠要屈居人下。

話說回來,前端相關的英文也並不難,高頻的辭彙也不會超過托福雅思。而且對於一般人來講,你只要能看懂英文文檔大意就可以了,另外和歪果仁交流其實也不是什麼難事:

學會搜索

你要知道這個世界上有著和你一樣千千萬萬的前端學習者,並且每一個人都是從入門到熟悉到精通一步步走過去的。別的不敢保證,編程學習的資源在網上異常豐富,你遇到的問題101%(多1%不怕你不信)絕對也有人遇到過。所以只要你善用搜索,一定可以靠自己找到問題的答案。

例如知乎上存在著大量重複的問題,而且這些問題每天都不停地在出現。很多人都選擇無視搜索這一強大的功能,遇到問題連思考都不思考張嘴就問,殊不知他遇到的問題別人可能幾年之前就遇到過,而且已經得到了很好的解答。

你看或不看,答案就在那裡。

絕大多數人一提到搜索引擎就只知道百度,你在百度上搜個「前端開發」很有可能就此被帶到培訓機構的溝里去,學習效果無法保證,被坑錢是肯定的。編程類其實有相當多的優質資源都可以免費獲取到,打個比方我每天免費分享給大家的學習教程,翻譯的國外文章,完全也可以拿著它們去當每月10k學費的培訓班教材。

程序員都迷信Google搜索。但對於普通人來講,不下點功夫是用不上Google的。在此我可以免費分享給你一種辦法:

Break Google Blocks! Keep it to yourself. | 無障礙訪問谷歌

至於具體怎麼用,正好鍛煉一下,用你的百度去搜吧。

當然也有可能你雖然煩百度的廣告,可是又離不開它,我再附送一個百度去廣告大禮包,下面這個回答里有百度去廣告版本的Chrome,也有可以直接安裝的插件鏈接:

百度搜索有那麼多缺點,大家為什麼還要用呢? - 余博倫的回答 - 知乎

如何輸入搜索關鍵詞?學習知乎體其實有非常大的幫助,例如

  • 如何學習前端開發?

  • 學習前端開發是一種什麼樣的體驗?

  • 前端開發工程師月薪十萬難么?(此為惡搞)

搜索諸如此類的問題,你可以找到大量優質的答案。此時此刻我又忍不住要分享一點點乾貨,除了搜索引擎之外,你還可以在別的優質站點搜索:

  • 知乎
  • Github (不用擔心網站是英文的,你完全可以直接搜索中文)
  • segmentfault (中文版stackoverflow)
  • 優設

學會提問

學習一門技術的過程中,我們免不了有拜師學藝的想法。知乎優秀回答者啊,前端大神啊,或者是一個學校的師兄師姐,搞開發的同學等等。

作為一名小萌新你就像個好奇寶寶,你滿腦子都是各種各樣的問題,遇到見過的沒見過的都想隨口問一句。殊不知可愛的好奇寶寶和煩人的熊孩子之間沒有什麼不可逾越的鴻溝。

如何提問?如何能夠讓人願意解答你的問題?如何不煩人?

這就需要你運用到各種提問的技巧。首先請教問題,心一定要誠,知乎上有一種關閉問題的原因叫做「代為完成的個人任務」。你不能把自己遇到的所有問題都當成是別人的問題提出來,人首先要靠自己,在自己靠不住的情況下再尋求別人的幫助。

在你真正需要提出一個可以提的問題時,也需要真誠。你不能不假思索地隨便寫一個疑問句。

舉個實際的例子,你在項目中遇到了一個實現輪播圖組件的需求,你不知道JS該怎麼寫。你不能像一個乞丐一樣提問說:

輪播圖組件該如何實現?(求求各位大大行行好幫我寫個輪播圖的吧)

然後問題描述是空的,就好像拿著一個空碗一樣等人施捨。

你應該抱著探討的態度虛心求教,並且善用一些語言的技巧,最後附上自己對這個問題的初步思考,例如:

輪播圖組件的實現有哪些方式?

問題描述:下面是我初步實現的一些代碼,可能還有一些bug,我也試著在網上找過相關的組件了,可是搞不清哪種才是最優的方案,還望各位大大能夠指點一二。

這樣一看你的檔次就高了起來,你不是求別人告訴你,而是和別人平等地探討問題。這樣回答你的人也可以擁有一個更平和的心態,讓他覺得他的回答不是施捨賜予,而是平等的學術討論。你也就能獲得更具價值的答案。

其實關於如何提問,有一篇2001年的文章已經回答得非常好了。在這裡分享給大家,與諸君共勉:

  • 提問的智慧

學習方式

很多新手學編程都喜歡看視頻,每次看完都似乎彷彿好像可能理解裡面講的是什麼了。回頭你讓他寫代碼,他一行都寫不下去。

學習習慣比較好的可能會選擇看書或者讀文檔。在這裡我有必要聲明一下,即使紙質文本和視頻講解的是完全相同的內容,學習文字也要比視頻的效果好很多。

看書是主動學習,看視頻是被動學習。主動翻頁和視頻進度條自己走(只有人拖條看A片,沒有人拖條看教程)是完全不同的兩種效果。你可以自主把握獲取知識的速度和節奏。

當然我也不是說完全摒棄看視頻的學習方式,從視頻中你也可以獲取到文檔書本中獲取不到的信息。例如別人是如何寫代碼以及遇到問題時是如何思考的,另外可能就是治你不願意主動學習的懶病。

現在還有相當一部分人喜歡通過訂閱知識分享平台來學習,例如知乎/掘金/開發者頭條/簡書等等。不可否認的是你確實可以從中獲取相當豐富的知識,可惜大多數人從來都是看題目點收藏,根本不讀內容,更別說在讀完之後點個贊了。而且事實上你在這些知識分享平台獲得的也是碎片化的信息,本質上和你刷微博朋友圈沒有任何區別,只是逼格高一點點罷了。

就像你正在讀我寫的這篇文章一樣,你確實能學到點東西,可只適用於茶餘飯後的消遣。它不足以支撐你系統掌握一門技術。

所以想要真正紮實掌握前端知識體系,必須去讀書,看文檔,輔以看視頻、刷知乎等等。千萬不能本末倒置。

動手實踐

其實動手實踐也應該包含在學習方法里,它的意義是如此重要,所以我把動手實踐專門劃分在一個段落里。上述的主要是理論知識的學習,而我們要認清編程本質上是一門技術,一門手藝(我當然承認編程其實是一門藝術)。一定要能夠動手做出實際的東西,寫下一行行代碼才算你真正掌握。

否則你只能拿著書里學到的那些名詞術語裝裝逼而已。在交流群里胡侃半天,結果別人問你造過什麼輪子,開發過什麼項目你就傻眼了。現在前端崗位招聘動不動要求兩年三年經驗,你要上哪裡找去?

  • FreeCodeCamp中文網
  • 百度前端技術學院開發任務
  • 一個全棧增長工程師的練手項目集

一定要有自己的個人項目,一定要寫自己的技術筆記,有條件也可以為開源項目做貢獻。

只看書沒有任何用,光看視頻也然並卵。

一定要不停地實踐實踐實踐!

一個只實踐不看書的有可能會成為一位大神(在實踐中就能學會很多),但一個只看書不實踐的只能成為一個噴子。

一定要記住:

學而不練則忘。

認清就業現狀

前幾年可能還好,現在所有人都知道前端工資高。互聯網泡沫沒破的時候,應屆畢業生第一次定崗就有能拿20k的,這都是真實發生過的事情。可就像你買彩票幾乎不中獎一樣,你從來不能把未來寄托在幸運之上,你需要有與之相匹配的實力。否則你即使遇到瞎了眼的面試官能拿到Offter,在正式的工作中你也沒能力保住崗位。

現在所有人都意識到了互聯網行業賺錢,有點技術夢想的,不甘現實蹉跎的都想要通過學前端找到高薪工作。學法的學醫的學會計的送快遞的挖礦的,感覺360行有361行(多一行不怕你不信)都想轉前端。

前端的工作機會確實多,需求量也確實大。可也得分清場合地域。

應聘難度從易到難為:

非互聯網公司但有Web開發需求的<互聯網小型創業公司<知名網站、應用<BAT

待遇薪資當然也是一樣的序列。所以你需要認清自己的目標,找准自己的位置。最底層的頁面仔工資真的還不如一個送外賣的,但與此同時,當然也有能讓你實現財務自由的崗位。

堅持不懈&當斷則斷

學習可以很愉快但從來都不是一件輕鬆的事情。程序員的進階之路尤其如此,就像你知道山口山升級的那一聲是如此清脆響亮餘音繞梁,但那需要你刷多少本,殺多少怪才能聽到那麼一聲一樣。

你學習的計劃和安排可以很明確,但這並不代表它很簡單就能實現。你會遇到無數的挫折,你需要解決無數的Bug,你更需要無數的練習,才能達到你期望的目標。

你可以找一份碼農的工作鍛煉自己,但這僅僅是鍛煉,你不可能當一輩子碼農。

如果你真的喜歡編程,喜歡前端,那麼在你寫下每一行代碼的時候一定能體驗到那種快感。而如果每一篇教程都讓你難以理解,每一行代碼都讓你痛苦不堪,千萬不要強迫自己。

因為你可能並不適合編程。改變命運的方式不止這一種,高薪的崗位也不止這一家。條條大路通羅馬,人要對自己好一點,如果發現自己真的不適合,那就早一點放棄,節省下的時間還可以用來實現你生命中的其他奇蹟。

但假如你真的熱愛編程,喜歡前端,無論前路多麼坎坷,請你一定堅持下去!

Q&A

Q:看完了前端的編程書籍,看的時候感覺理解了,可是寫代碼的時候還是沒有任何長進怎麼辦?

其實一些比較經典的推薦書籍安排都很好,每個講解的知識點都有相應的代碼實現。請你不要只是看過去,看書的時候打開你的電腦,把每一個示例都敲一遍。讀完一個章節之後也試著用代碼寫寫每一章的知識點,相信你會有一個不一樣的體驗的。

Q:學習前端需要了解演算法和數據結構么?

演算法和數據結構一般都是面試的時候裝逼用的,也可以在程序員之間相互吹逼時使用。但無論如何作為一名合格的前端在面試的時候拿JS寫個快速排序還是應該做到的。在實際工作中一般運用不到什麼演算法和數據結構的高級知識,等到你真正有機會用到的時候,你自然也成長到那一步了。

Q:為什麼要熟悉原生JS,我jQuery用得很溜不可以么?

不是所有技術棧都包含jQuery,jQuery雖然適用於很多場景,但並不是萬能的。你不能把自己的技術實現全部都建立在一個別人開發出來的庫上,那樣你只是會用一個工具,而不是懂一門編程語言。

太過於依賴jQuery別人只敢讓你去寫業務實現,而技術選型一類更高層次的活你根本都沒資格接觸。

Q:非計算機專業想要學習前端開發從哪裡開始?報培訓班靠譜么?

現在國內哪所大學有專門教前端的專業?前端從業者大部分都不是科班出身好么,計算機專業的都去搞數據分析和機器學習了,怎麼稀得做前端開發這麼LOW的工作(此處為自嘲)。所以有千千萬萬的前端開發從業者和前端入門學習者和你是一樣的,不要以為自己是什麼特殊群體,保持一顆平常心。

培訓班也相當於是一種被動學習,並不是說報培訓班沒有一點作用,只是大多數情況下你報班只會得不償失。自制力好的人不需要報班通過自學也能小有所成,而懶惰的人即使培訓班畢業了也找不到工作。

培訓即使有效果,高昂的學費也是把你錢的坑了。我免費分享給你這麼多教程,你連個贊都不點,我從來和你要過錢么?

Q:我正在學習前端開發,想要早一點找到相關工作怎麼辦?

那麼你就先去找工作,看工作的職位描述對你的技術有什麼需求,根據你目標崗位的技術需求來學習。我們拿拉勾網的前端開發技術要求來舉一個具體的例子:

  • 熟練掌握HTML5、CSS3、JavaScript開發
    • 這一條表示你要有紮實的HTML5/CSS3/JavaScript基礎
  • 熟悉W3C標準與ES規範,熟悉Web語義化
    • 你需要了解一些Web相關標準
  • 熟練掌握盒模型、常用布局以及瀏覽器和移動設備兼容性
    • 能夠熟練使用CSS構建頁面,能夠處理好各類屏幕大小設備的兼容性
  • 熟練使用至少一種JS框架,掌握其原理,能獨立開發常用組件
    • 熟悉Angular/React一類的框架,並且用這類框架開發過成型的項目
  • 熟練使用各種調試、抓包工具,能獨立分析、解決和歸納問題
    • 熟練掌握Chrome調試工具一類應用軟體的使用
  • 具有至少一門伺服器端編程的實戰經驗
    • 你得會Python/PHP/Node.js一類的伺服器端語言,並且能夠獨立搭建起Web應用的運行環境
  • 具有性能優化經驗
    • 了解客戶端/伺服器端緩存,CSS/JS代碼優化一類的性能方面知識
  • 熟悉各種常用設計模式和常用MV*框架
    • 了解掌握設計模式和Angular/React等框架

然後再根據每一條要求去學習相關的知識,準備相應的實踐項目。準備好就去面試吧,如果面不到就再回來繼續好好學,千萬不要急功近利。

如果還有什麼其他問題,歡迎在評論區提出。有任何好的意見建議,覺得我說的有什麼不對的地方也歡迎在評論區指教。

閱讀更多

學習方法

  • 在2016年如何學習JavaScript? - 從零學習前端開發 - 知乎專欄

  • 6周學習計劃,攻克JavaScript難關(React/Redux/ES6 etc.) - 從零學習前端開發 - 知乎專欄

成功案例

  • 科班狗的前端之路

  • 非計算機專業出身的我是如何在兩年內成長為前端工程師的 - 從零學習前端開發 - 知乎專欄

如果你想要完整的學習Web開發

  • Come on Baby! 你也可以成為Web開發工程師!——Web開發工程師完全成長指南 - 從零學習前端開發 - 知乎專欄

  • 如何在一年之內通過自學找到Web開發工作 - 從零學習前端開發 - 知乎專欄

  • 前端學習路徑 - 余博倫的文章 - 知乎專欄

  • 2016/2017 Web 開發者路線圖 - 從零學習前端開發 - 知乎專欄

如果你對文中提到的FreeCodeCamp感興趣

全世界學習Web開發的最好方式-FreeCodeCamp學習參考資料 - 從零學習前端開發 - 知乎專欄

號外!號外!

從零學習前端開發有自己的QQ群啦!

群號:591950591

點擊鏈接加入群【從零學習前端開發】:加群鏈接

驗證問題:想學啊你?答案:我教你啊

意思就是輸入答案四個字:我教你啊

就可以入群了!就是這麼簡單直接!不要再問我啦!

我會在群內不定期分享各類前端學習資源,也會偶爾布置實踐小作業供大家一同交流學習襖,以後還會陸續開展各類活動~


推薦閱讀:

「天才」背後的秘密:刻意練習
方法論|如何理解一項學習行為?
從小就聽說,「學好數理化,走遍天下都不怕」你們認為在現在的社會還行得通嗎?
怎樣提升自學能力?
如何為不愛學習的初一男生當家教?

TAG:前端开发 | 前端入门 | 学习方法 |