Consistency beats flexibility at scale.
Early on, we let teams build their own pipelines.
It felt empowering. It felt flexible. It felt fast.
It did not scale.
Flexibility Creates Variance
When every team builds pipelines independently:
- conventions diverge
- checks differ
- deployments behave differently
- failure modes multiply
That variance is invisible at first. It becomes painful later.
Team A used Azure Pipelines. Team B used GitHub Actions. Team C used Jenkins because they inherited a project that already had it. All three were valid choices.
Team A ran security scans before tests. Team B ran them after. Team C ran them only on main branch builds. Each approach had reasoning behind it.
Team A deployed on merge to main. Team B required manual approval. Team C used automated deployments for dev but manual for production. Again, each made sense for that team’s workflow.
The variance was fine when teams operated independently. It became a problem when engineers moved between teams, when incidents crossed service boundaries, and when platform changes needed to roll out everywhere.
Support Cost Grows Quietly
Pipeline issues started to look familiar.
Different YAML. Different steps. Different assumptions.
Fixing one pipeline did not fix the others. Knowledge did not transfer cleanly.
Support cost grew without obvious ownership.
An engineer would open a ticket: “Deployment failed with error X.” The platform team would investigate. They would find the problem. They would fix it in that team’s pipeline.
A week later, another team hit the same issue. Same root cause. Different pipeline structure. The fix required different edits. The knowledge from the first fix barely applied.
This repeated across dozens of pipelines. Every pipeline had slightly different structure, slightly different tooling, slightly different assumptions. Generic advice did not exist. Every support interaction required understanding that specific pipeline’s unique configuration.
Documentation became impossible. You could not write “here is how deployments work” because deployments worked differently for every team. You could only write “here is how deployments work in this specific pipeline.”
Consistency Reduces Cognitive Load
Standard pipelines changed the conversation.
Teams stopped asking: “How do I deploy this?”
They started asking: “What does this pipeline guarantee?”
That shift mattered.
Consistency reduced:
- onboarding time
- incident confusion
- review overhead
When pipelines are standardized, new engineers learn the pattern once. They join a new team and the pipeline looks familiar. They know where to find build steps, test results, deployment logs. They know how approvals work and what gates exist.
Incident response becomes faster. If a deployment fails, the structure is known. The likely failure points are predictable. Runbooks work across teams because the infrastructure is the same.
Code reviews improve. Instead of reviewing pipeline logic and application logic, reviewers only review application logic. The pipeline is already known to be correct because it uses the standard template.
Flexibility Did Not Disappear
We did not remove flexibility. We constrained it.
Teams could configure behavior. They could not redefine fundamentals.
That balance worked.
The standard pipeline had configuration points. Teams could set environment variables, choose test frameworks, specify deployment targets. They could enable or disable certain checks based on their risk tolerance.
What they could not do was change the order of operations, skip mandatory scans, or invent new deployment mechanisms. The core structure was fixed.
This felt constraining initially. Some teams had workflows that did not fit the template. We worked with them to either adjust the template or adjust their workflow. It required compromise.
But the constraint paid off. Teams could still move fast within the guardrails. They just could not create unique snowflakes that the platform team could not support.
Final Thought
Flexibility feels good early. Consistency pays off later.
At scale, the cost of variance always shows up. Usually when you can least afford it.
Related reading: