Every “cut it for the MVP” is one of two moves. You either defer a feature or build a throwaway stand-in. Whether either becomes debt depends not on the cut but on the boundary you leave beneath it, and on a vision clear enough to place it.
“Minimum viable product” is one of the most misread terms in product development. People hear minimum and reach for permission to ship something rough. But an MVP is not a license to ship a sub-quality product. As I argued in Scrappiness Incentivizes Sloppiness, sloppy execution feels fast and quietly costs you the sustained speed that actually matters. What an MVP minimizes is not quality. It is scope.
This is the third post in a series on the debts you take on while building a product. The first argued that technical, strategic, and feature debt are tools, not sins, as long as you take them on consciously. The second covered the technology readiness debt you carry when the technology you need isn’t ready yet. Both stayed fairly abstract. This one is concrete, about a decision you make dozens of times while scoping an MVP, often without noticing you’ve made it: what to cut.
“Let’s just cut that for the MVP” gets said in a meeting, everyone nods, and the decision is made in three seconds. But cutting scope is not a single move. Every time you trim something from an MVP, you’re doing one of two very different things, and most teams never notice which one they just made. Confusing them is how a lean product quietly turns brittle.
The first cut is deferral: you leave a feature out of scope and plan to build it later. The second is substitution: you build a deliberate stand-in, something you intend to throw away and replace once you’ve learned what you need to build.
At first glance only one of them is debt. A clean deferral isn’t debt, it’s just scope: debt is something you borrow and have to pay back, and a feature you never built was never borrowed. Substitution is real debt, because you’ve put something into the product specifically so you can replace it, and that replacement is the repayment. The word doing the work there is clean: keeping a deferral clean turns out to be the whole game.
That has a flip side. If a deferred feature is just scope and costs you nothing, then whatever you do keep in scope has to be built cleanly. If authentication is in scope, build proper, secure auth that will carry you forward for the foreseeable future without further thought. That isn’t premature optimization; it’s getting the in-scope requirements right so you can take them off your mind and focus fully on the next thing. Clean execution on what you commit to is what buys you sustained speed.
So far this looks like a tidy binary: defer cleanly, or substitute deliberately. But there’s a catch, and it’s the same catch for both cuts. Whether either one stays safe depends on something underneath the visible choice, and that something, it turns out, is placed by your vision.
Neither cut is new. The literature on iterative and incremental development has a name for each, and it has spent decades pointing out that people conflate them.
Alistair Cockburn drew the line cleanly in Using Both Incremental and Iterative Development
Deferral is the incremental move; substitution is the iterative one. Fred Brooks supplies the cautionary arc for substitution. His famous advice, “plan to throw one away; you will, anyhow,” was about building a deliberate throwaway to learn from. Two decades later he partly recanted, devoting a chapter of the anniversary edition of The Mythical Man-Month to the argument that an incremental-build model beats building one to discard
A single MVP almost always mixes the two, which is why the unit you classify is the individual cut, not the whole product. That also corrects a quiet imprecision in the usual mantra. “Build an MVP and iterate” names only half the work: iterating reworks what’s already there, but just as much of what follows an MVP is incrementing, adding the pieces you deliberately deferred. The fuller version is “build an MVP, then iterate and increment”, and telling which of the two a given cut commits you to is the skill this post is about.
The practical test is one question, asked the moment you make a cut: will I grow this, or throw it away? If you’ll grow it, you’re deferring, and the job is to leave room for it. If you’ll throw it away, you’re substituting, and the job is to keep the throwaway from spreading. Either way, decide deliberately, not with the reflexive “we’ll clean it up later” muttered under a deadline.
Here’s the catch I promised: a deferral can silently become a substitution. “Defer multi-tenancy” but build around single-organization assumptions, and you haven’t deferred anything; you’ve baked a single-tenant architecture in, and retrofitting tenancy later is a rewrite. The absence became a stand-in you never chose.
What separates a clean deferral from that trap is whether you left a seam: in Michael Feathers’ words, “a place where you can alter behavior in your program without editing in that place”
Substitution works the same way. Say you need a machine-learning model you can’t train well yet. Define the target interface now, a versioned ONNX contract, so today’s weaker artifact merely satisfies it and can be swapped cleanly later; versioning the contract even lets the interface evolve as your vision sharpens, without breaking everything around it. The throwaway sits behind a clean boundary, so the rebuild is a swap, not a rewrite. This is exactly the seam the skateboard-to-car analogy I criticized earlier lacked: a skateboard has no boundary to rebuild behind, so “upgrading” it into a car means starting over, whereas a contained throwaway lets you replace only the part that was always meant to go.
Which points at what the two cuts share. Every cut asks two questions, not one. The cut you chose sets what the seam has to do: hold an empty place you’ll fill, or contain a throwaway you’ll swap. The second question is independent, and it’s the one that decides whether the cut is safe at all: does that seam exist?
| Seam present | No seam | |
|---|---|---|
| Defer | clean scope: place held, fill later | accidental substitution: backed into a rewrite |
| Substitute | honest throwaway: contained, swap later | duct tape: stand-in smeared everywhere |
Read down the columns, not across the rows: both cuts are safe with a seam and dangerous without one. A deferral with no seam isn’t really a deferral, you baked the feature’s absence in, so adding it later is a rewrite; a substitution with no seam can’t be thrown away as planned, because the stand-in leaks into everything around it until pulling it out is a rewrite too. Not that every cut needs a seam: a cleanly additive feature can just be deferred with nothing held open for it. But where a cut would otherwise harden an assumption you’ll later have to undo, leaving the seam out is exactly the sloppiness that scrappy teams mistake for speed.
If the seam is what matters, the next question is where to put one, and you can’t seam everything. Even a light seam costs foresight and indirection, and the heavy ones cost real engineering. Seaming everywhere is its own kind of debt: the speculative over-engineering that “you aren’t gonna need it” warns against.
A seam is a bet about where the system will change, and your vision is your best model of where it will change. That is why vision tells you where the seams belong. The principle goes back to David Parnas’s information hiding: hide the design decisions most likely to change behind a module boundary, so a change touches one place instead of many
This is also why the vision has to be falsifiable. A vision vague enough that it can never be wrong can’t tell you anything about where change is coming, so it can’t guide a single seam. A specific vision can be corrected by what you learn, and each correction re-points the seams.
What you’re really foreseeing is not a fixed roadmap but a set of options: a seam is a small premium you pay now to keep the right, but not the obligation, to change a component later. This is the options view of modularity that Baldwin and Clark formalized: a module boundary carries a real option to redesign what sits behind it, worth most exactly where the future is uncertain
A substitution doesn’t come due on a schedule. It comes due when you expand into a new segment that makes the stand-in load-bearing. The hand-tuned rules engine that stood in for a model is fine until you sell to a customer whose cases it can’t cover: that’s the moment to spend the seam you left and swap in the real thing. The rebuild is pulled by the market, not done speculatively.
That is why an MVP needs not just a minimal product but a minimum viable segment: a single, well-defined slice of the market you serve fully today, before rolling into the next one.
So grow your scalability together with your addressable market: each new segment both justifies the rework and tells you what it needs to do. This is no license to build cheap and unscalable: if the “right” scalable version costs little more than the stand-in, or the vision already makes it near-certain, just build it properly now. Deferral earns its keep only when doing it right would cost significantly more. The seams you left are what let you grow into a new segment without tearing the product apart, and the segment tells you which seam to spend next.
The “two cuts” is the part you can see: defer, or substitute. They are genuinely different moves, one adding, one replacing, with different work left to do. But what makes either of them safe is the same thing: a seam under the cut, placed where your vision says change is coming. That is why the same shortcut can be smart scoping for one team and a future rewrite for another. Same cut, different vision, different seam.
That closes the loop on the trilogy. The first post argued debt is a tool you wield deliberately; the second, that technology readiness debt is what you carry when the technology isn’t ready yet; and this one, that the everyday cuts of an MVP turn safe or dangerous on one hidden thing: whether a falsifiable vision left you the seams to grow some parts and replace others, paced by the market you actually serve.
So the next time someone says “let’s just cut that for the MVP,” ask the quiet follow-up: are we deferring this or replacing it, and either way, where’s the seam?
Cutting scope is how you move fast. Leaving seams is how you stay fast.
Here are some more articles you might like to read next:
Subscribe to be notified of future articles: