Start Simple, Scale With Intention
Building anything new feels chaotic, especially when the idea is still forming. I spent years trying to anticipate every edge case before shipping. It slowed me down and delivered little value. The approach that actually works is a simple staircase: start with the smallest useful version, then layer depth with purpose.
The Four Steps I Use
- Surface: Create a crisp answer to "what problem are we solving?" Capture the job-to-be-done, not every feature on the wish list.
- Generic: Ship the baseline version that works for most paths. This unlocks feedback from real people instead of assumptions from a whiteboard.
- Deep: Instrument, observe, and improve the flows that matter most. This is where the product earns trust.
- Specialized: Only once the fundamentals feel boring do I tailor experiences for specific personas or edge cases.
Designing for Real People
Average users rarely exist. I model for three modes: the novice trying to get unstuck, the practitioner who wants speed, and the expert who needs control. When a new feature proposal arrives, I map it to the people it actually helps. If no persona lights up, we cut it.
Pragmatic Tooling
I codify each step inside a short "runbook" that lists the signals for graduation. The rule of thumb is: graduation happens when real usage consistently breaks the current level. Anything else is a distraction.
Momentum beats perfect planning. Design the next useful layer, ship it, and earn the right to add complexity by watching what people do.