If you’re like me, you often find yourself reaching for a good metaphor to represent a discussion point in software.

A recent metaphor I like to use is that a software application is a city and its geography the constraints.

Why do I like this? For one, it most accurately captures the incremental nature of software. In the Bay Area, city planners did not demolish the eastern span of the Bay Bridge until the new one was ready. Indeed, some of the tech debt of the old bridge remained while the new bridge was in full use.

This metaphor also capture the

It can also capture how cities become services

People arrive in cities and decide whether or not it’s right for them. Do they move because a friend told them about it? Do they move because it’s really hot now? Everyone has a different reason.

It’s a bit better than “rebuilding the plane as you fly it.”