Tips for integrating user experience and agile development
There is a crisis in the software world! Well, I’m not sure if you can call something a crisis when it has been going on for more than 15 years — but let’s call it that. The annual CHAOS reports first released by the Standish group in 1994 showed that in the US about one third of software projects are cancelled and about one half are 200% over budget. The bottom line: annual direct costs of such software failures are estimated at $140 billion.
Many companies responded to this by imposing stronger process control mechanisms with comprehensive documentation and formalized hand-offs between functional groups. This has worked in some domains but has failed badly in others. I believe that plan-driven, waterfall methodologies may be applicable when the human costs or capital costs of failure dominate — such as nuclear reactor safety systems or international space stations. But such processes foster functional silos and formalized communications which can actually make the situation worse. Worse, because such processes struggle to keep pace with technology changes and competitive pressures.<
The agile community offers an alternate approach. Put together a cross-functional team including the key product stakeholder, developers, interaction designers, Q/A, project managers, and so on. Have them work together from requirements through to functioning software on a weekly basis. Empower them to choose the tools and processes that work best for them. This is really a tough way to produce software — but it works.
Now how does traditional user experience fit in with all this? I see three key challenges:
- Agile teams focus on stakeholders, designers focus on users.
- Agile teams focus on technical issues, designers focus on usability.
- Agile teams focus on modeling just-in-time, designers model up-front.
There is a tremendous opportunity to close the gap between these perspectives and I offer a few suggestions for an interaction designer on an agile team:
- Infuse user experience issues and approaches into the team — train them, let them know your world.
- Be the user advocate and lobbyist, especially with the product stakeholder.
- Use personas — make them physically visible and make sure they are present as the actor in every agile user story.
- Introduce user experience guidelines — good agile teams will follow them if you can show the value.
- Do just-enough user experience modeling — look for minor course corrections rather than Eureka moments.
- Use light-weight tools — whiteboards, index cards, pen and paper.
- Be a generalizing specialist — do whatever you can to help the team follow the agile mantra and “do the simplest thing that could possibly work.”
(via Alberto Mucignat)