Users own the problem space, developers own the solution space

Also mentioned on the Macworld Less Than Perfect Apps panel was how to request features. Users should not say, “I want the software to do x”, but should instead say, “I have a problem x, which the software in its current state does not solve.” The latter form is infinitely more helpful to a developer than the former; most of our work is not programming, rather it is attempting to work out what the real problem is that we’re trying to solve. A large number of software projects fail by solving the wrong problem perfectly.

In addition, a particular solution might work for one case, but a statement of a problem could be used to inspire a general solution for a whole class of problems. The developer (who, as we discussed earlier, is being paid to know the internals of the software intimately) might be aware of an easier way to solve your problem, or even of an alternate solution that already exists—either within or outside of the software in question.

In some circumstances it may be helpful to describe a particular solution you have in mind in order to better illustrate the problem, but insisting on a particular solution will almost never get you the best outcome.

The corollary of this is of course is that developers should never insist they know better than the users what the users’ problems are.Â