← Back to principles

Team

Changes are “live” when enabled and outcomes are confirmed

What this means in practice

Teams separate deploying code from releasing functionality. A change can be deployed safely and repeatedly without making it visible to users until the team explicitly enables it.

This keeps delivery incremental and low risk. It also creates space for controlled rollouts, fast rollback, and learning from real usage before committing to a full release.

Why this matters

Treating deployment and go-live as the same event increases risk and pressure. Decoupling them reduces blast radius, improves predictability, and supports faster iteration without compromising safety.

Practices that meet this principle

  • Feature flags used to control exposure and enable quick rollback

  • Progressive delivery, such as percentage rollouts and canary releases

  • A/B testing and experimentation where appropriate

  • Pipelines designed so deployments are routine and repeatable

  • Clear feedback loops, including monitoring, user feedback, and metrics

Validation

A project meets this principle when:

  • Code can be deployed without immediately changing user-visible behaviour

  • A mechanism exists to enable and disable features independently of deployment

  • The team can roll out changes gradually and measure impact

  • Rollback is possible without requiring emergency changes