Agile Project Planning

ExtremePlanner: Agile Project Management for Distributed Software Teams
Click For Your Free Online Trial

Saturday, April 30, 2005

Users Don't Know What They Want!

A common theme in traditional software development is the idea that you should have complete requirements before you start coding. But where do these requirements come from?

From the users.

But, how do users articulate what they need? Often they can't, they can only describe problems they're having, not how to solve them. That's our job as software developers.

This problem is often mischaracterized by blaming the user, and saying "Users don't know what they want!" It's certainly easy to do this, as many users ask for one thing, then seemingly change their minds, or say "that's not really what I wanted" when developers have created exactly what they asked for.

The core issue, though, is one of communcation. A successful software developer will learn to read between the lines, and to ask powerful questions about the problem being solved. Don't accept a statement like "I need a database that lets me store widgets". Instead, ask questions like:

  • What will you do with the widget information once it's stored?
  • What are the most painful issues you're having around widgets?
  • Is there a manual process you're using now to manage widgets that works?

Often you'll find that the problems they're having aren't easily solved with software, or at least with the software as they describe it. Maybe they can solve the problem by changing a business process instead of throwing software at it.

As users become more and more computer savvy, they start describing SOLUTIONS instead of problems, but don't be fooled. Just because their vocabulary includes things like spreadsheets, databases, and email inboxes doesn't mean that these things are the right solutions to their problems.

Agile development approaches can mitigate this by presenting smaller pieces of the solution early. This rapid feedback loop helps clarify the problem in a user's mind, and generates more concrete requirements.

So let's stop blaming the users for inaccurate requirements - it all starts with clear communication about the problem, not the solution. Helping your users understand and communciate their problems makes for better solutions, happier developers, and above all, satisfied customers.

For more agile project planning tools and tips:

Get your copy of the new book! Agile Thinking: Leading Successful Software Project and Teams