Software quality is a term that gets thrown around a lot in different conversations. Everyone seems to want it, but what does it really mean? In this article we'll describe what it means to us , why we think it is important, and what we do to achieve it.
Our definition of software quality is based on four core attributes. We want the systems we build to be correct , approachable , malleable , and predictable .
We use the acronym CAMP to make it easier to remember.
These are some of the traits we look for in a software project:
Building quality software reduces long-term costs, improves developer efficiency, builds confidence, and has a direct impact on reliability.
Quality is also responsible for one of the most important positive feedback loops in any software related organization:
As with almost everything we do, it comes back to timing and balance . While, at the end of the day, our job is to deliver features, we must also consider the long-term implications of our actions and decisions.
We do not build ivory towers. Instead, we ensure that the project evolves in an sustainable and efficient manner. Technical debt doesn’t have to be addressed immediately (or at all), especially if it doesn’t have a direct impact on current goals. It is sometimes okay, or even desirable, for code to be repeated in different parts of the project. Timing and balance.
We approach software quality with the mindset that it is largely systemic and the result of good practices and a sensible culture: