In the article I'm going to describe what is 'Advent of code', what is my view on this. At the end of this short post I'll share other interesting coding challenges and AoC relates links which are worth taking a look.
Advent of code is a coding challenge with concept similar to advent calendar. Instead of taking a chocolate every single day for 24 days (starting on 1st of December), we have a coding puzzle to resolve on the site. After resolving the exercise we got a star and a link to the part 2 of the exercise (another star to get). The complexity of exercises is between easy and medium (the best results on leaderboard are between 1 and 2 minutes for both parts of the task what is insane!)
The idea behind such coding activities like Advent of Code gets inspiration from kata in terms of combat sports. Let's have a look at the definition of kata from wikipedia:
kata is a Japanese word (型 or 形) meaning literally "form" referring to a detailed choreographed pattern of martial arts movements made to be practised alone, and can also be reviewed within groups and in unison when training. It is practised in Japanese martial arts as a way to memorize and perfect the movements being executed.
Coding kata is the coding activity a bit more different than just creating a production code of the application. The programmer who practices kata is very similar to a sportsman doing his training. If you think a bit more about this, athlete doesn't finish his job just after playing a match. He practices on daily basis. As software engineers we can't afford to perform full training after our working hours because it would take too much of our time. We have families, hobbies and many other important things to do so a full training is not an option. But we can perform smaller training units just to practice not very common daily tasks like bit operations, creating simple search algorithms from scratch or building our own data structures. And that's the coding kata! Same as in sport word, there is a big difference between developers who do training activities and the developers who don't care about that.
- You can try to code using language which is not you first choice (like GoLang in my case, I use C# at work),
- You can share your solution and discuss that with your coding friends,
- There is a good reason to create your first github repo if you haven't created it so far
- edabit - coding challenges for beginners
- Codewars - coding challenges on medium level
- LeetCode - a lot of hard to resolve algorithm problems
- Awsome Advent of Code - a github repository with a lot of AoC solutions in many programming languages
- Advent of Code: Behind the Scenes - conference talk
- Advent of Code is a site with daily coding puzzles,
- Solving small programming tasks on daily basis make you better developer,
- It's not too late to start resolving AoC 2020. It's a good opportunity to create a github repo and share it with dev community!
Thank you for reading to the end! I hope that my tips will help you to create more reliable code.
If you like my posts, please follow me on Twitter :)