Completing Advent of Code for the first and probably last time
Why did I do this to myself?
I completed Advent of Code for the first time. I'm probably not gonna do it again.
Am I glad I did it...I think I am? There were certainly a lot of times where I regretted my stubbornness and should have stopped, and it's safe to say that overall what fun and satisfaction I did get from solving the puzzles came nowhere close to offsetting the time I spent on it.
This is all a "me" problem, of course. The amount of effort that must go into this every year, across such a wide range of subject matters, is staggering. I have a lot of respect for Eric Wastl and everyone involved in creating and running these.
It just took me so much time to do. I didn't time myself, but I think 100 hours total is probably a fair estimate. I don't think I have a healthy relationship with this kind of thing. Even though I wasn't competing with anyone, I really felt a need to prove to myself that I could do it, and while in the end I could, it came at the expense of neglecting all my other hobbies. The books are piling up and those last fifteen or so poor Astro Bots are still awaiting rescue.
I will give myself some small credit at least: while I needed pointers from the /r/AdventofCode subreddit on a fair number of the puzzles (and full, step-by-step explanations of a few), I never looked at anyone else's code until I had a working solution myself, and I never submitted a correct answer without fully understanding my solution and why it worked.
It's not all gloom though, there are some definite positives I got out of it.
Last year (my first attempt) I chose Clojure and gave up around day 15—Lisps are very cool and something I want to explore more, but trying to solve tricky puzzles in a language so different to any programming I'd ever done before was a bit much. This year I chose Swift—a language which I am very fond of but never get to use at work and so have little practical experience with—and I feel like I finished with a much better understanding of it and an eagerness to do more. Particularly devious puzzles notwithstanding, I felt myself speeding up in the back third because I was spending far less time hunting down dumb mistakes in my code and better utilising what the language offers.
I also got to solve the sorts of computer science-y problems that you rarely see in many web development roles and that, realistically, I haven't encountered much since university. At work I've optimised plenty of functions, decimated query runtimes, and delivered lots of features without upsetting an established codebase. To date, I've never had to implement a pathfinding algorithm or identify the errors in a simulated 46-bit full adder in a professional context. More's the pity.
That brings me onto my only real disagreement with how AoC is presented: the claim on the About page that "a little programming knowledge and some problem solving skills will get you pretty far". Personally, I find this to be highly unrealistic and will set a lot of people up for disappointment. I accept that it's a challenge for all skill levels, but if you don't have a basic familiarity with certain aspects of computer science and/or maths—graph traversal, dynamic programming, memoisation to name just a few—you are very unlikely to be able to solve many of the puzzles at all.
In many ways it's not unlike cryptic crosswords: what appears to be indecipherable nonsense is actually a well-defined set of rules and patterns that those in the know can spot. And while I'm sure you could work it out without knowing those rules, you're about as likely to as you are to invent Dijkstra's algorithm from first principles.
Anyway, this post only has one real purpose: if you're reading this, December 2025 Matt, just play the damn videogames and enjoy your Christmas break.