Recently I’ve found myself reflecting on the work I’ve done over the last few years. In particular my time working within, and leading, a platform team. I’ve written a bit about this before. You can read that here. It feels like a good time to revisit this topic. Particularly I want to talk in more detail about the crossover between Platform and Quality Engineering.

Before we get started

I’ll be referencing Team Topologies throughout this post. Particularly using their choice of language to describe different teams. I have included links to descriptions of these where I use them for the first time throughout the post. If you are unfamiliar with Team Topologies, I will provide some recommended further reading a the end of the post.

What are Quality Engineering and Platform Teams?

I’ll kick us off with a brief overview of what I see Platform and Quality Engineering teams aim to achieve and how they go about it.

A cartoon image of a man undertaking quality testing using a machine

Quality Engineering

Holistic approach to Quality

Quality Engineering teams should promote an holistic approach to Quality. This way of working is about enabling good Quality practices to occur throughout the software development lifecycle for each team delivering code. It is fundamental to improving flow of code from conception to production.

Champions of good Quality Practices

Quality Engineers are the champions of good Quality practices and processes. They help to develop processes and practices that encourage engineers to make good quality decisions and improve feedback loops.

Experts in Quality

As the experts in all things Quality, Quality Engineers act as coaches to other engineers on best practices, tool selection, ways of working etc.

Enabling team for others

As an enabling team, Quality helps to bridge a speciality knowledge gap within other teams. Quality as a team sits across other teams providing the insight and guidance needed to a team to enable them to make informed decisions around test tooling, quality processes etc. Ultimately enabling teams to deliver product features at a higher pace with high quality.

Build Quality / Test Tools to Support Teams

They build solutions to problems that engineers might even know they need yet. By providing a range of well planned test tooling and other Quality assuring tooling, they remove an overhead from the stream aligned teams who can now adopt the pre-prepared solutions instead of having to build their own.

Better DevEx – Better UX – Better product

The ultimate goal of any Quality team is to ensure the business releases a better product. They achieve this through improving the developer experience and providing mechanisms that help ensure the product provides a good user experience.

8-bit style platform game

Platform Engineering

Before going further, I just want to define what I consider a Platform team. In this case by borrowing from Team Topologies.

A digital platform is a foundation of self-service APIs, tools, services, knowledge and support which are arrange as a compelling internal product. Autonomous delivery teams can make use of the platform to deliver product features at a higher pace, with reduced co-ordination.

“deliver product features at a higher pace” – Sounds familiar 🤔

Holistic approach to Platform

Taking an holistic approach to platform engineering is about enabling good platform design and engineering practices to occur throughout the software development lifecycle for each team delivering code. Platform teams are an essential enabling team, supporting stream aligned teams to deliver value quickly and without friction.

Champions of good Platform Practices

Platform Engineers are the champions of good Platform practices and processes. They help to develop services and practices that encourage engineers to build applications on top of a platform that is proven to be scalable and reliable.

Experts in Platform Engineering

As the experts in all things Platform engineering, Platform Engineers act as coaches to other engineers on best practices, platform design, ways of working etc.

Enabling team for others

As an enabling team, Platform Engineers help to bridge a speciality knowledge gap within other teams. Platform teams sits across other teams providing the insight and guidance needed to a team to enable them to make informed decisions around Platform design and implementation. Ultimately enabling teams to deliver product improvements at a higher pace.

Build Platform to Support Teams

They build solutions to problems that engineers might even know they need yet. By providing a well designed platform for engineers to build their apps upon, they remove an overhead from the stream aligned teams who can now adopt the pre-prepared solutions instead of having to build their own.

Better DevEx – Better UX – Better product

The ultimate goal of any Platform Team is to ensure the business releases a better product. They achieve this through improving the developer experience and providing mechanisms to ensure the product provides a good user experience.

Scene from The Office. Spot the difference between two pictures. They are the same picture.

Similarities

Hopefully by this point the similarities are obvious. Of course the type of work Quality and Platform engineers do to achieve these results can be quite different. However, there can be a lot of crossover too. The main area that springs to mind when I think of this is in building efficient and effective pipelines.

Pipelines – Where Quality and Platform meet?

