Learning Rails the Easy Way

About a year ago I decided I should broaden my software horizons and learn something completely different from my normal fare of FPGAs and hardware.  As such, I started learning Ruby on Rails.

Long story short – it’s been an awesome year, I have learned a lot about Rails development, but even more about efficient (and inefficient) ways to learn.  This post is an attempt to catalog the latter to help others traveling this path.

Five tips for learning Ruby on Rails (or anything really)

1 – Work towards a specific project or goal

This advice applies to learning any new skill – learning Rails just for the sake of learning Rails is great, and possible, but not nearly as fun or satisfying. Fun/satisfying things take less motivation to work on and as one of my mentors put it “Developer motivation is a scarce resource, use it wisely”.

Decide on a specific web app that you would like to build with your acquired Rails skills. This could be your personal blog, a web community for your hobby, or your startup idea. This project continuity not only provides focus and motivation, but also serves a source of real development challenges and results.  In my case, I built a fishing app for iPhone, FishingScout.com

2 – Get involved in the community

Austin is fortunate to have a vibrant Rails developer community, anchored by Austin on Rails (thanks Damon!). I started my Rails journey by attending a few meetings to get a feel for the people and projects.

This was invaluable both for meeting other Rails developers (of all experience levels) and keeping up with new tools, gems, etc. Many times a 10 min conversation at an AoR meeting has saved me hours of development trial-and-error. Best of all, its a lot of fun!

3 – Consider paying for a class or tutoring

You’ll hear this advice from many successful people – if you are serious about a worthy goal, and you can afford it, then you can significantly accelerate your trip up the learning curve by hiring help. For example, if you read Noah Kagan’s writing, he is serious about physical fitness and he often references advice from his health coach.

Through an AoR conversation, I heard about an upcoming ‘Rails for Beginners’ course lead by Mattt Thompson (then of Gowalla, now of Heroku). The class consisted of 2 full weekends in the classroom plus projects & homework. It wasn’t cheap, but there were only 10 students, so we had a lot of time for questions and exploration. Mattt was a great teacher and I finished the course feeling like I had taken a massive leap forward in my capability.

My class in Austin was offered by Cabforward, but I believe they are now working with Cospace for their classes.  A quick google will turn up other options.

4 – Find a mentor or three

Similar to hiring a tutor, a mentor can make a massive difference in the speed of your progress.  A good mentor helps you focus on what is important, avoid common pitfalls, and holds you accountable for making progress.

Following the Rails course, Mattt Thompson was (and still is) very responsive in answering questions and providing advice.  Further, the Rails community seems universally committed to helping eachother out.  Case in point, there are apps that exist purely to provide assistance to new Rails developers:

I have taken advantage of both of these services – Rails Mentor Tim Tyrrell has helped me become more proficient with testing, tools, and ActiveRecord.  Similarly, I’ve called the hotline 10+ times, always coming away with a solution or at least a direction.  Hotline founder Chap Ambrose, as well as all of the developers taking the calls, go out of there way to help you out (sharing code, emailing ideas days later, following up to make sure you’re not stuck).  Take advantage of these resources.

5 – Use online resources deliberately

I left this tip for last because it is the default approach.  Thanks to _why and others like him, there are great online resources for learning Ruby and Rails.  The key point here is to be deliberate, pick one or two tutorials and complete them in a regular, disciplined manner. A scattered/haphazard approach here will kill your efficiency & retention.

Here are a few online Ruby & Rails resources I have used:

Wrapping up

In the end, it’s pretty straightforward:

  1. Work towards a specific project or goal
  2. Get involved in the community
  3. Consider paying for a class or tutoring
  4. Find a mentor or three
  5. Use online resources deliberately

I hope these 5 tips can help you on your path to learning Rails (or any challenge you find worthy).  No matter the project, the effort and learning required to build something new is very rewarding in itself.

H/T to SHL’s post for reminding me that I needed to publish this!

Creative Commons License
This work, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. Terms and conditions beyond the scope of this license may be available at rhb.me.

3 Comments

  1. Ryan, we’re looking forward to getting the class off the ground! Thanks for sharing it with your community. Let us know if there is anything we can do to help you get going as a Ruby engineer, through Cospace. I’d love to learn more about FishingScout (and what it takes to get it on Android ;)

  2. This is so cool, Ryan. Thanks for sharing it.

    I love reading stories from the community like this.

    Keep it up!

  3. Working towards a specific goal is definitely one of the most motivating factors that can encourage one to learn – that’s how I learned Rails as well! This is a great list of resources you’ve compiled – I hadn’t heard of RubyMonk before, and look forward to trying out their metaprogramming courses.
    I actually also began a free screencast series aimed at teaching the basics of Ruby to people without any programming experience. Hopefully your readers will find it useful! It’s at http://www.anyonecanlearntocode.com/screencasts.
    (I also offer online Rails tutoring sessions – but the screencasts are free!)

Leave a Reply