- The old time-cost-quality triangle doesn't fit startup-speed teams; the real trade-off is features vs technical debt vs product debt.
- You can't max all three. Every sprint is an intentional imbalance.
- There is no perfect centre dot; the skill is choosing your imbalance on purpose and naming the lever you pulled.
- Make the trade-offs visible so product, engineering and leadership share one language.
Good, fast, cheap — pick two. That old line is shorthand for the classic project management triangle: time, cost, quality. It has guided delivery teams for decades, and for a certain kind of work it still holds. But it was built for a world where you could throw money or people at a problem to buy your way out of a corner. Most product teams, especially in startups, scale-ups and the SMEs trying to act like them, don't live in that world. For them, time-to-market isn't a constraint to manage. It's the battlefield. The biggest risk isn't overspending. It's never shipping at all.
So the old triangle quietly stops being useful. When you're four people deep into an MVP build, with a fixed runway and users already knocking, nobody is debating cost buffers or sliding timelines. You're making a different set of decisions, sprint after sprint, whether you name them or not. The Delivery Dynamics Triangle names them. Its three corners are features, technical debt and product debt. Like any triangle worth the name, you cannot max out all three.
From iron triangle to iteration triangle.
The iron triangle answers the question "how do we deliver this scope on time and on budget". That's a project question. Product teams under uncertainty are asking something else entirely. In any given sprint the live questions are: do we include this feature, or ship without it. Do we architect this properly, or make it work now and refactor later. Do we polish the flow, or rough it out and see what actually lands with users.
Those are the real decisions, and none of them is about cost in the old sense. Each one is a trade between three things you genuinely cannot have all of at once. That's the triangle that actually governs how modern products get built, so that's the one worth drawing.
Corner one — features: what makes the cut.
Every feature carries a cost beyond the build: in code, in complexity, in the context-switching it forces on the team. More features means more scope, more interdependencies, and usually more opinions in the room. The lever works like this: when you prioritise shipping features, you pay for them somewhere else. Either you accept a messier codebase (technical debt) or a rougher experience (product debt) to hit the date. There's no version where the extra feature is free.
Corner two — technical debt: speed now, cost later.
Quick hacks, skipped tests, an integration held together with tape. All of it buys velocity today and bills you later. Sometimes that's exactly the right trade, because "later" is a luxury you have to earn by surviving now. The lever: keeping the codebase genuinely healthy usually means shipping fewer features, or letting the experience stay rough, so engineering has room to do it properly. Taking on debt isn't a sin. Taking it on by accident, with no plan to repay it, is. (When "we'll add tests later" finally runs out, see N°29 · The Quality Piece.)
Corner three — product debt: the UX corners cut.
Product debt is the gap between the experience the user should have and the one they actually get: the inconsistent flows, the bare-bones onboarding, the missing empty states and feedback that you told yourself you'd come back to. It's the least-tracked of the three because it doesn't throw errors; it just quietly erodes how much people trust and return to the thing. The lever: investing in the experience now means either dropping features or taking on technical debt to make it good quickly.
Why the model matters.
Every early-stage team lives in trade-offs. The problem is that most of those trade-offs are invisible, made implicitly, under deadline pressure, by whoever happened to be in the standup. The triangle's whole job is to drag them into the light and make them sayable. Instead of the after-the-fact grumbles ("why is this release so rough", "can't we just build the whole flow", "why are bugs stacking up"), you get decisions stated out loud, on purpose:
- "We traded polish (product debt) for functionality this sprint."
- "We're consciously taking technical debt to validate demand before we invest in the infrastructure."
- "We're shipping fewer features to keep the quality bar where it needs to be."
That's the real value: a shared language across product, engineering and leadership that cuts through the noise. A trade-off everyone can see is a trade-off everyone can argue about, schedule, and pay back. An invisible one just turns into resentment three sprints later.
There is no centre dot.
The most common failure isn't picking the wrong corner. It's refusing to pick at all: aiming for the impossible middle of the triangle, where you somehow get every feature, a pristine codebase and a flawless experience, all at once, on the same runway. That dot doesn't exist. What exists is a position inside the triangle, leaning toward the corners you chose. The teams that ship well aren't the ones who avoid imbalance. They're the ones who choose it deliberately:
- Want speed? Trim features, accept some debt, ship, then learn.
- Want resilience? Cut scope, keep the code clean, iterate deliberately.
- Want wow-factor? Focus the experience, skip backend perfection, delay the features few people will touch.
It's your triangle. Pull the right levers for your context, but know which ones you're pulling, and why. This connects directly to the discipline of not spending: the point of an intentional imbalance is to get something real in front of users cheaply, learn from it, and rebalance next sprint. Imbalance is only smart if you're using it to buy learning.
How we use this at Product Pieces.
When we walk into a team that feels stuck, the trouble is almost never that they made the wrong trade. It's that they never named the trade at all. Features got prioritised by whoever shouted loudest, technical debt piled up with no ledger, and product debt was invisible because nobody owns it. The result is a team that feels slow and can't say why.
Our first move is to make the triangle explicit: to put the current sprint's position on it, out loud, and get product, engineering and leadership to agree on where the dot actually sits. Most of the disagreement evaporates once everyone is looking at the same three corners. The second move is to make sure the debt has a repayment plan: technical debt tracked like any other backlog item, and product debt tracked with the same seriousness rather than left to quiet decay. We'll come back to how to manage product debt like tech debt, including repayment cycles that don't kill momentum, in a later issue. For now, the win is simpler: name the trade, agree the position, and stop pretending the centre dot exists.