🎄 Advent of Code: Day 10 Feedback

🎄 Advent of Code: Day 10 Feedback

The Advent of Code is an Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like.

You can still join the adventure on adventofcode.com

My motivation

I first heard of Advent of Code on Twitter. I liked the idea a lot because I am currently willing to code more outside my job, in order to improve my skills in terms of problem-solving.

Indeed, I work as a backend engineer for a company, and I am missing something that got me into programming first: algorithmic. When developing a (small) API, you don't find often challenges like how to search into a list, complex data structures. The challenge in that kind of job is more about architecture, integrating external services.

So I decided to join Advent of Code to test myself and have some fun while doing it.

My language: JavaScript

I did not know what kind of problem I will run into, so I decided to start with Javascript, for those reasons:

  • I am familiar with Typescript, but vanilla Javascript is a bit old for me
  • It is simple to run
  • It has good helpers for list manipulations, loops

I was keeping Python aside just in case it was better, but so far it was not needed.

My progress

The first days were very easy, to be honest. It started going harder after few days, but nothing impossible.

After a weekend off, I quickly became late on schedule, and I never got back. Right now, we are day 11 and I am still finishing day 7 😅

Sometimes it is hard after a full day at work to get back at programming. The best time for me to implement the challenges was after lunch because I was still on a "work" mentality.

Anyway, if you want to stay on track, I strongly advise you to follow on a daily basis!

My learnings

I learned some things on the way.

The days are composed of 2 linked tasks. It is interesting, because the first day I just make task 1 as fast as possible, without thinking about making it elegant, or reusable. Then I reach task 2, and I spend at least the same time to make it. The next day, I tried to implement something cleaner since task 1, and as a result task 2 took me like 5 minutes! I really like the fact that task 2 is hidden until you succeed in task 1.

Javascript was a good choice. I performed a lot of array and string manipulations without any issue. Javascript was really helpful about that, and I learned some tricks using split() or replace() functions.

When implementing the features, you have to think about how to debug as well. In the Advent of Code, the input of your problem is a very long list of String, and you do not want to read it yourself to debug. So you have to think your loops in a way that by adding a breakpoint at the good spots you are able to monitor the behavior of the algorithm. If your code is not human readable, you will have a hard time debugging.

I am sure I will learn a lot more until the end !

My code

My code is available here if you are curious: github.com/LokoSama/adventofcode2020

I encourage all to join the Advent of Code 2020, it is a great adventure!

Feel free to drop your progress in the comments section ⬇️

Thanks for reading !