A wag once remarked, “Writing is a way of prototyping ones thoughts”. This explains why some blogs are exceptional, educational, and a great treat to read, while others are very laboured at making even a very mundane point. The only valid explanation for this must be that a practiced hand writes the exceptional blog and a novice at the art of prototyping thoughts writes the laboured one. Of course there is much more to this than just practice, but the general point about prototyping still holds true. You add to repository of knowledge through reading from the best, and you reinforce your own ideas through writing.
If something as fundamental as this is true about articulating ones thought processes, then surely prototyping must be equally important to software product development. Prototyping helps one to clarify the product idea, it helps in validating the need for the product in the market, it helps in identifying the technology stack, and it helps in identifying the desired user experience. Of course you can just choose a bleeding edge framework, or something Google has developed, to enhance your nerd credentials in the community. But, then you loose sight of the reasons for your startup business.
Prototyping is done by one and all, from the most experienced potter to the most renowned architect. A scientist experiments in the small scale (just another word for prototyping), even a statistician tests with a small sample before pumping very large data through the model. Everything from planes, trains to automobiles is prototyped, which still begs the question, why should the software product believe itself to be uniquely different and in no need of prototyping? Is it just a deep unquestionable belief in the idea of ones software product by the owner or is it the ease with which money can be obtained software product development projects? It is as thought the agile mantra ‘fail fast’ is replaced in this instance by the mantra ‘spend fast’.
More often than not, a software product fails precisely because no validation is performed, prior to spending a large budget to start with all guns blazing. Unlike the principles of ‘fail fast’ in agile development, a product that fails at its first outing usually stays failed. Most software product owners believe it is sufficient to prototype the user experience as they see this as customer touch point. But this is not the whole story, would you buy a shirt without knowing about the quality of the cloth, stitching, styling, its origins etc.? It is just wrong to believe that simply because the UX is good the product will satisfy a need in the market, which you have not tested. Even a developer using test-driven development can be seen as using a technique closely aligned to prototyping.
Prototyping is an important part of any software product development, it should not be ignored nor should it be minimised or sidelined in the haste to get ones product out the door quickly. The time to prototype is minimal, but the benefits are manifold in comparison to the tragedy that may ensue when prototyping is ignored.