Enable javascript in your browser for better experience. Need to know to enable it? Go here.

Platform engineering:

How you can help developers deliver more value at a lower cost

Top engineering talent has never been harder — or more expensive — to acquire. Organizations know the value that skilled developers can deliver to their business. Yet surprisingly, most still aren’t realizing that value effectively. Productivity is constrained, costs are rising, and teams that should be highly efficient are falling behind.

 

To stand a chance against the engineering-led digital giants disrupting industries — and defining entirely new ones — with their operational, marketing, and engineering scale, you need to deliver more customer value with less investment and drive engineering effectiveness. And to do that, you need to invest in platform engineering.

 

Thoughtworks has developed the modular, scalable framework below to continuously engage and drive outcomes for engineering organizations. This framework provides a structured, quantitative, and ongoing approach to reducing time to value, increasing productivity, improving developer satisfaction, and building a more predictable, efficient, and effective engineering organization.

Each of the dimensions that come together to enable engineering effectiveness carries its own challenges and demands specific changes from organizations.

 

In this article, we are  going to take an in-depth look at platform engineering and explore how it can help you increase engineering productivity and deliver more value, more consistently, at a lower cost.

 

What platform engineering is — and why it isn’t DevOps

 

In the context of engineering effectiveness, we define platform engineering as the technologies, patterns, techniques, and governance processes required to provide a secure and scalable seamless automated path to production. That includes enabling easier infrastructure and access provisioning, more effective compliance, and cutting workload management complexity in an observable manner that reduces friction and developers’ cognitive load.

Essential components of the Thoughtworks Platform Engineering Offering

Upon seeing that definition, many people incorrectly assume that platform engineering is very similar to DevOps. But they’re completely different and distinct models.

 

Platform engineering aims to solve many of the challenges that DevOps teams can introduce, such as siloed operations and process bottlenecks. In this context, we define DevOps teams as the glue team that executes the tools, processes and techniques for the developers — empowering them to build and deploy their products self-sufficiently.

 

While not the original intent of DevOps, when DevOps teams are applied in the enterprise world, developers typically throw things over the wall to a small set of people who build and release their products, creating new people and prioritization bottlenecks that hinder engineering effectiveness over time. 

 

But in the platform engineering world, the focus is on enabling developer autonomy. That doesn’t mean simply making developers do everything that DevOps engineers did in the past. Rather, it demands the creation of reusable and consistent capabilities that empower developers  and help them be more effective without having to hand tasks off. That empowerment typically means that the developers who build a product own that product, and retain responsibility for running it.

 

Four keys to platform engineering success

 

To realize the value that platform engineering can bring, you must enable DevOps to evolve from being a team that does the delivery work for developers (most organizations call this a DevOps team) to a team that enables the delivery work for the developers in a product-centric way (Typically these teams are called platform engineering teams).

 

Here are four key steps — along with specific practices — that can help you enable that evolution across your engineering organization.

 

#1: Prioritize team structure and ways of working over tooling

 

Implementing platform engineering to improve engineering effectiveness requires more than just new tooling. It’s a cultural shift that will bring major changes in how teams collaborate, and one that demands the right combination of communication, education, and leadership development.

 

The aim isn’t just to give developers the means to complete more tasks themselves. You’re also working to break down silos, prevent tasks from being thrown over the wall, and improve overall product quality — all things that can’t be achieved by tooling alone.

 

Crucially, every action you take when implementing platform engineering must contribute to reducing cognitive load for developers who use this platform. Giving them new tools or reusable technical capabilities without the right training and information can quickly contribute to that load, rather than reduce it. To prevent that from happening, it’s essential  to appoint a technical product manager responsible for the platform product itself. 

 

By focusing on maintaining the flexibility, extensibility, reliability, compliance, governance, and standards of the platform, this technical product manager can prioritize the capabilities developers need most, so they can focus on their customers, business domain, and goals.

 

This creates an environment where developers don’t have to open tickets or reach out to a small team to do things beyond functional design, implementation, test, and delivery. Instead, they can simply access the capabilities they need to do those tasks themselves.

 

Key practices

 

  • View, manage, and enable developers who create business domain development products, not just writers of functional code through a pervasive cultural change across the organization 
  • Translate the work previously done by DevOps teams into new reusable capabilities and make those capabilities available to all developers — rather than handing the work directly to them.
  • Involve developers in the design of new capabilities and build around them to ensure your capabilities have the right impact on cognitive load.
  • Provide training and clear communication at every stage to ensure platform engineering has the right transformational impact on your engineering culture.
  • Recognize that empowered developers are the strongest drivers of product quality and give them as much control over how those products are built and delivered as possible.

 

#2: Enable observability

 

Observability is crucial for enabling engineering effectiveness, and the decisions you make when implementing platform engineering can have a major impact on it. 

 

