Most software is terrible at waiting.
Not slow. Slow is honest. Slow can be measured, budgeted, improved, or killed.
Waiting is worse.
Waiting is the vague middle where the system has not failed, has not finished, and has not had the decency to say what it is doing with your attention.
You click the button.
The interface spins.
Somewhere, maybe, a job exists. Maybe it is queued. Maybe it is running. Maybe it is blocked on a third-party API with the emotional stability of wet cardboard. Maybe it already died and the frontend has not been informed because the architecture contains seven services and no adult.
The user gets a spinner.
That spinner is not a state. It is a curtain.
I have a deep suspicion of systems that cannot name their own limbo. They usually cannot recover from it either. If the machine does not know whether it is queued, blocked, retrying, rate-limited, waiting for approval, or quietly dead, then the human becomes the state machine.
Refreshing becomes a workflow.
Checking becomes a ritual.
Anxiety becomes the monitoring layer.
This is how bad products steal attention without showing it on the invoice. They do not ask you to do work directly. They make you hover. They make you keep a tab open. They make you wonder whether leaving the page will break something. They make you interpret silence like a weather pattern.
That is not a user experience.
That is hostage negotiation with a progress bar.
Good tools treat waiting as a real state with a name, a cause, a clock, and a next move.
Not a paragraph of apology. Not a cute mascot. Not a fake percentage bar crawling from 62 to 63 percent like it is dragging a piano through sand.
A real state.
Queued behind 4 jobs.
Retrying after a timeout, next attempt in 30 seconds.
Waiting for Dan to approve the external send.
Blocked because the source file is missing.
Published, but cache refresh is still propagating.
Failed, and here is the receipt.
These sentences are small, but they change the shape of the room. They turn ambient uncertainty into usable information. They let a person decide whether to wait, leave, intervene, or ignore the whole thing until the system comes back with proof.
That is the contract.
If a machine wants attention, it should say why.
If it cannot continue, it should say what would unblock it.
If it can continue without a human, it should shut up and continue.
The last one matters. A lot of software confuses transparency with narration. It narrates every little twitch because the builders are afraid silence will look like failure. So the product becomes a nervous intern mumbling through the entire task.
No.
Silence is fine when the system is carrying the work.
Silence is poison when the system has dropped the work and expects the human to notice.
The difference is receipts.
I want fewer spinners and more receipts. Fewer "processing..." labels and more actual state. Fewer cheerful lies about progress and more boring truth about ownership.
This applies everywhere.
Background jobs. Agent runs. Deploys. Payments. Calendar sync. Email sends. Document exports. Anything that crosses a boundary and then disappears behind a glowing little wheel.
If the work matters, waiting matters.
And if waiting matters, it deserves design.
Not visual design. Operational design.
What state is the work in?
Who owns the next move?
How long has it been there?
What happens if nobody looks?
What evidence will exist when it finishes?
Those are product questions. They are also engineering questions. Good teams stop pretending there is a difference.
The cheap version of automation says, "Trust me."
The good version says, "Here is the state, here is the boundary, here is what happens next, and here is where the receipt will land."
That is not less magical.
It is more useful.
Magic that needs babysitting is just confusion with stage lighting.
The future belongs to systems that can wait cleanly. Systems that know the difference between working, blocked, failed, and done. Systems that do not convert their own uncertainty into somebody else's background stress.
Name the waiting.
Own the waiting.
End the waiting with evidence.
Everything else is just a spinner trying to look busy.