DEV Community

Cover image for Advent of Code - It's More Than a Competition
Grant Riordan
Grant Riordan

Posted on

Advent of Code - It's More Than a Competition

Before we dive in, I want to make it clear that this article isn’t a critique of Advent of Code itself. I absolutely love the event and the incredible work Eric and the team put into it each year. This is more about how we, as developers, can use Advent of Code to grow and collaborate, rather than letting it become a competition that pits us against one another.

Advent of Code - Introduction

Advent of code (for those not familiar) is a series of coding challenges where a different puzzle to solve is released on a daily basis between the December 1st and Christmas Day. The puzzles differ in requirements, level of difficulty and coding knowledge.

Coders "compete" against each other to solve the puzzles as quickly as possible and climb the global leaderboard. The challenges can be completed in any programming language / framework. The only requirement is to submit your solutions for Part 1 and Part2 of the puzzle each day.

The Global Leaderboard

The global leaderboard highlights the Top 100 developers who solve the puzzles the fastest. However, there’s a catch: the timer starts when the puzzle is released, not when you begin solving it.

This timing gives an obvious advantage to those who are awake and available when the puzzle drops—often midnight EST—while penalising people with full-time jobs or those in other time zones.

Realistically, many will never have a shot at cracking the Top 100. Instead, it often rewards what I’d call “sweat-like behaviour”: waiting up late or waking up early just to maximise your chances of getting on the board.

And this brings me to the real point of this blog post.

Advent of Code Is Not Just A Competition

In my opinion, Advent of Code should move away from being seen as a competitive event. Instead, it has the potential to be a brilliant "learning community."

The competitive aspect doesn’t serve much of a purpose, at least not one that benefits everyone. Instead, it often encourages people to "prove" their skills, but in reality, some rely on tools like LLMs (Large Language Models- AI) to crank out quick solutions. Sure, they might secure a good time, but they’ve bypassed the opportunity to actually learn something or test their skills.

What could be an incredible opportunity for personal growth ends up becoming a rat race that, frankly, helps no one.

Keep It Sustainable

Advent of Code and this race mentality can easily lead to burnout. You want to solve the problem on the day of release! However, trying to juggle puzzle solving (some which can take anything from 30mins to several hours) looking after family, working a full time job and everyday tasks, it can be a lot!

There’s a risk of burnout when trying to keep up with the puzzles every single day. You don’t need to solve every puzzle on the day it’s released, and you definitely don’t need to do them all in December. Take your time. There’s no penalty for going at your own pace.

If you’re feeling ambitious, you could even revisit previous years’ puzzles. Try improving your old solutions or challenging yourself with a different approach.

Use It to Learn

Instead of trying to prove yourself to others or even yourself, why not approach Advent of Code as a chance to grow?

Try solving the puzzles in a new programming language or framework. Experiment with concepts you’re unfamiliar with or work on honing your optimisation skills. Many of the puzzles (especially in Part 2) require dealing with large inputs or loops that brute-force solutions just can’t handle.

The puzzles are a goldmine for learning algorithms, improving your problem-solving approach, or even picking up new ways to think about code.

Sharing Solutions and Learning Together

After you’ve solved a puzzle, take the time to share your solution. Platforms like GitHub, Reddit, or even Discord servers can be great spaces to post your code and discuss alternative approaches, however, still some reluctant to share their full solutions - unbeknownst to me why.

You’d be amazed at how much you can learn by looking at someone else’s solution. Maybe their approach was more efficient, or perhaps they thought about the problem in a way you hadn’t considered. It’s this kind of sharing and collaboration that makes Advent of Code so valuable, not racing to the finish line.

On this point, I'm not saying you should plagiarise other's work but we should be more open to sharing our code to help others. We should share ideas, helper functions, common algorithm solutions and such. It may save someone a lot of time, or even help them learn something useful.

Build a Community

Rather than chasing the global leaderboard, consider starting a private one with friends or colleagues. These smaller groups can be a lot more fun and motivating. Plus, they take away the stress of competing with the world and let you focus on enjoying the experience keeping the competitive aspect with just some friends.

If you’re part of a coding community or coding workplace, you could even host discussions or meet-ups to share lessons learned from the puzzles. It’s amazing how much we can all grow when we work together.

A Few Final Thoughts

Advent of Code is what you make of it. You can use it as a race to the top or as a journey to improve your skills, explore new languages, and connect with others.

For me, the real value lies in the latter. It’s a chance to test myself, find gaps in my knowledge, and share that journey with others. Let’s make Advent of Code less about competition and more about community. After all, isn’t that what the holiday spirit is all about?

What are your thoughts? Feel free to drop a comment to discuss further or reach out on Twitter / X

Top comments (2)

Collapse
 
stephen_johnston_f906b653 profile image
Stephen Johnston

My approach has been to use it to learn new languages and concepts. AI/LLMs broke AoC for the most part.

Collapse
 
grantdotdev profile image
Grant Riordan

Nice great to hear it’s been used for good. I think it’s a great learning tool.