Team Focus on Quality: Quality is a Commitment Not an Afterthought

Team Focus on Quality: Quality is a Commitment Not an Afterthought

Quality is a Commitment Not an Afterthought

The Agile Manifesto emphasizes the significance of continuous attention to technical excellence and good design as drivers of agility. This principle underscores that quality is a fundamental pillar for achieving business results. Organizations that prioritize quality can boost productivity by mitigating rework, technical debt, and production issues. Quality commitment should be a primary consideration and not an afterthought, particularly when striving for long-term success.

In this post, we delve into the best practices of Team Focus on Quality. By following foundational techniques at different stages of your learning journey, you can ensure to acquire the best strategies to bring back to your team. However, it's important to note that Team Focus on Quality is just one piece of the puzzle. For a holistic view of your organization's current process status, take advantage of our free agile assessment for Team Agility.

Team Focus on Quality and The Learning Journey

The team's holistic commitment to quality and the ability to include it in each step of the process is what we at Lean Agile Intelligence refer to as Team Focus on Quality. Our learning journey consists of four stages - Developing, Emerging, Adapting, and Optimizing - and in this post, we will delve into each of these stages, offering practical insights and strategies to help you improve your skills in this area.

 

team-focus-on-quality-quality-is-a-commitment-not-an-afterthought-Agile-Methodology-benefit-1.png

Source - Most 5 Valuable Benefits of Agile Methodology


Developing

