“The future is already here – it is just unevenly distributed.”.

This quote by William Gibson (often reprised by Tim O’Reilly)
is bantered about in tech circles whenever people get the feeling
they’re glimpsing the future. It was particularly appropriate for
the iPhone launch last June, when countless people pointed out that the
touch-screen has been around for a long time.

The quote also pertains to web application design and the research teams need to do in order to make great software.

In a talk I gave the other day on social design, I went on at length
about how you need to design for personal value before social value.
(I’ve long called this the
Del.icio.us Lesson).
I illustrated how most successful social web applications provide
personal value at their most basic, using social value to augment it
and make it better. So YouTube is a great video storage application
first…and it also has great sharing features if you choose to do

(As a counter-example consider Technorati Tags, which provide social
value but don’t provide personal value. One word: SPAM)

A software designer from the audience asked the next logical question (a question I get a lot!)

“How do you proceed if you’re considering adding
social features to your application but aren’t sure whether or
not they provide real personal value?”

The answer is that you have to find out if the problem you’re
trying to solve already exists. If, as Gibson might say, it’s
here but just not distributed yet.

If it is here, then it follows that people are already dealing with
it somewhere, somehow. They might not even be using software to deal
with it, but they’re struggling nevertheless. The trick is to
find out where and how this happens. (don’t be afraid of Do It Yourself research)

The iPhone, of course, isn’t as revolutionary as it is
evolutionary. In fact, the problems of mobile phones were quite well
understood by everyone who used them. The situation was simply that we
were putting up with them.

The most successful software doesn’t solve problems that
don’t exist yet. The most successful software solves problems
that nobody else is trying to solve, or nobody else is trying to solve
in the same way.

If you cannot find any evidence that the problem your new feature is
trying to solve is indeed an existing problem people are already
dealing with, then I would seriously reconsider building it.