What is a Platform Team?
Tags: agile, architecture, techtalks, beginners
Published: 2022-10-13 23:41:49

In this article we will learn what a platform team is and how it can help to scale a development team from a small team to a large team.

When building a new development team you may start with a small team like the one in the diagram. The team consists  of a development manager who is responsible for resource allocation and making sure that sprints are being completed. The developers code and write unit tests. QA is responsible for quality and creating end to end tests. The product owner makes sure the team is building the correct features and provides this knowledge through research.

![Dev Team](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dn6qvqfifl04yhsdsd74.png)

As the team grows you may expand to have many teams called squads. Each squad/team will consist of the same structure and focus on different parts of the application. For example in the diagram below we have 2 web development teams that might focus on different parts of the application. We also have a reporting and mobile team. These teams all build features and can therefore be called build teams.


![Build Team](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uqvkhqratc8ytjo05xel.png)

## Build Teams

Build teams focus on building features
They have an external customer. The users that will use the software.

If the build teams are focusing on features, who will focus on the architecture and developer experience?

First, what is architecture and developer experience?

## Architecture

Architecture at a high level is how the software system as a whole comes together and works. 4 main concepts are:

- Performance
- Scalability
- Security
- Logging (Observability)

Architecture asks questions such as:

- How is the code structured?
- Should we build our code using  Microservices or a  Monolith?
- Which cloud provider to use?
- Do we have continuous integration and continuous deployment(CI/CD) setup correctly?

## Developer Experience

Developer experience describes the experience that developers have working on the technical product. A great developer experience helps with the retention of developers within your organization. The platform team can help to provide a great developer experience by asking questions like:


- Do developers enjoy working on the code?
- How easy is the development environment to set up?
- How long does it take to onboard a new developer?
- How easy is it to deploy?
- Does the code base have debugging support?
- Is the technology stack on the latest and greatest versions of the technology used?


## Platform Team

The platform team is responsible for supporting an internal product known as the platform. The platform is everything the development team needs to build and ship a product. The role of a platform team is to help grow and scale the software development team. The platform team does this by reducing the cognitive load on the development team. With a proper platform team the build teams can move fast and focus on providing the best product to the external customer.

What outputs does the platform team provide to help grow and scale the organizations software development department?

## Platform Team Output

The following list is not comprehensive but outlines a few items that a platform team can output:


- Technology Roadmap
  - A roadmap of future technologies the company will be using.
- Documentation of architecture
  - Documentation of the architecture will allow new team members to onboard quicker. Reducing the onboarding time allows developers to start contributing quicker to building new features.
- Establish patterns and practices 
  - Establish global guidelines for working within the code base.
- Architecture decisions
  - Help finalize architecture decisions through research.
- Monitor and track Tech Debt
  - Let’s face it tech debt often gets overlooked. Even though we track it, nobody is responsible for it. The platform team would be responsible for tracking tech debit.

### What are Platform's Responsibilities?

The following is a list of platform team responsibilities. This list can be used as a guide to determine if a request should be a platform objective or build team objective.

- Cross Cutting
  - Will it affect all teams?
- Strategic
  - Is it strategic to the product/business
- Frequency
  - Does it happen often? For example setting up a new development environment. This should be automated and easy to repeat. It should take minutes not days.
- Dev Experience
  - Is this something that can improve the development experience? 

![Platform team workflow](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a55qyvmw9m61y3r45mci.png)

## Does the platform team focus on architecture while the build team focuses on features?

No and Yes

Build teams should think about performance, scalability, security, logging etc. The caveat is around how the work is distributed and how it is tracked. Ownership would be on the platform team but execution could be done within build teams or platform teams depending on the allocation of resources. In the diagram above the platform team uses 70% of their time for platform and 30% for feature work. The build teams on the other hand use 70% on feature work and 30% on platform work. 

### Conclusion

As with any best practice, it is best to select those areas that work for your team. This is often what most teams will do with agile software development selecting those parts of agile that work for them. Feel free to do the same with platform teams.

For a video explanation of what a platform team is check out this video: 

{% embed https://youtu.be/rO1_cBpio8s %}