Ok, I know how that sounds, but listen for a minute.
Here's what people want out of software:
In other words, people want perfection. Perfection, in software, is not acheivable. In my experience, the cost-- in features, in time, and in money, increases exponentially the closer you try to approximate perfection. If I had an infinite amount of time and money, I could give you perfect software. Any less than that, and you start having to balance imperfections against each other.
- It has to be cheap
- It has to have every possible feature
- It has to be completely bug-free
- [In the case of code-for-hire] It has to be done yesterday
So, if you have to give some leeway on some of the above, what order do they come in?
People want bug-free software, yes. But, give them a choice between something that is available *now*, but might be less-than-bug-free, and who waits for someone else to release a more stable version?
People want bug free software, but if you release something that works perfectly, but only has 20% of the features as this other (more buggy) app, they'll choose the one with the features.
People want bug-free software, but if you offer them two programs, and one costs twice as much as the other (for the same featureset), which one do you think they'll choose?
The point is that currently, there is basically no market for bug-free software. If you ask people "Have you been exasperated at the bugginess of your software lately?", of course they will say they have. But consumers create the market, and the market demands Availability, then Features, then Cost, then Stability, in that order.
So, developers know that someone will be unhappy about something. What it comes down to is that people will suffer with buggy code in exchange for features, low cost, and timeliness. They complain more if you focus on stability at the expense of any of the other factors.
So, until someone comes up with the magic bullet that makes bug-free code able to compete economically with buggy code, it's gonna stay this way.
The point made in that salon article about the AK-47 is very apropos here. The AK-47 is a very simple machine. Users of automatic rifles appear to realize that they need them to not jam, much more than they need lots of bells and whistles. Here is a case where consumer demand favors a simpler system with less features. I hope and pray that people will realize, eventually, that an application should do what it does simply and well, and that every app doesn't need to expand until it reads email. But until that happens, bad software is here to stay.
Not the real rusty