The hardest thing about building a product is that you never going to get it right at first.
Building a product is more an exploratory project than a harder science one.
The only approach to build a product that worked for me was to keep iterating based on real feedback from real users.
It is the Innovator's Dilemma.
You need to build a simple first version, to see what it is missing.
You need to let go of all the cool features that you thought would be fun to build.
And focus on the boring stuff the real users need.
Listen to user's problems, not solutions
You should talk and listen to your users every day to gather feedback about your product.
You also need to instrument your product to understand how they are using the product.
When a user comes up with a solution for their problem, try to dig into the problem.
Users know about their problems, but they are not so good at solving them.
Focus on the root cause of the user, and learn their workflow.
Prefer user demands that want a better product, instead of a new product.
A user that keeps asking for more and more features does not want your product, they want another one.
Focus your energy on users who are using your product daily, the heavy users, and the paying users.
Free users will always complain and ask for non-sense features.