Beyond the Bug Report: Cultivating a Culture of Quality with your Dev Team
When people discuss quality in software development, they typically refer to quality assurance testing. While testing is a significant factor in software quality, it isn’t the only thing to consider. For project or quality managers, there are a few other areas to consider for your organization. Three significant considerations are code reviews, continuous feedback loops, and knowledge sharing.
Code Review
Code review is an activity that is performed during development. Peers or senior developers conduct code reviews to verify that the code meets company standards and is functional. This can range from providing a brief overview of the changes made to downloading the code changes to a local machine and running them for verification. Once code review is performed, the developer (or multiple developers) approves or declines the code merge, accompanied by any feedback. This provides a quality step for developers, building confidence in the application.
Most major code repositories offer settings that allow for administration on how many code reviewers must approve code before it can be merged. Most also provide some form of automated code review. Additionally, plugins are available for most major code repositories, offering more advanced code review functionality. It is essential to recognize that this shouldn’t always be the sole review. Part of code review is the collaborative element, especially when senior developers are coaching juniors.
I have worked at several places that did not require developers to perform code reviews, and the organizations kept wondering why bugs were constantly bombarding them. While testing can help mitigate this problem, adding code review steps to the development process provides additional confidence in the deployed code.
Continuous Feedback Loops
Continuous feedback is a form of communication that occurs regularly between team members, managers, and peers. The goal is to provide regular or real-time feedback that is constructive and engaging. Some feedback is provided through code review, but more should be supplied through team check-ins, standups, status meetings, retrospectives, and one-on-ones. Doing this regularly allows developers to continue to improve in areas or identify gaps that need improvement.
Just to let you know, these should be loops of communication, though. Managers should welcome feedback on their performance and expectations to ensure they are meeting their team’s goals. Individual contributors are not always confident when discussing manager improvement requests, so managers may also institute surveys or suggestion boxes (virtual or otherwise), allowing for anonymous feedback.
How does this aid quality? Engaged developers will often contribute to better code quality. When someone is not pleased, they may simply do “enough” work to get by, but without buy-in at your organization, they may care less about the quality of their work. Building camaraderie benefits both the team and the organization, and it is also a great way to boost individual morale. Happy teams tend to provide better products.
Knowledge Sharing
Knowledge sharing is an integral part of collaborative software development. This may include mentoring and coaching, as well as software demonstrations. Mentoring and coaching are essential for the growth of junior developers, enabling them to ask questions about their work and develop their expertise. It can also be rewarding for senior developers, as they often have the lion’s share of complicated tasks. If they are willing to invest in the knowledge of junior developers, they can frequently train them to handle more complex tasks, thereby opening up more team capacity.
Providing a software demonstration of a recent project allows other team members to ask questions and gain a better understanding of the work. Questions in a demonstration often bring out details that may have been missed during the presentation, allowing for a deeper understanding of the work done and the application’s current state. It is also a good morale booster for the team, who often find themselves focused on a minuscule portion of the application. They get a chance to see their own and others’ work from a larger perspective. It allows them all to understand that, while their tasks may be small and focused, they are working towards a larger goal.
Summary
All of the concepts discussed can be summarized in one word: Communication. All teams should strive to be as collaborative as possible, so maintaining open lines of communication is essential. Sometimes, this requires a project manager to ensure that their team has sufficient time to collaborate. At other times, it means that a project manager encourages individuals to collaborate more. Not everyone communicates in the same way, so it is essential to set clear expectations with your team, allowing them to express their needs as well. This will build cohesion, knowledge, and confidence within your team. Doing this will increase your project’s quality confidence.