In this part of our series, we will jump into the structure and makeup of a well-rounded platform engineering team. If you’re joining us now, be sure also to check out the previous entries:
Part 1: The State of Cloud-Native Development
Part 2: Platform Engineering as a Solution to Cloud-Native Complexity
Part 3: Getting Started With Platform Engineering
Part 4: The Anatomy of an Internal Developer Platform
But before we jump into the roles, responsibilities, and skills needed to build a platform engineering team, we should provide some framing of the underlying principles that define high-performing teams. Let’s jump right in.
In platform engineering, we often get wrapped up in the technological intricacies - the architectures, the tooling, and the cutting-edge methodologies. While these elements are critical, they're just a part of the puzzle when building a high-performing platform team.
One strategic component that often gets overlooked but proves instrumental to success is treating your platform team similarly to a product team. This isn't just overlapping workflows or shared tools; it's about embodying the DNA, structure, and mindset that make product teams successful and applying it to your platform team.
Developer-as-Customer Mindset: Like a product team, a platform team needs to focus on its users - in this case, developers. Deliver a platform that solves their problems, not one that showcases tech prowess. It's about making their lives easier.
Cross-functionality: Your platform engineering team should be as diverse as a product team, with a mix of skills - DevOps, SREs, Security, UI/UX for developer portals, and even Product Management for roadmap planning.
Lifecycle Ownership: Like product teams owning the end-to-end lifecycle of their product, platform teams must own their platform's lifecycle, from design to deployment to iteration. This creates a sense of responsibility and fosters accountability.
Feedback Loops: Product teams live by user feedback. Similarly, platform teams need to crave developer feedback. It's not about building it and letting it loose; it's about continuous iteration to meet evolving developer needs.
Metric-Driven: Product teams have KPIs to measure success. Likewise, platform teams must keep a pulse on developer engagement, platform usage, and performance metrics. Know what success looks like and measure it relentlessly.
Now, there are nuances. Unlike product teams dealing with external customers, platform teams work with internal customers - developers. Thus, they must focus on the external-facing components (APIs, CLI, developer portal) and the internal platform mechanisms.
Also, while feature development can be a big win for product teams, it's often about stability and reliability for platform teams. Downtime isn't just a hiccup; it can bring your devs to a standstill.
In essence, thinking of your platform team as a product team creates a disciplined, user-focused approach - an absolute necessity when building a successful IDP.
Setting up a platform team is akin to bootstrapping a product team. You have a blend of roles aimed at delivering a singular, high-performing product: your IDP. Let's break it down:
Like a product team, a successful platform team needs a balance of vision and execution. It's all about delivering value to your customers - in this case, your developers. Each role is a cog in the machine, ensuring your IDP is robust, efficient, and user-friendly.
A Platform Engineer is a developer's wingman, their best tool in the toolbox, and a silent superhero in the shadows. They're the ones who get their hands dirty with the nuts and bolts of the organization's infrastructure, paving the way for developers to focus on their core, high-value tasks - creating features and solving business problems.
Technically adept, these engineers are masters of a varied skill set. They are well-versed in cloud services, comfortable scripting in languages like Python or Go, have a strong understanding of network and server architecture, and are proficient in automation and configuration management tools like Terraform or Ansible. They are adept at container orchestration (think Kubernetes) and are hands-on with CI/CD pipelines, version control systems, and monitoring tools.
The role of a Platform Engineer extends beyond technical competencies. They are stewards of the internal systems, responsible for defining, implementing, and maintaining the platform that allows the development team to thrive. They are the mediators between the code that developers write and the infrastructure that code runs on, ensuring a smooth journey from development to deployment.
Mindset-wise, a Platform Engineer adopts a product-centric viewpoint. They see the platform as their product and the developers as their customers, striving to enhance the developer experience. They are proactive, always identifying areas for improvement, automation, and optimization. They think in terms of scalability and reliability, planning for a future where the organization's needs can differ drastically from today.
In short, a Platform Engineer isn't just a role - it's a mindset, a set of skills, and a crucial part of any organization aiming to boost its efficiency and development velocity. These engineers are key to building a strong, resilient IDP, facilitating collaboration and productivity across the organization.
Hiring the right people is arguably the most critical part of building a successful platform team. While the role of a platform engineer may seem straightforward on paper, finding individuals who genuinely fit the bill can be a steep challenge. Before you start your hunt for platform engineers, there are a few things you should consider or be aware of.
Supply-Demand Gap: The platform engineering discipline is young, born from the DevOps and SRE fields, which are already competitive talent markets. This translates into a tougher hiring environment for platform engineers. In your talent acquisition strategy, factor in a longer hiring timeline, higher salaries, and potentially wider search geographies.
Skill Transformation: Platform engineers often transition from being DevOps engineers or SREs. Look for candidates who can evolve from an operations mindset to a product mindset. They should exhibit solid experience in infrastructure but also a keen understanding of the developer's needs and workflows.
Holistic View: Unlike their DevOps and SRE predecessors, successful platform engineers have a panoramic perspective of the tech landscape. They can dive into code, debug infrastructure, design APIs, and empathize with developers. During interviews, test for this mix of skills and perspectives.
Hard Skills: Typical hard skills for platform engineers include experience with Kubernetes, Docker, Terraform, CI/CD pipelines, cloud services, and programming languages like Go, Python, or Ruby. Ensure you have technically adept interviewers who can assess these skills.
Soft Skills: Don't overlook the soft skills. Given the cross-functional nature of the role, communication, empathy, problem-solving, and leadership skills are critical. Incorporate behavioral interview techniques to evaluate these.
When hiring platform engineers, don't just look for a list of tech skills. Seek out those rare unicorns who can span the developer-infrastructure divide, and you'll have the foundation for a strong platform team.
So far, we’ve covered most of the theory behind platform engineering and how to go about it. One key question remains: When is the right time to actually consider implementing an IDP?
In the next part of our series, we will get into the weeds and give you pointers on what signals to look for that indicate the need for a platform.
A platform engineering team should be structured to support scalability, reliability, and developer efficiency. Typically, it includes key roles such as platform engineers, site reliability engineers (SREs), DevOps specialists, and security engineers. The team should follow a product mindset, treating the platform as an internal product with clear ownership and user-centric design. Collaboration with development teams is crucial to streamline workflows and provide self-service capabilities. Effective structuring involves cross-functional expertise, automation-driven processes, and a focus on observability, security, and continuous improvement to optimize software delivery.
A platform engineering team is responsible for building, maintaining, and optimizing the infrastructure and tools that support software development and deployment. Key responsibilities include automating workflows, ensuring system reliability and scalability, providing self-service platforms for developers, and managing deployment pipelines. The team also handles infrastructure provisioning, monitoring, security, and troubleshooting. Additionally, they collaborate with DevOps, development, and operations teams to streamline processes, improve efficiency, and ensure a seamless user experience for both internal and external stakeholders.
Platform engineering team structures can vary based on the organization's needs, but common topologies include:
1. Centralized: A single platform engineering team serves the entire organization, building and maintaining common tools, infrastructure, and services for all teams. This promotes consistency but may become a bottleneck in large organizations.
2. Decentralized: Platform engineers are embedded within individual product or development teams. This approach allows closer alignment with specific product needs but can lead to duplicated efforts across teams.Federated: A hybrid of centralized and decentralized models, where a central platform engineering team provides core services and standards, while smaller, domain-specific teams manage their own platforms. This allows for consistency and flexibility.
3. The choice of topology depends on factors like company size, product complexity, and the level of autonomy each team requires.
Platform engineering and DevOps are closely related but focus on different aspects. Platform engineering is centered around creating and maintaining the infrastructure and tools that developers need to build, test, and deploy applications. It involves providing a stable, scalable environment and automating processes like provisioning, monitoring, and deploying resources. On the other hand, DevOps refers to a culture and set of practices aimed at fostering collaboration between development and operations teams. It emphasizes continuous integration, automation, and improving the speed and quality of software delivery. While both aim to enhance the software development process, platform engineering focuses on the tools and infrastructure, whereas DevOps emphasizes practices, collaboration, and faster delivery.
In short, platform engineers create the systems supporting development, DevOps optimizes workflows, and SREs focus on ensuring systems are stable and performant in production. A Platform Engineer builds and maintains the infrastructure and tools that development teams use to deploy, manage, and scale applications. They focus on automating infrastructure and ensuring that the platform is reliable and efficient for developers. DevOps is a cultural and technical approach that promotes collaboration between development and operations teams. It focuses on automating the software development lifecycle, improving communication, and speeding up software delivery by creating a seamless workflow from development to production. SRE (Site Reliability Engineer) focuses on ensuring the reliability, availability, and performance of systems in production. SREs combine software engineering practices with IT operations, emphasizing proactive monitoring, incident management, and automation to maintain system stability and scalability.
Subscribe to our newsletter and stay on top of the latest developments