I was recently asked by a businessman to explain the concept of technical debt - and why it matters to him. He owns a middle-sized company that has nothing to do with IT except as a client/user. The text below was inspired by that discussion.
Software quality can be divided into two major aspects:
- functional quality and
- structural quality.
Functional quality means that software (system, application, game etc.) does what it is supposed to do and doesn't do what it is not expected to do. Structural quality is how well the product is built and it is a function of many elements that can be collectively described as presence of good engineering practices or their absence.