Software Craftsmanship
When I say quality is dead, I don’t mean that it’s dying, or that it’s under threat. What I mean is that we have collectively– and rationally– ceased to expect that software normally works well, even under normal conditions. -- James Bach
James post about quality gives me a shrill up my spine. Mention any other kind of product and you would never accept the level of quality that we see in today's software. No, you would go back to the store and return that faulty product and never choose that brand ever again. You would also tell all your friends about how badly it sucked.
But when it comes to software, bugs are expected. What are bugs really? I would say that they are fabrication errors that never should reach the end consumer or he/she should be able to return the faulty product. Instead, bugs are so wide spread and accepted that we seldom return our software products to the manufacturer, and the manufacturers may downsize their testing and their quality to zero if they want.
Software systems are brittle, very brittle. If fact they are so brittle that if you put a dot, comma or any sign in the wrong place you will meet disaster. Software is also extremely complex. There is no way to overview it all at once, instead you have to break it down into subsystems and view small independent parts of the software and how it communicates with the outside world.
- Software is brittle
- Software is complex
Now is this an excuse? I would like to compare the software developer to a watchmaker. They both work with something that is complex and brittle. And still, watchmakers are much more renowned for their quality and craftsmanship than developers will ever be.
The software industry will not put quality first, until there is a clear way to advertise it and earn money on quality. Until then we will have to live with buggy programs and crashing machines. The software industry needs to grow up, needs to mature and get out of its teens. We want to see a change, and we want it now!