Unlocking Developer Productivity: The Role of Platform Teams
How to a build kick ass platform team to reduce cognitive load for Software Engineers and boost developer productivity.
In my last blog post, I wrote The QA Team story showing how a handover between teams can impair your ability to deliver software projects on time. I concluded that teams with minimal dependencies can deliver faster with better quality.
However, the journey to achieving team autonomy is no walk in the park.
Picture this: as my team embarked on the quest to own software projects end-to-end, we found ourselves entangled in a web of non-core tasks — building CI/CD pipelines, integrating log and monitoring systems, automating infrastructure, grappling with compliance and security issues, and juggling on-call rotations. As the company grew, more teams began crafting their own solutions, revealing some redundancy in efforts. While this decentralized approach granted teams autonomy to steer their projects from inception to deployment, it also birthed a patchwork of solutions, each with its unique set of hurdles. Managing this heterogeneous landscape of technologies proved to be a daunting task, particularly for security and compliance. It became clear that alignment was needed.
A common strategy to create alignment and avoid duplication of work is to create platform teams. Instead of working directly on the core business domain, platform teams help to solve the most pressing problems inside the company. As the company grows, more of these platform teams start to emerge. Here are some platform teams I have worked with:
CI/CD Team: Provide building blocks of pipelines to build, test, and publish software artifacts. Enforce usage of required quality gates like vulnerability scans for dependencies, code test coverage, static- and dynamic code analysis.
Observability Team: Run observability agents in various deployment types to collect logs, metrics, and traces. Publish the data to a centralized storage. Enable teams to query observability data with tools like Grafana for visualization and alerting.
Data Platform Team: Provide infrastructure as code modules for storage like databases and caches. The modules should come with pre-configured alerting and monitoring integrations and need to enforce typical security requirements like encryption at rest.
I’ve witnessed platform teams fail despite best intentions, while others soared, significantly enhancing the company’s productivity. I observed some behaviors that seem to set successful platform teams apart:
Treat the platform as a product: Listen to your customers! Other teams inside the same company are customers as well. Address challenges most teams struggle with. Create a continuous cycle of feedback and improvement.
Boost team productivity and reduce cognitive load: Focus on challenges that are not part of the core business domain but help other teams to excel in their domain. A platform is not a differentiator sold as a unique value proposition to customers but addresses a well-understood problem that most companies struggle with.
Create alignment: If the company strategy is to use managed services for cost efficiency then the platform should use these instead of in-house or self-hosted solutions.
Enable autonomy: Enable the solution by default or allow each team to consume the platform in a self-service fashion without requiring a manual handover.
Secure & Compliant: Teams using platform products must rely on a compliant and secure foundation. Help teams to keep the quality high by enforcing required quality gates (like vulnerability scans etc).
Developer Experience: Make the product easy to use. Provide a well-defined interface for users with good documentation.
I can highly recommend the book Team Topologies to dive deeper into the realm of platform teams. I like how the book focuses on interactions between teams, instead of simply discussing organizational structure.
TL;DR
Platform teams are pivotal in enabling single-threaded ownership, fostering both autonomy and alignment. A great platform makes it easy for other teams to do the right thing. It establishes a secure and compliant foundation, alleviating cognitive strain and eliminating the need for cross-team handovers. Building upon a great platform is a bit like standing on the shoulders of giants.
Over to you: Share your experiences with platform teams! What does it take to build a great platform team to boost developer experience?
Short Note on Context
Notice that the company’s stage of growth matters. While startups may prioritize autonomy as their primary challenge, larger enterprises often prioritize alignment. While most mid-sized and large software companies stand to gain from platform teams, for startups a separate platform might be too much overhead and not be needed yet.