Real customers, available to answer questions and make decisions in real time.
XP originally called for an on-site customer—a real user or their representative, physically present with the team.
Why so extreme?
Software development is constant decision-making:
If the customer isn't available, developers guess. They guess wrong. They build the wrong thing. Or they wait, blocking progress until they can get an answer.
Available customers:
The cost of a wrong answer caught immediately: minutes. The cost of a wrong answer caught after shipping: days or weeks. Customer availability pays for itself.
The XP customer role comes with both rights and responsibilities.
Customer rights:
Customer responsibilities:
This is a partnership. The customer isn't a distant stakeholder throwing requirements over the wall. They're a team member making decisions daily.
In practice, the "real customer" is often unavailable. They have jobs. They can't sit with developers all day.
Enter the product owner proxy—someone who represents the customer:
The proxy model works when:
The proxy model fails when:
The product manager sits with the team and answers questions throughout the day. They're in the daily standup. They demo to real users every two weeks and bring feedback back to the team.
The product manager attends planning meetings but is otherwise unavailable. Questions pile up in email. Decisions take days. Developers build what they think is right and often guess wrong.
Acceptance tests are how customers and developers verify they understand each other.
For each story, the customer defines acceptance criteria:
These become executable tests. When the tests pass, the story is done. No debate about whether it's "really done."
Benefits:
In modern XP, acceptance tests are often written in collaboration between the customer and developers. The customer describes the behavior; developers help translate to testable form.
Modern teams are often distributed. The "on-site" customer is a Slack channel, a Zoom call, or an async message.
Making it work remotely:
Async customer involvement:
The principle remains: minimize the time between question and answer. Remote work makes this harder but not impossible.
If your customer can't be available synchronously, build async checkpoints into your workflow. Don't start a story without acceptance criteria. Don't finish without customer sign-off.