Adopting platform engineering practices means to transition from the informal and inconsistent use of shared platforms and capabilities to more coordinated, standardized, and participatory approaches across the organization. This article outlines the stages of adoption, focusing on how organizations can discover, choose, and effectively use services, tools, and technologies to create a cohesive and efficient platform engineering environment.
Focus areas include discovering, choosing, and using services, tools, and technologies.
Adoption of shared platforms and capabilities is sporadic and inconsistent. No organization-wide strategy or guidance exists for choosing and integrating required backing services and technologies. Individual teams might apply platform practices to improve their own processes, but there's no coordinated effort or standardization across the organization. This level of adoption doesn't have a coherent approach. Organizations with this approach believe that external tools are more effective than those provided internally.
Discover services, tools, and technologies: Tools and capabilities are discovered informally, often through word-of-mouth or chance encounters.
Choose services, tools, and technologies: Engineering teams independently choose and integrate services and technologies based on their specific needs.
Use services, tools, and technologies: Engineering teams maintain their own scripts, tools, and processes
unique to their specific context and needs.
Mandated
The organization recognizes the value of shared platforms and capabilities and strives to encourage and nurture them. Internal directives incentivize or even require use of shared platform services for some use cases. Some product teams use platform capabilities more than others; capabilities cover typical use cases in the organization but not unusual ones. It's difficult to add those outliers to the common platform.
User discovery of capabilities and how to use them is inconsistent; it's possible a user on a product team won’t discover a supported capability unless directed there by a platform team.
Discover services, tools and technologies: Engineering teams must look for platform team guidance to use specific tools and capabilities. This guidance may manifest in internal documentation and/or org wide directives.
Choose services, tools and technologies: Engineering teams may rely on informal discussions with platform team to choose and integrate mandated services and technologies. Engineering teams choose and integrate mandated services and
technologies if they meet their specific needs.
Use services, tools and technologies: Processes are built around standards that platform team creates but these can't easily be extended by engineering teams if they don't exactly meet their needs. Engineering teams either fail to use the mandated standard or use it but aren’t satisfied with the end result.
Advertised
The organization actively promotes the platform’s capabilities by clearly communicating the benefits and specific use cases that align with team needs. The platform team collaborates closely with engineering teams, not only to highlight these advantages but also to facilitate performance comparisons and goal setting through tools like scorecards and Service Management Indicators (SMIs). High quality supporting services are provided to reduce operational overhead, making the platform an attractive option for product teams.
However, despite these efforts, some teams might still perceive a low ROI when migrating their services to the platform, making them hesitant to move away from established routines and practices. Additionally, the organization faces the complex task of balancing the reduction of technical debt with the ongoing need to migrate services onto the platform. Overcoming these hurdles requires continuous engagement and support from the platform team to ensure that the platform’s value proposition resonates with all teams across the organization.
Discover services, tools and technologies: Common platform exposes capabilities that cover typical use cases for the organization. Engineering teams discover platform capabilities through platform team directives.
Choose services, tools and technologies: Platform team collaborates with engineering teams to encourage choice of platform capabilities.
Use services, tools and technologies: Problems and solutions related to use of services, tools and technologies are shared through informal communities of practice within the organization. For instance, they appoint ambassadors or champions within development teams to advocate the use of the capabilities.
Value-Driven
Users on product and service teams choose to use platforms and their capabilities because of the clear value they provide in reducing cognitive load on product teams while providing higher quality supporting services. Documentation and ergonomic interfaces enable product team users to quickly provision and use platform capabilities. Users choose internal platform implementations over alternatives such as developing the capability themselves or hiring a provider.
Discover services, tools and technologies: Engineering teams actively engage with platform to discover range of capabilities - self serve UX.
Choose services, tools and technologies: Engineering teams use the platform to look for solutions to technical requirements. The platform describes the value offered by each capability and drives the choices made by engineering teams.
Use services, tools and technologies: Use of platform capabilities is fully supported by platform through templates, support forums, documentation etc.
Participatory
Users from product teams further invest in platform capabilities by joining the ecosystem and contributing back to it. Some contributions improve and fix existing capabilities; others introduce new capabilities and features to address new use cases. Processes and services are defined and enable users to identify requirements and coordinate contributions among several product and platform teams. New capabilities are published via consistent interfaces and portals and with complete documentation and standard versioning.
Discover services, tools and technologies: Developer advocates and internal ambassadors build and support an internal user community that extends platform ownership to app and service team contributors.
Choose services, tools and technologies: Platform engineers participate in product team planning to learn of requirements and suggest existing capabilities.
Use services, tools and technologies: Engineering teams are empowered to contribute fixes, features, and feedback for platform capabilities. Engineering teams generate pull requests with required extensions and participate in reviews.