Friday, February 23, 2007
So, what is your definition of quality?
So, exactly what is quality when discussing software? I am of the belief that it supports the below five principles:
- The code compiles and executes - Sorry to state the obvious, but I suspect lots of folks have received code from outsourcing firms that didn't
- The code implements all the desired business functionality without frivolous stuff
- The code is not duplicated - aka copy & paste programming
- The code is self documenting and doesn't require a manual or other heavy enterprisey-like document in order to do something useful with it
- The code can be easily extended by folks of average ability in a timely manner and without grief on the part of those senior to them
Noticed I avoided usage scenarios or anything that sounded like an endorsement for non-functional requirements (aka system qualities)? In software, there are at least two broad categories of uses; the user of the running software (the user's use) and the use by programmers in an attempt to make a different version of the software (the developers's use). A useful program that's impossible to modify has high-quality in the first category but not the second; a highly habitable program with a geeky user interface meets the second but not the first.
I also didn't mention aesthetics which I haven't quite formed an opinion on. Code shouldn't be considered a thing of beauty or a masterpiece but it should have style in terms of good spacing, indentation and formatting. At some level, high quality code is dependent upon having high quality processes. Afterall, business folk doen't get to see code (unless they ask in a really nice way) but they do see process and therefore this becomes more important. High quality code is the result of high quality design which is the result of high quality processes.
- NOTE: CMM ensures that processes are repeatable but doesn't guarantee that the chosen process is of high quality. I suspect this is where CIOs fall into the trap...
Can we acknowledge that quality occurs at a cost? Otherwise, folks would be doing it all the time because higher quality provides higher satisfaction amongst employees who contributed to it. Likewise, with higher quality comes higher costs. Folks need to be continually trained in best practices which no one seems to talk about nowadays. When a new technology comes along, it is costly design a quality process around it along with morphing other practices that are no longer best.
If you intend to be in the game for the long haul, then quality matters. Nowadays, software firms have been trained to think about the exit while corporations answer to the quarter. I am not sure if IT still matters, but I know that quality in IT doesn't...
Links to this post: