How do you define quality? Ford says that quality is job one but what is it and how do we create quality? We all recognize quality service at a fine restaurant and a quality product like a fine piece of furniture but what is quality in software?
I ask this question a lot to developers in my classes. Often I get answers like the software should do what it is supposed to do or it should not be slow and buggy. These things are important but the kind of quality I am talking about is internal quality; how well the software was written.
Software is non-tangible. It is governed by different forces than things in the physical world but it is governed by forces nonetheless. One of the key forces that affect software quality is complexity. When software is overly complex it is prone to bugs.
Some say that because the end user has no direct experience of code quality that quality is not important in software. This is a position maintained by people who have probably not written much software. Just because a piece of software is behaving correctly right now doesn’t mean that it will be easy to add new features to it later. Without the ability to fix bugs or improved a product, users generally lose interest and software generally loses market share.
How do you define software quality? What makes software good and how do we achieve it?