At my job I recently implemented some simple code so users could RSVP for a free event we were putting on. After getting it up and running, I started noticing some duplicate email addresses, so I went about added a check to see if the email address being registered was already in our database.
In my existing code I had a success message styled in a green box if the address was added, and an error message in a red box if something went wrong (which shouldn’t ever happen, unless there’s a database problem).
When adding the message that informed the user they were already RSVP’d my first inclination was to make it a red error message. From the code’s perspective that seems logical. Since the action of entering their info in the database failed, it must be an error right?
But looking at it from the user’s perspective, all that matters is whether or not they have successfully RSVP’d. If a duplicate entry was rejected, there must be a successfully entry in there somewhere. Presenting the user with a big, scary, red error message implies that something is wrong and they they need to take further action. However, from the user’s point of view, their goal of RSVPing has been accomplished, so a green success message is more appropriate.
This is why it’s so important to design interfaces from the users perspective, not from a programming perspective. As they say at 37signals, the interface is the software.
