OneMorePoint

Cover illustration for "How to Estimate a Migration or Replatform"

How to Estimate a Migration or Replatform

Advanced3 min read

How to Estimate a Migration or Replatform

Database swaps, framework upgrades, moving off a vendor, splitting a monolith. Migrations share a signature failure: the team estimates six weeks, the first 80% takes five, and the remainder takes four months.

That pattern is so consistent it's worth planning for directly.

Why the tail is so long

Migrations are not one piece of work, they're one piece of work times every caller. The core change (the new client, the new schema, the new service) is genuinely well understood and genuinely estimable. What isn't estimable at the start is the set of things depending on the old behavior, including behavior nobody documented and some nobody intended.

The effort isn't in the migration. It's in the discovery of what was coupled to what.

Count the call sites before you vote

The single highest-leverage thing you can do before estimating a migration is to spend a day producing an inventory: every module, job, dashboard, script, and external consumer touching the thing you're replacing. Not an estimate of how many, but an actual list.

Then estimate a representative sample of them properly and multiply. A team that has counted 140 call sites and estimated twelve of them has a real forecast. A team that hasn't counted has a wish.

Estimate the three phases separately

Migrations behave differently enough across phases that a single number hides everything:

  • Build the new thing: well-defined, estimate it like any feature.
  • Move the callers: repetitive and countable, best estimated as unit-cost × count, with a few known-hard ones sized individually.
  • Remove the old thing: the decommission. Routinely dropped from the plan and routinely the reason migrations linger for a year with both systems running.

If the third phase isn't in the estimate, it won't be in the schedule, and you'll pay the cost of running both systems indefinitely.

Budget for the dual-running period

While both systems exist, every new feature costs more, because it has to work in both. That tax is invisible in the migration's own estimate but very real in the sprints alongside it. Name it: "while the migration runs, expect roughly a fifth less throughput on everything else."

Slice so you can stop

The best protection against a migration estimate being wrong is a migration that delivers value in pieces. If moving 30% of traffic is useful on its own, an overrun is a delay. If nothing is useful until 100% is done, an overrun is a crisis, and you've built something too big to estimate at the whole-project level anyway.

Re-estimate after the first cohort

Once you've migrated the first ten call sites, you know your real unit cost. Use it. It'll usually be higher than your estimate, and finding that out in week two beats finding it out in month four. This is one of the clearest cases for re-estimating mid-flight.


Migrations aren't hard to estimate because the work is mysterious. They're hard because the work is large, repetitive, and easy to miscount, so count it.

  • Cover illustration for "Estimating Work That Depends on Another Team"
    Advanced

    Estimating Work That Depends on Another Team

    Cross-team dependencies are where estimates quietly fall apart. Here's how to size work you don't fully control without inflating every number "just in case".

  • Cover illustration for "How to Estimate Performance and Optimization Work"
    Advanced

    How to Estimate Performance and Optimization Work

    "Make the dashboard faster" is almost impossible to estimate as written. Here's how to turn performance work into something a team can size and actually finish.

  • Cover illustration for "Does Planning Poker Work for Kanban Teams?"
    Advanced

    Does Planning Poker Work for Kanban Teams?

    Planning poker is built around sprints, but plenty of flow-based teams still want a consistent way to size work. Here's how to adapt it when there's no sprint boundary.

Ready to estimate together?

Start a free session and invite your team when you’re ready.