It’s the most wonderful time of the year… and no, we’re not talking about the upcoming holiday season. At Andela, December is all about the Advent of Code!
Founded in 2015, Advent of Code is an annual coding event, with a set of Christmas-themed computer programming challenges that follow the format of the Advent calendar.
Created by Eric Wastl, coders and technologists across the globe are encouraged to take part in small programming puzzles that cater to a variety of skill sets and skill levels. The daily challenges can be solved in any programming language the user chooses. Technologists use them as a speed contest, for interview preparation, company training, university coursework, practice problems, or simply to challenge each other.
Each day Eric creates a new puzzle, which unlocks at Midnight EST/UTC-5.
You don’t need a computer science background to participate – just a little programming knowledge and some problem solving skills. And you don’t need an expensive computer either, as every problem has a solution that completes in at most 15 seconds on ten-year-old hardware. The puzzles get more difficult over time, but your specific skillset will make each puzzle significantly easier or harder for you than someone else.
Andela technologists, developers and engineers around the world are taking part in this year’s challenge. We spoke to a few of our shining stars to find out why they wanted to get involved in Advent of Code.
I enjoy coding problems, I think they’re the most important part of a tech interview – from both sides. We’re basically hired to solve technical problems, so “he can figure out the solution” is the least we can be asked for. (See the “FizzBuzz problem”.) In addition, some of these puzzles have optimization requirements – the obvious solution might take too much memory or time, and we have to figure out how to improve on that obvious solution.
I’ve been learning Golang and I’m using the challenge to widen my knowledge on the basis of the language. It’s a timely opportunity for me to learn a new programming language.
I’m going into the challenge simply because it’s fun! Also it’s fun in the way that I can compare my solution in different programming languages I already know, or new programming languages I would love to experiment with.
I participated for the first 4 days but got caught up in real life; I’ll probably resume in the near future. That aside, each day’s problems to solve were fun. It’s somewhat similar to the annual Cloudflight Coding Contest where you do 6 to 8 levels of a coding problem, e.g. an alien invasion. The problem/context gets harder as the levels progress.
With the Advent of Code, you have 2 levels for each day. You’re given a data set from which to determine an output, for example, depth measurements of a submarine, as well as steering/direction commands, and you’re asked to determine the final location of the submarine.
Pretty simple, right!? However, the input data could be larger, so based on a small sample of data, you can write an algorithm to help move the submarine around, then test it with larger data. If that succeeds, you pass a level and receive a gold star! The next level adds more constraints, rules or expected outcomes.
It can be both fun and complex. Such problems/contests help improve your logical thought process, algorithmic thinking, speed of execution and can be fun when competing with a known group of people.
I originally decided to take on the Advent of Code challenge as a means to keep my algorithmic mind sharp for any upcoming technical/coding assessments I may have to take. However, after about 3 or 4 days into it, I realised that I was learning quite a few tips and tricks and even more so when I saw that there was a large community surrounding the annual Advent of Code challenge. I created a Github repository to participate in the JetBrains/Kotlin community challenge, which caused me to learn even more about my programming language (Kotlin), which I’ve used for years. I also joined the extremely vibrant Reddit community which lets me view other people’s solutions in other languages, as well as share mine there – this has been quite an adventure and I can’t wait to follow it through till the final day.
Victor Alves Pereira
I’m loving Advent of Code! My main focus as a Software developer is C# and Object Oriented Programming and, because of this, I usually don’t have opportunities to apply Functional Programming, so I’m using it as an opportunity to learn F# and FP.
You can find out more about Advent of Code here.
Are you an Andela engineer or developer who would like to take part in Advent of Code? Check out the Advent of Code channel on our Community Slack!
If you found this blog useful, check out our other blog posts for more essential insights!