When Dickson and I saw Google Talk the other day, an old discussion about when software should be released was renewed. The application was so basic and underwhelming that we couldn’t help but think they should have waited longer to release it. Usually Dickson thinks that software should be released when it’s more complete, whereas I think it’s okay to release sooner. So how do you determine when software is ready to release? Should you release very early, or just wait until the software is almost ready? What does the word “beta” really mean, anyway? Lots of good questions, and I don’t have answers for all of them. I do have some opinions though, and hopefully you’ll share yours too. Keep in mind that when I talk about “software” in this post, I don’t mean only things like Microsoft Outlook. Websites are software too.
It seems to me that the word “beta” has taken on new meaning in the world of software. In the past, releasing software as beta meant that you wanted it to have some real world use, to iron out the bugs that all software has. Lately though, I think that has changed, thanks in large part to Google. Take Google Talk, for example. The software “just works”. So why release it as beta? Well, for one thing, it has almost no features. And look at the discussion the release has generated in the blogosphere. It’s almost as if Google deliberately released software into the wild as “beta” to get some feedback on where to take it, feature-wise.
The meaning has changed in another way too. In the past, releasing something as “beta” meant essentially, “this is free because in exchange for you using the software, we’re going to get valuable feedback to improve it for eventual sale.” Now however, again thanks in large part to Google, that has changed to “we have no idea how to make money from this, so we’re calling it a beta.” Hence, why Google News has never gotten past it’s beta state. Lots of focus on Google, I know, but they are the new villain after all.
So what does “beta” really mean then? And more importantly, when has your software reached “beta”? Well, I think it depends in large part on what kind of software you have. Consider Microsoft Windows, for example. As we all found out the hard way with Longhorn, releasing an operating system too soon can be extremely detrimental. An operating system is too important a piece of software to release before most of the features are set in place. The Windows Vista beta that was released a couple weeks ago is a much better release – pretty stable, and very much focused on ironing out the bugs. Software like Google Talk however, is probably okay to release very early on, whether or not you call it “beta”, because at the end of the day it doesn’t affect nearly as many people.
Maybe what we have is not a question of what makes a release “beta” but instead, what kind of beta release is it? Consider tip #12 from Joel Spolsky’s Top Twelve Tips for Running a Beta Test:
Don’t confuse a technical beta with a marketing beta. I’ve been talking about technical betas, here, in which the goal is to find bugs and get last-minute feedback. Marketing betas are prerelease versions of the software given to the press, to big customers, and to the guy who is going to write the Dummies book that has to appear on the same day as the product.
Armed with that knowledge, maybe Google Talk and other applications like it are just different types of beta releases. Perhaps we should called Google Talk a “feature beta”, where the goal is to gather information on what sort of features the software should eventually have. I think that’s an interesting way of looking at software, as a series of different types of beta releases. Indeed a software application is never really finished, so maybe a “final release” is more like a “money beta”, where you start charging for the software. Of course, I could go on forever, creating endless types of betas. And there will always be anomolies, like Google News or even Flickr, which is in “beta” but costs money.
So let me try to answer the question, when should you release software? I think part of the answer is a question; what do you want to accomplish by releasing the software? If you want to gather information on what sort of features the application should have, release it early! The danger though is that you may create a negative image for yourself by releasing software that doesn’t really do anything, or which doesn’t meet expectations. If you want to iron out bugs, release the software later in what I would consider a “traditional beta”. And if you have software that you don’t know how to make money from, just release it as “free”. No need to confuse things by calling it a “beta”.
I also think releasing software is a very situational decision, in that no two pieces of software have the same set of circumstances surrounding them. While it may be okay to release one early, it might not be a good idea to release another so early. Deciding when to release software then, requires careful consideration of a number of variables, including what the goal of the release is, does the software work, who is it being released to, what other applications like this exist, etc. Once you’ve come up with a clear idea of all the variables, you can then decide to whether or not the time is right to release your software.