For twenty-five days each December, Advent of Code publishes a small programming puzzle at midnight Eastern Time. Two, in fact: part one is usually gentle, and part two takes the same problem and twists it until you have to think again. There is a story attached — elves, snow, a sleigh that needs repairing — and there is a personal input file, different for every participant, so you cannot simply copy an answer from a friend. It is free, it works in whatever language you prefer, and it has quietly become a fixture of many programmers' year.
The format is deliberately plain. Each day you get a puzzle description, a worked example, and a link to your own input. You feed the input into your program, compute an answer, and submit it. A correct answer earns a star; part two of the same day earns a second one. Fifty stars in total, and no real penalty for a wrong submission beyond a short cooldown after several misses.
Puzzles unlock at midnight Eastern Time, which is convenient for some time zones and miserable for others. The global leaderboard rewards raw speed for the handful of people who care about it; private leaderboards are the sane option, letting a group of friends or colleagues compare star counts over the whole month without anyone waking up at 5 a.m. Everything stays online afterwards, so a puzzle you skip in December is still sitting there in March.
Most practice platforms hand you problems with the technique already in the title: binary search, dynamic programming, two pointers. Advent of Code does not. You get a description of behaviour and have to decide what kind of problem it is. That decision is the part that interviews and real work actually test, and it is the part that decays fastest when you spend a year gluing services together.
A few things make the event unusually good at exposing gaps:
The first week is a warm-up: string handling, small simulations, a bit of arithmetic. Do not be fooled into thinking the rest of the month will feel like that. It is also the best week to try an unfamiliar language, because the cost of a wrong turn is twenty minutes rather than a whole evening.
Around days 7 to 12, the puzzles start asking for proper data structures. Grids appear, then breadth-first search, then something that needs a priority queue or a set of visited states. This is where a small personal toolbox pays off: a coordinate helper, a BFS template, a priority queue wrapper. Writing them from scratch on day 15 at 11 p.m. is not character-building, it is just slow.
From the middle of the month onwards, expect graph problems, dynamic programming, interval arithmetic, and occasionally a puzzle that asks you to build a small virtual machine and then extend it across several days. Days 20 to 25 escalate fast, and the final day is often one long, satisfying problem that pulls together half the techniques you used earlier.
Not every day is worth your evening. If a puzzle demands a technique you have never met, spending four hours grinding is usually worse than spending forty minutes on an honest attempt, then reading a solution write-up and reimplementing it yourself. You keep the star, you keep the evening, and you learn the technique. The only rule worth keeping is that you write the code yourself rather than pasting someone else's answer.
Using Advent of Code to learn a new language is a popular and genuinely useful idea, with one caveat: the difficulty curve does not care about your learning goals. A workable compromise is to use the new language for the first ten days or so, then switch to your strongest one when the puzzles get heavy. Nobody is scoring you on consistency. If you do switch, keep both solutions in the same repository — the comparison is instructive.
Private leaderboards with colleagues turn the month into a low-stakes shared ritual, and a group repository where everyone commits their daily solution produces more interesting reading than any tutorial. The daily solution threads are worth visiting after you finish: seeing a two-hundred-line approach reduced to twelve lines of Python is a better lesson in simplification than most code review you will get at work. Post your own solution once you have the star, not before.
Twenty-five consecutive evenings is a lot to ask of anyone with a job, so plan for attrition. Create a repository with a folder per day and a small template — input reading, a place for the example assertion, a timing print — and the daily cost drops to minutes. Keep a running note of the technique that slowed you down each day; by 3 January you will have a short, honest list of things to practise, which is more useful than any generic learning plan.
Aim for a good number of honest attempts rather than all fifty stars. Twenty-five solved puzzles you actually understood beat fifty where a third were copied from a thread. And when December ends, do one thing more: open last year's repository and read a couple of your old solutions. The gap between then and now is the skills check, and it is far more concrete than anything a certificate will tell you.
Photo: Lara / Pexels
A practical walkthrough for planning your sections, writing semantic HTML, styling a responsive layout with modern...
A practical comparison of local coding meetups and online communities on feedback, networking, access and...
Python 3.14's changes that actually touch beginner code: clearer errors, lazy annotations, t-strings, a tidier...
Fuel your passion for coding and development.
Read More© 2026 Codice Mania · Theme by QuomodoTheme