From Idea to MVP: Building Real Products as an Engineer
A founder-minded engineer's playbook for shipping MVPs that survive contact with reality.
The gap between "I have an idea" and "a real user just paid us for this" is mostly a fight against your own taste. As an engineer, you want to architect. As a founder, you need to ship. The MVPs that survive are built by people who can hold both impulses in tension without letting either one win completely.
Here is the loop I run, more or less every time.
1. Write the smallest honest story
Before I open an editor, I write the user's story in three or four sentences. Who they are, what they were trying to do, what they did instead, how the product changed that. If I cannot write it cleanly, the idea is not ready — and no amount of code will save it.
2. Build the spine, not the skeleton
The first version should do exactly one thing end-to-end, with real data, in a real environment. No fake screens, no "we will wire this up later." One flow, fully connected: auth, data, action, result, persistence. Ugly is fine. Disconnected is not. A spine you can extend beats a beautiful skeleton you cannot.
3. Use boring technology on purpose
At MVP stage, I default to the stack I already know cold: Next.js, FastAPI or Node, Postgres, a queue if I truly need one. The novelty budget goes into the product, not the infrastructure. Every new technology in the stack is one more thing that can break at the worst possible moment — usually a demo.
4. Ship to a real person within two weeks
If nobody outside the team has touched the product in two weeks, the loop is broken. Real users say things you cannot predict. They click in the wrong order, misunderstand the empty state, and ignore the feature you were most proud of. That feedback is the actual product, and you only get it by shipping.
5. Delete more than you build
The second version of a feature is almost always smaller than the first. Be ready to throw work away. The goal is not a portfolio of code — it is a product that earns the right to exist.