The Advent of Code is an Advent calendar of small programming puzzles for a variety of skill sets and skill levels. It was started (and continues to be run) by Eric Wastl of PHP Sadness fame.
If you enjoy solving puzzles, this event provides you with 25 days of whimsical problems wound through a narrative about saving some aspect of Christmas. All* (for certain definitions of "all") of the questions require you to do find a solution that is difficult to do by hand.
Tips and Advice
Don't Worry About the Competition
If this is your first year, try not to beat yourself up about not placing in the top 100. From competing in the past, I've found that:
- The problem drops at Midnight EST. (
America/New_York
/UTC-5
) For some people, this is a really convenient time. For others, it's extremely inconvenient. Don't burn yourself out just for bragging rights! - The top 100 typically have tools and code libraries they have curated and designed ahead of time for the express purpose of participating in code competitions. This is not a requirement for participation in the Advent of Code! These folks are all-in, and typically solve problems in 15-30 minutes depending on the statement. A couple of problems last year took me a couple of days to get the inspiration to crack.
- The problems get more difficult as the month goes on. Even though the number of people who complete each question drops dramatically every day, the top 100 list lockout time tends to only double to an hour or so.
If you really want to compete, look into getting some of your friends together and make a private leaderboard. Last year, some folks organized some dev.to groups, and we had a lot of fun!
Compare notes!
This event is a lot more fun if you can discuss with friends! Jump on to dev.to and join the daily discussions! If you're a Redditor, jump onto /r/adventofcode to check out solution megathreads, hint threads, and self-imposed bonus challenges!
To me, a big part of the fun is handing around the solutions and "ooing" and "ahing" about the differences and similarities. There's just something validating about looking at a Golang solution that does what you're doing in python. And sometimes it's really eye opening to see the power of specialized languages like Prolog brought to bear on problems in their wheelhouse.
As a cool bonus, all users are given their own data inputs, so you can use other people's answer values as hints and TDD inputs!
Don't Worry About Your Skill Level
If you're an experienced coder, then by all means, buckle in and have fun!
However! If you don't feel experienced, don't worry. I know that it's not helpful of me to tell you not to worry. But please give this set of puzzles a chance! In an attempt to sell you, here's a few ideas.
I don't have much Computer ScienceTM or Math Experience
Each problem comes with an explanation of the problem. Most of the time, terms and concepts are dropped as inline links. Even if you don't know a glitzy algorithm, most of the solutions can be brute-forced. Also, by collaborating with others, you can gain familiarity with the CS space!
I'm Too Slow / I Don't Have Time
One of my favorite parts of this event is that there is no expiration date for the problems. If you can't solve a problem, just leave it alone and come back later! I didn't complete the 2016 event until 2018! (See my above comment on trying to avert your eyes from the competition angle.)
I Don't Have Friends
Make them by participating in discussions here and reddit and other places! I've been really humbled by how much people want to help everyone else. Heck, if you want, DM me and I'll either point you to a good ongoing discussion or give you cryptic hints.
I Want to Know What I'm Getting Into
Check out previous events! The problems have improved year over year with respect to construction and difficulty curve. Eric and his team are constantly involved in the subreddit, and are eager to make this a great experience.
The corniness of the story lines are a feature not a bug.
Also, ask questions in the comments and I'll answer as much as I can.
Remember, Midnight! December 1st!
This year's Advent of Code starts as the clock strikes 2019-12-01T00:00:00-05:00
Nothing brings me more joy than sharing my excitement and helping people have a good time doing something that I find fun!
I'm looking forward to seeing you in the discussion threads!
Top comments (4)
Any other students/beginners want to start a leaderboard together? Or does anyone know of a good lowish skill leaderboard?
This is a good idea! Unfortunately I already promised my leaderboard for work.
Let’s reconvene after day 01 and we’ll get some things organized.
I'm really looking forward to this year's advent of code 😁 It's not about the competitive aspect for me at all, I just think the problems are really fun to think about
The problems can be very approachable for beginners, and it's a perfect opportunity to learn a new language if you're already comfortable too!