skip to content

The Cost of Leaving

Leaving priced as a project: data charged on the way out, proprietary parts rewritten, both platforms paid through the overlap, and a running commitment. Asked because the estimate always misses one.

on this pageshow

questions

4

A migration off one platform is budgeted purely as engineer-months to rewrite code — which cost lines does that estimate miss?

level: middleimportance: must knowfreq 64%

answer

  1. leaving has more than one price
  2. four lines, not just the code
  3. bytes out, people, overlap, contract
  4. outbound gigabytes and the weeks they take
  5. months still running on a signed term

basics

~20 s

A rewrite estimate covers one of four exit lines. The others are the outbound data charge plus the weeks the copy takes, both platforms billed through the overlap window, and the months still running on a term commitment.

solid answer

~40 s

Pricing an exit gives four lines, not one. **Data out**: the gigabytes that must move, charged per gigabyte on the way out, plus retrieval charges on anything held in a cold storage tier — and the calendar weeks the copy takes at the throughput you can really sustain. **Rewrite**: engineer-months for the parts built against interfaces the target platform has no equivalent for. **Overlap**: both platforms billed in full until the last consumer is cut over, which is where every other slip lands. **Stranded commitment**: the months still to run on a term you signed for a discount. The rewrite is the only one of the four that lives in the engineering backlog, which is why it is usually the only one anybody estimates.

code

pseudocode · 18 lines
pseudocode
// exit estimate: four lines. rates and volumes are your own inputs.

// 1. the copy is a schedule before it is a charge
copyDays      = (gigabytesToMove * 8) / sustainedGigabitsPerSecond / 86400
overlapMonths = ceil(copyDays / 30) + cutoverMonths + soakMonths

// 2. the four lines
dataOut  = gigabytesToMove   * perGiBEgressRate
         + gigabytesInColdTier * perGiBRetrievalRate
rewrite  = engineerMonths    * costPerEngineerMonth
overlap  = overlapMonths     * (currentPlatformMonthly + targetPlatformMonthly)
stranded = monthsLeftOnTerm  * committedMonthlySpend

exitEstimate = dataOut + rewrite + overlap + stranded

// 3. a slip lands almost entirely on one line
if engineerMonths increases then
    overlapMonths increases too   // two bills, not one

go deeper

for a junior

Recall that leaving a platform is a cost in its own right, separate from the monthly bill you stop paying, and that the charge for moving data out is the usual surprise.

for a middle

Name the four lines and say what each is measured in: gigabytes out, engineer-months, months of double billing, and months left on a term.

for a senior

Show how you would actually produce the number — inventory the data by tier, measure sustained copy throughput, and treat the overlap as the line every other slip drains into.

for a principal

Talk about when the estimate is produced. The same four lines computed before signing a multi-year term buy options that the same four lines computed the week you decide to leave no longer buy.

