I did Advent Of Code this year; this is what I have learned
The Advent of Code (AoC) is a yearly programming challenge that has kept programmers around the world entertained since 2015. Every year between December 1st and 25th, a set of Christmas-themed programming puzzles is released, encouraging participants to test their problem-solving skills and explore the depths of their programming languages. Some developers use this challenge as a way to learn a new programming language; others decide to make it fun, as this guy who decided to run all challenges in MS-DOS 6.22.
This year, I decided to tackle the challenge of completing the AoC puzzles using Python and without relying on external libraries; nothing funny but simple in order to get used to the challenges.
The Learning Curve
I had tried participating in AoC in previous years, but unlike previous attempts, this time, I managed to kickstart my coding marathon from day one. My motivation was fueled by the desire to learn new algorithms and gain experience in solving complex programming problems.
The early puzzles were relatively easy, allowing me to get comfortable with the challenge format and build confidence in my Python skills, trying to be as intuitive as possible and using unit tests. As the days went by, the challenges became more intricate and demanding and I started to leave behind the elegance; I found myself dealing with concepts that I am not used to work with like graph theory, and was constantly challenged to think creatively.
The Frustration Factor
While I enjoyed the learning process, there were moments of frustration along the way. Some of the puzzles required specific algorithms to solve, and the pressure of meeting the daily deadlines at work often led to moments of discouragement when I couldn't crack the code. In addition, the inclusion of several 2D platform challenges was a bit annoying for me, as I found the mechanics of these puzzles less intuitive and more tedious than the text-based challenges.
Also, there were other challenges that require to know that specific algorithm; For the developer that already knew which algorithm to use, the challenge could be a good experience, but It could be a nightmare if you don't come up with the appropriate algorithm. That's what happened to me to some challenges, for instance the Dijkstra Algorithm (never too late to learn it).
The Rewards of Adversity
Despite the challenges and frustrations, I am grateful for the experience I gained through the Advent of Code. I learned a vast array of new algorithms, deepened my understanding of Python, and developed my problem-solving skills. I also learned the importance of perseverance and the value of learning from my mistakes.
One of the most humbling experiences was witnessing the creativity and ingenuity of other participants' code solutions in reddit. Some solutions were incredibly elegant and efficient; I found inspiration in these examples, motivating me to strive for greater proficiency in my future coding skills.
The Uncertain Future
While I am proud of the progress I made during the Advent of Code, I am hesitant to commit to participating again next year. The challenges were great, but they also proved to be overwhelming, especially during the final days of the event while dealing into end-of-year duties at work. Maybe my approach will be different, like trying to learn a new language or use a specific library.
My experience with the Advent of Code was a rollercoaster of emotions, ranging from excitement and satisfaction to frustration and despair. Despite the challenges, I emerged with a wealth of knowledge and a newfound appreciation for the power of programming. Whether or not I participate in AOC again, I am confident that the lessons I learned will help me in my future, and I recomend that you do it next year, at least once, so that you unlock new dimensions into your learning.
Happy coding! 🚀