I’ve recently been thinking about how to better blend Agile development and User Experience Design.

Given my education in Industrial Design (ID), that was a natural first place to see what models might translate.  Yes, there is all the prototyping, mockups, and rendering that are highly applicable to any software project.  However ID doesn’t really do it because it is classic “waterfall-based” design approach.  There is no other choice when designing for manufacturing on an assembly line.  Everything has to be defined up front in order to build the tooling and stamp out the parts.

Next, I looked to Architecture (the building kind).  Although I’m not an Architect, nor do I have Architectural training, I helped to re-design the kitchen and master bedroom/bathroom of my house. I also served as general contractor on the kitchen remodel.  Building buildings is a lot more like software development than ID.  You try to define most things before construction begins, but there are always quite a

number of things that can only be tackled as you get to them in the construction process.

house

I know the big deal with Agile is that design, implementation, testing, etc. are all supposed to proceed in parallel.  But IMO this is an immature perspective on requirements and design. Agile development was created by software developers, not designers.

What I’ve come to strongly believe in through repeated exposure to Agile development projects is that Agile development must be proceeded by some iterations of Agile requirements and design.  This needs to happen BEFORE any coding actually begins.  Prototyping during the requirements and design phase is OK, but trying to create production-code and test it is a mistake during this phase.

I don’t believe you need a lot of these design iterations before coding starts.  You just need to ensure that you’ve:

  1. Got the right requirements
  2. Defined the big pieces of your product’s information architecture, navigation model, and the key surfaces
  3. Validated your design concepts with users

Once you’ve gotten the big design pieces reasonably defined; the traditional, synchronous work of Agile can begin.   Using this approach allows the design details to  plug into the larger design architecture more easily and rationally.