Not to be argumentative, and I generally see your point :)
I do occasionally write software that will have zero users -- not even myself. Because it's fun to play with the code. "I wonder if I can prototype a openscad type thingy using Python set syntax..." Or whatever. It's the equivalent of sitting in front of a piano and creating song fragments to pass the time.
Naturally the benefit here is that you're developing skills, passing time in an entertaining fashion, and working the ole grey matter.