Friday, January 09, 2009

Prototype, Proof-of-Concept, and Pilot. Oh my!

These terms are often used in IT contexts often without much consideration to nuances. Whatever you call it, the first important thing is that you understand and state your objective. The second is that you meet it.

My suggested definitions.

Pilot:
This is an implementation of a system that is often functional complete. It is typically deployed in production, but usually constrained to a small number of users. Although we hope everything is perfect, there is an expectation that there will be faults that require rework - otherwise we could have just gone full production. The fault maybe in deployment, code, design, or in user experience. A pilot is typically time-boxed. A pilot is usually fully productionalized from an operational perspective.

Beta
: Similar in many aspects to Pilot. There is a lesser expectation that it is functionally complete, but it typically is. With a Beta, there is a much more explicit understanding that it is not final. It will change in the final release. A Beta is often supported, if at all, by a different organization than a production instance, typically developers. Traditionally a beta was not to be used for production, however some companies are making it part of their normal process - the never ending beta. Something that Google has done many times.

Release Candidate:
A software build and might be view as living in the middle between Beta and Pilot. A release candidate may be promoted to pilot or production.

Proof of Concept:
I view this as a very narrow and well defined activity. There is a well defined concept. The objective of the activity is to prove that the concept is viable in some aspect. Functionally it is only complete enough to meet the objective. The resulting code is not intended to be used for anything else - although most programmers will harvest some aspects for other things. Agile methods talk of 'early pain'. Significant projects has technology aspects that well be challenging and be a source of risk. It is desirable to execute on those aspects first, if there is a problem you want to know about it early so that you can change your plans or maybe cut your losses. This is what a proof of concept is about; if you are going to fail, fail early. Many times I have seen people propose a 'proof of concept', with no idea what concept they wish to prove; often what they mean is that they want to start coding. PoCs are not implemented in production.

Prototype
: Perhaps this one has the most varied definitions: Experimental Prototype, Engineering Prototype, etc. In software development, a prototype is a rudimentary working model of a product or information system, usually built for demonstration purposes or as part of the development process. As part of an SDLC approach, a simple version of the system is built, tested, and then reworked iteratively until ready for use. Prototypes are not usually implemented in production. Go read the wikipedia article http://en.wikipedia.org/wiki/Prototype

Do you agree? Are there any characteristics of any of these terms that you think would help define them.

4 comments:

Don said...

"Pilot" makes me smile. At the shop I am working at right now there is a system called "Collections Pilot" that was set up in early 1990s. It was never widely used, and was soon superceded by a purchased product.

The purchased product wasn't very good but the ROI on any collections system, even a bad one, is excellent when you are starting from nothing. And, over the years, it got better (the source was available).

Now, that purchased system is being replaced by yet another purchased product.

The original "Collections Pilot" system was really just a proof-of-concept, yet it made it to production, where it still sits to this day. ("Sits" being the operative word, nothing flows through that system any more.)

Anonymous said...

I got this web site from my buddy who told
me concerning this website and now this time I am visiting this web
site and reading very informative articles at this
place.

Anonymous said...

My family all the time say that I am wasting my time here at net, but I know I am getting experience
every day by reading such good articles.

Anonymous said...

This is very interesting, You're an overly skilled blogger.
I've joined your feed and stay up for searching foor more of your excellent post.
Additionally, I have shared youjr web site in myy social networks