## Exit cost is a project, not a line on the bill **Exit cost** is the one-off money and calendar time spent moving a workload and its data off the platform it runs on today. It is a different number from the recurring bill, and the two get confused constantly. The recurring bill is what you stop paying once the move is finished; the exit cost is what you spend in order to start saving it. A team that says *we could leave in a quarter* has almost always priced only the part of the move that looks like engineering work. The example worth holding in mind is a media transcoding service with a long archive behind it, being moved off a platform after an acquisition decides to merge two estates onto one. The transcoding code is a few services. The archive is hundreds of terabytes that have been accumulating for years, most of it never read. The decision to merge was made on the recurring bills of the two estates; the number nobody produced is the one-off cost of getting out of one of them. ## The four lines | Line | Measured in | What sets it | What makes it grow | |---|---|---|---| | Data out | gigabytes moved at a per-gigabyte outbound rate, plus retrieval charges on anything in a cold tier | your storage inventory and the platform's published rates | total volume, and how much of it is archived rather than hot | | Rewrite | engineer-months | how much of the system leans on interfaces the target has no equivalent for | behaviour discovered during the port, not at planning time | | Overlap | months, multiplied by two full platform bills | first copy started to last consumer cut over | almost every slip elsewhere in the project | | Stranded commitment | months still to run, multiplied by the spend the term obliges | the contract signed for the discount | nothing — it was fixed on the day of signing | ## Why only one of the four ever gets estimated The rewrite is the only line that arrives as a backlog item. Somebody has to do it, so somebody sizes it. The other three are produced by a price list, a calendar and a contract respectively, and none of those is owned by the team doing the move. The data charge sits with whoever reads the bill. The overlap is invisible until two bills arrive in the same month. The commitment is in a document the engineering team has usually never seen. That is also why the estimate fails in a predictable direction: the missing lines are all costs, never savings, so an exit estimate is biased low by construction. ## The data line, and the direction that is priced Outbound bytes are normally charged per gigabyte; inbound bytes normally are not. That asymmetry is the whole reason the exit is the expensive direction — filling the platform you are joining looks free while emptying the one you are leaving does not. This is a priced asymmetry, not a technical one: the bytes move just as easily either way, and **data gravity** is a bill plus a calendar rather than a physical limit. Two details are routinely dropped. First, data held in a cold storage tier generally has to be retrieved into a readable state before it can be read out at all, and that retrieval is charged separately from the transfer. Second, the copy takes wall-clock time at the throughput the link actually sustains, and that elapsed time is what sets the minimum overlap window. ## The overlap is the residue Until the last consumer has moved, both platforms are billed in full. So the overlap line is not an independent estimate at all — it is the accumulator into which every other delay drains. A rewrite that slips a month adds that month's engineer cost **and** a month of two bills. A copy that runs slower than promised does the same. When an exit estimate turns out to be double, the doubling is usually here. ## Producing a number you can defend 1. **Inventory the data first**, split by storage tier and volume, because the tier decides whether a retrieval charge applies before anything can move. 2. **Measure sustained throughput on a real sample** rather than quoting the link's rating, and convert it to days before promising a cutover date. 3. **Size the rewrite by porting one representative component end to end**, then scale, rather than by counting call sites. 4. **Write the overlap as a formula**, months times both monthly bills, so that every slip discussed in a status meeting has a visible price. 5. **Read the term commitment** and state the months remaining as a separate line, since it is fixed and belongs in the total whatever the schedule turns out to be. State the assumptions next to the number. An exit estimate without its volume, throughput and month assumptions written beside it cannot be re-run when any of the three changes, and all three change.

  • Which of the four lines grows when the rewrite slips by a month?
    The overlap. Both platforms are billed until the last consumer moves, so a month of rewrite slip adds a month of two bills on top of the engineer-month itself. The data line is fixed by volume and the commitment by the term, so slip lands almost entirely on the overlap — which makes it the line to watch once the project starts.
  • Why is the outbound data charge a bigger surprise than the inbound one?
    Because inbound traffic is normally not charged and outbound is charged per gigabyte. Filling the new platform therefore looks free while emptying the old one does not, and the asymmetry shows up only in the direction nobody rehearsed. It is a priced asymmetry rather than a technical one; the bytes move just as easily either way.
  • What does the estimate look like if you move the compute but leave the archive where it is?
    The data line shrinks to whatever must actually move, but the overlap stops being a window and becomes permanent: you keep paying the old platform to store the volume that stays, and pay to read across to it on every access from the new one. A partial exit converts a one-off charge into a recurring one, so say explicitly which volume moves and which stays.

saying these in an interview costs you the question

  • Says the move costs only the engineer time to rewrite the code.
  • Assumes copying data out is free because storing it was cheap.
  • Forgets both platforms are billed in full through the cutover window.
  • Treats a running term commitment as refunded the moment you leave.
  • Ignores that archived data must be retrieved, and charged, before it can leave.
open as a page

An exit plan allots one week to copy a 400 TB media archive off a platform — what makes that estimate wrong?

level: seniorimportance: should knowfreq 52%

basics

~20 s

Sustained throughput sets the copy time: 400 TB at a steady 1 Gbit/s takes about 37 days. Archived objects must first be retrieved to a readable tier, and both the retrieval and the outbound gigabytes are charged.

open as a page

Rewriting the proprietary parts of a system is estimated in engineer-months — why is that number systematically low?

level: seniorimportance: should knowfreq 44%

basics

~20 s

The estimate counts call sites, while the work is rebuilding what the component did behind them — retries, ordering, durability, scaling and the operational tooling around it. Those were the reasons it was adopted, and they are discovered during the port, not before.

open as a page

A term commitment has eighteen unused months left and the team has already chosen to leave — when do you actually cut over?

level: principalimportance: should knowfreq 36%

basics

~20 s

Start from whether the remaining months are owed regardless. If they are, they are not a reason to wait — the real comparison is the cost of carrying a rejected platform for eighteen months against the value of consolidating now, with the stranded amount as a fixed line in both options.

open as a page