The development pipeline is a production system
This piece argues that the entire software development pipeline, from IDEs to QA servers, is a critical production system and should be treated with the same urgency as customer-facing outages. It highlights how breakdowns in these internal tools directly impede value delivery, drawing parallels to manufacturing's 'production lines.' The author contends that prioritizing fixes for these internal systems is paramount for developer productivity and efficient software delivery.
The Lowdown
Jerry Orr's article, 'The development pipeline is a production system,' posits a critical shift in how software development teams should perceive their internal tools and processes. While production outages for customer-facing systems command immediate, all-hands-on-deck responses, the author argues that equivalent breakdowns in the development pipeline often lack similar urgency. However, for a development team, a broken build, a downed QA environment, or malfunctioning CI/CD tools constitute a 'production outage' that directly halts their ability to deliver value.
The article outlines various components of the development pipeline that, when compromised, prevent software production:
- Issue Tracking & Change Request Systems: Tools like GitHub Issues or Jira are foundational for initiating work.
- Developer Tools: IDEs, build tools (Gradle, Maven), package repositories, local databases, and containers are essential for coding and compilation.
- CI/CD Tools: Jenkins, GitHub Actions, and similar systems are vital for automating integration and deployment.
- Test Suites: Failing tests block deployment, ensuring non-working software isn't released.
- QA Environments: A non-functional QA server prevents proper testing and validation.
- Any Blocking Step: Any part of the process that impedes the ability to make and deploy changes effectively constitutes an outage.
Ultimately, the author concludes that a team hobbled by a dysfunctional development pipeline cannot produce software. Therefore, rectifying these internal 'outages' must be afforded the same top priority as fixing issues in customer-facing production systems to maintain productivity and ensure continuous delivery.