Paving the Street

Every development effort is unique. Different customers have different ways of interacting with the development team, and different products require different types of interactions. The following techniques are by no means exhaustive, but they provide a starting point for developing a collaborative relationship between the customer and the team.

Designate a Product Owner

Each product should have a champion, typically called a product owner, whose job is representing the customer’s needs during the development cycle. The product owner is the voice of the customer, and it is his job to define value from the customer’s point of view for the development team. A product owner often is responsible for maintaining the prioritized requirements and acts as a common point of contact for the development team and the customer.

Some development teams are lucky enough to have a full-time, on-site customer to fill the product owner role. However, most teams will have only periodic contact with customers, or, in the case of mass-produced products, the customer will not be a single entity but rather a disparate collection of users. Whether on-site customers or proxies, product owners must understand the needs of the customer and the business domain of the solution being developed. Furthermore, product owners must avoid conflicts of interest when championing the customer’s point of view, so they should not be members of the development team.

Engage the Customer in Writing Requirements ...

Get The Art of Lean Software Development now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.