← Back to principles

Team

Prioritise prevention and early detection over reactive fixes

What this means in practice

We design and build to stop classes of problems from happening in the first place. We prioritise clear contracts, type safety, and compliance checks that fail early. We avoid relying on assumptions that only become visible once a change is in production.

Why this matters

Preventative controls reduce rework, incidents, and costly investigation. They make delivery more predictable. They also make systems easier to change safely because teams can trust the feedback they get during development and delivery.

Practices that meet this principle

  • Use TypeScript and enforce type safety as part of the build

  • Define and validate contracts at boundaries, including APIs and events

  • Add compliance checks and guardrails in CI so failures happen before merge and release

  • Make assumptions explicit in code and documentation, and remove them when they stop being true

Validation

A change meets this principle when:

  • Contracts are explicit and checked (types, schemas, or tests)

  • Compliance and quality checks run automatically before release

  • Failures are surfaced early enough to prevent downstream rework

  • There is evidence the approach reduces repeat defects or avoids known incident patterns