When you have a magic black box at the core of your platform, disentangling it is a good idea even if it's not directly exposed to your users.

When you have a massive tangled bramble of magic and special cases, it's impossible to think about it in broad, coherent ways.

Every single feature is a special case; every incremental tweak or addition tends to add yet another special case.

When you have a conceptual model that captures all of the real world semantics of the system today (and also the expected semantics for the next few years) that's a game changer.

Now, incremental work can align itself with that model, cleaning up what pre-existing parts it touches, and laying down new aligned components.

Each incremental bit of work you do reduces the amount of overall magic, just a bit.

Over time, the system will naturally get more coherent, in an emergent way.

At some point a customer will ask "Hey can you provide us with a knob to do X", and they'll describe something very similar to how the internal system actually works.

At that point, it's a no-brainer to expose the knob (perhaps in the basement, not for non-savvy users), because you know it's a fundamental long-term semantic and not some random implementation detail.

More on this topic

From other episodes