For the past week or so, I’ve been having fun going through the older Advent of Code challenges. Every day in December, Advent of Code publishes a new puzzle to solve using whatever programming language you want to use. I’ve been trying to solve the puzzles for a few years, and it’s been interesting to see progress.
When I just started, I hardly got anywhere with the challenges. I hardly knew how to program anything at that point, so the simplest puzzles were already syntactical challenges—how do you even code? What should it look like? How do I write conditional statements? As I grew in experience, though, I find myself much more able to solve these puzzles. Looking back, I see a moment where I start experimenting with object-orientated programming, and solving problems more easily than before. The last week, I find myself easily pushing through the first seven or so challenges, where they would have taken me ages initially.
What I run into these days are the puzzles that are really more orientated towards people with formal education in programming. The puzzles will involve certain algorithms that are commonly taught in computer science that I usually don’t even know to look for. Think things like modelling geometrical shapes in three-dimensional coordinate spaces, or algorithms to optimize seating arrangements, or recursive algorithms to sort through instructions that refer back to themselves, and so on.
I work on these problems, and sometimes get to decent (but incredibly slow) solutions, and feel quite proud of myself. When I get really stuck, I try to find help on Reddit, and usually the answer will be “Ah yes, you’d have to apply X’s theorem” or “Y’s algorithm is the best approach”, and referrals to read up on concepts that I have no idea what they mean. Essentially, it shows the gap between an amateur hobbyist like myself and a trained programmer.
It’s great to learn about these types of things, and I’m also more than happy to take some of these points and think “Ah, that’s too much bother” and leave it be. Either way, I’m quite grateful that so many people make all this type of content for free, and help me learn and enjoy these things.