I don't have a technical background.
I used to work in Market Research, and before that I was doing a degree in Modern Languages. In 2017, I took a coding course with Code First: Girls. This is how I got into tech and what led me to start a new job as a Partner Engineer at Twitter.
A few months into my new job, I felt like I wasn't improving my coding skills fast enough. I needed to find the motivation to code outside of work and force myself outside of my comfort zone to learn new things. This is what led me to take on this challenge.
This post is based on a talk I recently gave about my experience of the #100DaysOfCode challenge.
What
The #100DaysOfCode challenge was created by Alexander Kallaway when he became frustrated at the "slow speed of [his] progress in learning to code" (you can read more here). Alexander wrote an article about this and, as others read about the challenge, many decided to join in. Since 2017, thousands of people have taken up the challenge.
There are two rules:
Commit to coding for minimum 1 hour every day for the next 100 days.
Publicly commit to the challenge and Tweet your progress every day with the #100DaysOfCode hashtag.
You can add any other rule that will help you reach your goals and fit your schedule. For example, I added the following rule: "In order for the hour to count, I have to be working on something new." This meant that the regular day-to-day coding I did as part of my job didn't count.
Why
Join a community of supportive, friendly, motivated and like-minded individuals
The community is very active on Twitter and Slack, for example, and the support I got from others during the challenge was very motivating.
Make new friends
I was surprised at how many people (both at work and outside of work) who follow me on Twitter approached me to ask how the challenge was going. I had conversations that I would probably never have had without this challenge.
Work on projects, not tutorials
Every beginner will one day have to shift away from copying other people's code and following tutorials to start writing their own code. It's a difficult shift to make. The nature of the #100DaysOfCode challenge, and the fact that it spans a long period of time, will help you make this shift.
Opportunity to really commit to learning to code
I'd been wanting to code more for a while. This challenge forced me to not just think about it, but actually do it.
An active GitHub profile
You can clearly see how active my GitHub profile became when I started taking the challenge in January. It's also clear that I needed a bit of a break at the end of the challenge in April. But after that I kept on coding. The #100DaysOfCode challenge is a great way to build a new habit and consistency.
Keep track of your progress
It's easy to not realise how far you've come. Being able to look back at the Tweet thread that tracks what I did every day during these 100 days helps me see how much I learnt and achieved in that period of time.
It's a good excuse to Tweet every day!
Challenges
Finding the time
This was one of the hardest aspects for me. Work takes up a lot of my time, and I'm always busy when I'm not at work. I had to cut down the exercising and socialising to find an extra hour every day to code.
Not knowing exactly what technologies to learn
The diversity of technologies and programming languages that exist is one of the most exciting aspects of tech. And yet, as a beginner, it can also be daunting and it can be hard to know what technologies to focus on.
Not knowing what resources to use
The Internet is brimming with available resources (both free or for a fee). As much as this is amazing, it can also be overwhelming. How do I know which resources are good and trustworthy? How do I know what formats work well for me? Etc.
Feeling hopeless when progress is slow
100 days is a long time and there will naturally be some days that feel more difficult. It's normal to feel discouraged at times. On days like that, it's important to take a step back and appreciate how much you've done so far.
The imposter syndrome is real!
Tweeting about your progress daily can make you feel vulnerable. "What if people think I'm too slow or that what I'm learning is too easy?" "What if I'm not good enough?" It can be hard at times, but it's important to learn to block out these thoughts and ignore them.
How to succeed
Find a way to hold yourself accountable
This was really important for me. Knowing that my colleagues, my managers, my friends were following my progress is what ensured that I didn't give up in the harder moments.
Have a broad plan
You don't need a specific plan, but I would suggest having a list of things you want to do or learn about. My list included items such as using my Raspberry Pi or refactoring a Python project to be object-oriented. As I made my way through the challenge, I found out about new technologies and concepts and added these to my list. This meant that, when I was stuck for what to do next, I could simply revert back to my list and get started on the next item.
It's ok to have a bad day
You will have bad days. Embrace them and Tweet about it. You will likely get support from the community. Having a bad day is part of the journey. Talking about it will also help others feel less lonely when they have a bad day.
It's ok to take a few days off
Similarly, it's important to take a few days off if you need to. Midway through the challenge I took 3 days off, to enjoy some time with my family. I was feeling particularly tired then, because of a busy period at work and in my personal life. Taking a short break enabled me to feel energised and motivated enough to take on the second half of the challenge.
Consistency really matters
Consistency is what will help you develop a habit.
Persevere
It took me ~70 days before I started feeling the benefits of the challenge, before I started drawing connections, and before I started feeling that this challenge was worth it! Learning takes time. If I'd given up any earlier, I would never have realised how much I could learn during this period of time.
Don't be afraid to ask for help
I was lucky to do some code pairing sessions throughout this challenge. Sometimes, you just need someone to sit down with you and explain a concept or help you debug. Don't be afraid to ask for help: there will always be someone out there who is willing to help you.
Resources
The community is very active and there are many resources to help get you started and support you along the way. For example:
- The #100DaysOfCode official website
- The community on Twitter
- The #100DaysOfCode Slack workspace
- Podcast episodes: CodeNewbie and Learn To Code With Me
A snapshot into my learnings
I chose to get a broad exposure to different technologies, concepts and languages rather than focus on one big project during the 100 days. Here are some examples:
Top comments (9)
Great writeup, thanks. It looks like you accomplished a lot!
Yeah - that feeling never goes away :/ There's just always so much to do and learn! And you never quite know if you're doing it the "right" way, or the "bad" way, etc...
I've just learned to lean into the feeling of discomfort that comes with learning something new, and just keep pushing! You really hit the nail on the head with:
Consistency (momentum) can really make or break a challenge like this.
Thanks for the post! It's great inspiration.
Thanks for reading! I'm glad you enjoyed it. It's nice to know that all of these feelings are normal :-)
You've inspired me to give this ago.
Yayy!! So glad to hear that! Let me know how you get on.
Very inspiring article thank you!
Congratulations - this is brilliant!
Any particular time of year? Or you just start anytime?
Anytime that suits your schedule for the next 100 days ;-)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.