Modern design, be it physical products or software is now a professional endeavour, having evolved from a craft tradition. The fetish to be first in the market means that the pressures on the modern designer are immense. Even when you consider the mindset of built-in obsolescence in products, competition is forcing the industries concerned to minimise failures, and aim for a much increased success rate at the first attempt.
The potter as a craftsman worked on unique, custom commissioned one-off pieces, unlike the current factory produced millions. The interactions that the craftsman had with his client were minimal and rarely muddied by misunderstandings or misinterpretations. The more experienced the potter the more his hands became an extension of his thought processes; he moves his hands and manipulates the clay by an instinct borne out of many years of experience in the art of pottery. The process of thinking and making went together to such an extant that it was difficult to know where thinking ended and making started. Whereas the potters techniques were jealously guarded by the freemason system, the same is not true of the modern designer. His environment is now leveled with the open source offerings of tools, templates, and frameworks. This has turned a craft into a job opportunity, wherein experience is replaced by education and/or certification, and has led to the impression that communication or interaction with clients is a human characteristic readied in all at birth.
The potters activity looks like uninterrupted continuous motion of hands, and the thought acting through them, while the wheel controls both these actions like a metronome. If he is interrupted or for some other reason he is displeased with his work, he destroys it and restarts. The modern (software) designer must mimic this by developing empathy with the client and his needs. One of the tools that’s close at hand is prototyping. Prototyping, when done correctly provides:
- A tool to explore the possible solution space, which by its very nature throws more light on the problem.
- A tool that saves time by mapping the correct route to chose both from a technological and solution perspective.
But, sadly prototyping is an often misused, or as is usually the case, a never used technique. The culprit is usually the need to be the first in the market, and a belief that any deviation from this is a waste of money and time, afterall we are told often that agile will cure all the ills in software development. Hence, why bother with prototyping when agile execution will do the job. Some of the many misuses of proto-typing are:
- You are never prototyping the whole product; a prototype is a model (working or otherwise) to aid the understanding of a concept. The first hurdle that has to be overcome is to identify exactly what is/are to be ptototyped, and what is to be explored. Whether it is a choice of technology or the possible soultion space.
- Prototype exploration should never exceed 2 to 3 days, and never be done with more than 1 or 2 developers. The only other person taking part in the exercise is the product manager. When the prototype is executed by remote teams the difficulty in getting all the players around the table for the duration of the exercise is usually very difficult.
- Prototyping is not for the keeping, it is to be discarded after the exercise. You should not seek to produce perfect code and all the other aspects of production development. Always remember you are exploring the solution space, not exploiting a specific solution path.
- Just as prototyping is not the complete product, one should not expect a smooth execution in producing the production code. Prototyping will not necessarily identify all the parameters, some of these will emerge in the more detailed execution of the sprints, and this is where agile techniques help in managing those required changes.
Prototyping is an excellent technique, whether it is,
- To get an initial understanding of the sequencing of object interactions and method calls as in a sequence diagram, the first cut class diagram, the initial UI wireframes, or an early understanding of the technology stack (think of these in similar terms to the potters sketches).
- To get over the initial domain knowledge gap, and encourage more creative and outside-the-box thinking.
- To put the right markers down the path of the actual product execution.
The modern (software) designer is overwhelmed with interactions that increase with each new stakeholder, and every new interaction generates more information. If (software) designers are to become more like the potter craftsmen, they need to develop the skills of exploring the solution space, develop communications skills, and build their experience to the levels where their actions reflect those of the potters thinking and making. You don’t need to prototype every time; prototyping should be considered when the problem domain is complex or the solution space is large.