I migrated our whole setup off a pile of tools onto one app a couple of months ago. For the first nine days I was sure I'd made a mistake.
I want to describe those nine days honestly, because the thing I learned in them wasn't "migrations are hard." It was something about why they feel hard, and why the feeling lies to you at exactly the moment you're most likely to act on it.
What I was leaving
Nothing dramatic. The setup most small operations drift into without deciding to.
A spreadsheet that had quietly become the source of truth. A no-code tool bolted onto it for the parts spreadsheets are bad at. A form service feeding the spreadsheet. And a short stack of automations — the "when this, then that" kind — stitching the whole thing together so it mostly ran itself.
It worked. More importantly, everyone knew it. New person joins, you point at the spreadsheet, they get it in an afternoon. The whole thing had the enormous, underrated virtue of being obvious.
So when I collapsed all of it into a single app — one place, one source of truth, described in roughly a sentence and standing up not long after — I expected relief. One thing instead of five. No more glue.
What I got instead was a week of low-grade dread.
The regret, in the order it arrived
Day one, the muscle memory was gone. I'd reach for the spreadsheet out of reflex and there was no spreadsheet. Every small task I used to do without thinking now needed a half-second of "wait, where does this live now." Multiply that by a day and you feel slow, and feeling slow feels like a bad decision.
Day two, someone asked to "just add a column real quick." And they couldn't. It wasn't a spreadsheet anymore; it was an app with a shape. The old setup would've said yes in four seconds. The new one made you ask what the column was for. That felt like friction. It felt like I'd traded a tool that said yes for one that asked questions.
Day three through five, I missed things I couldn't quite name. The familiar layout. The freedom to make a mess in a corner of a sheet and clean it up later. The particular comfort of a tool I'd known for years. None of it was a feature I could point to. It was the texture of the thing being gone.
By day six I had a rollback plan half-written in a notes file. Not a real one — the escape-hatch kind you write to make yourself feel like leaving is still an option. I was, genuinely, ready to go back.
The thing I noticed on day nine
I was staring at the half-written rollback, trying to list what exactly I'd be going back for, and the list came out strange. Every single item was the same kind of thing.
The column anyone could add in four seconds. The corner of the sheet where you could make a quiet mess. The automation you could rewire without telling anyone. The field you could rename on a whim.
Every one of them was a seam — a place where anyone could change anything, and nobody was watching.
And I knew, with a cold little drop, exactly what those seams had cost me, because one of them already had. Months earlier someone had renamed a field in the spreadsheet — a reasonable, five-second change — and it had silently broken one of the automations downstream. For about three weeks, entries that should have been captured just… weren't. No error. No alert. Nothing broke loudly enough to notice. We found it by accident, long after the ones we'd lost were gone for good.
That was a seam doing exactly what seams do. And here I was, on day nine, mourning the loss of seams. Writing a rollback plan whose entire purpose was to get the seams back.
The flexibility I was grieving was the unwatched glue. The thing I was calling convenience was the thing that had already quietly cost me, and would again, and I'd normalized it so completely that its absence read as loss.
Why the regret shows up first and the payoff shows up late
Here's the part I think generalizes past my little spreadsheet.
When you migrate from a loose thing to a structured thing, you lose the loose thing's affordances immediately and you gain the structured thing's protection slowly.
The losses are loud. You feel every "I can't just do that anymore" the instant you hit it — on day one, day two, day three. They're concrete, they're annoying, and they stack.
The gains are silent by their nature. The whole value of structure is the bad thing that doesn't happen — the field that can't be renamed into a silent break, the mess that can't accumulate in a corner, the change nobody can make without the shape of the app asking "for what?" You never get a notification that says "a disaster was just quietly prevented." You just stop bleeding in a way you can't see.
So the regret curve and the value curve are offset. For the first stretch after any migration like this, you are feeling all of the cost and none of the benefit. That's not a sign you made the wrong call. It's the normal, structural shape of the trade — and if you roll back during the trough, you never find out the trough was the point. You just conclude "that didn't work" and return to the chaos, which welcomes you back warmly, because chaos always does.
Day nine was just the day the first silent save finally outweighed the last loud loss. Nothing about the app changed. I did.
What I'd actually tell you to do
Not "never roll back." Sometimes the migration really was wrong.
But separate the two feelings, because they feel identical and they are not:
"This is worse" vs. "This is unfamiliar." Almost everything I hated in week one was the second one wearing the first one's coat. Unfamiliarity is a cost that ends. Worseness is a cost that stays. Give it enough days to tell which one you've got — and "enough" is longer than your reflexes want, because your reflexes are made of muscle memory for the old thing, and muscle memory is exactly what a migration breaks first and fixes last.
Write down, specifically, what you're rolling back FOR. Not "it feels off." The actual list. When I did, the list indicted itself — every item was a seam I'd be reintroducing on purpose. If your list comes out like mine, you don't have a regret. You have withdrawal.
And ask of each thing you miss: was this a feature, or was it a place nobody was watching? Those look the same from the inside. "I could change anything instantly" is a wonderful feeling and a terrible property. The whole upgrade is trading the feeling for the property, and the feeling fights back for about a week.
Why this is the exact thing I now care about building
One level up, this is the shape of a problem I keep running into, and it's why I build the way I do.
The appeal of a loose, glued-together setup is that it will do anything you ask, instantly, with no one in the way. That's also its failure mode: it will do anything you ask, instantly, with no one in the way — including the renamed field that silently breaks the thing downstream. "No one in the way" is the feature and the bug, same sentence.
So the thing I want isn't "lock it all down." Locked-down is just a different way to lose. The thing I want is a seat for the question the seam skips — for what? what does this break? — built in, so it gets asked every time instead of never.
That's the whole shape of xenition: one app you can hold in your head instead of six you understand only in pieces — and inside it, an author that builds the thing fast, a separate skeptic whose only job is to find where it breaks before it ships, and a human on the button who owns the call. The seam, rebuilt as a seat. The "for what?" the old setup never asked, asked on purpose.
I migrated off the pile of tools and regretted it for nine days. On the tenth I realized the regret was the most useful thing the migration taught me: it showed me, item by item, exactly which conveniences had been quietly costing me the whole time. I'd just never had to list them before.

