The ultimate goal of software prototyping, is to build a realistic instance of a product, fast and inexpensively. Read on for hints and best practices on how to build one
In a digital context, prototyping refers to the development of incomplete versions of a digital product; and there are several reasons why you might need one:
- To present a complex idea in a realistic form to selected users and stakeholders; fast and inexpensively.
- To allow users to interact with a good, realistic approximation of the to-be-developed product.
- To capture feedback and insights from users and other stakeholders.
A functional prototype is by no means a production-ready deliverable, as it is built under certain assumptions with a focus on specific areas. Prototypes should be quick and inexpensive to build.
The ultimate goal of a rapid prototyping project, is to build a realistic functional instance of the product concept; to capture feedback from users, learn and test the key-hypotheses and assumptions.
Do I need a prototype?
Prototyping makes perfect sense, when you are about to build features or products which have increased level of uncertainty.
For instance, when the proposed user experience is new to the users and you don’t know if they are ready to adopt it: imagine a concept based on voice-driven experiences — would your target users feel comfortable interacting with a machine over voice? Would the voice understanding be accurate enough?
Given the unknowns in the above example, a quick functional prototype could provide valuable insights on both the technical feasibility of the concept and the expected levels of user engagement / readiness to adopt such a user interface.
How a Prototype is different to an MVP?
A prototype is in fact very different from an MVP: The Minimum Viable Product should have increased production readiness, as it is normally exposed to real users, consuming real data through integrated services.
The prototype, on the other hand, is rather disconnected, built under a lot of assumptions; and based on hard-coded components and static content. It is just an approximating of the real end-user experience.
The prototype is just an approximation of the product; the MVP is a first instance of the real product.
How can I speed up prototype development?
To rapidly build a prototype, consider the following:
- Do not prototype your entire product or even your MVP. When in rapid prototyping mode, it doesn’t make sense to waste resources in building non-critical components and features.
- Set the right focus and minimize the development time: Identify the important components — the ones that are expected to generate interesting insights and learning; the ones that need to be exposed to real users and capture their feedback. For example, why build a real login mechanism or a user profile page or a dynamic landing page? For these non-important elements, you should just reuse existing code or use static data or hard code the experience. Remember, you only need to approximate the real product.
- Use static data and components: When prototyping, you need to act fast and use your time in the best possible way. You should avoid building complete or sophisticated ‘data models’ and databases; instead, you could simply model all your key entities as static JSON objects.
- Use existing, 3rd party services: Before starting the development of your prototype, it is a good idea to search online for building blocks and reusable components that could cover specific needs of your prototyping project. You could find any type of resources- from UI elements and controls, APIs, services, data models, data sets, images, content — even sophisticated open source components. Even if you are building advanced AI-powered applications, you can still find commercial services and open source resources which could be used to rapidly and inexpensively build your prototype!
- Use prototyping tools. Simple wizard-like tools can help you easily build a clickable user interface and expose it to real users; You can leverage templates, images, chart controls, frameworks or even and pre-built user interaction components. You may find ready-to-use AR/VR content; or tools to help you prototype your Augmented Reality experience.
- Make assumptions — move fast! Whenever you hit a difficult decision point or unknowns, make assumptions and move fast. Remember, you are aiming for a realistic experience, not for a production-ready system. Your objective is to test certain aspects of your product and capture feedback from users.
- Reconsider Quality: Code Quality is a must — but for the purposes of prototyping, you need to redefine quality with a focus on user experience. You are probably writing through-away code, so take the opportunity to speed up the process!
- Focus on User Experience: Quality can be redefined in the context of your prototype, with a bias for UX rather than optimized code or other technical aspects: you shouldn’t be concerned about best practices and how well-structured your code is; or spend effort in commenting, documenting or re-factoring your prototype code; or about the re-usability of your code. When prototyping, it should be totally fine to hard-code and use static data as needed in order to move faster.
- Relax the constraints: to accelerate the process — you need to make assumptions and conventions; for example, you can remove production-related constraints and also switch to a light version of your software development rules, practices and guidelines.
- Use the right DevOps environment: You may need hosting services and basic release/ deployment management across iterations. Managing the development life-cycle of your prototype, should also be fast and efficient. Consider setting up basic DevOps environment — to help you quickly release and manage the versions of your prototype.
Build, measure, learn; iterate fast!
A single iteration of prototyping a software concept, could look like that:
- Prepare your data — retrieve or generate artificial data objects to support the prototype scenarios
- Draft a first version of the UI — using wireframes
- Build wrappers to existing services — consuming standard APIs
- Build a basic end-to-end user experience
- Set the context and expose the prototype to your stakeholders and users
- Capture feedback from users and stakeholders
- Process the feedback in order to learn and adapt as needed
- Decide if an additional iteration is required
How to manage expectations?
Managing expectations regarding the outputs of a prototyping effort is also very important. You need to ensure that your team and other stakeholders understand what a prototype is: don’t let your stakeholders expect a real product (or an MVP) and then experience a prototype.
Share and inspire the ‘culture of experimentation’ — that is, the fail fast, fail safe principles; and also the reasoning - the value — behind prototyping versus directly building an MVP.
What does Success look like for a prototype?
A prototype is a kind of an experiment to help teams improve the product development process. You need to define a framework on how to process user feedback — and how to interpret the signals in the right context. You need to specifically call out the success factors and exit criteria for your prototyping initiatives. Remember, prototyping is not only a learning process but also a tool for better product decisions.