我現在的情況應該怎麼學習前端?

第一次提問題,很多提問的藝術可能沒弄懂,莫怪莫怪 ;

說一下本人情況 某一本大學大三學生,軟體工程專業,自認為還是蠻喜歡這個專業的,有刻苦學習過,但很多時候都是在瞎搞,前兩年學的是java,然而感覺沒有學到應學的地方,比如大一學了一年連什麼是ssh都不知道,寫過一些程序,如大二為學校開發過安卓應用,但個人都感覺寫得太爛了沒人用,什麼都學學罷了沒深入,參加了兩次比賽結果都得了安慰獎,而且視野也很窄,等到大二末看招聘要求的時候整個人都看傻了,唯一能看懂的也就只有前端的要求 ;

當時傻傻的覺得java不靠譜那就學前端好了~現在都覺得傻傻的 ;

而後學了2/3年的前端,也就是大二暑假到現在,卻發現前端水看起來很淺其實也就只有看起來很淺,大二暑假跟風看了threejs做了個很挫的賽車遊戲對工作完全沒用,大三上學期就學三樣東西:以node.js為興趣學習js(js也就看過兩本,自己買了本犀牛看了半本感覺收穫不大,另外一本《高性能js》倒感覺受益匪淺),看正則(買了本《精通正則表達式》,到現在感覺連一般的正則都不會寫),看演算法導論,然而這三樣都不好學,前幾天看阿里筆試感覺很多東西都是懂非懂,很是心寒。 ;

而後這個學期開學一個月,主要看css和html,都在看很基礎的東西,看某本關於html語義化的書和《css權威指南》,而後剩下時間就是上課和弄wp博客去了,由於沒有任何實戰經驗,感覺也就能模仿一些頁面連處理遊覽器兼容問題都解決不了,更不用說響應式和全站設計了。

然後實習投了份簡歷給網易,果斷就石沉大海了。

感覺前程又迷茫了,一直被人大神大神叫結果發現自己也就裝逼裝的比較逼真啊,但這在工作的大大面前果斷原形畢露,很是羞愧 感覺現在大三下開學一個月,雖說實習已經不靠譜了,但還是希望堅持一年待到校招能到牛逼一點的互聯網公司。

最後的總結大概就是自己演算法不行基礎不行自認為有點興趣有點勤奮也認識到自己要有堅定的目標而不能想學什麼就學什麼了。 在此希望學姐學長前輩們能給些意見以照亮我前進的方向,本人還希望有生之年到google掃掃地(哈哈,只是兒時夢想),謝謝

另:本人之前也各種搜索前端需要學什麼,在知乎找了大概的方向(但只是從別人問題中找的),由於現在手機而「大概方向」保存在為知筆記,暫時不粘貼;也希望各位學姐學長前輩們能給予我一些其他的意見,如本人沾染了程序猿的脾氣連社交能力都開始退化了,如也許我這貨根本就不適合這專業等等。無論是答案或者一些勉勵的話,都非常感謝,先在此再次謝謝!

———————————————附上「大概學習目標」———————————————————

(下面是來自知乎的,但頁面已經找不到了,僅粘貼自為知筆記)

語言:

1,熟練掌握html5,css3,javascript,ajax

2,掌握PHP、java、pyphon中至少一種web開發語言(不少公司都有特定需求吧,奇虎還招golang)

3,框架/庫:MooTools,YUI,Angular,jQuery,Dojo.

4,UI框架:BootStrap,Foundation,Semantic UI,Kendo

5,CSS製作工具/編譯器:SaaS/LESS

6,JavaScript服務端運行時:Node.js,Ringo

7,JS模塊化規範:AMD,CMD,CommonJS

8,工具:Gulp,Grunt

環境:

1,熟悉Linux開發環境,了解常用工具的使用

2,熟悉svn/git

思想:

5,能夠理解數據結構和演算法設計

6,具有一定的軟體工程意識

工作:

1,追求最佳用戶體驗

2,工作認真細緻,有責任心

3,有激情

4,具備良好的團隊合作精神

以上純屬最基本的要求↑

下面是加分項:

1,有自己的技術博客且有乾貨 +10分

2,參加過開源項目並列出主要貢獻 +10分

3,有自己的github +10分

4,github上的項目被fork10+次 +10分

5,處女座 +10分

6,有過相關項目的實習經驗 +10分


