I have mentioned Dave Winer’s motto “We make shitty software. With bugs!” before. And I have pointed you to Robert Martin’s mantra: “We will not ship shit“. This article by David Pogue (on the Scientific American website) is another take on the same idea:
Nowadays software is a living, constantly evolving entity. Consider phone apps: nobody seems to mind that new versions pour out constantly, sometimes many times a year. Or Web sites: they’re software, too, and they’re perpetually changing.
Software is indeed an evolving entity, because it is immaterial and because the Internet makes it easy for us to distribute and upgrade software. Do note that this is’t true of all software – just think of embedded code, or code in non-connected devices, etc.
Still, while I can understand the need to “ship” unfinished software – “unfinished” meaning “not yet having all the originally intended features” – I don’t think it’s a good idea to ship buggy software. If you have to choose between adding functionality and correcting bugs in existing features, please correct the bugs first. If a limited set of features already does (part of) what I need, then I’ll use the product and look forward to newer versions. If a buggy tool makes me lose time – or worse: data – then I will throw it out and look for a another tool. As a software developer/vendor, which scenario do you prefer?