The wave of rapid digital transformation necessitated by the pandemic changed many organizations’ perspective of IT. It shifted from being regarded as a cost center or supporting function to something that can drive growth and add commercial value – leading to more leaders than ever before, realizing that tech is the driving force behind modern digital businesses. It’s no wonder, then, that investment in IT is growing: Gartner forecasts that worldwide IT spending will reach $4.6 trillion in 2023.
However, today's economic conditions are pushing organizations to ensure they get a tangible return from their investments. This requires optimization not only in terms of costs but also in business agility, scalability and complexity. This can be achieved in two ways:
Focusing on improving capabilities at an individual level
Implementing change at an organizational level, by creating a developer experience through tooling and nurturing an ecosystem for effective software development
This blog explores the second approach through engineering platforms that enable a frictionless developer experience.
But first, what is the friction in a developer's experience?
Types of friction engineering team goes through
There are many different types of friction in the software development lifecycle. They include:
- Delivery friction — when developers have to wait for required infrastructure, decision or tools
- Access friction — when there is a delay or roadblock in getting access to the right systems
- Cognitive friction – where too many tools and operational complexity for non-value add activities lead to an overload of information
Read more about poor developer experience and how it impacts the Software Development Life Cycle (SDLC) here.
Although the sources of friction vary, they can all be characterized in the same way; they require time and energy but do not create end user value. For instance, product teams might sometimes find themselves supporting infrastructure or building and setting up CI/CD pipelines/environments — while these things are required, they don’t contribute to customer value. Too many non-value add activities create too much context-switching and that adds-up to an overall developer cognitive load. This reduces developers’ ability to achieve flow and maximize value delivery.
Engineering platform reduces friction by hiding complexity that is non-essential to the business value
To minimize this, software development teams need a strong engineering platform that hides complexity and offers self-service functionality so developers can simply focus on building customer-facing features. Let’s see what that platform looks like.
What is an engineering platform?
In general, platforms are technology foundations that accelerate an enterprise’s ability to deliver customer value. An engineering platform does the same thing for its software development teams, who are, in effect, its customers. A good engineering platform consists of three core components: a delivery infrastructure hub, a service hub and a knowledge hub. The platform should be supported by lightweight governance and a frictionless developer experience portal.
Building blocks of an Engineering Platform
The Delivery Infrastructure (DI) hub provides product teams with self-service and automated ‘golden paths’ that go from development to production with quality and security checks baked in. The hub includes common cross-platform tools such as continuous integration setup, observability and monitoring capabilities. It also accelerates building higher-order infrastructure products and environments using Infrastructure-As-Code (IaC) on top of existing cloud services.
The services hub offers an on-demand ability to publish and discover APIs and events along with documentation and Software Development Kits (SDKs). It helps product teams reuse and compose digital assets which limits dependencies and accelerates delivery.
The knowledge hub breaks organizational silos by making it easy to publish project documentation, org-level tutorials, guides, recipes for on-boarding/off-boarding, architecture, sensible defaults and security and compliance information and policies. The unified search also helps developers discover solutions faster. With proper documentation and automations, we have seen onboarding times reduced from months/weeks to days.
Automated governance, with engineering platform observability provides real-time dashboards and insights of operational metrics that are related to software delivery and production systems such as DORA four key metrics (4KM), availability, cloud cost alongside continuous monitoring and tracking of metrics and compliance requirements. Gartner breaks it down into two categories – first is the engineering intelligence platform and second is the engineering value stream management platform.
A developer experience portal provides a single point with self-service capabilities for product teams leading to elevated developer experience.
Backstage by Spotify, as a developer portal
Spotify developed an open-source platform for building developer portals called Backstage. While it provides out of the box core features, organizations still need to tailor it to their needs. We used Backstage to build a portal for TELUS called Simplify, improving developer experience for their 8,000 engineers. Learn more about that, here.
Engineering platforms in action
NEO by Thoughtworks
At Thoughtworks, we built our own engineering platform called NEO to enable effective software development. NEO provides multiple self-service capabilities and developer tools to remove friction and streamline processes. By keeping the developer and their product development journey at the center, NEO helps them focus on the most important thing — developing software to deliver business value quickly.
Thoughtworks NEO platform results
Getting started with an engineering platform
Our experience has taught us that building engineering platforms as a product is key to success. We have identified four principles that are critical to this success:
- Delivering value through customer focus (i.e., developers in this case)
- Be incremental — build an MVP and follow continuous delivery principles
- Make the platform easy to use with low friction for adoption
- Define clear measures of success such as getting better at DORA 4KM
Alongside those four principles, the team responsible for building the platform should be accountable for:
- Strategy: the team should outline the tech stack, engineering practices, standard operating procedures and the core infrastructure for development, right from ideation to go-live
- Tools: the team should build templates and architecture blueprints. They should develop frameworks for application and infrastructure automation across different workloads. Doing this will ensure a paved path to production with sensible defaults
- Adoption: engineering teams should be able to adopt standardized practices and leverage templates by pairing, knowledge sharing and capability development programs
- Metrics: it’s essential that the team measures delivery metrics and creates dashboards and visualizations for monitoring and alerting
Build platform engineering squads with 4 key accountabilities
A good engineering platform will eliminate repetitive and non-value-adding tasks from a developer’s list, allowing them to focus their energy, skills and effort on delivering value to the customer. It will also encourage the reuse of digital assets; this will not only save time and elevate the developer experience, it can also cut environmental costs.
Over the long term, it’ll make it easier to onboard/off-board team members minimizing loss in translation. It will also be home for clear documentation, preventing guesswork and reducing technical debt.
Disclaimer: The statements and opinions expressed in this article are those of the author(s) and do not necessarily reflect the positions of Thoughtworks.