Wednesday, May 7, 2008

Agile + UX: six strategies for more agile user experience

Information Architecture, Interaction Design, Working better by Austin Govella

Six ways to be more agile and better integrate user experience and information architecture into agile development teams.

7 Comments

There’s a secret lie lurking behind agile methods. ‘Agile’ suggests fast. At Comcast, we’re using a scrum process that throws around terms like “team velocity”. And the agile literature does promise better, faster. It’s no wonder that when organizations hear this, all they hear is faster.

Of course, the secret lie is that agile isn’t necessarily faster. It’s driving tenets are to help people stay happy and create better software. The namesake agility is meant to allow teams to change product direction every few weeks instead of every six months.

How do you make these kinds of agile changes? You test: Build, push, evaluate, tweak (rebuild).

Unfortunately, the iteration cycle, “agile”, and phrases like “team velocity” were confused with “fast”. The biggest problem with lots of user experience methods is that they’re not necessarily fast. They’re not necessarily slow, but they do take time.

At Comcast, even though user experience work is seen as valuable and important, its also seen as a slow point in the process.

How do you handle this? You have six options.

1. Synchronize UX with development

My previous post on parallel workstreams touches on this. You run a UX sprint ahead of the development sprint. You figure out what dev will work on next sprint, and you work on that stuff this sprint.

In the parallel workstreams post, I go over some of the problems and realities you see with this approach: parallel workstreams, more UX than fits in a dev sprint, etc. (Check out that post for more detail.)

2. Separate modeling from design

Design doesn’t really take that long. Most of us are cranking on problems we’ve seen before and solving them in ways they’ve been solved. Most of the design is using documentation and discussion to—virtually—walk through the product and make sure it works the way users, developers, and the organization expect.

With a good team of smart, happy people (i.e. an agile team), the design is easy.

Modeling—not design—is the part that requires thinking and synthesis and time. You need a good model for your users, for your business, and for your interface.

Don’t confuse models with requirements, because they’re not the same. For Fancast, the user model includes information like people think of TV shows more than they think of episodes. (You’re more likely to search for ‘Seinfeld’ than you are for ‘soup Nazi’.)

These kinds of models frame how the team thinks about how to solve its various problems. Models suggest requirements because they suggest how you should think about the problem.

If you can do your modeling up front, then you don’t have to do it during the sprints, you can spend your small time on the fast bit, the design.

3. Design literacy

If there’s not enough of you to go around, but you still need going, then you need more you.

Every team has a certain design literacy, a certain level of experience and maturity designing stuff. (Jess McMullin covers this really well.) Essentially, user experience practitioners are really, really, design literate. If you don’t know an answer, then you know a method or where to look to find it.

The more your team knows about user experience and design, the less they need you. This is a good thing. Leave good books laying around. When you make a recommendation explain why. With a good team of smart, happy people (i.e. an agile team), they’ll pick the basics up really quickly.

After all, it’s not rocket surgery.

Once the rest of your team can handle most things by themselves, it’s like there’s more you, and you can focus your expertise on the more wicked problems.

4. Collaborative Design

Agile is all about build, push, evaluate, tweak. Oddly enough, design is all about build, push, evaluate, tweak, except we do it in our heads before we bother coding it.

Everyone digs this, so take advantage. There’s no reason to do your virtual build, push, evaluate, tweak by yourself. In fact, it’s better for the team’s design literacy and easier to share your models if you don’t.

Get in the same room and sketch, point, talk, and iterate. By the time you’re done with the conversation, every one has a good, consensual idea of what you’re building.

In the end, a consensual idea is why you document. If everyone leaves with the same idea in their heads, then the last reason you have for documenting is recording details that might fall out of people’s heads. Things like how a list is ordered, or what happens if there’s an error.

As above, you can spend less time on basic documentation and focus on what documentation is good at: remembering things you won’t.

5. Lower fidelity

Documentation is still a good thing, but the more details you have, the longer your document takes to produce. Wireframes are the best example of this. A well-annotated, high-fidelity wireframe for one page can take a day, easy.

If you need to spend less time, use fewer details. If you’ve collaborated on the design, and you’ve helped improve their design literacy, then your team won’t need all the detail.

