Architecture
Move fast without creating impossible technical debt
The choices that keep an MVP simple, fast and cost-effective when the first users arrive.
The “we’ll refactor later” trap
When a product must ship quickly, it is tempting to stack shortcuts: business logic inside components, endpoints without clear contracts, data duplicated between front-end and back-end. At first, everything works. Then every new feature costs twice as much.
A healthy MVP is not a disposable prototype. It is a maintainable first increment: light enough to ship, structured enough to grow.
Three decisions that pay off early
1. Separate what changes from what does not
Identify stable business rules (billing, permissions, critical flows) and isolate them from UI rendering. Even without microservices, a services/ or lib/domain/ module prevents React from becoming your application database.
2. Types and contracts from day one
Strict TypeScript, validation schemas (Zod or equivalent) at API boundaries, and explicit error messages. This is not over-engineering: it is executable documentation that speeds up onboarding and reduces regressions.
3. Measure before optimizing, but do not ignore performance
A portfolio or B2B SaaS must stay fast on mobile 4G. Optimized images, reasonable bundles, Server Components when interactivity is not required. Performance is a product feature, especially when you sell reliability.
What I deliberately avoid
- Multi-tenant, event sourcing or CQRS before having paying users
- “One day” abstractions without a concrete use case
- Heavy dependencies to solve a problem a dozen lines can handle
In short
Moving fast is not building messy. It means choosing visible trade-offs: postpone the nice-to-have, keep foundations clean, document assumed debt. Your future self — and your first customers — will thank you.
Stay connected
NEW ARTICLES
COMING SOON.
In the meantime, find my latest analysis and field notes on LinkedIn.
Follow on LinkedIn ↗