Simple products are rarely simple underneath.
The one-button interface hides a thousand decisions. The instant result masks hours of computation. The effortless experience required enormous effort to build.
This is the paradox of modern software.
Complexity doesn't disappear. It just moves.
From the user's side to the developer's side. From visible friction to invisible infrastructure. From your problem to their problem.
The best products absorb complexity so users don't have to.
They handle edge cases silently. They make smart defaults. They decide so you don't have to.
But this takes discipline.
It's easier to expose complexity. To add settings instead of making choices. To let users configure instead of deciding what's right.
Every option is a decision offloaded to the user. Every setting is complexity made visible again.
The truly simple products are hard to build. They require saying no to features. They require absorbing difficulty instead of passing it along.
Simple is the output. Complexity is the input.
That's the shift worth noticing.