I advocate for early and continuous involvement of users in the design process as a way to align teams and minimise risk.
A user-centered design process offers the flexibility of solving problems in a variety of ways and never runs the same way twice. The goals and scope of every project define a different amount and diverse type of work. Nevertheless all projects share the following main phases:
Research guarantees a deep understanding of users, their goals, motivation and barriers, and the context of use. Data from different sources is gathered and analysed to support informed decisions.
This phase starts with a brainstorming or other idea generation/creativity technique. Define user and organizational requirements on the basis of the data gathered in the previous phase, creating a common understanding of the problem that has to be solved.
The right moment to create scenarios, to sketch, wireframe, prototype, and test a solution. Define the information architecture, navigation patterns, user flows. And in between always test.
The delivery phase is not the end of a project. Questions have to be answered: "Does the project meet requirements?", "How about user expectations?"
Iteration should not be only a buzzword but an actual practice. Thus iterate and improve.