The Artima Developer Community
Sponsored Link

Big Iron and Rich Clients
Kelly Doesn't Care About Hash Tables
by Matt Bauer
April 17, 2003
Summary
You wouldn't write a method without a test, why would you design a user interface without a test? I believe usability is a critical component in agile software development. Had I made usability part of my software development, I know that dating program would have changed my life.

Advertisement

I remember the first real program I wrote, a computer dating application while in school. I was quite excited at this opportunity for both financial and personal reasons. For six days I worked on the application and matching algorithms. On the seventh day I wrote a backdoor.

I was single at the time, being nerdy and such, and saw this program as my way out. I could use the backdoor to upload a list of girls that I wanted to date. Then when the nightly processing occurred, a little post processing procedure would append my name to the list of compatible boys for that girl. I was quite excited about this code. The application went into production after three weeks and I got my hair cut in anticipation.

After a week - Nothing. I didn't understand. Was there a bug? Is the system not running? I logged into the system and queried the list of girls. There was only twenty in the system and it wasn't any of the twenty on my list. In my calculus class I asked by friend Julie why so few girls used the application. I mean there were signs up and terminals throughout the building.

Should told me that Kelly tried to use it but it keep beeping at her. Beeping at her I thought? I decided to ask Kelly myself. Normally I wouldn't talk to Kelly, but that was only because I went numb when she was near. Not this time though! I was going to help her use my application and be right next to her when my name was printed next to hers.

I met her later that day at the cafeteria terminal. She started the dating application and entered her name and gender. She entered her height and height of boys she likes. She then entered her hair color and the color hair of boys she likes. Then the application beeped. She entered 'sandy blonde' again and the application beeped. She tried entering 'sandy blonde' again and I made other plans for Friday night. 'Sandy blonde' wasn't an option in the application. When Kelly entered 'sandy blonde' it would beep and display 'invalid hair color'.

I learned two important things that day. First, I needed to dye my hair. Second, Kelly didn't care that the application used the latest compiler. She didn't care that I utilized a hash table. She didn't care that it was running on the new server. All Kelly cared about was that it cost $5 and wouldn't let her find a boy with 'sandy blonde' hair.

I tell this story to put into perspective the Agile Manifesto principal, "Working software is the primary measure of progress." "Working software" is more than software that's passed unit tests. It's software that's working for the user. My dating application had passed all the unit tests, but it wasn't working to find 'sandy blonde' boys for Kelly.

But how do we ensure software is working for the user? We just need to remember another Agile Manifesto principal, "continuous customer interaction." It is important to remember that the customer is more than the few users assigned to answer our business logic questions. Customer means everyone using the system. The few customers assigned to the project have the luxury of help from the developers. They also suffer from a much higher understanding of the software do to their involvement in its development. In the end they don't accurately represent the end user. To truly make software that works for the user we must make usability design and testing part of software development.

I think we're very close to this. How easy would it be to have a usability engineer work on a story card prior to a developer? They could perform some paper prototyping of the UI with various users and then attach the final prototype to the story card. The developer could then focus on the code and not have to worry about the UI design. Then at every release of software the usability engineer could perform usability testing on it. Any usability problems would be put on a story card and the process starts over.

Is usability this important? Would it really pay to hire a couple usability engineers for a project? In short, yes. Here is just one statistic:

"Wixon & Jones did a case study of a usability-engineered software product that increased revenue by more than 80% over the first release of the product (built without usability work) (Wixon). The revenues of the usability-enhanced system were 60% higher than projected. Many customers cited usability as a key factor in buying the new system." (Bias, R. G. & Mayhew, D. J., (Eds.) (1994). Cost-Justifying usability. San Francisco: Morgan Kaufmann Publishers)
A full listing on the return of investment with regards to usability may be found here.

Can't developers just design the UI? In my experience the answer is almost always NO. Usability engineers often have design and/or psychology degrees. They have taken human factors courses and have a great understanding of design heuristics. What the last usability book you read?"

I encourage you to explore the world of usability. The easiest way is to join your local chapter of the Usability Professionals' Association. If you're in the Minneapolis area, definitely check it out. Some of the best usability engineers in the world work in and out of Minneapolis. I also recommend the following books and web sites.

Designing Web Usability by Jakob Nielson

The Design of Everyday Things by Donald A. Norman

Information Architecture for the World Wide Web by by Louis Rosenfeld, Peter Morville

Paper Prototyping by Carolyn Snyder

Jakob Nielson's Website - http://www.useit.com

Architecture and Design for the Digital Landscape - http://www.boxesandarrows.com

Keith Instone's Website - http://www.usableweb.com

Usability Professionals Association - http://www.upassoc.org

You wouldn't write a method without a test, why would you design a user interface without a test? I believe usability is a critical component in agile software development. Had I made usability part of my software development, I know that dating program would have changed my life.

Talk Back!

Have an opinion? Readers have already posted 1 comment about this weblog entry. Why not add yours?

RSS Feed

If you'd like to be notified whenever Matt Bauer adds a new entry to his weblog, subscribe to his RSS feed.

About the Blogger

Matt Bauer works with all things big and expensive. He has worked with weather satellites and space instrumentation, administered government data centers, developed global intranets and designed international rich internet applications. He is currently president of For-Loop, a Minneapolis based technology company focused on distributed transactional systems and rich internet applications. Besides pushing the envelope of technology, you will find him out running marathons.

This weblog entry is Copyright © 2003 Matt Bauer. All rights reserved.

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2014 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use - Advertise with Us