What to Open, What to Close: A Pragmatic Guide to Interface Design
The playbook for building software seams that bend with change, not break.
The playbook for building software seams that bend with change, not break.
Quick take: Every architectural regret starts as a small “harmless” interface. Four posts, twenty patterns, and dozens of code snippets show you how to choose the seam that stays harmless — no matter how your product mutates.
Why this series exists
Interfaces are the pressure valves of a codebase. Pick the wrong valve:
- new features ricochet through unrelated files,
- plug‑ins fight your core types,
- or consumers rage when their integration breaks.
Pick the right one and change flows like water.
This series is a hands‑on field guide to that choice — rooted in Java, Go, TypeScript, Scala, and Kotlin, but focused on principles you can port anywhere.
The 4-Part Series
Part 1: The Expression Problem & Interface Shape
“Should extensibility favour behaviours or data variants?” → trade‑offs, guiding heuristics, code walkthroughs.
Part 2: Designing for Real-World Volatility
How to quarantine fast‑changing behaviours (audits, reports, analytics) without polluting domain logic.
Part 3: Preventing Fragile Base Class Bugs
Inheritance landmines, composition refactors, sealed abstractions, and hook patterns that keep OO trees from toppling.
Coming Soon
Part 4: Evolving Interfaces Without Breaking Consumers
Versioning, schema evolution, plugin contracts, and runtime type‑safety techniques that keep dependents unbroken.
Coming Soon
Who will benefit
- Backend & API engineers crafting contracts that must survive quarterly rewrites
- Architects & tech leads responsible for plug‑in ecosystems, microservices, or modular monoliths
- Senior devs tired of “one‑line” changes spawning 15‑file PRs
If you’ve ever whispered “I hope this change doesn’t ripple…”, this series is for you.
Stay in the loop
- Follow @maneesh‑chaturvedi here on Medium for future deep dives.
- Have a colleague firefighting interface debt? Share this series — help them refactor less and ship more. 🚀
Ready? Start with Part 1 and learn why half of extensibility is knowing what not to extend.