At the inception of any project, the development team and their customers should spend some time discussing and reviewing how they will work together over the course of the effort.
This may seem obvious, and yet in my experience development teams and their leaders often seem to take it for granted that their customers will readily fall in line with whatever approach they currently favor.
It is good to remember that your customers are not bit actors, to be handed a script and told to learn their lines, but your patrons and partners, on whom you are heavily dependent if you are to enjoy any success at all.
All of the following factors are variables that should be discussed and explicitly negotiated with your customers.
Availability – Who will be available, and how much time will they have?
Decision-making – Who will be authorized to make various sorts of decisions, and will these decision-makers be individuals or boards?
Documentation – How much and what kind of documentation will be produced? Who will be responsible for authoring which documents? What level of detail is expected, and what level of formality is expected for approvals? Where will the documents be stored, and who will act as librarian?
Domain expertise – Will customers expect developers to have some background in the problem domain being worked, or will customers bring all of that sort of knowledge to the table?
Requirements precision – Will customers be supplying precise requirements, to be followed to the letter? Or will they be describing general needs and desires, for the development team to use only as a starting point?
Gates and Reviews – What sorts of project reviews will be held? Who will lead these, who will attend, what material will be presented, who will prepare it, and what decisions will be made? Will there be firm gates at which certain approvals will be needed before the project will be allowed to proceed?
Testing – What sort of testing and validation will customers be performing on the working software, and how much time will it take?
Timing – At what points in the project will customers need to be available for what sorts of activities?
The development team and its leaders may wall have strong opinions, firm expectations, and even defined processes that prescribe answers to all of the questions above. But if your customers are unable or unwilling to comply with such direction, then none of that really matters. Your development is not likely to proceed smoothly if your customers feel like they are being treated more like hostages than like partners.
It’s best to discuss all of these issues early on, and reach some documented agreement on how you and your customers will be working together over the course of the project. Without such discussion, it’s likely that your project will suffer from later misunderstandings that will cause delays at best, and broken working relationships at worst.