I meant to write a small post on why it’s important to write software of the highest quality, but it turns out that I don’t need to – many others have done it better. Instead, I’ll write about what it means to me.
But first, what is quality? Lots of things, as it turns out, and there’s an excellent article here that explains it – there’s no need for me to repeat it; it’s all there.
Of course, from the article clearly flows that quality is important because of what it brings, of what it achieves. Without quality, you will not have a product that works, that is usable, reliable, efficient, maintainable, that lasts, that sells.
Each type of quality is important; the only variation is how it applies to you. For instance, marketing quality is important, but it’s not directly so to me because marketing is not what I do. On the other hand, I have a direct effect on the quality of the software I develop, and if I don’t see it as important, the likely low-quality result would detrimentally affect everything else – that’s not good.
Consequently, quality in my opinion is a question of competence, undoubtedly, but the key is attitude. If you haven’t got the competence (*), or can’t improve it, then maybe what you’re doing is not right for you – there is no shame in that. But attitude is crucial: if the quality of your work is not important to you, then the result will be bad for everyone.
That leaves the last question: how do you rate quality? Some industries have yardsticks, but the software industry is still finding hers; software engineering is still an art to a great extent. However, certain aspects can be verified: software should produce the results expected from inputs; its robustness can be evaluated; its efficiency can be measured. Other aspects are more difficult to evaluate, e.g. good design to induce simplicity of use and, if required, flexibility; complexity not implying complicated software; clarity and structure for ease of maintenance, debugging, and extensibility. Developing quality software means paying attention to all these aspects. Quality will be rated by facts as well as by your peers and betters.
So to me, quality means trying to do the best possible – it’s important. That also means that I really desire quality from others, since just like I would want to give them my best, why shouldn’t I hope for the same from them? As a parting thought, here’s a truism: remember that if you aim low, you will never reach higher – aim for high quality, and you can always adjust your reach to circumstances.
(*) Competence, not skill. Skills can be learned, and either you become competent at them, or you don’t.