Design
Screenshot |
Feature |
---|---|
|
1. The Home Page |
|
2. Left Navigation |
|
3. Logging out |
|
4. Add a Wishdex |
|
5. Add an item |
|
6. In-place confirmation |
|
7. Item information editing |
|
8. Tooltips |
|
9. Sharing a Wishdex |
Hotspots, wishdex image |
10. Explore page
|
|
11. Friends page
|
|
12. Item information popup
|
|
13. User page |
|
14. Stylistic changes
|
Implementation
Our project is a website, and was thus made using standard web programming tools. The frontend is entirely HTML, CSS and JavaScript. The backend was written in Python using the Flask web framework, utilizing SQLite for the database.
Important Design Decisions in Implementation
- Minimize page refreshes
To improve the usability of our interface, we tried to avoid have the page refresh when the user performed most actions. For example, claiming, liking, and commenting do not cause apparent page refreshes. Even more complicated actions, such as deleting items occur without a refresh. In cases when a refresh is necessary, we tried to keep the experience as stable as possible, such keeping the item popup open when copying an item to a different wishdex.
- Download pictures to keep browsing fast
Initially, we only stored image URLs and loaded and resized them on page load. However, we found that this made browsing slow, particularly for the scrolling interfaces we had built for the Popular page. We therefore wrote the add item process to download and locally store small versions of the images.
- Keep structure simple and consistent
We decided to use Flask and SQLite because they are a “micro-framework,” meaning it allows for simple views, templates, and models without extra capabilities provided by more elaborate frameworks. In addition, we tried to keep aspects such as URL structure and parameters for AJAX calls as simple as possible and consistent across different but similar use cases.
- Force Facebook Connect for login
We chose to keep the login process as easy as possible by only allowing Facebook Connect. This allowed us to get simple information about the user without requiring another form. This also prevented some validation from having to be written on the backend.
- Only allow comments not replies
We chose to only allow comments on items without any replies to them. This greatly simplified the interface implementation on the frontend and the backend structures necessary to store and access the comments. We believe that comments alone are adequate for a user of our website.
Implementation Problems and Effects on Usability
Note: Some smaller issues, such as the user's icon next to a comment not directing to the user's profile page, are mentioned in the Evaluation section.
- Scraping limitations
We only implemented a scraper for Anthropologie items. This automatically fills the fields of the “Add Item” popup when the user enters a link. The lack of a scraper for other links makes the site much less efficient for adding items, which is one of our core functionalities, because the user must enter the item information manually.
- Speed issues
Although using SQLite as the database kept our development environment simple, it also contributed to some of our pages loading slow at times. In addition, some of the frontend had fairly heavy JavaScript usage, such as the popup boxes. This issue added to page loading times. Both of these problems affected feedback on certain actions to some degree.
- Facebook Connect
As mentioned in our Evaluation section, Facebook Connect is not the preferred method for logging in for some users, who prefer not linking their Facebook information with other services. Although Facebook Connect made login more efficient, it also made our website less desirable to use for some users.
Evaluation
We conducted a user test on Sunday, May 8th, 2011 at the MIT Student Center.
We looked for three users who would be representative of our target user population. Our target user population was users in the 18-30 age range who felt comfortable using computers to surf the Internet or do work. The logic behind this was that Wishdex is an online shopping tool for indexing items found while shopping online or browsing the Internet. The tool would only be useful if the user felt comfortable using a computer and online shopping sites. The users we managed to find were all fellow students who fell in this target age range.
We approached students who were already sitting in front of a computer, in the MIT Student Center computer cluster. We found two female and one male test user. Our target user population is skewed towards the female population, because we observed that female students tend to shop online more frequently. However, we built Wishdex with the hope that it would appeal to male users as well, and made sure to find at least one male test user.
Process
We followed the following set of steps with each test user. We made sure that the test environment was as standardized as possible.
- The facilitator reads the briefing (see Briefing section) to the test user.
- The facilitator reads each task one by one (see Tasks section). After each task is read, the user attempts to complete the task while vocalizing their feedback. Where appropriate, the facilitator encourages the user to provide feedback.
- The observer records the feedback given by the test user.
Roles
- Susie Fu facilitated the test.
- Emily Zhao observed the users.
- Ashutosh Singhal was on call to perform last minute bug fixes.
Briefing
Our application is Wishdex.com, a site that helps you keep wishlists. You can keep track of items you find online, show your friends and family gifts you want for Christmas or your birthday, and see what your friends are interested in or check out popular items on the site. We're doing this test to get some feedback on how well we've designed the user interface. There are probably a lot of problems with the design, and we need help finding them. Keep in mind that we're testing the computer system, not you. Also, the results of this test will be kept completely confidential, and you can stop and leave the test at any time. My name is Susie, and I'll be reading out the tasks we want you to perform. This is Emily, and she'll be taking some notes to help us remember the problems we find.
Note that we did not use a demo as part of our briefing. The motivation for this was that we wanted our site to be usable without a demo to the test users we were able to find. We designed Wishdex.com to be a site that someone who falls under our target test definition can go to and instantly be able to use.
Tasks
- Log in
- Managing
- Create a new wishdex called "Birthday Wishlist"
- Add new item from Anthropologie.com to this wishdex
- After adding the item, change the item description
- Create another wishdex "Christmas" and move this item to the 2nd wishdex
- Share "Christmas" with your mom
- After some thought, you decided to buy this item on Anthropologie.com. You still want to keep the item on your wishdex, though, but you want to mark that you've acquired it.
- Delete an item
- Exploring
- Browse popular wishdexes on the Popular page
- Check out the recent activity
- Friends
- Find Emily's wishdex, "Cool Patterns"
- Like one of the dresses in her Wishdex
- You want to buy this item for her, so claim the item and view the item on the Anthropologie.com website
- Copy an item that you like into your own "Birthday Wishlist" wishdex
Usability Problems Found
Severity |
Description of Problem |
Possible Solutions |
---|---|---|
Cosmetic |
Finding Wishdex.com - One user went to wishdecks.com instead of wishdex.com. |
Buy both domains |
Minor |
Log In - One had deactivated her Facebook account. She had also let a friend log into Facebook on her computer, so she had to log that friend out first. |
Allow users to create an account and then later possibly link to Facebook. |
Major |
Log In - Two users were reluctant to sign on using Facebook Connect. We had to reassure them that we were only pulling their full name and their profile picture. |
Put a tooltip near the login with a disclaimer that we will not interfere with their Facebook lives or take any personal information. |
Catastrophic |
Add Item - One of our users accessed the Anthropologie UK site. Although the item information scraping code works for the US site, it failed for the UK site. |
We need to improve the scraping system immensely. This was a warning that unexpected things will break. We should look into APIs and smarter ways to get item data. |
Cosmetic |
Edit Item - Every time the user edited the item description, an extra space automatically appeared at the beginning of the item description. |
This is clearly a bug. We need to look at the code and if necessary strip the space on the frontend. |
Minor |
Share Wishdex - With an item box open, it was difficult to find the "Share Wishdex" button. Many first tried "Item Link." |
Ideally, users should be able to share individual items as well as entire Wishdexes. The backend functionality is already built in, we just need to add a button. |
Minor |
Share Wishdex - Users clicked on the Share link a few times. They expected more to happen. |
We should implement automatic selection and copy pasting, with a tooltip that says "copied." |
Catastrophic |
Viewing - A user tried to click on the user's icon next to their comment. However, clicking on their name/image currently does not do anything. This can be potentially confusing or inconvenient for the user. |
We can make the user's icon link to that user's Wishdex profile page. |
Major |
Move Item - The user clicked on an item and tried to drag it into another Wishdex on the left navigation. |
We should implement drag and drop to move items into other Wishdexes. |
Cosmetic |
Copy item - Copy item is what we label the button used for the user to copy an item into one of their Wishdexes. The user found "copy" to be a misleading word. She said it implied copy and pasting, such as with a link. |
We thought of changing the word "Copy" into the word "Add" with an icon that matched the "Add Item" icon, so maybe users will associate it with adding an item to their own Wishdex. |
Major |
Like Item - Two users wanted to see who else had liked an item. |
We should implement this. |
Minor |
Copy Item - After copying an item from another user's Wishdex into his own Wishdex, the user was redirected to his Wishdex. He said it would be nice to stay on the friend's page. |
We are not convinced that all users will feel this way. We would probably run a slightly bigger test to see what people prefer, or maybe implement some way of giving users a choice. |
Cosmetic |
Move Item - A user tried to add an item from a different Wishdex by clicking on "Add Item" in the new wishdex. |
We felt that drag and drop would probably clear up the confusing around moving items between Wishdexes immensely. We want to avoid implementing this too many times. |
Cosmetic |
Explore - One user avoided hovering over the items on the Explore page. Instead, she pressed the arrows on the sides and did not discover the hover function. |
One suggestion is to have a tool tip over the items the first time a user visits, telling them to hover over the items. Once a user tries this once, they often remember it. |
Cosmetic |
Claim - When trying to go to the item's webpage, one user first thought of clicking the item name. She was hesitant to click "Buy" because she wasn't sure if it would immediately go to the buying page. |
We are considering changing the word "Buy" into something more informative, or having the tooltip be visible by default. |
Reflection
The iterative design process was a very rewarding learning experience. The following explains the most important things we learned from each of the phases (corresponding to the GRs), and what we would do differently.
- Project Proposal and Analysis
This phase showed us the importance of developing a clear idea of what we wanted our project to be before we started working on it. User, task, and domain analysis ended up being useful techniques to thinking deeply about the features and scope of the problem we were trying to solve.
If we were to do this phase again, we would try to even more clearly delineate the tasks involved in our project. Although we eventually fixed this, our original attempt at this phase did not produce concrete enough descriptions of each of the tasks. Some reduction of the number of tasks here probably could have helped us focus on building an interface that does a few tasks very well.
- Designs
This phase was significant in realizing that developing the full chain of events a user would go through in using an interface aids thinking about how to maximize usability. Also, resisting the urge to make initial designs too detailed was a difficult but, in the end, important skill to learn.
Spending more time developing ideas for the designs individually before coming together would have been a useful modification in this phase. Our project may have turned out more creative if we had gone through longer iterations of working separately and as a team on the designs.
- Paper Prototyping
As our first interaction with user testing, this phase helped us realize that showing an interface, regardless of how close it is in look and feel to the actual product, is much better method of figuring out how to improve the interface than critiquing it on our own.
Trying to make our prototype more similar in how actions would be performed to what we wanted the final version to be would have been useful in this phase. Usability problems that we had to deal with later could have been found here.
- Computer Prototyping
This phase taught us the importance of not becoming attached to the initial version of the interface. Realizing that the initial versions are meant to be scrapped helped in thinking openly about improvements, both before and after the prototype was shown to users.
Devoting some time at the beginning of this phase for developing some structure for the prototype would have made iterating on it easier. Even the prototype should first be planned before coding begins.
- Implementation
The implementation phase showed us the complexity of building even a seemingly simple interface. The various dependencies between building frontend and backend were difficult to cope with at first, and figuring out how to properly divide tasks even among three people was a good learning experience.
More planning before we started working on this portion would have been beneficial. In particular, deciding from the start the order in which the various features would be implemented and by whom would have reduced problematic dependencies later on.
- User Testing
The final user tests was a reminder that new usability problems can constantly be discovered, even after a product seems polished. In addition, it showed us that different users always find different problems, so testing with a diverse group is important.
More development of the briefing and tasks could have helped to make this phase run more smoothly.
1 Comment
Anh Dang Viet Nguyen
- Very organized.
- This report explained well all features and design decisions. By the way, in the user feedback, I don't think the comment "clicking on user next to comment" is not quite "Catastrophic".
- Great reflection, I think doing user testing in diverse groups is a great lesson that can bring in so much feedback for you.
- Thanks for excellent work during the term, guys.