Uncle Bob on technical debt:
A mess is not a technical debt. A mess is just a mess. Technical debt decisions are made based on real project constraints. They are risky, but they can be beneficial. The decision to make a mess is never rational, is always based on laziness and unprofessionalism, and has no chance of paying of in the future.
And while technical debt is being mistaken with a mess, Minimal Viable Product is often mistaken with a Half-Assed Product.
I’m a big believer in the lean startup, and pushing the bare minimum when launching or releasing new features, but often the mandate to deliver MVP is used as a shield to take shortcuts or push something that sort of works—”we need to deliver the MVP now; we’ll fix it later.”
MVP means you won’t deliver every feature on day one. It means there will still be room for your product to grow. It means what you do deliver is your very best. Yes, finding and defining the MVP is really hard work. You need to fundamentally understand your customers and the problem set you are aiming to solve for them—not hack and slash away at the feature set at random.
While it is cliché to use Apple as an example, they have truly mastered the art and science of the MVP. They purposefully hold features back in order to focus on the core product experience. They didn’t take a shortcut with copy & paste on the iPhone—they consciously held on to it until it was ready. They didn’t sort of deliver a developer toolkit with the first iPhone—they encouraged developers to build web apps, a first-class experience on the original iPhone. For everything that Apple did deliver, they delivered beautifully.
MVP is not a license to produce a HAP; it is a call to action—to roll up your sleeves, get to work, and focus on what really matters.