Design user flows, information architecture, and interaction patterns before writing UI code — map the user's journey, decision points, and edge/error states. Use whenever starting a new feature or product, when the user asks "how should this flow work", or before building any multi-step process (onboarding, checkout, wizards).