What I cut from my MVP to ship it in weeks, not months
The first version of my last MVP had a feature list that would have taken months. I shipped something in a few weeks instead, mostly by deleting things I was sure we needed. Here is what went, and what I regretted. Accounts and roles I had planned an admin panel, team invites and three permission levels. The first users were a handful of people I knew by name. I gave them logins by hand and kept…
My initial Minimum Viable Product (MVP) contained a feature set that would have required months to develop. However, I successfully shipped a minimal version in just a few weeks by removing many of the planned features. Here's what I discarded and what I later missed:
Features removed:
- An admin panel
- Team invites
- Three levels of user permissions
I initially planned to create an admin interface, allow users to invite others to join their team, and implement three different permission levels. These were all features I intended to provide for the first users who signed up. However, I chose to keep those early users close by hand-picking their logins and tracking their access levels in a spreadsheet. Handily, this decision allowed me to identify which features were most useful to them without the need for a complex system.
Omitted settings:
- I had mapped out numerous configurable options, but in the end, I settled on sensible defaults and hardcoded them. When two users requested the same adjustment, that decision became the first official setting in the product.
Omitted payment integration:
- I did not implement a checkout system for the initial launch. Instead, the first customers who wanted to pay received an invoice via email. While it may have felt a bit awkward at the time, this approach allowed me to quickly discern which prospects were genuinely interested in the product.
Notifications omitted:
- Both email and in-app notification systems were planned, but I opted to manually send updates for the first few weeks. This hands-on approach not only reduced development time but also enabled me to engage directly with users, which proved to be the most valuable aspect of my initial launch.
Features retained:
1. Core workflow: The core workflow that users came to rely on remained untouched. This was the primary reason users chose my product, and I ensured it was executed flawlessly.
2. Error logging: I kept comprehensive error logging in place. This was crucial for identifying and fixing issues promptly, ensuring a stable user experience.
3. Backup system: Data protection was a top priority, so I maintained a backup mechanism to safeguard user information and prevent data loss in case of any mishaps.
What I regretted cutting:
- Basic analytics: To save time, I initially skipped implementing any basic analytics. Consequently, I spent several weeks guessing which features users interacted with the most. Next time, I would prioritize adding even a rudimentary analytics system to gain insights into user behavior.
- Search functionality: I underestimated the needs of heavy users and initially decided to forgo search capabilities. However, within the first month, I encountered a few power users whose work depended on searching within the product. Had I included search from the beginning, I could have better supported these users.
The rule I established:
If I could perform a particular task manually for the initial group of users, it remained outside the codebase. Conversely, if omitting a feature could result in data loss or conceal errors, it stayed within the code.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.