When an organization wants to promote a culture of quality in software development, it focuses on specific values and principles of the product and the associated processes and techniques required to achieve a desired level of quality. Team members in a quality culture are always aware of this standard and strive to meet quality goals in the ways they approach work.
A quality-driven software engineering culture requires developers, testers, project managers, architects and even stakeholders to thoroughly understand how the organization defines quality and how to achieve it. This may take extra time, but it provides better returns than not incorporating quality in the long run.
Who is on a software quality team?
At a minimum, an organization's software quality team typically consists of three roles: QA analyst, QA lead and QA manager. More quality-focused team members might be necessary as the software engineering culture changes, but they don't have to specifically be on the software quality team. Everyone in the organization will focus on quality.
In these organizations, every person involved with development should know and promote quality goals together:
- Developers write the code that builds the software and work with a lead developer to tighten the code and further incorporate quality.
- The lead software developer works with the software quality engineer and QA manager to enforce the quality standards and confirm that the product meets the requirements set forth by the team.
- Engineers collaborate with testers to execute a test plan and ultimately return a defect-free product -- or one as defect-free as possible -- that meets the customer's demands.
- The software development manager oversees all team members and reinforces the incorporation of the organization's standards of quality into each portion of the software development lifecycle.
What are the main challenges in building a strong software engineering culture?
Change can be a difficult thing to incorporate in any element of life, and software development is no different. When an organization wants to roll out a potentially massive, cultural and technical shift on how they develop software, it's bound to create some challenges. Three of the more prominent and difficult challenges are resistance, diversity, and communication and collaboration.
Resistance. Change is often unwelcome. Software developers can be reluctant to embrace new policies and standards. Developers focused on meeting a tight deadline can't find extra time to learn and implement new ideas to boost quality. Nevertheless, it's imperative that teams dedicate time to reinforce quality standards and demonstrate the positive changes to get everyone on board.
Diversity. Development team members typically have different backgrounds, cultures and technical skill sets. Diversity is a good thing -- but it also creates a learning curve. Management must clearly explain the quality culture it wants to instill in these team members and how they should adapt to these new practices.
Communication and collaboration. Distributed teams are common in today's workforce. Team members can be separated by different countries, time zones and even languages. When management pursues quality, it must factor in how teams will communicate and collaborate. Messaging services and digital meetings can help bond remote teams and iron out any issues that come up over the course of development.
Build the right software quality culture
There are several key ideas to keep in mind when building a quality software culture:
- Hire people who value quality in their software engineering culture and are committed to it.
- Prioritize quality and set realistic expectations for project deadlines.
- Educate the team on software quality and the importance of code reviews, automated testing, CI/CD and other elements of quality development. Ensure that source code is released only after it passes the automated tests.
- Embrace automation wherever feasible. Properly implemented automation can lead to better quality and productivity.
- Don't leave quality to just the development team. Instill a culture that promotes quality from every position in the organization.
- Encourage collaboration between different teams.
- Regularly measure and monitor quality metrics -- such as product quality, in-progress quality and maintenance quality -- to help identify potential improvement areas and track project progress.
Where Agile fits in building a quality software engineering culture
Agile development can help teams prioritize and deliver software quality. However, Agile is not a requirement, and some broader aspects of Agile values and principles may not apply.
There are several ways in which Agile can help create and sustain a culture of software quality. Teams can embrace quality culture by focusing on teaching and allowing suggestions instead of dictating orders and demanding changes. Customer satisfaction and loyalty are directly linked to organizations with quality cultures. When you combine Agile and DevOps methodologies, you can further streamline processes to increase efficiency of development and delivery.