Toy Software is a lot like working on your bike/car/boat/whatever.
Working on your bike is fun. Working on the bike you need to ride to work tomorrow is stressful.
I miss writing toy software. It’s fun. But inevitably I want to use said software and that’s where the trouble starts. You find all the bugs and none of the time to fix them.
I used to self-host my email. I don't any more, for exactly this reason. And of course this applies to every other "just do it yourself!" enthusiast appeal. I actually want to delegate it to someone who does it full time.
I also have more "working software" interests than i have time and energy. Many of them have a ton of mundane boring details i've done a thousand times before. I'm actually a bit excited that i can work on what i want to work on.
With that said it's a challenge and a chore on its own to curate what "AI" writes. So it's definitely not all roses.
Disclaimer: I'm still early in the experimentation phase. We'll see if i hold these opinions in a few months.
I actually only like working on software that has a real use, at least to myself. The coolest is when I spin something up fast at work and people start relying on it.
Same goes for my car, it's satisfying doing inexpensive fixes to keep it running. Wouldn't want some mid-2000s BMW project that's stuck in the garage half the time.
Perfect example for me is that I use beancount for tracking my finances. It broke one day because I tried upgrading some dependencies from v2 to v3. I tried messing around with the imports and some function names but it didn't help and after wasting 30m I decided to give up on the upgrade.
2 weeks later when I wasn't busy trying to get it to work, I gave it another shot. This time went so much more smoothly and now everything works (fingers crossed since I haven't actually tried out ALL the functionality).
I dunno. Working on a bike you want to use to ride to work could be stressful if it is your only bike, you need it to get to work, and your manager will be really mad if you don’t show up to work one day. If there was any slip available it wouldn’t be so bad.
Actually, I really like this analogy because
1) We can’t really work on non-trivial fixes for our cars because they are too complex
2) We’ve totally structured our living situations around these over-complex beasts
3) Sometimes they do just break down at random, and it becomes a mini-crisis for everyone involved, which can’t really be resolved without missing a day of work to go to a professional
4) The bike is in exactly the same situation, except you can actually fix most bike problems yourself with a little kit
And yet, it is seen as a serious adult thing to have a car, instead of a bicycle.
Some thoughts:
Outside of, like, customer service, most places are throughput-oriented and it doesn’t even really matter all that much if somebody misses a day.
If we really cared about “uptime” of employees, we’d all be living in bicycle range of our jobs, and able to fix our bikes. Maybe there’d be a bus route as well.
This is why I love building a personal website. It's like a live playground.
The easy fix is to have two bikes. You can take the time to work on the offline bike, not to mention get needed parts.
I really just write software for myself only. The time difference (and fun level) between writing software for yourself and writing production quality software is huge.
Feature doesn't work in Safari? Who cares, I don't use Safari anyway. No need to fix.
>Working on the bike you need to ride to work tomorrow is stressful.
How about working on your bike that other people also work on daily? That's work.
I recently wrote my own invoicing application. I got wrapped up in the joy of adding the features I wanted. Many of these features come at a premium monthly fee for a big named product.
I needed to get an invoice out in a timely fashion. As much as I wanted to use my app, I found certain kinks I needed to work out (with styling, adding addresses, etc.) -- This was where I realized what you have articulated.
At some point, it becomes better to prioritize the "fun" in working on my bike, and the "usefulness" of the daily driver bike.
In doing so, perhaps the fun/usefulness of each converges over time.