Reflection on the 100 Days of Code challenge
What is this challenge about?
Alexander Kallaway invited people back in 2016 to take on a challenge of coding at least one hour a day for 100 days.
The above link gives a full description of the challenge. The main rules in short: You need to code at least one hour every day and it really means coding. Reading and watching tutorials don’t count as well as you can’t skip two consecutive days.
You need to post your progress on Twitter (#100DaysOfCode) and can optionally log what you did on that day in a GitHub repo diary.
Why did I enter the challenge?
Challenges like these are great opportunities for me doing something different and pushing myself beyond my comfort zone.
First of all, I’m not really hooked into social media as I’m just not that show-the-world-what-I-have-eaten-for-breakfast type of guy. I had to tweet every day and it was definitely something I hadn’t done before. This might not seem to be a big deal for most people but you know, if I have nothing to say, I’ll stay quiet.
The other reason why I joined this challenge was to keep myself more accountable. I normally don’t have problems with getting up early and doing whatever I have to do to achieve a goal but the 100 Days of Code challenge pushed me even harder to start new projects (see below) and actually finish them off.
I also had the expectation to learn something new. I had plans on what I wanted to learn but encountered some unexpected stuff which I eventually used in my projects.
The work done
As I’m a full time developer those 100 days were all about side projects and pursuing personal interests. In retrospect, I could have completed more projects during the timeframe of this challenge.
Although this time could have been filled with more content produced, I’m still happy with the end result because, believe it or not, after 8+ hours of continuous coding and concentrating it wasn’t always fun to sit down and spend one more hour at my laptop.
The other thing is that I like to think over what I want to do. It happened that I deleted an entire day of work because I was just not happy with the result. It sucks but I don’t mind admitting when I’m wrong. This behaviour led to my first project being completed later than I expected.
I started the challenge on the 8th January and completed it on the 28th April. I usually had one day off every week, it was either a Saturday or a Sunday. Sometimes I could code for more than an hour, which covered the day skipped, so the one hour of coding was completed in average on a weekly basis.
Now let’s briefly talk about the work I did in those 100 days.
This blog (Day 1 - 50)
I started writing this blog late last year and it initially ran in Wordpress. But then I thought that I could create my own. I work as a web developer after all!
I tried several concepts and eventually settled with GitHub Pages and Jekyll. It took me 50 days to get to the end result but this time could have been halved if I made the decision on the stack earlier. Plans had changed.
In the first half of the 50-day period I learned about Pug.js template engine. My original idea was to create the backend in Node.js and use a template engine. I don’t really like EJS and even less like Handlebars. I wanted something else. This is how I got to Pug, which I liked much more than the other two options.
But then I thought that I didn’t want to pay for either hosting or storage or maintenance. I don’t collect e-mail addresses, neither do I promote my non-existing courses or webinars and until this changes, I don’t want to pay more than zero bucks for my blog.
This decision led to the sad farewell to Pug and the MEAN stack, which was the other option.
I turned to GitHub Pages at this point instead and thought it would be a good opportunity to learn webpack. Little did I know what I had committed myself to.
I found it hard to learn webpack and I’m probably not the only one on this planet who shares this opinion. At the time of working on the configuration I almost knew the documentation by heart. I wanted to tell it to my children as a bed tale. Poor kids.
Configuring webpack is an entire project by itself, and I eventually managed to get over the obstacles and set up everything I needed.
I used Sass with the 7-1 architecture and tried some funky CSS as well.
Angular 5 e-shop (Day 51 - 80)
Another dilemma of mine was to learn React or refresh and build on the existing Angular-experience? I thought it would be useful to get deeper in Angular rather than getting only superficial experience in React and just scratching its surface.
I followed Mosh Hamedani’s awesome Angular course because it incorporates Angular with Firebase. I had wanted to learn how to use Firebase for long, so I decided that I would build the project in his great Angular course.
Mosh is a most competent teacher and it’s not his fault that I didn’t like Firebase. I found it hard to work with and I’m not convinced now that I should use it instead of MongoDB and Node.js. You can argue with this statement (and please do so on Twitter if you feel like) but this is how I feel about Firebase. The concept is good but the API is not the best to work with in my opinion.
The Angular part of the course was a great refresher and I managed to complete this project in 30 days.
Hackerrank challenges (Day 81 - 100)
Only 20 days left, so I had the choice of learning a new library (like React) or a mobile language and create an app. But I know myself better than anyone else and I knew that this time period would probably not be enough, so I decided to work on some brain stimulating exercises.
I love solving problems and thinking about them. I’m one of those guys who enjoys sitting over puzzles and exercises. Time flies when I work on the these and it feels great when I find a solution. This odd (weird?) behaviour probably stems from my background in and my love for Mathematics. (No, we don’t have to be friends.)
So I spent the last 20 days solving puzzles and feel that my problem solving skills have greatly improved.
What is the benefit of solving problems other than your ranking? Well, to be honest, I don’t give a damn about my ranking. I’m much more interested in the long term benefits of being able to find the most suitable solution for various situations. I find it important to be able to recognize certain types of patterns and have an idea how to start solving them at least.
It’s like high school maths. You solve certain problems with the same approach and it will become a skill after a lot of practice.
The price paid
I also faced some challenges while participating in the challenge because my life (as opposed to celebrities and self-help book authors) runs on a pretty tight and boring schedule. (I’m not complaining though, I wanted it to be like this.)
As I mentioned above I found it hard to sit down to code for an additional hour while having a full time job as a developer and working on additional side projects. It wasn’t until around Day 70 when I started to feel that it will be too much of computer work. You know, if you have eaten 2 kilos of strawberries, the third one won’t go down as easily even if you love strawberries.
I started to feel that I don’t even want to see my laptop at all. I started to sleep less because of staying up until late and skipped my regular morning exercise. I often had hard time falling asleep because my brain was working on the next step. I got very exhausted by the end of the challenge.
It was great to get to the end.
Conclusion
Completing the challenge had some rewards as well. I definitely think that it was worth entering it despite the disadvantages mentioned above.
I feel that I have grown as a developer. I have a new shiny blog, know what stack I don’t want to use in the future (unless I really have to), configured webpack from scratch and the number of my followers on Twitter increased by 10. What else do I need?
I will probably continue with a next round of #100DaysOfCode but only with topics that are not related to my day work to make the challenge more interesting. It would be great to develop a mobile app, for example.
But I have some other ideas as well. I would also like to learn to better play the guitar (#100DaysOfGuitar?) and it would be great to finally read some good books (#100DaysOfRead?).
If I try new things for 100 days each, it will be three areas each year which I can be better at. I’m sure that I would grow as a person as well throughout this journey.
Thanks for reading and see you next time.