How to pick up practically any habit

Around June of this year, I decided I wanted to make a habit out of learning to program.

I had been picking things up here and there since moving to California two years prior. I wrote my first web app in a single three-day sprint during an “app week” we had at work, and I attended a local JavaScript study group on and off.

But I had never been consistent about it. I was interested in programming, and I had a lot of fun during app week, but my job was non-technical, and there was nothing external to make sure I would keep learning. So I came up with a little hack for encouraging myself to learn a bit of programming every single day.

My hack was basically a variant of Jerry Seinfeld's famous "Don't Break the Chain" advice, with a few extra implementation details to help it really stick.

And it’s worked wonderfully! Since kicking it off on May 28, I have studied programming every single day with the exception of ​only 6 days​, plus one week of “permitted break" for Burning Man. It's nearly December now, so that's an average of only 2 days skipped per month.

I’m currently on my longest streak ever — in fact, yesterday marked 100 consecutive days of programming study. It's a simple but powerful hack, and it can be applied to virtually any habit that you want to perform on a daily basis. I’m excited to share the recipe so you too can become awesomer at whatever goals you care about right now.

In a nutshell

“Commit to doing a tiny version of your habit ​every single day​, then prominently track how many ​consecutive days​ you’ve met that commitment."

It's basically "Don't Break the Chain," with a “high score” element thrown in, where you're tracking — in some prominently visible place — exactly how long your current chain is.

For the purposes of developing a habit, that score — how many Consecutive Days you’re on — is the only performance metric you need to worry about. Not how much weight you can lift, or how many JavaScript concepts you’ve mastered, or how many blog posts you've published. Just your Consecutive Days.

And no matter how far you’ve made it already, that metric will stop you from getting complacent. In fact, the more successful you’ve been, the stronger the incentive to keep going. I just logged 100 study days in a row. If I fail to study today, I'll be forced to log “0 days in a row" tonight. And I’ll have to get back on the horse tomorrow at “1 day in a row." My beautiful chain will be gone, after building it for literally months, and I’ll have to rebuild it from scratch. I'm pretty sure I'll make sure I study today.

The detailed recipe

Step One: Translate your goal into a daily activity.

Think about something you want to improve about yourself, and figure out what actual daily activity would help you get there. For many goals, this part is easy. If you want to “be fit,” you should exercise every day. If you want to be a great writer, you should write every day. If you want to be a great programmer, you should program every day.

Other goals might require a bit more creativity. If you want to be more outgoing, perhaps you could try interacting with a stranger every day, even if it's just a smile on the train or telling the barista you like their haircut.

By the way, I strongly recommend launching only one new habit at a time. I've since picked up an exercise habit using this same technique, but I only kicked it off after my study habit was well underway. So feel free to brainstorm lots of things you want to improve, to get yourself excited, but for the steps after this one, select ​one​ goal to focus on.

Step Two: Turn that daily activity into a tiny, tiny commitment.

You’re allowed to go beyond your commitment on any given day of, of course, but the commitment itself should be so trivial that you could stick to it even on your very worst day, as long as you remember to do it. This step is very important, and very easy to get wrong.

When we’re dreaming, our inclination is to think big. "I’m going to go to the gym every day! I’m going to run a marathon by the end of the year!" But remember: the point of this hack is to build a ​habit, to make something into an automatic daily part of your life. You’re much more likely to fail at your goals because you ended up not doing the thing at all, than because you did it every day, but not hard enough.

In that spirit, you should think ​small​ when choosing your daily commitment.

Imagine coming home after a horrible day where every possible thing that could go wrong did go wrong, and you didn’t sleep enough the previous night, and you have a headache, and your body feels crappy, and your mind is a fog. And you suddenly remember it’s almost midnight and you haven’t done your commitment yet today. Your commitment should be so small that you could succeed at it even under these conditions.

“Go to the gym every day” is much, much too big a commitment for an exercise habit.

“Do a single pushup” is much better.

For my programming goal, my commitment is “15 minutes of studying per day.” And that studying can take any form, so on bad days, I am allowed to just read some relevant blog posts, or watch part of a computer science lecture.

If you want to pick up flossing, and you hate flossing, your habit commitment might be “floss just the space between your two front teeth.” It sounds silly, but trust me on this.

Once you’ve kicked off your commitment, a good test is to look at the days when you derailed (and you will derail at least a few times), and figure out ​why. For my study habit, it was always: “I just forgot.” Which means my study commitment is a good size… every single day that I ​remembered my commitment, I was able to do it. If you ever have a derailment that’s something like: “I remembered my commitment, but I just couldn’t bring myself to do it that day,” your commitment is probably too large.

Step Three: Pick a "default time" to do your tiny commitment.

Think about your existing routines and habits, and decide where in your day you could easily fit this new habit. Maybe it’s first thing in the morning when you get up, or during your lunch break, or as soon as you arrive at your workplace, or right before you brush your teeth for the night. It can help to set a reminder on your phone that will alarm every day to remind you.

If your days are highly variable, you can do something like I do: every morning, I set alarms on my phone for when I intend to exercise and when I intend to study. My policy is that when the alarm goes off, I am allowed to hit “snooze” (which causes it to alarm again in 10 minutes), and I am allowed to reschedule the alarm, but I am not allowed to simply turn the alarm off, until I have started my commitment for the day.

Remember: if you did Step Two correctly and chose a sufficiently tiny commitment, your main derailment risk is simply forgetting to do it one day. Good defaults and reminder systems help protect you against this.

Step Four: Choose somewhere to track your Consecutive Days score.

It should be a place you will definitely see every day. A bathroom mirror where you brush your teeth is a good example. Get a whiteboard marker and write on your bathroom mirror:

That’s all you really need. Optional things you might also like to track include:

Step Five: When you’re ready, go for it!

Ceremoniously write “0” next to “consecutive days."

Do your tiny habit commitment.

Write the current date next to “most recent day."

Ceremoniously erase the “0” and write in “1” next to “consecutive days."

And that’s it! You’re off to the races!

Closing thoughts

I’ve included a lot of advice in this post, but the important thing is to just start. Don’t fret too much over whether you’ve set it up just right and followed the advice perfectly. Just take a swing at it and let the game mechanics take it from there. As long as your “Consecutive Days” number is somewhere you can see it, you’ll want to see it go up.

Remember that derailments are normal and just part of the game. Take them as learning opportunities: was your habit commitment too large? Did you simply forget, and need to strengthen your reminder systems, or choose a different default time? It also helps to take a moment to reflect and appreciate how cool it is that you've been doing this thing almost every day, when before, you were hardly doing it at all. Allow yourself to feel proud of what you have accomplished, and get back on the horse.