Skip to content

Assignment 6: User Testing and Analysis

Assignment Instructions

Assignment Instructions

These are the 6.1040 assignment instructions for this assignment. It goes into greater depth about the expectations, requirements, and deliverables for this assignment. It also includes a rubric detailing how this assignment will be graded.


Community Carpool

A communal carpool coordination social network connecting users that are traveling to the same activity, using location data to help plan the most efficient and convenient routes.

Frontend Deployment

GitHub Repository for Community Carpool's Frontend

Vercel Deployment for Community Carpool's Frontend

Data Population & Realistic Data

I populated my application with a variety of different data objects to simulate a realistic configuration that a user who uses the application might have. This includes a couple of Activity groups, multiple User profiles with unique profile photos and names, as well as membership in these Activity groups.

Specifically, I created multiple Activity groups based off of NBA Basketball teams. Using publicly available photographs of these NBA stars and their coaches, I simulated how members of the Golden State Warriors might use this app. I created realistic User profiles for these players, and even simulated dialogue between multiple different users within Activity groups to demonstrate the discourse and coordination that might take place on this app.

In terms of my testing, I focused on evaluating the User Interface of my application, observing what the Test Users struggled to do, where they got stuck, as well as their natural "journey" while visiting the application. Unsurprisingly, some of the design decisions I had made turned out to be less intuitive than I had anticipated. This was very informative, and patterns did emerge in the areas where my assumptions diverged from the users'.

Task List

TaskInstructions for the UserRationale
User Registration"Please visit 61040-app-frontend.vercel.app and register as a new user on the app."This is one of the most standard (and important) tasks in a User's interaction with an application. They will need to register for the app and create an account in order to actually user the app. This task ensures the user can easily navigate the registration process. It also examines the intuitiveness and ease of creating a new account, a crucial step for new users.
Search for an Activity"User search to find an activity that you would like to join."This task tests the user's ability to find and navigate the activity search feature, assessing the clarity and effectiveness of this vital functionality in the app. It tests whether the search functionality is well-implemented (displays what the User wants/expects to see) with a level of error-tolerance that helps lead the user to their desired functionality.
Create an Activity"Create a new activity for an organization that you or one of your children might partake in."What is an app without any data in it? This task examines the process of creating a new activity, and assesses the user's ability to navigate back to the home page to form a new activity group. In addition to requiring the user to navigate through the application, this task involves different steps that the user would not have gone through during the "Join an Activity" phase of the interview, so this task also tests whether the UI is consistent/intuitive enough to communicate certain nuances within the activity.
Join an Activity"Join an existing activity that corresponds to something you might partake in."
When prompted for the activity's join code, I will share it with the user.
This task evaluates the user's capability to join an existing activity, the clarity of steps needed to join, and the overall experience of navigating and ultimately gaining membership to an activity.
Message a Member in an Activity"Contact a member in one of the activities you have joined and request a carpool with them."This task tests the user's ability to interact and communicate within the app, emphasizing the messaging feature's usability and the ease of initiating and confirming communication between members of an activity. Additionally, this task tests the intuitiveness of how messages are displayed/scoped within the app; messages sent within an activity are only viewable to those that are currently members of that activity.
Promote a Member in an Activity"Please promote a member in one of the activities to a manager."This task is intentionally vague to test a multitude of different concepts for the user. Most importantly, has the notion that activities consist of "members" and "managers" been effectively communicated to the user? It also tests whether the user is able to correctly identify which activities they are a member/manager of. This assesses information communication between the app and the user, different permissions levels users have access to, as well as whether they are able to identify how to promote another member in the activity.

This ordering of tasks is structured in a way that leads users through a logical progression, starting from registration and moving on to basic functionalities like searching for, joining, and participating in activities. This gradually progresses to more involved tasks like creating activities, and engaging in communication within the app. At the end, a relatively nuanced feature is tested to validate how well these functionalities are communicated to the user. The rationale for each task focuses on evaluating the app's ease of use, user navigation, and the overall user experience related to activity features.

These tasks are designed to assess different aspects of the app's usability, aiming to uncover potential challenges users might face and the app's strengths/weaknesses in meeting users' needs. Conducting user tests with these tasks as a framework will provide valuable insights into the effectiveness of the app's design and user interface. It will also identify shortcomings in the app's UI and areas that can be improved.

