People don’t always know what they need. But they always know what’s frustrating them.
I start by listening. The real problem is usually hidden in someone’s frustration, not in the feature they’re asking for. Building the wrong thing perfectly is still building the wrong thing, so I spend time understanding what’s actually going on before I write a line of code.