One of the things I like about working as a developer is that all of the problems are being solved for the first time. Outside of the realm of writing software for educational purposes, very rarely is a piece of software written to do exactly the same job as an existing program; the client will just go download the existing one instead. The marginal cost of distributing software is so small that it doesn't even come close to even a few hours of dev time. This means that the majority of devs are working on interesting, novel problems; very little development work is grunt work. It makes everything more interesting for sure.
There are some downsides, though. Most pressingly, it is very difficult to know how long any given task will take. It is very often the case that it is impossible to say whether a bug can be fixed in just a couple of hours or will take a few weeks or more. This is inevitabling creates some friction between the developer team and the rest of the org who, somewhat rightfully, demand more concrete timelines.
Another downside that I, as a hobbyist, also find is that it is difficult to find the motivation to work on a project when better software already exists. I was thinking of writing a program that would generates a tags file from a JavaScript codebase, but LSP servers already exist. I've considered writing my own gemini client, but why when so many good ones already do? Ones that are stable and reliable. It could be fun, but it would also be a lot of work. I think you really have to enjoy the act of creating, rather than being driven by the end goal, when writing software as a hobby. Just in general, I think that's a personality trait that is helpful in software. So much time is spent wrangling arcane syntax issues, obscure bugs, ambiguous specifications, and much else that if you're just motivated in seeing something working, then you're going to be very frustrated.
Last Updated: 2023-07-29