User Study: Sima Eskenazi

Why I'm Interviewing Sima

I initially interviewed Sima for Assignment 1, and at the time, she was enthusiastic about the carpooling app idea. She has two kids (both of which are now college students), and as a self-described stay-at-home Mom while raising her kids, she knows about some of the struggles other mothers face while raising their children. Sima would be one of the users of my app when she was raising her children, and nicely fits the demographics of someone who gains utility from using such an app.

Bio
Mother of two children, both of which are currently studying in college
Originally born and raised in Turkey, but has lived in the United States for 30 years
U.S. Sales Manager at Stepevi, a Turkish carpet business
Has a husband
Was a stay-at-home mother who was very involved with her children
Looked roughly 45 years old

Overview and Objectives of the Study

As outlined in the Task List section of this assignment, I entered the meeting well-prepared with direction. I aimed to test different features and functionalities of the app, particularly core functions that are essential and would be most frequently used by users. I provided Sima with a summary of the application I designed, how I envision it would be used if deployed in the real world, and gave Sima guidance on what is expected from her, and how feedback during every step of her process would be valuable. I also received consent from Sima to do this study.

Key Moments and Observations


1. User Registration

Sima navigated through the registration process relatively smoothly. Even though she had originally typed "61040-app-frontend.vercel.app" into her browser's address bar, she was automatically redirected to the login page which prompted her to create an account. She mentioned that the layout was intuitive, but got frustrated by the amount of requirements needed to submit a valid password (a capital letter, special character, number, etc.). She did, however, mention that the password feedback indicator was helpful. Notably, she initially tried to register for the application without uploading a profile picture, and was confused why she wasn't able to proceed beyond the registration page. After a few seconds, she realized the need to upload a picture and did so, and successfully logged into the app. This positive interaction implies that the initial user registration flow is user-friendly and efficiently designed.

2. Searching for an Activity

The process of searching for activities was very intuitive for Sima. The search responses were clear and immediate, and even though Sima didn't write an "exact match" for what she was searching for, the app's built-in search capabilities handled this properly.

3. Creating an Activity

Sima faced challenges in creating a new activity. She was able to create the activity relatively easily using the form (same feedback regarding implementing a "Show Password" type button in the join code section).

4. Joining an Activity

Joining an existing activity was relatively straightforward for Sima. However, she hesitated briefly while confirming the join code, as the confirmation button was not prominently displayed. She also expressed that she wishes there were a way to "Show Password" so that she could confirm what she had typed, similar to the registration form from earlier. This highlights the importance of clear and visible call-to-action buttons for user engagement and consistent functionality throughout an application.

5. Messaging a Member in an Activity

Communicating within an activity was another area of concern for Sima. The messaging feature was not immediately noticeable (as it was at the bottom of the activity page), and she hesitated to locate and engage in a conversation with others. She also stated that the layout of messages was confusing, citing the fact that some posts were shown spanning the entire row and other rows would have multiple posts (it depends on the length of the post, but I completely agree that this is confusing and arbitrary). The interface's visibility and accessibility for communication functions must be improved to facilitate easier user interaction.

6. Promoting a Member in an Activity

Sima struggled to navigate back to the main Home page of the website from the Activity page. Once she navigated back, it took her a very long time to realize that she was automatically a made to be a manager of the activity she had created herself, and could only promote users to managers in activities that she herself was already a manager in. She said that it should be more clear/prominent displayed when she is and isn't a manager of an activity. Later she did agree that some activities had more buttons than others (in the activities she is a manager of, additional buttons enable additional functionality exclusive to managers), but she said that this wasn't enough.

Debriefing with Sima

Sima appreciated the app's core concept and its potential to streamline activity organization and carpooling. However, she emphasized the need for a more streamlined UI, clearer call-to-action buttons, improved visibility of communication features, and more obvious distinctions when users have more/less privileges within an activity.

Analyzing Sima's Experience

Sima's user testing revealed both positive and negative aspects of the app. She was impressed by how streamlined the registration process was, but wished that profile pictures were made optional. However, she emphasized the need for a more streamlined UI, clearer call-to-action buttons, improved visibility of communication features, and more obvious distinctions when users have more/less privileges within an activity. Sima's feedback emphasized the importance of refining the user interface to enhance user experience, primarily by providing clearer instructions, making behaviors across the application more consistent, and enhancing the visibility of essential features.