題主能夠認真的思考自己的職業發展,不斷的探索自己在技術上的優勢和劣勢,我覺得是好事。

但是有這個幾個問題:

1 技術雜而不精。對在校大學生來說,其實你把自己的技術發展定位在前端,那怕你只要簡單的把css+html學好,能夠仿照知乎、豆瓣等網站的頁面自己寫代碼實現一遍,然後再參考網站的代碼結構,對比一下自己寫的代碼。熱愛技術,但是先好好的學好基礎技術。

2 技術耐心。可以看出你對技術還是比較感興趣,真的很好。但是遇到問題和困難容易失去耐心。試著去解決你遇到的難題,你會發現你每天都不一樣。

3 技術自信。聞道有先後,術業有專攻。放低心態,確實有很多技術和知識自己不懂,知道自己不懂然後搞懂,這就是進步,多和比自己牛逼的人交流,不要自卑自己不如別人。無他,你學會了也是大牛!聞道有先後!

剛好之前在回答了一個 還有半年時間,怎麼準備前端工程師的校招? - 秦墨魚的回答

可參考

「基礎知識。技術類面試,比如前端面試,主要考察點還是在css,javaScript,html上。面試官會問一些平時在項目上由於基礎不牢容易出錯的技術點。比如 為什麼要初始化CSS樣式

技術熱情。對工程師而言,我覺得這個特質超過技術基礎,基礎已經通過幾周的公司培訓可以帶出來,對技術的熱愛是這個面試者發自內心的喜歡干這行。有熱情有興趣已經是一個好的苗子。面試官只能通過和面試者的交流,和對技術問題的回答來觀察。這也是對面試官的一個考驗。

聰明。璞玉可雕。」

不要自卑不要迷茫。給自己認真做做職業規劃!加油


我想從Google和前端(兩個並不怎麼相關)來說說。

--- Google ---

首先,通篇讀下來以後題主的可見夢想大約是Google。不說難度如何,如果這沒錯的話,那最好的實現夢想方式一定是:1)抓緊申請一個不錯的北美研究生學校;2)寒暑假、學校里,刷演算法題『OJ』、做項目。

原因:

- Google大中華區招人不多,要求甚高,新畢業生很難進。

- Google總部直接從中國招人(並贊助H1B),要求演算法大賽前個位數,而且這條路現在好像越來越窄了。

- 樓主還年輕(...),正好在申請期之前,聽起來是不錯的一本,那申一個好的北美研究生壓力不大。

- 有一些項目經歷 + 一個好的研究生學校 + 刷完幾遍演算法,進Google概率不小。

如果目標定為Google,要注意對『新技術畢業生』New grad,除了少量職位(『廣義上的前端』UX engineer, 『原型迭代』Prototyper, 『數據研究』Data scientist,等等)以外,Google招的是通才『Generalist』碼農為主,也就是說,進Google之後項目需要做什麼,你就會做什麼;雖然面上說會按興趣做team match,但公司的期望是你有很強的學習新東西能力,前端也好後端也好。同理Facebook Uber Airbnb等大型科技公司,不過FB沒記錯的話好像是分Generalist和Mobile,有一點點不同。

在這樣的情況下,全力投入鑽研前端並不會太增加你進Google的幾率。況且最近Google等開始問New Grad系統設計『System Architecture』的問題了,而前端項目里能接觸到系統設計的並不多。還有一小點:用JS做演算法題,誰用誰彆扭。

--- 前端 ---

如果題主目的就是進Google,那之後可以不用看了。

灣區這裡有很多各類前端技術討論會『Meetup』,我挺喜歡跟行內前端前輩聊,經常問為什麼做前端,以下是幾類有重疊的回答:

- 喜歡產品,希望做的東西是直接被用戶看到、接觸、使用的

- 喜歡交互和設計,希望做出很美的東西來

- 喜歡應對前端遇到的各種無比繁瑣複雜的問題『抖M』

- 不喜歡後端,來了前端

- 前端門檻低

願意來參加Meetup的人里,純粹後兩類的是挺少的。目前看起來樓主還屬於這個範疇,但我覺得這兩類在前端路上一定走不長遠,原因是:

- 深度:前端過了初期以後,很需要對語法和設計思路的深入折騰和鑽研

- 廣度:靠譜前端需要掌握的知識太多太雜(可自行搜索:前端 技能樹)

