2009年8月3日,星期一

我如何学习 Ruby 和 Rails?

由Matt Aimonetti发布

这是我经常被问到的一个问题。

我应该从哪里开始?我应该做什么?我怎样才能成为一名更优秀的 Ruby/Rails 开发者等等……(更常见的问题)

我希望这些问题能有一个“简单/正确”的答案。就像:“读完这本书,你就会成为一名出色的开发者”。不幸的是,事情并没有那么简单。我们每个人都不同,学习方式也不同,而且我们来自不同的背景。

所以,我决定不告诉你们我认为最好的学习方法,而是去问社区。以下是我收到的一些回复的快速汇总。

社区怎么说

你是如何学习 Ruby 和/或 Rails 的?

  • DHH DHH:我通过愤怒地编程来学习 Ruby。尝试制作一些真实的东西。而不仅仅是玩具程序。
  • David Black David Black:我通过《Ruby Pickaxe》和大量的练习,以及在 ruby-talk 上阅读和回答问题来学习 Ruby。
  • Evan Phoenix Evan Phoenix:边写代码边阅读代码。
  • Yehuda Katz Yehuda Katz:我尝试了不可能的困难的事情来强迫自己学习。
  • Laurent Sansonetti Laurent Sansonetti:我通过《Ruby Pickaxe》、阅读 ruby-talk 上的帖子,然后阅读 MRI 的源代码来学习 Ruby。
  • Ninh Bui Ninh Bui:我曾经是个 Java 的狂热粉丝,写 Struts + J2EE 企业应用。Hongli 在一个周末强迫我看 Ruby,我学会了 Ruby 的基础。然后我通过谷歌搜索、阅读书籍和源代码来学习 Rails。
  • Tim Connor Tim Connor:Rails 社区痴迷于写博客的习惯可能是最大的帮助。
  • Lar Van Der Jagt Lar Van Der Jagt:Ryan Bates 的 Railscasts 绝对是。一旦我知道足够多可以深入研究,我就会学习 Rails 的方式。我希望我能做到的就是与专家一起工作!
  • Arun Gupta Arun Gupta:《Rails 指南》和《Agile Development with Rails》这本书。
  • Geoffrey Grosenbach Geoffrey Grosenbach:在我读了几篇教程后,我开始花了几个小时阅读 API 文档。即使你不能理解所有内容,这也是熟悉可用功能的绝佳方式。
  • Nate Todd Nate Todd:我先用几个 CakePHP 应用学习了 MVC。它帮助我用我熟悉的语言学习了最佳实践。
  • Chris Wanstrath Chris Wanstrath:我通过编写应用和阅读框架的源代码来学习 Ruby on Rails。

你有什么建议?

  • Bob Martens:以某种方式参与到社区中。他们比你懂得多;)
  • Ismael Celis:理解 MVC 各部分之间的关系。许多来到 Rails 的人不知道什么是设计模式。
  • @jeromegn:我认为学习 RoR 的最佳技巧就是尝试构建东西。Rails 文档和并行学习 Ruby 对我帮助最大。
  • @johnbender:了解为什么实例变量在模板中可用等等。基本上,我最初的建议是了解 Ruby 的基础知识。
  • @ryandotsmith:作家需要阅读。在 GitHub 上找到流行的项目(例如 Radiant),并研究它们的规格。
  • Sunil Karkera:当我开始时,理解 Rails 中的 MVC 是对我最重要的。
  • Luke Burton:显示用少量代码实现令人印象深刻内容的简单屏幕录像是一个很好的开始。
  • DHH:选择一个真正的项目,然后愤怒地编程。这就是我推荐学习任何语言(包括 Rails 和 Ruby)的方式。
  • Anthony Green:接受有一个“Rails Way”,你需要学会它。什么对我的帮助最大?——社区。
  • Kent Fenwick:通过做一个真正的项目来学习。选择你想要构建的东西,然后慢慢地把它一点一点地完成。
  • Trevor Turk:通过阅读和编写代码来学习……这意味着你应该尝试构建你想要的东西,而不是盲目地跟着教程做……
  • Ryan Bates:Rails 由许多技术组成(HTML、CSS、Ruby、OOP、SQL 等)。如果你在 Rails 上遇到困难,请专注于最薄弱的部分。
  • Geoffrey Grosenbach:其中有很多例子可以帮助新开发者感受 Rails 的哲学。许多人已经从 PeepCode 的 “Rails From Scratch”系列中学习。
  • @eifon:对 MVC 的良好掌握是无价的,并且在开始之前了解一些 Ruby 也很重要。
  • John Yerhot:不要害怕提问,并利用支持渠道——IRC、邮件列表、Rails Bridge 等……
  • Roy Wright:使用与你正在使用的书中的 Rails 版本相同的版本。
  • @brianthecoder:阅读别人的代码。
  • Ninh Bui:我通过与很多人交流来学习,我绝对可以推荐这种方式。
  • Chris Wanstrath:停止向别人寻求建议,开始编写代码。

意见不同,但答案很有趣。我试图汇总一些我认为帮助了我和我交谈过的人的优秀资源。

从未听说过 Rails 或 Ruby,这是什么?

newbie

