We as humans call ourselves tool makers, but most of us don't make our own tools. We are tool users, and our tools were made by others, which means they brought other needs and other assumptions into the design, and the rest of us just need to figure it out. This is why I find people's interaction with technology fascinating.
One of the big benefits of being able to write my own software is that I can make my own tools if I need them, but they don't exist. As a case in point, when I am working on database projects, I often need to search through all the database tables and scripts for particular combinations of table and field names, or sometimes a table reference where there *should* be a reference to a certain new field, but it doesn't currently exist. There are file search tools that will let you look for a specific string in a file or directory, but that's as far as they go. If you're looking for something more specific, or there are a lot of other files in your way, making the search harder, you're out of luck.
I, however, am not out of luck, because I can make my own tools. I wrote a program I called "JoinSearch" to do those other, tricky searches, and it's been great. It has been one of the secrets of my success as a database software developer, and it has grown with my needs, gaining features and sophistication as required.
This, to me, is the number 1 reason why people should learn to write software. JoinSearch will be with me for the rest of my career, in all likelihood, saving me (and maybe my co-workers) hundreds of hours at work searching through files (it comes up more often than you might think). When you have problems like that, if you can write software, you can solve your own problems yourself. It's what computers are meant to do for you.
Mokalus of Borg
PS - Of course, making programming easier would be a great tool project.
PPS - And plenty of people are trying.