EngageCustomers

Closely couple the Customer role to the Developer and Architect, not just to QA or marketing

Definition

Closely couple the Customer role to the Developer and Architect, not just to QA or marketing.  Encourage communication between customers and key development organization roles.

Source

Engage Customers

Discussion

This is a milder version of the XP core practice of having the CustomerOnSite.  Another modern specialization of this pattern is JointApplicationDesign. 

 

You can't know all the requirements up front, so developers need to keep going back to customers for more information, and customers need to keep coming back to developers with their insights, particularly when developers BuildPrototypes or do a delivery as part of a sequence of EarlyAndRegularDelivery.  Typically there are three passes at each ‘requirement’.  The first pass gathers information sufficient for scooping and estimation, the requirement is a placeholder for later discussion.  At some time prior to starting development, the details of the requirement are captured.  As development proceeds and the developer gets a first clear detailed picture of the problem, he will want clarification of some details to enable him to make appropriate choices during detailed design and implementation.

 

Changes and additions to requirements occur even after design reviews are complete and coding has started.  This can be prevented only with the most rigorous of development processes, and if we were to disallow changes, then we would not deliver what the customer wants.