Platform as a Product
Treat your internal developer platform with the same discipline you’d treat a product for paying customers: understand your users, measure adoption, and make the easy path the right path.
Understand This First
- Stream-Aligned Team – platform teams exist to serve stream-aligned teams. Without understanding what stream-aligned teams need, you can’t design a platform that helps them.
- Team Cognitive Load – the platform’s job is to absorb complexity that would otherwise overflow the stream-aligned team’s cognitive budget.
- Ownership – a platform team owns the platform the way a product team owns a product: accountable for its quality, usability, and evolution.
Context
As an organization grows, its stream-aligned teams start solving the same infrastructure problems independently. Each team builds its own deployment pipeline, its own logging setup, its own way of provisioning databases. Some teams do it well. Others cut corners. The result is a patchwork: five different ways to deploy, three different logging formats, and nobody who can answer “how do we roll back a bad release?” consistently across the organization.
The obvious fix is to centralize. Create an infrastructure team, hand it the shared problems, and let stream-aligned teams focus on their domains. This works until the infrastructure team becomes a bottleneck. Every request goes into its backlog. Stream-aligned teams wait days for a new database, weeks for a pipeline change. The infrastructure team, overwhelmed by tickets, builds what it thinks teams need rather than what they actually need. The result is a platform that’s powerful on paper and painful in practice.
Problem
Shared infrastructure either fragments across teams (duplicated effort, inconsistent quality) or centralizes into a bottleneck (long wait times, poor fit). How do you give every team access to reliable, consistent infrastructure without making them depend on a slow central team for every change?
Forces
- Stream-aligned teams need to move fast. Waiting for infrastructure changes kills their delivery cadence.
- Infrastructure quality matters. Badly configured deployments, insecure defaults, and inconsistent logging create risk that no single team can see.
- Central infrastructure teams accumulate backlogs because demand always exceeds their capacity.
- Teams that build their own infrastructure get what they need faster, but the organization loses consistency and wastes effort on solved problems.
- The people closest to the infrastructure are rarely the people closest to the users of that infrastructure.
Solution
Run your internal platform like a product. The platform team builds and operates shared capabilities (deployment pipelines, observability, databases, CI, security scanning), but it treats the stream-aligned teams as its customers. That means everything a real product team does: user research, roadmap prioritization based on actual demand, self-service interfaces, documentation, onboarding, and measurement of adoption and satisfaction.
The central shift is from ticket-driven to self-service. A ticket-driven platform team processes requests: “Please create a database for my service.” A product-oriented platform team builds a self-service interface: a CLI command, a configuration file, or a web form that provisions a database in minutes without human intervention. The platform team’s job isn’t to do things for other teams. It’s to build tools that let other teams do things for themselves.
Skelton and Pais call this the thinnest viable platform: the smallest set of self-service capabilities that lets stream-aligned teams deliver autonomously. You don’t build a sprawling internal PaaS on day one. You start with the capability that causes the most friction, make it self-service, measure whether teams actually use it, and iterate. If teams keep going around your platform to solve a problem their own way, that’s a product signal. Either your solution doesn’t fit their needs or they don’t know it exists.
Product discipline also means saying no. A platform that tries to serve every possible use case becomes bloated and hard to maintain. The platform team picks the golden paths, the supported, well-tested ways of doing common tasks, and invests in making those paths excellent. Teams with unusual needs can diverge, but they take on the maintenance burden themselves. The golden path is a recommendation, not a mandate.
How It Plays Out
A growing SaaS company has twelve stream-aligned teams. Deploying a new service requires manually configuring a Kubernetes cluster, setting up monitoring dashboards, configuring alerting thresholds, and connecting the CI pipeline. Each team has cobbled together its own scripts. Some teams deploy confidently in hours. Others take days and forget steps. Two production incidents in a month trace back to misconfigured deployments by teams that copied another team’s scripts without understanding them.
The company forms a platform team of three engineers. They don’t start by building a portal. They start by talking to the stream-aligned teams. What’s the most painful part of shipping a service? The answers converge: initial setup takes too long, and there’s no standard way to know if a deployment is healthy.
The platform team builds a service-init CLI that generates a new service with a working Kubernetes config, a Prometheus dashboard, standard alerting, and a connected CI pipeline. The whole thing takes ten minutes. They document it, announce it in Slack, and track how many teams use it. Within a month, nine of twelve teams have switched. The three that haven’t are running non-standard stacks; the platform team talks to them about whether to support those stacks or help them migrate.
Six months later, the platform team adds a second capability: a one-command database provisioner. They chose it because database setup was the second-most-common support request in their ticket queue. They kill the ticket queue for database requests entirely. The stream-aligned teams don’t file tickets anymore. They run a command.
An engineering organization introduces AI agents to its development workflow. Each stream-aligned team experiments independently. Some teams build elaborate instruction files. Others use the agent with default settings and get inconsistent results. The platform team recognizes the pattern: agents need shared infrastructure just like services do.
They build a standard agent configuration template that includes the organization’s coding conventions, security policies, and verification loop setup. They package it as a one-command agent-init that scaffolds a .claude directory with the org’s baseline rules, pre-configured hooks for linting and testing, and a domain-specific memory file seeded with the team’s conventions.
The key: the platform team doesn’t mandate any of it. They ship the template, show teams the results (faster agent onboarding, fewer security violations in agent-generated PRs), and let adoption spread. Teams that modify the template feed improvements back to the platform team, which incorporates the best changes into the next version. The agent infrastructure becomes a product with a feedback loop, not a policy document that nobody reads.
The best internal platforms grow the same way good products do: solve the sharpest pain first, ship something minimal, watch what teams actually do with it, and iterate. If you build a platform nobody uses, you don’t have a platform. You have a side project.
Consequences
A product-oriented platform reduces duplicated effort, improves consistency, and frees stream-aligned teams to focus on their domains instead of reinventing infrastructure. The golden paths create organizational memory: the right way to deploy, monitor, and secure a service is encoded in tooling rather than tribal knowledge. New teams and new engineers get productive faster because the platform handles the parts that would otherwise require months of local learning.
The cost is a real team with real headcount. A platform team needs engineers who combine infrastructure expertise with product sense. Pure infrastructure engineers who build what they find technically interesting, rather than what teams need, produce platforms that go unused. The product management discipline (user research, prioritization, measurement) is what distinguishes a platform team from an infrastructure team that happens to share some scripts.
Self-service creates a maintenance obligation. Every capability the platform offers is a promise: it will keep working, it will handle edge cases, and it will evolve as the organization’s needs change. A platform team that ships a provisioner and moves on without maintaining it creates a different kind of debt. Teams that depend on the capability are stuck when it breaks.
There’s a governance tension between golden paths and team autonomy. Push too hard toward standardization and you frustrate teams with legitimate edge cases. Stay too hands-off and the platform becomes one option among many, losing the consistency benefit that justified its existence. The balance point varies by organization, but the product framing helps: if your customers (the stream-aligned teams) are choosing not to use your product, that’s feedback about the product, not evidence that customers are wrong.
Measuring the platform’s value is indirect, much like enabling teams. The platform doesn’t ship user-facing features. Its impact shows up in the stream-aligned teams’ delivery speed, incident rates, and onboarding times. Organizations that can’t measure those downstream effects will struggle to justify the platform’s continued investment.
Related Patterns
- Serves: Stream-Aligned Team – the platform exists to make stream-aligned teams faster and more autonomous. If it doesn’t, it’s not earning its keep.
- Reduces: Team Cognitive Load – self-service infrastructure absorbs complexity that would otherwise land on every stream-aligned team individually.
- Informed by: Conway’s Law – the interface between platform team and stream-aligned teams shapes the architecture. A self-service API produces a clean integration boundary. A ticket queue produces a human bottleneck.
- Complements: Enabling Team – enabling teams transfer knowledge; platform teams encode it into tools. An enabling team might teach a practice, and the platform team might build the tooling that makes the practice easy to follow.
- Uses: Interface – the platform’s self-service surface is an interface. Its quality (clarity, stability, discoverability) determines whether teams adopt the platform or route around it.
- Uses: Abstraction – the platform hides infrastructure complexity behind a simpler interface, the same way any good abstraction hides implementation details.
- Prevents: Big Ball of Mud – golden paths steer teams toward consistent, well-structured infrastructure choices rather than ad-hoc improvisation.
- Complements: Instruction File – a platform team can maintain organization-wide agent configuration templates, giving every team a strong starting point for directing agents.
Sources
Matthew Skelton and Manuel Pais introduced the platform team as one of four fundamental team types in Team Topologies: Organizing Business and Technology Teams for Fast Flow (2019). They coined the term “thinnest viable platform” to emphasize that the platform should be the smallest set of self-service capabilities needed, not a sprawling internal PaaS.
Evan Bottcher’s essay “What I Talk About When I Talk About Platforms” (2018, Martin Fowler’s website) defined an internal platform as “a foundation of self-service APIs, tools, services, knowledge, and support which are arranged as a compelling internal product.” The “compelling internal product” framing became the standard formulation for product-oriented platform thinking.
The CNCF Platforms Working Group published a “Platforms Definition” whitepaper (2023) that formalized the practice: platforms are curated collections of tools and capabilities, presented as self-service products with clear interfaces, that reduce cognitive load on stream-aligned teams. The whitepaper anchored the pattern in cloud-native practice and influenced the Platform Engineering community.