Resources: UPA 2004 Idea Markets
How to incorporate
user-centered design into agile development methodology?
Activator: Pawan Vora
Increasing number of development organizations is adopting agile methodologies such as extreme programming, feature-driven development, and Scrum. These methodologies are light-weight and use very short iterative development cycles (1-4 weeks). It's important that usability is interwoven as part of such methodologies. The big question, therefore, is how do we make that happen?
- Is user-centered design methodology different from agile development methodology? If yes, in what respects? If no, why are they similar?
- How can a usability engineer/user interface designer contribute in organizations that follow agile development methodology?
- Do any of the usability practitioners have experience that they can share in terms of what works and what doesn't work when working with teams following agile development methodology?
- Which deliverables will add the most value when supporting agile development?
- What can we do to ensure that usability is not perceived as a hindrance in agile development, especially considering 2-4 week iteration cycle times?
Differences between Agile and User-Centered Design Methodologies
In many instances, the answer is "Yes;" the only instance where the two show similarities is their iterative approach to design. An important difference that contributes to less than optimal designs is the adaptive nature of the agile methodologies. Agile approaches are based on the assumption that software development is not a defined process, but an empirical process -- that is, they are complex, can't be repeated, and require constant monitoring and adaptation. So although the product manager have a vision of the features and functionality the end product should have, the vision must adapt to the changing and evolving requirements of the end customers. In that sense, the long term vision is fuzzy at best.
User-centered design approach, although iterative, believes in an "evolutionary" approach where requirements get continually refined based on customer input and usability testing.
So with agile approaches, you could start out with a vision of an elephant, but end up with building a dog because that's what the customers want; whereas, with user-centered design approaches, you will end up with the elephant, with perhaps very quick reflexes, because that's how the requirements evolved.
Contributing Effectively When Using Agile Methodologies
Prototypes perhaps add the most value when supporting agile development. Therefore, it is extremely important that the usability specialist/UI designer become adept at prototyping when working with teams following agile methods. Because of short iteration cycles, anything usability specialists or UI designers can do to take some burden away from the developers will be welcomed. The better a usability specialist is at prototyping, the quicker it will be for him/her to share it with the team and know how it will impact the development estimates and what trade-offs may become necessary to achieve the iteration goals.
Also, with prototyping, it's better to stay ahead of the development team by at least one iteration. Although there is a risk that requirements could change after the iteration has ended, staying ahead allows the usability specialist to share the prototype with the team and collect feedback to make necessary changes and have it available to the development team at the beginning of the iteration to come up with reasonable estimates.
Another useful deliverable is personas. However, to follow minimal documentation philosophy of agile methods, the recommendation is to create short persona description (no more than a page) and make them available to every member of the team. Doing so helps everyone understand who they are designing the system for. When the time comes for making design trade-offs, knowing who the target user is, the team can make better and faster decisions even without the involvement of the usability specialist.
Finally, having deep domain knowledge can help tremendously when participating on the agile teams. Having deep domain knowledge allows us to even behave as customer proxies on the team and lends credence to our recommendations. (I believe this is true for supporting any development methodology, not just the agile ones.)
Measures to Ensure that Usability is Not Perceived as a Hindrance
There are several measures that we can take to ensure that usability is not perceived as a hindrance in agile development. Perhaps the most important is that we become involved in the daily stand-up meetings. Agile development processes believe that the keys to success in a software development project are communication, co-ordination, collaboration, and knowledge sharing. That's what happens during the daily stand-up meetings for teams following agile methods. UI designers and usability specialists MUST participate in these meetings. That way they know what's planned, what concerns the team has, and what potential adjustments will need to be made to the user interface design. At the same time, the rest of the team can understand the issues the usability specialist or UI designer is facing and what impact the potential changes to the UI will have on the current direction (or even the future direction). By involving himself/herself in the stand-up meetings, the usability specialists/UI designers will be considered (and treated) as part of the team rather then as outside consultants.
Consider Using "Pair" Usability Specialists
Because of the short nature of the iterations and the need for usability specialist to support the current iteration as well as working on the next iteration, usability specialists are often burning the candle at both ends. And this situation often leads to inconsistent interfaces and less than optimal design solutions.
Like Extreme Programming (XP), which suggests using pair programmers to improve the quality of the software code, it might be useful to consider using "pair" usability specialists. One of the usability specialists can focus on the design of the next iteration (and, provide support for the next iteration); while the other usability specialist can ensure that the design recommendations are consistent with the designs implemented in the past and that they are not in conflict with the designs for future iterations. Furthermore, the second usability specialist can focus on developing interaction patterns to help aid the first usability specialist becoming more efficient in development of prototype designs and providing recommendations for ongoing iterations.
Although very few usability practitioners are currently involved in supporting agile methodologies, I was surprised by the level of interest in incorporating user-centered design into agile methodologies. It seems that because there is no mention of usability in the "agile" literature, most development teams do not even consider using usability specialists. Furthermore, it's not clear to them how we can help. We're probably perceived as unnecessary and not having anything useful to contribute. There is an opportunity here for us to sell ourselves to "agile" folks and demonstrate our value. In addition, we need to perhaps come up with some different techniques and deliverables to support agile methods and start experimenting with them as soon as possible. And we need to start showing some successes!