今年 2 月初,我 和 Daniel,Terry,Kevin 在 Teahour.FM 上聊了一期 Ruby 与 Rails 的学习经历和对初学者的学习建议 How to Learn Ruby and Rails。而这居然成为了目前 Teahour 这么多期里面最受欢迎的一期。Rails 4 发布在即,看上去 Rails 已经愈来愈不适合初学者学习。因此对于初学者而言,了解正确的学习方式无痛上路显得就格外重要。html
我在 06 年末开始接触 Rails 的时候,Rails 版本仍是 1.2,Ruby 版本 1.8.6。那时我主要是一个后端开发程序员,不懂 Web 开发,不会 HTML,CSS,JS。可是那时的 Rails 学习起来比较简单,特别是搭配着 Agile Web Development With Rails (2nd Edition),跟着例子走基本就了解了 Rails 的方方面面。再跟本身的已知的知识体系作结合,也算很是平滑的学习曲线。前端
而现在,你在学习 Rails 的时候,你会发现不少额外的东西,好比 CoffeeScript,Asset Pipeline。而 Rails 4 不少新特性如 Cache Digest (Russion-Doll caching), TuoboLinks,前端倾斜更是会让新手直接晕掉。咱们如今已经听到愈来愈多的新手抱怨 Rails 难学了。DHH 曾经发过一篇颇有名的博文 Rails is omakase,中文翻译版见这里。在 DHH 和 Rails Core Team 眼里,Rails 框架但愿提供的是他们认为的 Web 开发的最佳实践,而这个最佳实践,必然跟他们过去这么多年的开发经历相关。在我看来,基本上 Rails 的框架演变过程跟 Web 开发技术的演变过程是一致的。可是对于初学者而言,在没有经历过足够的痛的前提下,要理解不少改进就成了一件不容易的事情。特别是当目前 Web 开发开始向前端倾斜的时候,对开发人员的素质要求愈来愈高,全能化,全栈化,摆在初学者面前的是个极大的挑战。程序员
可是,我仍是认为,Rails 是一个适合初学者学习的 Web 开发框架,只是在学习方法上须要有所改变。web
越思考这个问题,我越赞成 Kevin 在第二期介绍的温室培养模式。他尽可能会让初学者在温室环境中成长,也就是让他们了解最朴素的东西,而不用过多追求一些细节,以最快速度看到一个站点的建造过程。甚至 Ruby 语言的不少细节,元编程之类,都不须要在一开始了解。Rails 之于其余框架更适合初学者的缘由在于它尽管表明着目前 Web 开发的先进浪潮,可是都提供了一个默认值。而这个默认值很是关键,它能让初学者免于选择也不用关心细节,几分钟就能够开始上手练习。这种方式会把一些开发上的痛延缓到了后期发生,也就是一些初学者在向中级水平发展时会经历的一段痛苦时光,可是这点偏偏在我认为是对初学者友好的。编程
从我本身的经历而言,我在键盘上敲点东西而后最后在浏览器里面看到真实效果,得到的成就感是最大的,也会让我本身更有动力去学习。这也是我认为 Agile Web Development With Rails (AWDWR) 这本书特别适合初学者学习 Rails 的缘由,由于它让你关注如何去构建一个站点,其次让你关注如何用 Rails 去构建,内容按部就班,不少 Rails 中相对高级的特性都放到了最后去介绍,而这些特性当你有了必定基础之后其实也就并非那么的难了。美中不足的是,AWDWR 这本书中文版只出到第 2 版,跟最新的 Rails 版本脱节过久,而啃英文书对大多数初学者来讲都不是一件容易的事情。虽然学好英语对于学好 Rails 是一个基本条件,可是我仍是但愿初学者能在一开始学习的时候少由于语言问题而多碰壁。这个问题目前来看并无很好的解,不过但愿 Terry 和我能在将来改善一下现状,若是时间上容许的话,咱们很但愿能原创一本面向初学者的中文书。segmentfault
偷偷的说一下,这里有一段我未经 Terry 许可偷偷录的一段关于初学者应该如何学习 Rails 的讨论,很是值得你们收听,:)后端
初学者浏览器
Agile Web Development With Rails - 经过一个实例教会你如何使用 Rails 制做网站。举手投足之间,其实教会了读者不少有趣的实践和思想。很是生动且有趣。这本书的第二版是最为经典的。而且也有中文版,翻译也算不错。可是的确第二版对于如今的 Rails 版本已经太老,不适合新手阅读了。ruby
Programming Ruby - 不少人说学 Rails 你得先啃这本 Ruby 宝典,再去学 Rails。其实我以为否则,这本书能够做为阅读 Agile Web Development With Rails 时的工具书,随时查阅不懂的 Ruby 小知识。当那本书看完后,能够选择再细读此书,这样不少知识因为先获得了运用,因此掌握会更加牢固。app
进阶
高级
最后我要强调的是,学习编程最好的方法永远是 Code!Code!Code!。敲代码永远比只看书来的效果好,勤加练习才是王道。