I'm wading though the shambles of tattered source code left behind by an employee who used to work for another department in my company. It seems I"ve inherited the system that this guy and some of his also-departed co-workers put together for a customer of ours. There's documentation for the system, but nothing that documents anything I'd really want to know, so I'm surfing through the source code trying to soak up some intent, and I find one of the few classes that has any comments. In the comments, there's a version number. It's "0.1".Version 0.1??
What's that supposed to mean? As far as I can tell, this is a lame attempt to divert blame if a bug ever turns up. "A bug? Well, what're you getting so bent out of shape about?? It's only version 0.1!" As if this were really an indemnification against defects, freeing the developer from any real responsibility to get anything right.
What's the big hangup about taking enough responsibity for delivered code that you'll put a 1.0 on it? This wasn't a demo, it wasn't a prototype, and it wasn't still in testing. This code was delivered to the customer, and it's being used in production.
There's a principle at work here about not delivering something half-done to a customer. If you're about to deliver something that's worthy of a 0.1 version number -- stop! Your customer deserves better than this. If you're delivering something that's done, then guess what? You can slap a 1.0 on it with no qualms whatsoever. Let your version number be another clue that can tell you if you're delivering what you're supposed to be delivering.
End of rant.