To understand the entire concept, let us take an example. Jane is developing a software that creates 3D images from 2D images. His client is Lisbon. She is a sharp entrepreneur but not extremely adept with technology.

First thing Jane needs to do is identify what Lisbon needs exactly. She has a JPEG image and that’s all she has. That image has no meta for the depth or the third dimension. A JPEG is all she has and that is what Jane needs to focus. His software has to give Lisbon means to give depth to different layers in a 2D image so that 3D image can be created. His design has to be user-driven.

Jane has to identify different possibilities in order to create a solution. What kind of UX options can be provided? What all display options need to be provided? Possibilities vary with the complexity of the solution but the key here is that a significant number of possibilities need to be assessed. Further, based on possibilities available, different options to solve the problem need to be identified. Jane can take these options to Lisbon and gauge her interest.

The last point is iterative. No matter how smart Jane is, it is unlikely that he can create something from Lisbon’s wild imagination. A better idea is to work in small iterations and assess one feature/aspect of the development with Lisbon and change as and when needed. This ensures that rework, if needed, can be done early than later and the product is closer to her requirement than not.