Strip your documents down to the basics and only deliver what people need. Make your wireframes more like page description diagrams or block layouts.

6. Book your time

Agile developers don’t really pretend to code faster. That’s silly. But they’re fanatical about estimating how long something will take and exactly how much time they have. They’re clear about their limits.

In fact, that’s a clear benefit of agile methods. The extreme focus on a small sprint’s worth of work means its easier to estimate, track, and communicate changes to your timeline.

If it’s going to take you 10 hours to work on one feature, then be clear about that. Book your time the way the development team does. Use their systems and their language. Use story points, tickets, and time tracking. Only commit to what your estimates say you can commit to.

If something starts to take longer, communicate the change in the timeline. The agile system manages this (by bumping lower-priority items off the sprint).

Become agile

Obviously, these six strategies are not mutually exclusive. In fact, they work best when pursued in parallel. The crazy thing is, in retrospect, they’re kind of the obvious application of agile principles to user experience design. They don’t necessarily make you work faster, as much as they let you work in a more agile way.

There’s one more strategy for working better with agile development teams, and it involves reframing the way the product and development teams perceive product development: have agile become UX. But that kind of design mumbo-jumbo requires a separate post.

Maybe later :-P

Talk About "Agile + UX: six strategies for more agile user experience"

Register or Log In to comment

Indi Young

Indi Young said:

This makes sense! I’m always being asked, “How do you do UX in an agile environment?” My answer is always “Take time to model your users first, then get settled into cyclic design.” You say this with #1 and #2 above. The other four points all make sense from a team standpoint, as well, and I’m glad to be able to point people to them. Also, since modeling can take a long time, I offer several recommendations: study one user segment at a time, sketch the model based on shared knowledge, then test it with some real field work, etc. More on step 2 here: www.rosenfeldmedia.com/books/mental-models.

Thu, May 15, 2008 at 08:54 PM

Masood Nasser

Masood Nasser said:

Austin: My 2 cents: Want to be more agile. Run. I have taken a bluetooth device and talk about my product experience while running with my son Rayhaan. The voice gets captured in a recording device and then we use tools to convert it to text.

Thus while running our concepts are finalized and our health improves. How's this for agile buddy:). Your posts are improving by leaps and bounds. Will spend more time here! The only "rule" I have for my team is to workout once a day apart from the "be an angel "guideline".

cheers
http://masoodnasser.blogpsot.com
http://artinthemake.blogspot.com

Mon, May 19, 2008 at 12:16 AM

Brian Friesen

Brian Friesen said:

There are always ways to fit user experience design into any process. Will it be “good” design is another matter.

Several statements in this article trouble me and almost take a very “casual” attitude toward the resulting quality of the user experience. Agile was developed as a method of cranking out software quickly for the sake of monetary gain, NOT for the benefit of those who would ultimately have to use it.

Can “good” user experience design reside in an Agile process? Yes and no. It’s all about the end goal of developing the software in the first place. Is the world a perfect place in which products are developed for purely altruistic purposes? No. But user experience design and user centered design techniques were created to make software easier to use, NOT faster to develop.

“Fast” is not necessarily “good” when it comes to the end user experience. The user does not know or care if software dev takes 15 days or 15 months however, they DO care if the software sucks.

Statements like “bumping lower-priority items off the sprint” sound good but what usually happens is that what gets”bumped” ends up being careful research and design thought and application of that thought.

As the Agile process continues to grow in popularity we, as user experience designers will need to find ways to incorporate best practices into that process. Austin Govella has done a great job of doing so in this article, however, we must not lose sight of the basic goals of why there are user experience designers and the most important element of creating software in the first place….the end user.

Thu, May 29, 2008 at 08:17 PM

Austin Govella

Austin Govella said:

Brian,

I totally agree on our primary goal as UX practitioners. If I seemed casual, that’s only because I don’t think the UX is the most important part of working on a team. I think the most important part is working well together.

Every one on the team makes compromises. Working well means everyone understands the best compromises to make. That’s why the team’s design literacy is so important.

Sat, May 31, 2008 at 09:51 PM

