The First & Only ColdFusion™ Magazine Since 1999
   
 
hal

Occasional Thoughts Related To Software Development

««
August 2008
»»
SM
T
WTFS
      12
3456789
10111213141516
17181920212223
24252627282930
31
Mailing List

The problem with "requirements"

I'm reading a book recommended by one of my newsletter readers: Emotional Design: Why We Love (Or Hate) Everyday Things. Written by Donald Norman (of The Psychology of Everyday Things fame), the book explores why usability alone isn't enough. Norman argues that we appreciate things on three levels: visceral, behavioral, and reflective.

Visceral attraction is that which we feel for a Ferrari or an iPod. It's beautiful and we want to sit in it (Ferrari) or touch it (iPod). Behavioral attraction is the appreciation for something that works very well. The word we often used to describe it is "intuitive". Finally, reflective attraction is about meaning and self-image.

Norman argues that great design incorporates all three aspects and produces things we love. He even argues that well-designed objects make us work better. I won't try to explain his thinking, but his arguments did get me to think about something I've talked a lot about: prototypes.

In the design world, prototypes are an absolute necessity. When the designer of the original Palm Pilot was working on a design, he carried a block of wood around in his pocket. What was comfortable? What felt too big? Too small? Were the buttons right?

And yet, for some reason, many developers feel that "design" is something best left to graphics artists. But when I talk about the necessity for prototypes, it's not just look and feel that I'm stressing, but rather that the very act of using something reveals what we want from that thing. Until I see the iPod's spin-wheel, I don't know that I want it at all. It's no good asking me for "requirements". If I knew that, I could just hire a 16-year old programmer.

I believe that in almost all cases of business software, working without prototypes entails great (and needless) risk to both developer and client. Requirements documents may be useful for lawyers, but they have limited usefulness to us. Prototypes allow us to try out new ideas and see how users react to them. They give us the freedom to explore the visceral and behavioral aspects of design--and maybe even the reflective.

I've been using prototypes for quite a while. My first explorations with them was constrained to exploring behavioral issues. "Don't worry about the look and feel," I would tell clients. But they would worry about the look and feel. I finally realized that until I took care of this need of the client--no matter how secondary in importance it seemed to me--we simply couldn't move on to the issues that were of great concern to me: how the application needed to behave.

Years ago, Abraham Maslow arrived at his "Hierarchy of Needs" for individuals.

  1. Physical survival: water, food, sleep, shelter...
  2. Safety and security: physical safety, economic security, comfort...
  3. Social needs/belonging: acceptance, group membership, love, affection...
  4. Self-esteem: recognition of mastery, prestige, status...
  5. Self-actualization: innovation, creativity, deep learning...

Until a lower-level need was satisfied, Maslow argued, people couldn't attain satisfaction of needs higher up the hierarchy. The problem with starting with requirements documents, flowcharts, UML diagrams and the like is that these don't deal with the client's basic concerns: what will this look and feel like? What will it be like to work with?

Prototypes answer those questions and allow us to introduce ideas and get feedback from clients in ways that words simply cannot. They give us a common langugage that has a specificity and concreteness to it that words lack. I believe that great applications--like other great designs--must incorporate visceral, behavioral, and reflective appeal and I can think of no better way to begin the process than with a thorough, comprehensive prototype.

Clark Valberg made this comment,
I often think of the prototype phase as the most important discovery “device” I have available. Customers most often think about their business in terms of its "interfaces" (at the surface level). How they deal with their customers, vendors, employees etc. In order to get them to honestly and deeply consider how something as completely virtual as a software product will participate in their business model they naturally are better at doing it at the interface (visual) level of abstraction. As architects (or developers) our discovery process has got to get the client thinking (or at least discussing) their business deeply, sometimes in a way they might have never done before! Establishing user roles (or “personas”) early, combined with the delivery of a navigable prototype is really the best way to get the client thinking about what their users really want and need. I find that after presenting a prototype we often make changes (some SHARP) in direction within an area of functionality that we all assumed was adequately thought through.
comment added :: 15th October 2005, 23:24 GMT-05
Jeff Peters made this comment,
I'm currently working with a client who hadn't previously had the pleasure of working with a prototype-based developer. As we've been working through the prototype, she's grown increasingly impressed with the whole process. At one point last week, after I had made one of those "do you mean like THIS?" adjustments, her response in the Devnotes was, "I'd hug you if I could!" Now that's a visceral reaction if ever I've heard one. In the simple update of a prototype feature, we managed to have a fully understood conversation the result of which was me "getting it" and her knowing I got it. Beautiful.
comment added :: 8th November 2005, 14:30 GMT-05
atcony made this comment,
I totally agree with Norman on this - "Great design incorporates all three aspects and produces things we love."
comment added :: 22nd September 2007, 11:37 GMT-05 :: http://design.webgk.com

This blog is created and maintained by the author of the page and in no way associated with SYS-CON Media or ColdFusion Developer's Journal.
The author of the blog assumes all liability and responsibility personally for the content of the page.
www.blog-n-play.com is a registered trademark (78553120) of SYS-CON Media.