A Product-Management Approach to Platform Engineering
When creating an internal developer portal, it's important to consider the needs of developers and how the platform can address them.
Join the DZone community and get the full member experience.Join For Free
There’s no shortage of research or online material about the software delivery lifecycle. And yet, only now have we begun looking at how to make the SDLC simpler and more productive for developers, using platform engineering and an Internal Developer Portal. To understand what developers need and to deliver the right developer portal for them, we need a product mindset, beginning with an understanding of the different personas using the platform.
This blog post is based on a webinar with Kostis Kapelonis from CodeFresh, which you can view here.
The 3 Types of Software Delivery Personas
There are three main personas involved in the software delivery process:
1. Developers: They focus on writing code and shipping features.
2. DevOps/Operations: Their role is to run systems and provide infrastructure for developers.
3. DevEx/Managers/Leads: Concerned with day-to-day productivity, onboarding, compliance, software quality, and removing obstacles.
Now, let’s dive deeper into each one. (Note, this is a generalization of each role, which means that at the personal level, preferences may differ).
Developers are straightforward folks. The main thing that matters to them is writing code and sending code to production as fast as possible. For them, an ideal situation is when all background noise is removed, and they have easy-to-use solutions for performing their tasks.
For example, developers would prefer to have an easy way to create testing environments “at the click of a button.” They are not interested in dealing with any associated processes, like understanding where the database with the staging system is or learning Kubernetes.
DevOps, SREs, and other infrastructure professionals are focused on keeping systems healthy. As opposed to the fast-moving developers, DevOps carefully and thoroughly checks and monitors all updates and upgrades and reviews their progress and stability. Also, unlike developers, DevOps prefer automation over UIs.
DevOps’ job is to help developers with issues like environment creation and production issues, and they are glad to do so. Therefore, they prefer self-service solutions that can save everyone’s time and avoid the bottlenecks that tickets produce.
The dev managers want to be in control of the software delivery process. They need to be able to see how the team is doing and evaluate their productivity. They are also looking for ways to remove blockers and solve bottlenecks, saving time for each team member and enabling them to focus on doing their job. In addition to the team, they also monitor engineering quality, standards, and health.
The Challenge: Information Overload
Each of these personas, and especially developers, have an abundance of software delivery systems and tools at their disposal. These solutions help accelerate, improve, scale, simplify, measure, and automate the process. The result is a streamlined delivery process but also an overload of resources and tools that contain too much information.
Let’s think of an example for a different domain to explain this. Let’s say you want to book an airline ticket. When you visit the airline company website, you get asked very straightforward questions:
- Where are you departing from?
- Where do you want to go?
- How many people are flying?
- When do you want to fly?
Now imagine you were asked all the questions the airline needs answers for to book your ticket:
- Who is the pilot?
- Which terminal will the plane fly from?
- How much fuel should we put on the plane?
These are all very important questions for operating the flight, but they are too complex for the regular customer and also irrelevant to them (they can also cause uncertainty and doubt). And yet developers, who only care about writing and sending code to production, are provided with an abundance of information that is irrelevant to them rather than ensuring a level of abstraction.
For example, if a developer needs to deploy a service, they are required to know how to package the service into a container, automate its integration and delivery, manage configurations, set up monitoring and security measures, etc. But really, they need to be able to scaffold it in a few minutes.
The same goes for the other personas, DevOps, and managers, but developers are the ones with the heaviest cognitive load.
The Solution: An Internal Developer Portal
An Internal Developer Portal is a self-service organizational hub providing developers with simplified access to all the tools and information they need to build, deploy, and manage applications. This could include container registries, vulnerability scanners, CI tools, IaC tools, control planes, information on how microservices are connected, and more.
As such, an Internal Developer Portal can provide the solution for developer information overload since it allows them to carry out all actions in a simple manner. This reduces the cognitive load and (tada!) also streamlines the development process.
Treating the Portal as a Product
Using an internal developer, you can build custom dashboards for developers so they see only the processes, tools, and information that are relevant for them to see.
Without an internal developer portal, developers can find themselves overwhelmed, looking at ten different dashboards just to understand what is going on.
An internal developer portal can abstract the different systems and present only what developers want and need to see and the developer self-service actions they need to perform. If needed, developers can drill down into any system to obtain more information. This is what it looks like with an internal developer portal:
Addressing the needs of developers, DevOps, and DevEx/Managers is key to accelerating the software development cycle. One of the most burning needs these personas have is reducing their information overload. This overload results from the multiple tools, systems, and processes they are using.
The implementation of an Internal Developer Portal can help simplify and standardize processes. This is done through self-service actions that are straightforward to understand and follow since they abstract away the complexity. As a result, the portal reduces the cognitive load and, consequently, accelerates the development process.
To learn more, watch the entire webinar here.
Opinions expressed by DZone contributors are their own.