Way back in June 2016, I got an email from a developer named Alexander Kallaway.
I knew of Alex because he’d created the freeCodeCamp Toronto study group. It was one of the most active study groups in Canada, drawing crowds of developers each week.
But Alex wasn’t writing me about the Toronto study group. He was writing me because he wanted to tell me about an endurance challenge he’d dreamed up.
The challenge was this: Alex wanted to code for at least an hour every day — for the next 100 days in a row.
Alex had written an article explaining the rules of his challenge, and publicly committing to the challenge. He hoped that a few other people would read his article and join him on his challenge.
And he came up with a Twitter hashtag to go with it: #100DaysOfCode.
Little did I know that 18 months later, thousands of people would be tweeting this hashtag hundreds of times each day.
Today, people who have committed to the #100DaysOfCode challenge use the hashtag to share their progress, projects, and milestones they’ve hit — like landing their first developer job.
So how did Alex transform from a lone developer who wanted to improve his coding skills into the leader of a global movement involving thousands of developers?
And who the heck is Alexander Kallaway, anyway?
A few years ago, Alex was just another high school student in Russia. He was passionate about foreign languages, and learning both English and Japanese. His passion eventually took him to Japan, where he continued his studies at a Japanese university.
One day while in Japan, Alex spotted an English-language copy of The 4 Hour Workweek on a bookshelf. He says this book opened his eyes to entrepreneurship, and the notion that anyone could start a project that makes a big impact — not just traditional “business people.”
He figured out a way to move to Canada so he could attend business school.
And it was there that his future wife, Anna, reached out to him, wanting to learn more about studying abroad and how he’d managed to do it. She now lives in Toronto with Alex.
By 2014, Alex had finished business school, and had started a career in digital marketing.
But Alex’s interactions with the developers around him at work made him realize something important. He was missing a core entrepreneurial skill. He needed to learn to code.
Alex had no real programming experience. He couldn’t afford the time or the money necessary to attend a coding bootcamp — let alone to go back to school for a computer science degree.
But he decided to learn to code anyway. Every day after work, Alex would teach himself to code using free online resources.
While using freeCodeCamp, he decided he wanted to code along with other friends to have more social accountability. He tried to join a freeCodeCamp group in Toronto, but there wasn’t one. So he created one.
The freeCodeCamp Toronto study group expanded quickly through his efforts to organize events. The group started out meeting in coffee shops. Soon it was filling up entire office spaces. And it eventually found a permanent venue at a nearby coworking space.
And through freeCodeCamp Toronto, Alex became friends with dozens of like-minded people who wanted to learn to code.
All his hard work paid off. Thanks to his newly acquired skills and large network of developers, Alex got his first developer job.
At that point, it was easy to become complacent. He had arrived.
He had a fun job. He was making good money. He had made so many friends. And he had “made it.” He was a Russian expatriate finding success in Canada’s biggest and most competitive city.
But Alex knew he needed to keep expanding his skills if he wanted to realize his entrepreneurial ambitions. He could sense his skills hitting a plateau. After a long day at work, it was tempting to just relax and watch TV, or hang out with friends.
“The idea of #100DaysOfCode originally came from personal frustration with my inability to consistently learn to code after work. I would find other less-involved activities to spend my time on, like binge-watching TV series.
One of those days, I was sitting in a restaurant with my wife Anna sharing my frustrations with her. I suggested that maybe I should make a public commitment to learning for at least an hour every day, and I thought I would go for 3 months.
Anna said it was a good idea, and asked: ‘But why stop at 3 months? You should make it an even 100 days! It just sounds better!’”
The #100DaysOfCode Challenge is born
#100DaysOfCode would serve as a commitment device, forcing Alex to code each day after work, even when he felt like watching TV instead.
He needed to clearly state what the rules of the challenge were, so he wouldn’t be able to bend them later.
So he created Rule #1: You commit to coding for minimum 1 hour every day for the next 100 days.
Alex was obsessed with productivity, and developing positive habits. He had read lots of books on habit formation. Some of the books he recommends reading on the topic are:
- The War of Art: Winning the Inner Creative Battles
- The Power of Habit: Why We Do What We Do in Life and Business
- The Obstacle Is the Way: The Timeless Art of Turning Trials into Triumph
Alex thought about how so much of our motivation comes from our friends and family. We need social accountability.
And that’s when he realized that this challenge could be social in nature, and that the more people he got involved, the more likely any single participant would succeed and make it through day 100.
So he created Rule #2: You commit to encouraging at least 2 other people who are taking the challenge each day, using Twitter.
As Alex puts it:
“This system could help counteract all the excuses I naturally came up with for not doing what I was supposed to do. This is how the challenge was born — a couple of simple rules, social accountability, and nothing more. Accountability is one of the biggest factors in trying to change some aspect of your life.”
Right from the start, Alex acknowledged that learning to code is hard. But our friends can help us push forward through the setbacks.
“There will be plenty of times when you feel like you’ve had enough. Or you’ll feel like your progress is way too slow, or you’re hopelessly stuck. These are all serious-enough reasons to quit. Or at least that’s what you might tell yourself.
But if you connect with others on the same path you can share the ups and downs of the journey, and together move past all these roadblocks. Share your frustrations, learning experiences, and victories with the like-minded people who are also on the same path as you. By sharing these, you grow to understand: ‘It’s not just me.’”
Why #100DaysOfCode is a more realistic goal than most of the New Years Resolutions people commit to
The #100DaysOfCode Challenge is only 100 days long — less than a third of a year. And you have a giant community of people cheering you on.
As a result, many people not only finish the challenge — they commit to it a second time!
So Alex came up with the concept of “rounds.” These are signified by tweeting with which day you’re on (Day 1) and how many times you’ve attempted the challenge (Round 1).
He adopted a new format for daily progress tweets: R1D1 — which means Round 1 Day 1.
“There is an inside joke that was born out of this format: On the second day of the second round — R2D2 — people post a picture or a gif of the beloved R2D2 Star Wars robot in their daily progress tweet.”
If you scroll through the #100DaysOfCode hashtag on Twitter, you’ll see cases where people have already completed several rounds.
But Alex recommends starting with a single 100-day commitment and going from there. He also recommends keeping things simple at the start.
“New Years Resolutions don’t work because people over-commit. Make sure this is your only habit that you’re trying to pick up.”
He also says it’s OK if something unexpected comes up, and you can’t code for a day.
“If you are traveling for 2–3 days and cannot code, take a book on coding with you and read it instead. If you only can afford 20 minutes a day, do that. Make the challenge your own. The only rule that I want you to keep sacred is that you have to code daily. You can skip a day here and there for unplanned situations, but not more. The goal is to become consistent, no matter what life throws at you.”
If you’re interested in boosting your motivation, you should take the challenge. It starts with tweeting your commitment to the challenge.
Then you can fork the #100DaysOfCode GitHub repository to serve as a journal of your daily progress.
One great thing about the challenge is that you don’t need to wait until New Years to take it.
People are starting the challenge every day, so you’ll have people who started before you cheering you on.
Then you can turn around and cheer on the people who are starting after you.
These encouraging tweets and feedback on your projects can be extremely motivating. I’ve talked with tons of people who say the #100DaysOfCode challenge helped them break through barriers that had held back their coding for months. The social accountability aspect works wonders.
Where to learn more
Alex has done some great podcast interviews where he talks in greater detail about the #100DaysOfCode Challenge:
You can also check out their official website: 100daysofcode.com
And read Alex’s latest article about recent improvements to the challenge.
Even if you don’t want to take the challenge, you should keep coding as much as you can make time to do.
At the end of the day, it’s all about practice.
“Every day you code is the day you’ve won.” — Alexander Kallaway