首先观看许多关于 Rails屏幕录像/演示。Rails 和使用 Rails 开发的软件是用一种叫做 Ruby 的编程语言编写的。如果你是软件开发新手,你可以快速学习 Ruby,我推荐一本很棒的书,叫做 《Learn to program》 by Chris Pine。Ruby 是一种非常优雅且直观的语言,你可以快速掌握它,并在多年的学习中发现许多新技巧。但是,不要指望安装了 Rails 之后,你就能得到一个 Ruby 写的 Drupal 克隆。Rails 是一个 Web 框架,换句话说,它是一个帮助你快速有效地编写自己的 Web 应用程序的工具。

提示:Ruby 网站有很多入门信息和资源。

我曾写过 PHP/Perl/脚本,但我对 MVC 或面向对象开发一无所知:

这 realmente 取决于你的学习方式。你是“如何”型还是“为什么”型的人?“如何”型的人会通过被展示如何做某事来学习,然后模仿并从中学习。“为什么”型的人需要理解事情为何要以某种方式完成,以便他们能将所学知识应用于其他挑战。

building

好消息是,Rails 使用许多约定,如果你能掌握它们,你将很快完成工作并从中获得成就感。这对“如何”型人来说很棒,但“为什么”型人可能需要更有耐心,在完全理解一切之前开始玩弄框架。

“如何”型的人绝对应该观看 Ryan Bates 出色的 Railscasts 并阅读 Rails 指南。“为什么”型的人可能想阅读 《Ruby Programming Language》《The Well-Grounded Rubyist, aka Ruby for Rails 2nd edition》

你也应该查看 Rails Wiki 并贡献可能缺失的信息。(如果你遇到的问题在 Wiki 中没有涵盖/讨论,尝试解决它,然后发布你的解决方案。如果你以后遇到同样的问题,你就可以快速找到你是如何解决它的。通过贡献,你也将节省其他开发者的时间。)

开始阅读与 Ruby/Rails 相关的博客,订阅 RubyInside 的 RSS 源,并访问你当地的 Ruby 群组。

提示:开始写博客并记录你学到的东西。这将帮助你和你面临同样挑战的其他人。

我开始写一个 Rails 应用,但我感觉受限于我对框架和语言的知识。

这是一个正常阶段,不要放弃!这里有几篇很棒的文章:《The Ruby Way》和《The Rails Way》。《The Ruby Way》主要面向“为什么”型的人,《The Rails Way》主要面向“如何”型的人。我建议都读。不要犹豫提问,使用谷歌,查看 Twitter、博客评论、邮件列表。尝试找到一些本地的 Rubyist 分享知识。选择一个你想更深入了解的主题,准备一个演讲给你的朋友/本地 Ruby 群组,或者写一篇关于它的博客文章。有一点可以肯定,不要感到羞耻或气馁。坚持下去,这是值得的(或者暂时离开,放松一下,然后回来再试一次)。

hacking

提高你的 Ruby/Rails 技能的一个好方法是看别人的代码。查看 GitHub,看看人们是如何解决你面临的同样问题的。你也可以参加 Ruby/Rails 培训,世界上有很多公司提供课程。RailsBridge 正在努力接触那些有志成为更好开发者的朋友,请查看他们的网站。

提示:当我想查找关于一个方法/类的文档时,我经常使用 apiDock

我写了一个 Rails 应用,我采纳并理解了 Rails 的约定,并且可以舒适地编写新应用。

party dog

恭喜你,你应该为你取得的成就感到自豪!但是不要停止学习!你写了应用程序的测试吗?你的测试真的在测试你的应用程序,还是仅仅为了让你感觉更好(例如:更改你的代码,你的测试是否仍然通过?它们不应该通过吗?)?你使用插件吗?你看过它们的代码吗?你理解它们是如何工作的吗?你能写自己的插件吗?那么 Ruby gem 呢?另外,你的 Javascript 技能如何?CSS 和 DBA 呢?专注于你的弱点。

我强烈建议你在此时贡献代码。向 GitHub 上的许多项目,甚至 Rails 本身提交补丁,你会学到很多!

提示:查看 Gregg Pollack 的 Scaling Rails 系列

我写了几个 Rails 应用,甚至写了一个插件/gem。

这很棒,到目前为止,你可能对 Rails 和 Ruby 非常熟悉了。你可能想更深入地研究一下。也许可以看看如何明智地使用元编程和/或如何编写 C/FFI 扩展。为什么不看看 Ruby 的源代码来了解事物是如何真正工作的呢?

strength

现在也可能是时候开始学习新语言,看看其他社区是如何做事的。看看其他框架,尝试理解人们是如何以及为什么选择其他约定/方式的。玩玩 PythonJavaScalaClojureObjective-COcamlScheme 或任何你觉得有趣的语言。你不必精通其他语言,但你应该尝试理解每种方法背后的推理,并了解其优缺点。这真的会提高你的 Ruby 技能,并拓宽你的视野。

提示:准备几个演讲,并将提案发送给各种会议。(不要局限于 Ruby 会议)

我像没有人一样了解 Ruby 和 Rails,我甚至能背出 Rails 和 MRI 的源代码。(随便问一个 LOC)

那么我希望你正在帮助 Ruby 1.9 的努力,为其他实现(IronRubyJRubyMacRubyRubinius)贡献代码,并帮助 Rails 3 :)


如果你正在阅读这篇文章,你可能属于上述类别之一。结对编程和辅导是学习的好方法,这都是关于业力。帮助他人将帮助你成为一名更好的开发者。随时在评论中留下你的建议、链接和信息。