Usability and Agile Development
Agile development has become very popular these days. It is widely recognized as improving on prior software development methods by minimizing risk and improving the likelihood of shipping on time. If you aren't familiar with Agile, there is a consise summary at http://en.wikipedia.org/wiki/Agile_software_development
At BMC, we have adopted a variant of Agile called Scrum for most of our projects. A podcast about this is available at http://talk.bmc.com/podcasts/podcast-gat
Usability processes always need to be optimized to fit with the development process a project uses. In this week's blog, I'll discuss some of the ways I have modified my usability techniques to fit with Scrum.
I am responsible for designing the user interface for a product called BMC Performance Manager. This development team is using Scrum with two week iterations. Every two weeks, a set of features are designed, implemented, and tested. At the beginning of each iteration, the developers are chomping at the bit to get to work on coding. They need to get the user interface design for these features within the first 2-3 days of the iteration in order to meet the schedule.
I believe that user interface design is optimally an iterative process. I like to design, get user feedback, and refine the design based on that feedback. Sometimes it is necessary to prototype multiple designs and conduct user testing to determine which approach works best. In a large product, it is important the all the features be designed to fit together into a cohesive whole.
Under our previous development process, I would work on the user interface design a few months before coding started. This provided time to do testing and refine the design. I would prototype the user interface and document it in a spec. This gave the developers a clear blueprint to work from.
With Scrum, the development is done in smaller pieces each with a short schedule. The product requirements can change during development. Features come and go based on customer input and on the progress of development. High priority features all get in, but low priority features may be added or dropped to ensure the schedule is met. Scrum emphasizes real time communication over written documents so, instead of writing specs, the development team relies on meetings and short documents on a wiki.
My challenge was to figure out how the usability process should be adapted to best fit into Scrum. I am currently working on the third release of this product developed using Scrum so have had time to refine my methods until I have a process that I think is working well.
I have found that it is important to do high level design at the beginning of the project. As soon as the requirements for the project are fairly complete, I do rough screen flows for all the critical features. This ensures the features will fit together well into the overall design. I start collecting user feedback at this point. Having a rough idea what the UI will be helps the development team to estimate the work effort and accurately plan the iterations for the release.
As the development iterations start, I refine the high level design into screenshots that show exactly what the UI will look like and describe the interaction. These screenshots become part of the documentation for each feature on the wiki. Because the high level design has given me a good idea how the feature should work, I can create the low level design very quickly. This meets the needs of the iteration schedule, but still allows me to create a design with good quality.
Some iterations are designated as hardening iterations. This is time designated for fixing bugs and making sure the code is ship quality. No new features are added in hardening iterations. This provides a good opportunity to do usability testing.
Daily interaction with the development team is essential to successful implementation of agile. The user interface designer needs to function as an integral part of the team. It doesn't work well to "throw the design over the wall" or act as a consultant.
A good article on integrating usability into an Agile development process at another company (Alias) is available at http://www.agile2005.org/XR19.pdf
There is lots more that could be said on this topic, but I just wanted to touch on a few of the key points this week. If you have questions, feel free to add a comment or shoot me an email.
Podcast on this topic
UI Design in Agile Development Cycle
I've been searcing for information on how user experience, ui designers like myself incorporate the design process into an agile environment. My boss is pretty much following the books he reads and the books on agile CLEARLY STATE "Leave the design out till the end." I cringe at this and have been trying to find fellow designers that work in this environment and what is your methodology during your iteration.
I'm currently on my 4 large project now using agile and the methods I use are:
1. Design the paper prototypes like 2 months ahead of expected development (keep code cheap and easy to throw away)
2. Constantly meet with the Business Architects and Business Owners
3. When development begins identify any stories that have UI components and try to stay two weeks ahead of the development iteration (which is tough to do) especially if there are a lot of changes.
Some of these things have helped but personally I work on 2-3 projects at the same so you can imagine how difficult it is to just slam the final UI touches on at the end of a project when they all end at the same time.
I'm really looking for specific methods that you may use. I hope you get a chance to respond back here on your blog.
Any insight you may have would be greatly appreciated. I've searched the web high and low and information of this type is few and far between.
Thank you for this very useful post.
Our company has been recently asked to design UI's for applications following SCRUM instead of our usual waterfall approach. And your post has been very valuable in getting a UI perspective on Scrum.
Thank you!
Theodore
www.ceonex.com


