There are lots of good places to learn Ruby. But learning isn’t just reading books or watching videos. It’s running head-first into a problem, getting stuck, struggling, getting frustrated, looking things up, having it click, playing around with it, and finally (finally!) getting something working.

You have to use the things you learn, or they won’t stick with you. And there are a few great ways I’ve found to do just that.

Ruby Quiz

Ruby Quiz is a group of over 150 short, interesting problems to solve with Ruby. Things from converting Roman Numerals to generating ASCII-art dungeons. Each problem has solutions, too – you can see different approaches to the same question. Ruby Quiz has been around forever, and it’s still a lot of fun.

exercism.io

exercism.io starts like Ruby Quiz – you’ll build solutions to small programming problems. But in exercism, after you submit your solution, you share it with other people. You’ll review your code, and refactor it to make it even better.

Your goal with exercism isn’t just working code. It’s refactoring toward small, simple code. You’ll practice your refactoring and object-oriented design skills. And those will stick with you through your entire programming career.

Try it in a tiny app

Programming challenges are great for building your general Ruby knowledge. But sometimes you’ll want to try a feature you just learned about, so you can understand it better.

So, try it in an app. Generate a new Rails app with a scaffold or two. Dedicate it to playing with the feature you want to learn. Even if you’re not doing something Rails-specific, Rails’ code generators are great for trying new things without much setup. You don’t have to worry about setting up tests, requiring the right files, getting Rake set up, or anything like that.

This is how I’ve been playing with the new Rails 4.2 features, and it’s the way I try most of the things I’ve written about here. (It’s also the topic of the first chapter of my book).

What have you forgotten?

I have a long, long list of things I’ve forgotten because I never used them. And that’s just not a good use of my time.

So, balance your reading and viewing with some practice and play. Do some challenges, or build some tiny apps. You’ll be surprised how much more quickly you’ll pick stuff up.