A software development and delivery platform enables an organization to centralize and coordinate the entire software delivery chain. In previous articles, we have idealized this as an IT ‘Vending Machine’ as this idea captures the simplified self-service nature of the ideal software delivery platform. (See the previous article here)
The concept of Platform Engineering becomes very complex in a modern, fast-moving IT environment. It relies on the emerging area known as Platform Engineering. So, how do we excel in Platform Engineering?
A well-conceived platform is more than just a concept. It’s a practical solution that equips users with the necessary tools and processes to deploy, test, manage, and use applications. This platform is designed to adapt to the changing needs of the users, which reassures them and boosts their confidence. Ideally, users are eager to use it!
Depending on the organization, platforms typically include infrastructure or cloud services, container orchestration systems like Kubernetes, CI/CD pipelines, alerting, monitoring, and logging tools, backup and data protection tools, security, and several other advanced tools.
💡 Platform Engineering
Platform Engineering is the process of designing, building and operating self service delivery platforms for software development, deployment and management within an organisation. It is the process of creating and maintaining user friendly, self service capabilities on top of highly complex systems & processes to accelerate app dev and app deploy. So its the process of designing and building the vending machine. It’s useful to remember that the platform engineering team is the team responsible for the creation and management of the platform. They are the vending machine service team, keeping the machine healthy, re-stocking, and changing product mix based on user feedback)
For organizations that rely on their development teams, the developer experience will dominate the platform. It will likely be presented as an IDP - Internal Developer Platform, with specific tools and capabilities to assist with developer efficiency and productivity.
However a well conceived and implemented platform eliminates toil (non-value added effort) and can improve efficiency by up to 70% (Gartner 2023). This can benefit a range of users - not just the dev team. In fact Gartner see this as a top initiative for 2023 and 2024.
The great news is that doing platform engineering well does not have to be that hard!
In the best current examples (and this is an emerging, important area) the platform is seen as an internal product, built with both product management and agile development principles applied. This means that the Platform Engineering Team will act like product managers and carry out several key functions:
Identify users and understand their needs
When done well, platform engineering identifies users and their needs. In many cases, primary users have been the development teams - developers are expensive, and keeping them productive has been a high priority - it's a great way to get better software, faster!
However as the concept of platforms and platform engineering becomes more widely understood, its easy to see that most organisations will have several groups of users who will benefit from the platform. In addition to devs, users could include:
Prioritize use-cases
Because platform engineering is focused on user experience (especially dev experience), and overall productivity, it needs to answer the question “how can we support you with an optimal way forward?”. Like a great product manager, the PE team will identify and prioritize ideas, requirements and dreams.
Iteratively build an MVP platform
Getting the platform right is a process. It starts with addressing the subset of the identified needs that delivers the most value in the shortest time (low hanging fruit).
Build a series of ‘paved roads’
These are carefully curated sets of tools, practices, processes and documentation that are standardized across an organization. Paved roads eliminate the ‘heavy lifting’ for users and reduce or eliminate ‘cognitive load’. Because these are based on direct user feedback, they will be both effective and important (so will be used).
Implement measurement and feedback systems
Agree and maintain service levels with the organization
Designing and building the platform is not the entire task of the Platform Engineering team. The platform must maintain high availability, while being monitored continually for security and patch requirements. Along with design and build, ‘operate’ is a key responsibility of the team.
Even though Platform Engineering is an emerging practice, a set of guiding principles is emerging from the work of Gartner and others. Done well, Platform Engineering will:
Find your ‘why’. Where is the pain? Pain points could be:
Create the ‘paved road’
Measure success
PDCA Plan/Do/Check/Act
DEVOPS Feedback Loop
Creating a delivery platform to streamline your software development and deployment has the potential to dramatically improve the overall performance of your teams and the quality of their output. By abstracting the complexity of the various underlying technology systems and presenting curated mechanisms to deliver what they need, your team’s output, their satisfaction and their ability to focus on higher value activities will show progressive improvement over time.
Like any new skill or process, Platform Engineering will involve a change process and potentially a cultural shift in approach. However the energy surrounding Platform Engineering is the direct result of the common sense and highly effective approach.