I have the distinct privilege of seeing a lot of fresh new technological developments in software. While a software product or hosted service is being developed it goes through a series of different maturity levels before it becomes production quality. Practically all software code has bugs (defects) in it, and the more code there is, and the more complex it is, the more bugs there will be.
The first stage of software maturity is Development. This is the point where the software works for the first time, and has unknown quality. Not much testing has happened yet, and you should not be surprised to find bugs, or even see the program fail completely.
The next stage is Experimental, or Proof-of-Concept. This is the point where the software works, and all of the unit tests pass. The quality of the software depends on the quality and code coverage of the unit tests. No documentation exists yet.
The next stage is Alpha. This means that the software is feature complete and ready for people to try using it to verify that it does what it’s supposed to. It is ready for a limited “Preview Release” of the software to a list of users who will try it and produce feedback. At this stage documentation is limited, and is usually the version written by the software developers themselves.
Next comes Beta. This means that the software developers feel that the software is done, and that there are no more significant changes to make. They identify a version called a “Release Candidate” It’s ready for a large population of public users to run the software on a wide variety of situations and setups. Some documentation may be provided, but it usually still a work-in-progress by this point. This is really the last chance to catch any serious bugs before the software is labeled “Stable”. Beta quality software is usually provided for a limited time free of charge.
Finally comes Stable. This is when a version is considered a “Release” or GA. This means that the software has performed well with no major issues for a considerable user population over a reasonable length of time. There is complete documentation for the software, and for the support teams responsible for it. Every product development group has different standards for what Stable means, and what quality a Release needs to be. Some are better than others. People are expected to pay for Stable software and services.
Now, here is something that a lot of companies do. When they have a solution that is Experimental or Alpha quality, and they don’t have the resources to test it completely themselves, they do a form of a release that is inappropriately named a “Private Beta”. This is a misleading oxymoron of a name that really means “the software has not been completely tested yet, but it passes unit tests.” The correct term for the release of something at this quality level is Preview Release which indicates that the software may not yet have achieved Stable quality.
If you are a software development manager, or en entrepreneur who produces software, please remember this advice: There is no such thing as a Private Beta. If it needs to be Private or Limited, then it’s not Beta quality yet. If it’s Beta, then it’s ready for unlimited use by the public. If your software is still Experimental or Alpha quality at the time you want to release it, then call it a “Preview Release” to be truthful about its quality.