The trade MVPs always face.
Building an MVP is a delicate balance. Move too fast, and you create technical debt that haunts the next year of engineering. Move too slow, and you ship a great codebase nobody uses. The pattern that works is boring choices everywhere except where the product differentiation lives.
Pick boring tooling on purpose.
| Layer | Boring (recommended) | Exotic (high-risk) |
|---|---|---|
| Web framework | Next.js / Rails / Django | Hand-rolled SPA + bespoke router |
| DB | Postgres | Multi-database polyglot from day 1 |
| Queue | SQS / Cloud Tasks | Self-hosted Kafka cluster |
| Hosting | Vercel / Render / Heroku | Hand-rolled Kubernetes |
| Auth | Auth0 / Clerk / Cognito | DIY OIDC stack |
The differentiated piece — your core algorithm, your unique workflow, your novel data model — gets your full attention. Everything else stays out of the way.
The three hinges that decide post-MVP cost.
Keep services to ≤3 at launch — typically web + worker + DB. Splitting earlier costs without benefit.
If you're shipping > 1 schema migration per week pre-launch, scope is too wide. Stabilize, then ship.
Limit to ≤ 3 vendors that own data: hosting, DB, auth. Anything else can swap freely.
What scales, what doesn't.
✓DO
- Pick boring tools at every layer except your differentiator
- Keep service count ≤ 3 at launch
- Build observability in v1, not v2
- Document the architectural assumptions in the README
- Plan the post-MVP refactor up-front (don't defer the planning)
✗DON'T
- Adopt an exotic stack for the resume
- Microservice an MVP
- Defer logging or metrics 'until we have users'
- Build a 'platform' before the product is real
- Pretend the MVP will become the production architecture without rewrite
Plan the post-MVP refactor up-front.
The teams that scaled post-launch had one thing in common: they wrote the post-MVP refactor plan before shipping the MVP. The plan was modest — extract this service, split this table, swap this vendor — but it existed. When the time came, the team wasn't starting from scratch.