Mark  Anderson

Mark Anderson said:

Austin,

This was helpful, thank you. Have you ever worked in a group using Accurev source control for agile development? It certainly improves a team’s ability to adapt to changes in the environment more quickly.

http://www.accurev.com

Mon, Feb 23, 2009 at 04:31 PM

Dave  Nicolette

Dave Nicolette said:

Hi Austin,

Interesting post. Some observations:

Strategies 3 through 6 are excellent and I agree with them.

What you call “Synchronize UX with development” actually strikes me as unsynchronizing them. A basic goal in an iterative agile process is that a work item is delivered in the same iteration in which it is started. This doesn’t mean the same iteration in which the work item is defined (that is, added to the Product Backlog); it means the iteration when work is started on it. Many agile teams track a metric called story cycle time. The term “cycle time” is used in many contexts; in the context of iterative agile development, it simply means the average number of iterations it takes for the team to complete a story. When that number is above 1.0, the metric signals a problem. The strategy you describe here actually forces story cycle time to be greater than 1.0 every time.

Under the same heading you discuss the idea of parallel workstreams. What you describe by that name differs from the concept of parallel workstreams in agile development. Because agile methods work best with small teams, when the scope of work is too large for a single team we split the project into smaller sub-projects and run them in parallel. A key to success is to decompose the project into workstreams that can be run in parallel; that is, each team develops a portion of the solution that has few dependencies (ideally, none) on other portions. In contrast, what you describe by the name parallel workstreams is serial workstreams: The start of development depends on the end of UX design.

Agile practitioners already have a name for this approach: It’s the Staggered Iterative Waterfall anti-pattern. With that anti-pattern, different specialists work on different horizontal slices of the solution for different iterations simultaneously. For instance, in your example the UX team would be working on items to be developed in iteration n+1 while the software developers are working on iteration n.

It’s very tempting for people in the habit of thinking in terms of specialized roles to try this approach. It’s been done frequently enough that the anti-pattern was recognized and named years ago. Your second suggestion, “Separate modelling from design,” seems to be an extension of the same line of thinking. I would urge caution in pursuing these ideas.

A seventh strategy you might consider is to treat UX specialists as a separate group that is called in to consult with multiple agile development teams as needed. This approach is helpful when there aren’t enough UX experts to go around. It depends on using your idea of increasing the design literacy of developers so that they can handle the majority of routine design issues on their own. An advantage is that it avoids the Staggered Iterative Waterfall anti-pattern. I understand using internal groups of experts doesn’t exactly follow agile “by the book,” but then again our purpose is to deliver business value with a minimum of waste, and not just to follow a book.

Cheers,
Dave

Sat, Mar 14, 2009 at 04:16 PM

Adrian Howard

Adrian Howard said:

On the “Separate modeling from design” point – you might want to take a look at what folk from the development side are doing with concepts like “ubiquitous language” and Domain Driven Design. They’re using different words and coming from a different background, but with much the same sort of aims. There’s a lot more common ground between UX folk and dev folk than many realise – and a lot of it sits at this sort of level. The abstractions that the designer discovers should be the same ones that get implemented in the code.

On “Design literacy” & “Collaborative Design” – oh god yes. And I’m so glad to see you say it. I encounter far too many designers who seem to get very nervous letting any control on the design move out to the rest of the team. It’s a foolish fear. Some of the stuff we do _is_ easy. The more people who know the basics, the more time you get to spend tearing your hair out with the problems that are actually difficult :-)

(Oh and @bfriesen “Agile was developed as a method of cranking out software quickly for the sake of monetary gain, NOT for the benefit of those who would ultimately have to use it.” – That doesn’t bear much relation to how I understand Agile to have come about – or be practiced by good Agile teams. Quite the opposite. The focus was producing quality. The “quickly” aspect was only because the process was cutting back on wasteful process and introducing more effective feedback mechanisms which meant that the good bits of the software got delivered earlier in the process. The Agile==Quick meme is something that needs to be stamped out. It’s wrong. Quick isn’t the goal. Quality is.)

Mon, May 04, 2009 at 04:35 PM

Hot topic? Subscribe to a feed of this post's comments.