Finding a problem to solve
Software does not hold value in and of itself. This may be an unpleasant truth for those who like to write code, but software needs to add value to the lives of people to use it for it to become a successful software product. There is nothing wrong with hobby projects either, but even if you are the only user, it still need to add value for you.
Making sure your product solves a problem is the key starting point for a software product. And also where people often get stuck.
The most successful software products I’ve seen almost start themselves - there is a problem causing enough pain that people seek out a solution, talk to people who can make software, and they work together to solve the problem.
But those people probably aren’t reading this - you are probably seeking the opposite origin story for your product, that you want to build and operate a software business, but need to go find that idea.
The best way to make that work is to force the situation where you fix a pain point. Go out and talk to people who work in industries that interest you. Ask them where they feel frustration in their days, and which of those problems causes financial burdens to their company. Then see if you can envision a software product that resolves it.
Be careful to actually be solving the problem with software, and not masking a process re-engineering effort by putting software over top of it. Many problems in business are due to poor processes or communication, and software can solve those. But you need to ask yourself if the same process or communications improvements can be done without software. If they can, your product is just a shiny layer on top of the actual fix, and some day in the future someone can easily get rid of your product.
Side Note: Entertainment is a valid problem to solve. Video games are software, as are streaming services, chat apps, and other apps that don’t solve business problems but do make people more satisfied with their lives.
Software adds value when it does things people are not great at - collecting data, visualizing data, synthesizing data. Automating processes and tasks, organizing incoming requests.
One way to make sure your software has intrinsic value is to make sure you can specify its inputs and outputs, and that your customers are willing to pay a fee for the process of turning those inputs into those outputs. If you cannot abstract what your software does into an input, output and a financial transaction in exchange for that conversion, you might not have a viable software product.
Another path is to find a product that has already solved a problem, but done it poorly. Find software that is critical to an industry, but disliked because it is not good software. Then simply do a better job than they did.
Don’t discount your own problems, either. Write software for just yourself, if it makes your own life better. Then ask around and see if anyone else has the same problem and might want to try your solution.