Design

The purpose of ShutterConnect is two-fold:

  1. enables users to find and review photographers based on several criteria.
  2. allows photographers to create a profile page with their business information, thereby advertising themselves to potential customers.

The website consists of three main pages:

  • a homepage, from where users can search for photographers based on criteria such as location, price range or event type. The homepage also allows new users to signup, or log in if they already have accounts.
  • a search results page, which displays results of a user's search query.
  • a photographer’s profile page, which gives an overview of the photographer’s work. Photographers can also edit their pages.

All the pages have a top horizontal bar that allows redirection back to the homepage.

A detailed discussion of the top bar and the 3 pages follows.

Top Bar

The top bar provides consistency of look and feel across all of ShutterConnect's pages, while also increasing efficiency of navigating back to the homepage. The top bar also allows users to log in or log out in one click.

When designing, we considered using a tab bar with different tasks, such as "find a photographer" and "leave a review". However, we decided to show only the tasks that were applicable to the particular page that a user was viewing. For example, having a "leave a review" tab at the top of the search results page might be confusing to a user. We therefore decided to appeal to the simplicity heuristic.

Homepage

We considered designing and implementing a site with a prominent login page, which required all users to signup before having any access to the website. However, we opted to allow users to have access to as much functionality as possible without being forced to register.

We considered using designs similar to travel websites, but decided that these pages look busy. We therefore opted on a minimal design, which is consistent with sites such as Google's search page that most users are familiar with. We also did not want to present too many options to users right at the outset. Instead, we opted to make it easy to start and show options when necessary.

SearchPage

We considered having a confirmation page in which a user could alter their search parameters before seeing the actual results of the page. However, we decided that it would more efficient if, upon entering a search query, a user saw their results immediately, and then had the option of changing their parameters based on the results received.

Photographer's Profile Page

In Page Editing

We decided to use editable fields instead of forms for logging in. In-place editing using editable fields has the following advantages:

  • Efficiency: users don’t have to go to a new page to do edits; they can make changes as they appear. For example, when looking at his profile, a photographer may notice a required change in their 'About Me' section. The photographer can make this change immediately instead of going to a new page, editing one of many fields and clicking save.
  • The profile page looks exactly the same for photographers as it does to users. This way, a photographer can see exactly what potential customers would see without having to sign out and view their page as a user.
  • However, editable fields are not easily discoverable. We therefore decided to use the following redundant clues to make this feature more apparent:**  Background color changes to yellow upon hovering on editable fields (consistency with Flickr, a website which photographers would be familiar with)**  Cursor changes from pointer to an 'I' bar to signify editability**  Dashed light gray margins around editable areas

Prominent Elements

An important design decision on the photographer's profile page was which fields to make prominent. We opted to have the following elements stand out (tested using the squint test):

  •  Name of photographer
  •  Price
  •  Sample work
  •  Star Rating
  •  Section headers (e.g. about me, reviews)

The following modifications helped ensure that the above fields were indeed prominent:

  • Sample work: implemented using a widget in which photos were displayed with a black background to stand out from the white page.
  • The photographer's name and section headings: are displayed in a larger font and have a lot of surrounding whitespace.
  • The photographer's price was displayed in a larger font, and placed in its own column to the right of all other fields.
  • In order to make a photographer's ratings, we used color. This was one of the few places where we use color in the page.

Screenshots


Implementation

Internals of Implementation

The backend of Shutterconnect was built using Flask, a python-based MVC micro-framework. In particular, we wrote the controller using Flask libraries, the server runs on Werkzeug and the view is written using Jinja templates.

The frontend makes extensive use of HTML5, CSS, JQuery, JQueryUI and JQuery extensions. We use Google’s Webfonts to give our headings a distinctive look.

Design Decisions and Consequences

Jquery UI Widgets

Since we were using JQuery extensively, we decided to also use JQuery UI for widgets instead of using another library like scriptaculous or YUI. This had two effects on usability: a clash in appearance, and a rethinking of some interactions.

The standard JQueryUI themes did not match the minimal, gloss and gradient-free design of the rest of the site. This inconsistency was noted by several of our reviewers during computer prototype, and we had to tweak the css of the themes to better match our site.

Second, the availability of well-designed widgets (such as dialogs and date-picker) led to a rethinking of some interactions in the site. For example, we had originally intended the “leave a review” controls to expand in-page when the user clicked “leave a review.” However, this was inconsistent with the usage of modal dialogs for other interactions such as “sign up”. The user reviews indicated that modal dialogs were more inline with user expectations than a sliding behavior would have been.

AJAX and in-page interactions

We wanted to avoid causing page transitions as far as possible since page transitions cause a context-switch on the part of the user (source: Designing Web Interfaces). So, we made extensive use of AJAX and in-page interactions.

For example, when you click “leave a review”, you see a dialog in the page itself instead of being taken to a new page. This dialog appears instantaneously and in the context of the photographer’s page. This way, there is no context switch required.

Another example is the use of click-to-edit fields in the photographer’s profile page. This allows the photographer to see his profile exactly as his clients see it and gives him the ability to update just the parts that he desires; if he wants to update the phone number, he clicks it and edits it right there...  he doesn’t have to go to a different page filled with forms that might confuse him.

However, the cost of using AJAX is the potential decrease in responsiveness due to increased network chatter. In order to minimize this, we do as much of the work on the client’s side as possible. For example, checking whether the email is malformed, or whether password and “repeat password” match are both done locally.

HTML5 usage

We also make extensive use of HTML5 features. For example, we HTML5’s ability to provide in-field help text instead of using labels in space-constrained areas such as the username-field in the top bar.

The problem with this pervasive HTML5 usage is that our site is inaccessible to users with legacy browsers.

WebFonts usage

Since different OSes come bundled with different fonts, getting a web page to look the same across platforms is a challenge. A solution is to use the Core Fonts, or to use generic font names such as “sans serif”, but that severely limits our graphic design palette. By using Google’s Web Fonts, we were able to pick distinctive fonts while ensuring that pages look consistent across platforms. Several of our users commented favorably on our fonts.

User Evaluation

User debriefing & demos

The general purpose of the website was described in a few sentences. Other than that, the website was intentionally not demoed. We wanted to see how our users navigated the website without a personal introduction. Were the search examples enough for users to construct a phrase based on their event? Can photographers create, log into, log out of, and edit their profiles intuitively? To answer these questions about users’ first encounter with the website, we avoided any specific guiding or demos.

Usability problems found

Problem: There was some confusion on what “professional photographer” meant exactly. Professional photographers are aware that this phrase specifically means “main income derived from photography business”, but non-professional users aren’t aware of this specific usage of the term and think that “professional” means “takes good pictures”. The latter is a subjective criterion and leads to confusion.
Solution: Rephrase the question to “Is photography your main source of income?” or “Do you own a photography business?”

Problem (from photographer’s perspective): It would be in the photographer’s interest to relocate the star-rating of their business to a lower section of the profile page, since they don’t have direct influence of it.
Solution: We generally disagree with this viewpoint, because the star-rating is an important initial criterion for selecting a photographer. And both users have pointed out the usefulness of this feature in their tests.

Problem: Users want to be able to view the sample pictures of photographers directly from the search results page instead of going to the profile of the photographer and having to return back to the page.

Solution: There is a widget that enables this (YoxView). Implementing that into the dynamically generated templates for our websites would solve this issue.

Problem: The only way to get back to the search results page from the photographer’s profile is the browser’s back button. This does not create an affordance or is inefficient for people who do not know about browser shortcuts.
Solution: Put a big bar at the top of the photographer’s profile page saying “Go Back to Search Results” if they came to the photographer’s profile from a search page.

Problem: Profile page doesn’t allow for multiple phones (business/day/home/...)
Solution: Make more optional fields for photographers to fill out this information. Possibly involve JQuery so that  users do not see empty fields, but only filled fields if the photographer has written that information.

Problem: Help prompts inside text fields and text areas don't disappear after the user has clicked into the field.
Solution: Either make the prompts disappear or select-all upon clicking so that when the user types, everything is erased.

Problem: Photographer has to click “Save” after modifying every editable field.
Solution: Users prefer if clicking outside the editable fields automatically saves.

Problem (from the photographer’s perspective): Photographers cannot change titles of section fields (eg. about me)?
Solution: We generally disagree with this fact being a “problem”. The two users have actually specified that they liked the fact that there is consistency between photographer profiles to enable easy skimming. We choose to go with the more user-friendly option at this point.

Problem: Users cannot immediately see the photographer’s sample pictures when they click the photographer’s profile.
Solution: Make the info section smaller and the photography section larger and above the About Me section.

Observation: Change in color when hovering over editable field and change in cursor is very useful for giving an affordance for editability.

Reflections

If you did it again, what would you do differently?

We should have been more aware of the widgets that are available before deciding on a design. For example, we had wanted the "leave a review" controls to appear in view when the link was clicked. However, if we had known about Jquery UI's dialog, we would have been able to prototype that and would have benefited from user feedback much earlier.

Risk assessments

The primary risk in our site was the extensive use of ajax interactions and in-place events. For example, instead of having a seperate "edit your profile" page for photographers, we allow them to interact with the page inside the page itself. The problem was with making this discoverable and usable (as discussed earlier). It was difficult to prototype this at the paper stage (because things like "hover to change background" is hard to do on a paper). So, there were important things that we couldn't test until we reached the computer prototype stage.

Decisions about what features to prototype

As far as our paper prototype, we chose not to implement most user feedback messages (upon successful creation of a profile page) and validation symbols (such as during signup) and therefore did not get feedback about this until we user tested our website on some of our classmates. In addition, most of the validation and instantaneous feedback functionality could not be fully tested until we had a working backend, thereby limiting the range of feedback we received from our test users.

We had four major design features: signup, search, profile creation and viewing, and leaving reviews. It was therefore relatively straightforward to get all of them tested during the prototype stages. In fact, we were able to test all three of our designs during paper prototype, and come up with two different versions during computer prototype.

Which prototype techniques to use

For paper protoype, we decided to test:

  • overall look and feel of the site (e.g. google-esque look vs kayak-esque look)
  • workflows (how to leave a review? should we have a link always visible or show it only in profile page)

For computer prototype, we decided to test:

  • aesthetic choices: fonts, margins, layouts
  • use of dialogs
  • use of "flash" messages

For the final prototype, we added functionality that depended critically on performance of backend. For example:

  • The quality of the natural language parser for search determined how flexible we could be with inputs.
  • Instant validation of email addresses/usernames or instant updating of search results based on user criteria would depend on performance of database backend and network latencies.

The paper prototyping exercise was valuable in challenging our assumptions and allowing us to incorporate feedback from multiple test users and realize a hybrid design.

How results of our observations were evaluated

The scoring of cosmetic/minor/major/catastrophic was very helpful in prioritizing which observations we should attend to first. After that, we focused on UI suggestions/problems that came from several users. We also focused on observations that seemed general rather than edge cases as a priority to have the maximum impact on most users. We added a lot of help messages and validation messages to guide users along and cater to all kinds of potential confusions.

  • No labels

1 Comment

  1. Can't find any evidence of the evaluation/user testing