Cloud infrastructure and tooling is becoming more complex every day. For engineering teams---both in software companies and other more traditional businesses---it's becoming harder to innovate and develop new products and features in a fast and efficient way. As more tools shift-left towards developers, developers have to deal with more overhead and tool fatigue. In a rapidly changing environment, teams need more automation and standardization to cover the basics so that they can focus on building features that drive value for their end customers.
For many organizations, the solution to this problem might be a rising job function: the Platform Engineer. This blog will walk through what a Platform Engineer does, and how they can benefit your own organization.
What is a Platform Engineer?
Platform Engineers are developers who build shared platforms that aggregate the tools, services, workflows, and data used across the engineering team and organization.
You can make a quick and easy distinction between traditional developers and Platform Engineers by asking: who is the end customer?
For traditional developers, the end customer is the consumer or business user. For Platform Engineers, the end customer is the developer inside the organization.
At a 30,000-foot level, Platform Engineers' primary responsibilities include:
Simplifying the way developers interact with infrastructure
Developing solutions to implement across the organization
Educating and empowering developers on best practices and leading the team in increasing efficiency and productivity
Centralizing systems and configurations to reduce the number of systems that developers and development teams have to access
Ultimately, the Platform Engineer's job is to remove bottlenecks and help developers do their jobs more efficiently.
In an industry where software development has become more complex and resource-heavy, this function is critical to the efficiency and scalability of your organization.
What skills does a Platform Engineer need to succeed?
To succeed in the role, Platform Engineers need a number of both hard and soft skills.
The Platform Engineer is, at its core, a developer role. Which means that they'll need the same set of technical skills that any other developer would have:
Data structures and algorithms
Ability to work with Databases and SQL
Knowledge of Cloud Infrastructure such as AWS, GCP and Azure
The ability to build great user experiences
However, in addition to these hards skills, Platform Engineers need soft skills that enable them to function effectively within an engineering organization:
Value-oriented problem solving. Platform Engineers need to know their customers (the developers) and how to make their jobs easier.
Collaboration skills. Platform Engineers need to meet with stakeholders within the organization---not just in engineering---to ensure all objectives are met.
Teamwork skills. Platform Engineers play a critical support role. That means they have to be able to work with people, not just sit in a room and code all day.
Flexible mindset & innovation. The role of the Platform Engineer is ever-changing. They need to be able to shift and pivot as the needs of the organization change.
Project management skills. Platform Engineers need to constantly shepherd projects through development and implementation to ensure they're delivering recurring value to the team.
Platform Engineer vs. DevOps engineer
Often Platform Engineering gets lumped in with DevOps. However, they're completely different practices with different focuses.
The chart highlights the distinctions between the two:
|Platform Engineer||DevOps Engineer|
|Responsibilities||Builds & maintains a platform||Responsible for automation and integration of CI/CD pipelines and other toolchains|
|Creates reusable services and tools used by teams across the organization||Harnesses tools to streamline deployment|
|Defines the platform based on what developers need from it||Responsible for ensuring SLOs, SLAs and overall system health|
|End User||Internal developer||External customer|
As you can see above, the difference between Platform Engineering and DevOps isn't just a technical distinction. It's a completely different role with different outcomes. And it's one we think will continue to shape into it's own role.
In a future blog, we'll dive into the differences between Platform Engineering and DevOps---as well as Site Reliability Engineers (SRE)in more detail.
Which software companies are using Platform Engineering?
Many engineering leaders want to know the big names using Platform Engineering right now. But that's the wrong question to ask.
The question you should be asking is: who's going to be using platform engineering in the near future?
And the answer to that is: just about everyone.
Gartner predicts that by 2026, 80% of software engineering organizations will have at least one Platform Engineer on their team.
But to answer the first question, we're already seeing both small and large software companies---Linkedin, PayPal, Netflix and others---lead the way in Platform Engineering. Some companies, such as Spotify, have even open-sourced some of their internal tools for others to use.
Eventually, all your competitors will be leveraging platform engineering. So if you want to use it to gain an edge, now's the time to get started.
Why are Platform Engineers important to the organization?
The growth of the cloud and the explosion of software capabilities---combined with ever-increasing consumer demands for advanced functionality ---have required engineering teams to change their development approach.
The Platform Engineer is the latest in a long line of such innovations. SREs and DevOps teams have long been critical to organizational success. However, the Platform Engineer has solved a major problem within the organization by providing a job whose sole function is to make software development centralized, repeatable, and scalable for other developers.
As we'll see in the next section, Platform Engineers do a number of key roles that benefit the engineering team:
Higher development velocity. Instead of developers building repeatable functionality from scratch, Platform Engineers replicate and distribute those base components.
Reduced developer cognitive load. By building necessary components in advance and providing developers self-serve access, Platform Engineers reduce their cognitive load.
Improved development culture. Platform Engineers open the door for developers to take ownership over configuration, deployment, and roll-back processes without needing to involve operations.
Improved MTTR & Change Failure Rates. By providing proven, tested platforms for developers to use, Platform Engineers reduce the risk of bugs cropping up in the system.
What does a Platform Engineer do?
Now that we've walked through the benefits that Platform Engineers offer to the organization, let's walk through the specific, day-to-day aspects of a Platform Engineer's job.
Designing and implementing internal platforms
Platform Engineers design and implement scalable and reliable platforms for developers to use. One major responsibility is ensuring platforms can handle the demands of massive workloads and traffic without compromising uptime and service. Either by building tooling that other developers can use for observability, alerting, notifications or monitoring or working on the core infrastructure directly.
Managing infrastructure and applications
After design and deployment, Platform Engineers are responsible for maintenance, optimization, and updates. Platform Engineers work hand-in-hand with DevOps and SRE teams to roll out updates and ensure that the changes are functioning appropriately. This involves expanding functionality to ensure that security patches roll out on time.
Monitoring and troubleshooting problems
Since Platform Engineers provide the foundation on which the whole engineering team functions, maintaining up-time is critical. As a result, they spent a lot of time monitoring and troubleshooting problems.
Additionally, Platform Engineers are responsible for continuous monitoring, defining metrics, and detecting issues early. They then identify and deliver effective solutions to these problems, which vary from simple clearing errors to more complex problems that require root cause analysis.
Automating the application deployment process
Platform Engineers also take on responsibility for continuous integration and development (CI/CD) pipelines for the applications. This allows multiple teams to collaborate on a given application without issues. They also automate common tasks like provisioning and configuring servers to improve overall developer productivity. The goal is to make the SDLC seamless.
Because Platform Engineers abstract detail away from the infrastructure itself, there's a greater opportunity for security problems when the application is live. As such, Platform Engineers must be vigilant about platform security, as they have visibility into areas that the rest of the team won't necessarily have. In conjunction with the DevOps/SRE teams, they are the first line of defense in implementing security best practices.
By supporting developers in their roles, Platform Engineers contribute to their overall working experience, which is key to recruiting and retention. When they have a Platform Engineer on the team, developers can free up focus from rote tasks and focus more on innovation, problem-solving, and engaging their creativity.
Final thoughts on Platform Engineering
The structure of the modern engineering team is changing. As technology increases in complexity, developers will be asked to do more in a complex environment. Having a Platform Engineer on the team not only makes developer's lives but also drives direct value to the end customer.
If you're considering hiring a Platform Engineer and want to know what tools and platforms they'll require, get in touch with our team. Nucleus is on the forefront of this movement and we'd be thrilled to answer any questions you have.