Something happened a few weeks back that was fairly routine for me. First, some backstory: I've been playing a lot of Red Dead Online recently, ever since it landed on Xbox Game Pass. They recently released a new "role" - a storyline of things you can do to level up. This role is called the Naturalist, and it involves you wandering the vast expanses of the map trying to catalog (or hunt) the various animals that inhabit the world. For each animal you find, you need to sedate and get a blood sample from it. Animals are organized into habitats, and for each habitat that you complete by turning in a sample from each animal in that region, you get a cash payout in-game.
Seems like a simple enough task, until you realize there are 118 different animals to keep track of in the game. Optimally, while you can carry and turn in multiple samples for an animal at the same time, you get the best reward for your effort when you turn in just one sample per animal at a time until you complete a collection and are ready to start that collection again. So now there are multiple pieces of information (number of samples per animal in my inventory, have I turned in this animal already?) in different locations in-game to keep track of while you're working on progressing in the Naturalist role. You could keep track on pencil and paper, but since I'm a developer, of course I wrote an app.
But this isn't a blog post about how to write a tracker app for the Naturalist role in Red Dead Online (although if there is interest, I could certainly write one). No, this is about something bigger than that. I ran into a problem (keeping track of data), I came up with a solution (basic web app), and was able to implement the solution to make my life easier in an afternoon, but only because I had an understanding of the tools available to me as a developer. What I built wasn't terribly complicated, but it made my life easier since I was able to put together a simple tool to fix my problem.
This is why I think that it's incredibly important for everyone to at least be exposed to software development at some point in their lives. In the US, it might make sense for this to happen in or around high school. You don't have to train everyone to be a software engineer by the time they graduate (although I personally would have loved that). Exposing everyone to the basics of software development and the potential that it unlocks -- not just in future career options, but in simple ways you can make your life easier -- should be as mandatory as taking a foreign language in school. People may be exposed to it and decide it's not for them, or even that they hated every minute of it. I get it, I had to go through a lot of things in my education that I didn't enjoy and rarely, if ever, used again. But you can't use a tool if you don't know that it exists, and that's what software development skills are -- a tool. Sometimes it's a tool that pays the bills, and sometimes it's a tool that makes it easier to play a video game more efficiently.
P.S. If you're interested in checking out the app, I have it hosted at https://rdr-naturalist-tracker.richardsween.dev/. All the code is open source, and I welcome issues and PR's at https://github.com/sweenr/rdr-naturalist-tracker.