Assignment 5: Frontend Design & Implementation
Heuristic evaluation
Usability criteria
- Efficiency: right now, the focus of my app is accessibility. That's because I used to hate the way that Facebook wasn't friendly to my grandfather. He'd always post something without meaning to, or send friend requests to people he didn't know. All due to, as he used to put it, his "fat finger". Since then, I wanted to create a version of social media, TV remote controls, and cellphones that were elder-friendly. For my app, since the goal is to make an interface as simple as possible, I made everything big and very well indicated, in such a way that I think my grandfather, if he could use it, wouldn't have any problems. However, I have to take into account that my app is going to be used by younger demographics, and they'll have to do everything exactly as an older user would - i.e., the efficiency is horrible for an experienced person. In order of not compromising my app's simplicity and to attend expert user's needs, I added an "Advanced" option in my website where users can access more advanced features. Not ideal, but I think it's a good average solution for all the scenarios.
- Error tolerance: my app accounts for when the user accidentally presses the "delete user" function, asking if that's what the user wants indeed. Otherwise, they can go back. Trying to login with an invalid username or password is also indicated. If the user tries to register a name that already exists, they receive a message. My app also accounts for when people create a tag and it is misspelled, but this is where the tradeoff comes: I don't want to have tags like #mit #miit because someone typed wrong. I ask myself if either the word is misspelled, if there is already a tag with the same meaning, or if it's an inappropriate name. I put myself in danger of rejecting valid tags and maybe frustrating the user, but I think the benefits surpass the losses.
Physical heuristics
Fitt's Law: it's super easy to point to interface elements with the cursor, since elements are big, but they are really far from each other. I created some shortcuts (for instance, when the user scrolls too far down, there's a fixed shortcut to go to the top of the page), but I'm not willing to create a lot of redundant information on the page. I prefer facilitating pointing the cursor to things (see efficiency) than keeping things clustered together. Even because people who don't have the difficulty to point to things will most likely be using mobile, where things are closed together by nature.
Perceptual fusion: my app takes a long time to produce images, since I'm calling two different APIs when a new post is created. Since is a long time, I feel like, if I put an animation that represents the loading, the user may get the impression that my website is slower than it is or simply that the operation failed, if it looks like an infinite loop. But still, I have to warn them somehow that it's going to take some time, otherwise they may try to refresh the page or something else that makes me lose data. This way, I added an animation, but I also warned the user that this process usually takes some time. It's frustrating that the API is super slow, but this is the main feature of my app. This way, I kept it because it's exciting, and will maybe make the user impatient, but I think it's worth it.
Linguistic level
- Speak a user's language: I think the messages are informative, but I don't know if they're big enough or located in the appropriate places for every user to notice them. Me, as a user, sometimes don't see why an operation I'm performing isn't taking any action, until I tried it several times and my eyes happen to fall into the error message. At the same time I want to draw the user's attention to it, I don't want more attentive users to get frustrated. More importantly, I don't want to make the messages so emphasized that it falsely alarms a more sensitive user (like people in the autism spectrum) that something went terribly wrong. I implemented a grey popup (not so alarming, like red) that has the option to be closed. Also for them to be as informative as possible, so expert users don't need to get them twice and therefore won't be frustrated.
- Information scent: I think the interface gives enough information (I sought writing descriptive names rather than just adding random buttons), but I feel like there are still icons missing. My audience benefits from visual information as well. However, an excessive number of icons, especially if they're not carefully chosen, can overwhelm users and distract them from the main content, which is the opposite of what I want. I added just a few icons, and very common ones, and kept main things written out with different colors. I'm still not sure if this is the best choice; I'm hoping to find out during the user experience assignment.