by Alexander Kallaway

Take the #100DaysOfCode Challenge. It’s the fastest way to form a coding habit.

Photo by Austin Chan on Unsplash

The #100DaysOfCode challenge started out as a set of rules to help people commit to learning to code consistently. And with time, it has attracted a community of like-minded people.

As of writing this, nearly 3,000 people have risen to the challenge.

These people are enthusiastic about self-improvement. They love learning. And most importantly, they help each other along the way.

Even if you’re coding consistently on your own, joining the challenge will help you find new friends. Friends who — like you — are passionate about tech, personal growth, and getting the most out of life.

In this article I’ll talk about:

  • why people give up on learning to code, and how you can prevent this
  • the benefits of joining the #100DaysOfCode community
  • some improvements we’ve made to the challenge rules over the past years, and new tools for completing it
  • and brand new ways to interact with the #100DaysOfCode community

The rules

The two main rules* of the challenge to ensure your success are:

  1. You commit to coding for minimum 1 hour every day for the next 100 days.
  2. You commit to encouraging at least 2 other people who are taking the challenge each day, using Twitter.

* Note that everybody’s situation is different. You can adjust the rules for your challenge to fit your life and responsibilities.

You can read more about the rules, and a general FAQ, on the official challenge website:

The benefits and the main goal

The main goal behind the challenge is to help you become consistent in your learning.

It will also help you navigate all the bumps and turns along the path. It will provide support and advice to make sure you continue moving in the right direction and don’t give up.

If you don’t give up, no matter how slow you are moving, you will eventually reach your goals.

If that’s so important, why do people give up on learning to code?

Sometimes people are discouraged after talking to “real developers” who claim the learning path they took was the only correct one. Sometimes people don’t know what technologies to learn and in what sequence, or which resources to trust with their limited time. Often, life gets in the way — with all the responsibilities, urgent situations and unexpected developments.

Overall, learning to code in itself is tough. 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.

The #100DaysOfCode community can help you reach your dream without having to give up, and without having to go through unnecessary difficulties along your way.

Don’t compare yourself to others — instead, share your experiences

I’ve noticed that there are two ways people compare their journeys with one another. One of them is healthy, and the other one is toxic.

The toxic way we share experiences

First let’s talk about the toxic way, which is much more common. It is to idealize other people’s experience by looking at their progress, and then to use your idealized version of them to talk yourself down.

The problem is that in a lot of situations, we tend to think less of ourselves — and more of others. It’s kind of like judging what someone else’s life is like by looking at what they share on Instagram. You’re getting a highlight reel of their best experiences.

You don’t know about their self-doubts. You don’t know about the roadblocks they encounter, and the anxiety they feel. You might assume that they just don’t have any problems and everything’s smooth sailing.

But you know from experience that you yourself feel these emotions, and have these struggles as you are learning. If you do this, you may wrongly conclude: “It’s so easy for them and so hard for me! I must not be cut out for coding.” Or “I’m too old. I should have started when I was X years old, otherwise why bother starting at all.”

And then we are getting to the root belief: “I’m just not good enough.”

Having thoughts like these are, in my experience, one of the top reasons why people quit learning to code (or quit pursuing an worthy goal, for that matter).

One thing to remember is that our beliefs are just thoughts that we’ve been running over and over in our heads for a long period of time. A thought can be changed, and any beliefs that might be holding you back can also be changed with time. You can start today. And the best part: you have the whole #100DaysOfCode community cheering for you, and we are always here to help!

I am always reminded of this quote, when I think about learning or doing something worthwhile but scary:

“A year from now you may wish you had started today.” — Karen Lamb

The thing is, you are good enough and there is no better time to learn than now. Tomorrow will be one day late :)

Every time you feel like you are not good enough, remind yourself that you are. No matter how many times you will have to do it. It will work wonders in your life.

The healthy way we share experiences

The second, healthy way of checking in on your progress is to 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.”

That thought alone removes so many mental blocks and a lot of resistance to growth. Once you understand that on a deep level, you will always be able to return yourself to a productive state. You will have the antidote to failure —the ability to be resilient in the face of difficulties and not to quit no matter what!

There are plenty other benefits to joining the #100DaysOfCode family, like:

  • Becoming friends with other aspiring developers
  • Working on projects rather than tutorials (you can do some tutorials until you‘ve got the basics down, but don’t wait too long to start building projects)
  • Having real projects to show and talk about during job interviews
  • The opportunity to get serious about learning to code, and really commit to it

There are many more, but the main benefit of the challenge is having the environment that makes it more difficult to quit and easier to stay on track.