看起來門檻低,不代表真的容易做好,一個階段以後沒有興趣支撐很難維持。

我沒有辦法告訴題主如何培養對前端的興趣,就如同我對LOL玩家安利Dota,對美漫玩家安利日漫都會以失敗告終。興趣這玩意兒變幻莫測么。

如果題主找到了自己的前端興趣所在,那麼我想說說我淺薄的前端學習看法:

1. 以招聘啟事作為方向不是很好的思路,很容易就把目光放得太遠。

比如列出的『有自己的技術博客且有乾貨』、『參加開源項目並列出主要貢獻』、『github上的項目被fork很多次』。至少在灣區這裡的前端社區,能做到這樣已經起碼是一個挺資深的前端了。況且,有不少前端並不一定出來寫博客、做開源,但不代表ta不是好前端。另一方面,刷fork刷星的也大有人在。

另外的一些考核標準,範圍鋪的很廣,從懂設計到會寫後端,因此只依據招聘來學前端的話,很容易變得什麼都想學、什麼都學不精,問一兩個細一點的問題就掛了。『教練,我想學前端』

2. 我覺得比較好的前端學習思路應該是:折騰 + 思考。遇到不懂的、做的不好的就去查,查了盡量理解、記住,記不住下次記住。

跟之前的答案不同,我不認為沒折騰過就看一堆書有任何用。看書、總結、歸納應當是在實力到達每個階段以後發生的事。

比如,現代框架把不少JS的晦澀點隱藏了起來,平時寫的時候不一定遇得到。就.bind這一語法點來說,是看書勉強硬背.bind的實現機制、用處好呢,還是發現寫React時候忘了bind一個函數導致其不能被子元素調用,來的理解深刻呢?

遇到問題就盡量深入琢磨。不遇到就繼續寫出好用的頁面/app來。

什麼時候該看書?有兩個階段我覺得比較適合,一是寫了一些小app,見識過closure, this, class, callback / promise等等基礎語法以後,去看一下JS patterns寫的具體實現。還有一個階段是做過一個大一點的項目以後,看一看JS的項目架構思路。

3. 有一個前端學習思路以後,應該儘可能多的上手。一般情況下,從機會好壞和成長性來說:老師學長學姐家裡人推薦到靠譜實習 &> 自薦去小的創業公司免費打工 &> 學校社團寫網站做app &> 自己寫小項目。

前幾種就是社交面的問題了,實在不濟自己寫的話,推薦從一個小的、能夠自己用到的項目開始寫。我不覺得上來就照著知乎、微博的界面做模仿有多大意義,一來因為工作量太大又沒有成就,很容易氣餒;二來代碼被壓縮以後你看不到一些思路,比如css class的重用設計,樣式引擎『Template』的使用和設計。

一些可以考慮的小項目:

- 寫一個能用來記錄自己遇到的JS語法問題的在線小筆記本 -&> 配上node和mongodb做的後台 -&> 部署到heroku

- 用Github api,寫一個Github項目分析器(星、fork、commit數量),比如可以比較幾個前端框架的火熱程度 -&> 配上後台存儲結果 -&> 部署到heroku

- 做一個個人主頁 -&> 添加一些個性化的動畫 -&> 部署到heroku

順便,樓主提的『推薦掌握的JS框架』,不帶上React和Vue真的好嗎。

4. 正則表達式。

短時間覺得正則表達式很迷糊其實不用太擔心,因為就是很迷糊,尤其是如果你只參考書和MDN的話。那一堆堆的規則扔誰誰倒。

不如試著從最簡到繁:給一個字元串,匹配數字(東西的價格) -&> 匹配數字和字母(用戶名) -&> 匹配帶"-"有格式的電話 -&> 匹配郵箱 -&> 匹配網址 -&> ... -&> 匹配SQL(我正在寫這個,因為有的幾個輪子看起來不是很靠譜,快瘋了)

先答到這裡,想到補


題主並非想的太多,做的太少。 而是做得太多,卻都沒做好。

