It is quite a common situation, when after developers start building something – there are alterations coming along the product development process that lead to redoing of some minor or major parts, or even lead to changes in global architectural solutions. Redoing is a sheer waste of time and resources, and it all happens due to lack of deep and complete understanding of the future product. Prototype-driven development allows teams to skip all levels of misunderstanding, as it provides you with prototypes on all levels and at any time of project evolution.
The basic concept is to provide developers not with a set of tasks and descriptions, but with prototypes that will cover everything.

How to start
Once you have decided to go with this approach, stop thinking of what you already know is true.

If you have an existing product
Remember that everything you know about your product might be wrong. It is quite a common situation, when company owners have a superstition that everything is clear to them, that they know the market and their product. However it is often quite wrong. The market is always changing and you shall always doubt your vision and revise it. Try thinking of it as if you did not have an existing product and you just would like to get to this market. There are several useful methodologies such as JTBD, CJM and others that can help you find a starting point.
If you start a new product
It is still a good practice to go with CJM, business model pivoting, and then test all your theories on real future customers. Everything you think you know might appear to be a misconception.
Design process
Covering all with diagrams




Start drawing

Draw everything in detail





In the end

The costs
Is testing expensive?
Benefits
- You do not miss a thing and you are sure to cover all the scenarios from the start.
- Customers are happy at early stages as they are sure that the upcoming solution fits perfectly.
- You have something to show to every customer at all the stages.
- Everyone gets the big picture at the end of prototyping.
- Developers are sure what and how they have to do, they also like having the big-picture and detailed components.
- Developers do not spend time on re-doing some stuff.
When applicable?
Developer’s comment
A consistent prototype aims to achieve coherence between high-level principles of the design guidelines and the specific UI library components. As a result, implementing a solid prototype comes with less effort and more joy for the developer. Not only does it save hours of tinkering with pre-built components, but also fuels a pleasant feeling when everything operates just as it should and fits together perfectly.