1. User research and process mapping
I start by understanding what people are actually trying to accomplish, not what a feature list says they should be doing. For an existing process, that means walking through it step by step with the people who use it every day, and writing down exactly where it slows down, where mistakes happen, and where someone has quietly built a workaround because the official process does not work. For a new product, it means asking hard questions about who the user is and what they need to walk away with, before any screen exists.
2. Flows and structure
Once I understand the problem, I map the actual flow: every screen, decision point, and edge case, in order, before any visual design happens. This is where most of the real thinking happens. A flow that looks simple on paper often reveals five hidden branches once you follow every path a real user might take, and it is far cheaper to find that out in a diagram than in production code.
3. Interface design
With the flow settled, I design the actual interface: layout, hierarchy, interaction patterns, and visual language, built for the device it will actually run on, whether that is a phone, a tablet on a shop floor, a desktop dashboard, or a spatial interface in VR or AR. I design for the constraints of the real environment, not a generic screen size.
4. Clickable prototypes
I build a prototype you can actually click through and hand to a real user or stakeholder, well before any production code exists. This is usually where assumptions get tested and corrected. It is much faster and much cheaper to change a prototype than to change a shipped product, and it means the people funding the build get to react to something real instead of a slide deck.
5. Design systems
For anything that will keep growing, I build a design system: consistent components, spacing, type, and interaction rules, so new screens stay visually and behaviourally consistent as the product expands, and so a developer, whether that is me or someone else later, is not reinventing a button style on every new page.