disposable code and immutable infrastructure parallels
Charity Majors: disposable AI code requires immutable-infrastructure discipline to stay safe IT RevolutionTL;DW
- Cost of software is defined by maintenance cost, not whether AI generates it; disposable code has low maintenance burden by design.
- Trust in code builds over time through production exposure—no test suite matches two years of proven stability in production.
- Immutable infrastructure lesson: mutability is the enemy of understanding; systems edited in-place fail in hard-to-diagnose, hard-to-reproduce ways.
- Regenerate what you've defined, not patch what you haven't: stop maintaining hand-crafted artifacts, treat them as cache.
- Code becomes replaceable cache when you specify commitments, evaluate them, and monitor continuously—not by rewriting in place.
- Testing in production with feature flags, granular observability, and rollback paths enables safely deploying fresh code.
- Undetected behavior change, performance regressions, and silent drift—not code newness—cause failures; new code with strong contracts is safer than old code without them.
- Engineering and management must align on AI adoption: suppress engineer skepticism and you push honest skeptics into reflexive anti-AI corners.
- Different system layers can safely change at different rates; databases and user-facing contracts require stable boundaries; internal logic can be disposable.
- Managers forcing adoption without walking in engineers' shoes risk long-term resentment if wrong; bring skeptics along by showing hands-on evidence, not issuing mandates.
TL;DW
- Cost of software is defined by maintenance cost, not whether AI generates it; disposable code has low maintenance burden by design.
- Trust in code builds over time through production exposure—no test suite matches two years of proven stability in production.
- Immutable infrastructure lesson: mutability is the enemy of understanding; systems edited in-place fail in hard-to-diagnose, hard-to-reproduce ways.
- Regenerate what you've defined, not patch what you haven't: stop maintaining hand-crafted artifacts, treat them as cache.
- Code becomes replaceable cache when you specify commitments, evaluate them, and monitor continuously—not by rewriting in place.
- Testing in production with feature flags, granular observability, and rollback paths enables safely deploying fresh code.
- Undetected behavior change, performance regressions, and silent drift—not code newness—cause failures; new code with strong contracts is safer than old code without them.
- Engineering and management must align on AI adoption: suppress engineer skepticism and you push honest skeptics into reflexive anti-AI corners.
- Different system layers can safely change at different rates; databases and user-facing contracts require stable boundaries; internal logic can be disposable.
- Managers forcing adoption without walking in engineers' shoes risk long-term resentment if wrong; bring skeptics along by showing hands-on evidence, not issuing mandates.
Majors maps the handcrafted-server-to-immutable-infra shift onto durable vs. disposable code, arguing mutability is the enemy of understanding in both domains. Safe high-velocity replacement requires stable interfaces, strong specs, continuous observability, granular feature flags, and clear rollback paths—not just AI-generated output.
