I was having this discussion in the office the other day. It was about whether a prototype of a web application (for simplicity, I use this as a synonym for web site) could be seen as a first version of that application. More often than not, a prototype is used as the base line (i.e., using the prototype’s source code) for the actual development of the application.
On Wikipedia, a software prototype is defined as follows:
“A prototype typically implements only a small subset of the features of the eventual program, and the implementation may be completely different from that of the eventual product.
The purpose of a prototype is to allow users of the software to evaluate proposals for the design of the eventual product by actually trying them out, rather than having to interpret and evaluate the design based on descriptions”
.
This definition is used rather rigidly in paper prototypes. These prototypes basically are rough sketches of views and dialogs of the intended application, including indications for user interaction and visual cues. The intended user gets a rough idea of what views and dialogs the application could have and what interaction elements there are. Paper prototypes are at the lowest end of the fidelity spectrum.
At the other end of that spectrum are the hifi prototypes. These are usually detailed to the very pixel and often already comply with company branding styles. Modern design tools such as Microsoft’s Expression Suite or Adobe’s much anticipated Thermo make the production of hifi prototypes ever easier. Such tools make prototypes cross over to betas.
Beta versions of software provide early access to intended users so they can evaluate the eventual product. A software beta is a first but thoroughly tested and reasonably stable release of an application and usually implements most of the intended features of that application. It’s purpose is the testing of the application “in the field”, outside of the environment where the application is being developed. The beta test determines whether the application is ready for production. Betas are often referred to as prototypes.
One step further is putting a beta in production, which effectively means going live with a prototype. Google and Flickr do it, and so do many others. Their applications are characterized by very frequent public releases (weekly, daily, hourly, …) and are all labeled ‘beta’: the perpetual betas. These applications are perpetually tested (in the field) and perpetually being improved. The acceptance phase is skipped (which saves much time and money) or perhaps better: has merged with the release phase. To me this sounds like a very sound approach towards web application development.