Agility Requires Active Customer Involvement

A technology company somewhere in the Southwest contacts its software development outsourcing partner to request a new application. After learning basic details about the application, the development team leader must then decide how to set the project up. Will the team use the waterfall model, or will they opt for agile software development instead?

A team that regularly uses agile software development usually does so for several reasons. First, agility makes it easier to remain flexible throughout the development process. Second, agile software development tends to be leaner and more cost-effective. And third, agility is designed to keep the customer actively involved in the process from start to finish. This third component is critical if agility is to offer maximum benefit.

Customer involvement is really at the core of agile software development. By keeping the customer actively engaged, software developers find it easier to make sure the project is always moving in the right direction. The waterfall approach to software development is counterproductive in this regard because customer involvement is not active. It is passive, if it exists at all.

Treating the Customer like a User

In a typical waterfall environment, it is possible to get very valuable feedback through the testing process. Groups of consumers that represent a particular demographic can use the software, test its capabilities, and offer their feedback at the later stages of the development process. But because waterfall development is based on cascading stages that all follow previous stages incrementally, testing has to be limited to milestone completion. Agile software development is not restricted in that way.

In an agile environment, the customer is actively engaged as a development partner throughout the process. Even before developers reach a point of being ready to test software with users, the customer has already tested various aspects of the software. In that sense, the customer is a ‘micro user’ who gets to participate in determining the direction of the project as it goes. Rather than being an end-user, the customer is a development tester offering immediate feedback that will help shape the project moving forward.

Keys to Active Customer Involvement

Now that we have established how important active customer involvement is in agile software development, it is important to note that there are helpful and not-so-helpful ways to engage customers. The eight keys to successfully engaging customers are as follows:

  1. Excellent Communication – Team members and customer representatives need to be clear in communicating all requirements and expectations.
  2. Establishing Priorities – Customer priorities must be established at the start of the project; they can be evaluated and adjusted along the way.
  3. Developer Accountability – Every member of the development team needs to be accountable to the customer.
  4. Iteration Testing – The customer should have the opportunity to test the software in each of its iterations.
  5. Progressive Development – With every iteration, the software should be more functional and easier to use.
  6. Respect for Deadlines – Nothing kills active customer participation more than missed deadlines. If you want to keep them involved, respect deadlines at every stage.
  7. Complete Transparency – Customers appreciate transparency. Don’t try to hide anything, or it could come back to bite you in the future.
  8. Team flexibility – Agile software development is, by nature, flexible. Maximum flexibility is necessary to keep customers happy.

If agility is to be cost-effective and efficient without sacrificing the quality of the end product, the customer has to be involved in the development process. If the development team limits customer involvement, they might just as well abandon agile software development and work in the waterfall model instead.