How many times have you heard the following phrases?

  • “This software bites.”
  •  “Why is software development always delayed?”

Both sentiments describe the need to design and build software that provides a great user experience (UX) and that is delivered in a timely manner. Luckily, there are two communities focused on both of these goals:

  • The user experience gang focuses on designing software the users find useful, usable, and desirable.
  • The Agile camp focuses on delivering working software to expose functionality that users can test.

Get These Two Communities Together, And Bam!

But sometimes the “bam” might be for the wrong reasons; UX purists want to spend days upfront planning story boards, task models, and experience metaphors, whereas the Agile camp wants to spend little time planning, preferring the practice of delivering working software to expose functionality that the customer can test.

Neither is right or wrong. Like so many situations, balance should be the objective. You should never spend too long upfront planning the perfect user experience that will be out of date before going live, and you should never start developing software before you have some understanding of how that software is going to be used. Mike Gualtieri and I believe that the following techniques can help application delivery professionals find the perfect balance to achieve that outward Zen:

  1. Identify personas – As a software engineer, I often forget that I am creating a product for someone else and build products for myself. Avoid this by having a clearly defined yet simple set of personas to remind development team members that they are creating software for someone else.
  2. Understand the customer’s mission – Sometimes we get so focused on the details of a piece of functionality that we forgot why the customer is using this in the first place. By identifying the objective that you are building software to satisfy, you equip the development team with a  clear measure of success – and on Agile projects, the ability to ask “Are we done yet?”
  3. Define some very simple design guidelines – You are not going to build the plans for the new world trade center, but by focusing on some very simple principles, the development team can build software that is consistent.
  4. Create tests earlier rather than later – Agile is all about testing your assumptions quickly, learning, and adapting. To do that requires you to have knowledge of what you are trying to achieve and then deliver software to prove or disprove it. Usability, like functional requirements, should be tested as early as possible.      
  5. Deliver frequently, and test your design assumptions – It is clear that the proof of the pudding is in the eating. If the software delivery team frequently delivers software that proves the usability and design of the software, the team and the customer can learn.
  6. UX professionals should mentor Agile teams – UX, like so many skills, is not one you can learn from a book. By getting involved in Agile projects, UX professionals not only see their ideas get delivered faster but also get to help shape the team’s thinking and approach.

Mike Gualtieri and I will discuss this very interesting topic at the App Dev Forum in Boston on September 22-23.