At last week’s 7-Minute Soapbox in Waterloo, Declan Whelan of Whelan & Associates talked about how to fit user experience/design/usability into an agile development process. I’ve had the pleasure of working as a UX designer with Declan on an extreme programming (XP) project and can vouch for his ideas: thanks to his leadership, that project boasted some impressive metrics in terms of productivity and code quality. Also, I was thrilled to find that most of the developers grew increasingly interested in front-end design issues, often challenging the wireframes or prototypes I delivered and following up with some clever suggestions. That level of teamwork really improved the quality of the product.
Declan provided the following summary of his 7-minute presentation, though I highly recommend you check out the video below so you can see him smoke through 55 slides in the allotted time. Woot!
From Declan: 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.”
Thanks to Slideshare, you can follow the slides as you watch the video.