Millions of tools, but not one right for the job
Few things annoy me more than not being able to do a seemingly simple task on a computer. ("What do you mean I can't open this file on my computer?", etc.) I've spent hours and hours downloading obscure programs, and hacking together scripts, and scouring the internet trying to come up with a solution to something. When it comes to things I think software should be able to do, I have a really hard time taking 'no' for an answer.
To me, the computer (plus software) is the universal tool. In theory, with a bit of programming it can become any tool you can think of.
But in reality, our computers fall far short of that vision. Time, after time, after time. Depsite the hundreds of thousands of new apps popping up all the time, despite "there's an app for that", I often have a new task that I'd like to use a computer for, yet can't find a good way to do so. Maybe because it's cost prohibitive, or would take too long or be too much of a hassle to be worth it. Oftentimes I can't even find anything that does what I want at all.
And usually, I just give up and forget about doing whatever it is I wanted to do. As a software maker, this annoys and saddens me, but at least I can do something about it. If I feel really strongly that a certain tool should exist, I could probably build it with enough time. Or at the very least I could probably hack a script together to combine the functionality from a few different tools just to get something passable working.
But the thing that really saddens me is how much more often computers are failing all those people who don't write software themselves—how many little projects are abandoned before they're even started because the computer falls so short of its promise as the universal tool.
Example: today I needed a simple tool—one that would let me take a Korean-language web comic, and write notes and definitions off to the side so that I could come back and study them later. I spent hours trying to find a tool that fit my need. I didn't find one. So I gave up.
Now, I've got nothing to show for that time. My problem still isn't solved, and I didn't get any studying done. That bothers me.
Sure, I could spend a week or two building the perfect tool for that task. And I still might. But what happens a few months from now when I need another tool that's just different enough that the one I built won't work? What about other (non-programmer) people who might need something similar, but the tool I build also doesn't quite solve their problems? We're screwed.
Where's my universal tool? Where's the computer that I can quickly get to do exactly what I need for the task at hand?
Why can't computers work the way they do in those unrealistic movie scenes that we all laugh at? Where's the computer that anyone, without years of programming experience, can use in new ways—in ways the original programmers didn't or couldn't have thought of?
I don't think that's an impossible vision for software. I think it's what we should all be aiming for. But I don't see many indications that we're headed that direction.
There are a few encouraging signs, like the Wolfram Language. But even it seems less aimed at making tools, and more at being an (very flexible) tool in and of itself.
I think as long as new software is as cumbersome and difficult to create as it is now, it's failing to live up to its potential. And I don't like that.