The goal of an effective pipeline is to enable teams to ship high quality code to production as efficiently and effectively as possible. Pipelines must provide the fastest possible feedback loops and be easy to use. To me, this is probably the biggest area where the work and goals of Quality Engineering and Platform Engineering crosses over.

Quality Pipelines

A Quality Engineering teams interest in pipelines is most commonly around being able to run various forms of automated checks. Quality Engineer want to run checks at the right level of the software, at the right level of detail, at the right time. The goal, to provide teams with the fastest and most valuable feedback on their changes, in a way that is easy for them to understand. The result being they can ship changes to production as fast as possible with confidence.

Platform Pipelines

For Platform Engineering teams the goals of the pipeline should be similar. Enabling teams to self serve in shipping their code to production as fast as possible while minimising impact to customers. To achieve this the use of the pipeline is ideally well integrated into the development processes used by the stream aligned teams. Not only that, but it must be simple to use and easy to understand what has gone wrong when things do.

Crossover

There will be plenty of skills crossover between building pipeline steps for deployment and those for executing tests. The pipeline tools and so forth are going to be the same. Although slight differences in the steps themselves. Ultimately, if you can write a pipeline step for one task, you can likely pick up the others fairly easily. In my experience, this enables you to be able to implement a raft of quality of life improvements to pipelines. They are often simple, but they make the lives of the people using the deployment tools better.

Performance and Scalability

Ensuring that our product performs as expected is a tricky but important thing to get right. Especially while allowing teams to deploy at a high velocity. The solution is to introduce performance testing. This is another area where there is not only crossover, but generally collaboration between Quality Engineering and Platform Engineering.

Performance Testing is a highly in demand skill as organisations realise that it is possible to do more with less. I’d encourage anyone, Quality Engineer or Platform Engineer, to learn how to effectively write, execute and visualise the results of effective performance testing.

Some recommended further reading:

Chaos Engineering

Another topic I have written a little about before. Chaos Engineering is an exciting addition to our testing arsenal. If the concept of Chaos Engineering is new to you, then Marie Cruz has a fantastic article, What is Chaos Engineering? that I would highly recommend. In short, its about introducing issues and observing how your system responds.

In all of the below cases, there is room for both Quality and Platform engineers to be involved in the design, execution and review of testing and another area I would encourage people to adopt.

API

This is really where the crossover between Quality and Platform teams begins for Chaos Engineering. Tools like xk6-disruptor can be used to undertake “fault injection” when testing your product at the API level.

What is fault injection? Simply put, its a testing mechanism that replicates faults in your system. For example, artificially increasing the response time of a service so that you can measure the impact downstream.

Infrastructure

Tools like AWS Fault Injection System take things one layer down again and allow you to run experiments and monitor how your infrastructure responds directly. This layer of testing is important to understand how your infrastructure will respond when a service is unhealthy, or stopped completely etc.

UI

This has the least cross-over with platform, but feels wrong to miss it. Chaos Testing your UI is a powerful and fun to watch test. It helps ensure your UI will stand up to the abuse of hundreds of people all doing things on the same screen, at the same time. To learn more, have a read of Build Better Front Ends with Automated Chaos Testing.

Are Platform Engineering and Quality Engineering really that similar?

If you aren’t convinced by now of the similarities between Quality and Platform Engineering, I’ll never convince you. For those of you who are convinced, then you can take this argument further and say that these similarities exist between all enabling teams. I’ve picked on Platform and Quality as this is where my experience lies and they are the more common types of enabling teams.

I’ve loved my time working within and leading a platform team. It felt like a natural move for me. As a Quality Engineer at Zoopla I was heavily focussed on the areas of Quality that crossover between Quality and Platform Engineering. Making the move into leading a Platform team enabled me to grow as an engineer and a leader while simultaneously allowing me to work on solving the types of problems I wanted to help solve.

I’m sad that my time leading this team is coming to an end, but I am looking forward to the new challenges on the horizon. More on that soon.

Time for a new adventure.

Recommended Further Reading

Team Topologies

Performance Testing

Chaos Engineering

Subscribe to The Quality Duck

Did you know you can now subscribe to The Quality Duck? Never miss a post but getting them delivered direct to your mailbox whenever I create a new post. Don’t worry, you won’t get flooded with emails, I post at most once a week.