簡單的說,有點浮躁,缺乏工匠心(否則怎麼會連這個找的招聘需求都這麼明顯的不靠譜-_-#)。

==============

大二暑假跟風看了threejs做了個很挫的賽車遊戲對工作完全沒用,大三上學期就學三樣東西:以node.js為興趣學習js(js也就看過兩本,自己買了本犀牛看了半本感覺收穫不大,另外一本《高性能js》倒感覺受益匪淺),看正則(買了本《精通正則表達式》,到現在感覺連一般的正則都不會寫),看演算法導論,然而這三樣都不好學,前幾天看阿里筆試感覺很多東西都是懂非懂,很是心寒。

================

首先,js,演算法(指入門級),正則,這三樣都不難啊!!

js入門真心不難吧,至少入門很容易吧,如果js學得精一點找實習至少應對js面試題應該毫無壓力的。

至於正則。。。。還真沒聽說誰學不會正則的。

題主知道自己做的遊戲不好,那有沒有想過,哪裡不好,能不能優化呢?

題主說折騰過wp, 可是連兼容都處理不了,更別說全站設計。。。可是,這都不會,那你折騰wp的時候在做什麼? 兼容真的就是動動手再查查資料就能做的啊!!!

說下我的看法,題主缺乏工匠心。不論是學習,還是做東西,沒有往深入鑽研。當然,這不是批評,很多人,至少我自己都有這樣的過程。

我的建議是,多看好的東西。

學js感覺吃力,去看下那些精通的人是看什麼書學的(犀牛書和高性能並不適合入門)。

做應用感覺做的爛,那就去看做得好的是怎麼樣的,模仿之。

網頁設計不會,就去看好的博客是怎麼樣的,借鑒,實現之。

不知道學什麼,接觸優秀的前端,請教之。


ps:有加了些東西~~~~~

分享點乾貨給迷茫的同學。

1,有實習經歷(這個很重要)基本很多公司都偏愛有實習經歷的人,而且也會過問你的實習經歷(要與職位相關的)

據我所知,百度過今年二面的都是有實習經歷的。我現在進了公司,有這方面經歷的上手快(主要是學習學的和接觸的太不一樣了),比較有優勢

2,懂html5css3尤其熟悉它們新加的一些內容(今年面試筆試不斷被問起)

3.js這個體系瀏覽器兼容性

4,23屬於基礎,不會可以表現出我願意學

其他的就差不多加分項吧,我們公司面試的時候是所有技術一起面,不怎麼分,有可能一個做測試的面試java工程師,這些都有可能。

如果是學生的話,建議不要閉門造車,其實在公司學東西特別快,尤其老程序員其實人真不錯,我們部門老大人真的很好。在他們身上學的東西比大學四年都多!

比如我沒學過node,一進公司,一說我不會,先告訴你學什麼,不會的話每天都去趁他們休息問問題,他們順便給講講,突飛猛進!!!!

真的不要想太多,你會的再多,可能也沒用!那時候我們老師還建議我學http://asp.net呢,結果嘞,完全沒有用。

程序員大部分都是要用什麼學什麼。


一句話:想得太多,做的太少

這不僅是你工作上的缺陷,也是你生活上的缺陷。

是不是被我說中了?評估一萬遍,深思一萬遍,不如自己親手做一遍。


遠在岸邊的人不知道打魚的辛苦,光說不做的人亦是如此,拿起書本,背起電腦,在IDE中學習每一個代碼帶來的靈感,並不是用WordPress來代替自己裝逼的虛偽!


樓主還是去培訓一段時間吧,培訓四個月,java基礎好那就學大數據唄,出來反正掙得多就行啦,前端的話不算比較難的語言,像你這有底子的人,簡單系統的學習下,不到畢業每月12k到20k的工資我想沒問題。當然也有可能進入你兒時夢想的地方工作。有興趣的話給你推薦。


在學校學的時候什麼都學學挺好,工作後進了公司有具體目標就知道鑽研哪些具體的東西了。


我目前也是在這個路上

急需實戰的經驗,個人自學真的是進展不快。繼續找一個實習加入實戰啊


樓主還是代碼寫的太少了閑的慌了. 想學太多,而下手做的太少.

你停下來就會覺得慌.不如嘗試走在路上.

多請教前輩,不懂的問題一定要問.


推薦閱讀:

現階段怎樣規劃未來?
運營工作幹了一年,還是在最底層,對自己失去信心怎麼辦?
離職的時候可以拒簽競業協議么?
現在,Google和豌豆莢的offer,你會選擇哪一個?
學數字媒體,什麼職業適合我?

TAG:前端開發 | JavaScript | 前端入門 | BAT百度、阿里巴巴、騰訊 | 個人職業諮詢 |