Libby is a mobile application which allows users to borrow different kinds of digital content from their local library. With only a library card users can borrow eBooks, audiobooks, and overall, any digital content from their local library’s collection. The app also allows users to read the eBooks on their device, bookmark it and take notes. They can also use additional features like adding tags to their book collection to make wish lists of books. Through this critique I examine the app through the lens of concepts used by Don Norman in The Design of Everyday Things as well as concepts used by Jenny Davis in How Artifacts Afford.
Onboarding

On opening Libby, users are immediately asked whether or not they have a library card. If a user says they don’t have a library card they are immediately directed to a flow that enables them to acquire a library card from their local library, thereby making it clear that Libby refuses service to those who don’t have a library card.
The onboarding flow is quick and clear. Additionally, on the home screen users are then given tutorials on how to use features like tags and filters. Throughout these tutorials there is a little balloon which guides users, directing them to click those buttons so that they learn to use the feature. By directing users through these steps, it enables them to learn how to perform these actions so that it can become a part of their behavioral level of processing. Additionally, the option to engage in these tutorials doesn’t end after the onboarding. The option to view and complete them is a permanent feature on the app.
There is only action to be performed on each screen of the tutorial thereby not overwhelming the user. The style of the app is clean, simple and aesthetic with a fun but limited use of green and red colors. These colors are used well, thereby engaging the user’s visceral level of processing.
However, some portions of the tutorial remain incomplete. The final screen of the tutorial for using tags doesn’t provide any indication of how to proceed or confirm if the tutorial is complete. There are no perceivable affordances, signifiers, or any feedback and the user is left unaware of what to do, asking themselves various questions. On this particular screen the gulf of execution as well as the gulf of evaluation are not bridged. The former isn’t bridged as the user asks- Do I exit the flow? What do I click on to proceed? The latter isn’t bridged, because they also ask themselves about the previous steps of the tutorial- Is the tutorial over? Has a tag been created, or was this just an example on how to create one?
This could be resolved by bridging both gulfs. First, there could be a clear button and the balloon could direct the user to click it. The button could say “Complete tutorial” and the user would be nudged to click it. The use of a button as a signifier bridges the gulf of execution. When a user clicks this they can receive a feedback message which would bridge the gulf of evaluation. This feedback message could say “Congratulations on creating your first tag! You can now create more tags to add to your library.” This clarifies for the user that the tutorial is over and that the example tag they created is an actual tag which has been added to their library.
Exploring Book Choices

Users can explore a large catalog of books and the filters presented are extremely comprehensive, matching the genres listed at public libraries, thereby making the processing of finding a book extremely easy for the user. The plethora of filters and categories matches that of a library thereby resonating with the mental model of users who avail of library services. Replicating this on the digital interface evokes a sense of familiarity in users who tap into their existing models and can navigate their way easily.
Furthermore, when users add filters and remove filters, the corresponding number of books as per those filters shows up as a call-to-action button, guiding users to explore the list. What is especially interesting is the feedback component here. Every time a user adds or removes a filter the button flashes slightly. It is a very mild flash and bounce of the button. This attracts the user’s attention to the button showing them the change in numbers based on their action of adding or removing a filter. It adheres to Norman’s principles on how “feedback must be immediate.”
This feedback mechanism bridges the user’s gulf of evaluation, and more importantly, it doesn’t overwhelm the user. If the interaction were too overwhelming it would be deemed poor feedback, which according to Norman can be “distracting…irritating and anxiety-provoking.”
While these features are great for the user, the exploration for books also poses some complications. When a user browses through the app and selects a particular book, they are led to a new page concerning that book. The page extends further down with recommendations for similar books, however, in scrolling, one is left unable to gauge their location on the page they are, how much they have scrolled through and what length of the page is remains to be looked at.
While this screen affords scrolling, this affordance isn’t perceivable to the user. A signifier would help immensely. Perhaps a scroll bar would serve as a helpful signifier, thereby communicating to user the following messages: that this screen affords scrolling, the user’s location on the screen, the extent to which a user has scrolled through the screen, and the length of the screen that remains to be scrolled through.

Lists

Libby doesn’t just allow users to find books they are looking for, but also provides lists of books which have been curated. With a range of lists being provided, users are also given the option to dismiss a list from their homepage. When a user clicks this, they are given a clear message on what will happen if they proceed with this action. Thus, merely clicking the close icon won’t dismiss the list. Users are given a message on what will happen if the dismiss the list, how they can recover the list and are then given a clear “Proceed” button with the action if they desire to do so.
This additional snippet tackles a lot of facets that deal with error. Let’s assume that this additional step did not exist, and clicking the “x” icon immediately leads to the list being dismissed. If a user is scrolling through the featured lists and their intention is to keep scrolling. The action accidentally performed is that they click the “x” icon and the list automatically gets dismissed. This would result in an action-based slip where the user intended to scroll through the lists, but instead dismissed a particular list.
Libby accounts for this by providing the additional details on the next steps and then giving the user the option to “Proceed.” A simple additional step encapsulates a great piece of designing for error. Don Norman mentions that errors are inevitable and, “the best designs take that fact as given and seek to minimize the opportunities for errors while also mitigating the consequences. Assume that every possible mishap will happen, so protect against them.”
While this step represents good design, the latter part of the cycle presents some issues. The message tells users that they can restore the list by scrolling to the end of the view. At the end of the view there is a clear button saying “Restore 1 Dismissed List” but clicking this button just directs the user back to the top of the view. There is no confirmation that the list has been restored and the user is left wondering whether their action was successful. The gulf of evaluation isn’t bridged, and the lack of feedback affects the behavioral level of processing.
Additionally, a user might not remember the name of the list they dismissed and even if they scroll again to see if the list was restored, they might not be able to remember. Short-term memory is an important thing to consider, and in this case, it wasn’t accounted for, ignoring that users would probably not remember the name of the list after a certain period of time unless the engaged in rote learning to actively think memorize it.
A curated message which communicates the necessary information would make the feedback informative and aid the user in bridging the gulf of evaluation. A brief snippet after the user restores the list can include details on the name of the list which has been restored and the actual confirmation that it has been restored would help. An added step would be to switch the position of the screen and direct the user back to where the list was initially located on the screen. As discussed earlier, a scroll bar could serve as a signifier to communicate this.

Navigating a book

Libby doesn’t just present the e-book as is, but also accounts for accessibility providing users with accessible text sizes, as well as an OpenDyslexic typeface. By accounting for the accessibility needs of wider groups, it showcases, as Davis would put it, a consideration for “variation dexterity.”
Conclusion
Overall, the Libby app is easy to use, engaging and provides an immersive reading experience to users. It also includes accessibility measures, thereby catering to more groups. Various changes, as illustrated in this post could serve to improve the app’s usability, making for a more seamless experience.