
A slight drop in quality causes a significant drop in productivity and developers’ satisfaction with their work. It is important to keep the quality of the software at a high level.
What software quality means?
Unfortunately, there is no single definition or understanding what software quality really means. Why? First, software building is a young discipline and there are no industry standards yet. Secondly software building is really a very complex process. In that complexity the quality is hidden and scattered in many places: processes, architecture, code, infrastructure, approaches, culture etc.

Most often we use the term ‘technical debt’ for not very high-quality software. The wiki’s definition of technical debt is: ‘the implied cost of additional rework caused by choosing an easy (limited) solution now instead of using a better approach’. You may think that technical debt is limited to technical aspects such as code, solutions, architecture, infrastructure, but it is not. It has a wider context. The wiki section Causes of technical debt definition will give you a sense of what technical debt is and where it came from: unclear requirements, business pressures, lack of software documentation, lack of collaboration, lack of a test suite, lack of ownership, delayed refactoring etc. Technical debt relates to all aspects of software development. In a word, it is the opposite of software quality. We can invert the graph at the beginning of this article and present it like this:

Complexity kills productivity
You probably wonder why technical debt has so big impact on productivity. The answer is complexity.
Over time, the number of requirements in the system increases, increasing the overall complexity of the project. Let’s take an example. We sell scooters at certain prices. Upcoming new requirements: promotions, discount coupons, discount for regular customers make the calculation of the final price not so easy. As complexity increases, so does the knowledge and time needed to implement new functionalities. It is normal, but when we do not care about quality – by allowing a continuous growth of technological debt, we rise the complexity many times! Such high complexity (sometimes called mess) results in many negative consequences:
- missed deadlines
- productivity drops sharply
- less understanding which results in suboptimal solutions
- difficult testing of suboptimal solutions
- significant increase in errors and problems
- instability of environments
- lack of commitment and satisfaction of employees leading to layoffs
- and so on …

High-quality as an investment
It would seem that the time devoted to taking care of quality will slow down the project and delivering functionality to the client. In the initial stage of the project, when the complexity is not high, the investment in quality may slow down the project a bit. However, in time, as the complexity of the project increases and the number of requirements increases, the investment pays back very quickly.
Only continuous investment in high quality enables the fast delivery of features.