Monday, March 17, 2008

12 Steps to Stellar Software Design

A while ago Computerworld published the following list (edited slightly for brevity). I've had it up on my wall for a while and realized it would be a good thing to share.
  1. Admit you have a problem. It is impossible to design good usability on your own. Know thy user. Use personas -- fictitious characters that are created to represent the different user types within a targeted demographic that might use a site or product. "Guerrilla" usability tactics such as informal customer interviews and teaming up with tech support staff might work too.

  2. Believe in a power greater than yourself. You need to find out who these folks are that are using your stuff, and they may not end up being the people you started out with when you designed the product.

  3. Make a decision to recognize good design. Design is not just what it looks like and feels like. Design is how it works.

  4. Make a fearless inventory of your user experience shortcomings.

  5. Admit to someone else the nature of your problems. More than just getting feedback, talking as an equal to users can help sort out why an application may not be working.

  6. Be ready to remove these defects of character. The interviewer used Microsoft Office 2007 as a case study. As the company added more features into its Word product, for example, it began using "rafted" toolbars buried in the interface, moving from 12 to more than 31 toolbars by the time it offered Word 2003. "Of the top 10 feature requests, five had been in Office for more than one release." The latest version, in contrast, uses a "ribbon" with a master set of toolbars that helps find what you need.

  7. Ask for help. Post mockups of the next version and solicit feedback. You don't have to listen, but it's good to know what people are saying.

  8. Make a list of all the users you've harmed, and make their lives better. A scale goes from functional > reliable > usable > convenient > pleasurable > meaningful. Most fall halfway to convenient. This is a really hard one to cross.

  9. Make direct amends. If you can't deliver an improvement, prepare for the worst. Don't burn bridges with your users. They will never come back, and they will tell all their friends.

  10. Continue your inventory. Usability testing is not a one-time event but a cycle: Observe, analyze, design. It should be like using shampoo.

  11. Realize that without users, it doesn't matter.

  12. Pay it forward. The software community has a number of resources, including Yahoo's User Interface Library and the Tango Desktop Project, to offer lessons learned.


  1. Love it...thanks for sharing, Charles!

  2. You're welcome, Chris. I had you in mind when I did this post. :-)