It sounds like such a simple question, and depending on which bootcamp or code school you ask, it has a simple answer - somewhere between two and twelve weeks.

Why can’t you learn Ruby in a matter of weeks, then? Why do you struggle to create Ruby applications that you care about, after months of working through tutorials, watching screencasts, and attending meetups? Do you just need to shell out $15,000 to attend a bootcamp so you can get on the fast track to learning Ruby?

Here’s what the bootcamps don’t tell you: you can’t learn Ruby! To get more precise, “learning Ruby” as a goal just doesn’t make sense… and that’s why you struggle to create meaningful applications.

When you set out to learn Ruby, you set yourself up for failure - you have a nebulous goal that always gets further away. Consider these facts:

  • The Ruby language changes on a daily basis.
  • More gems get released per day than you could ever hope to keep up with.
  • The state-of-the-art changes before you’ve had a chance to grasp the basics.
  • This leaves you playing a never-ending game of catch-up.

What can you do instead?

1. Understand the difference between objectives and outcomes.

You can’t “learn Ruby” because learning Ruby is not an objective. If you treat it as an objective, you’ll always get lost. You can’t measure how much Ruby you’ve learned. You can’t say for certain whether you’ve learned Ruby. There’s no moment where you go from not knowing Ruby, to knowing Ruby. It’s a gradual, on-going (life-long!) process.

You can measure objectives. You can strive to meet them, and succeed or fail. Failing to meet your objective doesn’t mean you’ve failed altogether… because you get value from outcomes, not objectives.

Learning Ruby is an outcome… you can only learn Ruby as an outcome of constantly working towards meaningful objectives.

2. Set meaningful objectives.

You got in to Ruby with a strong objective - to create applications that you care about. Along the way, you got lost. People told you that you needed to learn Ruby to create Ruby applications, and you believed them. It only makes sense… right?

Nope. As we’ve already discussed, you can’t learn Ruby! If you make learning Ruby an obstacle to creating Ruby applications, you’ll spin your wheels - forever!

Instead, you learn Ruby by creating Ruby applications. That means you sit down and create something, even when you have no idea what’s going on. Afterwards, you evaluate what you’ve done, and look for ways to improve.

You’ve probably heard of SMART goals before - Specific, Measurable, Attainable, Realistic, and Timely. It’s a cute acronym, but I have something way better for you: GAMES!

3. Play learning-directed games.

Yep, GAMES! It’s not a new acronym to remember… it’s just something to get excited about :)

Games produce learning as an outcome, because games have definite objectives. Game structure includes a few more pieces beyond objectives, and we’ll explore them in another lesson. For now, you just need to understand three simple rules:

  1. You can always find a game.
  2. Playing a game repeatedly will produce interesting outcomes over time.
  3. You can change the game to produce different outcomes.

Learn Ruby by creating Ruby applications you care about, with RubySteps

You’ll learn all about how to find games, tweak games, and even create your own learning-directed games, in RubySteps. For now, here’s a simple game you can play that’s guaranteed to help you learn Ruby - without making you feel like you’re behind the curve.

The RubySteps Do-Over Game:

  1. Set aside 1 hour to play this game
  2. Pick a single programming problem to work on for the hour - program a cash register, for example
  3. Set a timer for 10 minutes.
  4. Work through the problem, getting as far as you can in 10 minutes.
  5. Take a 5 minute break - take notes on what you did well, and where you stumbled.
  6. Open a new file, and repeat steps 3-5 three more times, until the hour is up.

At the end of the hour, you will have attacked the same problem four times, and done a little retrospective each time. You’ll have a list of things that you did well, and things that you struggled with… and more than likely, by the fourth round you’ll have gotten further than you did in the first three.

You can play that same game every day, and you’ll improve your ability to create Ruby applications a lot faster than you ever will working through tutorials.

Change the game

You don’t have to play that exact game, either. Here are just a few ideas for changing the game:

  • Change the time limits - do 12 minutes coding, 3 minutes retrospective. Or 5 minutes coding, 10 minutes retrospective. Work for 30 minutes instead of an hour. Play with it.
  • Change the objective - I used a cash register in that example, but you can use literally anything.
  • Change the parameters - use TDD, invite someone to pair with you, or write it on a napkin.

You can create infinite variations of this game… and even create your own brand-new games!

RubySteps principles at work

I’ve shared just one tiny example of what you’ll learn in RubySteps… let’s take a look at the RubySteps principles at work here:

  • Turn Up the Good: Each time you play the game, you discover things that you do well. Focus on expanding your existing capabilities, and you’ll build the confidence you need to shore up your weaknesses, too.
  • Take Baby Steps: Working in these small time boxes gives you a definite stopping point. You don’t have a project hanging over your head for weeks or months. You have a feeling of accomplishment, rather than simply chipping away at a big huge goal.
  • Practice Deliberate Discovery: By playing the same game, working towards the same objective, and doing a retrospective after each round, you create an ideal environment for learning what you don’t know. Keep doing this, and you will quickly move from a position of ultimate ignorance to one of deep understanding.

All that’s left for you to do now is to Share Your Work. I’ve got a quick game for that, too :)

  1. Push your code to GitHub
  2. Send me the link!

I’d love to follow along as you play the game, and see what you learn :)