For a company to be able to deliver a good user experience and also be very productive we need that the people that write and maintain our software have a good experience. That’s where the platform team (the team that I work on) can help.

In our case, the platform team is focused on delivering the basic (core) services and also tools and best practices to all other development teams that focus on the business logic.

As platform engineering we help in the following way:

Enabling teams

The platform team’s mission is to “Serve and Support Developer’s Magic”, in other words, we are here to help to take the roadblocks out of the road and make the developer’s experience better to allow them to do their magic (delivering the best user experience). Like AWS, the platform team provides Managed Services to the rest of the engineering teams.

A central goal of the Platform Team is to improve the Developer Experience. Developers are a special class of users, in that they use development tools and processes to add quality and value to our products, including delivering better customer and user experiences.

So, our goal is to create and maintain a self-service set of tools and processes that allows the developers to do their job. And this set of tools and processes is the platform.

As Sam Newman said in his book Building Microservices, 2nd Edition.

“A platform that can implement common functionality, such as the ability to handle desired state management for microservices, log aggregation, and inter-microservice authorization and authentication, can deliver huge improvements in productivity and enable teams to take on more responsibility without also having to drastically increase the amount of work they do. In fact, a platform should give teams more bandwidth to focus on delivering features.”

For example, by having a set of tools and process to help in the development process, the business team don’t need to worry about the basic “plumbing” and can focus the entire energy on developing features to make the user experience better.

Some examples of tools that we maintain are the development pipelines (where the code runs to make sure it is working properly), databases and queue services, authorization services, logging, monitoring, alerting services, tools for fast software development, and many others.

Focus on the developer

As every software company has its end-user, the platform team also has their user, they are all the other developers of the company.

We as the platform team need to be actively going out to find out what problems and needs the developers are facing and working with them to help them get these problems fixed. And we also need to be taking a product development approach to how you build out the platform focusing on the developers as our clients.

We use many channels to get this feedback and to have clear communication. We have for example dedicated channels on the internal communication app, we also have a JIRA project set up for that and we encourage transparency and open communication from the developers.

Building for resilience

Nature tends to be resilient to crisis in a way that human-created things usually aren’t. Your laptop won’t fix itself when it breaks, but your finger will. This requires slack and flexibility. So, we have to purposely add resilience to the systems that we develop.

We do this in many different ways, one of these ways is having multiple instances of service in a redundant way so if one of them for some reason fails, we still have other instances that will handle the job without the interruption of the functionality for the customer.

We do this with all our own services and also with other tools that we use. Multiple layers of redundancy help us to deliver business continuity to all our customers.

We also have active monitoring and alerting services, so if anything happens on our system, we receive alerts and information on what is happening so we can act on it. This helps us to have a better understanding of the problem and its causes.

Summary

In summary, by focusing on the developer experience, the platform team helps increase delivery speed and efficiency at scale so that the teams can focus on the business requirements and solutions.

Happy coding.


Photo by Ryan Quintal