User Study: Henning Schliker

Why I'm Interviewing Henning

Henning is originally from Germany but is working in the United States. He was very involved with raising his children, driving them back-and-forth to many of their after-school activities and setting up carpools with other parents. His kids are now in college.

Bio
Father of two boys, both of which are currently studying in college
Originally born and raised in Germany, and has lived in the United States for 10 years
Automotive Engineer at BMW
Has a wife
Looked roughly 50 years old

Overview and Objectives of the Study

As outlined in the Task List section of this assignment, I entered the meeting well-prepared with direction. I aimed to test different features and functionalities of the app, particularly core functions that are essential and would be most frequently used by users. I provided Sima with a summary of the application I designed, how I envision it would be used if deployed in the real world, and gave Sima guidance on what is expected from her, and how feedback during every step of her process would be valuable. I also received consent from Sima to do this study.

Key Moments and Observations


1. User Registration

Henning had an easy time registering as a new user. He followed all of the instructions correctly, and uploaded a profile picture to his newly created account. Like Sima, Henning also originally typed "61040-app-frontend.vercel.app" into his browser's address bar, but he was automatically redirected to the login page which prompted him to create an account.

2. Searching for an Activity

During the activity search, Henning was able to quickly scroll through different results and narrow down to exactly what he was looking for. That being said, he mentioned that he would have liked there to be a way to search for activities by a different metric other than name. He suggested the ability to search by the location of an activity, as this would have help him narrow down which activities are actually relevant to him. He desired more specific filters, such as location or other users' membership status ("search by activities' members"). This observation suggests the potential for improved filtering options for a more personalized and relevant search experience.

3. Creating an Activity

Henning faced challenges in creating a new activity. He struggled with the always hidden password field. He said that this makes it difficult to ensure that the password was typed correctly, especially since there is not any "match passwords" field. Additionally, he later remarked that there is no clear way to modify the join code of an activity, so if he had accidentally mistyped it or misremembered what the join code is, there wouldn't be a way for him to figure it out or correct the erroneous spelling, which could basically completely cripple the functionality of the application.

4. Joining an Activity

Joining an existing activity was a straightforward process for Henning. He was able to identify which activities he was not currently a member of remarking that "I can't see activities' members because I'm not a member of that activity. That makes sense. And I notice the "Join Activity" button." This highlights the importance of smart UI, where functionality is hidden when it cannot be accessed, and functionality appears when a user can perform those actions.

5. Messaging a Member in an Activity

Henning echoed Sima's thoughts and experience when instructed to message a member in an activity. The messaging feature was not immediately noticeable (as it was at the bottom of the activity page), and Henning was thrown off by the "Click Here to View the Activity" button at the top of the page even though he had already clicked it and was currently in the activity page. He clicked the button multiple times, but it did nothing (since he was already in the correct page). Like Sima, Henning also mentioned that the layout of messages was confusing, citing the fact that some posts were shown spanning the entire row and other rows would have multiple posts (it depends on the length of the post, but I completely agree that this is confusing and arbitrary). The interface's visibility and accessibility for communication functions must be improved to facilitate easier user interaction. Additionally, a synchronization should be implemented to only show the "Click Here" button when outside of the activity view.

6. Promoting a Member in an Activity

Henning had an easier time promoting members in an activity to manager. He noticed that the "Promotion" buttons appeared for specific activities and not for others, so he just needed to find the activities that it appeared for and promoted users there. He mentioned that the should be a way to filter activities to only show the activities a user is a manager in.

Debriefing with Henning

Henning really enjoyed the process and asked many questions about how a certain feature was implemented as he was going through the study. He believes that the User Interface could be streamlined a little bit more, specifically in regards to consistency and displaying only relevant information to the user. He said that posts section of the activity page needs t be revamped, as it is confusing and "sloppy" (I agree with him).

Analyzing Sima's Experience

Henning was impressed by how streamlined the registration process was, and enjoyed many of the synchronizations that were implemented. But he called out the few synchronizations that had been missed. He wanted the experience to be consistent, and struggled when the UI was inconsistent. He also emphasized the need to improve the visibility of communication features within activities.

User Study Takeaways

Based on my user studies, it is clear that the importance of refining the user interface to enhance user experience is quintessential to delivering a positive experience for the user. Consistency was another aspect that seemed to be heavily emphasized; behaviors should be repeated throughout the application, and should not vary for any illogical reason.

