Advent of Code 2023 - Introduction
I’m using Advent of Code this year to expand my knowledge of the Go programming language
I’m a little late to the party as I’m starting on the 8th of December instead of the 1st, but I’ll catch up.
I’m using Advent of Code this year to expand my knowledge of the Go programming language. So, my goal is to solve at least the first part of each day and document my solution on the blog. I’ll go over anything that I need to look up and what I’ve learned.
I need a break from Ruby
For the last 8 years, I’ve felt a little stuck in a niche, ruby and ruby on rails. While ruby is an excellent language, and rails is an excellent framework, it is in decline. The number of jobs out there is dwindling, and in general, the industry is moving away from it to more performant frameworks or those that allow for faster iteration.
There are plenty of examples of companies scaling and doing very well with ruby. That is not my point. I’ve been searching for work casually for the last 6 months, and actively for the last 2 months. I was laid off in November and am struggling to find work in the ruby space. Some recruiters are reaching out, and I’ve applied to a few positions directly, however, the ruby marketplace is nowhere near as vast as it was 2 to 5 years ago.
There is an alternate problem at work here: tech layoffs are abundant this year. Just this week two tech giants, Spotify and Twilio, laid off massive portions of their workforce. So there is yet another giant influx of talent on the market that is incredibly difficult to compete with. I was watching an interview with a director at a tech company who is involved with hiring for their company. They said for any given position they have 1,000-5,000 applicants. Yes, I wrote that correctly.. OVER A THOUSAND APPLICANTS FOR ONE ROLE!
You have to do everything you can to stand out. And when you’re working in a language and framework on the decline it’s even harder to find work when those companies are willing to hire anyone, not just someone with that niche experience.
Why Go?
I think the interesting thing about Go is that it can be used for so many different applications. Most notably it’s been attributed to being extremely well-suited to web applications. So I can start by building for the web and then down the road be able to transition to some other area that writes software with go be it a native application or CLI tooling, etc.
I recently started building out a side project which is using go for the backend API. However, one thing I’ve noticed is that building a web server in go is rather simple. I haven’t had to explore more complex aspects of coding practices yet, so enter coding challenges.
Instead of the basic LeetCode route, I’m going to kick this off using the Advent of Code challenges since it’s currently relevant and fun to participate in.
The one thing that I do plan on doing going forward is keeping up with regular blog posts to document my learning as well as my job-hunting progress. If you know anyone hiring a senior software engineer I’d love to connect and talk to them. I will accept and use all the help I can get during this process.
AoC Warning: SPOILERS INCLUDED!
If you want to solve the advent of code challenges, solve them yourself then come back and read my post! I’m not going to paste the problem or input here, however, I will post the summarized question and then link to the AoC page each day for you to solve it yourself.
The first 8-9 days of AoC will be spammed back to back until I’m caught up. Once caught up I’ll go to a daily post schedule throughout December.
My goal isn’t necessarily to go for the most optimal solution. I will try to do so where possible. My only goal is to work through these problems daily and learn more about go. If I have to do an incredibly naive solution to figure it out, so be it.
If you’re ready to jump into things, the next post will be for day 1 of the challenges! Advent of Code - Day 1