The intersection of the answer to all the three questions below:
Identify and understand the problem that we are trying to solve and its impact on the user experience. A significant amount of time is spent in this step.
Once we reach a clear understanding of the problem and have defined the goals, it's time to get to the drawing board and chalk out various design options by creating mock-ups, storyboards, task flows, and user journeys. Focusing on the user-centered principle, come up with viable options.
After we agree on viable design options we proceed to create design prototypes. These prototypes(either low or high-fidelity based on the budget) will help us understand the expected behavior of product in the real world. We review, agree or disagree, redesign or approve the prototype.
Once the design prototype is finalized, proceed with the development and user testing.
This is the most vital and exciting step in the process. We started with understanding user needs and end with fulfilling the same. Based on the finished product feedback we either we go back and iterate relevant steps as needed or launch the product live.