Advent of Code: reflections of a first timer

A while ago a colleague expressed surprise in hearing that I had never played Advent of Code before and she warmly recommended that I gave it a try. So when December came, I asked myself "why not?" and registered myself for the challenge.

Leaving ego at the door and enjoying the learning

If I were to summarize my AoC experience as a first timer in a few words, I'd say it was fun, a lot of learning, but also very humbling. When I first approached it, my idea was to spend 1 hour per day, solve the first part, and move on (I decided that due to time constraints part 1 would be a reasonable goal), but boy was I wrong haha!

In hindsight it was not very surprising that some of the challenges gave me a hard time: AoC relies on a lot of concepts that one normally learns while studying Computer Science. And since History programs don't typically include algorithms or recursion, and I rarely had a need for them in my day-to-day work, it has never been a secret that they are not my strongest suit.

Was I bummed when I reached the first problem that shut me down? Absolutely! But then I shifted my perspective and realized what an amazing learning opportunity it was. Rather than trying to complete all the challenges as quickly as possible, I took a step back and focused on the cognitive process instead. In practical terms that meant reading up other people's solutions whenever I got stuck, looking algorithms up and learning them, and most importantly making sure I completely understood what was going on.

I am still not done with all the challenges (to be fair, I am also addressing part 2 now), but I am now the strongest I have ever been when it comes to things like algorithms and recursion.

The more you play AoC, the better you become at AoC

This might be an obvious one, but it is nonetheless worth mentioning. The more I played, the more I became familiar and quick in handling recurring tasks. Take parsing some sort of a grid as an example: the first time I wrote the code for it, then the next time I just reused what I already had, then I stumbled on a challenge that forced me to rewrite it in a more robust manner, but again that meant ending up with an improved helper ready to be reused, rinse and repeat.

Basically what I am trying to say is: if it's your first time playing and you feel slow during the initial task, just know that you will get faster in the coming days and years.

Technical tests resemblance

If you have been interviewing for software engineer position, you are bound to have stumbled on some kind of automatically-evaluated programming test of sort. I am personally not a huge fan of those (neither as an interviewer nor as a candidate), but if your are interviewing around they are hard to avoid. What struck me is how much those tests resemble parts of what I had to implement for Advent of Code. Don't get me wrong, you can totally pass those tests without any AoC experience. Though if I had played AoC before, I'd have probably been a lot quicker in solving them. And that means less of my time spent on them, which to me is a huge win - especially when you are in more than one interview process!

Resources

  • Advent of Code - the competition runs in December, but all the previous problems can be played all year around
  • @xavdid does Advent of Code - great writeups with step by step explanation of the solutions (written in Python)
  • AoC subreddit - solutions, hints, questions, and whatnot
Go Top