保华的Rails学习笔记

我在全栈营两个月学习情况总结

  • 我的基本情况
  • 全栈营学习方法的核心
  • 我的学习历程
  • 我的感悟
  • 总结

我的基本情况

到今天为止,在全栈营学编程刚好两个月了,复盘一下我在这两个月的学习,就当作是这两个月努力学习、努力执行的我,向两个月前做这个英明决定的我,做一个工作回报吧

我之前是做网络推广工作的,曾做过SEO与竞价,其实还接触过HTML、CSS这些,所以不能说是零基础,不过在编程方面比零基础也好不到哪里去,我是新生大学学员,参加了元学习课后,对老师的学习方法很感兴趣,一方面确实想亲身尝试下老师的学习方法,学好了后,用这个方法学其他技能,也是适用.另一方面,也确实想学学编程,坚信未来会给自己带来巨大回报

全栈营学习方法的核心

12月6号报的名,当天就开始了前三章的学习,在这里的学习方法,与传统学习编程方法完全不同,在其他地方,都是从基础学起,先学基本的语法知识,当语法知识学的扎实了才开始做项目,绝大部分的时间都分配到了语法知识的练习,做项目的时间基本很少

在全栈营,时间分配则刚好相反,绝大部分的时间都是在做项目,语法知识几乎不去刻意花时间学,都是在做项目用的过程中,慢慢学会语法的,其实这样的学习方法更符合我们学习新技能的自然规律

例如小孩学走路,都是跌跌撞撞的先走起来,哪里懂什么力学原理,懂力学原理,那是走路已经走的很好、已经会奔跑的时候,这样的类比虽然不那么恰当(小孩刚学走路时,想学力学原理也不可能啊,我们大人学新技能的时候,想学原理就能学,比小孩学走路多了选择的自由),但是却给了我们新的启发,我们学习全新的技能时,先屏蔽想学原理的冲动,回归小孩学走路的心态,先用起来再说,用是关键

例如学烹饪,我们都是先不管什么原理,先看着别人怎么做,我们照做就是了,学原理看配料比例,那是以后的事情了

老师特别强调学习的初速度,初学者,要冲进度,要培养正向的反馈,达到良性循环的状态,然后高频度的练习,为此老师精心编制了高频小套路rails101,在短时间内做的越多越好,对于完全新手,真的是一套特别好的教程

rails101就是在我们脑子里种知识点,当我们把这些未来应用频率最高的知识点都熟练掌握了,再去迁移做其他项目,上手会非常快,而且再接触语法知识的时候,也不会像开始学语法那样懵懂了,在一个全新的领域,其实所谓的理解,无非就是调用我们之前的记忆,当我们把rails101练的足够熟练的时候,其实就是把前边种的知识点都掌握牢固了,这时候再去做进阶的学习,不会像刚开始那样无从下手了

我们是用已知来解释未知,当我们的生活经验与编程没有任何关联时,学语法就相当于用未知来解释未知,对新手来说,从开始到放弃,那本来就是发生概率很高的事情了,所以一开始,练就是了,少查资料,用rails101先练几遍再说

我的学习历程

在这两个月里,其实每天我也很忙,我要工作,要陪伴家人,每天用于编程的时间,平均有3-4小时(至少早上早点起来,晚上晚点睡,这两整块时间可以静下心来学习),到今天,应该集中学习时长有230小时左右,其实也就相当于每天工作8小时,刚好工作一个月

到今天为止,我rails101做了刚好10遍,购物课做了3遍,招聘课做了3遍,初级课做了4遍

刚开始学,就严格按照老师说的来,第一遍完全复制粘贴,先看输入什么,对应会有什么样的输出,第二遍手打全部代码,培养感觉,同时要开始解决bug,第三遍到第五遍,我基本也是全部打代码、解决bug,也就是重复第二遍,基本从第6遍才开始尝试去理解,开始有冲动想去理清逻辑关系,这时候这些高频的知识点基本已在自己的脑子里了,学习语法就很有感觉了,而且也没忘记高频度练习,学习语法知识再加上高频率的rails101练习,进步非常快

到1月3号开始招聘课程的时候,rails101做了8遍了,大概的逻辑基本清楚了,高频的知识点也基本能不看教材写出来了,还是挺开心的,后边的课程基本上很顺利,今年过年没有回老家,在广州过,因此节约了很多应酬的时间,每天还能抽出3小时左右的时间练习,不管多忙,不管每天能抽出多长时间学习,重要的是每天都要练习,不要间断,至少在前期来说,不要间断,如果有时候隔一天或者两天不写代码,再去动手写的时候,都会感觉有些生疏

rails101第9、10遍是在最近几天练习的,至到第10遍的时候,才彻底搞清楚了一些逻辑关系(我不是一个有天分的人,而且感觉自己脑子笨),明白了当需要增加一个栏目时,用rails g migration就可以了,教程中的加入群组与退出群组action,是在group的controller里边实现的,只用添加model就可以了,并不用特意再加controller,这个model只是记录了谁参加了哪个群组,并不需要加相应的view页面,初级课中的投票action(upvote)也是在group里边写的,并没有添加新的controller,相反的rails101的第8节,是仅仅添加了controller,并没有添加相应的model,就可以实现把当前用户参与的所有群组以及所写的文章调用出来,搞清楚了这些关系,其实我们给项目添加分类页,就容易了,当两个table要建立关联时,table的栏目命名也是固定的,例如在group_ralationship中,它其中的一个栏目名称就是group_id(因为它要与groups这个table建立关联),如果不是group_id,就不能建立关联关系,其实每个table都有一个id栏目,在本table内,用id就可以,当与其它table关联时,另外一个table的栏目名称就要是:与之相关联栏目的名称_id(例如group_id),当搞清楚这些table之间的关系时,再调用它们之间的数据,就容易多了,可以很快写出来

