Sunday, November 4, 2007

Agile Development + User Centered Design: Some observations

It seems a little strange to jump right in and start a blog with observations on Agile Development Methodologies and Design, but I had a great email conversation with Marty Cagan at the Silicon Valley Product Group that lead to me creating this list.

  1. Using Agile is not an excuse for a lack of road-map planning. As a product owner, you still need to have a good idea where you're going or you won't know if you're making progress in that direction.
  2. You represent the interest of the user. Users will tell you what they want, business owners will tell you what they want, technologist will tell you things are "hard". It's up to you to decipher what the users and the business NEEDS. This may be very different than what they say they want. (See the iPhone as an example)
  3. The best way to get information is to go and ask the user. Watch how they work in their own workspaces. See if they use your product (or competing products) in unexpected ways. Ultimately, if you support their goals, you win.
  4. If you have the bandwidth, take your team with you on the user visits, including your developers. You'll be surprised how much becomes "possible" when the engineers have seen your users struggling to complete a basic task with your product
  5. Prototype early and validate frequently. You and your interaction designer should be joined at the hip. They should be able to implement your vision early, and should be able to provide you with a different perspective on the problem.
  6. Show the prototype to user when you go visit them. Finish off your interviews by soliciting their feedback. Never underestimate the value of collaborative design with highly motivated users.
  7. That being said, don't fall into the trap of building a solution for your most vocal user. You need to be able to sell your solution to a number of people if you're going to be successful.
  8. As a product owner, the best thing you can do is have clear and un-ambiguous User Stories that your team can build. Your goal is to ensure that development time is fully utilized - you want to get the most bang for your buck
  9. Let your engineers chunk functionality as they see fit. They will have quality criteria that the will need to meet each Sprint. It's your job to ensure that there is sufficient functionality to warrant a release to the user. Constant change can be more upsetting to your customers than less frequent upgrades.
  10. Get training for your entire team. If everyone understands the mechanisms around Agile, then you can focus on the execution. If people don't understand, you'll get bogged down in the semantics and dogmatic issues.

You and your designers should always try and be 1 to 2 sprints ahead of your team. This allows you to validate difficult features with sufficient time to improve them. It also keeps you from getting too dissociated from the facts on the ground. You should strive for at least 90% coverage via usability testing.

No comments: