User Centred Design and Agile Development | December 22, 2006
Clearleft is a UCD, or User Centred Design consultancy. We spend time learning about the people who use our clients products, and then put those users at the heart of the design process. We do this using a variety of techniques from user surveys and contextual enquiry, through to persona creation, wireframing and usability testing. The ultimate goal of this process is to create experiences that are useful and meaningful to the people using our clients software.
As a company we specialise in the architecture and design side of the equation. We understand programming and development, but it’s not a service we offer. When clients come to us for implementation, we prefer to partner with another agency that specialises in back-end development. We’ve been designing a lot of interesting web applications recently, so Ruby on Rails seemed like a natural choice of development technology. One of the interesting things about working with Rails developers is their love of agile development.
Not being a developer, I’ve always been a bit nervous about agile development. I’ve heard people evangelise the benefits of reduced documentation, fast iterations and peer programming, and it logically makes sense. However I’ve always seen agile development as a bit of an ideological clique, and terms like extreme programming and scrum methodologies hardly make it accessible to the lay person. Because of this I’ve been aware of the concept for some time, but never really looked into it. It’s always seemed much more relevant to developers, so we’ve done our thing and let our dev partners do theirs.
A few weeks ago I was lucky enough to attend the Flash on the Beach conference in Brighton. As I mentioned at the time, my favourite talk of the conference came from Aral Balkan. During his wide-ranging presentation, Aral touched on a number of topics, but the one that piqued my interest the most was his take on agile development and how it fitted into a user centred design philosophy.
At first glance you’d be excused for thinking that the two techniques were diametrically opposed. After all Agile development is about making the developer’s life easier, while UCD is about making the user’s life easier. However the ultimate goal of both techniques is to deliver more useful software, and there is a lot of crossover.
Sat in the audience listening to Aral describe agile development, I was amazed how similar parts of it were to our UCD process. The agile process starts with a “Planning Game” where the client and dev team sit down and create a series of “user stories” in plain English. These stories are then broken down into tasks which are estimated and prioritised. This is pretty much exactly what we do, except we call it an IA workshop. We start by talking to the client about their users and examining any user data we may have gathered previously. Using this information, we”ll develop a set of “user personas” and create “scenarios” and “user paths” based on these archetypes. The user paths are broken down into tasks and each task is estimated and prioritised based on utility, complexity and time/cost.
In agile development, project specifications and other documentation is eschewed in favour of rapid implementation. We take a similar approach, and avoid written documentation in favour of representative wireframes. Rather than spending weeks trying to explain how a system will work in words, we build a non-functional paper prototype or a semi-functional XHTML/CSS prototype. Our clients can then start playing with the site before a single line of code has been written, so changes are fast and involve little overhead.
This is where we diverge slightly from the agile process as we wireframe the whole system in one go whereas agile devotees will only implement one user story at a time. I prefer to plan the site out fully first as I feel it makes for a more holistic approach. One process invariably affects another, and if you’re only concentrating on one story, it is easy to miss important patterns or vital connections. We’ve never done the small, fast iteration thing before so I’d be interested to see how it works. However I’d be worried that it would make user testing difficult as you would either be forced to do lots of small user tests which would cause resource problems, or wait till enough of the system has been designed to run a multi scenario test, at which point it becomes more difficult and costly to re-program the interactions
Minor issues aside, I think the similarities between agile development and UCD are fascinating. There is a great article over at UXmatters at the moment called Clash of the Titans: Agile and UCD which mirrors my feelings on the subject. I urge you to check the article out and would love to hear your thoughts.
Posted at December 22, 2006 12:29 PM