By making preconfigured resources available on a self-service basis, platform engineering helps to optimize developer productivity, which in turn benefits the business by increasing the rate at which engineers can build and release new software. It also typically improves the developer experience by reducing the time and cognitive load necessary on the part of developers to implement the solutions they require to support software development workflows.
Granted, most platform engineering teams are under pressure to roll out capabilities, and writing documentation can easily take a back seat. One way to solve this challenge is to hire technical writers, who are usually easier to find (not to mention cheaper in terms of compensation costs) than skilled platform engineers. Organizations should let their platform engineers focus on building capabilities, and ensure that they have adequate writers available to document the capabilities effectively.
Well, not necessarily. A variety of challenges can arise when implementing and operating a platform engineering initiative that undercut its value:
What is platform engineering?
The better the platform engineering team documents its solutions, the easier it is for developers to benefit from them without requiring support. For this reason, it’s critical not to skimp on documentation.
To improve platform engineering solution quality, teams should automatically test the capabilities they build. This means writing automated tests and executing them as a systematic part of the capability development process. Tests should also occur when a capability is updated or is impacted by a change to an external service that it depends on.
Overcoming these challenges requires adopting several key platform engineering best practices.
Why platform engineering can be hard
This includes, above all, understanding developer needs and ensuring that platform engineering capabilities align with them. Monitoring which solutions developers use, how they use them and how often they request support or abandon a solution can also help inform effective product decisions by platform engineering teams.
From a technical perspective, making technology available to an organization’s internal users via platform engineering may seem simple enough. A platform engineering team builds the solutions, releases them through a self-service developer portal and supports them as needed, right?
- Solutions that are low in quality: In the rush to roll out capabilities, platform engineering teams may release solutions that have bugs or don’t operate in the way they promise. As a result, developers can find themselves having to troubleshoot the solutions, undercutting the value they are supposed to deliver.
- Technology changes break solutions: Updates to software or services that solutions depend on, such as cloud databases or APIs, could cause a capability to stop working. Here again, developers may be left trying to fix a problem they didn’t create, leading to wasted time and a frustrating experience.
- Developers struggle to use solutions: Using platform engineering capabilities often requires the ability to apply Infrastructure-as-Code (IaC) solutions. Not all developers are IaC experts, which means they may struggle to apply the platform engineering capabilities offered to them.
- Organizations offer the wrong solutions: Platform engineering only delivers value when the capabilities available are actually ones that developers need. Disconnect between developers and platform engineering teams may cause the latter to build capabilities that few developers will use, while overlooking critical solutions that would deliver much greater value.
Best practices for effective platform engineering
As a best practice, platform engineering teams should be realistic in identifying their limitations. They shouldn’t promise solutions or timelines they can’t deliver. Failing to meet promises can discredit platform engineering in the eyes of both developers and business leaders. It’s better to indicate that building a certain solution by a certain date is just not possible than to say you’ll do so but come up short.
-
Adopt a product management mindset
Choosing to increase developer productivity and improve the developer experience by adopting platform engineering is easy. What’s much harder is implementing platform engineering capabilities that actually deliver their intended value.
As I’ve learned in my experience helping businesses implement successful platform engineering programs, avoiding these challenges requires a highly strategic approach that steers clear of common pitfalls and leverages opportunities to streamline platform engineering processes.
-
Test solutions automatically
Platform engineering is a practice in which organizations offer prebuilt, preconfigured technology solutions to their internal software engineering teams. The purpose of platform engineering is to allow developers to obtain the tools, services and infrastructure they need without having to build them on their own.
-
Integrate vendor-supported modules
By Derek Ashmore
In some cases, platform engineering capabilities can take advantage of prebuilt modules or services that are maintained by external providers – such as those available through Azure Verified Modules and the collection of Gruntwork AWS Terraform Module Libraries. Both of these resources offer access to a selection of prebuilt, pretested modules for setting up or connecting to cloud resources.
-
Document solutions extensively
By using external solutions like these where applicable, platform engineering teams avoid having to implement their own IaC templates or scripts. Even more important, they can effectively outsource testing and maintenance to vendors like Azure and Gruntwork, which helps to maintain quality and avoid bugs.
Platform engineering solutions are effectively a type of product, and their customers are internal employees. For that reason, the best platform engineering teams leverage the same tactics used by product managers responsible for overseeing the solutions sold to external customers.
-
Be realistic about platform engineering expectations
For example, a platform engineering team might make it possible for developers to launch a database that comes with built-in content geographic replications and backup and recovery protections, which software engineers can connect to an application they are building. Or, it might provide a preconfigured Kubernetes cluster where developers can test or deploy an app. These are both common examples of types of IT resources that developers frequently require to complete projects, and which would take them a lot of time and expertise to build and manage on their own.
Platform engineering has the potential to deliver a tremendous amount of value to organizations that adopt it. But it can also lead to more trouble than it’s worth when platform engineering teams make mistakes like failing to test solutions adequately or setting unrealistic goals. They key to leveraging actual value from platform engineering is to adopt a measured approach that centers on quality and maintainability over the long term.
Conclusion: Platform engineering that actually works
Platform engineering team resources are always finite. As a result, the speed at which teams can roll out new, high-quality capabilities is inevitably limited.
That’s because a variety of challenges can arise in the context of platform engineering. At best, these challenges make platform engineering solutions less effective than they would ideally be. At worst, they can hinder developer productivity to the point that organizations would be better off if they had not attempted platform engineering in the first place.