Part 1: The Foundations of Platform Engineering - A Socio-Technical Discipline

Category:
Blog
Tags:
by Nicki Watt August 15, 2024
Category:
Blog
Tags:
by Nicki Watt August 15, 2024

Welcome to the first instalment of our Platform Engineering series: From Farm to Fork – A Comprehensive Guide

As outlined in the overview, this series explores platform engineering through the metaphor of “farm to fork,” a concept that mirrors the progression from planting seeds to delivering value, much like the journey of developing and nurturing a platform.

In this first blog, we’ll start by establishing the foundation of our journey, delving into the core principles of platform engineering as discussed in my talk, People, Process & Platform – A community focused approach.

Platform engineering has not only become trendy, but has also entered discussions at the senior executive level in large companies. According to Gartner, by 2026, 80% of large software engineering organisations will establish platform engineering teams to provide reusable services, components and tools for application delivery. However, as more and more organisations adopt platform engineering, I have observed that there is a noticeable tendency to prioritise delivering cutting-edge technology solutions without fully considering the broader context, including the people and processes involved. 

It’s crucial to recognise that platform engineering isn’t just a technical exercise; it’s a socio-technical discipline. In simple terms, I like to define platform engineering as doing whatever it takes (both technical and non-technical) to build, maintain, and provide a curated platform experience for the different communities that use it.

Diverse Communities

Developers are the primary community that an internal developer platform serves. They focus on delivering business value quickly and usually have little interest in writing boilerplate or infrastructure code. For them, an effective platform simplifies their workflow by offering tools and services that streamline infrastructure provisioning, enable rapid self-service setups like templated CI/CD pipelines, and minimise the effort required to access other common capabilities and services.

But developers aren’t the only community. As a platform engineering team, your audience is more diverse than you might realise. Multiple communities with varying skills and capabilities need to be considered, including data scientists, finance and security teams, and yes governance and leadership too. For example, data scientists require the ability to engage with more “experimental” services within the platform compared to standard developers. Leadership likewise needs to be able to understand how their return on investment (ROI) is being realised – likely needing more self service reports to achieve this.

Not all groups will interact with the platform in the same way, but adapting your platform to address the concerns and requirements of these groups plays a key role in achieving broader adoption and effectiveness across your organisation.

Driving Engagement

While a strong technical implementation is crucial—such as automating processes and creating the right levels of abstraction for different communities—it’s not enough on its own. 

We’ve seen many a client proudly build a platform, only to find that the teams who are supposed to use it don’t engage with it. This happens because they mistakenly rely on the often misquoted “Field of Dreams” principle: “If you build it, they will come.”

To get teams to fully embrace your platform, you need to be intentional about driving engagement beyond just the technology. This is where the “socio” aspect of the “socio-technical” discipline comes into play, and often involves rethinking how teams interact not only with the platform itself, but also with each other.

There are many ways to approach this, however one which I highly recommend is Team Topologies, which aims to promote fast flow and break down barriers between teams. Being purposeful about team setups and interactions is crucial for delivering an effective and sustainable platform solution. I go into a bit more detail about this in part 2 when talking about teams.

Building a Curated Platform Experience

A curated platform experience means designing a platform that offers a well-thought-out set of services aimed at delivering value and outcomes, rather than just an arbitrary collection of features. 

We’ll cover more of the platform-as-a-product concept in the next section, however before that, it’s helpful to understand and visualise what a good outcome actually looks like if you do manage to do this well. In this section I briefly list some of the key characteristics of a good platform and user experience, as well as the principles behind them which we observe leads to a well crafted curated platform experience.

Key characteristics of a good platform and user experience

  • Clear Boundaries and Responsibilities: Successful platforms define distinct roles between the platform team and user teams, ensuring everyone understands what the platform provides and what users must manage.
  • Self-Service Capabilities: Good platforms empower users through automation, easy onboarding, and well-documented APIs, reducing the dependency on the platform team.
  • Flexibility and Evolvability: Good platforms are designed to adapt to changing needs and offer customizable options. They should evolve over time, accommodating new tools and processes.
  • Reliability: Ensuring the platform consistently delivers on its promises, such as uptime and performance, is key to building trust among users.

Community-Driven Principles

  • Independence Over Dependence: Teams should be empowered to use the platform without constantly needing support from the platform team, achieved through automation and clear platform contracts.
  • Freedom Within Boundaries: Teams should have the freedom to choose from supported options, rather than being constrained to one rigid solution. That said, you should avoid providing a free-for-all which can be just as problematic
  • Role Modelling: Platform teams should use their own tools and practices to ensure they work well and provide a good user experience.
  • Respecting Community Differences: Platforms should cater to the varied needs of different teams, which may involve creating specialised teams or interfaces.

Conclusion

As we conclude this first part of our Platform Engineering series, it should be evident that the foundations of platform engineering are deeply rooted in the socio-technical landscape. Building a successful platform is not just about the technology you implement, but also about how you align your platform with the needs and dynamics of the diverse communities within your organisation.

We explored the critical role of understanding the various communities involved and the importance of driving engagement through good team setups and a curated platform experience. These foundational insights are key to differentiating a good platform from a great one.

In the next part of our series, we’ll move from laying the groundwork to tackling the challenges of platform engineering. Just as a farmer must navigate obstacles to grow a successful crop, platform engineers must overcome their own set of difficulties to create a platform that truly meets the needs of its users. 

So if you’re ready, get your shovel and spade and head on over to Part 2: Why Creating a Great Platform Is So Hard

Looking for more help?

OpenCredo has been working with organisations of all shapes and sizes on their platform engineering initiatives. This ranges from strategic consulting and advice, to reviews and assessments, a platform accelerator offering, as well as the provision of leadership and hands-on delivery teams to accelerate the adoption of fit-for-purpose platforms. If you’re looking for more help in this area, please reach out below and let us know how we can help you.

This blog is written exclusively by the OpenCredo team. We do not accept external contributions.