Language is a wonderful tool, but it is difficult for stakeholders to precisely parse large amounts of written text in order to provide reliable feedback on whether software developers are on the right track.
On the other hand, diagrams, screen layouts, and prototypes are often easier for people to understand and respond to.
This is not to say that words don’t have their place. But interactive dialogue about a visual representation is often much more productive than shipping written text back and forth for review and approval.
Frequent interactive demonstrations of working software still in development are particularly important as a means of showing your customers what you are up to. Customers are never more attentive and engaged than when they can see working software in action, and yet still have a chance to provide feedback that will either validate or help further refine the product.
Note that such demos require you to practice “iterative development,” possibly in addition to “incremental development.” Many authors and consultants blur the distinctions between these two different things, but Alistair Cockburn in particular makes the point that they are different, even if they may both involve software development done in frequent, short sprints.
Incremental development means that the completed product is delivered in smaller increments, and is really the result of decomposing the overall product delivery into a number of smaller deliveries.
Iterative development, on the other hand, means that a partially completed feature is shown to the customer, with the intent of eliciting further feedback before finalizing the feature. As Cockburn points out, this is a means of planning some amount of time for some degree of rework.
It’s really hard to design products by focus groups. A lot of times, people don’t know what they want until you show it to them.