From DevOps to Platform Engineer: 6 Things You Should Consider in 2023
We are in 2023, Platform Engineering is a fast-emerging concept at the intersection of DevOps and SRE, where the goal is to make developers from organizations to be completely autonomous in provisioning new applications and environments. All of that without requiring one to be an infrastructure expert. In this article, I will explain what DevOps Engineers need to do to become proficient Platform Engineers.
Romaric PhilogèneOctober 15, 2022 · 7 min read
[Last updated on 07/26/2023]
Are you already familiar with Platform Engineering? Feel free to skip this section.
To explain why Platform Engineering is a hot topic in the IT world, I will take my own experience as a DevOps engineer. Back in the day, my job as a DevOps engineer was to automate the whole deployment process to build repeatable and frictionless release pipelines to our staging and production environments. I always worked closely with developers to help them package their applications and release their changes autonomously. From my experience, most developers are not interested in how infrastructure and automation work. I can't blame them; we all have tasks to do before the end of the day. My main concern was when their applications failed to be deployed because of flaky code, and I spent half a day figuring out what was happening. The lack of the proper tooling makes it hard for developers to know if the problem was coming from their end or not. This is where we have seen emerging developer-friendly APM, observability, and tracing solutions like Datadog and NewRelic. Once set up by SRE or DevOps team, developers are autonomous in troubleshooting their applications and are accountable for them. It’s a big win for developers and ops.
This is where Platform Engineering aims to make developers more autonomous in their application deployment journey. Platform Engineers build and provide the platform that enables developers to deploy their applications, clone environments, and test new features autonomously. All of that while staying secure and compliant with the best practices put in place inside the organization. More autonomous developers lead to faster release cycles, accountability, and better team collaboration.
Platform engineering needs to change the mindset of the DevOps teams. In the traditional approach, the developers identify and request changes, which DevOps provides. In platform engineering, the platform engineers will proactively evaluate the end-to-end processes, tools, and techniques. They will not only identify the bottlenecks in the current workflow but will also implement the solutions in coordination with developers. To do that, they will need to take developers as their customers and understand their needs. In other words, platform engineers must follow a proactive approach to improve the workflow instead of waiting for developers to identify some issues.
As the main delivery of platform engineering is a self-service platform for developers, platform engineers will need to get into developers' shoes and identify which tools and processes should be built around the self-service platform. A successful platform engineering team pinpoints the problem areas and chooses the right tools and processes to make the journey from coding to shipment easier and quicker for developers.
After platform engineers have taken developers and internal teams as their customers, they need to set their goals. They will be doing the following activities:
- Understand the current environment, tools, frameworks, and workflow used by developers. That includes how developers manage source code merging, how they handle branches, how they test the changes, how they use deployment environments, etc.
- Identify extra processes, unneeded approvals, the complexity of tools, and anything which is causing the current workflow to slow down
- Understand various issues developers face and what solutions they have in mind
- Define the specific goals to make the life of developers easier
The goals set by platform engineers will be tailor-made for one organization because each has its own needs and processes. Platform engineers will define a custom set of goals to be developed into a self-service portal. Examples of some goals can be the following:
- Changing Git strategy from GitHub flow to git-flow or trunk-based flow
- Addition of some library or framework to automate something developers are currently doing manually
- Moving from a static shared environment to dynamic, ephemeral environments
- Adding automation testing to the suite of integration tests
- And many more
After the platform engineers have set the goals, the next step is to design the solution instead of just starting the implementation. You should create a design of the solution based on the goals set in the previous step and present those goals as a solution that is easy to understand. Your audience will be none other than the developers. The design can be a combination of flow diagrams, power points slides, illustrations showing existing vs. suggested flow, current vs. new tools, current vs. predicted revenue, etc. The purpose is to get initial feedback from developers on how they respond to this design. According to the Pareto rule, you can meet the needs of 80% of customers by implementing only the 20% requirements, but the requirements must be rightly identified. So you need to present the solution design to the development teams, get their feedback, and incorporate it back into the design. The more refined your design is, the easier it will be for you to implement it.
The next step is the actual implementation of the platform. The platform engineers will utilize their knowledge of different programming languages, tools, APIs, GitOps, Security controls, etc., to develop the self-service platform for developers. It will be an iterative and incremental process. Instead of developing the whole platform in one go, you need to develop an MVP version first to get initial feedback from developers. It is perfectly fine if the first version is not the perfect one. The basic purpose is to portray the solution design as a working version having end-to-end flow, even if it is not fully refined. You should not be adding expensive integrations or modules into the first version yet; you should do your best to use trial versions and sandbox accounts to get your MVP up and running quickly. Later on, when the product matures, you can utilize your premium and paid integrations in your platform.
After you have developed a small but working solution for the platform, you can pitch it to internal stakeholders like developers and maybe QA engineers too. The purpose is to get their initial feedback and incorporate it into the solution. The internal teams will verify:
- Does the solution solve the problems identified earlier
- Does the solution support developers’ workflow and their user experience
- Does the solution fulfill the goals set earlier
The step is an iterative process where you will repeat and improve steps 3 (design) and step 4(build). You will keep doing that until you see a stable, mature self-service platform.
The last step is actually the reiteration of the earlier steps 1-5 because you need your solution to evolve with the passage of time. Technology evolves rapidly, and every day new tools and frameworks come into being, claiming to be faster and better than their predecessor. At the same time, the needs of the developers also evolve with time. Platform engineers need to adapt to the ways developers evolve. It is natural to revisit your design and update your solution every few iterations because you need to keep up with the changes.
Organizations are quickly adopting platform engineering to increase developers' productivity and earn more revenue. We mentioned in this article that platform engineers need to change their mindset and consider developers as their customers. We also went through the six steps a successful platform engineering team will adopt.
Subscribe to our Platform Engineering newsletter to receive our hand-curated content
As a successful Platform Engineer, you must be equipped with many skills. You need to understand product development because you will develop one for the developers. You also need programming skills, GitOps, network security, cloud programming, containerization, and many technical skills. However, the most important trait is your ability to understand the needs of developers and identify the right set of tools and processes as the solution. You might not master it in one go; you must keep practicing it. An ideal platform engineering team will build a self-service solution that will make developers autonomous in shipping their code without depending on the operations team.
Undoubtedly, this change will become mainstream and an inevitable need for all tech organizations.