To prototype or not to prototype: that is the question
I’ve been involved in a number of projects that required the development of prototypes in a short period of time. These prototypes helped evaluate the viability of ideas and the user experience of a specific solution. Sometimes they served as proof that the concept could be developed given the constraints.
What is Software Prototyping?
Prototyping is the process of creating incomplete versions of a proposed solution. That sounds bad — it’s incomplete! But the aim of prototyping is to simulate only a few key aspects of the solution. This helps us evaluate the viability of potential solutions in terms of cost, complexity, usability, and value.
Projects are often taken on before team members fully understand the effort required to achieve their goals. Sometimes they don’t understand if the solution is what’s required. Prototyping can assist in the analysis of these requirements, and can help the team learn more about the solution domain or problem domain, depending on the approach.
Prototyping and Design Thinking
Design thinking, as a mindset, is the methodology for crafting solutions to complex problems using creative techniques. You have to account for both the known landscape, and the potential possibilities within that landscape.
Prototyping is a big part of design thinking. Visually representing, understanding, evaluating, and learning from ideas is at the core of design thinking. Design thinkers concern themselves with the solution space, not just the problem space. In design thinking, it is common to uncover or create new problems to solve when evaluating prototypes — and this is a good thing.
Early user acceptance testing
People get a chance to use and experience the solution early in development. This will result in early feedback from the user base, and allows you to implement changes earlier rather than later. The cost of a change in a project increases significantly in later phases of development.
Realize requirements and constraints that were not previously considered
By simulating some of the functionality of a product, the team may discover side effects, constraints, or additional requirements that were not considered before. This assists in achieving a more complete and robust solution.
Better cost, time, and complexity estimates
By realizing additional requirements and constraints early, as well as receiving user feedback early, you can make better complexity and time estimates. This results in better cost and time estimates. These estimates impact a range of activities when rolling out a solution to production.
Slaying the dragon
In software development, we speak about slaying the dragon: A single team of heroes attempts to slay a large project (or “dragon”). With software prototyping, we try to make slaying the dragon more like shooting fish in a barrel — we tackle smaller or more complex features first.
A Process for Prototyping
Step 1: Understand the landscape
You must understand the existing technology and business landscape, as well as the future vision and strategy. This is a crucial foundation for developing any solution.
Step 2: Identify the core requirements
These are the requirements for the solution. These are usually derived from the ideas at hand, or from the problems you’re attempting to solve. Requirements usually evolve as you learn more.
Step 3: Research
Determine if something already exists that fits the requirements. Look at competitors or similar solutions. Uncover the details not mentioned in the core requirements. These uncovered details could be a blocker for the solution, or could potentially open the door for better, more valuable features.
Step 4: Develop an initial prototype
Prototype the features that are important and have high impact. This depends on the goal of the prototype. If complicated features with unknown possibilities exist, then tackle these first. If there are many simple features, try to simulate an experience across all these features without delving into the complexity in each.
Step 5: Evaluate and review the prototype
You should review the developed prototype with the target user group and relevant stakeholders. Some prototypes could even be released to production for evaluation.
The performance of the features and usability should be evaluated and measured both quantitatively and qualitatively. This means that you gain some knowledge from measurable numbers, and other info from human intuition and observation.
Step 6: Revise and Enhance the Prototype
After reviewing the feedback from the prototype, you gather information. Then you can make enhancements and changes.
Step 7: Repeat
If unknowns still exist, repeat the above process. In fact, even with solutions in production, this process can be harnessed to test new ideas for the solution.
Dimensions of Prototyping
The aim is to provide a broad view of the entire solution. There will be little complexity in individual features. This approach is good for websites and instances where you need to achieve a general feel for the product.
Typically, these are solutions that are targeted to the public, or solutions that require intensive usability testing.
The prototype will focus on a small set of features, sometimes even just one or two. The chosen features are explored and researched completely. This approach is good for solutions where you use obscure or complex algorithms, or when you attempt something unusual or unorthodox.
This is useful for experimenting with new tech, new approaches, and typically when you desire “disruption.”
Types of Prototyping
This is also known as close-ended prototyping. Rapid Prototyping involves creating a working model of parts of the system, at an early stage of development, after a relatively short investigation.
This kind of prototyping shows people what the feature will look like. But the code base or project is not necessarily used for the production version of the application.
The main goal here is to build a very robust prototype in a structured manner and constantly refine it. The prototype forms the heart of the production application, and additional features are added to it.
In incremental prototyping, parts of the system are developed as separate prototypes and plugged together to form a complete application. It is important to develop the interfaces for the separate components early, as integration may turn out to be a nightmare.
Extreme Prototyping is employed mainly for web applications and usually in three phases:
- Static HTML/CSS/JS is created — this gives users an instant tangible feel for the product.
- Thereafter, the service layer is simulated — this includes business rules and logic.
- Lastly, the actual service layer is developed — this involves integrating with real-world systems and plugging that into the front end HTML/CSS/JS views.
This gives users an early view of the application without having actual functionality behind it. The backend will gradually come together as the process moves along.
Disadvantages of Prototyping
The confidence in a prototype could cause the team to abandon further analysis of features. This could result in part of the system being well-defined, while the remaining parts are vague and incomplete. This can be controlled through correct processes in requirements analysis.
User confusion between the prototype and the finished system
If the final system is completely different than the prototype, users may be confused about how it operates.
Expenses of prototyping
Although prototyping saves cost in the actual development phase for a solution, there will be costs involved in implementing a prototyping phase.
The risk of spending money on a prototype that could potentially be thrown away must be understood. What you learn from developing that prototype is still valuable!
Advantages of Prototyping
Reduced time and costs
By exploring the requirements and constraints, you can better estimate the upcoming effort.
Improved and increased user involvement
User involvement is important. Prototypes clear up misconceptions and expectations, and they assist in gathering user feedback from early stages of development.
Realize oversights, additional requirements, and constraints.
Without being brave enough to explore the crazy ideas, an organization can easily stagnate.
There’s a range of topics related to prototyping. To learn more, researching these terms will help: design thinking, user experience design, agile.