## Core Insight Software simplicity is not a luxury — it is a prerequisite to reliability. Every line of code is a liability for a 24/7 service: it creates potential for new defects. SRE's fundamental job is keeping agility and stability in balance, and simplicity serves both. Reliable processes actually increase developer agility by making production changes visible and bugs faster to find. ## Three Simplicity Practices 1. **Delete aggressively** — routinely remove dead code, build bloat detection into testing. Dead code behind feature flags is a time bomb (Knight Capital). Source control makes reverting easy, so just delete. 2. **Minimize APIs** — fewer methods and arguments means easier understanding and higher quality per method. A small API is a hallmark of a well-understood problem. 3. **Release simply** — small batches so each change can be understood in isolation. 100 simultaneous unrelated changes make debugging nearly impossible. Analogous to gradient descent. ## Modularity Loose coupling between binaries (and between binaries and configuration) promotes both agility and stability. API versioning allows safe upgrades without forcing full system rebuilds. No "grab bag" classes or "util/misc" binaries — each component needs a clear, well-scoped purpose. ## The "Boring" Virtue Boring software is good software. Predictable behavior, no surprises. Surprises in production are the nemeses of SRE. ## Source - [[Site Reliability Engineering - Chapter 9 - Simplicity|SRE Ch 9: Simplicity]] by Max Luebbe ## Related Concepts - [[Essential vs Accidental Complexity in SRE]] - [[Toil Definition and Six Attributes]] - [[Release Engineering Four Principles]]