Listening. Ive written before about how listening is the most important skill a software developer can have.
One part of listening is the art of listening to feature requests.
Sometimes you get a feature request that describes a problem and proposes a solution thats right on the mark: all you have to do is implement it. Sometimes you get a feature request thats just about right, and with a little modification and back-and-forth you end up with the right thing.
And other times you get feature requests that describe a problem but propose a solution thats not right. So the art here is listening to the problem. Sometimes its not always plain, you have to figure it out (often by asking questions of the person who made the request).
For example: think about how Exposé must have come about. Users made requests about ways to find a given window easily when you have a bunch of windows open. I imagine people suggested solutions like a system-wide window menu.
But what Apple did in this case was listen to the problem rather than specific solutions, and they came up with a solution that probably nobody had asked forbut that works wonderfully (and that, as a bonus, delights people who use it).
Not every feature request will be solved so dazzlingly. Most requests are for small problems with simple solutions. But its worth keeping Exposé in mind as an example of the art of listening. [inessential.com]