Comparisons

Pairs engineers genuinely confuse — goal and implementation, MVP and bad prototype, prototype and spike, reversible and irreversible. Neither column wins; what decides is the problem. Each record leads with the confusion, because the confusion is what it costs.

MVP vs bad prototype

What people get wrong about this pair

"It's an MVP" is used to excuse the absence of things an MVP must have — a payment that cannot double-charge, a data model that can be migrated, a login that is not a plaintext password — as if minimal meant careless. An MVP simplifies: one currency, one warehouse, no coupons, a manual refund process. It does not ignore invariants, security or correctness, because a store that charges twice has not proved the core idea; it has disproved the team. The strongest form of the other side is that speed to the first real user is worth a great deal and that a prototype which is never shipped teaches nothing; the honest reply is that the line is not "how careful" but "which things", and the things that cannot be simplified are a short, nameable list.

MVP — the smallest version that proves the core idea, with what cannot be ignored kept intact
Use it when

When the aim is to learn whether the core idea works with real users and real money, and to grow from there.

Bad prototype — a version that skipped what cannot be ignored and is now being shipped anyway
Use it when

Never as a product. A throwaway prototype that answers a question and is then discarded is fine; the bad prototype is the one that is not discarded.

AspectMVP — the smallest version that proves the core idea, with what cannot be ignored kept intactBad prototype — a version that skipped what cannot be ignored and is now being shipped anyway
ScopeProducts, cart, order, paymentProducts, cart, and a payment button that sometimes charges twice
What is simplifiedCurrency, warehouses, coupons, search, refunds as a manual processWhatever was hardest
What is never simplifiedInvariants, security, the data you will have to migrateNothing is protected
TestsOn the invariants and the core workflowAbsent, "for now"
What happens nextGrows on evidenceRewritten, or lives forever
Sentence that reveals it"Not V1, and here is why""We will fix that once we have users"