就要除夕了。假日的到來,心情瞬間就閑適了下來。早早上了床,看看電腦還有30%的電,想到一些事情,順帶紀錄一下吧。
今年堅持上班到了除夕的前一天,爸媽來工作的城市陪我過年了。感謝他們。前幾天就已經看帖子有說仍在上班的人都是屌絲,我今天自嘲一下,說我這種冒雪上班到舊年最后一天的人不是極品屌絲?開個玩笑 :)
今天有些觸動,就給大家說下我的學習經歷吧。可能對好多人來說并沒有什么價值,我主要想要表達的意思是“不要太急,任何一個人都是從不懂到懂的。只要堅持做下去就好”。這句話給園子里不夠自信的朋友們,也說給我自己。
所以,title就定個 About me,about my way。
我是10年本科畢業的,到如今工作將近3年。從一開始做的就是web 前端的方向。大學學的專業跟計算機有一點點關系,但是跟互聯網幾乎不沾邊。所以幾乎是以完全不對口專業的姿態開始了 web前端的工作。
正如我所說,任何人,都是從不懂開始的。我一開始確實是不折不扣的菜鳥。菜到什么程度,舉個例子,html和css寫一個活動推廣的頁面,一整天,還并沒有搞定;javascript,可能連原生對象也數不全。所以以這樣的姿態開始學習。
在工作的前幾個月里,我是真的有一段日子,周末兩天4~5罐泡面宅家里,泡前端論壇,看別人的代碼片段(那時候還不具備看一個項目架構的能力),嘗試按別人的思路實現同樣的東西,再轉換成自己的思路再實現一遍。不懂的地方google,遇到的想不通的問題再google。
這樣的日子堅持了四五個月吧。現在想想,也應該算辛苦的,辛苦不在于花的時間,而在于心累,在于你要面對別人的壓力,做項目的壓力。等等。但是很開心我堅持下來了,在那默默無聞的四五個月里,我慢慢從一個看熱鬧的外行轉變成了一個可以稍微看出點門道的內行。
于是,以應屆生畢業的姿態工作了半年,記得轉正的時候有同事用“一日千里”,“士別三日,當刮目相看”這樣的字眼來形容我的進步。在我職業生涯開始的階段,通過自己的努力,終于開始獲得了一些別人的肯定。
不過那個時候,我的能力也僅僅在于開始能用原生的js代碼編寫一些常用的組件。可以從我在cnblogs開博的前幾篇文章里可以看出。
cnblogs的博客是在10年9月份開始的。也就是我上面說的算新手入行的階段開始的。
我的學習歷程和重點從博文中基本也能看出大致路徑。
[前端常用組件]-[css中布局中各種常用的方式和坑的積累]-[javascript語言底層的認知]-[javascript基礎庫]后來因為興趣的轉移,花了很長一段時間去做了動畫相關的工作。從最基本的緩動,到dom的各種動畫,實用的和不實用的。期間自然也就學習了一些簡單的運動學相關的知識。也積累了不少代碼片段。
再往后,開始順著動畫,接觸了一些Html5相關的東東,從css3,canvas開始,做了不少嘗試。大多的平日的test cases 都可以在?https://github.com/hongru/hongru.github.com 這里面找到。
正因為對于H5的各種新features的日漸熟悉,后面自然而然就過渡到做 web app相關的內容,在這個期間還順帶充實了下server端的不少東西,比如php,python之類的東東,包括nodejs之類的,搭個簡單的blog木有什么問題。
pc端的web app 做了大概一年的時間,在今年9月份加入mobile團隊,開始做基于mobile端的web app。到現在為止,也有小半年的時間,所以才有了上一篇博文。
我的學習路徑大致如此。并沒有什么特別,到如今,我依舊覺得在很多方向我仍然是菜鳥。可以去探究的方向太多。
我給一些在學習前端的朋友一些個人的經驗和建議,不一定適合,也不一定對,僅做個人參考:
1)css并沒有難懂的地方,關鍵在于積累。多去了解為什么要這么寫css。比如幾個很重要的css2.0中的屬性,position,display,float,overflow 之類的,它們常用的值和應用場景,為什么要這么用,這么去組合,多思考對于攻克布局有莫大的好處。
2)學javascript可以嘗試從一些簡單的可實現的東西開始,比如怎么操縱一個dom元素,改變它的各種東西,讓它動起來。然后過渡到寫組件。我這里建議一定開始要從學習原生的javascript語言開始。當你開始嘗試寫組件的時候,就一定要開始注意代碼的結構了。養成好的編碼習慣非常重要,會極大的推動后續的學習進度。所以這個階段建議找 國內外用原生js代碼編寫的 優秀的,高代碼質量的js組件做參考。 思考為什么別人要這么寫,這么去組織代碼。
3)對js有一定認知之后,一定要深入系統的去了解語言底層,這時候建議買好的書系統學習,象什么犀牛書之類的,我就不多說了。了解語言底層的邏輯很重要。
4)當過了第三階段之后,我建議可以嘗試著閱讀國內外優秀的js底層基礎庫的源碼,并嘗試自己實現一套。不用奔著想“造輪子”有多少人用的想法。而是實現這個架構和其中的代碼細節對于自己的學習非常重要。比如我自己也有一套粗糙的js基礎庫?https://github.com/hongru/Leta ,但我并沒打算將它應用出去,因為我它并沒那么優秀,對我的意義在于實現它讓我了解了國內外主流js基礎框架的實現思路和大體架構。同時又是一份沉淀,當我某時想用某段代碼時,直接找出來就能用。
5)在這個階段,我強烈建議一定要及時補充后端語言能力和思路,了解別的語言,別的框架的架構和api實現邏輯。相互輔助,因為這時候你學其他的語言,入門也都變的容易,同時別的語言又能反過來加深對當前知識的理解。
6)再往下就可以根據自己的興趣方向或者工作需求繼續學習了。比如可以嘗試繼續基礎技術,做基礎工具,架構,平臺。或者根據自己興趣專注一個或幾個方向,比如canvas,webgl之類的,或者再業務架構,項目深度優化上有所建樹。
?
好了,電腦提示沒電了,差不多也該睡了。洗洗晚安。