On May 17th, I completed my first round of #100DaysOfCode. In case you haven’t heard, #100DaysOfCode is a challenge, or movement, started by Alexander Kallaway for people interested in coding. The basis of the challenge is that you publicly commit to coding every day for at least 100 days. If you want to read more, Alex wrote an article describing it here.

I decided to study programming seriously in December 2016, when I found freeCodeCamp. I would have started the #100DaysOfCode challenge at the beginning of 2017 to kick off the New Year, but I was also starting my second semester of grad school and didn’t know if I could commit to the challenge.

After coding more and more each week between December and February, I made the decision to join the challenge. I heard the challenge had a strong community and I knew I wanted to improve my coding skills quickly. What better way to do it then to code every day?

My Stats

Numbers are awesome, so I thought I should start off with the basic stats:

  • Total hours coded: 126.5 hours
  • Average time spent each day: 1.3 hours
  • Longest day: 4.2 hours || 250 minutes
  • Total days missed: 1 day
  • Certificates received: The Udemy Web Developer Bootcamp by Colt Steele
  • fCC progress at the end of 100 days: Basic Algorithms — Truncate a String

How I modified the rules

Before I explain what I changed, I have to say that I really respect Alex and the rules he developed by creating the #100DaysOfCode movement. However, I decided to modify two rules:

  1. “I will code for at least 30 minutes every day for the next 100 days.”
  2. “The time spent doing tutorials, online courses and other similar resources will count towards this challenge.”

The reason I decided to change the first rule from 1 hour to 30 minutes is because I had a lot going on between February and May. I split my time between 3 part-time jobs ranging from 1–20 hours/week each, two graduate classes, and coordinating a summer study-abroad trip. My plate seemed full, but I had to figure out how to make room for coding and this challenge. It seemed fair to change this rule on one condition: Total Hours Coded === 100+ hours

I modified the second rule because I was starting out as a #CodeNewbie. Because of my learning style and limited amount of time, I needed tutorials, online courses, and other resources to count. I agree with Alex and the rest of the community — real learning happens when you develop your own projects. However, I’m the type of person that benefits from those courses and tutorials because it gives me the confidence-boost I need to venture out on my own.

What I struggled with

I struggled through freeCodeCamp challenges and coding problems that I couldn’t figure out within 30 minutes. I remember feeling overwhelmed thinking, “How in the world am I ever going to feel confident in my skills when there is so much to learn?”

In the beginning of freeCodeCamp, I had a hard time working through problems. I would try a challenge for 30 minutes to an hour, and if I couldn’t figure it out, I felt a sense of frustration. I felt anxious. Why couldn’t I figure it out quickly enough? What was I doing wrong and why didn’t my code work?

Instead of working through the problem on my own, I would peek around on the forums and immediately seek help instead of struggling a little bit longer. I did not appreciate the struggle enough to fight through it. I gave up quickly and tried to eradicate any discomfort.

It felt like I was cheating- cheating myself of the pain that comes packaged with learning a difficult subject. I wanted to have the knowledge without putting in the time and effort.

There were days where I felt like I was progressing quickly and other days where I thought it would be impossible to even finish one programming challenge. However, #100DaysOfCode forced me to progress each day and learn something new.

What I learned

I feel like I learned a lot about web development over these 100 days that it’s hard to put into words. If I boiled it down to two main lessons, it would be these two:

You have to be willing to struggle

As you probably know, learning to code isn’t easy, but it’s achievable if you put your mind to it. The first month was tough, but at the end of it I felt an increase in my abilities.

Slowly, I started to feel a stronger grasp on HTML, CSS, and JavaScript. I started to connect the dots between concepts and connect what I learned to what I see on the websites I browse every day. When I read Medium articles or blog posts related to coding, I felt a new sense of understanding because people wrote about things I was learning. My level of self-confidence increased as I started to believe that soon enough, I would be able to start a career in this field.

One of the struggles is knowing that the code won’t always run bug-free the first time. I’ve learned to lower my expectations on how fast I can learn a concept or code a project, knowing that the end result shouldn’t be the reward. The reward is the struggle and what you gain from that experience.

There will always be a day where you feel like you’ve hit a wall and can’t go further. I learned to tell myself, “the next time, it will work” and to battle through the challenge a little bit longer before asking for help. By using that mindset, I’ve found a way to always stay positive and fight through adversity.

Knowledge and expertise will come with time

There is a lot to learn in the field of programming. It’s impossible to learn everything, but if you stick to it, you can become knowledgeable in a few areas. That’s what I’ve observed from other developers and people with experience in the field. It won’t happen overnight. They have put in hundreds and thousands of hours to achieve a level of expertise. And of course, we will have to do the same.

There’s no “get rich quick” formula. It takes grit and dedication. I originally planned to finish the front-end certificate by the end of the challenge, but I changed course multiple times and didn’t achieve that goal. I may have been able to do it if I had more time, or if I rushed. I’ve realized that speed is not the key here. The key is to learn to code and to learn it deeply. It’s okay if you jump around a little, as long as you’re constantly learning and moving upwards. There is not one “correct” path to make it in this field.

Lastly, I remind myself that if I want to make this my career field, shortcuts will not benefit me. The only way I’ll succeed is at a pace where I will retain the information and be able to apply it in the future. I choose not to focus on the end result, but on the journey — no matter how long the road may be.

Key Takeaways

The key takeaways for me from undergoing and completing the #100DaysOfCode challenge are these:

Make coding a habit — if you make coding a habit, you will learn more and be able to progress quicker than if you only code sporadically.

Learn to love the struggle — if you can’t enjoy the pains of programming, you’re going to face all the more difficulties when you advance to complex problems.

Community is essential — Never underestimate the power of community. I wouldn’t have finished this challenge without the supportive communities on Twitter, freeCodeCamp, CodeNewbie and Chingu.

If you’re considering the #100DaysOfCode challenge but worried you don’t have time, make adjustments to the rules for your challenge. I pledged to do at least 30 minutes a day but ended up averaging a little over an hour. Yes, 100 days sounds like a lot, but you’ll reap so many benefits. I highly recommend taking on the challenge if you’re serious about learning to code. If this hasn’t convinced you yet, search #100DaysOfCode on Twitter and see all the people involved.

My hope in writing this reflection is that it gave you enough insight into the challenge and you feel motivated to take it on yourself!

P.S.- If you haven’t heard, the Chingu Cohorts were started by a fellow fCC camper to create a smaller community that mimics what you might receive from a bootcamp. I’ve joined two so far and can’t recommend them enough! You can learn more here.