Software development has many challenges in satisfying clients. One of the biggest is arriving at a product which matches what the client is expecting. This is not necessarily the same thing as what the client wanted in the first place.
Iterative development tries to ensure that the gap between the two viewpoints of the software development team and the client never becomes too great.
There is another industry which has to constantly manage client expectations so that the end result is both satisfying and expected. Hairdressing. Successful hairdressers operate by securing repeat business, for this to happen in competitive environment their customers must be satisfied when leaving.
We each have certain concepts of a hairdresser based on personal experience, for example they are perceived as confidants of their client in large part because they talk with them so much, getting to know their moods and most importantly their likes and dislikes. Most traditional hairdressers will have a considerable number of images in their 'shop' window and placed on the interior walls, and also various lifestyle magazines placed about the waiting areas.
The purpose of all these images is to educate the client as to potential directions to take that are fashionable at the time. However, it should be noted that rarely do clients emerge from the salon with a hairstyle that is exactly what was in the images the client has seen. How is this? The constant chat, or interplay between the hairdresser and client is essence of the iterative process at work. They must establish if the client has strong ideas about how their hair should look at the end. One of the first steps is to discuss the existing 'model', are they happy with it? when was it done? what was done at the time?