Self-serving Developers in Distributed Teams

9 minutes read
13 November 2023

Especially after the pandemic, remote work and distributed teams have become very common in most organizations. While working from home has some clear advantages like a better work-life balance, it does not come without downsides. Indeed, according to Gartner, “software engineers are frustrated by engineering processes and tools that were not designed for remote work environments”. Addressing this issue is crucial for IT leaders who manage distributed teams.

Developer self-service is at the forefront of the shift towards more agile, remote-friendly, and innovative software development practices. This shift is driven by internal developer platforms (IDPs), which are abstracting away the complexities of cloud-native technologies and improving the developer experience.

According to Puppet’s State of Platform Engineering survey, adoption of IDPs is rising, with over half of companies incorporating them within the past three years. This shift is widely endorsed, as an overwhelming 93% of respondents believe that embracing IDPs is a positive step in advancing software development practices.

This article describes self-service platforms, the importance of enabling self-serve capabilities for developers in an organization, and the key components of an efficient and scalable self-service platform.

Understanding self-serving developers in distributed teams

A Self-Service Developer Platform (SDP) is a comprehensive set of tools, services, and resources that empower software developers to build, deploy, and manage software applications independently. By leveraging SDPs, developers get access to standardized pre-defined boilerplates, granting them the autonomy and flexibility to provision and de-provision resources quickly, minimizing friction, and streamlining the entirety of the software delivery process.

Additionally, for distributed teams, SDPs provide a unified environment where software engineers across the globe can collaborate seamlessly, sharing code, resources, and access to tools.

The Internal Platform Model and how it empowers self-serving developers

The Internal Platform Model is an organizational approach focusing on building and maintaining internal platforms that empower self-serving developers within the organization. This model means that developers can choose the tools and technologies they want to use and deploy their applications to the environments without relying on the operations team.

Developer benefits of a self-service platform

The standout feature of a self-service platform is its ability to abstract the complexities of infrastructure management, providing developers with a user-friendly interface that empowers them to efficiently provision, scale, and manage their development environments. With a seamless self-service experience, developers can spend less time tinkering with infrastructure and more time creating innovative solutions and improving the user experience.

Here are some specific ways that a self-service platform can free developers from infrastructure tinkering:

  • Automated provisioning: A self-service platform automates the provisioning of infrastructure resources, such as servers, storage, and networking. This automated provisioning saves developers time and effort and ensures that infrastructure is set up consistently and securely.
  • Self-service catalogs: Self-service catalogs provide developers with a list of pre-configured infrastructure resources. This catalog makes it easy for them to find what they need and avoid mistakes when setting up their infrastructure.
  • Self-service tools: These tools help developers monitor, troubleshoot, and automate their infrastructure.

 

Operational benefits of self-service platforms
In addition to the reduction of infrastructure tinkering, self-service platforms offer some operational benefits, some of which are:

  • Improved security: Self-service platforms are equipped with built-in security controls and automated security updates, ensuring that applications hosted by the platform are protected against security threats. Additionally, self-service platforms promote centralized control over infrastructure resources. This centralization gives IT administrators a single view of who has access to what resources.
  • Enhanced compliance: Self-service platforms facilitate and streamline compliance efforts by providing developers with standardized pre-defined boilerplates. These platforms ensure your applications have a compliance-focused foundation, enabling organizations to track and audit infrastructure usage.
  • Accelerated time from commit to deploy: Self-service platforms streamline the software delivery process by automating repetitive tasks, ultimately leading to a faster time-to-market.

Internal Developer Platforms: An overview

Internal Developer Platform (IDP) is a self-service layer that empowers development teams, gifting them the autonomy and self-service access to tools they need to create, manage, and monitor development processes.

IDPs provide a multifaceted solution for addressing supply-demand dynamics by ensuring developers have the resources they need when they need them. They facilitate resource scalability, enabling on-demand provisioning and de-provisioning to match resource supply to project demands.

By abstracting the complexities required in dealing with infrastructure, IDPs reduce the cognitive load on developers, ultimately leading to a better developer experience.

Getting Started with an Internal Developer Platform

As discussed extensively in this article, there are multiple reasons why organizations should consider adopting IDPs. However, initiating this adoption can be herculean.

