How can organizations level up the value of their internal platforms without massively expanding their platform teams?
We often celebrate the individual hero or heroine who (purportedly) creates something ingenious alone — the maverick innovator. However, reality constantly shows us that most innovations are the result of teamwork. This is true when for designing an internal developer platform as well. The internal platform can deliver exceptional value. However, to reach its full potential, it makes sense to move away from developing platforms in single-player mode and go multiplayer mode to supercharge your internal platform. But what exactly does this mean?
While many organizations go full steam ahead with building an internal platform, they don’t always make use of all the resources and expertise they have in-house. Instead, there are often various, siloed, teams building platforms that solve their problems — but they aren’t communicating with other teams that could use and enhance the platform they are building. If it is not multiple teams with competing or duplicative platforms, organizations sometimes pile the responsibility for developing a platform squarely on platform teams. But do these approaches address the pain organizations face and the challenges they aim to solve by adopting an internal platform?
A Quick History: From DevOps to Platform Engineering
Historically, developers used to spend a lot of time waiting for operators to provide services or tools for them. This led to friction, delays and frustration. Developers and operators were isolated from each other and didn’t have a way to break down the silos that kept them from being productive. This resulted in the emergence of DevOps, which aims to empower teams to build and run everything for themselves.
DevOps works — and works well — until organizations scale, and dual problems arise. Firstly, DevOps teams end up grappling with repetitive and duplicative problems, and secondly, the DevOps workload increases and accelerates as the business scales. This means that DevOps teams not only have a lot more work on their hands in the day-to-day but are also required to manage building and running everything from infrastructure to networking to CI/CD to observability. At the same time, DevOps teams navigate a host of internal processes and concerns, such as security and compliance. Naturally, cognitive overload is inevitable.
Slaying the DevOps Dragon: Enter Platform Engineering
To solve the mounting DevOps challenges, platform engineering has emerged with a primary focus on providing a better developer experience. What does developer experience mean in this context? It means reducing developer cognitive load and enabling devs to focus on their core work — delivering value to customers. But to get there, it would be critical to reduce the cognitive and literal workloads, and instead streamline the work for the DevOps teams. This is where platform engineering and the formation of platform teams play a crucial role.
This shift, however, hasn’t completely solved the problem. The cognitive load has just been transferred to platform teams, tasked with providing a customized internal developer platform that meets developer needs and offers tooling and services on demand. Yet platform teams end up supporting an already vast and ballooning set of tools and services and feeling the pressure of having to provide a delightful user experience for developers. The entire industry echoes the importance of the developer experience and flows when they build their software. And if this is true, how can we get the most value from these internal platforms without burning out the entire team or adding massively to their numbers?
Playing as a Team
To get to a greater and potentially faster value with the internal platform, start by considering how teams are organized, and then determining their roles and responsibilities. From the experiences of developers, DevOps and platform teams, it has been clear that no single individual or team should (or can) handle everything. In the seminal book Team Topologies, four team types are described: Stream-aligned (application team), enabling team, complicated subsystem team and platform team.
Where the internal platform idea starts to unravel, the stream-aligned teams have too much cognitive load and DIY as part of their work. At the same time, with platform engineering, a lot of the groundwork and maintenance shifts to the platform teams, which bulks up their workload.
By understanding these team types and dynamics, we can start asking: How can we share the load and even involve other teams in the internal platform-building work? How can we distribute the responsibility both more equitably and in a way that delivers maximum value?
Gaming the Platform with A Multiplayer Approach
This is where the value of a multiplayer approach to platform building stands out. While developers and platform teams hold a lot of the expertise needed to build an effective internal platform, the onus isn’t entirely on either one to create a useful platform that can garner near-universal buy-in and adoption. The other teams in the organizations can have a vast influence on the platform development by injecting their own special skills, expertise and knowledge, ultimately benefiting the organization.
Ready Player One
An example of injecting special skills and expertise into a platform includes cases where multiple application teams need access to a database. In an ideal world, developers would have on-demand access, to say, a Postgres database as a service. They could provision one whenever needed. Many organizations have a specialist database team internally that knows exactly how Postgres works, how it should be configured and how the stream-aligned teams should consume it.
There is no reason why a company’s developers or platform teams should be required to have in-depth database knowledge when a subsystem team of subject matter experts can easily offer this database-as-a-service option within the platform. Offloading the burden lets application teams get what they need from the platform, and platform teams can easily use the database-as-a-service option as a building block within the platform, which they can package up with other services — all relying on the expertise of the database team.
Ready Player Two
A second example deals with a specialist requirement rather than a specialist tool. Security processes, for example, are requirements that must be built into many software delivery workloads — but, likely, there won’t be enough security resources to embed in application and platform teams. Instead, the multiplayer approach lets security teams save the day by defining processes and embedding these within the internal platform.
Again, development and platform teams are not required to understand all the ins and outs of security but can follow the steps and guardrails set by the security team as they are integrated into the platform’s workloads.
Everyone Can Contribute to Make the Internal Platform More Powerful
Taking specialist skills and knowledge bases from across the organization and incorporating them in the internal platform in an easy-to-use way is an effective strategy for reducing cognitive load across teams.
This approach, sometimes called inner sourcing or platform democratization, has been very successful. The key is to make the most of the talents, skills and knowledge you have within your organization. This not only relieves cognitive load and prevents having to build a massive team or overwhelming a small team with too much information, but it also provides pathways to organization-wide buy-ins and ownership of the platform.
How to Get Started With the Multiplayer Approach
As platform engineering is considered a sociotechnical practice, involving both people and technology is important. Consider again Team Topologies and the three interaction modes the book describes: Collaboration, x-as-a-service and facilitating.
Collaboration: Play Nice Together
To understand what a multiplayer internal platform could look like, teams should focus on collaboration. They need to understand each other, build empathy and align. Collaboration is the best interaction type to understand requirements, such as what the application teams need, how they would like to consume the platform and whether and how application teams might like to contribute tools and services they have developed themselves back into the platform.
The platform team should also collaborate with the other teams, in particular the specialists who are providing specific tools and services. This helps build an understanding of what those services are, how they can be produced and contributed to the platform as well as what those teams themselves need to consume from other teams. To facilitate this work, a short-lived enabling team focused on facilitation across the organization might be useful to map connections and collaborations.
X-as-a-Service: Where Multiplayer Mode Comes Alive
Multiplayer mode comes alive when the teams across the organization are empowered to contribute their expertise to the platform. The platform team can enable this. The end goal is getting collaboration to lead to expertise becoming X-as-a-service, on-demand tools and services.
Using the example from before, we can see that the Postgres database is being offered as a service within the platform, and it has security expertise contributed by the security team built into the platform. The consumers of the platform are now interacting with the platform in the x-as-a-service mode, which means that they are getting the tool they need on-demand with enhanced security already embedded.
From a technical perspective as well, the platform team needs to consider how easy it is for other teams to contribute to the platform. Is it a black box that no one understands or is it easy for other teams to contribute? What is that process for contributing — not only as a one-off upfront interaction but in an ongoing way to ensure that the platform remains up to date and fit for purpose? Is that process understood and documented?
This is one of the areas where a platform framework can support this multiplayer model and even enable multiplayer mode out of the box. If your platform is made up of composable building blocks contributed and maintained by expert teams, it will further empower the platform team to use these building blocks to compose paved roads or golden paths. These can then be consumed by application teams for an even easier, smoother developer experience. Ultimately, the internal platform ends up being greater than the sum of its parts and becomes a driver for innovation.
Game Not Over: Switch to Multiplayer for More Tokens
Enabling a better developer experience and reducing cognitive load for developers and platform teams is at the heart of shifting to multiplayer mode. And while these teams stand to benefit most on the surface, a multiplayer-inspired internal platform can benefit from the entire organization playing along.
By switching from a single-player to multiplayer mode, everyone can become an internal platform hero.