前端學習的那些往事


  上次如何培育新人一文中也提到了自己學習前端的一些事兒,這兩天幾個新人問我當初是如何逐步學習前端的,因為以前也沒做過什么記錄,時間雖不長,記憶卻開始模糊了,趁着還有些感覺,把這些往事都寫下來。

  之前看聶微東大哥的文章,有一篇說到了他學習前端的經歷(說說我的web前端之路,分享些前端的好書),主要是推薦幾本前端學習的書籍,童鞋們可以去瞅一瞅。我想分享的並不是這些書籍,而是學習前端技術的一些經歷,當然,也包括一些書籍。

 

初識前端

  第一次和前端打交道,是大一的時候。那時我的一個舍友加入了學校很有名譽的一個技術團隊——聯創團隊,在design組做美工設計和簡單的網頁開發。一天晚上,宿舍熄燈了,他從團隊趕回來,拿着筆記本繼續寫着代碼,我湊過去看了看,覺得好神奇,他竟然可以把一張圖片變成網頁!那個時候對前端還沒有太大的感覺,加上舍友經常呆在團隊,也很少回來,所以這種隱約的神奇感一直保留到大二。

  一次,我吃完午飯,在學校操場附近溜達,看見韻苑路口搭起了幾頂帳篷,一群人圍在一起很hign的樣子。於是,我也湊了過去...看着那群人正在玩XBox,突然覺得她應該是一個很有愛的團隊,於是寫了申請書,就這樣我加入了網絡應用研發中心(Network Application Development Center, NADC),那年我大二。

第一次新人任務,我認識了前端。

  我是大二加入NADC的,那時我是個新人,很新很新的人,連HTMLCSS是個什么東西我都不知道。我也不知道自己是否喜歡前端這塊,后來團隊給新人們布置了一些練習任務,任務內容是從四張psd圖中任選一張,將其制作成HTML頁面。任務到手,我十分迷茫,根本不知道該做哪些東西,記得那個星期我是常駐團隊辦公室。

  學長讓我先看看 w3school 上HTML和CSS的相關內容,我埋着頭看了兩天,記得那兩天,我坐着的時候是對着電腦,躺着的時候是拿着手機,一直在看網址上的內容,覺得很神奇,很好玩。大概是第三天開始,我動手寫起了代碼,代碼寫了差不多四天,沒怎么休息,遇到了很多奇怪的問題。一個星期之后,我完成了人生的第一個頁面戳我

 

了解前端

  很多人問我是做什么的,我回答,前端,大多數人聽着會一頭霧水,你要問我前端是什么,我現在還是不好給出一個明確的回答。前端要學的東西太多了,在給新人的第一培訓中,我說了這些:

  但是前端遠不止這些東西,在這里我想說說看書的重要性。

  我看過很多書,上面聶微東大哥說的書我在大三的時候就讀過好幾遍了,尤其是《javascript權威指南》,這本書第四版我看過四遍,第五版看過兩遍,淘寶前端團隊的第六版我看過一遍,現在還在讀。我讀書的目的是為了去了解整個前端以及他所用到的技術,這個很重要。我們學校有兩個圖書館,我住在東邊,所以經常會跑到東校區圖書館借閱一些書籍,去一趟圖書館就會帶回來七八本書,兩年下來,圖書館第四層前端相關的一百多本書籍基本被我一覽無余,我不敢說自己對看到的那些知識都掌握了,但是我至少知道整個前端的發展歷程,也學會了前端編碼的基本技能。

  一本書寫下來,作者需要花很大的功夫去查閱文獻,即便寫得再爛,也是一個人思想的精華,也有很多值得借鑒的地方,所有開始你的閱覽群書之旅吧!這是我在圖書館看過的部分書籍的書單豆瓣讀書,這里只是一部分,后來看過的書名也都忘記了,沒有繼續補上。

讀書絕不是唯一了解前端的途徑。因為這個網絡信息太多太復雜,不好把握,如果沒有目標地去搜索,很有得到令人滿意的結果。我們可以先從書中找到自己的興趣,再去網絡上學習,這樣會更加有效率。

 