This section discusses how to initiate a conversation about and successfully adopt IDPs.

  1. Assessment and needs analysis: Before adopting IDPs, assessing your organization’s processes and pain points is essential. Answer questions like:
    • What tools and services are my team using?
    • What are their needs and wants?
    • How can an IDP help solve these needs?

    Answering these questions will help you decide when to adopt an IDP and what features and functionalities to include.

  2. Define clear objectives: Clearly state what you want to achieve by implementing an IDP. These objectives should align with the organization’s broader IT and business strategies.
  3. Build a team of advocates: An IDP is a significant change; having a team of enthusiastic and knowledgeable advocates from various departments is important to get your organization started. Ideally, this team should include developers, platform engineers, and other stakeholders such as product managers, security engineers, and operations engineers.
    The team advocate will promote the IDP to other teams, provide support and training, and help solve problems.
  4. Technology Selection: When selecting the technology stack for your IDP, you must consider factors such as scalability, compatibility with existing systems, community support, security, ease of use, vendor support, lock-in, etc.
    However, it is important to note that organizations can modify technology stack decisions over time to adapt to their needs.
  5. Start small, iterate, and refine: Start small when implementing IDPs. Focus on a few key features and a small team or project instead of trying to roll them out across the entire organization simultaneously. Get feedback from the groups involved and use it to improve the IDPs. Gradually expand their use as you become more confident in their effectiveness.
  6. Communicate and educate: Prioritize clear communication and education. Keep the team informed about the IDP and how it can benefit them. Create easy-to-understand documentation, and keep the channels open for discussions, feedback, and updates. Effective communication empowers teams to stay informed about the IDP and its evolving capabilities.

 

Key components required for an effective Internal Developer Platform
Regarding the IDP and its operation, we have already devoted an article outlining the 7 core components of an Internal Developer Platform. In addition to these, we mention here other components that make an effective IDP:

  • Infrastructure orchestration: This component allows the developers to self-serve and manage their infrastructure on demand. It orchestrates the existing infrastructure in an automated and intelligent manner.
  • Role-based action management: Role-based action management lets us control who can access what resources on the IDP. This component is important for security, as it makes sure that only authorized users can read or change sensitive data or perform certain tasks.
  • Application configuration management: This component helps us manage applications reliably, which can improve consistency and reduce errors.
  • Environment management: Environment management allows developers to create or restore fully provisioned environments on demand.
  • Observability: Observability allows us to monitor and troubleshoot the IDP.

Internal Developer Platforms for Platform, Ops, and DevOps Teams

DevOps, Ops, and Platform engineering teams use IDPs in many ways, including:

  • Platform teams: Build, run, configure, and maintain the IDP. This IDP provides developers with self-service access to infrastructure resources.
  • Ops teams: Automate tasks like deploying and managing applications and troubleshooting problems.
  • DevOps teams: Bridge the gap between development and operations without the cognitive load of traditional DevOps principles. This enables continuous integration and delivery and automates testing and deployment.

 

Importance of separation of concerns and various interfaces (internal developer portal, service catalog, UI, API, or CLI)
Separation of concerns in software development is a design principle that manages complexity by separating a system into distinct sections, with each section being responsible for a separate concern.

In the context of IDPs, the separation of concerns ensures that different aspects of development and operations are handled independently and effectively.

IDPs can also offer multiple interfaces and access points, such as internal developer portals, service catalogs, user interfaces (UIs), application programming interfaces (APIs), and command-line interfaces (CLIs). These interfaces help to unify the developer experience by catering to the diverse needs of different teams and individuals.

Software development trends that are catalysts for Internal Developer Platform adoption

IDPs take advantage of software development trends like cloud computingmicroservices, and DevOps by providing a self-service platform for managing infrastructure, deploying and scaling applications, and collaborating with DevOps teams.

Additionally, as more organizations embrace modular microservices, IDPs become even more relevant by providing tools like service discovery, load balancing, and monitoring for managing the complexity of microservices-based applications.

IDPs also benefit DevOps teams by providing a single platform for all development and operations tasks, improving software development, delivery speed, and efficiency.

Exploring the relationship between Internal Developer Platforms and DevOps

Internal Developer Platforms (IDPs) and DevOps are complementary software development and delivery approaches. IDPs provide the technical foundation, offering tools and automation for streamlined development workflows, while DevOps principles emphasize collaboration, transparency, and iterative improvement.

IDPs enable self-service provisioning, continuous integration, and delivery (CI/CD), which are crucial to the DevOps philosophy. This synergy creates a culture of shared responsibility, where development and operations teams work together to optimize software development, testing, and deployment. This results in faster, more reliable, and collaborative software delivery processes.

Last but not least, IDPs are the foundation of the approach known as Shift Down to the Platform, not Left to the Dev.

Summing it up

The importance of self-service developer platforms in streamlining the software delivery process cannot be overstated. These platforms provide developers with standardized tools, resources, and infrastructure that they can use to provision and manage their environments, deploy applications, and collaborate with other team members.

By giving developers this autonomy, self-service platforms empower teams to work more efficiently, reduce dependencies on IT and operations teams, and accelerate the software development lifecycle.

Check out this white paper to understand why and how to evolve your organization into a platform company.

Mia-Platform Platform Company
Back to start ↑
TABLE OF CONTENT
Understanding self-serving developers in distributed teams
Developer benefits of a self-service platform
Internal Developer Platforms: An overview
Getting Started with an Internal Developer Platform
Internal Developer Platforms for Platform, Ops, and DevOps Teams
Software development trends that are catalysts for Internal Developer Platform adoption
Exploring the relationship between Internal Developer Platforms and DevOps
Summing it up