Contrary to common misconceptions, observability isn’t just a new version of monitoring. It’s an entirely new mindset that enables developers to find problems before they occur and prioritize their efforts accordingly.

 

It’s proactive. So, its success hinges on your developers’ ability to quickly and easily detect and act on system performance data at the application, pipeline, platform, and ecosystem level. If you use different tools to enable observability at each of those levels, they’ll need to work together to provide a consistent and coherent view of what’s going on.

 

Empowered with that observability, developers can fundamentally change how they work. Instead of looking back at historical data and reported issues, they can take charge of performance and proactively focus on the areas that demand their attention today. They know how their applications and systems work, and actionable insights from observability gives them the visibility they need to continuously increase product quality, proactively create value, and give customers what they want before they even ask.

 

Key practices

 

  • Remember that monitoring does not equal observability and ensure the tools you deploy deliver continuous, real-time visibility of systems, applications, and your platform.
  • Provide observability across your entire ecosystem and avoid focusing purely on the three critical pieces — metrics, logs & traces of your applications or systems — to ensure visibility isn’t siloed and is valuable across as many product contexts  as possible. Aim to enable observability across as many axes as possible, such as application, infrastructure, platforms, cloud, incidents, service health, portfolio health, and business operations.
  • Bring everything together in one place and avoid using too many dashboards and tools, to make sure everyone’s view is consistent and convenient.
  • Trust your developers to be the people who know the most about what they’ve built and deliver observability in ways that work for them, rather than driving them to change how they think about their systems. It’s important to note that this won’t happen automatically, and will require you to enable automated governance and train developers in relevant best practices. 

 

#3: Make the success of your platform measurable

 

Platform engineering capabilities enable the rapid delivery of high-quality services and experiences to customers at scale. But to support engineering effectiveness in the long term, the real dollar value of that must be clearly visible to everyone.

 

The most successful platform products are customer-centric, easily discoverable, and simple to onboard to. But importantly, they’re also built with specific metrics in mind to track the success of the platform as it scales.

 

Each capability on your platform should have a clearly articulated and measurable value proposition. That proposition enables you to quickly see if your capabilities are impacting Engineering Effectiveness and delivering value in the right ways — and take remediating actions if they’re not.

 

It’s important that developers and all relevant stakeholders are involved in the creation of those value propositions. Collaboratively defining the purpose and value of capabilities will help you quickly identify if what you are proposing is likely to deliver its intended value for developers, customers, and the business. 

 

If developers feel a proposed capability is likely to create further issues and not deliver on your value hypothesis, that’s a good indicator that it might not be worth creating. Once again, this helps to keep product quality high, while ensuring developers are always working on the right things and focusing on value creation.

 

Key practices

 

  • Quantify the value of your platform in dollar terms by measuring your investments’ TCO and impact on productivity, operational efficiency, and customer value.
  • Give developers a voice in the capabilities you create as you define value propositions for them, to ensure you’re always building the right things.
  • Get a clear consensus on the metrics that matter and ensure every stakeholder at every level understands what platform engineering success looks like and how they can help drive it.

 

#4: Empower developers to increase productivity 

 

An overarching theme you can see across the board is the need to empower developers so as to increase their productivity. An engineering team is most effective when the product developers are empowered and have the right tools to focus on their primary role. This is best achieved by providing them the most appropriate capabilities in a timely manner that can be measured. True implementation of platform engineering capabilities will lead to the reduction in cognitive load of the developers to learn less new things that are outside the core capabilities for their success giving them the opportunity to focus on building domains specific code. This is achieved by abstracting out capabilities that are critical to the overall success of the development community across multiple products in the organization and implemented with an intentional approach of enhancing developer self sufficiency.

 

Key practices

 

  • Developers are your most important asset. Be mindful of the things they spend their time on by giving them platform capabilities of value
  • Use a product mindset in identifying, building and enhancing these capabilities based on the improved developer productivity and effectiveness
  • Self-serve and easier onboarding are key to making sure that the capabilities built are really going to help them. This can be achieved by a combination of starter kits, reference implementations and an API driven way of accessing the capabilities

 

Platform engineering is important — but it’s only one piece of the engineering effectiveness puzzle

 

Building platform engineering capabilities can be a serious undertaking. But throughout, you need to keep in mind that it’s just one aspect of the flywheel approach to enabling engineering effectiveness.

 

If you build your platform engineering capabilities well, they will complement the other dimensions in Thoughtworks’ engineering effectiveness framework to help you get the most from your developers and empower them to continuously create significant business value. 

 

Most organizations already have some level of platform engineering capability — typically falling under the larger umbrella of DevOps or developer productivity — so they don’t need to start from zero. For those organizations, their focus should be on augmenting and evolving their existing capabilities into an optimal solution that’s ready to  support  developers to be more effective.

 

To learn more about our approach to engineering effectiveness and see how we can help enable it across your organization, visit our hub.  

Find out how Engineering Effectiveness could transform your organization