User Testing with CodeAcademy

In the exercise “A Box Office Hash”, CodeAcademy had me write a hash database that holds movie titles and their respective ratings. It can Add a new movie with rating, Update to change a movie’s rating, Display to list all the movies and their ratings, or Delete to remove a movie from the hash.

As I finished it, my aunt asked what I was working on. Since this was the first remotely functional program I’d built for CodeAcademy, I asked her to give it a whirl.

She had absolutely no idea what to do.

Here’s the code I wrote:

movies = {Elysium: 4.6, Life_of_Pi: 4.8, Inception: 4.5, Pacific_Rim: 5}
puts “What would you like to do? \n Add, Update, Display, Delete”
choice = gets.chomp

case choice.downcase
when “add”
puts “What is the movie’s title?”
title = gets.chomp.capitalize.to_sym
if movies[title.capitalize].nil?
puts “What rating do you give it 1-5?”
rating = gets.chomp.to_i

movies[title] = rating
puts “#{title}, #{rating} added!”
else
puts “This movie already has a rating, try updating it.”
end
when “update”
puts “Which film title do you want to update?”
title = gets.chomp.capitalize.to_sym
if movies[title].nil?
puts “Error yo, that movie hasn’t been added yet!”
else
puts “What do you want the new rating to be?”
rating = gets.chomp.to_i
old_rating = movies[title]
movies[title] = rating
puts “#{title}’s rating has been updated from #{old_rating} to #{rating}!”
end
when “display”
movies.each{ |title, rating|
puts “#{title}: #{rating}”
}
when “delete”
puts “What movie would you like to delete?”
title = gets.chomp.to_sym.capitalize
if movies[title].nil?
“That movie isn’t in the database to begin with.”
else
movies.delete(title)
puts “#{title} deleted!”
end
else
puts “Error! Unrecognized input. Recognized inputs include: Add, Update, Display, and Delete”
end

 

I had told her that the program was a list of movies with their ratings.

But when she sat down, all she saw on the screen was

“What would you like to do?

Add, Update, Display, Delete”

At first, she didn’t even want to try to use it. She demanded that I explain exactly what to do. I refused, telling her to try to use it however she could think of.

She said “Okay, then I’ll add 2 Guns,” a movie that came out recently.

So she moused over and clicked on “Add”. Of course, this was a command line prompt, so ‘clicking’ doesn’t exist. Her first computer was an MS DOS machine in the 80’s, so I told her “You can’t click stuff, it’s just text- Think of it like DOS.”

Then she typed “2 Guns” right into the prompt underneath the options, as if the program would know which one she wanted to do. When I told her you had to type which option you wanted to use, she typed in “Add 2 Guns” instead of typing “Add”, hitting enter, and then allowing the program to prompt her for the title. She wanted to do it all at once!

 

I learned several things from this super-beginner level user testing.

1. In this age, even DOS-era people expect to be able to click things. Unless you are writing for a programmer, text-based commands are non-functional. They’ll even try clicking on display text.

2. You cannot assume that your human-computer interaction is obvious. You must display instructions on how to do what you expect from them, and explain what will happen after the user performs one of the actions you’ve offered.

3.  People intend to accomplish their goals in a single step. I learned that the user should be able to accomplish their goal in as few “inputs” as possible.  Instead of 1. Type “Add”, 2. Hit Enter, 3. Program requests title, 4. Type “2 Guns”, just 1. Type “Add 2 Guns” is superior. Even though I learned this in an archaic setting, this lesson easily translates to the mobile touch-screen medium, where the ideal in-app action requires as few “screens” or “clicks” as possible.

I’m now modifying the program to work the way my aunt tried to use it. I’ll see if she’s able to use it with facility once it’s done!

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: