The purposes of the minimum viable product, MVP, as per Wikipedia:
- Be able to test a product hypothesis with minimal resources
- Accelerate learning
- Reduce wasted engineering hours
- Get the product to early customers as soon as possible
- Base for other products
- To establish a builders abilities in crafting the product required
These are all well and good, but from my perspective the most important benefit of building out and launching a minimum viable product is something else: Keeping up momentum. Momentum is always fleeting and is critical in the sustained building process. When momentum is lost, teams lose energy, time is wasted, and people drag. Product launch and iteration momentum is the best way to ensure enthusiasm and energy, and a happy workforce.
I think people downplay the importance of momentum because it is intangible and overly human. In our field of pseudo-determinism and "measurables", people avoid getting caught up in the wishy-washiness of psychological momentum, but it is everything. When I played sports, we called it "Mo" and it was everything.
Momentum can come from different sources, but launching is the best. Whether we are launching to ten people or ten million people, it amazing for generating the feeling of progress and the energy required to keep up the slog. Key to the whole thing, though, is balancing the need for momentum with the requirement of writing maintainable code, because we cannot think only in the short term. Accruing too much technical debt is the easiest way to gather cheap momentum now while assuring it will all but vanish in the future. If we acknowledge the psychological benefits of the MVP, it is easier to emphasize other benefits to long-term psychological health, like allocating time for manicuring the test suite and methodical refactoring, things often pushed aside for momentary speed. This is where the idea of the minimum viable product comes into play. We pare down the features so that we are capable of launching a thing while also creating a bedrock for future growth. There may be a time and a place for "writing one to throw away", but this is not a sustainable practice the way that building out the MVP is.
Mo is ðŸ”‘
What happens when you’ve reached the point in your software development journey where you’re ready to develop your own projects? Where and how do you start? Do you rip open a code editor and hope for the best?