You should need something before you have a desire to make it. But most likely you are already using something you would like to improve upon.
If neither of those is the case, why try to write software?
(I suspect many people are in a similar position in their day job, given the existence of large amounts of software for which the target audience is not computer programmers.)
For pure experience programming, sure we write "garbage software" to make the changes in ourselves. But if it is worth sharing (even for edification or statistical analysis) then we go back to a personal reason otherwise it has little relevance to the larger topic of discussion, and I personally focus on the garbage in "garbage software" rather than software.