A Team "developing" an understanding of the value of the Focus on Quality practice and adopting the foundational techniques should focus on the following improvements:

  • The What: The team has dedicated QA-skilled people (i.e., testers)

    • The How: To demonstrate a team's commitment to quality, it's important to have skilled testers on the team. This can be accomplished by hiring external candidates or providing training opportunities to interested internal team members. Providing training opportunities for internal team members who are interested in transitioning into a testing role can be a great way to develop skilled testers. Consider offering training courses or mentorship programs to help team members develop their testing skills. These training opportunities should be tailored to the specific needs of the team, and should cover topics such as test planning, test execution, test automation, and defect management.

      It's also important to foster a culture of learning and teaching within the team. Skilled testers should be encouraged to share their knowledge and expertise with others on the team, through mentoring, coaching, and training sessions. This not only helps to develop the skills of other team members but also promotes a culture of continuous improvement and knowledge-sharing.

     

  • The What: The team has a whole-team view toward quality where everyone is responsible for it

    • The How: To ensure that the entire team is committed to delivering high-quality software, it's important to start by establishing clear quality objectives. The team can conduct brainstorming or quality scenario planning sessions to involve everyone in defining the objectives. This helps ensure that everyone is invested in achieving the objectives. Once the quality objectives are defined, the team should encourage open communication by using collaborative tools such as issue trackers, code review tools, and collaboration platforms. This helps ensure that everyone is involved in the quality assurance process and has visibility into the testing and quality assurance tasks. If your team is remote, check out our post on great collaborative tools you can use to enable agile teams. Additionally, providing training and resources to all team members can help ensure everyone is equipped with the skills and knowledge necessary to maintain quality standards. This includes training on testing tools, quality assurance methodologies, and best practices for software development. By incorporating these strategies, the team can establish a culture of quality and ensure that everyone is accountable for delivering high-quality software.

  • The What: Testing is part of the backlog item (i.e., User StoryDefinition of Done

    • The How: As part of the sprint planning or backlog refinement process, ensure that tasks related to testing, such as test planning, test design, test execution, and test documentation, are explicitly identified and included in the backlog item's tasks. Assign these tasks to team members, including dedicated testers, and track their progress throughout the sprint or iteration. Another strategy that the team can implement is establishing a practice of reviewing and obtaining sign-off from the appropriate team members, including testers, on the testing activities and deliverables for each backlog item. This ensures that testing is not overlooked and that quality standards are met before the backlog item is considered complete.

 

team-focusing-on-quality-quality-is-a-commitment-not-an-afterthought-2.png

 

Emerging

A Team “emerging” beyond the foundational techniques of the Focus on Quality practice and embracing it as they become more proficient should focus on the following improvements:

  • The What: Testers are actively involved in writing backlog items (i.e., User Stories)

    • The How: Adopt the Three Amigos approach, which involves cross-functional collaboration among the product owner, developer, and tester during backlog refinement sessions. The tester actively contributes by reviewing and providing input on the acceptance criteria, test scenarios, and test data to ensure that quality considerations are incorporated into the User Stories.

  • The What: The team has quality standards beyond the Definition of Done, such as checklists, templates, and test case repositories

    • The How: To ensure that teams are aligned in their approach to quality, it's important to develop templates and standards for documentation, coding, and testing. These can include coding conventions, documentation templates, and standard test case formats. Having these templates and standards in place can help streamline efforts across different backlog items and ensure consistency in the quality of deliverables. Additionally, teams should establish a central repository for storing and sharing test cases, test data, and test environments. This can help teams leverage existing test cases and avoid duplicating efforts while ensuring that all teams are following the same test standards and practices. By implementing these strategies, teams can ensure that everyone is on the same page when it comes to quality and can work together more efficiently to deliver high-quality software.

     

  • The What: The team considers non-functional requirements from the very beginning of the products/ initiatives

    • The How: During the initial stages of development, it's important for teams to ensure that non-functional requirements, such as performance, security, scalability, and usability, are explicitly captured and documented. This can be done through workshops, brainstorming sessions, or by involving relevant stakeholders, including business representatives, architects, and subject matter experts, to identify and prioritize non-functional requirements from the very beginning. Teams should also consider including non-functional requirements as part of their Definition of Done (DoD) for backlog items, such as Epics, Features, and User Stories. This means that non-functional requirements are considered as criteria for acceptance and completion of backlog items, and teams need to ensure that these requirements are met before delivering the work. Additionally, teams can leverage automation and tooling to assist with the assessment, testing, and monitoring of non-functional requirements. Use performance testing tools, security scanning tools, and other relevant tools to continuously assess and validate non-functional requirements throughout the development lifecycle. Finally, create a technical debt backlog that includes non-functional requirements, prioritizing and addressing them alongside functional requirements, ensuring that non-functional requirements are not deferred or ignored during development.

 

*   *   *   *   *   *

"Demonstrating a team's commitment to quality can be achieved by having a dedicated tester on the team."

*   *   *   *   *   *

 

Adapting

A Team “adapting” the Focus on Quality practice to extract the full benefit should focus on the following improvements:

  • The What: Refactoring technical debt is required for widely-used/high-volume products when making changes to an outdated piece of code
    • The How: Refactoring is a technique that helps improve the design and maintainability of an existing codebase. When dealing with outdated code or code that lacks automated test coverage, it's essential to refactor and write unit tests and other necessary tests to bring it up to current code standards. In the highly recommended book "Refactoring" by Martin Fowler, the author not only describes the process of refactoring but also provides detailed explanations of various behavior-preserving transformations, or refactorings, that can be applied.

      Additional Tips:

      1. Start Small: Begin with small and manageable refactoring tasks that have a clear objective and can be completed within a reasonable timeframe. This helps reduce the risk of introducing new issues and makes the process more manageable.

      2. Follow Best Practices: Adhere to best practices and coding standards while refactoring code. This includes writing clean, maintainable, and efficient code, following SOLID principles, and applying appropriate design patterns.

      3. Collaborate with Team: Involve team members in the refactoring process, including developers, testers, and other stakeholders. Encourage open communication, feedback, and collaboration to ensure that everyone understands the changes being made and their impact.

      4. Keep Regression Testing in Mind: As you refactor code, ensure that you have proper regression testing in place to catch any potential regressions or unintended consequences of code changes. Automated tests, including unit tests, integration tests, and end-to-end tests, can be invaluable in this regard.

      5. Use Version Control: Utilize version control tools, such as Git, to keep track of changes made during the refactoring process. 

      6. Continuously Monitor and Evaluate: Keep a close eye on the performance, maintainability, and other non-functional aspects of the codebase after refactoring. 

  • The What: The team has a pyramid-based test strategy that is baked into their Definition of Done; it includes unit tests, integration tests, acceptance tests, and UI tests.
    • The How: The "Agile Testing Pyramid" is a powerful metaphor that guides us in grouping software tests into different levels of granularity. It provides a framework for building a balanced and effective testing strategy in Agile development. When using this metaphor, it's important to assess where you are currently in terms of testing practices and define where you want to be in your "Definition of Done" (DOD) for each backlog item or user story.

      For instance, if your current unit test coverage is low, you can set criteria in your DOD that specifies the desired code coverage for new code. This helps create a target for future code coverage and encourages the team to prioritize writing unit tests to meet that goal. By leveraging the Agile Testing Pyramid, you can ensure that the team focuses on a balanced approach to testing, including unit tests, integration tests, and end-to-end tests, to achieve high-quality software.

 

team-focus-on-quality-quality-is-a-commitment-not-an-afterthought-sketchnotes-agile-product-development.jpg

Source - Agile Product Development Module

 

Optimizing

A Team “optimizing” the knowledge sharing of the Focus on Quality practice learnings across the enterprise should focus on the following improvements:

  • The What: The team is actively practicing with Acceptance Test Driven Development (ATDD) and Behavioral Driven Development (BDD)

    • The How: A modern and common practice that builds upon ATDD is called Behavior Driven Development or BDD. ATDD stands for Acceptance Test-Driven Development. It's a development approach where the team works together to define and agree on acceptance criteria for each user story or backlog item. Then, the team creates automated acceptance tests that verify that the criteria are met. By doing this, the team ensures that they are delivering what the customer wants and that each feature is tested thoroughly.

      BDD, or Behavior Driven Development, is a modern and common practice that builds upon ATDD. It goes beyond just writing automated tests and encompasses a broader process that involves collaboration across roles to build a shared understanding of the problem to be solved. BDD emphasizes working in rapid, small iterations to increase feedback and the flow of value and producing system documentation that is automatically checked against the system's behavior.

      One of the key aspects of BDD is the use of concrete, real-world examples that illustrate how the system should behave. These examples, also known as "Gherkin" syntax, serve as living documentation and are used to guide the team from concept through to implementation in the process of continuous collaboration. By using BDD, teams can bridge the gap between business people and technical people, encourage collaboration, and ensure that the software meets the desired behavior in an iterative and collaborative manner.

*   *   *   *   *   *

"By leveraging the Agile Testing Pyramid, you can ensure that the team focuses on a balanced approach to testing, including unit tests, integration tests, and end-to-end tests, to achieve high-quality software."

*   *   *   *   *   *

 

Conclusion

In conclusion, Team Focus on Quality is a crucial aspect of Agile development that requires a commitment from the entire team. Through the stages of Developing, Emerging, Adapting, and Optimizing, teams can improve their understanding and adoption of quality practices. By incorporating dedicated testers, involving the whole team in quality, making testing part of the Definition of Done, considering non-functional requirements, and refactoring technical debt, teams can continuously improve their agility and deliver high-quality products or initiatives. Emphasizing a culture of quality and continuous improvement will lead to better customer satisfaction, improved team morale, and long-term success in Agile development. Take a free assessment for Team Agility at Lean Agile Intelligence to discover your team's current process status in order to select the right strategies to drive outcomes.