QA Lead at Miro: a strategy toward quality
Miro QA Leads need to think strategically: their courses of action have a big impact on the performance of core components of our product; moreover, they contribute to driving major engineering initiatives, as well as helping QA engineers grow professionally.
I am the Head of QA at Miro, and in this article I am going to share with you what I feel a QA Lead should be prepared to do. Before we start, let’s have a look at our production and quality assurance processes: it provides context, and it helps understand the basic principles of what we do.
Intro: development structure and quality assurance at Miro
Miro product development is divided into streams. Each stream is a cross-functional group including not only people from engineering, but also from analytics, marketing, product, and design. Streams flow toward a shared goal; as they flow toward this overarching goal, they implement their strategy. For example, the Growth Stream works on growing a product. The Platform Stream develops a public platform and an SDK. The Stability and Scalability stream creates tools to support delivery, infrastructure, and quality assurance. Teams in this stream also develop tools for automated testing that QA Leads and engineers rely on.
Each stream includes a QA Lead and a QA team. They are responsible for quality assurance at each stage in the lifecycle of a feature. With great power comes great responsibility: the QA Lead and the QA team can influence the entire development cycle; therefore, they do everything they can to ensure that users enjoy a rewarding experience when they interact with our products.
Each Scrum team has a dedicated QA engineer who follows Agile testing values and best practices (source: https://www.amazon.com/Agile-Testing-Practical-Guide-Testers/dp/0321534468):
“Testing throughout over testing at the end.” Testing is not an additional step, but a part of each development step.
“Preventing bugs over finding bugs.” The quality assurance process focuses primarily on bug prevention, not on finding them efficiently. But this does not mean that the process of searching for bugs should be eliminated.
“Testing understanding over checking functionality.” Product quality means providing value in the first place, not just simply putting a tick in each checkbox on the product manager’s list of requirements.
“Building the best system over breaking the system.” We understand this one as “catch important bugs and don’t waste your time and effort on chasing every tiny bug.”
Agile works best when the whole team is aligned with its values. This is where QA Leads play a key role: as engineers, they help design and put in place a robust quality development process. As technical experts, they mentor and coach other engineers, help carry out more complex tests, and make sure that the team has the tools and the infrastructure they need to do their job.
You can learn more about our quality assurance process in this blogpost: QA process at Miro.
QA Lead responsibilities at Miro
As we now know, QA Leads play important roles in quality assurance strategy, major engineering initiatives, and the professional development of other QA engineers. Let’s explore these roles.
Working as a strategist
To guarantee quality strategy in a stream, the QA Lead collaborates with the Head of Stream Engineering and the Head of QA.
Working with the Head of Stream Engineering
The Head of Stream Engineering is responsible for the technology side of the business: besides product quality, it includes scalable architecture, predictable development, and team growth. Together with QA Leads, they create a development and quality assurance roadmap to drive achieving the business goals for the year.
In this context, quality assurance is not a liability or a necessary evil; quite the opposite: it helps improve efficiency and cost optimization. Bug hunting and fixing legacy code are an obstacle to shipping new features. On the other hand, producing quality code from the start reduces time to market; the Head of Stream Engineering and QA Leads make sure it happens.
Working with the Head of QA
Besides their defined business goals, all streams follow a set of shared, company-wide quality assurance principles and standards, because we’re all working on the same product. The Head of QA helps QA Leads develop and apply these principles, approaches, and tools across all streams. This effort optimizes resources, improves standardization, and it sets the vision for a quality assurance strategy at company level.
Working as a project manager
Quite often, some engineering initiatives require a dedicated cross-functional team. In this case, the QA Lead wears the project manager’s hat.
Here are some real-life examples of the value that a dedicated cross-functional team can bring:
- Ensure 100% test coverage at different test levels.
- Decrease costs for support request processing.
- Research on Trusting Metrics.
- Improve the quality of the release branch.
- Design and implement a JS test framework for non-Canvas teams.
Working as a people manager
QA Leads are also responsible for communicating company, stream, and QA team goals to each team member, so that everyone shares a common ground and has a clear understanding of how their work helps achieve these goals.
QA Leads help assess the skill set a team has and how to expand it further by mentoring and training team members, encouraging knowledge sharing, and hiring new people to fill in missing gaps.
Working on the big picture
If you are in QA, you are by default on “test everything” mode. QA Leads can identify bugs also in higher-level processes and structures within the organization.
For example:
Planning and management. A team may be above their full capacity, which does not allow them to plan tackling technical debt and implementing bug fixes. Because of these issues in the planning and control process, quality decreases and time to market increases.
Architecture. Strongly coupled components in the system architecture may make it harder or impossible to properly test portions of the code. This increases the risk of introducing new features that break existing functionality.
Assembly stage and low-level test. The purpose of testing tools is to free developer resources, so that they can concentrate on more complex tasks and problem-solving. More expensive tests sit on top of lower-level, cheaper ones. For example, exploratory testing without previously carrying out unit and integration tests is extremely expensive, because it intercepts too many bugs.
Infrastructure for the new services. Infrastructure-as-a-code should include test coverage, including non-functional tests.
Test environments. This is often a difficult technical area where you need to build appropriate test environments to deploy and to test one or more specific versions of the application.
CI / CD applied to testing practices. If it takes more than 10 minutes to get end-to-end test results, developers switch the context to another task. This creates overhead and additional friction.
Testing in production. While live system testing should never be the outcome of poor planning, methodologies such as chaos testing with chaos monkeys provide insight into system resilience.
Besides these examples, there are other areas of interest to QA Leads, such as:
- Automating non-functional tests.
- Canary releases and investigating production bugs that slipped through testing.
- Releases and actions in production.
- Monitoring new components and features.
- Dealing with incidents.
- Monitoring infrastructure and system health.
Summary
A QA Leads at Miro need to have a systems mindset to measure the current state of quality from multiple angles (product, processes, structures, and technology). Then, they define a vision and design an actionable strategy to pursue the vision.
QA Leads make sure that everything is tested: plans, architecture, environments, releases. They monitor health, and they act on incidents.
They need to develop strategic thinking to maintain and to improve the quality level in their stream, while keeping an eye on the whole context of a large product or project.
QA Leads are extremely expert testers with a deep understanding of the products under test, so that they can drive complex test automation initiatives.
They are people managers who constantly learn and evolve, so that they can contribute with fresh ideas, design new tests and experiments, and help other QA engineers grow.