社區交流

  學習CSS,我印象最深的就是不停的寫,不知道寫了多少個DEMO,也記不清寫了多少個網站的頁面(包括學校的,班級的,外面小公司的,仿站的,學習任務中的...),每次都寫到吐,每次都是起床開始寫、晚上熄燈了還在寫,好多次都是熬到第二天七八點。或許你會我說太拼命,但我覺得成長是伴隨着痛苦的!這些任務很多情況下都是團隊主管安排給我的,我這個人好勝心和展示欲比較強,不管他給我的是一個頁面還是一個網站的所有頁面,我都會在三天之內完成,然后交給他,讓他對我做一些評價,提一些學習意見,然后重構代碼,然后提交給他看,直到他滿意為止。

  那段時間基本上沒有白天黑夜,總感覺一天24個小時太少,現在想來,我收獲的真是太多了!現在看到一個頁面,掃一眼,基本知道整個結構,該用哪些標簽哪些屬性,也約摸着可以比較准確的說出完成這個頁面要多長時間。這是我學習CSS的經歷。

  學習Javascript就不像上面那樣通過無數的練習提高技能,JS的內容太多,覆蓋面太廣,有時候一個bug可以讓你調試幾天(對初學者)。看過很多相關的JS書籍之后,對一些基本的東西有了比較全面的了解,但是可以實踐的場景卻不是很多,至少不能發揮所學,JS涉及的面太廣。也不知道是什么時候,我喜歡上了幫人解決問題,去百度貼吧,百度知道,論壇,社區,QQ群等等,每天多進程的去找問題。

  幫人解決問題是一件非常愉快而且有收益的事情,看到了自己會的東西,把想法說出來,說給大家聽,比你“牛B”的人會指出你回答中的錯誤,這是已經互動學習。其實更多的情況是你對別人提出的問題也想不出解決方案,這個時候也正是一次學習的大好機會,我一般是這樣做的:搜索相關內容,閱讀別人寫的博客內容(你想到的問題,網絡上已經有人想到過,並且已經給出了解答,這也是知識共享的好處),如果在閱讀時遇到了不懂的生詞或者技術,繼續去搜索,要把一個問題涉及到的周邊問題都搞清楚,這才算是深入學習!

解答問題的過程中,你還可以去結實一些朋友,有些朋友的技術水平已經相當高了,比如@張鑫旭薛端陽@玉伯等等,你可以去結實他們,向他們請教問題,跟他們去交流。

 

吃透一個知識點

  上面也說了怎么去解決一個問題,如何吃透一個知識點,這個也需要拿出來談一談。有些網站的內容是比較有權威性質的,比如http://www.whatwg.org/https://developer.mozilla.org/http://www.w3.org/等,如果你對這些網站比較熟悉而且英文水平還行的話,建議直接去查找你要的答案,一定可以找到(不過很難找)。

  要弄清楚這個知識點包含哪些關鍵詞,這樣在網絡上搜到的結果才是靠譜的,很多人真的不會搜索!大學有一門課程叫做文件情報檢索,感興趣的童鞋可以去選修這門課,我這里也有這門課程的相關PPT,可以給我郵件(barret.china@gmail.com)。

 

博客

  我寫了兩年博客了,剛開始主要是摘錄、收藏、轉載,看到自己覺得不錯的東西,拿過來當做是筆記。最開始我是在Qzone上寫,后來,發現有點傻,Qzone根本不是寫博客的地兒,后來改到了點點網,再接着是博客園,再接着是github,以后可能還會換。為什么會有這么一個轉變,阮一峰老師一篇文章說了這樣的話:

喜歡寫Blog的人,會經歷三個階段。

- 第一階段,剛接觸Blog,覺得很新鮮,試着選擇一個免費空間來寫。
- 第二階段,發現免費空間限制太多,就自己購買域名和空間,搭建獨立博客。
- 第三階段,覺得獨立博客的管理太麻煩,最好在保留控制權的前提下,讓別人來管,自己只負責寫文章。

 喜歡分享的人都會找到一種途徑去分享自己覺得不錯的東西,博客一種很直觀的方式。我曾經寫過的東西:

我現在就是通過博客在分享自己的東西,網絡上成千上萬的人都在干同樣的事情,關於為什么要寫技術博客如何寫技術博客,很多前輩們都寫了相關的文章,可以去看一看。

 

瞄准公司

  對學生來說,學技術只是一種興趣。我一直對團隊新成員灌輸這樣的思想,要把你們的技術發展成一門特長,興趣停留的層次太低了,你很難接觸到你所熱衷的東西的最有趣的的部分。但對於那些想從事這方面工作的人來說,你不僅要把這個興趣發展為特長,更重要的是發展成你的職業特長,全方位地了解這個行業。

  因為自己團隊很多學長學姐都進了很多不錯的互聯網大公司,所以最開始我就給自己定下了一個目標,我也要去這些大公司!(有點像高三時候的性格,我也要進好學校!) 所以當自己對前端有一定程度的了解之后,我開始去網上查看各公司對人才的招聘要求。剛從百度上面扒過來的(Web前端研發工程師【校招】):

工作職責:

