Journal
March 14, 2024
The Architectural Debt: Why Developers Should Think Like Urban Planners.
Systems rot from small shortcuts. Borrowing language from urban planning helps teams name trade-offs before they become crises.
Cities and codebases
Every codebase is a city: districts (modules), roads (APIs), zoning (ownership boundaries). When shortcuts pile up—shared globals, god objects, undocumented assumptions—you get the software equivalent of sprawl: slow delivery, fear of change, and expensive rework.
Urban planners think in decades. Product teams think in quarters. The tension is real, but the metaphor still helps: what you permit today becomes the default tomorrow.
Naming debt honestly
Debt is not shameful; unnamed debt is. If a shortcut is intentional, document the boundary, the expiry condition, and who pays interest when it comes due.
Treat refactors like infrastructure projects: staged, measurable, and justified by risk reduction—not aesthetics alone.
A practical lens
Before adding a feature, ask: does this widen a road permanently, or does it add a reversible lane? Reversible experiments keep systems adaptable; permanent widening without maintenance guarantees congestion.