这是我经常被问到的一个问题。
我应该从哪里开始?我应该做什么?我怎样才能成为一名更优秀的 Ruby/Rails 开发者等等……(更常见的问题)
我希望这些问题能有一个“简单/正确”的答案。就像:“读完这本书,你就会成为一名出色的开发者”。不幸的是,事情并没有那么简单。我们每个人都不同,学习方式也不同,而且我们来自不同的背景。
所以,我决定不告诉你们我认为最好的学习方法,而是去问社区。以下是我收到的一些回复的快速汇总。
DHH:我通过愤怒地编程来学习 Ruby。尝试制作一些真实的东西。而不仅仅是玩具程序。
David Black:我通过《Ruby Pickaxe》和大量的练习,以及在 ruby-talk 上阅读和回答问题来学习 Ruby。
Yehuda Katz:我尝试了不可能的困难的事情来强迫自己学习。
Laurent Sansonetti:我通过《Ruby Pickaxe》、阅读 ruby-talk 上的帖子,然后阅读 MRI 的源代码来学习 Ruby。
Ninh Bui:我曾经是个 Java 的狂热粉丝,写 Struts + J2EE 企业应用。Hongli 在一个周末强迫我看 Ruby,我学会了 Ruby 的基础。然后我通过谷歌搜索、阅读书籍和源代码来学习 Rails。
Tim Connor:Rails 社区痴迷于写博客的习惯可能是最大的帮助。
Lar Van Der Jagt:Ryan Bates 的 Railscasts 绝对是。一旦我知道足够多可以深入研究,我就会学习 Rails 的方式。我希望我能做到的就是与专家一起工作!
Arun Gupta:《Rails 指南》和《Agile Development with Rails》这本书。
Geoffrey Grosenbach:在我读了几篇教程后,我开始花了几个小时阅读 API 文档。即使你不能理解所有内容,这也是熟悉可用功能的绝佳方式。
Nate Todd:我先用几个 CakePHP 应用学习了 MVC。它帮助我用我熟悉的语言学习了最佳实践。
Chris Wanstrath:我通过编写应用和阅读框架的源代码来学习 Ruby on Rails。意见不同,但答案很有趣。我试图汇总一些我认为帮助了我和我交谈过的人的优秀资源。

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

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

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

恭喜你,你应该为你取得的成就感到自豪!但是不要停止学习!你写了应用程序的测试吗?你的测试真的在测试你的应用程序,还是仅仅为了让你感觉更好(例如:更改你的代码,你的测试是否仍然通过?它们不应该通过吗?)?你使用插件吗?你看过它们的代码吗?你理解它们是如何工作的吗?你能写自己的插件吗?那么 Ruby gem 呢?另外,你的 Javascript 技能如何?CSS 和 DBA 呢?专注于你的弱点。
我强烈建议你在此时贡献代码。向 GitHub 上的许多项目,甚至 Rails 本身提交补丁,你会学到很多!
提示:查看 Gregg Pollack 的 Scaling Rails 系列。
这很棒,到目前为止,你可能对 Rails 和 Ruby 非常熟悉了。你可能想更深入地研究一下。也许可以看看如何明智地使用元编程和/或如何编写 C/FFI 扩展。为什么不看看 Ruby 的源代码来了解事物是如何真正工作的呢?

现在也可能是时候开始学习新语言,看看其他社区是如何做事的。看看其他框架,尝试理解人们是如何以及为什么选择其他约定/方式的。玩玩 Python、Java、Scala、Clojure、Objective-C、Ocaml、Scheme 或任何你觉得有趣的语言。你不必精通其他语言,但你应该尝试理解每种方法背后的推理,并了解其优缺点。这真的会提高你的 Ruby 技能,并拓宽你的视野。
提示:准备几个演讲,并将提案发送给各种会议。(不要局限于 Ruby 会议)
那么我希望你正在帮助 Ruby 1.9 的努力,为其他实现(IronRuby、JRuby、MacRuby、Rubinius)贡献代码,并帮助 Rails 3 :)
如果你正在阅读这篇文章,你可能属于上述类别之一。结对编程和辅导是学习的好方法,这都是关于业力。帮助他人将帮助你成为一名更好的开发者。随时在评论中留下你的建议、链接和信息。