By Andrew Phillips, XebiaLabs
You've got a smart idea, but you need a working prototype to really show it off and test it. In the age of Agile development the ability to produce a prototype quickly, roll it out to end users, and create a feedback loop that influences the software you produce, is vital.
Prototyping has been a common practice in manufacturing for decades now. Before going to the expense of buying materials, setting up a line, and gearing up for production, it is wise to produce a model and get some feedback on it. There's no expensive outlay and you have a tool to test the idea, sell it to decision makers or investors, and uncover potential flaws.
The same logic that dictates you need something more tangible than an idea in a designer's head before you can proceed, applies equally well to software. A full requirements document, or even a detailed design, is no substitute for a prototype. Some quick coding can produce an approximation of your idea. It doesn't have to be fully functional, and it shouldn't serve as the basis for the final release, but employed correctly it can arm you with valuable feedback.
Building an idea factory
The practical nuts and bolts of fast prototyping require a software framework and a runtime platform with a couple of smart coders making the ideas a reality. The prototype must be delivered to end users. If you're already working in the cloud with a PaaS solution then the rollout should not be a challenge.
Whether it's software for in-house use or the consumer market, the important thing is that it reaches end users. The final stage, where prototyping really adds value, is gathering feedback and it's the most problematic part of the process.
Classic monitoring can tell you about how much memory an application uses, or how much disk space it needs, but these things won't be important until you come to develop the full version. In the short term, what you really want is user feedback that can help you track how people use your product. You want to know where users spend the most time, where do they click, is the software intuitive, and does it meet their expectations?
Creating a feedback loop
Agile development is all about fast, short iterations with a focus on having something usable at all times. The team should adapt to feedback and produce a working product at the end of each cycle. Useful data on how people are using the product, what needs to be tweaked, and what new features are required, should be looping back into your regular meetings and informing the next build cycle. For this process to be effective, it makes sense to automate the build and rollout process, but you also need tools to gather the feedback from end users. The metrics must be built into the system, so that things like user flow and UI interaction are captured and the data can be consumed by the development team in the next meeting.
The prototype is not the product
Rapid prototyping can be incredibly useful and it allows developers to explore many avenues before they commit to a full development. There is a caveat, though. It is important to remember that the prototype is not the basis for the finished product. It is a tool to gather useful information. At the end of pre-production it should be discarded and the team should use the information gathered to build the software properly from scratch. If deadline pressure comes to bear and the prototype morphs into the foundation of the full product, it is generally a recipe for disaster down the line.
Iterate and automate
If you're going to adopt a truly Agile approach then you'll see that continuous delivery is a natural endpoint. The importance of delivering your prototype to the end user is that it can help you gather the tangible data you need to ensure that the final product delivers what the customer wants. That principle continues to apply when you enter production and it still applies beyond release. The sooner you can get beyond design and documentation and start to incorporate real world feedback, the sooner you will create software that works for your customers.
About the Author
Andrew Phillips is VP of product management for XebiaLabs, a provider of application release automation software for enterprises looking to improve the application delivery process.