Code quality is a difficult discussion within many organizations. How can you find the balance between high-quality standards and delivering fast? The business needs new functionality yesterday and development are not delivering. I have seen the quality is dropped to deliver faster but is this the best solution? Unfortunately, it is very common for many organizations. In this blog post, I want to share my thoughts on causes of this behavior and ways to prevent this.
What is code quality?
There are many definitions of code quality. Code quality is code written to fulfill a specific functional need for the long-term use which includes the robustness and maintainability of the code. This is not something which can be added later and should be applied from the start. Issues that are too complex, too obscure, or are discovered too late in the product cycle are usually not fixed or hard to get fixed. There are a couple of key aspects of code quality.
You can find a lot of great content that can help out with creating high-quality code.
Cause of dropping in code quality
There can be a lot of cases when teams are dropping the code quality. It could be an individual which is not very happy or not having the correct skill set to produce the great code. Each situation has different causes but I want to focus on the following topics:
- Business vs technical needs
- Being a professional
- Shared understanding
Business vs technical needs
When creating software there is always a balance between the business and technical needs. As most software is written for other businesses the main goal is to make money. When there is no evolution in the offering it will lose out to the competitors or the ever-changing consumers. The business is always looking for opportunities to keep fulfill the customer needs by improving existing services or by adding new services.
The world is changing fast and technologies evolve, security risk increases and everything needs to be faster. Removing technical debt to increase maintainability is very important for the long-term. As these changes do not result in visible customer value it is still value which is invisible.
Find this balance between the business and development is very difficult. Of course, you don’t want to lose the momentum with gaining new opportunities but on the other hand, you also want to prevent a total breakdown of the software. This can be a cause of poor code quality. As the business keeps pushing on new functionalities the maintenance of current code is overruled and moved to the long-term. It is important the business understands the technical aspects and development understands the business needs and opportunities.
Being a professional
As this may offend some people one of the main problems is not being professional. Developers are the experts in creating code and therefore should be capable of creating the functionality the right way. As organizations are finding ways to faster delivery of new functionality a developer should never agree to drop the quality. A surgeon will not skip washing his hands to reduce time so why should a developer? There are standards and a professional should be capable of having the arguments why dropping quality is unacceptable.
This can be caused by missing soft skills. Soft skills are personal attributes that enable someone to interact effectively and harmoniously with other people. As developers invest time in improving them self to code better it could be wise to also invest in soft skills. This can help by defending your professional opinion against the business.
Every individual is unique and has his or her own opinions and visions. If you ask each member of a development team to create some code you probably see different ways of solving the problem. This can affect the quality of the code. When each individual applies their own vision how can a team guarantee the code quality level?
As shared understand of these standards help to deliver the required quality. Write them down and come to a consensus to define the standards for the development team. Make these standards publicly available for the entire organization so the business also has an idea when it comes to quality. Having the shared understanding also helps to stand as a team to defend the code quality standards.
There are many definitions of code quality it is all about the long-term maintainability. To find the balance between business and technical needs it is important to understand each other. Keeping the code quality to standards of the individual and team. Act professionally by not dropping the standards. Keep improving yourself on a technical level but also the soft skills. Create a shared understand of code quality as a team and share them within the organization.
What do you think about these topics? Please feel free to leave your comment below.