Client Documentation

Updated 04 December 2005

BETA and the cult of incompletion or fear

BETA is now the state of the world, or at least, of the Web. Some folks rail against long term public 'Betas,' making shrill statements that 'if I shipped an incomplete product and let my customers find my bugs I'd be shut down blah blah blah...' talk to the hand...

The truth is that we are all shipping Beta's, in all fields. Some folks just know that their work is incomplete and imperfect. Heck, our government is in year 229 of a perpetual Beta (sorry for the Amero-centrism, but this is geocoder.us :-).

Programming is easy, and programming is hard. One of the hard things for a lot of us is the fear of messing something up. I can write code in a day that probably works fine. But is it 'right?' Complete, bug free, usable?

Are you crazy? How can I even start to answer that question? There is a pretty good chance that the code I write is solid, and useful, but I can't have full confidence in it until, well, until I have full confidence.

How do I get this confidence? Time and testing... Tests provide a great deal of confidence in the quality of the code. But I'm a programmer, which is x parts engineering, and then a bunch of parts of irrational voodoo. Tests only capture the confidence that the rational side of my brain has in the code. There is always this overhanging sense of dread, of what the heck did I miss?

Which brings up the permanent, or at least long term, Beta. If you asked me to write code for production there is a good chance that I'd have the code written in a few days. But it would then take some ungodly amount of time before I was actually 'confident' that the code was ready. Most of that time would be utterly wasted. Sure, I'd write tests (at least a few) and I'd try the code, a bit, but most of that time would involve the code 'becomming ripe,' which is another way of saying that it is a matter of psychological pain. It takes time for the pain of the project being incomplete and of deadlines passing to overcome the pain that comes from the uncertainty of releasing code into the wild.

What is the answer? If you ask me if I can 'mock up' or 'prototype' or 'get a beta up' I can spend the same couple of days writing code, and then another couple of days catching up on what accumulated while I was writing that code, and then I can release the Beta.

Code does not age like wine. Winemakers can lay down a wine, and not worry (at least, until they test it). It is likely improving while they wait. Code just sits there while the programmer frets. No pain, no, uh, pain. Faster release cycles, but chances of user involvement, faster iteration times, and there you go.

The permanent Beta is your friend, use it.