advanced 2 min answer

A team has a fully automated pipeline and still releases monthly. What is actually blocking them?

ci-cdbatch-sizebranchingfeature-flagsorganisational
Show the full answer Hide the answer

What is being tested

Whether you understand that continuous integration is a discipline about batch size, and that automation is its enabler rather than its substance.

The likely blockers, in order of frequency

1. Long-lived feature branches. The team has automated builds and the same integration problem they always had. Integration is the thing being made continuous, not the build. A branch open for three weeks conflicts with everything and cannot be merged casually.

2. Deployment coupled to release. Nothing can ship until a feature is complete, so the release waits for the slowest feature. Feature flags decouple these: code deploys continuously and is disabled, exposure is a runtime decision. Without flags, monthly releases are structurally inevitable.

3. Manual approval gates. A change advisory board meeting fortnightly, a sign-off that takes three days. These usually add latency without adding information, because the approver cannot meaningfully assess a change they did not write.

4. Database migrations that require downtime or coordination. If schema changes are not expand-and-contract compatible, every release that touches the schema needs a window, and the window becomes the release cadence.

5. A slow or flaky pipeline. Beyond about ten minutes people batch changes to avoid waiting. Beyond flakiness they stop trusting the signal.

6. No automated rollback. If a bad deployment is a crisis rather than a two-minute reversal, the organisation will rationally reduce deployment frequency — which is exactly the wrong response.

7. Shared environments with contention, so testing a change requires booking a slot.

8. Culture. "We release monthly because we always have." Often the real answer, and it is addressed by evidence rather than argument.

How to diagnose it

Trace one change from commit to production and record where the time goes. The waiting is nearly always concentrated in one or two places, and it is usually somewhere nobody suspected. This exercise settles the argument faster than any discussion.

The evidence that changes minds

Deploying more often makes systems more stable, not less — a finding consistently supported by software delivery research. The mechanism is batch size: small changes are easier to review, verify and revert; large infrequent releases bundle many changes, so when something breaks the cause is ambiguous and rollback is all-or-nothing.

Organisations that release rarely "for safety" have optimised for the appearance of control and made each release more dangerous.

The order to attack it

Rollback capability first — because everything else is safer once reversal is cheap. Then feature flags, then branch lifetime, then the approval gates, using the improved failure and recovery numbers as the argument for removing them.