Continuous Quality or CQ is a software engineering practice in which isolated changes (or deltas) are immediately analyzed for the code’s quality and the properties of maintainability, and reported on before they are added to a code base. The goal of CQ is to provide rapid feedback so that if issues are found that can affect maintainability of the code or contribute to increasing the technical debt, they can be identified and corrected as soon as possible.
Developers have been trying to invent tools and implement a process which deliver software better for a long time now. Maintaining the health of code is an incredibly vital, and practices like peer-review of code, static analysis checks, tracking key metrics like documentation coverage, test coverage etc. help enforce that. Implementing CQ is a formal way to bring all these practices together in the software development workflow. When put together with practices like CI and CD, CQ helps ensure that the team is able to deliver reliable software, faster.
The major benefits of implementing Continuous Quality as part of the development workflow are:
One of the core tenets of CQ is detecting defects in code, such as anti-patterns, bug risks, potential security vulnerabilities closer to the developer’s workflow. Since the developer is made aware of these issues very early in the workflow while they are still amenable to make changes, it increases the chances of these issues being fixed as compared to when these issues are raised later. Rinse and repeat, the most common issues have a high chance of never entering the code base at all — leading to defect-free software which is more reliable and secure.
A direct consequence of implementing CQ is that it automates a lot of work that senior developers in the team do in terms of reviewing a proposed code change. Since the most trivial issues can now be raised by the CQ system to the developer who is proposing the change, these issues are typically fixed before the code review happens. This saves considerable time for both junior and senior developers, who can now spend their time more productively and qualitatively. Due to increased reliability, the time to manually test and verify software is also reduced; and it becomes easier to deliver software into production faster.
An average software developer spends over 17 hours every week battling with technical debt and bad code1. Maintenance issues like debugging, refactoring, fixing broken dependencies, adapting code to new requirements, etc. claim a huge amount of developer time and attention. Factors like lack of documentation, lack of quality processes can compound the complexity considerably. CQ ensures that the basic hygiene factors are maintained in the code, and indicators of source code health are kept in check — so it becomes easier to add a new module, extending on existing functionalities or porting the software to work in a new environment.
Estimating how long will it take to ship a new feature is business-critical, since it directly impacts the go-to-market strategy and related revenue streams. Trying to estimate without having all the necessary information about the current health of the code base is like shooting in the dark. CQ ensures that decision-makers have all the relevant information on their fingertips, so estimation of release timeline is more realistic.
This is basically a no-brainer. A stable and secure product that does what it says it does and doesn’t crash is all that customers wish for. Building software is hard and building it at scale is even harder, there’s no denying that. CQ ensure quality control at the earliest phases of writing software, and in the smallest quanta of changes to software. This makes it easier for teams to ensure quality control as a whole and focus on delivering a great product experience to customers.
Finally, and most importantly, it is important to keep in mind that developers are humans. More than 80% of developers in a recent survey said that having to work on bad code and unmanaged technical debt has a negative impact on their productivity and personal morale. Processes like CQ help in reducing the grunt work in development workflows, automate things that can be automated, and provide certainty to developers. Saving time and increasing productivity boosts morale and enables developers to do their best work. More than 70% of engineering leaders believe developers can bring the most impact to business by bringing software to market faster. Happy developers are the only way to achieve that.