- 百度各產品Web前端研發 - 百度各產品易用性改進和界面技術優化 - Web前沿技術研究和新技術調研

職位要求:

- 精通JavaScript、Ajax等Web開發技術
- 精通HTML/XHTML、CSS等網頁制作技術,熟悉頁面架構和布局
- 熟悉W3C標准,對表現與數據分離、Web語義化等有深刻理解
- 對互聯網產品和Web技術有強烈興趣,有優秀的學習能力和強烈的進取心
- 具有良好的溝通能力和團隊合作精神、優秀的分析問題和解決問題的能力

具有以下能力者優先考慮:

- 具有Mobile WEB/WAP、HTML5/CSS3、nodejs、Flash開發經驗
- 精通一種模板語言(Smarty、Velocity、Django等)
- 熟悉Linux平台,掌握一種后端開發語言(PHP/Java/C/C++/python等)
- 有前端性能優化經驗 - 具有一定的軟件工程意識,對數據結構和算法設計有充分理解

  對着這些要求,睜大眼睛看看自己,還缺那些,那些還做的不夠,我相信你很快就有了前進的方向了!我以前也是對着這些點學習的,所以很容易得到那些公司的認可。后來也去看了下facebook的一些要求(Software Engineer- Front End):

Are you passionate about building UI to help those around you be more effective? What about building UI that your peers use daily and can1t wait for your next feature to be released? Facebook is seeking an experienced Front End Engineer to build the next generation UI for our infrastructure layer, to control hundreds of thousands of services and help our engineers digest the Terabytes of stored data. This is a full-time position based in our office in Palo Alto.

Responsibilities

- Design and build user interface and data visualization for engineers to control and monitor services and servers
- Code primarily in PHP, JavaScript and CSS
- Understand engineer requests and come up with designs for the user workflow
- Participate in design and code reviews
- Interact with other team members to incorporate their innovations and vice versa

Requirements

- Over 3+ year experience with PHP and JavaScript
- Experience with web technologies (HTML/CSS/JS)
- 2+ years of building interactive web applications
- Passion for elegant and intuitive user interfaces
- BS or MS degree in Computer Science or a related technical field

  這些東西不僅是給你學習的方向,還給你學習的東西,對照着可以看到你離公司的門檻還有多少_^

 

細節和態度

  有段時間,自己很浮躁,覺得很多東西都會了。書看多了,你會發現很多書籍的內容都是差不多的,也沒有太多吸引人的地方,於是怎么也看不下去了,走馬觀花,稍微撇兩眼就把書扔了。這種狀態我很可以理解!因為我也是經常處於這種狀態。

  有些東西需要去平品味,去思考,以前的學習幾乎就是把知識強硬灌輸到腦海中,過了一段時間快要忘記了,再去看一遍,多看幾遍印象就什么,但是這樣學習方式是很痛苦的,而且效率也很低。現在的話,我會想,為什么他要這樣設計,這樣設計是否欠妥,是不是還有更優的解決方案... 嘗試着去否定所謂的權威,這些理念都是人提出來的,誰都不能保證一個人的邏輯思維是十分完善和全面的,我們也是人,對他們提出質疑這是完全合理的,不要有任何覺得不妥的地方!

 

前端資訊

  說說關注互聯網的重要性。前面說我看過很多書,就目前來看,我對前端的認識依然是遠遠不夠的,你要知道,一本稍微有內容的優秀的書籍寫出來至少要一到兩年時間,而且搞技術的人也不會全身心投入到著作中,他們也需要工作。所以你在書中,即便是最新出版的書中,看到的技術不會特別新了,至少落后了兩到三年時間。

看老外們寫的博客,每每看到博客日期的時候,都不禁感嘆,我沒見過的東西,人家在三年前就已經很熟練了。這就是我們跟那些技術先驅的差距,所以如果要了解這個行業的動向,一定要多關注前端資訊!

 

前端構架

  很多公司都在研究一套屬於自己的前端集成解決方案,如百度的FIS,阿里的seajs等,也有很多牛人在研究自己的前端庫、框架,如司徒正美的avalon,老趙的wind.js,cujojs的when.js等等,看看這些人的博客,也會感嘆,人家兩三年前也開始搞起來了,代碼寫的也是相當出色的!

說這些東西,是為了說明,前端方面水很深,如果發現自己沒啥事干了,這些東西一定會讓你有所觸動,也算是學到一定水平之后會主動去學習的東西。

 

小結

  敲了一下午,手都敲疼了。

  本文就當是對自己的一個自我介紹吧,談了下我對前端學習的一些感受,每次面試都會被問到是如何學習前端的,回答多了感覺也忒無聊的- -

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM