When I was 17 years old, I was asked by an Air Force military training instructor how to get to Carnegie Hall. Before I could even think of why he’d ask me this question, he shouted “Practice! Practice! Practice!” This was followed by an hour long monologue about the finer points of properly making a bed and stowing underwear in a locker, which might explain why my aspirations for a military career started and ended in JROTC. But that cliché of a first line stuck with me, even to this day.

You are reading a newsletter called Practicing Ruby. Therefore, you must not be averse to practice or are at least not a stranger to it. However, skillful practice is an art form, and not all types of practice should be considered equal. I assume that our readers have goals that are closer to taking the stage at Carnegie Hall than they are to perfectly folding a pair of underwear. With that in mind, I’ll be sharing my secrets about how I practice, in the hopes that the techniques I’ve developed over the years will work for you, too.

Please decide at this point whether you have about 2-3 hours to spare within the next few days to try out some exercises that go along with this article. If you don’t feel like you can do that, stop reading now, skip and come back to this two-part article when you have time for it. The ideas I am covering will only really sink in if you put them into action.

If you’ve decided to be brave and read on, great! Now is the time to open up your text editor or grab a sheet of paper and a pen.

The $64,000 Question

The question you need to answer before it ever makes sense to practice, work hard, or even think about anything seriously, is simply this: What interesting problems do you need to solve?

When properly considered, this question can serve as a compass that points you in the right direction. The key is to pay attention to every last detail that it demands, so that you can pick the right kind of goal. Here are some guidelines for picking the right area to focus in:

  • First, it must be interesting; something that stands out from the ordinary. As long as YOU find the topic engaging, it needn’t interest the whole world. But at the very least, it must be something that won’t get lost in the background noise of our day to day lives.

  • Second, it must be a problem. Without some form of conflict, without a struggle between what is and what can be, it is difficult for creativity or productivity to occur naturally. Problems tend to capture the imagination in ways that ‘exercises’ or ‘routines’ never can.

  • Third, it must be a need of yours. Notice I use the word need and not want. While at the physiological level, needs are very basic (food, water, clothing, shelter, sex, etc), psychologically our needs are much more complex. A need is the kind of thing that eats at you until you find a way to satisfy it. A need is something that when ignored, makes things worse than what they should be.

  • Fourth, it must be related to you. There are many, many problems out there that are interesting and need to be solved. Which challenges are you uniquely qualified to solve? Which challenges are you uniquely pained by if they’re left unsolved?

  • Finally, it must be solvable, or at least show promise of being solvable. There are problems out there that would be great if we could solve them, but nothing seems to change about them. Fortunately, many problems can be solved with sufficient motivation. Don’t waste your time on the impossible, feel free to settle for something challenging but surmountable.

Now that I’ve explained it in detail, I’ll repeat the question, and then I want you to take some time to think about a serious answer to it…

What interesting problems do you need to solve?

Making a commitment

Derek Sivers claimed you should keep your intentions to yourself when planning your goals. But Freakonomics thinks he’s wrong, and so do I.

Every single project that I’ve been successful on, I’ve described in public before I even broke ground. The original Ruby Mendicant project that brought us Prawn, and my current work at Mendicant University are just two examples that I can offer some anecdotal evidence for.

Now have I succeeded at every project I have discussed publicly? Hell no! But to be honest, I’ve been kept busy enough by my successes that I don’t need to worry too much about my failures in life. I’ve also found that by sharing my ideas as early as possible, I can get a sense if people are as excited about it as I am. While a lukewarm response isn’t necessarily an indicator of a bad project, things that create buzz often indicate that you’ve struck a real nerve. When you stumble across problems like that, you really ought to invest in solving them.

So now that you’ve written down your goal, the next step is to share it with someone. I’d recommend posting it in the comments section at the end of this article, but I’d pretty much accept any action you can do to share your idea with someone else in the world. Tell your kid, tell your wife or husband. It doesn’t really matter who you tell, as long as you put it out there.

Now is the time where people most often second guess themselves, thinking their idea is not ready yet, or that it won’t be appreciated by others. If that’s really how you feel, fine, go back to step one and generate a problem that you can share that still meets all those guidelines.

The next step is to shift from having an idea to having something you can actually act on.

Making progress

At the beginning of the article, I asked you to set aside two to three hours for working through these exercises. Maybe you’ve spent a little bit of time brainstorming already, but you probably have plenty of time left on the clock, right? If so, now is the time to roll up your sleeves and get your hands dirty.

You’ve got a goal, and you’ve told someone about it. Now your next task is to answer this question: What is a concrete, measurable action you can take that will take you an hour or less, but still manage to get you closer to your goal?

Write down your answer to that question and then pass it along to whoever you shared your goal with. Then, sit down and try to do what you said you would do. Keep working on it until either you’ve solved the small subproblem you’ve just described, or until the full hour runs out.

Once you’ve put the work in, make sure to let your selected observers know. That’ll make you want to build something that you actually believe meets your goals, rather than lowering your standards to match what you’ve actually produced. If you fell short of your objectives, don’t be disappointed, just explain what obstacles got in your way. Folks are more understanding than we give them credit for, and your observer is not likely to be an exception.

Reflecting on your progress

You now have made a few steps in the direction of solving an important problem that you find personally interesting. Great work!

Now, there is only one question left to ask: What scares you about this project?

If the answer to that is ‘nothing’, pause a moment and double check whether you’re really being honest with yourself. I personally find fear or extreme uncertainty to be a common phenomena when working on hard problems, and if I feel 100% confident with no real doubts or worries, I begin to think that maybe the problem I’m working on isn’t worth my time. That said, a lack of fear also sometimes comes from being in the state of flow, which is a really pleasant experience. Try to distinguish between the two, and only settle for ‘nothing’ if you really believe it to be true.

Assuming you do dig up some fears or doubts, write them down, in as much detail as you’d like. Once you’ve done that, try to separate thing things that you can figure out answers to from the things that you can’t. Take a quick glance at the list of fears that you won’t be able to reason your way out of, and decide if they’re worth giving up your project over. If they are worth surrendering over, quit and start all the way at the beginning, forming a new goal for solving a new problem that you really care about.

But if you have the courage to press on, throw out the list of unresolvable fears and focus on the ones that you can do something about. Study the topics they cover, talk to friends for ideas on how to get through them, and then once you feel better, throw that list out too.

Rinse and Repeat

Today I asked you for a couple hours of your time, to get you to practice your craft by actually working towards solving something that is important to you. Odds are, a couple hours wasn’t enough time to fully solve one of your big problems. But it was a start.

The good news is that the process recurses from here. You don’t need to work in one hour intervals, but ask yourself what you can accomplish in an afternoon, in a work day, or in a week. Then, come up with a plan, tell people about it, execute, reflect, and repeat.

This is what I do, and if it works for me, it may well work for you. Please try it out and share your thoughts once you’ve worked through the suggested exercises in this article.


I started out by saying that practice is important, and you may have then expected to hear me talk about how important it is to read books and blogs, or to work on code katas, or something else that involves a disconnected form of learning that is separate from real world applications. But frankly, I find that sort of approach to be inefficient, when real goals do so much of a better job of guiding you towards what is really important to focus on.

Hopefully by working through the exercises I’ve proposed here, you’ll gain a better understanding of why this approach to learning can be so power. In the next issue, I will share some examples from my own projects in which I’ve used this process to make good progress in a short period of time. Through that, you’ll hopefully be able to see how almost all of my time spent studying is done through goal based learning rather than some sort of separate, isolated practice sessions.

More than any other article I’ve published so far, I hope you will participate in this one. Even if it seems a bit cheesy, I think that actually working through these exercises will prove to be a worthwhile experience for you.

NOTE: This article has also been published on the Ruby Best Practices blog. There may be additional commentary over there worth taking a look at.