If you’re excited about committing to the challenge, you can do it right now.

Click here to tweet out your commitment!

Photo by Fab Lentz on Unsplash

A bit of history

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.

Instead I wanted to self-direct my learning, choose the tech I want to be learning, and then consistently make progress on it every day.

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 added: “But why stop at 3 months? You should make it an even 100 days! It just sounds better!” :)

When I came home that day, I quickly wrote some rules that I thought would help me make the commitment as effective as possible. I submitted this challenge to the freeCodeCamp Medium publication, and to my happiness and joy, they published it.

I didn’t expect for so many people to want to try the challenge out for themselves. But since then, thousands of people have committed #100DaysOfCode. Both the challenge and the community around just kept evolving.

The challenge also experienced a spike in growth when we encouraged everyone to commit to it in the beginning of year 2017 . We wanted coding to be their new habit for the year.

With that in mind, we recently launched the #100DaysOfCode website with a bunch of tools for taking the challenge.

Here are some of the most effective and useful improvements we made.

Adding Rapid Logging

I’ve noticed that the original progress logging format I made was sometimes too demanding. It featured: the day, what has been done, a link to the project, and a section to describe emotional state that day.

Some days people have time for this, other days they don’t. There must be a way to simplify the process, I thought. I’ve added a streamlined way of logging progress, where you just note which day you are on, and briefly describe what you worked on.

That way there is no pressure on following the format and the focus is on the coding and socializing with the community. You can see an example of a rapid log here.

Both types of progress logging are available for you to choose from on the repo.

Adding Rounds

After people would finish their challenge, a lot of them, seeing the positive effects, wanted to return to repeat it.

An idea was born for treating these multiple runs as “Rounds of the #100DaysOfCode challenge.” The benefits of the mental model of rounds are numerous.

One is that before each round, you can do some planning — listing what specifically you want to achieve in this run, what technologies you want to explore, what projects you want to build. Another is that you are preventing the burnout which happens when our brain doesn’t know if and when the mental and emotional strain will be over.

Think of work. You feel the most burnt out when we see no end of work in sight.

Still another benefit is having the ability to compare your rounds, which gives clues to what’s working for you and what is not as effective.

After you’ve finished a challenge, it’s good to take a short break, maybe for one or two weeks. I strongly recommend using that time to pause and reflect on what went well and what went wrong. You can look at your original plan and the outcomes and think of ways you can improve your process in the next round.

Some questions to use in your analysis:

  • Look at what types of resources you’ve gotten the most benefit from
  • What time of day did you feel the most productive?
  • Was there a trigger to the habit? In other words, what daily actions caused you to remember to start your coding session for the day?

Think of rounds as “modules” you use in code. They separate your learning into blocks, bringing clarity.

We adopted a new format to add the day you’re on onto the daily progress tweet: R3D25 — which means Round 3 Day 25.

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.


Adding More Ways To Connect: Slack and Discord

We’ve recognized that Twitter sometimes is not enough for the needs of the community growing around the challenge. So we added more ways to stay in touch.

As of today, there are at more than 300 members on our Slack channel. We created a couple of months ago, and it has been growing consistently. It’s a place for the #100DaysOfCode community to socialize, and get help and feedback.

The slack has channels that were made for specific purposes, keeping the needs of the community in mind: “get-help”, “get-feedback”, “share-resources”, “discuss-anything”, “discuss-tools”, etc.

If you have a project you are working on, and want to get some help from the community, you can ask for it in the Slack, where it’s easier to follow comments and replies than it is on Twitter.

We’ve also added a Discord channel because there is an opportunity to talk/video call to work together with someone on a project.

You can find the up-to-date invite links to join these channels here.

Adding YouTube Channel

I’ve created the #100DaysOfCode YouTube playlist where all the videos I’ve made about it so far are gathered. We plan to create more content around learning to code and changing habits). Some of them are clarifying the purpose, the rules of the challenge. Others provide strategies and advice on how to be successful in it.

Let me know what your questions are and I would love to create video responses to those questions which will help other people discovering the challenge and going through similar experiences.

Adding Community Articles

A lot of people have written about their #100DaysOfCode experiences and the lessons learnt in the process. These are listed on the official site under the “Resources” section. If you have already written an article about the challenge or are looking to write one — reach out to me on Twitter and I would love to include it on the website!

Take up the challenge and join the #100DaysOfCode family!

If you have friends who you think might be interested in taking this challenge, share this story with them.

And you can help more people see this here on Medium by clicking the clapping hands ( ? ) below. Don’t hold back — you can clap more than once on Medium. ? Help people discover the challenge and change their lives!