Flaws and Opportunities for Improvement

[Moderate, Physical] How Posts are Displayed Within Activities

QuestionExplanation
What is the flaw?Posts are currently being rendered at the bottom of an Activity page, and when they are rendered, they appear in a "brick" sort of layout where it is sometimes unclear which post was written first, or why certain posts take up an entire row while others do not span multiple columns.
Why is this currently occurring?I implemented Posts to be displayed in this manner intentionally actually. I thought it was kind of cute to display Posts as a bunch of varying-sized tiles, but I realize that this adds confusion/complexity for the user and potentially distracts from the true purpose of the posts concept. As far as placing posts at the bottom of the Activity, that seems to be a relatively minor oversight on my part and should be addressed relatively easy by restructuring the order in which data is presented to the user when they click on an Activity.
How can this flaw be fixed?I would need to make Posts a consistent size that appears in a streamlined order. Additionally, it would be wise to move the Posts section to the top of the page so that it is one of the first things a user sees when they enter an activity.

[Minor, Physical] Include the Show Password Button Every Time There is a Password Entry Field

QuestionExplanation
What is the flaw?Anytime there was a password entry field, Henning and Sima both wished that they could have a "Show Password" button that code be pressed which "un-hides" the password. This is not a critical flaw, but is definitely a nice-to-have that would make the user experience more consistent since this feature has been implemented in the user registration form.
Why is this currently occurring?Frankly, I don't really use the "Show Password" button and didn't think too much of it. To streamline the user interface and keep components relatively minimalist, I omitted extraneous/unnecessary buttons, but if the users want it, the users will get it!
How can this flaw be fixed?I can create a Password Vue component which always includes the "Show Password" button alongside it, that way anytime a password field is used, this functionality would automatically be included as well.

[Major, Conceptual] Changing the Join Codes of Activities

QuestionExplanation
What is the flaw?Currently it is not possible to change the join code (password) for an Activity, which means that if the password is ever forgotten or leaked, it is not currently possible to change/reset it. Needless to say, this is an oversight on my part, and implementing such functionality is very important. While it did not directly impact the users I tested for this study, they exposed this problem, which is an extremely valuable find.
Why is this currently occurring?I overlooked the need to implement this functionality in my Concept design. It wouldn't be too difficult to implement, but currently it is not possible to reset the password of an Activity, meaning that if it is ever forgotten or leaked, there is nothing that can be done to remediate the issue.
How can this flaw be fixed?I would need to adjust my REST API to include a resetJoinCode() function, and then would also need to adjust my frontend implementation to properly handle this functionality.

This is what this resetJoinCode action's implementation might look like.

python
resetActivityJoinCode(user: User, activity: Activity, new_join_code: str)
    assert user in activity.managers
    assert new_password != activity.join_code
    activity.join_code = new_join_code
    for manager in activity.managers:
        notify(manager, new_join_code)
resetActivityJoinCode(user: User, activity: Activity, new_join_code: str)
    assert user in activity.managers
    assert new_password != activity.join_code
    activity.join_code = new_join_code
    for manager in activity.managers:
        notify(manager, new_join_code)

[Moderate, Linguistic] Remove "Click Here to View Activity" Button from the Activity View

QuestionExplanation
What is the flaw?When a user visits an Activity View, a button appears saying to "Click Here to View the Activity", but the user has already clicked that button which is the reason they are at that page. It is confusing and inconsistent, as clicking the button does nothing (since it just redirects the user to the current link), which only further confuses users since no feedback is given indicating that they are actually at the correct destination page.
Why is this currently occurring?I implemented my Activity View Vue page (sorry for the amount of "views") using the ActivityComponent Vue concept, which includes this button. While both of my users commented on this issue, neither of them got "stuck" on it, but I can absolutely see how this is problematic, confuses users, and makes it unclear whether the website is bugging out or working properly.
How can this flaw be fixed?I need to add a property to this Vue component indicating whether or not the current page is the desired target page, and if it is, to hide the navigation button in question.

Special Thanks!

Thank you 6.1040 Staff for all of your hard work and for designing such an incredible class! I really enjoyed this class and learned a tremendous amount. I really appreciate it. This individual social media application assignment has been one of the most exciting and fun projects I've worked on at MIT!