Advent of Code and what a puzzle is for
The leaderboard broke years ago. The value was never the leaderboard.
Advent of Code is running again, and so is the annual argument about AI solutions and the global leaderboard.
The argument is settled in practice: models solve most early puzzles in seconds, the global leaderboard is not a meaningful competition anymore, and Eric Wastl has asked people not to use AI for leaderboard attempts. Some people ignore that.
I think the argument is also beside the point, and I want to make the case for what these puzzles are actually good for.
what the leaderboard was ever worth#
The global top 100 was always a competition between a small number of extremely fast competitive programmers, most of whom had done thousands of hours of practice specifically for this. For everyone else it was scenery.
If your enjoyment depended on that leaderboard, it was already not for you before any model existed.
what the puzzles are good for#
Practicing a language you do not know. This is the best use and it is what I do every year. Twenty-five bounded problems with clear specifications and verifiable answers is an excellent scaffold for learning a language's idioms. You are not fighting the problem, so you can concentrate on the tool.
Do it in something uncomfortable. Rust if you write Python. A Lisp if you write Java. Uiua or J if you want to genuinely reconsider what a loop is.
Finding the gap between working and good. Almost every puzzle has a naive solution that works for part one and does not terminate for part two. That gap — where you have to actually think about the algorithm rather than just express the problem — is where the learning is.
That is also the part models are least reliably good at, incidentally. They will write the naive version confidently.
Reading other people's solutions. The subreddit's solution megathreads are one of the better learning resources in programming. Twenty implementations of the same problem in different languages by people of different skill levels, all solving something you just spent an hour on, so you have full context.
You will learn more from reading five solutions after solving it than from solving three more puzzles.
A shared thing. For a few weeks in December a lot of programmers are all thinking about the same problem on the same day. That is a rarer thing than it used to be and it is worth something.
on using a model#
I do not think there is a moral question here for anything except the leaderboard, where the request is explicit and honoring it is basic decency.
For everything else: it is your time and your learning. If you use a model to solve everything instantly, you will finish faster and learn nothing, which is a trade you are allowed to make and which defeats the entire point of doing a programming puzzle for fun.
The interesting middle ground, which I recommend: solve it yourself, then ask a model to critique your solution. "What is the time complexity? What would break at larger inputs? Is there a standard algorithm for this I should know?"
That is a genuinely good use. You get the learning from solving it and you get the thing you did not know from the critique. It is closer to having a knowledgeable colleague than to having someone do your homework.
the thing that actually bothers me#
Not the puzzles. The people who have decided that because a model can do the easy version of something, learning to do it is pointless.
That reasoning has been available for every tool ever built and it has been wrong every time. Calculators did not make arithmetic understanding useless. Compilers did not make understanding what the machine does useless. IDEs did not make knowing the language useless.
The understanding is what lets you tell when the tool is wrong. That has never been more valuable than it is now, when the tool is wrong fluently.
Go do the puzzles. In a language you do not know. Slowly.
— Dom, December 5, 2025