Ga naar inhoud
Deel 3: Het vakmanschap 8 min leestijd

Les 08

Quality gates

Vang 87% van je bugs voordat een mens je code leest

Dit getal veranderde alles. Een bug fixen op commit-moment kost 2 minuten. Dezelfde bug in productie? 40+ uur. Verschil: 1.200x.

De vraag is niet of je kwaliteitschecks automatiseert. De vraag is waar. En hoe snel.

Drie lagen, strikte snelheidsbudgetten

Snelheidsbudgetten zijn niet optioneel. Ze zijn het verschil tussen een systeem dat werkt en een dat binnen een week omzeild wordt.

Laag 1: pre-commit (budget: onder 5 seconden)

Draait bij elke save. Te langzaam? Dan wordt --no-verify spiervermogen.

# .pre-commit-config.yaml
hooks:
  - ruff --fix           # Auto-fix formatting + imports
  - ruff-format          # Consistente codestijl
  - check-yaml           # Geldige YAML
  - detect-private-key   # Gecommitte secrets opvangen

Let op: auto-fix. Niet alleen controleren. Developers hoeven niet na te denken over formatting. De tool regelt het.

Laag 2: pre-push (budget: onder 60 seconden)

Draait voordat code je machine verlaat. Vangt alles op wat langer duurt om te checken.

# .git/hooks/pre-push
mypy app/                # Volledige type check
pytest tests/unit/ -x    # Unit tests (fail-fast)
ruff check --select S    # Security-gerichte regels

Laag 3: CI/CD (budget: onder 5 minuten)

Laatste poort voor merge. Grondig. Geen shortcuts.

# .github/workflows/quality-gates.yml
- ruff format --check .          # Formatting
- ruff check .                   # Volledige lint suite
- mypy app/ --strict             # Strikte type checking
- pytest --cov-fail-under=80 -v  # Tests + coverage-bodem
- pip-audit --strict             # Dependency-kwetsbaarheden

De resultaten

LaagIssues gevangenGem. fix-tijdKostenvermenigvuldiger
Pre-commit1.200+2 min1x
Pre-push89515 min8x
CI/CD37745 min23x
Menselijke review3783 uur90x

87% van alle issues gevangen voordat een mens de code zag. Dat is geen teststatistiek. Dat is een velocity multiplier. Je reviewers besteden hun tijd aan architectuur en logica. Niet aan formatting en type-fouten.

Rol het geleidelijk uit

Niet alles tegelijk invoeren. Developers komen in opstand als je ze ineens overspoelt met tooling.

WanneerVoeg toe
Week 1Alleen formatting (nul frictie, directe consistentie)
Week 2Basis linting-regels
Maand 1Type checking (permissief), coverage-bodem op 60%
Maand 2Security scanning, coverage omhoog naar 70%
Maand 3Volledige strikte suite, coverage op 80%

Waarom snelheidsbudgetten niet onderhandelbaar zijn

De snelste manier om je kwaliteitssysteem kapot te maken? Het langzaam maken. Dit gebeurt er:

  1. Pre-commit hook duurt 30 seconden
  2. Developers beginnen --no-verify te gebruiken
  3. Issues stapelen zich op in CI. Lokaal wordt niks meer gevangen.
  4. CI duurt 15 minuten. Moet alles opvangen.
  5. Developers pushen en halen koffie. Issues fixen? Straks.
  6. Context switch. Issues zijn nu 10x moeilijker te fixen.

Houd pre-commit onder 5 seconden. Hier doe je geen concessies.