Before jumping into the code
As a developer, we have always jumped right away into the code when our lead tells us that we need to create some application. We always like to setup our envirnonment the way we like, we start using all tools we always like to use, create our repositories, design our models, start creating the UI according to a design, etc. But what we don't know is what happens before that process.
Setting everything up
One of the very important things when starting a new project is have the same picture as our client has. This means that we need to be on the very same page so we can bring that idea into real life. We need to sit down with our client and ask several questions about the project needs and explain him all details and scenarios we can find during the development process. He needs to explain in detail what are the boundiaries and scope of the project and we need to understand them.
I like to create a document where we state everything in detail and that our client is aware of. In there we need to identify all features and needs of the project and write them down, if possible we could write the data model, the way we will connect to a backend, all persistent data, objects and structures that will be requiered. We need to cover as much as we can. We have to express that what he wants is what we will do, nothing less .. nothing more.
With this practice I belive that many future problems will be avoided because the client and us will be aware of what and when the things are going to be made. Of course we need to be a bit flexible on different aspects of the project, but this is a very good technique to handle bad communication and bad situations.