(转载)About me [my way]
文章摘自 叶落为重生 的博文:http://www.cnblogs.com/hongru/archive/2013/02/08/2909449.html
About me [my way]
就要除夕了。假日的到来,心情瞬间就闲适了下来。早早上了床,看看电脑还有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之类的,或者再业务架构,项目深度优化上有所建树。
我相信,会有一个公正而深刻的认识来为我们总结的:那时,我们这一代独有的奋斗、思索、烙印和选择才会显露其意义。 ——《北方的河》