为了弄清route的写法,我还特意建立了一个project,试着各种routes.rb的写法,例如member do、简单resources、resources嵌套、namespace,并用rake routes测试,最终才理清它们之间的关系,其实在这里所谓的理解,就是我把它们都背下来了,并试着用自己的理解表述出来,形成了自己独特的记忆,下次写path的时候,基本很快就能写出来

学习rails,我觉得从整体上来说,首先要会写controller,这是最基本的,controller是与model联系在一起的,当controller写好后,view页面才能调用数据,例如group_controller,它的index是@groups = Group.all,它是把groups这个table的数据赋值给变量@groups,然后在view页面(这里是index.html.erb),用each do把@groups这个变量的数据显示出来就可以了

学rails,如果能非常自如地调用数据库里边的数据并显示,我觉得已经有质的进步了,其它的,我们再补充补充前端知识,不会的功能就去谷歌搜索,基本就能用起来了,要有整体上的认识

我的感悟

回顾学习历程,聊聊我的感悟吧

关于提取练习

之前在万维刚的得到栏目中,看到过提取与存储,大概意思是说,学知识,例如学英语,我们一直往记忆里边去存,但是很少去提取,所以一直没学好,为了巩固记忆,必须要加强提取,包括提取强度与提取频率,提取的越多,提取的频率越频繁,我们就越能掌握牢固
在全栈营,老师也特别强调提取练习的好处,而且把提取原理应用到实际的学习中,例如教别人学习,写orid日志,线下meetup,做自己项目,都是非常好的提取练习方法
我们大脑在记忆的时候,并不是一大整块去记忆的,而是一小块一小块的重新整合后再去记忆的,而提取练习,就是要加深这样的一小块一小块的记忆痕迹

例如我们学习了知识点A、B、C、D、E,提取练习,就相当于是我们重新整合了知识点,例知识点A与B形成了新的记忆AB,知识点B与D形成了新的记忆BD,B与D和E形成了新的记忆点BDE......当我们在slack上边回答问题时,可能我们的解答是整合了知识点ABC形成的答案,我们在做项目的某个功能时,是整合了知识点ACE所做出来的结果,当你提取的越多、越频繁时,当然掌握的越多、越牢固

当然,不断的提取练习,再加上比较系统的学习,效果会更好

关于时间管理

参加线上全栈的同学,相信大多数都不是全职学的,大家用于学编程的时间都非常有限,这是客观前提条件,我们必须要面对,所以琢磨如何更加高效的学习、如何保护自己的注意力,是理所当然要解决的首要问题了
我的集中学习时间一般是在早上与晚上,早上早点起来,可以学习2小时,早上没有人打扰,效率还不错,晚上当家人睡下时,也可以静下心来学习,一天的中间,会不由自主的去思考、去回忆学习过程中遇到的问题,遇到一些不理解的(其实是没记住的),就多记几遍,例如在写flash的两个文件时,打代码打了好多遍还是没记住,于是就特意写一篇博客文章把这些没记住的整理进去,文章置顶,经常去看,我还把它拍照放在自己手机里,有时候出去玩的时候,时不时的会去刻意看一下,时间长了,自然就记住了,当然一些重要的没记住的,甚至可以放在手机做屏幕、放在自己的电脑做屏幕,时间长,自己形成肌肉记忆,当我们坐公交车、地铁时,也可以记一记,或者拍照放在自己手机里,或者直接上我们的教程网站,最近时间真的太紧,有时候去买菜的路上,也会听一会得到或者新生大学里边的音频学习
想说的是,当一件事在你心里真正非常重要时,你总能找出时间去做的,向内求助自己,向内挖,你总是能够想出办法的,即使你再忙,你总能想出关心你女朋友(或者男朋友)的点子,不是吗?

关于写技术博客

刚开始学习的时候,可以多写一些bug记录类的,不懂的就先背下来,用起来再说,做的遍数多了,有些心得了,就写一些总结性的,这不但是很好的提取练习,还可以锻炼表达能力,才学习的前几周,其实我是没有好好记笔记的,那时候时间很紧,感觉写博客日记的时间可以拿来做练习,后来同样的错误犯过几次后,才觉得真的像老师说的那样,要写出错日记,这样下次再犯的机率会小很多,于是我才开始写出错日记,后来练习的时间长了,感觉能摸索出一些规律了,就开始写一些总结性的日记

总结

时间过的好快,转眼两个月过去了,感觉收获满满,也让我亲身体会到了这个学习方法的神奇,这对于以后学习其他技能,都是有很大的帮助,希望自己在2017年有更大的收获,祝愿自己!欢迎关注我的微信公众号:baohua-xuexi