Client Present
"Clients do not expect you to be perfect. They expect you to fix things they have done wrong." - Donald Porter, Vice President of British Airways.
Writing specifications takes a very long time and they do not communicate effectively, to the point that few people actually read them in full.
A common objection to having the client present is that they will only request what interests them and not think about the business as a whole. This is the responsibility of their job and other business-related individuals, and it can happen regardless of their presence.
Having only a business representative (or not having a client) can be problematic, as it can lead to the development of useless features and unrealistic acceptance criteria. Ideally, you should always have someone who will actually use the functionality being developed close by.
- What to do when the client cannot be present?
It is necessary to maximize communication by seeking other technological and development process alternatives. Make full use of phone communication and virtual meetings.
This principle emphasizes the importance of having the client or a representative of the client directly involved in the software development project continuously and actively. Having the client present has several benefits and implications in XP:
Immediate and Continuous Feedback: With the client present, the development team can obtain immediate feedback on the features being developed. This allows the team to better understand the client's needs and expectations and make quick adjustments when necessary. Continuous feedback helps avoid unpleasant surprises at the end of the project.
Requirement Prioritization: The client is responsible for setting the priorities of the features. They can help the team decide what should be developed in each iteration and which features are most crucial for meeting business needs.
Reduction of Misunderstandings: Having the client present helps avoid misunderstandings and misinterpretations of requirements. Direct communication with the client allows the development team to clarify doubts and better understand the context of the features.
Informed Decision-Making: When the client is present, they can make informed decisions about the project, such as including or excluding features, changing priorities, or adjusting the scope. This prevents the team from making decisions on their own without client involvement.
Trust Building: Continuous client involvement helps build trust between the development team and the client. When the client sees the progress and quality of work up close, they feel more secure and satisfied with the project's progress.
Agility and Adaptation: Having the client present allows the team to be agile and easily adapt to changes in requirements or priorities. This is crucial, as requirements often change during the software development process.