In early December I discovered, and decided to take part in, Advent of Code. I was surprised that I'd never heard of it before, but after seeing folks I follow on Twitter talk about it, I was spurred into having a go. It's not like I've got much else going on atm. In the end, it turned into a little mini-obsession for a period of time. That certainly wasn't the healthiest approach, but I quite enjoyed having something to focus on, and the challenge it offered. Here are some retro-like reflections of the things I liked, didn't like, and would try differently next time around. Of course, it goes without saying that these are my personal musings, observations, and preferences. No value judgements are cast on the event, the creator, other participants, or indeed you, dear reader.
😀
-
Having puzzles/problems to focus on, mentally process, and try to solve, is something I thrive on. Too much idling and no "work" makes Jaz a grumpy boy.
-
Binary outcomes. There being a definitive answer to each and every challenge gives you a clear goal to aim for. Few things in life/work are ever like that, so it was nice to have something that occupied my mind with that kind of outcome attached. No ambiguity, no grey. I think that appeals to my nature.
-
Doing it out in the open. I don't have a "following", so I wasn't expecting anyone to notice or pay attention to what I was doing, but putting all my solutions in a public repo, and contributing to the conversation on the official #AdventOfCode hashtag made it feel like I might have some kind of an audience. That definitely influenced what I did and my motivation to carry on with it (call it, Public Perception Driven Development, if you will).
-
I completed many more exercises than I ever anticipated I would. All in, I completed all up to and including day 16 (with the exception of day 13), and then part 1 of days 17 and 18. I can't speak to the quality or elegance 🙄 of any of my solutions, but I'll leave that for another time and place.
-
I learnt a few things along the way. In my experience, coding in a professional context has never required me to implement things like bit-shifting and masking, Chinese Remainder Theorem (though I still don't really understand that one), or writing a compiler. It was nice to be exposed to new/different things and in some cases, rise to that challenge.
😒
-
I spent way too long on some of the exercises. Moderation is not a strong point of mine, so in situations where I probably should have stopped, taken a break, or taken inspiration from other peoples solutions, I didn't, and stubbornly persisted. Not only that, I think the difficulty level meant I had to spend a lot of time to stand a chance of completing the exercise. I guess that's part of the challenge, and therefore fun. But for me, it probably become too much of a time sink around the mid-teens. Or maybe I just need to get "smarter".
-
The element of competition. I hate competition. So much so that I probably sense it long before it's actually there. To be fair, there's nothing remotely competitive in any of the messaging around the whole series, but by virtue of there being a leaderboard, and submissions being timed, it does exist, and you can catch a whiff of it on public channels.
-
Taking part solo. Whilst there's an Advent of Code community, and lots of people take part in it, no one that I personally know was taking part. Having folks on hand who you are comfortable being vulnerable around would have improved the experience, by being able to bounce things off others or discuss various approaches. I was a little envious of those who were taking part with colleagues or friends, and hearing about their experiences as a group. I need to get me some of that next time.
-
Not completing all of the challenges (yet). I'll probably fixate on that more than than the fact that I completed way more than I had anticipated. 😖
🤔
-
I should probably try setting a time limit per challenge, and if I've not completed it within that time, making an explicit decision on whether to continue or not. That ought to help with bringing some moderation to my efforts. He says.
-
Use it as a vehicle for some other objective. I saw people taking part using a language outside of their wheelhouse, which I thought was a great thing to do. Making the event about that might help to broaden the definition of success/failure. Though that takes away the binary nature that I said I liked earlier. Hmmmm 🤔
-
If I take part again, I'll try to proactively rope in some folks I know. Either that, or get involved with some group/community before the event.
-
Heed Erics advice and take part whenever, not just on the days when the exercises are released. There are several years worth of challenges that I can still get involved with. I imagine I'll be having a stab at some of those in the coming weeks. I wonder if taking part outside of the usual timing of the event would be a better experience for me?
Overall, I'm certainly glad I encountered Advent Of Code, and I'm anticipating trying my hand at past editions, as well as future ones. And on a final note, I cannot imagine the amount of time and effort that goes into devising all the challenges, and running the whole thing without a glitch. Major props to Eric (and team?) for making something so many folks take part in and so greatly enjoy.