We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
Reliability and speed by 'push to main' mentality - Håvard Høiby - NDC Oslo 2024
Learn how pushing directly to main branch with feature flags, small increments, and "dumb code" can make your development process faster & more reliable.
-
Maintain only production environment, no staging/development environments - this reduces complexity and forces better practices
-
Push directly to main/master branch from day one - enables faster integration and learning from production workloads
-
Break changes into small, atomic increments rather than large PRs:
- Reduces risk
- Makes rollbacks easier
- Enables faster feedback
- Simplifies code review
-
Use feature flags extensively:
- Test new features in production
- Control rollout
- Easy rollback capability
- Decouple deployment from release
-
Employ expand/contract pattern for breaking changes:
- Add new version alongside old
- Gradually migrate traffic
- Remove old version when safe
-
Embrace incidents and errors:
- Build blameless culture
- Learn from mistakes
- Monitor application metrics over infrastructure
- Have clear incident response process
-
Write “dumb code”:
- Keep it simple
- Minimize abstractions
- Make it easy to understand and modify
- Focus on explicit over clever
-
Enable developers to be autonomous:
- Trust teams to deploy
- Give access to production tools
- Allow direct fixes without process overhead
- Empower decision making
-
Test based on impact and criticality:
- More testing for critical paths
- Less ceremony for low-risk changes
- Use production data for testing
- Monitor real usage over synthetic tests
-
Optimize for speed of integration:
- Minimize time from idea to production
- Remove artificial process barriers
- Learn from production quickly
- Continuously deliver small changes